From 86010edc5234d0f7dd46d455d0a5b3789e4cd350 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Sat, 23 Apr 2016 13:25:14 +0430 Subject: [PATCH] ruby plugin improved --- fg42 | 2 +- lib/extensions/ruby.el | 2 ++ lib/extensions/ruby/init.el | 1 + lib/extensions/ruby/setup.el | 37 +++++++++++++++++++++++++++++++++--- lib/fg42/base.el | 2 +- 5 files changed, 39 insertions(+), 5 deletions(-) diff --git a/fg42 b/fg42 index 7fb0df8..9795983 100755 --- a/fg42 +++ b/fg42 @@ -1,7 +1,7 @@ #! /bin/sh #export FG42_HOME=--PATH-- -export FG42_HOME=$HOME/src/FG42/FG42 +export FG42_HOME=$HOME/src/FG42 #emacs -Q --no-splash --name FG42 --title FG42 -q -l --PATH--/fg42-config.el "$@" emacs-snapshot --name FG42 -q --no-site-file --no-site-lisp --no-splash --title FG42 -l $FG42_HOME/fg42-config.el "$@" diff --git a/lib/extensions/ruby.el b/lib/extensions/ruby.el index 65a4cad..9e04ae9 100644 --- a/lib/extensions/ruby.el +++ b/lib/extensions/ruby.el @@ -18,6 +18,8 @@ (depends-on 'projectile-rails) (depends-on 'robe) (depends-on 'yari) +(depends-on 'ggtags) +(depends-on 'rake) ;; Extension ------------------------------------- (extension ruby diff --git a/lib/extensions/ruby/init.el b/lib/extensions/ruby/init.el index db746a1..9292b79 100644 --- a/lib/extensions/ruby/init.el +++ b/lib/extensions/ruby/init.el @@ -7,6 +7,7 @@ (setup-general-ruby-editor) (setup-inf-ruby) (setup-bundler) + (setup-rake) (global-set-key (kbd "M-.") 'my-find-tag) diff --git a/lib/extensions/ruby/setup.el b/lib/extensions/ruby/setup.el index dfa9316..c18cbdd 100644 --- a/lib/extensions/ruby/setup.el +++ b/lib/extensions/ruby/setup.el @@ -1,3 +1,4 @@ +;;; Code: ;; Functions ------------------------------------------------- ;;;###autoload @@ -16,6 +17,36 @@ (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)) +;;;###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)) + ;;;###autoload (defun setup-inf-ruby() "Setup inf-ruby and Robe" @@ -65,7 +96,7 @@ ;;;###autoload (defun visit-project-tags () (interactive) - (let ((tags-file (concat (projectile-project-root) "TAGS"))) + (let ((tags-file (concat (projectile-project-root) "tags"))) (visit-tags-table tags-file) (message (concat "Loaded " tags-file)))) @@ -75,7 +106,7 @@ (interactive) (message "building project tags") (let ((root (projectile-project-root))) - (shell-command (concat "ctags -e -R . $(bundle list --paths) --extra=+fq --exclude=db --exclude=test --exclude=.git --exclude=public -f " root "TAGS " root))) + (shell-command (concat "ctags -e -R . $(bundle list --paths) --extra=+fq --exclude=db --exclude=test --exclude=.git --exclude=public -f " root "tags " root))) (visit-project-tags) (message "tags built successfully")) @@ -84,7 +115,7 @@ (interactive) (if (file-exists-p (concat (projectile-project-root) "TAGS")) (visit-project-tags) - (build-ctags)) + (build-ctag-file)) (etags-select-find-tag-at-point)) (provide 'extensions/ruby/setup) diff --git a/lib/fg42/base.el b/lib/fg42/base.el index 579cacd..29a9589 100644 --- a/lib/fg42/base.el +++ b/lib/fg42/base.el @@ -56,7 +56,7 @@ local should be 't' if theme is on FG42 it self" ;;;###autoload (defun env (&rest args) - "setup environment variables given as params" + "setup environment variables given as params." (require 'seq) (let ((pairs (seq-partition args 2))) (dolist (pair pairs)