etags interface for Helm on Emacs
Emacs Lisp
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
helm-etags-plus.el prompt creating TAGS if no TAGS found when ctags-update is installed Jan 13, 2017 Update Jan 10, 2017

Etags helm.el interface


The easiest way to get started is to install the package via MELPA:

(package-install 'helm-etags-plus)

it support multiple tag files.

(setq tags-table-list '("/path/of/TAGS1"    "/path/of/TAG2"))

if there is a TAG in the root of project you needn't add this special file to 'tags-table-list'

 (require 'helm-etags-plus)
 (global-set-key "\M-." 'helm-etags-plus-select)

M-. default use symbol under point as tagname C-uM-. use pattern you typed as tagname

Go back and forward

;;list all visited tags
(global-set-key "\M-*" 'helm-etags-plus-history)
;;go back directly
(global-set-key "\M-," 'helm-etags-plus-history-go-back)
;;go forward directly
(global-set-key "\M-/" 'helm-etags-plus-history-go-forward)

if you want to use bm.el for navigating history,you could

    (setq bm-in-lifo-order t)

    (autoload 'bm-bookmark-add "bm" "add bookmark")
    (add-hook 'helm-etags-plus-before-jump-hook 'bm-bookmark-add)
    (add-hook 'helm-etags-plus-before-jump-hook '(lambda()(bm-bookmark-add nil nil t)))
    ;Auto remove bookmark after jump to it by bm-next or bm-previous

then use bm-previous bm-next to jump

Integration with etags-table.el

(require 'etags-table)
(setq etags-table-alist
        '("/home/me/Projects/foo/.*\\.[ch]$" "/home/me/Projects/lib1/TAGS" "/home/me/Projects/lib2/TAGS")
        '("/home/me/Projects/bar/.*\\.py$" "/home/me/Projects/python/common/TAGS")
        '("/tmp/.*\\.c$"  "/java/tags/linux.tag" "/tmp/TAGS" )
        '(".*\\.java$"  "/opt/sun-jdk-" )
        '(".*\\.[ch]$"  "/java/tags/linux.ctags")
(add-hook 'helm-etags-plus-select-hook 'etags-table-recompute)


moved to