어떻게 구현할까요?맨뼈키를 누를 때마다 '재평가'하는 기능이 있습니까? 느슨하게 키를 누르는 것을 의미합니다. 나는 isearch
과 친구들의 행동을 모방하려고 합니다.
나는 버퍼 축소 라인을 따라 무언가를 사용하여 개방형 nxml 모드 버퍼에 대해 XPath 표현식을 대화식으로 테스트하기 위해 이것을 사용할 것입니다. 하지만 이 질문의 목적에 따라 message
미니버퍼에 있는 모든 것을 호출하는 함수는 정말 훌륭할 것입니다.
답변1
원하는 것에 따라 속임수를 써서 사용할 수 있습니다 isearch-mode
. 세 번째 인수( OP-FUN
)는 각 입력이 처리된 후에 호출되는 함수이고, 다섯 번째 인수( WORD
)는 isearch에 입력된 문자열을 정규식으로 변환하여 검색하는 함수일 수 있습니다. 버퍼에 있습니다.
예를 들어:
(defun my-op-fun (string &optional lax)
(let ((words (split-string string ":")))
(mapconcat '(lambda (word)
(concat "\\<" (regexp-quote word)))
words "\\>.*")))
(defun my-isearch-beggining-of-line ()
(interactive)
(isearch-mode t t nil t 'my-op-fun))
"foo"를 입력하면 "foo"로 시작하는 단어를 찾고, "foo:bar"를 입력하면 "foo" 단어 뒤에 다른 문자가 오는 것을 찾은 다음 단어 시작으로 "bar"를 찾습니다. .
이 작업을 수행하려면 일부 정규식 숙달이 필요할 수 있습니다.
isearch의 소스를 보고 그것이 어떻게 수행되는지 확인할 수도 있습니다.