#이맥스 #팝업 #레이아웃 #창관리
2023-11-25 Note emacs layout notes popup window[2024-09-14] 현재 상황: #둠이맥스 전환 이후
별도 패키지는 사용하지 않는다.
KILL 테스트
- popper 는 무조건 사용하는 패키지이다.
- Spacemacs 에서는 purpose 를 사용하고 popwin dedication t 를 하라.
창 관리의 어려움
Emacs 창 관리가 얼마나 어려운가? 아니면 얼마나 쉬운가? 먼저 기본으로 돌아가서 바닐라에서 효과적인 방법은 무엇인가? popper 만 있으면 된다. 팝업으로 빼놓으면 거기에 다 밀어놓고 지워버리면 된다.
나의 스페이스맥스에서 아주 곤란한 상황이 나왔다. 최근 purpose 를 제외했는데 창 관리가 꼬여버린 것 같다. 아무튼 다시 켰다. 그러니 뭔가가 된다.
popper 의 존재 이유 - 팝업 버퍼 묶음 관리
팝업 버퍼 관리가 목적이다. 창 레이아웃 제어는 사용하지 않는다. 예를 들어 테스트 로그 팝업이 뜨면, 보고 한 번에 사라지게 하려는 것이다. 필요하면 다시 꺼내 볼수도 있다. 딱 여기 까지 역할이다. 즉 레이아웃에는 관계가 없다. popwin 에 부족한 기능을 보충하는 것이 목적이다.
그러기에 shackers 와 연계하여 사용하는 것이다. 크래프트 이맥스에는 이렇게 사용하려고 한다. 물론 display-buffer-alist 에 바로 등록해도 된다. 편하게 하려는 것일 뿐이다.
(setq popper-echo-dispatch-keys '(?q ?w ?e ?r ?t ?y ?u ?i ?o ?p))
(setq popper-display-control nil) ; use popwin and display-buffer-alist
(setq popper-reference-buffers
'("\\*Messages\\*"
;; "Output\\*$"
"*cider-error*"
;; "*cider-doc*"
;; "^\\*eldoc for"
popwin 의 존재 이유
팝윈은 Spacemacs 이기에 사용한다. 이걸 덜어내지 말자. 그렇다면 popper 와 잘 연동해야 한다.
문제가되던 시나리오를 보자면, 윈도우를 3 개 띄워놓고 작업하는 중에 테스트를 실행했다. 테스트 결과가 팝윈에 등록한 대로 하단에 새로운 윈도우로 떴다. 이게 뜨는 동시에 기존에 있던 창 3 개 중에 2 개를 닫아버리는 것이다. 이는 다시 purpose 레이어를 활성화 하니까 해결 되었다. 워크스페이스 묶음 처럼 사용하려면 뺄 수가 없겠다.
다른 문제는 하단에 테스트 결과 버퍼는 q 를 누르면 사라지길 원한다. 다시 윈도우 3 개가 남는 것이다. 근데 이는 아래 팝윈 설정에 영향을 받는다.
설정을 아래와 같이 해야 했다. dedication t 가 중요했다. nil 이면 q 로 사라지지 않는다. 그 윈도우를 없애버리는 귀찮음을 해야 했다.
여기에 popper 가 역할을 한다. 쉽게 닫으려면 poppeer 에 등록을 해두면 좋다. 근데 popper 에 상태에서는 dedicated 가 nil 이어도 동작을 하네? 일단 t 로 통일하는게 좋겠다.
:stick t 는 사라지라 하기 전까지 화면에 보이도록 한다.
(push '(compilation-mode :dedicated t :stick t
windows-purpose 의 존재 이유
작업 할 때 코드 문서 뷰 등 뭐가 되든 윈도우 세트를 구성하고 작업한다. 여기에 적합한 규칙을 쉽게 지정할 수 있다.
팝업 버퍼는 새로운 윈도우에 띄우자
창이 3 개 있는 상태에서 테스트 수행했다. 테스트 결과가 아래에 정의된 대로 좌측에 60 폭으로 등장한다. 그리고 닫는다. 자연스럽다. 원래 창 3 개는를 덮어쓰지 않기에 자유롭다. 그렇게 하자. 세로가 좋다. 여기에 visual-line-mode 를 하면 줄 나눔도 깔끔하게 들어간다. 그렇게 한 결과이다.
(push '(compilation-mode :dedicated t :position left :stick t :noselect t :width 60) popwin:special-display-config)