팝업을 2등 시민으로 만드는 Doom Emacs popup 모듈
Not all windows are created equally. Some are less important. Some I want gone once they have served their purpose, like code output or a help buffer. Others I want to stick around, like a scratch buffer or org-capture popup.
More than that, popups ought to be the second class citizens of my editor; spawned off to the side, discarded with the push of a button (e.g. ESC or C-g), and easily restored if I want to see them again. Of course, this system should clean up after itself and kill off buffers I mark as transient.
모든 창이 똑같이 생성되는 것은 아닙니다. 일부는 덜 중요합니다. 코드 출력이나 도움말 버퍼처럼 용도가 끝나면 사라졌으면 하는 창도 있습니다. 스크래치 버퍼나 org-capture 팝업처럼 계속 유지하고 싶은 팝업도 있습니다.
그보다 팝업은 에디터에서 2등 시민이 되어야 하며, 버튼(예: ESC 또는 C-g)을 누르면 사라지고, 다시 보고 싶을 때 쉽게 복원할 수 있어야 합니다. 물론 이 시스템은 스스로 정리하고 사용자가 일시적인 것으로 표시한 버퍼를 없애야 합니다.
:ui popup - Doom Emacs v21.12 documentation - docs.doomemacs.org
어디서 본 적이 있는 것 같은데, doom emacs에서는 직접 구현한 모듈(module)이 있다.
설정 방법
+all
- Enable fallback rules to ensure all temporary/special buffers (whose name begins with a space or asterix) are treated as popups.
+defaults
- Enable reasonable default popup rules for a variety of buffers.
빈칸이나 *
문자로 시작하는 건 모두 임시 버퍼 취급하는 +all
옵션과 적당히 타협하는 +default
옵션이 있다.
(doom! :ui
(popup +defaults) ; tame sudden yet inevitable temporary windows
)
init.el
파일에 설정한다. 적당한 옵션으로 세팅해서 사용하고 있다.
사용 방법
주로 사용하는 키는 다음과 같다. 팝업창을 일반 창으로 승격시키는 기능도 있다. 자신이 쓰기 위해 만든 모듈은 이렇게 기능이 디테일하다.
C-g
- 닫기C-x p
-+popup/other
- 열린 팝업창으로 이동SPC ~
-+popup/toggle
- 팝업창을 여닫는다C-~
-+popup/raise
- 팝업창을 일반 창으로 승격
현재 사용 예
popup 모듈 확장성이 좋다. 패키지에 팝업으로 띄웠으면 좋겠다고 하는 window에 적용해서 쓰고 있다.
ElDoc 패키지에서 사용하는 window에 팝업을 적용했다.
(after! eldoc
;; =M-x eldoc-doc-buffer= 함수 호출로 표시하는 buffer 크기 조절
(set-popup-rule! "^\\*eldoc for" :size 0.2 :vslot -1))
Web Archive 링크를 만드는 패키지에도 결과를 보여줄 때, 팝업으로 보여준다.
(when (functionp #'set-popup-rule!)
(set-popup-rule! my/web-archive-result-buffer-name :size 0.25 :ttl nil :vslot -1))
size
, ttl
, vslot
등 옵션도 많다.
마치며
맞다. 모든 윈도우가 같은 취급을 받으면 안 된다. 어떤 윈도우는 계속 한자리를 차지하고 있어야 하지만 어떤 윈도우는 잠시 보였다가 손쉽게 사라져야 한다. 만약 Doom Emacs를 떠나 다른 곳으로 간다면 그리울 패키지다. 비슷한 기능을 가진 걸 찾거나 Doom Emacs를 벗어나더라도 사용할 수 있게 분리하는 작업을 시작할 것 같다.
C-x C-s C-x C-c