Improve ctags and company configuration
Set ctags command based on major mode Set different company backends based on major mode Completely abandon robe in favour of ctags for Ruby Set up Erlang configuration
This commit is contained in:
parent
4d3683eb4a
commit
d3c2c17ff9
10 changed files with 141 additions and 57 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -8,3 +8,4 @@ recentf
|
||||||
TAGS
|
TAGS
|
||||||
eshell/history
|
eshell/history
|
||||||
tramp
|
tramp
|
||||||
|
url/*
|
||||||
|
|
|
||||||
|
|
@ -23,62 +23,26 @@
|
||||||
(global-company-mode 1)
|
(global-company-mode 1)
|
||||||
(yas-global-mode 1)
|
(yas-global-mode 1)
|
||||||
|
|
||||||
(setq-default company-backends '(company-tern ;; Javascript
|
;; Absolute defaults for company mode
|
||||||
(company-yasnippet ;; Snippets for all programming languages
|
(setq-default company-backends
|
||||||
company-etags) ;; Ctags for any language
|
'((company-files ; files & directory
|
||||||
company-elisp ; Emacs Lisp
|
company-keywords ; keywords
|
||||||
company-clang company-cmake ;; C
|
company-capf
|
||||||
company-lsp ;; Language server protocol
|
)
|
||||||
company-ansible ;; Ansible
|
(company-dabbrev company-abbrev)
|
||||||
alchemist-company ;; Elixir
|
))
|
||||||
company-racer ;; Rust
|
|
||||||
company-web-html ;; HTML
|
|
||||||
(company-dabbrev-code company-dabbrev company-abbrev) ;; abbrev
|
|
||||||
company-capf ;; Backend for default complete-at-point function
|
|
||||||
company-keywords ;; Keywords for all languages
|
|
||||||
company-files ; files & directory
|
|
||||||
))
|
|
||||||
|
|
||||||
|
|
||||||
(setq-default company-lsp-cache-candidates 1 ;; Cache LSP results
|
(setq-default
|
||||||
company-lsp-async 1 ;; Fetch LSP results asynchronously
|
company-lsp-cache-candidates 1 ;; Cache LSP results
|
||||||
|
company-lsp-async 1 ;; Fetch LSP results asynchronously
|
||||||
)
|
)
|
||||||
|
|
||||||
;;; Yasnippet configuration
|
;;; Yasnippet configuration
|
||||||
(define-key prog-mode-map (kbd "C-c y") 'company-yasnippet)
|
(define-key prog-mode-map (kbd "C-c y") 'company-yasnippet)
|
||||||
(define-key prog-mode-map (kbd "<f13>") 'company-yasnippet)
|
(define-key prog-mode-map (kbd "<f13>") 'company-indent-or-complete-common)
|
||||||
|
(define-key prog-mode-map (kbd "TAB") 'company-yasnippet)
|
||||||
|
|
||||||
(define-key text-mode-map (kbd "C-c y") 'company-yasnippet)
|
(define-key text-mode-map (kbd "C-c y") 'company-yasnippet)
|
||||||
(define-key text-mode-map (kbd "<f13>") 'company-yasnippet)
|
(define-key text-mode-map (kbd "<f13>") 'company-indent-or-complete-common)
|
||||||
|
(define-key text-mode-map (kbd "TAB") 'company-indent-or-complete-common)
|
||||||
;; Sentinel function for capturing ctags
|
|
||||||
(defun ctags-process-callback (process event)
|
|
||||||
"Show status of asynchronous ctags-process after it finishes."
|
|
||||||
(cond
|
|
||||||
((string-equal event "finished\n")
|
|
||||||
(message "Creating tag files...completed")
|
|
||||||
(kill-buffer (get-buffer "*ctags*"))
|
|
||||||
(visit-tags-table (format "%sTAGS" (projectile-project-root))))
|
|
||||||
(t
|
|
||||||
(message "Creating tags file...failed")
|
|
||||||
(pop-to-buffer (get-buffer "*ctags*"))
|
|
||||||
)))
|
|
||||||
|
|
||||||
;; (setq ctags-commands
|
|
||||||
;; '(("emacs-lisp-mode" . "Some string"))
|
|
||||||
;; ("enh-ruby-mode" . "Some other string")
|
|
||||||
;; )
|
|
||||||
|
|
||||||
;; (defun buffer-mode-as-string (&optional-buffer)
|
|
||||||
;; "Get current mode from &OPTIONAL-BUFFER or current buffer."
|
|
||||||
;; (when option)
|
|
||||||
|
|
||||||
;; (message "%s"
|
|
||||||
;; (cdr
|
|
||||||
;; (assoc
|
|
||||||
;; (format "%s" (buffer-local-value 'major-mode
|
|
||||||
;; (current-buffer))) ctags-commands)))
|
|
||||||
|
|
||||||
;; (message (format "%s" (buffer-local-value 'major-mode (current-buffer))))
|
|
||||||
|
|
||||||
;; (message ())
|
|
||||||
|
|
|
||||||
30
08ctags.el
Normal file
30
08ctags.el
Normal file
|
|
@ -0,0 +1,30 @@
|
||||||
|
;; Do not mix ctags between folders
|
||||||
|
(setq tags-add-tables nil)
|
||||||
|
|
||||||
|
;; Sentinel function for capturing ctags
|
||||||
|
(defun ctags-process-callback (process event)
|
||||||
|
"Show status of asynchronous ctags-process after it finishes."
|
||||||
|
(cond
|
||||||
|
((string-equal event "finished\n")
|
||||||
|
(message "Creating tag files...completed")
|
||||||
|
(kill-buffer (get-buffer "*ctags*"))
|
||||||
|
(visit-tags-table (format "%sTAGS" (projectile-project-root))))
|
||||||
|
(t
|
||||||
|
(message "Creating tags file...failed")
|
||||||
|
(pop-to-buffer (get-buffer "*ctags*"))
|
||||||
|
)))
|
||||||
|
|
||||||
|
(setq ctags-refresh-command
|
||||||
|
(format "ctags -e -R -f %sTAGS %s."
|
||||||
|
(projectile-project-root) (projectile-project-root)))
|
||||||
|
|
||||||
|
(defun refresh-ctags ()
|
||||||
|
"Refresh ctags according to currently set command."
|
||||||
|
(interactive)
|
||||||
|
|
||||||
|
(message "Starting ctags process")
|
||||||
|
(start-process-shell-command "ctags" "*ctags*" ctags-refresh-command)
|
||||||
|
(set-process-sentinel (get-process "ctags") 'ctags-process-callback))
|
||||||
|
|
||||||
|
;; Ctags bindings
|
||||||
|
(define-key prog-mode-map (kbd "C-c E") 'refresh-ctags)
|
||||||
|
|
@ -1,6 +1,11 @@
|
||||||
(defun activate-emacs-lisp-mode ()
|
(defun activate-emacs-lisp-mode ()
|
||||||
"Goodies for editing emacs files."
|
"Goodies for editing emacs files."
|
||||||
(set-indent 2) ;; Default indentation of 2 characters
|
(set-indent 2) ;; Default indentation of 2 characters
|
||||||
|
(column-enforce-n 80)
|
||||||
|
|
||||||
|
;; Company list override
|
||||||
|
(add-to-list (make-local-variable 'company-backends)
|
||||||
|
'(company-elisp company-yasnippet))
|
||||||
)
|
)
|
||||||
|
|
||||||
(add-hook 'emacs-lisp-mode-hook 'activate-emacs-lisp-mode)
|
(add-hook 'emacs-lisp-mode-hook 'activate-emacs-lisp-mode)
|
||||||
|
|
|
||||||
15
20elixir.el
15
20elixir.el
|
|
@ -1,2 +1,13 @@
|
||||||
(add-hook 'elixir-mode 'alchemist-mode)
|
(add-hook 'elixir-mode-hook 'alchemist-mode)
|
||||||
(add-hook 'elixir-mode 'ruby-end-mode)
|
(add-hook 'elixir-mode-hook 'ruby-end-mode)
|
||||||
|
|
||||||
|
(defun activate-elixir-mode ()
|
||||||
|
"All things Elixir."
|
||||||
|
(set-indent 2)
|
||||||
|
(column-enforce-n 80)
|
||||||
|
|
||||||
|
;; Company list override
|
||||||
|
(add-to-list (make-local-variable 'company-backends)
|
||||||
|
'(alchemist-company company-yasnippet)))
|
||||||
|
|
||||||
|
(add-hook 'alchemist-mode-hook 'activate-elixir-mode)
|
||||||
|
|
|
||||||
44
20erlang.el
Normal file
44
20erlang.el
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
;; Add erlang installation to load path
|
||||||
|
(setq erlang-asdf-root "/Users/maciej/.asdf/installs/erlang/21.2.6/")
|
||||||
|
|
||||||
|
(setq load-path
|
||||||
|
(cons (format "%slib/tools-3.0.2/emacs" erlang-asdf-root)
|
||||||
|
load-path))
|
||||||
|
|
||||||
|
(require 'erlang-start)
|
||||||
|
|
||||||
|
(setq erlang-root-dir erlang-asdf-root)
|
||||||
|
(setq exec-path (cons (format "%sbin" erlang-asdf-root) exec-path))
|
||||||
|
(setq erlang-man-root-dir (format "%sman" erlang-asdf-root))
|
||||||
|
|
||||||
|
;; Flycheck checker for Erlang
|
||||||
|
(flycheck-define-checker erlang-otp
|
||||||
|
"An Erlang syntax checker using the Erlang interpreter."
|
||||||
|
:command ("erlc" "-o" temporary-directory "-Wall"
|
||||||
|
"-I" "../include" "-I" "../../include"
|
||||||
|
"-I" "../../../include" source)
|
||||||
|
:error-patterns
|
||||||
|
((warning line-start (file-name) ":" line ": Warning:" (message) line-end)
|
||||||
|
(error line-start (file-name) ":" line ": " (message) line-end))
|
||||||
|
:modes (erlang-mode))
|
||||||
|
|
||||||
|
(defun activate-erlang-mode ()
|
||||||
|
"All things for Erlang."
|
||||||
|
(flycheck-select-checker 'erlang-otp)
|
||||||
|
|
||||||
|
;; Set specific ctags command
|
||||||
|
(setq-local
|
||||||
|
ctags-refresh-command
|
||||||
|
(format
|
||||||
|
"ctags -e -R --languages=erlang -f %sTAGS %s. %slib/stdlib-* %slib/kernel-*"
|
||||||
|
(projectile-project-root) (projectile-project-root)
|
||||||
|
erlang-asdf-root erlang-asdf-root)
|
||||||
|
|
||||||
|
(add-to-list (make-local-variable 'company-backends)
|
||||||
|
'(company-etags company-yasnippet))
|
||||||
|
)
|
||||||
|
|
||||||
|
;; Company list override
|
||||||
|
(add-to-list (make-local-variable 'company-backends) 'company-etags))
|
||||||
|
|
||||||
|
(add-hook 'erlang-mode-hook 'activate-erlang-mode)
|
||||||
14
20ruby.el
14
20ruby.el
|
|
@ -8,8 +8,8 @@
|
||||||
|
|
||||||
(message "Starting ctags process")
|
(message "Starting ctags process")
|
||||||
(start-process-shell-command "ctags" "*ctags*"
|
(start-process-shell-command "ctags" "*ctags*"
|
||||||
(format "ctags -e -R --languages=ruby -f %sTAGS %s. $(bundle list --paths)"
|
(format "ctags -e -R --languages=ruby -f %sTAGS %s. $(bundle list --paths)"
|
||||||
(projectile-project-root) (projectile-project-root)))
|
(projectile-project-root) (projectile-project-root)))
|
||||||
(set-process-sentinel (get-process "ctags") 'ctags-process-callback))
|
(set-process-sentinel (get-process "ctags") 'ctags-process-callback))
|
||||||
|
|
||||||
;; Ruby specific key bindings
|
;; Ruby specific key bindings
|
||||||
|
|
@ -33,7 +33,15 @@
|
||||||
(column-enforce-n 80))
|
(column-enforce-n 80))
|
||||||
|
|
||||||
;; Do not insert magic encoding comment at the begining of each file
|
;; Do not insert magic encoding comment at the begining of each file
|
||||||
(setq ruby-insert-encoding-magic-comment nil))
|
(setq ruby-insert-encoding-magic-comment nil)
|
||||||
|
|
||||||
|
;; Company list override
|
||||||
|
(add-to-list (make-local-variable 'company-backends) '(company-etags company-yasnippet))
|
||||||
|
|
||||||
|
;; Set specific ctags command
|
||||||
|
(setq-local ctags-refresh-command
|
||||||
|
(format "ctags -e -R --languages=ruby -f %sTAGS %s. $(bundle list --paths)"
|
||||||
|
(projectile-project-root) (projectile-project-root))))
|
||||||
|
|
||||||
(add-hook 'enh-ruby-mode-hook 'activate-ruby-mode)
|
(add-hook 'enh-ruby-mode-hook 'activate-ruby-mode)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,12 @@
|
||||||
"All things for Rust mode"
|
"All things for Rust mode"
|
||||||
(interactive)
|
(interactive)
|
||||||
(set-indent 4)
|
(set-indent 4)
|
||||||
(column-enforce-n 99))
|
(column-enforce-n 99)
|
||||||
|
|
||||||
|
;; Company list override
|
||||||
|
(add-to-list (make-local-variable 'company-backends)
|
||||||
|
'(company-capf company-yasnippet))
|
||||||
|
)
|
||||||
|
|
||||||
(add-hook 'rust-mode-hook 'activate-rust-mode)
|
(add-hook 'rust-mode-hook 'activate-rust-mode)
|
||||||
(add-hook 'rust-mode-hook 'racer-mode)
|
(add-hook 'rust-mode-hook 'racer-mode)
|
||||||
|
|
|
||||||
14
20web.el
14
20web.el
|
|
@ -4,3 +4,17 @@
|
||||||
|
|
||||||
;; Tern is used for completion
|
;; Tern is used for completion
|
||||||
(add-hook 'js2-mode-hook 'tern-mode)
|
(add-hook 'js2-mode-hook 'tern-mode)
|
||||||
|
|
||||||
|
(defun activate-js2-mode ()
|
||||||
|
;; Company list override
|
||||||
|
(add-to-list (make-local-variable 'company-backends)
|
||||||
|
'(company-tern company-yasnippet)))
|
||||||
|
|
||||||
|
(add-hook 'js2-mode-hook 'activate-js2-mode)
|
||||||
|
|
||||||
|
(defun activate-web-mode ()
|
||||||
|
;; Company list override
|
||||||
|
(add-to-list (make-local-variable 'company-backends)
|
||||||
|
'(company-web-html company-yasnippet)))
|
||||||
|
|
||||||
|
(add-hook 'web-mode-hook 'activate-web-mode)
|
||||||
|
|
|
||||||
2
init.el
2
init.el
|
|
@ -106,6 +106,7 @@
|
||||||
(load "~/.emacs.d/06company-yasnippet.el")
|
(load "~/.emacs.d/06company-yasnippet.el")
|
||||||
(load "~/.emacs.d/07projectile.el")
|
(load "~/.emacs.d/07projectile.el")
|
||||||
(load "~/.emacs.d/08purpose.el")
|
(load "~/.emacs.d/08purpose.el")
|
||||||
|
(load "~/.emacs.d/08ctags.el")
|
||||||
(load "~/.emacs.d/09ispell.el")
|
(load "~/.emacs.d/09ispell.el")
|
||||||
(load "~/.emacs.d/10themes.el")
|
(load "~/.emacs.d/10themes.el")
|
||||||
|
|
||||||
|
|
@ -114,6 +115,7 @@
|
||||||
(load "~/.emacs.d/20ruby.el")
|
(load "~/.emacs.d/20ruby.el")
|
||||||
(load "~/.emacs.d/20web.el")
|
(load "~/.emacs.d/20web.el")
|
||||||
(load "~/.emacs.d/20elixir.el")
|
(load "~/.emacs.d/20elixir.el")
|
||||||
|
(load "~/.emacs.d/20erlang.el")
|
||||||
(load "~/.emacs.d/20sh.el")
|
(load "~/.emacs.d/20sh.el")
|
||||||
(load "~/.emacs.d/20rust.el")
|
(load "~/.emacs.d/20rust.el")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue