2009-10-29 2 views
4

В Emacs есть способ синтаксиса - выделить круглые скобки цитированных и backquoted sexps по-разному, чем parens других sexps, чтобы они выделялись? например Я хочу, чтобы эти круглые скобки, чтобы быть разным цветом, чем другие круглые скобки:Подсвечивание цитат/backquoted parens

(foo `(bar (baz)) quux) 
    ^  ^
+1

Ответ почти наверняка «да», к сожалению, я не знаю ответа на следующий вопрос «Как?». B-) –

+0

Достаточно ли иметь команду, которая применяла (постоянную) подсветку к буферу? Или, возможно, модификация микрофонного парнера, которая заставляет подсветку отличаться от вас? –

+0

Либо было бы здорово. –

ответ

1

Посмотрите mic-paren, второстепенный режим, построенный в качестве дополнения к paren.el пакетов и Стиг-paren.el для Emacs. Он распознает «сбежавшие» секспы.

Теперь для специальной подсветки: если вы посмотрите на the code, поведение котируемого соответствия sexp регулируется переменной paren-match-quoted-paren. При нахождении пары спичечных s-выражении, изменение гарнитура осуществляется с помощью таких заявлений, как:

(mic-overlay-put mic-paren-backw-overlay 'face paren-mismatch-face) 

(с аналогичными альтернативами совпадают, непревзойденный). Не следует слишком сложно определить альтернативный шрифт (аналогично тому, как это делается с помощью paren-mismatch-face) и заменить те инструкции, которые меняют шрифт, функциями, использующими ваш альтернативный шрифт, если paren-match-quoted-paren истинно.

Примечание: обновленные ссылки ссылаться на последнюю версию

+0

Код, который вы указали, полностью непроницаем для меня. Спасибо хоть. –

1

Вы можете применить следующий патч для mic-paren (следовать по ссылке для последней версии 3.8), чтобы получить то, что вы хотите. Настройте вновь созданное лицо paren-face-quoted-match, которое надежно настроено для зеленого переднего плана и оранжевого фона для целей тестирования.

Теперь, когда вы находитесь рядом с совпадающим набором круглых скобок, которым предшествует одна открытая цитата `, вы получите искомое лицо. В этом примере используется оранжевый фон и зеленый цвет переднего плана - скорее всего, цвета, которые вы хотите изменить.

Вот картина его в действии: alt text http://img262.imageshack.us/img262/8866/quoted.png

--- orig-mic-paren.el 2009-11-11 17:02:42.000000000 -0800 
+++ mic-paren.el 2009-11-11 17:05:35.306263000 -0800 
@@ -561,4 +561,16 @@ 
    :group 'mic-paren-matching) 

+(defface paren-face-quoted-match 
+ '((((class color)) (:foreground "green" :background "orange")) 
+ (t (:reverse-video t))) 
+ "" 
+ :group 'faces 
+ :group 'mic-paren-matching) 
+ 
+(defcustom paren-quoted-match-face 'paren-face-quoted-match 
+ "Mic-paren face used for a quoted paren" 
+ :type 'face 
+ :group 'mic-paren-matching) 
+ 
;;; End of User Options 
;;; ====================================================================== 
@@ -1052,5 +1064,9 @@ 
        face (if mismatch 
          paren-mismatch-face 
-       paren-match-face) 
+       (save-excursion 
+       (if (progn (goto-char (- (min (point) opos) 1)) 
+          (looking-at "`")) 
+        paren-quoted-match-face 
+       paren-match-face))) 
        visible (when (pos-visible-in-window-p opos) 
          (save-excursion 

Чтобы применить патч, вырезать/вставить патч кусок в файл с именем mic.patch и выполните следующие действия:

patch mic-paren.el mic.patch 
Смежные вопросы