2009-09-09 4 views
3

이맥스에서 텍스트 어노테이션 시스템을 개발하고 있는데, 어노테이션의 형식은 다음과 같다. 이 텍스트 인 경우 :이맥스에서 텍스트에 태그하는 법

Lorem ipsem por favor 

나는 이런 식으로 주석을해야합니다

{latin}Lorem imsem{/latin} {spanish}por favor{/spanish} 

그래서 내가 뭘 원하는 영역을 선택하고 함수 나에 대한 메시지를 표시합니다 매크로를 실행입니다 태그 이름을 입력하고 중괄호, 닫기/및 태그 이름을 영역의 시작과 끝 부분의 버퍼에 삽입합니다.

이것은 매우 간단 합니다만, 나는 자주 사용하지 않기 때문에 항상 emacs lisp이 시작하기에 다소 혼란 스러웠습니다.

답변

11

글쎄, 거기에는 여러 가지 방법이 있습니다. yasnippet은 하나이며, 다양한 xml/html 모드가 포함되어 있습니다.

은 단순화하기 위해, 당신은 같은 일부 elisp을 사용할 수 있습니다

(defun my-tag-region (b e tag) 
    "'tag' a region" 
    (interactive "r\nMTag for region: ") 
    (save-excursion 
    (goto-char e) 
    (insert (format "{/%s}" tag)) 
    (goto-char b) 
    (insert (format "{%s}" tag)))) 
+1

빛나는 감사합니다! 그리고 save-excursion 함수가 끝나면 커서를 끝 부분의 올바른 위치에 놓기 만하면됩니다 (검색 - 앞으로 "}"). – singingfish

4

당신이 지점이 완료되면, 나는이 검색보다 더 강력하다고 생각} 마감 후 싶은 경우 :

(defun my-tag-region (b e tag) 
    "'tag' a region" 
    (interactive "r\nMTag for region: ") 
    (let ((e (copy-marker e))) 
    (goto-char b) 
    (insert (format "{%s}" tag)) 
    (goto-char e) 
    (insert (format "{/%s}" tag)))) 
관련 문제