Предложенное чтение из (главным образом) авторитетных и уважаемых американских источников:
Необходимо также считать предупреждения в fineprint в руководствах ОС.
С Emacs 24.3 эта функциональность не доступна в режиме Show Paren.
Вот некоторый полностью непротестированный код (введенный непосредственно в моем браузере), который настраивает режим Show Paren для соответствия закрывающей скобке перед курсором вместо после.
(defadvice show-paren-function
(around show-paren-closing-before
activate compile)
(if (eq (syntax-class (syntax-after (point))) 5)
(save-excursion
(forward-char)
ad-do-it)
ad-do-it))
Это берет закрывающие скобки перед курсором также, но если курсор находится на закрывающей скобке, которая следует за закрывающей скобкой, закрывающая скобка под курсором имеет приоритет. При фиксации этого, чтобы никогда посмотреть на закрывающую скобку, прежде чем курсор смотрит tricker (он мог быть сделан с грубым взломом такой как (flet ((char-syntax …)) ad-do-it)
).
Можно обеспечить собственную функцию как значение show-paren-data-function
:
,----
| show-paren-data-function is a variable defined in `paren.el'.
| Its value is show-paren--default
|
| This variable can be risky when used as a file-local variable.
|
| Documentation:
| Function to find the opener/closer at point and its match.
| The function is called with no argument and should return either nil
| if there's no opener/closer at point, or a list of the form
| (HERE-BEG HERE-END THERE-BEG THERE-END MISMATCH)
| Where HERE-BEG..HERE-END is expected to be around point.
----
См. определение show-paren--default
для вдохновения.
Что касается преимущества: Вы видите, что соответствие открывает paren каждый раз, когда Вы добавляете закрытие paren. Имеет смысл, нет?
show-paren-data-function
? Это не находится в текущем дереве Emacs 24.
– Gilles 'SO- stop being evil'
05.11.2013, 00:28
show-paren-function
. Более новый код для show-paren-function
использование show-paren-data-function
.
– Drew
05.11.2013, 05:06
show-paren-function
затем можно использовать это для определения поведения, которое Вы хотите. Если не затем можно переопределить show-paren-function
(или советуйте ему). Обычно лучше сделать это в Вашем собственном коде, не путем изменения paren.el
непосредственно.
– Drew
05.11.2013, 17:21
В 25.1 есть переменная, позволяющая:
(setq show-paren-when-point-inside-paren t)
{ {1}}
defadvice
, это переопределяет функцию. Это может быть опасно при изменении поведения функции, это используется другими функциями, но нормально переопределять функции, которые только вызваны вручную или в известных контекстах, такой как здесь.defadvice
существует для точно этого вида вещей. – Gilles 'SO- stop being evil' 06.11.2013, 03:10