Modularize ggtags with eldoc configuration

See PHP layer packages.el for an example
This commit is contained in:
syl20bnr 2015-04-22 00:53:57 -04:00
parent ff8b339813
commit ad06363b39
3 changed files with 16 additions and 50 deletions

View file

@ -12,45 +12,10 @@
(setq gtags-packages
'(
;; package gtagss go here
helm-gtags
ggtags
))
;; For each package, define a function gtags/init-<package-gtags>
;;
(defun spacemacs/gtags-define-keys-for-mode (mode)
"Define key bindings for the specific MODE."
(when (fboundp mode)
(let ((hook (intern (concat (symbol-name mode) "-hook"))))
(message "hook is %s" hook)
(add-hook hook 'helm-gtags-mode)
(unless (member mode '(c-mode
c++-mode
lisp-mode
emacs-lisp-mode
python-mode
ruby-mode))
(add-hook hook (lambda ()
(ggtags-mode 1)
(eldoc-mode 1)
(setq-local eldoc-documentation-function #'ggtags-eldoc-function)))))
(evil-leader/set-key-for-mode mode
"mgc" 'helm-gtags-create-tags
"mgd" 'helm-gtags-find-tag
"mgf" 'helm-gtags-select-path
"mgg" 'helm-gtags-dwim
"mgi" 'helm-gtags-tags-in-this-function
"mgl" 'helm-gtags-parse-file
"mgn" 'helm-gtags-next-history
"mgp" 'helm-gtags-previous-history
"mgr" 'helm-gtags-find-rtag
"mgR" 'helm-gtags-resume
"mgs" 'helm-gtags-select
"mgS" 'helm-gtags-show-stack
"mgu" 'helm-gtags-update-tags)))
(defun gtags/init-ggtags ()
(use-package ggtags
:defer t))
@ -65,14 +30,13 @@
helm-gtags-use-input-at-cursor t
helm-gtags-pulse-at-cursor t)
;; modes that do not have a layer, define here
(spacemacs/gtags-define-keys-for-mode 'tcl-mode)
(spacemacs/gtags-define-keys-for-mode 'java-mode)
(spacemacs/gtags-define-keys-for-mode 'vhdl-mode)
(spacemacs/gtags-define-keys-for-mode 'shell-script-mode)
(spacemacs/gtags-define-keys-for-mode 'awk-mode)
(spacemacs/gtags-define-keys-for-mode 'asm-mode)
(spacemacs/gtags-define-keys-for-mode 'dired-mode)
)
(spacemacs/helm-gtags-define-keys-for-mode 'tcl-mode)
(spacemacs/helm-gtags-define-keys-for-mode 'java-mode)
(spacemacs/helm-gtags-define-keys-for-mode 'vhdl-mode)
(spacemacs/helm-gtags-define-keys-for-mode 'shell-script-mode)
(spacemacs/helm-gtags-define-keys-for-mode 'awk-mode)
(spacemacs/helm-gtags-define-keys-for-mode 'asm-mode)
(spacemacs/helm-gtags-define-keys-for-mode 'dired-mode))
:config
(progn
;; if anyone uses helm-gtags, they would want to use these key bindings

View file

@ -50,8 +50,8 @@
(add-to-hooks 'flycheck-mode '(c-mode-hook c++-mode-hook)))
(defun c-c++/post-init-helm-gtags ()
(spacemacs/gtags-define-keys-for-mode 'c-mode)
(spacemacs/gtags-define-keys-for-mode 'c++-mode))
(spacemacs/helm-gtags-define-keys-for-mode 'c-mode)
(spacemacs/helm-gtags-define-keys-for-mode 'c++-mode))
(defun c-c++/post-init-srefactor ()
(semantic/enable-semantic-mode 'c-mode)

View file

@ -29,15 +29,17 @@
:defer t))
(defun php/post-init-eldoc ()
(add-hook 'php-mode-hook 'eldoc-mode))
(add-hook 'php-mode-hook 'eldoc-mode)
(when (configuration-layer/package-usedp 'ggtags)
(add-hook 'php-mode-hook
(lambda () (setq-local eldoc-documentation-function
#'ggtags-eldoc-function)))))
(defun php/post-init-ggtags ()
(when (configuration-layer/package-usedp 'eldoc)
(add-hook 'php-mode-hook 'setq-local eldoc-documentation-function
'ggtags-eldoc-function)))
(add-hook php-mode-hook 'ggtags-mode))
(defun php/post-init-helm-gtags ()
(spacemacs/gtags-define-keys-for-mode 'php-mode))
(spacemacs/helm-gtags-define-keys-for-mode 'php-mode))
(defun php/init-php-auto-yasnippets ()
(use-package php-auto-yasnippets