Какой второстепенный режим печатает открывающий парен в эхо-зону?

10

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

введите описание изображения здесь

wdkrnls
источник

Ответы:

6

Это сообщение печатается, когда начало sexp не видно в окне; в противном случае вводная часть временно выделяется.

Это поведение реализовано simple.elи не связано с каким-либо второстепенным режимом. Это реализовано с помощью ловушки, которая запускается при вставке символа.

Фактическое мигание / сообщение приходит от команды blink-matching-open, которую вы можете назвать сами. Например, вы можете запустить таймер простоя, который будет вызывать эту команду всякий раз, когда вы останавливаетесь на короткое время на закрывающей парене. Это способ, которым работает встроенный show-paren-mode.

(defvar match-paren--idle-timer nil)
(defvar match-paren--delay 0.5)
(setq match-paren--idle-timer (run-with-idle-timer match-paren--delay t #'blink-matching-open))
glucas
источник
Я тоже этого хочу, но как мне сделать это не временным? Т.е. я хочу, чтобы сообщение оставалось в минибуфере, пока курсор не будет перемещен.
Фахим Митха
4

Ты можешь использовать M-x blink-matching-open RET для отображения сообщения, если вы сразу после парен. Чтобы сделать это более "на лету", вы можете попробовать M-x show-paren-mode, хотя на самом деле это не дает вам это сообщение.

В противном случае вы могли бы использовать что-то вроде

(add-hook 'post-command-hook
          (lambda ()
            (if (and (not (bobp))
                     (eq ?\) (char-syntax (char-before))))
                (blink-matching-open))))
Стефан
источник