Как мне реализовать функцию « голых костей», которая «переоценивает» каждое нажатие клавиши? Я имею в виду нажатие клавиши свободно; Я ищу подражать поведению isearch
и друзьям.
Я бы использовал это для интерактивного тестирования выражений XPath по отношению к открытому буферу в режиме nxml, используя что-то вроде сужения буфера. Для целей этого вопроса, однако, просто функция, которая вызывает message
все, что находится в минибуфере, была бы просто грандиозной.
emacs
minibuffer
Шон Оллред
источник
источник
(add-hook 'post-command-hook (lambda () (message "hello-world")))
и добавьте at
к хвостовой части, чтобы сделать его локальным по буферу, и еще один,t
если вы хотите добавить его к существующим функциям, уже назначенным этому хуку (вместо предварительного ожидания).post-command-hook
универсально, но запускает иногда слишком часто для моих личных нужд.Ответы:
В зависимости от того, что вы хотите, вы можете обмануть и использовать
isearch-mode
: его третий аргумент (OP-FUN
) является функцией, вызываемой после обработки каждого ввода, а его 5-й аргумент (WORD
) может быть любой функцией, которая преобразует строку, набранную в isearch, в регулярное выражение для просмотра. для в буфере.Для exemble:
если вы наберете «foo», он будет искать слово, начинающееся с «foo», при вводе «foo: bar» он будет искать слово «foo», за которым следует какой-то другой символ, а затем «bar» как начало слова ,
Может понадобиться некоторое мастерство регулярных выражений, чтобы сделать эту работу для вас.
Вы также можете просто посмотреть на источник isearch, чтобы увидеть, как это делается.
источник