Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100644 392 lines (346 sloc) 14.177 kb
bfb626a1 »
2008-05-13 Initial import of rinari 2
1 ;;; rinari.el --- Rinari Is Not A Rails IDE
2
3 ;; Copyright (C) 2008 Phil Hagelberg
4
5 ;; Author: Phil Hagelberg
6 ;; URL: http://rinari.rubyforge.org
7 ;; Version: 2.0
8 ;; Created: 2006-11-10
9 ;; Keywords: ruby, rails
10 ;; EmacsWiki: Rinari
11
12 ;; This file is NOT part of GNU Emacs.
13
14 ;;; License:
15
16 ;; This program is free software; you can redistribute it and/or modify
17 ;; it under the terms of the GNU General Public License as published by
18 ;; the Free Software Foundation; either version 3, or (at your option)
19 ;; any later version.
20 ;;
21 ;; This program is distributed in the hope that it will be useful,
22 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
23 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 ;; GNU General Public License for more details.
25 ;;
26 ;; You should have received a copy of the GNU General Public License
27 ;; along with GNU Emacs; see the file COPYING. If not, write to the
28 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
29 ;; Boston, MA 02110-1301, USA.
30
31 ;;; Commentary:
32
33 ;; Rinari Is Not A Ruby IDE.
34
35 ;; Well, ok it kind of is. Rinari is a set of Emacs Lisp modes that is
36 ;; aimed towards making Emacs into a top-notch Ruby and Rails
37 ;; development environment.
38
39 ;; Copy the directory containing this file into your Emacs lisp
40 ;; directory, assumed here to be ~/.emacs.d. Add these lines of code
41 ;; to your .emacs file:
42
43 ;; (add-to-list 'load-path "~/.emacs.d/rinari")
44 ;; (require 'rinari)
45
e6f3043c »
2008-07-02 minor doco tweaks
46 ;; See TODO file in this directory.
bfb626a1 »
2008-05-13 Initial import of rinari 2
47
48 ;;; Code:
49 (require 'ruby-mode)
50 (require 'inf-ruby)
9c51fe76 » eschulte
2008-06-24 cleaner, smaller, and more useful...
51 (require 'ruby-compilation)
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
52 (require 'cl)
bfb626a1 »
2008-05-13 Initial import of rinari 2
53 (require 'toggle)
54 (require 'find-file-in-project)
ec565edb » Eric Schulte
2008-06-17 functions all start with 'rails', reverted to origional find-file-in-…
55
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
56 (defcustom rinari-browse-url-func
57 'browse-url
58 "`browse-url' function used by `rinari-browse-view'.")
bfb626a1 »
2008-05-13 Initial import of rinari 2
59
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
60 (defvar rinari-ruby-hash-regexp
61 "\\(:[^[:space:]]*?\\)[[:space:]]*\\(=>[[:space:]]*[\"\']?\\([^[:space:]]*?\\)[\"\']?[[:space:]]*\\)?[,){}\n]"
62 "Regexp to match subsequent key => value pairs of a ruby hash.")
9c51fe76 » eschulte
2008-06-24 cleaner, smaller, and more useful...
63
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
64 (defun rinari-ruby-hash-to-alist ()
65 "Returns an alist of the key => value pairs on consecutive
66 lines starting at point."
67 (let (alist
68 (end (save-excursion
69 (re-search-forward "[^,{(]$" nil t)
70 (+ 1 (point)))))
71 (save-excursion
72 (while (and (< (point) end)
73 (re-search-forward rinari-ruby-hash-regexp end t))
74 (setf alist
75 (cons (cons (match-string 1)
76 (if (> (length (match-string 3)) 0)
77 (match-string 3)
78 "true"))
79 alist)))) alist))
b12e8dbb » eschulte
2008-06-23 all function now prefix'd w/rinari
80
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
81 (defun rinari-alist-from-view ()
82 "Return an alist of the options directing to an action from the
83 current view. Taken from forms or links."
bfb626a1 »
2008-05-13 Initial import of rinari 2
84 (interactive)
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
85 (save-excursion
86 (let ((form_re (regexp-opt '("form_remote_tag" "form_tag")))
87 (link_re (regexp-opt '("link_to" "link_to_remote"))))
88 (and (or (re-search-backward form_re nil t) (re-search-forward link_re nil t)
89 (re-search-backward link_re nil t) (re-search-backward form_re nil t))
90 (rinari-ruby-hash-to-alist)))))
bfb626a1 »
2008-05-13 Initial import of rinari 2
91
b12e8dbb » eschulte
2008-06-23 all function now prefix'd w/rinari
92 (defun rinari-path-to-view (controller function)
0b51df21 » Eric Schulte
2008-06-16 rails-find-view now follows redirect_to and render statements
93 "Takes a CONTROLLER and FUNCTION and returns the path to the
94 view at which CONTROLLER#FUNCTION points."
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
95 (unless (and controller function)
96 (error "can't find view without controller and function"))
0b51df21 » Eric Schulte
2008-06-16 rails-find-view now follows redirect_to and render statements
97 (let (path)
09ae6cbf » Eric Schulte
2008-06-16 rails-scripts.el is finished for now, progress of using redirects to …
98 (save-excursion
0b51df21 » Eric Schulte
2008-06-16 rails-find-view now follows redirect_to and render statements
99 (find-file (concat controller "_controller.rb"))
100 (goto-char (point-max))
41f635cb » Eric Schulte
2008-06-21 parsimony
101 ;; if we can find function in this controller
0b51df21 » Eric Schulte
2008-06-16 rails-find-view now follows redirect_to and render statements
102 (if (re-search-backward (format "def[[:space:]]+%s" function) nil t)
ec565edb » Eric Schulte
2008-06-17 functions all start with 'rails', reverted to origional find-file-in-…
103 (let ((start (point)) render renders view)
104 (ruby-forward-sexp)
41f635cb » Eric Schulte
2008-06-21 parsimony
105 ;; collect all the render/redirects
ec565edb » Eric Schulte
2008-06-17 functions all start with 'rails', reverted to origional find-file-in-…
106 (while (re-search-backward "re\\(?:direct_to\\|nder\\)[^_]" start t)
5d906bd8 » Eric Schulte
2008-06-17 rinari is now a minor mode
107 (setf renders (cons (cons (replace-regexp-in-string
108 "[[:space:]\n\r]" ""
109 (thing-at-point 'line)) (point)) renders)))
ec565edb » Eric Schulte
2008-06-17 functions all start with 'rails', reverted to origional find-file-in-…
110 (if renders
41f635cb » Eric Schulte
2008-06-21 parsimony
111 ;; if method contains render/redirects select one and follow it
e6f3043c »
2008-07-02 minor doco tweaks
112 (let ((render (if (equal 1 (length renders))
ec565edb » Eric Schulte
2008-06-17 functions all start with 'rails', reverted to origional find-file-in-…
113 (caar renders)
114 (completing-read "follow which render: "
115 (mapcar 'car renders)))))
116 (goto-char (cdr (assoc render renders)))
41f635cb » Eric Schulte
2008-06-21 parsimony
117 ;; read the hashed arguments to the redirect
b12e8dbb » eschulte
2008-06-23 all function now prefix'd w/rinari
118 (let* ((redirect (rinari-ruby-hash-to-alist))
ec565edb » Eric Schulte
2008-06-17 functions all start with 'rails', reverted to origional find-file-in-…
119 (new-function (or (cdr (assoc ":action" redirect))
120 (if (assoc ":partial" redirect)
121 (concat "_" (cdr (assoc ":partial" redirect))))
122 function))
123 (new-controller (or (cdr (assoc ":controller" redirect))
124 controller)))
41f635cb » Eric Schulte
2008-06-21 parsimony
125 ;; if we are pointed at a new action, check it for
126 ;; redirects otherwise return a path
ec565edb » Eric Schulte
2008-06-17 functions all start with 'rails', reverted to origional find-file-in-…
127 (if (and (equalp new-function function)
128 (equalp new-controller controller))
129 (setf path (concat controller "/" function))
b12e8dbb » eschulte
2008-06-23 all function now prefix'd w/rinari
130 (setf path (rinari-path-to-view new-controller new-function)))))
ec565edb » Eric Schulte
2008-06-17 functions all start with 'rails', reverted to origional find-file-in-…
131 (if (search-backward "render_partial" start t)
132 (setf path (concat controller "/" "_" function)))))))
0b51df21 » Eric Schulte
2008-06-16 rails-find-view now follows redirect_to and render statements
133 (or path (concat controller "/" function))))
134
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
135 (defun rinari-name-components (name)
136 "Helper for view toggling"
137 (let ((case-fold-search nil))
138 (labels ((rnc (in)
139 (let ((ind (string-match "\\([A-Z][a-z0-9]+\\)[A-Z]" name in)))
140 (if (eq ind nil)
141 nil
142 (cons (downcase (match-string 1 name)) (rnc (match-end 1)))))))
143 (rnc 0))))
0b51df21 » Eric Schulte
2008-06-16 rails-find-view now follows redirect_to and render statements
144
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
145 (defun rinari-make-dirname (comps)
146 "Helper for view toggling"
147 (reduce #'(lambda (str next) (concat str (concat "_" next))) comps))
148
149 (defadvice find-file-in-project (around find-file-in-rinari-project activate)
150 "Wrap `find-file-in-project' to use `rinari-root' as the base of
151 the project."
152 (let ((ffip-project-root (rinari-root)))
153 ad-do-it))
154
155 (defadvice ruby-run-w/compilation (around rinari-run-w/compilation activate)
156 "Set default directory to the root of the rails application
157 before running ruby processes."
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
158 (let ((default-directory (or (rinari-root) default-directory)))
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
159 ad-do-it
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
160 (rinari-launch)))
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
161
162 (defadvice ruby-rake-w/compilation (around rinari-rake-w/compilation activate)
163 "Set default directory to the root of the rails application
164 before running rake processes."
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
165 (let ((default-directory (or (rinari-root) default-directory)))
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
166 ad-do-it
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
167 (rinari-launch)))
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
168
169 ;;;###autoload
170 (defun rinari-rake (&optional task edit)
171 (interactive "P")
172 (ruby-rake-w/compilation task edit))
173
174 (defun rinari-root (&optional dir)
175 (or dir (setq dir default-directory))
176 (if (file-exists-p (concat dir "config/environment.rb"))
177 dir
178 (unless (equal dir "/")
179 (rinari-root (expand-file-name (concat dir "../"))))))
180
181 (defun rinari-console (&optional arg)
182 "Run script/console. Use a prefix argument to edit command line options."
183 (interactive "P")
184 (let* ((script (concat (rinari-root) "script/console"))
185 (command (if arg
186 (read-string "Run Ruby: " (concat script " "))
187 script)))
188 (run-ruby command)
189 (save-excursion (pop-to-buffer "*ruby*")
190 (set (make-local-variable 'inferior-ruby-first-prompt-pattern) "^>> ")
191 (set (make-local-variable 'inferior-ruby-prompt-pattern) "^>> ")
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
192 (rinari-launch))))
09ae6cbf » Eric Schulte
2008-06-16 rails-scripts.el is finished for now, progress of using redirects to …
193
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
194 (defun rinari-server ()
195 "Run script/server."
bfb626a1 »
2008-05-13 Initial import of rinari 2
196 (interactive)
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
197 (ruby-run-w/compilation (concat (rinari-root) "/script/server")))
198
199 (defun rinari-find-view ()
200 "View toggling for rails"
201 (interactive)
202 (let* ((fn (ruby-add-log-current-method))
203 (function (and fn (string-match "#\\(.*\\)" fn) (match-string 1 fn)))
204 (controller (and fn (rinari-make-dirname (rinari-name-components fn))))
205 (path (rinari-path-to-view controller function))
206 (appdir (concat (rinari-root) "/app/")))
207 (find-file (concat appdir "views/" path ".rhtml"))))
bfb626a1 »
2008-05-13 Initial import of rinari 2
208
b12e8dbb » eschulte
2008-06-23 all function now prefix'd w/rinari
209 (defun rinari-find-action ()
bfb626a1 »
2008-05-13 Initial import of rinari 2
210 (interactive)
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
211 (let* ((view-alist (rinari-alist-from-view))
212 (action (or (cdr (assoc ":action" view-alist))
b446c479 » Eric Schulte
2008-06-18 cleaned up, ready for pull-request
213 (file-name-sans-extension
214 (file-name-nondirectory buffer-file-name))))
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
215 (controller (or (cdr (assoc ":controller" view-alist))
e6f3043c »
2008-07-02 minor doco tweaks
216 (file-name-nondirectory
b446c479 » Eric Schulte
2008-06-18 cleaned up, ready for pull-request
217 (expand-file-name ".")))))
b12e8dbb » eschulte
2008-06-23 all function now prefix'd w/rinari
218 (find-file (concat (rinari-root)
b446c479 » Eric Schulte
2008-06-18 cleaned up, ready for pull-request
219 "app/controllers/"
220 controller
221 "_controller.rb"))
222 (goto-char (point-min))
bfb626a1 »
2008-05-13 Initial import of rinari 2
223 (search-forward-regexp (concat "def *" action))
224 (recenter)))
225
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
226 (defun rinari-test-function (&optional edit-command)
227 "Test the current ruby function. If current function is not a
228 test, then try to jump to the related test using `toggle-buffer'."
229 (interactive "P")
230 (or (string-match "test" (or (ruby-add-log-current-method)
231 (file-name-nondirectory (buffer-file-name))))
232 (toggle-buffer))
233 (let* ((funname (ruby-add-log-current-method))
234 (fn (and funname
235 (string-match "#\\(.*\\)" funname)
236 (match-string 1 funname)))
237 (path (buffer-file-name))
238 (default-command (if fn
239 (concat path " --name /" fn "/")
240 path))
241 (command (if edit-command
242 (read-string "Run w/Compilation: " default-command)
243 default-command)))
244 (if path (ruby-run-w/compilation command)
245 (message "no test available"))))
bfb626a1 »
2008-05-13 Initial import of rinari 2
246
e6f3043c »
2008-07-02 minor doco tweaks
247 ;; TODO: maybe replace this with a snippets package; needs research
b12e8dbb » eschulte
2008-06-23 all function now prefix'd w/rinari
248 (defun rinari-insert-erb-skeleton (no-equals)
bfb626a1 »
2008-05-13 Initial import of rinari 2
249 (interactive "P")
250 (insert "<%")
251 (unless no-equals (insert "="))
252 (insert " %>")
253 (backward-char 3))
254
b12e8dbb » eschulte
2008-06-23 all function now prefix'd w/rinari
255 (defun rinari-browse-view (arg)
256 "Browse the url of the current view with `rinari-browse-url-func'
41f635cb » Eric Schulte
2008-06-21 parsimony
257 which default to `browse-url'. With a prefix argument allows
258 editing of the url."
259 (interactive "P")
260 (let* ((path (buffer-file-name))
261 (view (if (string-match "app/views/\\(.+\\)\.r[ebhtml]+" path)
262 (match-string 1 path)))
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
263 (port (or () ;; guess port (or not)
41f635cb » Eric Schulte
2008-06-21 parsimony
264 "3000"))
68bf2c17 » eschulte
2008-06-27 cleaned up, ready for dissemination
265 (server (or () ;; guess server (or not)
41f635cb » Eric Schulte
2008-06-21 parsimony
266 "localhost"))
267 (base (concat server ":" port "/" view))
268 (url (if arg
269 (read-from-minibuffer "url: "
270 (concat base "/"))
271 base)))
b12e8dbb » eschulte
2008-06-23 all function now prefix'd w/rinari
272 (eval (list rinari-browse-url-func url))))
41f635cb » Eric Schulte
2008-06-21 parsimony
273
7db851b6 » eschulte
2008-06-30 added ruby-compilation minor mode, added rinari-sql for browsing rail…
274 (defun rinari-parse-yaml ()
275 (let ((start (point))
276 (end (save-excursion (re-search-forward "^$" nil t) (point)))
277 alist)
278 (while (and (< (point) end)
279 (re-search-forward "^ *\\(.*\\): \\(.*\\)$" nil t))
280 (setf alist (cons (cons (match-string 1) (match-string 2)) alist)))
281 alist))
282
283 (defun rinari-sql ()
284 "Browse the application's database."
285 (interactive)
286 (let* ((environment (or (getenv "RAILS_ENV") "development"))
287 (database-alist (save-excursion
288 (with-temp-buffer
289 (insert-file (concat (rinari-root)
290 "/config/database.yml"))
291 (goto-char (point-min))
292 (re-search-forward (concat "^" environment ":"))
293 (rinari-parse-yaml))))
294 (adapter (or (cdr (assoc "adapter" database-alist)) "sqlite"))
295 (sql-user (or (cdr (assoc "username" database-alist)) "root"))
296 (sql-password (or (cdr (assoc "password" database-alist)) ""))
297 (sql-database (or (cdr (assoc "database" database-alist))
298 (concat (file-name-nondirectory (rinari-root))
299 "_" environment)))
300 (server (or (cdr (assoc "host" database-alist)) "localhost"))
301 (port (cdr (assoc "port" database-alist)))
302 (sql-server (if port (concat server ":" port) server)))
303 (if (string-match "sqlite" adapter) (setf adapter "sqlite"))
304 (eval (list (intern (concat "sql-" adapter)))) (rinari-launch)))
305
ad549043 » eschulte
2008-07-02 added rinari-rgrep for searching the rails project
306 (defun rinari-rgrep (&optional arg)
307 "Search through the rails project for a string or `regexp'.
308 With optional prefix argument just run `rgrep'."
309 (interactive "P")
310 (if arg (call-interactively 'rgrep)
311 (rgrep (read-from-minibuffer "search for: ") "*.rb *.rhtml *.yml" (rinari-root))))
312
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
313 (defun rinari-run-what (&optional arg)
314 "Allows the user to run a function selected from amongst all of
315 the rinari functions displaying their names and keybindings."
316 (interactive "P")
317 (let* ((rinari-commands (mapcar (lambda (el)
318 (format "%s (\\C-c'%s)"
319 (caddr el) (car el)))
320 rinari-minor-mode-keybindings))
321 (rinari-command (car (split-string
322 (completing-read "run rinari function: "
323 rinari-commands)))))
324 (call-interactively (intern rinari-command))))
325
5d906bd8 » Eric Schulte
2008-06-17 rinari is now a minor mode
326 ;;--------------------------------------------------------------------
9aab1376 » Eric Schulte
2008-06-13 first commit, code is workable but not ready for public use.changes i…
327 ;;
5d906bd8 » Eric Schulte
2008-06-17 rinari is now a minor mode
328 ;; minor mode and keymaps
e6f3043c »
2008-07-02 minor doco tweaks
329 ;;
5d906bd8 » Eric Schulte
2008-06-17 rinari is now a minor mode
330 (defvar rinari-minor-mode-map
331 (let ((map (make-sparse-keymap)))
332 map)
333 "Key map for Rinari minor mode.")
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
334
335 (defvar rinari-minor-mode-keybindings
7db851b6 » eschulte
2008-06-30 added ruby-compilation minor mode, added rinari-sql for browsing rail…
336 '(("\t" . 'rinari-run-what) ("o" . 'toggle-buffer) ("s" . 'rinari-sql)
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
337 ("e" . 'rinari-insert-erb-skeleton) ("t" . 'rinari-test-function)
338 ("r" . 'rinari-rake) ("c" . 'rinari-console) ("b" . 'rinari-browse-view)
ad549043 » eschulte
2008-07-02 added rinari-rgrep for searching the rails project
339 ("v" . 'rinari-find-view) ("a" . 'rinari-find-action) ("w" . 'rinari-server)
340 ("g" . 'rinari-rgrep))
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
341 "alist mapping of keys to functions in `rinari-minor-mode'")
342
343 (mapcar (lambda (el)
344 (eval `(define-key rinari-minor-mode-map ,(format "\C-c'%s" (car el)) ,(cdr el))))
345 rinari-minor-mode-keybindings)
5d906bd8 » Eric Schulte
2008-06-17 rinari is now a minor mode
346
b446c479 » Eric Schulte
2008-06-18 cleaned up, ready for pull-request
347 (defun rinari-launch ()
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
348 "Run `rinari-minor-mode' if inside of a rails projcect,
349 otherwise turn `rinari-minor-mode' off if it is on."
9c51fe76 » eschulte
2008-06-24 cleaner, smaller, and more useful...
350 (interactive)
351 ;; customize toggle.el for rinari
352 (add-to-list
353 'toggle-mapping-styles
354 '(rinari . (("app/controllers/\\1.rb#\\2" . "test/functional/\\1_test.rb#test_\\2")
355 ("app/controllers/\\1.rb" . "test/functional/\\1_test.rb")
356 ("app/models/\\1.rb#\\2" . "test/unit/\\1_test.rb#test_\\2")
357 ("app/models/\\1.rb" . "test/unit/\\1_test.rb")
358 ("lib/\\1.rb#\\2" . "test/unit/test_\\1.rb#test_\\2")
359 ("lib/\\1.rb" . "test/unit/test_\\1.rb"))))
360 (setq toggle-mapping-style 'rinari)
361 (setq toggle-mappings (toggle-style toggle-mapping-style))
f485e0d7 » eschulte
2008-07-02 changing toggle.el so that it works outside of ruby files (and will h…
362 (setq toggle-which-function-command 'ruby-add-log-current-method)
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
363 (if (rinari-root)
364 (unless rinari-minor-mode (rinari-minor-mode t))
365 (if rinari-minor-mode (rinari-minor-mode))))
5d906bd8 » Eric Schulte
2008-06-17 rinari is now a minor mode
366
41f635cb » Eric Schulte
2008-06-21 parsimony
367 (add-hook 'ruby-mode-hook
368 (lambda () (rinari-launch)))
b446c479 » Eric Schulte
2008-06-18 cleaned up, ready for pull-request
369
7db851b6 » eschulte
2008-06-30 added ruby-compilation minor mode, added rinari-sql for browsing rail…
370 (add-hook 'yaml-mode-hook
371 (lambda () (rinari-launch)))
372
b446c479 » Eric Schulte
2008-06-18 cleaned up, ready for pull-request
373 (add-hook 'mumamo-after-change-major-mode-hook
41f635cb » Eric Schulte
2008-06-21 parsimony
374 (lambda () (rinari-launch)))
5d906bd8 » Eric Schulte
2008-06-17 rinari is now a minor mode
375
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
376 (add-hook 'dired-mode-hook
377 (lambda () (rinari-launch)))
378
379 (defadvice cd (after rinari-on-cd activate)
380 "Active/Deactive rinari-minor-node when changing into and out
7db851b6 » eschulte
2008-06-30 added ruby-compilation minor mode, added rinari-sql for browsing rail…
381 of raills project directories."
f505236b » eschulte
2008-06-27 stabilized minor-mode toggling and buffer poping, and added rinari-ru…
382 (rinari-launch))
383
5d906bd8 » Eric Schulte
2008-06-17 rinari is now a minor mode
384 (define-minor-mode rinari-minor-mode
385 "Enable Rinari minor mode providing Emacs support for working
386 with the Ruby on Rails framework."
387 nil
388 " Rinari"
389 rinari-minor-mode-map)
bfb626a1 »
2008-05-13 Initial import of rinari 2
390
391 (provide 'rinari)
392 ;;; rinari.el ends here
Something went wrong with that request. Please try again.