나는 Emacs에서 내가 아는 명령을 쌓아서 많은 자동화를 수행합니다.수동. 이것은 많은 노력이 필요하지 않기 때문에 제가 추천하는 방법입니다. 평소처럼 Emacs를 사용하고 있으면 가끔 생각이 떠오릅니다. "야, 나는 항상 이 명령을 사용하고 있는데 왜 그렇지?" "그냥 병합할까요?" ” 명령(이름이나 단축키)을 알면 모든 것이 더 쉬워집니다.
그러나 한 가지 문제는 명령을 스택할 때 "에코 영역"(미니 버퍼와 동일한 위치)에서 깜박이는 많은 메시지를 볼 수 있다는 것입니다. 아래에서 발생하는 모든 것(호출되는 함수)이 사용자에게 투명해야 하기 때문에 이러한 메시지는 의미가 없습니다.
글쎄, 당신은 할 수 있습니다조용한그것, 그럼음소거 해제그것? 아래를 살펴보세요:
(defun invisible-pretty-mail ()
"Automatize `pretty-mail'."
(interactive)
; (mute-echo-area)
(rmail-edit-current-message)
(pretty-mail) ; lots of replace-string, replace-regexp, etc. here
; that will flood messages
(rmail-cease-edit)
; (unmute-echo-area)
)
편집하다SDS'에 대한 대응답변:
귀하가 언급한 의견은 Emacs 도움말 시스템에서 매우 일반적이기 때문에 잘 알고 있습니다.
귀하의 제안이 일반적으로 잘못된 것은 아니지만 이 특정 사례를 더 자세히 조사해 보겠습니다. 1) 에 Elisp 기능이 있습니다 .emacs
. 2) 이 명령이 사용하는 명령은 기능을 설정하는 사람에게 매우 친숙하므로 읽기 쉽고 유지 관리가 매우 쉽습니다. 3) 기능이 예상대로 정확하게 작동합니다. 4)하나단점은 너무 많은 메시지를 에코한다는 것입니다.
이제 이 경우에 정말로 제안해 주시겠습니까?완전히 다시 작성됨이 기능(및 다른 많은 기능)은 완전히 다른 명령(존재할 수도 있고 존재하지 않을 수도 있는 명령)을 사용하여 우리가 알지도 못하는 메시지를 줄이는 가능한 방법으로 무엇을 수행합니까?
편집하다: (작동한) 예, 도움을 받은 후드류.
(defun test-suppress-msgs ()
(interactive)
(let ((log-size message-log-max))
(setq message-log-max nil)
(message "This message is suppressed.")
(setq message-log-max log-size)
(message "This is echoed, and logged.") ))
답변1
바인딩은 (동적) 바인딩 중에 메시지를 억제합니다 message-log-max
.nil
echo-keystrokes
키 입력 에코를 억제하기 위해 바인딩합니다 0
.
Emacs 25.1부터 변수를 inhibit-message
non- 에 바인딩(또는 설정)할 수도 있습니다 nil
. 이는 대부분의 에코 영역 메시지를 방지합니다(하지만 버퍼에 기록되는 것을 방지하지는 않습니다 *Messages*
).
답변2
나는 당신이 원하는 것을 수행하는 Emacs 소스 코드에서 아무것도 볼 수 없습니다.
"수동 사용으로 알고 있는 명령 스태킹"에 대한 접근 방식이 반드시 TRT일 필요는 없습니다. 상당수의 Emacs 명령이 Lisp 코드의 일부로 더 이상 사용되지 않습니다. 예를 들면 다음과 같습니다.
C-x b runs the command switch-to-buffer
...
WARNING: This is NOT the way to work on another buffer temporarily
within a Lisp program!
그리고
previous-line is an interactive compiled Lisp function in `simple.el'.
...
It is bound to C-p, <up>.
...
If you are thinking of using this in a Lisp program, consider using
`forward-line' with a negative argument instead. It is usually easier
to use and more reliable (no dependence on goal column, etc.).
즉, Lisp 코드를 작성할 때 대화형 명령보다는 기본 명령을 사용하는 것이 더 낫습니다. 이는 관심 있는 메시지 흐름도 줄여야 합니다.
편집하다:
게다가 이렇게 하면 기능이 더욱 강력해집니다. 다양한 설정에 덜 의존하게 되며 새로운 사용자 옵션을 시도하기로 결정했을 때 갑자기 작동이 중단될 가능성도 줄어듭니다.
나는 이것이 당신이 요구하는 것이 아니라는 것을 알고 있으며 내 의견으로는 이 정보를 숨길 방법이 없다고 즉시 말합니다.