저는 emacs lisp 프로그래밍을 처음 사용합니다. 저는 매일 개발자로서 c 프로그래밍을하고 있습니다. 이맥스 코드 브라우징을 위해 태그를 사용하고 싶습니다. 그러나, 프로젝트의 크기는 매우 크고, 매번 etags를 실행할 여유가 없습니다. 그런 식으로 이맥스에 lisp 함수 나 코드를 추가하고 싶습니다. 이맥스가 열리는 모든 파일은 하나의 파일 (~ project_files_opened.txt로 이름 지어야합니다)에 작성해야하며 열어 본 파일 만 열등화합니다. 누가이 일을하기 위해 참고 자료 나 기존 코드로 나를 도울 수 있습니까? 심지어 몇 가지 예제는 내가 데리러하는 데 도움이 될 것입니다 ... 감사합니다 ...emacs lisp 모니터링을위한 파일을 추가하는 코드
4
A
답변
1
어떻게 약간 다른 전술에 대해? 원하는 파일을 열면 해당 시점에 TAGS 파일에 추가합니다. 다음과 같은 코드로 아주 쉽게 그렇게 할 수 있습니다
(setq tags-file-name "/scratch2/TAGS")
(setq tags-revert-without-query t)
(add-hook 'find-file-hooks 'add-opened-file-to-tags)
(defun add-opened-file-to-tags()
"every time a file is opened, add it to the TAGS file (if not already present)
Note: only add it to the TAGS file when the major mode is one we care about"
(when (memq major-mode '(c-mode c++-mode))
(let ((opened-file (buffer-file-name)))
(save-excursion
(visit-tags-table-buffer)
(unless (member opened-file (tags-table-files))
(shell-command
(format "etags -a --output %s %s" tags-file-name opened-file)))))))
;; create an empty TAGS file if necessary
(unless (file-exists-p tags-file-name)
(shell-command (format "touch %s" tags-file-name)))
각을 한 번 당신이 내용을 새로 고치려면 태그 파일을 삭제할 수 있습니다 한 동안. 아니면 같은 것을 사용할 수있는 다음 M-X 새로 고침 - 태그 테이블 :
(defun refresh-tags-file()
"rebuild the tags file"
(interactive)
(let ((tags-files
(save-excursion
(visit-tags-table-buffer)
(tags-table-files))))
(delete-file tags-file-name)
(dolist (file tags-files)
(shell-command (format "etags -a --output %s %s" tags-file-name file)))))
0
CEDET 프레임 워크를 살펴볼 수 있습니다. semantic module을 참조하십시오.
1
etags 대신에 GNU Global을 사용하는 것이 좋습니다. 내주의 사항은 내가 직접 사용하지 않았지만 기본 플랫 TAGS 파일과는 달리 적절한 데이터베이스를 구현한다고 생각하지만 점진적 업데이트는 매우 효율적이어야한다고 생각합니다.
자세한 내용은 tutorial을 참조하십시오. 특히 3.6 Extended Emacs using GLOBAL 및 4.3 Incremental updating.
페이지가 이맥스 위키에서도 있습니다 :
http://www.emacswiki.org/emacs/GnuGlobal
관련 문제
- 1. emacs lisp : * H elp *
- 2. Emacs-Lisp : emacs-lisp 프로그램을 PC 응용 프로그램으로 패키지하는 방법?
- 3. Emacs Lisp : alist에서 변수를 평가하십시오.
- 4. Emacs Lisp 구문 강조 표시
- 5. Emacs Lisp - 새 창 열기
- 6. Emacs Lisp 주 모드 디버그
- 7. ^L (Emacs Lisp) 소스 코드 란 무엇을 의미합니까?
- 8. emacs lisp 쉘 프로세스 인수에 문제가 발생했습니다.
- 9. Emacs Lisp : REPL을 사용하는 대화식 버퍼 방법?
- 10. emacs lisp skip-syntax-forward help
- 11. Emacs와 Emacs Lisp 문제 해결 기법
- 12. 입력 양식 용 emacs lisp 라이브러리?
- 13. 이맥스에 대한 emacs lisp 작성 etags 검색
- 14. emacs lisp glob 확장이있는 파일 나열
- 15. Emacs Lisp 함수에서 이벤트를 기다리는 방법?
- 16. 내장 된 Emacs Lisp 라이브러리에서이 함수의 이름은 무엇입니까?
- 17. wordpress 용 lisp 코드 highligher
- 18. 실행 중에 emacs 파일을 다시 컴파일하십시오.
- 19. 특정 파일 형식을 읽기 전용으로 열려면 emacs-lisp 함수가 필요합니다.
- 20. 이맥스 site-lisp 디렉토리 찾기
- 21. 가용성 모니터링을위한 Selenium
- 22. Emacs lisp 비대화 형 함수 목록을 얻으려면 어떻게해야합니까?
- 23. Emacs Lisp - mapcar는 모든 요소에 함수를 적용하지 않습니까?
- 24. Logo와 Emacs Lisp 외에도 다른 순수 동적 범위 언어는 무엇입니까?
- 25. Emacs Lisp : (function (lambda ...))와 (lambda ...)의 차이점은 무엇입니까?
- 26. windows에서 common lisp emacs + slime + sbcl에 대한 자동 들여 쓰기
- 27. Emacs Lisp : 중복 목록 항목 삽입을 피하는 방법?
- 28. Emacs Lisp : 새 프레임 열기, IPython 시작, 이전 버퍼 실행
- 29. Emacs Lisp : ad-get-arg와 ad-get-args를 사용하는 방법?
- 30. emacs-slime으로 외부로드
그 * 힘 * 갈 수있는 방법이 될 수 있지만 그것은 아주 무거운입니다. –