Skip to content

Instantly share code, notes, and snippets.

@rummelonp
Last active August 29, 2015 14:06
Show Gist options
  • Save rummelonp/eee20639f3fdb3797d90 to your computer and use it in GitHub Desktop.
Save rummelonp/eee20639f3fdb3797d90 to your computer and use it in GitHub Desktop.
(require 'vc-git)
(require 'anything-config)
(defgroup anything-rails nil
"anything for rails"
:prefix "anything-rails:"
:group 'anything)
(defun anything-rails:root ()
(vc-git-root default-directory))
(defun anything-rails:ls (buffer &rest args)
(apply 'vc-git-command buffer 0 nil "ls-files" args))
(defun anything-rails:candidates (what args &optional root)
(let* ((root (or root
(anything-attr 'default-directory)
(anything-rails:root)))
(buffer-name (format " *anything candidates:%s:%s*" root what))
(buffer (get-buffer-create buffer-name)))
(anything-attrset 'default-directory root)
(let ((default-directory root))
(apply 'anything-rails:ls buffer "--full-name" args))
(anything-candidate-buffer buffer)
(anything-candidates-in-buffer)))
(defun anything-rails:source (what args &optional root repository)
(let ((name (concat (format "Rails %s" (capitalize (format "%s" what)))
(or (and repository (format " in %s" repository)) ""))))
`((name . ,name)
(candidates . (lambda ()
(anything-rails:candidates ',what ',args ,root)))
(type . file)
(display-to-real . (lambda (name)
(expand-file-name name (anything-attr 'default-directory)))))))
(defvar anything-rails:model-source nil)
(setq anything-rails:model-source
(anything-rails:source 'model '("app/models")))
(defvar anything-rails:controller-source nil)
(setq anything-rails:controller-source
(anything-rails:source 'controller '("app/controllers")))
(defvar anything-rails:view-source nil)
(setq anything-rails:view-source
(anything-rails:source 'view '("app/views")))
(defvar anything-rails:migration-source nil)
(setq anything-rails:migration-source
(anything-rails:source 'migration '("db/migrate")))
(defvar anything-rails:helper-source nil)
(setq anything-rails:helper-source
(anything-rails:source 'helper '("app/helpers")))
(defvar anything-rails:test-source nil)
(setq anything-rails:test-source
(anything-rails:source 'test '("test")))
(defvar anything-rails:spec-source nil)
(setq anything-rails:spec-source
(anything-rails:source 'spec '("spec")))
(defvar anything-rails:fixture-source nil)
(setq anything-rails:fixture-source
(anything-rails:source 'fixture '("test/fixtures"
"spec/fixtures"
"test/factories"
"spec/factories")))
(defvar anything-rails:sources nil)
(setq anything-rails:sources
'(anything-rails:model-source
anything-rails:controller-source
anything-rails:view-source
anything-rails:migration-source
anything-rails:helper-source
anything-rails:test-source
anything-rails:spec-source
anything-rails:fixture-source))
(defun anything-rails ()
(interactive)
(anything-other-buffer anything-rails:sources
"*anything for rails*"))
(provide 'anything-rails)
(:name anything-rails
:type http
:url "https://gist.githubusercontent.com/mitukiii/eee20639f3fdb3797d90/raw/anything-rails.el"
:depends anything)
@rummelonp
Copy link
Author

設定例

;; anything-rails 読み込み
(require 'anything-rails)

;; 関数定義してみたり
(defun anything-rails:model ()
  (interactive)
  (anything-other-buffer anything-rails:model-source
                         "*anything for rails model*"))

(defun anything-rails:controller ()
  (interactive)
  (anything-other-buffer anything-rails:controller-source
                         "*anything for rails controller*"))

(defun anything-rails:view ()
  (interactive)
  (anything-other-buffer anything-rails:view-source
                         "*anything for rails view*"))

;; anything の source に Decorator 追加してみたり
(defvar anything-rails:decorator-source nil)
(setq anything-rails:decorator-source
      (anything-rails:source 'decorator '("app/decorators")))
(add-to-list 'anything-rails:sources anything-rails:decorator-source))

;; 好きなキーに関数をバインドして君だけの最強の開発環境を作ろう
(define-key global-map (kbd "C-c ;") 'anything-rails)
(define-key global-map (kbd "C-c m") 'anything-rails:model)
(define-key global-map (kbd "C-c c") 'anything-rails:controller)
(define-key global-map (kbd "C-c v") 'anything-rails:view)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment