Кольорові змінні


11

Я шукаю простий спосіб змусити emacs запам'ятати заявлену змінну в одній функції в C / C ++. Під поняттям "просто" я маю на увазі без будь-якого зовнішнього пакета, лише з деякими рядками elisp у файлах конфігурації.

У моїй конфігурації Emacs за замовчуванням кольори імена змінних містять жовтий колір, але нехай вони використовуються білими.

char toto; // 'char' is green, 'toto' is yellow

toto = 42; // 'toto' is white

Я хотів би, щоб кожен "тото" однієї і тієї ж функції / сфери був також забарвлений у жовтий колір.

Я вже розглядав це питання, але хотів би щось простіше. Я також намагався щось робити в режимі блокування шрифту , але мені не вдалося зробити щось адаптоване до імен змінних.

У мене вже є ідея для імен членів класу C ++ (з використанням шаблону імен), тому я просто хочу тут відповідати локальній змінній.


3
Це, мабуть, складніше, ніж це виглядає. nobugs.org/developer/parsingcpp
wasamasa

8
Чому ви не хочете використовувати будь-які пакунки? Якщо є пакет, який надає цю функцію, для її встановлення майже напевно знадобиться менше еліпс у вашому конфігурації, ніж повторне створення функції з нуля.
Тайлер

11
Це дуже схоже на color-identifiers-modeпакет . (Опублікувавши це як коментар, тому що ви сказали, що не хочете розглянути зовнішні пакунки.)
Аарон Харріс,

7
Кожен "зовнішній пакет" також можна охарактеризувати як "деякі елісп рядки у файлах конфігурації". Уникати раніше існуючого коду, виходячи з того, що хтось надав його у формі пакету, є абсурдом.
філ

Яка версія Emacs у вас є?
DA Вінсент

Відповіді:


1

Ви можете зібрати регулярний вираз для змінної схеми, то , що відповідає (псевдо - код регулярний вираз) [char|other|types] [a-z];і [a-z] =*;додати його в список ключових слів шрифту блокування для вашого режиму; З посібника на сторінці "Налаштування ключових слів" :

Наприклад, наступний код додає два шаблони fontification для режиму C: один для fontify слово "FIXME", навіть у коментарях, а інший для fontify слова "і", "або" і "not" як ключові слова.

 (font-lock-add-keywords 'c-mode
  '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
    ("\\<\\(and\\|or\\|not\\)\\>" . font-lock-keyword-face)))

Цей приклад стосується лише власного режиму С. Щоб додати однакові візерунки до режиму С та всіх похідних режимів, виконайте це:

 (add-hook 'c-mode-hook
  (lambda ()
   (font-lock-add-keywords nil
    '(("\\<\\(FIXME\\):" 1 font-lock-warning-face prepend)
      ("\\<\\(and\\|or\\|not\\)\\>" .
       font-lock-keyword-face)))))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.