Показывать скобки внутри них — Emacs

В emacs есть режим show-paren-mode, который окрашивает противоположную совпадающую скобку, когда курсор находится на другой. Я написал пример, объясняющий show-paren-mode:

( <-colored  colored-> )| <-cursor 

Однако это не работает, когда курсор не находится в скобках:

( <-not colored    cursor inside->|    not colored-> )

Как я могу включить это? Я обнаружил, что при выполнении slurpage и barfage в paredit я не могу очень хорошо отслеживать круглые скобки, потому что они не окрашены, если я не нахожусь на них.

Это оптимально:

( <-colored    cursor inside->|    colored-> )

Изменить: благодаря комментарию @lawlist я решил эту проблему.


person Spenser Truex    schedule 18.01.2016    source источник
comment
Я использую show-paren-mode с paredit-mode. Он показывает совпадающую скобку, как обычно. Можете ли вы уточнить, что вы ищете во взаимодействии между ними?   -  person verdammelt    schedule 18.01.2016
comment
@verdammelt Надеюсь, это проясняет ситуацию.   -  person Spenser Truex    schedule 18.01.2016
comment
Рассмотрите возможность использования библиотеки, которая не зависит ни от чего, упомянутого в вашем вопросе, и отключите значение по умолчанию show-parens-mode, т. Взгляните на выделенные скобки: github.com/tsdh/highlight-parentheses.el Взгляните на радужные разделители: github.com/Fanael/rainbow-delimiters И здесь является ссылкой на мою собственную версию highlight-parentheses, которая мне нравится больше (по нескольким важным причинам, таким как прокрутка и отсутствие накопления ненужных наложений...): stackoverflow.com/a/23998965/2112489   -  person lawlist    schedule 18.01.2016
comment
hl-sexp-mode может быть достаточно для ваших нужд   -  person coredump    schedule 18.01.2016
comment
@lawlist Спасибо за ответ, ответ из вашего другого ответа на переполнение стека работает хорошо.   -  person Spenser Truex    schedule 19.01.2016


Ответы (2)


Это хорошо работает для меня (более поздняя версия Emacs (чем 25?) Может потребоваться для реализации нового совета):

(define-advice show-paren-function (:around (fn) fix)
  "Highlight enclosing parens."
  (cond ((looking-at-p "\\s(") (funcall fn))
        (t (save-excursion
             (ignore-errors (backward-up-list))
             (funcall fn)))))
person huaiyuan    schedule 18.01.2016

Благодаря комментарию lawlist я добавил код из его ответа на другой вопрос в мой файл инициализации.

Он окрашивает каждый набор совпадающих скобок в радужный узор.

person Spenser Truex    schedule 19.01.2016