'2012/03'에 해당되는 글 1건
2012/03/22 19:51
[활용/emacs]
나는 org 모드에 거의 모든 내용을 기록해 놓는다. 그리고 아주 자주 검색하기 때문에 지금 프레임이나 창에 영향 받지 않고 검색한 다음에 바로 닫고 싶었다. (뭐 org 에서 검색 기능을 이미 제공할 것 같기도 하지만..)
그래서 새프레임을 열고 함수를 호출하는 기능이 필요하다.
그래서 새프레임을 열고 함수를 호출하는 기능이 필요하다.
일단 쉽게 생각할 수 있는 방법은 아래와 같을 것이다.
(defun foo () (interactive) (make-frame) (next-frame) (do some thing...) )
프레임을 만들고 프레임을 옮기고 뭔가 동작하기. 그런데 그게 쉽지 않다. 커서는 저 함수가 끝날 때까지 원래 프레임에 계속 머무른다.
방법은 뭘까? 좀 복잡해질지도 모르지만 훅을 이용하면 된다.
make-frame 에는 after-make-frame-functions 라는 훅이 존재한다. 해당 훅에 프레임을 옮긴 후 해야 할 일을 기술해 놓으면 된다.
(defun make-frame-and-org-find ()
(interactive)
(add-hook 'after-make-frame-functions 'finish-make-frame-and-find-org)
(make-frame)
)
(defun finish-make-frame-and-find-org (frame)
(remove-hook 'after-make-frame-functions 'finish-make-frame-and-find-org)
(select-frame frame)
(let ((query (read-from-minibuffer "org-string : " (concat (thing-at-point 'symbol) "") nil nil)))
(find-grep
(concat "find ~/org/job -type f -name *.org -print0 | xargs -0 -e grep -nH -e " query)))
)


