Replace RVM and Robe with Ctags

This commit is contained in:
Maciej 2019-04-02 09:45:40 +03:00
parent d6994b931b
commit 078fa05f0e
Signed by: maciej
GPG key ID: 41D62D42D3B0D765
2 changed files with 44 additions and 26 deletions

View file

@ -23,21 +23,19 @@
(global-company-mode 1) (global-company-mode 1)
(yas-global-mode 1) (yas-global-mode 1)
(setq-default company-backends '(company-capf ;; Backend for default complete-at-point function (setq-default company-backends '(company-tern ;; Javascript
company-tern ;; Javascript (company-yasnippet ;; Snippets for all programming languages
(company-keywords ;; Keyword list for all languages company-etags) ;; Ctags for any language
company-yasnippet ;; Snippets for all programming languages
company-etags ;; Ctags
)
company-elisp ; Emacs Lisp company-elisp ; Emacs Lisp
company-clang company-cmake ;; C company-clang company-cmake ;; C
company-lsp ;; Language server protocol company-lsp ;; Language server protocol
company-robe ;; Ruby
company-ansible ;; Ansible company-ansible ;; Ansible
alchemist-company ;; Elixir alchemist-company ;; Elixir
company-racer ;; Rust company-racer ;; Rust
company-web-html ;; HTML company-web-html ;; HTML
(company-dabbrev-code company-dabbrev company-abbrev) ;; abbrev (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 company-files ; files & directory
)) ))
@ -52,3 +50,35 @@
(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-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 ())

View file

@ -1,37 +1,25 @@
;; Start rvm before starting robe ;; Require Enhanced Ruby Mode
(require 'enh-ruby-mode) (require 'enh-ruby-mode)
(defadvice inf-ruby-console-auto (before activate-rvm-for-robe activate)
(rvm-activate-corresponding-ruby))
;; Refresh tags in Ruby projects ;; Refresh tags in Ruby projects
(defun ruby-refresh-etags () (defun ruby-refresh-etags ()
"Recreate ctags for ruby" "Recreate ctags for Ruby."
(interactive) (interactive)
(message "Refreshing Ruby ctags.") (message "Starting ctags process")
(start-process-shell-command "ctags" "*ctags*"
(shell-command (format "ctags -e -R --languages=ruby -f %sTAGS %s. $(bundle list --paths)"
(format "ctags -e -R --languages=ruby --exclude=.git --exclude=log -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))
(visit-tags-table (format "%sTAGS" (projectile-project-root)))
(message "Refresh finished."))
;; Ruby specific key bindings ;; Ruby specific key bindings
(define-key enh-ruby-mode-map (kbd "C-c j") 'robe-jump)
(define-key enh-ruby-mode-map (kbd "C-c E") 'ruby-refresh-etags) (define-key enh-ruby-mode-map (kbd "C-c E") 'ruby-refresh-etags)
(define-key enh-ruby-mode-map (kbd "C-c \\") 'nil) (define-key enh-ruby-mode-map (kbd "C-c \\") 'nil)
(add-hook 'ruby-mode-hook 'enh-ruby-mode) (add-hook 'ruby-mode-hook 'enh-ruby-mode)
(add-hook 'enh-ruby-mode-hook 'robe-mode)
(add-hook 'enh-ruby-mode-hook 'rspec-mode) (add-hook 'enh-ruby-mode-hook 'rspec-mode)
(add-hook 'enh-ruby-mode-hook 'ruby-end-mode) (add-hook 'enh-ruby-mode-hook 'ruby-end-mode)
(eval-after-load 'company
'(push 'company-robe company-backends))
(eval-after-load 'rspec-mode (eval-after-load 'rspec-mode
'(rspec-install-snippets)) '(rspec-install-snippets))