Emacs의 가장 큰 차별점이라고 할 수 있는 emacs lisp를 활용한 버퍼 현실 조작에 필요한 내용을 정리해보았다.


사용자 함수 정의

  • .emacs 파일에 아래와 같은 방법으로 사용자 함수를 정의할 수 있다.
    (defun 함수명 ()
     (interactive)
     함수 내용
     )
    
    다음은 미니버퍼창에 간단히 메세지를 표시하는 예제이다.
    (defun my-func ()
      (interactive)
      (message "hello")
      )
    
  • 이렇게 정의한 함수는 언제든지 M-x를 누른 후, 함수명을 입력하여 실행할 수 있다.
  • 그런데 사용자 함수를 .emacs 파일에 직접 정의할 경우, 함수 내부에서 한글 사용시 문제가 발생한다. 이 경우, <emacs 설치 경로>/site-lisp 위치에 외부 파일을 생성하고 이 파일에 사용자 함수를 정의한 뒤, 아래와 같이 .emacs 파일에서 이를 읽어들이면 문제가 생기지 않는다.
    (load-library "외부 파일명")
    
    ==> [참고] UTF–8 한글 정상적으로 표시되도록 설정 방법
  • Emacs 실행 중에 위의 외부 정의 파일을 수정했을 경우에, 수정 내용을 바로 반영하기 위해서는, M-x를 누른 후 load-file을 입력하고 해당 파일의 경로를 입력하면 된다.

버퍼 조작 관련 유용한 함수들

외부 프로그램에서 함수 실행

  • emacsclient 실행시에 -e 인수를 사용하면 외부에서 내장 함수 혹은 사용자 함수를 실행할 수 있다.
     
    emacsclientw.exe -e "emacs lisp 표현식"
    
  • 윈도우 환경이라면, 아래와 같은 내용으로 배치파일을 작성하여 사용하는 것도 편리하다.
    emacsclientw.exe -n -e "%1"
    


    <테스트 환경>
     - OS : Windows 7 (32bit)
     - Emacs 버전 : Emacs 24.3 윈도우용
    
,