diff options
author | John Paul Wallington <jpw@pobox.com> | 2004-10-23 10:11:17 +0000 |
---|---|---|
committer | John Paul Wallington <jpw@pobox.com> | 2004-10-23 10:11:17 +0000 |
commit | 33a584e6d6d2f7fc2b1ea35bced5ea625d043a39 (patch) | |
tree | f06583ffa6cd2fab4ed06936d8e8b8f89a34189d /lisp/ibuf-ext.el | |
parent | d0ee2ed32e696fa020bc1eb16f42d3c09e6f8bbd (diff) | |
download | emacs-33a584e6d6d2f7fc2b1ea35bced5ea625d043a39.tar.gz |
(ibuffer-jump-to-buffer): Read buffer name in interactive spec rather
than use `interactive-p' in body of function.
Diffstat (limited to 'lisp/ibuf-ext.el')
-rw-r--r-- | lisp/ibuf-ext.el | 92 |
1 files changed, 45 insertions, 47 deletions
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index 5d24964362a..1c77e409ae4 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -1237,53 +1237,51 @@ hidden group filter, open it. If `ibuffer-jump-offer-only-visible-buffers' is non-nil, only offer visible buffers in the completion list. Calling the command with a prefix argument reverses the meaning of that variable." - (interactive (list nil)) - (let ((only-visible ibuffer-jump-offer-only-visible-buffers)) - (when current-prefix-arg - (setq only-visible (not only-visible))) - (if only-visible - (let ((table (mapcar #'(lambda (x) - (buffer-name (car x))) - (ibuffer-current-state-list)))) - (when (null table) - (error "No buffers!")) - (when (interactive-p) - (setq name (completing-read "Jump to buffer: " - table nil t)))) - (when (interactive-p) - (setq name (read-buffer "Jump to buffer: " nil t)))) - (when (not (string= "" name)) - (let (buf-point) - ;; Blindly search for our buffer: it is very likely that it is - ;; not in a hidden filter group. - (ibuffer-map-lines #'(lambda (buf marks) - (when (string= (buffer-name buf) name) - (setq buf-point (point)) - nil)) - t nil) - (when (and - (null buf-point) - (not (null ibuffer-hidden-filter-groups))) - ;; We did not find our buffer. It must be in a hidden filter - ;; group, so go through all hidden filter groups to find it. - (catch 'found - (dolist (group ibuffer-hidden-filter-groups) - (ibuffer-jump-to-filter-group group) - (ibuffer-toggle-filter-group) - (ibuffer-map-lines #'(lambda (buf marks) - (when (string= (buffer-name buf) name) - (setq buf-point (point)) - nil)) - t group) - (if buf-point - (throw 'found nil) - (ibuffer-toggle-filter-group))))) - (if (null buf-point) - ;; Still not found even though we expanded all hidden filter - ;; groups: that must be because it's hidden by predicate: - ;; we won't bother trying to display it. - (error "No buffer with name %s" name) - (goto-char buf-point)))))) + (interactive (list + (let ((only-visible ibuffer-jump-offer-only-visible-buffers)) + (when current-prefix-arg + (setq only-visible (not only-visible))) + (if only-visible + (let ((table (mapcar #'(lambda (x) + (buffer-name (car x))) + (ibuffer-current-state-list)))) + (when (null table) + (error "No buffers!")) + (completing-read "Jump to buffer: " + table nil t)) + (read-buffer "Jump to buffer: " nil t))))) + (when (not (string= "" name)) + (let (buf-point) + ;; Blindly search for our buffer: it is very likely that it is + ;; not in a hidden filter group. + (ibuffer-map-lines #'(lambda (buf marks) + (when (string= (buffer-name buf) name) + (setq buf-point (point)) + nil)) + t nil) + (when (and + (null buf-point) + (not (null ibuffer-hidden-filter-groups))) + ;; We did not find our buffer. It must be in a hidden filter + ;; group, so go through all hidden filter groups to find it. + (catch 'found + (dolist (group ibuffer-hidden-filter-groups) + (ibuffer-jump-to-filter-group group) + (ibuffer-toggle-filter-group) + (ibuffer-map-lines #'(lambda (buf marks) + (when (string= (buffer-name buf) name) + (setq buf-point (point)) + nil)) + t group) + (if buf-point + (throw 'found nil) + (ibuffer-toggle-filter-group))))) + (if (null buf-point) + ;; Still not found even though we expanded all hidden filter + ;; groups: that must be because it's hidden by predicate: + ;; we won't bother trying to display it. + (error "No buffer with name %s" name) + (goto-char buf-point))))) ;;;###autoload (defun ibuffer-diff-with-file () |