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:
Maciej 2019-04-08 11:23:36 +03:00
parent 4d3683eb4a
commit d3c2c17ff9
Signed by: maciej
GPG key ID: 41D62D42D3B0D765
10 changed files with 141 additions and 57 deletions

View file

@ -23,62 +23,26 @@
(global-company-mode 1)
(yas-global-mode 1)
(setq-default company-backends '(company-tern ;; Javascript
(company-yasnippet ;; Snippets for all programming languages
company-etags) ;; Ctags for any language
company-elisp ; Emacs Lisp
company-clang company-cmake ;; C
company-lsp ;; Language server protocol
company-ansible ;; Ansible
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
))
;; Absolute defaults for company mode
(setq-default company-backends
'((company-files ; files & directory
company-keywords ; keywords
company-capf
)
(company-dabbrev company-abbrev)
))
(setq-default company-lsp-cache-candidates 1 ;; Cache LSP results
company-lsp-async 1 ;; Fetch LSP results asynchronously
(setq-default
company-lsp-cache-candidates 1 ;; Cache LSP results
company-lsp-async 1 ;; Fetch LSP results asynchronously
)
;;; Yasnippet configuration
(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 "<f13>") 'company-yasnippet)
;; 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 ())
(define-key text-mode-map (kbd "<f13>") 'company-indent-or-complete-common)
(define-key text-mode-map (kbd "TAB") 'company-indent-or-complete-common)