diff --git a/modules/module-ruby.el b/modules/module-ruby.el index 200971b84..b8bc47d39 100644 --- a/modules/module-ruby.el +++ b/modules/module-ruby.el @@ -1,21 +1,18 @@ ;;; module-ruby.el -;; Silence the byte-compiler -(eval-when-compile (require 'defuns-quickrun)) - (use-package ruby-mode :mode ("\\.rb$" "\\.rake$" "\\.gemspec$" "\\.?pryrc$" "/\\(Gem\\|Cap\\|Vagrant\\|Rake\\)file$") :interpreter "ruby" :init (add-hook 'ruby-mode-hook 'flycheck-mode) - (define-docset! ruby-mode "rb,ruby,rubygem") - (define-builder! ruby-mode "rake %s" "Rakefile") + (define-docset! ruby-mode "rb,ruby,rubygem") + (define-builder! ruby-mode "rake %s" "Rakefile") (define-env-command! ruby-mode "ruby --version | cut -d' ' -f2") - :config - ;; Formatting - (setq ruby-deep-indent-paren t) + (define-company-backend! ruby-mode (dabbrev-code)) + :config + (setq ruby-deep-indent-paren t) ; Formatting (add-hook! ruby-mode (electric-indent-local-mode +1) (setq narf-electric-indent-words '("else" "end" "elseif"))) @@ -23,17 +20,19 @@ ;; Don't interfere with my custom RET behavior (define-key ruby-mode-map [?\n] nil) + ;; Highlight doc comments (use-package yard-mode :init (add-hook 'ruby-mode-hook 'yard-mode)) - (use-package robe - :commands (robe-mode robe-start ruby-load-file company-robe) - :init - (add-hook! ruby-mode - (narf|ruby-load-file) - (add-hook 'after-save-hook 'narf|ruby-load-file nil t)) - :config - (require 'company-robe) - (define-company-backend! ruby-mode (robe))) + ;; FIXME: Doesn't work + ;; (use-package robe + ;; :commands (robe-mode robe-start ruby-load-file company-robe) + ;; :init + ;; (add-hook! ruby-mode + ;; (narf|ruby-load-file) + ;; (add-hook 'after-save-hook 'narf|ruby-load-file nil t)) + ;; (define-company-backend! ruby-mode (robe)) + ;; :config + ;; (require 'company-robe)) (use-package ruby-refactor :init (add-hook 'ruby-mode-hook 'emr-initialize) @@ -58,28 +57,11 @@ (refactor-extract-to-let "extract to let" t) (refactor-convert-post-conditional "convert post conditional" t))))) -;; Rakefiles ;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-minor-mode rake-mode - "Buffer local minor mode for rake files" - :lighter " Rake" :keymap (make-sparse-keymap) - (add-yas-minor-mode! 'rake-mode)) -(associate! rake-mode :match "\\(/Rakefile\\|\\.rake\\)$") -(associate! rake-mode :files ("Rakefile")) - -;; Vagrantfiles ;;;;;;;;;;;;;;;;;;;;;;;; -(define-minor-mode vagrant-mode - "Buffer local minor mode for vagrant files" - :lighter " Va" :keymap (make-sparse-keymap) - (add-yas-minor-mode! 'vagrant-mode)) -(associate! vagrant-mode :files ("Vagrantfile")) - (use-package rspec-mode - :defer t :mode ("/\\.rspec$" . text-mode) :init (associate! rspec-mode :match "/\\.rspec$") (associate! rspec-mode :in (ruby-mode yaml-mode) :files ("spec/")) - (defvar rspec-mode-verifiable-map (make-sparse-keymap)) (defvar evilmi-ruby-match-tags '((("unless" "if") ("elsif" "else") "end") @@ -100,10 +82,17 @@ :commands (inf-ruby inf-ruby-console-auto) :init (define-repl! ruby-mode inf-ruby) - :config (evil-set-initial-state 'inf-ruby-mode 'emacs) + :config (require 'company-inf-ruby) (define-company-backend! inf-ruby-mode (inf-ruby))) +;; +(define-project-type! rake "rake" + :files ("Rakefile")) + +(define-project-type! vagrant "vagrant" + :files ("Vagrantfile")) + (provide 'module-ruby) ;;; module-ruby.el ends here