forked from FG42/FG42
106 lines
3.6 KiB
EmacsLisp
106 lines
3.6 KiB
EmacsLisp
(require 'extensions/ruby/setup)
|
|
|
|
;; Functions -------------------------------------------------
|
|
|
|
;;;###autoload
|
|
(defun enh-ruby-mode-callback ()
|
|
(setup-general-ruby-editor)
|
|
(setup-inf-ruby)
|
|
(setup-bundler)
|
|
(setup-rake)
|
|
|
|
(global-set-key (kbd "M-.") 'my-find-tag)
|
|
|
|
(with-ability rbenv
|
|
(require 'rbenv)
|
|
(global-rbenv-mode))
|
|
|
|
(with-ability auto-pair
|
|
(ruby-electric-mode t)))
|
|
|
|
;;;###autoload
|
|
(defun extensions/ruby-initialize ()
|
|
"Web development plugin initialization."
|
|
|
|
(require 'enh-ruby-mode)
|
|
(autoload 'enh-ruby-mode "enh-ruby-mode" "Major mode for ruby files" t)
|
|
|
|
(with-ability global-rbenv
|
|
(require 'rbenv)
|
|
(global-rbenv-mode))
|
|
|
|
|
|
|
|
(ability indent-guide
|
|
"Show indent guides."
|
|
(add-hook 'ruby-mode-hook 'indent-guide-mode)
|
|
(add-hook 'web-mode-hook 'indent-guide-mode)
|
|
(ability recursive-indent-guides ()
|
|
"Show recursive indents guides."
|
|
(setq indent-guide-recursive t))
|
|
|
|
(ability delayed-indent-guides ()
|
|
"Show indent guides with a delay."
|
|
(setq indent-guide-delay 0.3)))
|
|
|
|
(ability ruby-editor ('flycheck)
|
|
"Gives FG42 the ability to edit ruby files."
|
|
|
|
(dolist (spec '(("\\.rb$" . enh-ruby-mode)
|
|
("[vV]agrantfile$" . enh-ruby-mode)
|
|
("[gG]emfile$" . enh-ruby-mode)
|
|
("[pP]uppetfile$" . enh-ruby-mode)
|
|
("\\.rake$" . enh-ruby-mode)
|
|
("\\.rabl$" . enh-ruby-mode)
|
|
("[cC]apfile$" . enh-ruby-mode)
|
|
("\\.gemspec$" . enh-ruby-mode)
|
|
("\\.builder$" . enh-ruby-mode)))
|
|
(add-to-list 'auto-mode-alist spec))
|
|
|
|
(setq enh-ruby-use-encoding-map nil
|
|
;; don't deep indent arrays and hashes
|
|
enh-ruby-deep-indent-paren nil)
|
|
|
|
;; Autostart yaml-mode
|
|
(add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode))
|
|
(add-hook 'yaml-mode-hook
|
|
'(lambda ()
|
|
(define-key yaml-mode-map "\C-m" 'newline-and-indent)))
|
|
|
|
;; Add our callback to enh-ruby-mode-hook
|
|
(add-hook 'enh-ruby-mode-hook 'enh-ruby-mode-callback)
|
|
|
|
;; configure hs-minor-mode
|
|
(add-to-list 'hs-special-modes-alist
|
|
'(enh-ruby-mode
|
|
"\\(class\\|def\\|do\\|if\\)" "\\(end\\)" "#"
|
|
(lambda (arg) (ruby-end-of-block)) nil))
|
|
|
|
(add-hook 'enh-ruby-mode-hook 'projectile-mode))
|
|
|
|
(ability ruby-code-completion ('code-completion)
|
|
"Auto complete ruby code on demand."
|
|
(add-to-list 'enh-ruby-mode-hook 'ruby-code-completion))
|
|
|
|
(ability slim-mode ()
|
|
"Gives FG42 the ability to edit slim templates."
|
|
(add-to-list 'auto-mode-alist '("\\.slim$" . slim-mode)))
|
|
|
|
(ability haml-mode ()
|
|
"Gives FG42 the ability to edit haml templates."
|
|
(add-to-list 'auto-mode-alist '("\\.haml$" . haml-mode)))
|
|
|
|
(ability cucumber ()
|
|
"Gives FG42 the ability to works with Cucumber."
|
|
(autoload 'feature-mode "feature-mode"
|
|
"Emacs mode for editing Cucumber plain text stories")
|
|
(add-to-list 'auto-mode-alist '("\.feature$" . feature-mode)))
|
|
|
|
(ability rails-projects ()
|
|
"Gives FG42 the ability to manage rails projects."
|
|
(add-hook 'projectile-mode-hook 'projectile-rails-on))
|
|
(message "'ruby' extension has been initialized"))
|
|
|
|
|
|
(provide 'extensions/ruby/init)
|