mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
New command ruby-find-library-file
* lisp/progmodes/ruby-mode.el (ruby-find-library-file): New command. (ruby-mode-map): Add binding for it.
This commit is contained in:
parent
b367a3dee1
commit
27f5627104
2 changed files with 25 additions and 0 deletions
|
|
@ -155,6 +155,7 @@ This should only be called after matching against `ruby-here-doc-beg-re'."
|
|||
(define-key map (kbd "M-C-n") 'ruby-end-of-block)
|
||||
(define-key map (kbd "C-c {") 'ruby-toggle-block)
|
||||
(define-key map (kbd "C-c '") 'ruby-toggle-string-quotes)
|
||||
(define-key map (kbd "C-c C-f") 'ruby-find-library-file)
|
||||
map)
|
||||
"Keymap used in Ruby mode.")
|
||||
|
||||
|
|
@ -1802,6 +1803,28 @@ If the result is do-end block, it will always be multiline."
|
|||
(format "%s%s%s" string-quote content string-quote))
|
||||
(goto-char orig-point)))))
|
||||
|
||||
(defun ruby-find-library-file (&optional feature-name)
|
||||
"Visit a library file denoted by FEATURE-NAME.
|
||||
FEATURE-NAME is a relative file name, file extension is optional.
|
||||
This commands delegates to 'gem which', which searches both
|
||||
installed gems and the standard library. When called
|
||||
interactively, defaults to the feature name in the 'require'
|
||||
statement around point."
|
||||
(interactive)
|
||||
(unless feature-name
|
||||
(let ((init (save-excursion
|
||||
(forward-line 0)
|
||||
(when (looking-at "require [\"']\\(.?*\\)[\"']")
|
||||
(match-string 1)))))
|
||||
(setq feature-name (read-string "Feature name: " init))))
|
||||
(let ((out
|
||||
(substring
|
||||
(shell-command-to-string (concat "gem which " feature-name))
|
||||
0 -1)))
|
||||
(if (string-match-p "\\`ERROR" out)
|
||||
(user-error "%s" out)
|
||||
(find-file out))))
|
||||
|
||||
(eval-and-compile
|
||||
(defconst ruby-percent-literal-beg-re
|
||||
"\\(%\\)[qQrswWxIi]?\\([[:punct:]]\\)"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue