summaryrefslogtreecommitdiff
path: root/lisp/ibuf-ext.el
diff options
context:
space:
mode:
authorJohn Paul Wallington <jpw@pobox.com>2002-12-09 23:46:12 +0000
committerJohn Paul Wallington <jpw@pobox.com>2002-12-09 23:46:12 +0000
commit80543b03beb9302152c348ec2e8e7407312b4a80 (patch)
tree4c5d86fe021df84c7bc72f67d6819153c16c317c /lisp/ibuf-ext.el
parente920614afcd11c3f66f5708c46e9b1af2318cf3a (diff)
downloademacs-80543b03beb9302152c348ec2e8e7407312b4a80.tar.gz
* ibuffer.el (ibuffer-mode): If `show-paren-mode' is enabled,
disable it buffer-locally. (ibuffer-mouse-popup-menu): Use `=' instead of `eq' to compare `eventpt' and point. * ibuf-ext.el (ibuffer-remove-duplicates): New function. (ibuffer-set-filter-groups-by-mode): Use it instead of `delete-duplicates' so we don't require cl library at runtime. (ibuffer-insert-filter-group-before): Don't use `position' so we don't require cl library at runtime. * chistory.el (command-history-mode): Add interactive spec. Improve doc string.
Diffstat (limited to 'lisp/ibuf-ext.el')
-rw-r--r--lisp/ibuf-ext.el32
1 files changed, 25 insertions, 7 deletions
diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el
index 19389abf984..c568f2c3fe7 100644
--- a/lisp/ibuf-ext.el
+++ b/lisp/ibuf-ext.el
@@ -47,6 +47,17 @@
(setq alist (delete entry alist)))
alist))
+;; borrowed from Gnus
+(defun ibuffer-remove-duplicates (list)
+ "Return a copy of LIST with duplicate elements removed."
+ (let ((new nil)
+ (tail list))
+ (while tail
+ (or (member (car tail) new)
+ (setq new (cons (car tail) new)))
+ (setq tail (cdr tail)))
+ (nreverse new)))
+
(defun ibuffer-split-list (ibuffer-split-list-fn ibuffer-split-list-elts)
(let ((hip-crowd nil)
(lamers nil))
@@ -545,7 +556,7 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'."
(mapcar (lambda (mode)
(cons (format "%s" mode) `((mode . ,mode))))
(let ((modes
- (delete-duplicates
+ (ibuffer-remove-duplicates
(mapcar (lambda (buf) (with-current-buffer buf major-mode))
(buffer-list)))))
(if ibuffer-view-ibuffer
@@ -646,13 +657,20 @@ See also `ibuffer-kill-filter-group'."
#'kill-line arg)))
(defun ibuffer-insert-filter-group-before (newgroup group)
- (let ((pos (or (position group (mapcar #'car ibuffer-filter-groups)
- :test #'equal)
- (length ibuffer-filter-groups))))
- (cond ((<= pos 0)
- (push newgroup ibuffer-filter-groups))
- ((= pos (length ibuffer-filter-groups))
+ (let* ((found nil)
+ (pos (let ((groups (mapcar #'car ibuffer-filter-groups))
+ (res 0))
+ (while groups
+ (if (equal (car groups) group)
+ (setq found t
+ groups nil)
+ (incf res)
+ (setq groups (cdr groups))))
+ res)))
+ (cond ((not found)
(setq ibuffer-filter-groups (nconc ibuffer-filter-groups (list newgroup))))
+ ((zerop pos)
+ (push newgroup ibuffer-filter-groups))
(t
(let ((cell (nthcdr pos ibuffer-filter-groups)))
(setf (cdr cell) (cons (car cell) (cdr cell)))