emacsConfig/etags-setting.el
1 (require 'auto-complete-etags) 2 3 (setq ac-sources (append '(ac-source-etags) ac-sources)) 4 5 ;定义全局变量 6 (defvar etags-src-dir nil) 7 (defvar etags-saved-tagfile-name nil) 8 (defvar etags-language-type nil) 9 10 11 (defun etags-update () 12 "Make ETAGS incremental update" 13 14 (if 15 ( 16 and(null etags-src-dir) 17 (null etags-saved-tagfile-name) 18 (null etags-language-type) 19 ) 20 (message "no tags updated for etags") 21 (with-temp-buffer 22 (shell-command 23 (concat "ctags" " " "--languages=" etags-language-type " " "-e -R -f" " " etags-saved-tagfile-name " " etags-src-dir) 24 (buffer-name)) 25 ) 26 ) 27 ) 28 29 (add-hook 'after-save-hook 'etags-update) 30 31 ;etags生成函数 32 (defun generate-etags () 33 "Generate tag tables." 34 (interactive) 35 (let 36 ( 37 (language-type "") 38 (src-dir "") 39 (saved-tagfile-name "") 40 ) 41 42 (setq 43 src-dir 44 (read-from-minibuffer "source directory:" ) 45 46 language-type 47 (read-from-minibuffer "language type:") 48 49 saved-tagfile-name 50 (read-from-minibuffer "tags save path:") 51 ) 52 53 ;设置全局变量保存起来 54 (setf etags-src-dir src-dir) 55 (setf etags-language-type language-type) 56 (setf etags-saved-tagfile-name saved-tagfile-name) 57 58 (with-temp-buffer 59 (shell-command 60 (concat "ctags" " " "--languages=" etags-language-type " " "-e -R -f" " " etags-saved-tagfile-name " " etags-src-dir) 61 (buffer-name))))) 62 63 ;加载etags 64 (defalias 'load-etags 'visit-tags-table)
ctags支持etags的模式