Commit 021430f4 authored by Charles A. Roelli's avatar Charles A. Roelli Committed by Eli Zaretskii

New commands: find-library-other-window, find-library-other-frame

* lisp/emacs-lisp/find-func.el (find-library-other-window)
(find-library-other-frame): New commands to complement the
existing 'find-library' command.  (Bug#26712)
(read-library-name): New function to read a library name.
* etc/NEWS: Mention 'find-library-other-window' and
parent 1cbbecee
......@@ -356,6 +356,9 @@ use the local Emacs to edit remote files via Tramp. See the node
** The new variable 'eval-expression-print-maximum-character' prevents
large integers from being displayed as characters.
** Two new commands for finding the source code of Emacs Lisp
libraries: 'find-library-other-window' and 'find-library-other-frame'.
* Editing Changes in Emacs 26.1
......@@ -271,13 +271,21 @@ TYPE should be nil to find a function, or `defvar' to find a variable."
(cons (current-buffer) (match-beginning 0))))
(defun find-library (library &optional other-window)
(defun find-library (library)
"Find the Emacs Lisp source of LIBRARY.
LIBRARY should be a string (the name of the library). If the
optional OTHER-WINDOW argument (i.e., the command argument) is
specified, pop to a different window before displaying the
Interactively, prompt for LIBRARY using the one at or near point."
(interactive (list (read-library-name)))
(switch-to-buffer (find-file-noselect (find-library-name library)))
(run-hooks 'find-function-after-hook)))
(defun read-library-name ()
"Read and return a library name, defaulting to the one near point.
A library name is the filename of an Emacs Lisp library located
in a directory under `load-path' (or `find-function-source-path',
if non-nil)."
(let* ((dirs (or find-function-source-path load-path))
(suffixes (find-library-suffixes))
(table (apply-partially 'locate-file-completion-table
......@@ -297,17 +305,31 @@ buffer."
(thing-at-point 'symbol))))
(when (and def (not (test-completion def table)))
(setq def nil))
(completing-read (if def
(format "Library name (default %s): " def)
"Library name: ")
table nil nil nil nil def)
table nil nil nil nil def)))
(defun find-library-other-window (library)
"Find the Emacs Lisp source of LIBRARY in another window.
See `find-library' for more details."
(interactive (list (read-library-name)))
(switch-to-buffer-other-window (find-file-noselect
(find-library-name library)))
(run-hooks 'find-function-after-hook)))
(defun find-library-other-frame (library)
"Find the Emacs Lisp source of LIBRARY in another frame.
See `find-library' for more details."
(interactive (list (read-library-name)))
(funcall (if other-window
(find-file-noselect (find-library-name library)))
(switch-to-buffer-other-frame (find-file-noselect
(find-library-name library)))
(run-hooks 'find-function-after-hook)))
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment