2016-04-23 09:55:14 +01:00
|
|
|
;;; Code:
|
2015-07-09 10:31:51 +01:00
|
|
|
;; Functions -------------------------------------------------
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun insert-arrow ()
|
|
|
|
(interactive)
|
|
|
|
(delete-horizontal-space t)
|
|
|
|
(insert " => "))
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun setup-bundler ()
|
|
|
|
"Setup bundler and its keybindings"
|
|
|
|
(require 'bundler)
|
2016-01-09 08:21:20 +00:00
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c b i") 'bundle-install)
|
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c b u") 'bundle-update)
|
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c b e") 'bundle-exec)
|
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c b o") 'bundle-open)
|
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c b c") 'bundle-console))
|
2015-07-09 10:31:51 +01:00
|
|
|
|
2016-04-23 09:55:14 +01:00
|
|
|
;;;###autoload
|
|
|
|
(defun rake-test ()
|
|
|
|
(interactive)
|
|
|
|
(let* ((root (or (rake--root) (user-error "Rakefile not found"))))
|
|
|
|
(rake--with-root root (compile "rake test" 'rake-compilation-mode))))
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun rake-migrate ()
|
|
|
|
(interactive)
|
|
|
|
(let* ((root (or (rake--root) (user-error "Rakefile not found"))))
|
|
|
|
(rake--with-root root (compile "rake db:migrate" 'rake-compilation-mode))))
|
|
|
|
|
|
|
|
(defun rake-seed ()
|
|
|
|
(interactive)
|
|
|
|
(let* ((root (or (rake--root) (user-error "Rakefile not found"))))
|
|
|
|
(rake--with-root root (compile "rake db:seed" 'rake-compilation-mode))))
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun setup-rake ()
|
|
|
|
"Setup bundler and its keybindings"
|
|
|
|
(require 'rake)
|
|
|
|
|
|
|
|
(eval-after-load 'projectile
|
|
|
|
'(setq rake-completion-system projectile-completion-system))
|
|
|
|
|
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c c r") 'rake)
|
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c c t") 'rake-test)
|
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c c m") 'rake-migrate)
|
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c c s") 'rake-seed))
|
|
|
|
|
2015-07-09 10:31:51 +01:00
|
|
|
;;;###autoload
|
2015-07-09 12:08:23 +01:00
|
|
|
(defun setup-inf-ruby()
|
2015-07-09 10:31:51 +01:00
|
|
|
"Setup inf-ruby and Robe"
|
|
|
|
|
|
|
|
;; Inf Ruby configuration
|
|
|
|
(autoload 'inf-ruby "inf-ruby" "Run an inferior Ruby process" t)
|
|
|
|
(add-hook 'after-init-hook 'inf-ruby-switch-setup)
|
|
|
|
|
|
|
|
(global-set-key (kbd "C-c r r") 'inf-ruby)
|
|
|
|
|
|
|
|
;; TODO: We don't need this if pry setup is present in ~/.irbrc
|
2016-01-09 08:21:20 +00:00
|
|
|
(setq irbparams " --inf-enh-ruby-mode -r irb/completion")
|
2015-07-09 10:31:51 +01:00
|
|
|
(setq irbpath (rbenv--expand-path "shims" "irb"))
|
|
|
|
(setq irb (concat irbpath irbparams))
|
|
|
|
(add-to-list 'inf-ruby-implementations (cons "ruby" irb))
|
2015-07-09 10:37:08 +01:00
|
|
|
(inf-ruby-minor-mode t))
|
2015-07-09 10:31:51 +01:00
|
|
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun ruby-code-completion ()
|
|
|
|
"Configure Robe and inf-ruby for code completion."
|
|
|
|
(with-ability ruby-code-completion
|
|
|
|
(robe-mode t)
|
2016-04-23 10:44:02 +01:00
|
|
|
(define-key enh-ruby-mode-map (kbd "\C-c M-j") 'robe-start)
|
|
|
|
(push 'company-robe company-backends)
|
2015-07-09 10:31:51 +01:00
|
|
|
(eval-after-load 'company
|
|
|
|
'(add-to-list 'company-backends 'company-inf-ruby))))
|
|
|
|
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun setup-general-ruby-editor ()
|
|
|
|
"Setup basic utilities to write Ruby code"
|
|
|
|
(local-set-key [f1] 'yari)
|
|
|
|
|
2015-07-09 10:40:58 +01:00
|
|
|
;; Install rspec snippets after it loaded
|
2015-07-09 10:31:51 +01:00
|
|
|
(eval-after-load 'rspec-mode
|
|
|
|
'(rspec-install-snippets))
|
|
|
|
|
|
|
|
(ruby-tools-mode t)
|
2016-01-09 08:21:20 +00:00
|
|
|
(define-key enh-ruby-mode-map (kbd "C-.") 'insert-arrow)
|
2015-07-09 10:31:51 +01:00
|
|
|
(hs-minor-mode t)
|
|
|
|
;; Hack autocomplete so it treat :symbole and symbole the same way
|
|
|
|
(modify-syntax-entry ?: "."))
|
|
|
|
|
2016-02-02 13:25:26 +00:00
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun visit-project-tags ()
|
|
|
|
(interactive)
|
2016-04-23 09:55:14 +01:00
|
|
|
(let ((tags-file (concat (projectile-project-root) "tags")))
|
2016-02-02 13:25:26 +00:00
|
|
|
(visit-tags-table tags-file)
|
|
|
|
(message (concat "Loaded " tags-file))))
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun build-ctag-file ()
|
|
|
|
"Create the ctag of the ruby project"
|
|
|
|
(interactive)
|
|
|
|
(message "building project tags")
|
|
|
|
(let ((root (projectile-project-root)))
|
2016-04-23 09:55:14 +01:00
|
|
|
(shell-command (concat "ctags -e -R . $(bundle list --paths) --extra=+fq --exclude=db --exclude=test --exclude=.git --exclude=public -f " root "tags " root)))
|
2016-02-02 13:25:26 +00:00
|
|
|
(visit-project-tags)
|
|
|
|
(message "tags built successfully"))
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun my-find-tag ()
|
|
|
|
(interactive)
|
|
|
|
(if (file-exists-p (concat (projectile-project-root) "TAGS"))
|
|
|
|
(visit-project-tags)
|
2016-04-23 09:55:14 +01:00
|
|
|
(build-ctag-file))
|
2016-02-02 13:25:26 +00:00
|
|
|
(etags-select-find-tag-at-point))
|
|
|
|
|
2016-12-12 08:01:15 +00:00
|
|
|
(setq erb-regex (concat "\\([^\\\"']+\\.\\)\\(" (rx (or "jpg" "png" "gif" "svg")) "\\)"))
|
|
|
|
|
|
|
|
;;;###autoload
|
|
|
|
(defun erbify-image-paths ()
|
|
|
|
(interactive)
|
|
|
|
(message erb-regex)
|
|
|
|
(replace-regexp erb-regex "<%= image_path '\\1\\2' %>"))
|
|
|
|
|
|
|
|
|
2015-07-09 10:31:51 +01:00
|
|
|
(provide 'extensions/ruby/setup)
|