Emacs Mode для c-like языка - PullRequest
       32

Emacs Mode для c-like языка

6 голосов
/ 24 февраля 2012

Я пытаюсь написать новый режим emacs для нового шаблона c-like языка, который я должен использовать для некоторых научных исследований.

Я хочу, чтобы код был раскрашен и с отступом, как в c-mode, со следующими исключениями:

  • '%' используется не как оператор, а как первый символ в некоторых конкретных ключевых словах (например, "% p", "% action",и т. д.)
  • Строки кода не заканчиваются точкой с запятой.

Можно ли создать производный режим (из c-режима) и настроить его на игнорирование исходногоцели '%' и ';'?Можно ли заставить функцию «автоматического отступа после нажатия RET» работать без «;»?

Существуют ли похожие режимы для похожих языков (с скобками '{}', но без точек с запятой), которые я мог быпопробовать установить патч?

Стоит ли писать основной режим с нуля?

Я думал о патчировании R-режима с http://ess.r -project.org / , но этот режим не поддерживает комментарии в форме "/ * comment * /".

Самая важная функция, которую я ищу, - это отступ в скобках, то есть отступ кода внутри '{}'блокировать после нажатия RET (и без дополнительного отступа после строк, которые не заканчиваются на «;»).Частичные решения тоже помогут.

Ответы [ 3 ]

3 голосов
/ 25 февраля 2012

В целом, CC-режим был расширен и обобщен с течением времени, чтобы охватить все больше языков, и последний CC-режим должен быть достаточно хорошим для выделения общего кода из кода для конкретного языка.Итак, взгляните на некоторые основные режимы, в которых используется CC-режим (например, awk-mode), и свяжитесь с сопровождающим в CC-mode, который сможет помочь вам выяснить, как сделать то, что вы хотите.

2 голосов
/ 25 февраля 2012

Если вы не возражаете против чего-то действительно простого, вы можете посмотреть на Режим Госу . Gosu - это язык с фигурными скобками и без точек с запятой, поэтому вы должны быть готовы к минимуму. Он также использует тот же синтаксис комментариев, что и C.

Реализация режима для него действительно проста и основана на универсальном режиме, поэтому изменение его для работы так, как вы хотите, должно быть простым. Это не на основе C-режима.

Это то, что я использовал для создания режима для языка, над которым я работал, для класса компиляторов, и это было действительно легко даже при ограниченном опыте elisp. С другой стороны, отступ довольно прост - он работает для большей части кода, но не так полон, как в C-режиме.

2 голосов
/ 25 февраля 2012

Проверьте arduino-mode: https://github.com/bookest/arduino-mode/blob/master/arduino-mode.el

Это режим на основе C, использующий функции cc-mode для быстрого создания чего-то очень полезного и уникального для программирования на Arduino.Использование этого простого шаблона должно очень помочь.

...