emacs/20ruby.el
Maciej Szlosarczyk d3c2c17ff9
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
2019-04-08 11:23:36 +03:00

53 lines
1.8 KiB
EmacsLisp

;; Require Enhanced Ruby Mode
(require 'enh-ruby-mode)
;; Refresh tags in Ruby projects
(defun ruby-refresh-etags ()
"Recreate ctags for Ruby."
(interactive)
(message "Starting ctags process")
(start-process-shell-command "ctags" "*ctags*"
(format "ctags -e -R --languages=ruby -f %sTAGS %s. $(bundle list --paths)"
(projectile-project-root) (projectile-project-root)))
(set-process-sentinel (get-process "ctags") 'ctags-process-callback))
;; Ruby specific key bindings
(define-key enh-ruby-mode-map (kbd "C-c E") 'ruby-refresh-etags)
(define-key enh-ruby-mode-map (kbd "C-c \\") 'nil)
(add-hook 'ruby-mode-hook 'enh-ruby-mode)
(add-hook 'enh-ruby-mode-hook 'rspec-mode)
(add-hook 'enh-ruby-mode-hook 'ruby-end-mode)
(eval-after-load 'rspec-mode
'(rspec-install-snippets))
(defun activate-ruby-mode ()
"All things for ruby mode."
(set-indent 2)
;; Set column enforcement at 80 for normal projects, and at 100 for work
(if (string-match-p "internetee" (buffer-file-name))
(column-enforce-n 100)
(column-enforce-n 80))
;; Do not insert magic encoding comment at the begining of each file
(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)
;;; ERB specific things
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(setq web-mode-extra-auto-pairs
'(("erb" . (("<%" "%>")
("beg" "end")))
))