diff --git a/.gitignore b/.gitignore index 001e001..d593ddf 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ elpa *.elc recentf .python-environments* +TAGS diff --git a/behaviour.el b/behaviour.el index 88b3085..b9f72b6 100644 --- a/behaviour.el +++ b/behaviour.el @@ -169,6 +169,10 @@ (projectile-mode t) (require 'helm-projectile) +;; Reload tags when switching projects +(add-hook 'projectile-after-switch-project-hook 'projectile-regenerate-tags) +(setq tags-revert-without-query 1) + (with-eval-after-load 'helm-projectile (defvar helm-source-file-not-found (helm-build-dummy-source diff --git a/init.el b/init.el index 5bc27f9..4de5021 100644 --- a/init.el +++ b/init.el @@ -26,7 +26,8 @@ ;; If there is more than one, they won't work right. '(package-selected-packages (quote - (nvm tide yaml-mode window-purpose web-mode ujelly-theme toml-mode smart-mode-line scala-mode rvm ruby-end rspec-mode robe rainbow-mode rainbow-delimiters racer pyenv-mode noctilux-theme monokai-theme markdown-mode less-css-mode json-reformat jade-mode indent-guide helm-themes helm-projectile helm-ag haskell-mode haml-mode groovy-mode flymake-ruby flymake-cursor flycheck flatui-theme exec-path-from-shell evil-nerd-commenter evil-magit evil-leader elpy dumb-jump dockerfile-mode diff-hl dash-at-point company-tern company-racer company-jedi column-enforce-mode color-theme-approximate base16-theme atom-one-dark-theme alchemist aggressive-indent ag)))) + (etags-select nvm tide yaml-mode window-purpose web-mode ujelly-theme toml-mode smart-mode-line scala-mode rvm ruby-end rspec-mode robe rainbow-mode rainbow-delimiters racer pyenv-mode noctilux-theme monokai-theme markdown-mode less-css-mode json-reformat jade-mode indent-guide helm-themes helm-projectile helm-ag haskell-mode haml-mode groovy-mode flymake-ruby flymake-cursor flycheck flatui-theme exec-path-from-shell evil-nerd-commenter evil-magit evil-leader elpy dumb-jump dockerfile-mode diff-hl dash-at-point company-tern company-racer company-jedi column-enforce-mode color-theme-approximate base16-theme atom-one-dark-theme alchemist aggressive-indent ag))) + '(safe-local-variable-values (quote ((encoding . utf-8))))) (custom-set-faces ;; custom-set-faces was added by Custom. ;; If you edit it by hand, you could mess it up, so be careful. diff --git a/key-bindings.el b/key-bindings.el index 36a2425..c016c14 100644 --- a/key-bindings.el +++ b/key-bindings.el @@ -48,15 +48,24 @@ (evil-leader/set-key "pc" 'projectile-invalidate-cache) (evil-leader/set-key "b" 'helm-buffers-list) -(evil-leader/set-key "jl" 'dumb-jump-go); Jump to declaration -(evil-leader/set-key "jh" 'dumb-jump-back); Jump back from declaration +(evil-leader/set-key "jl" 'etags-select-find-tag-at-point); Jump to declaration +(evil-leader/set-key "jh" 'pop-tag-mark); Jump back from declaration ;; Dash integration (require 'dash-at-point) (evil-leader/set-key "d" 'dash-at-point) (require 'evil) -;;; VIM insert mode things +;;; VIM insert mode state (define-key evil-insert-state-map "\C-a" 'company-complete) (define-key evil-insert-state-map "\C-q" 'company-yasnippet) + + +;;; The things below are experimental, need to be fixed +(define-key evil-insert-state-map "\M-." 'find-tag) +(define-key evil-insert-state-map "\M-*" 'pop-tag-mark) + +;;; VIM browse mode things +(define-key evil-motion-state-map "\M-." 'find-tag) +(define-key evil-motion-state-map "\M-*" 'pop-tag-mark) ;;; key-bindings.el ends here diff --git a/languages/js.el b/languages/js.el index b369cd9..218a8e2 100644 --- a/languages/js.el +++ b/languages/js.el @@ -16,8 +16,8 @@ (flycheck-mode 1) (flymake-mode) (set (make-local-variable 'company-backends) - '((company-tern company-capf company-dabbrev-code company-yasnippet - company-files)))) + '((company-tern company-capf company-etags company-dabbrev-code + company-yasnippet company-files)))) ;;========== Tide mode ============================ ;; TODO: Figure out how to use tide with Emacs and NVM. diff --git a/languages/ruby.el b/languages/ruby.el index 132053f..ac325b1 100644 --- a/languages/ruby.el +++ b/languages/ruby.el @@ -48,7 +48,7 @@ ;; Initalize completion (set (make-local-variable 'company-backends) - '((company-robe company-dabbrev-code company-yasnippet)))) + '((company-robe company-dabbrev-code company-yasnippet company-etags)))) ;;========== Hooks ================================ (add-hook 'ruby-mode-hook 'editor-ruby-mode-config) diff --git a/packages.el b/packages.el index 17cfb49..21725d1 100644 --- a/packages.el +++ b/packages.el @@ -21,6 +21,10 @@ (unless (package-installed-p 'evil-nerd-commenter) (package-install 'evil-nerd-commenter)) +;; Ctags +(unless (package-installed-p 'etags-select) + (package-install 'etags-select)) + ;; Rainbow delimiters (unless (package-installed-p 'rainbow-delimiters) (package-install 'rainbow-delimiters)) diff --git a/windows.el b/windows.el index e502ba6..3781e7f 100644 --- a/windows.el +++ b/windows.el @@ -48,6 +48,7 @@ (add-to-list 'purpose-user-mode-purposes '(help-mode . tools)) (add-to-list 'purpose-user-mode-purposes '(helm-mode . tools)) (add-to-list 'purpose-user-mode-purposes '(compilation-mode . tools)) +(add-to-list 'purpose-user-mode-purposes '(etags-select-mode . tools)) (add-to-list 'purpose-user-mode-purposes '(reb-mode . tools)) ;; Regexp builder (setq purpose-use-default-configuration nil)