changeset 48778:d414c281a629

* 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.
author John Paul Wallington <jpw@pobox.com>
date Mon, 09 Dec 2002 23:46:12 +0000
parents f6687dde33ff
children c75e2941ff7e
files lisp/ChangeLog lisp/chistory.el lisp/ibuf-ext.el lisp/ibuffer.el
diffstat 4 files changed, 50 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Mon Dec 09 20:24:40 2002 +0000
+++ b/lisp/ChangeLog	Mon Dec 09 23:46:12 2002 +0000
@@ -1,3 +1,19 @@
+2002-12-09  John Paul Wallington  <jpw@shootybangbang.com>
+
+	* 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.
+
 2002-12-09  Richard M. Stallman  <rms@gnu.org>
 
 	* isearch.el (isearch-no-upper-case-p): \\ only quotes one character.
--- a/lisp/chistory.el	Mon Dec 09 20:24:40 2002 +0000
+++ b/lisp/chistory.el	Mon Dec 09 23:46:12 2002 +0000
@@ -126,7 +126,11 @@
 	(command-history-mode)))))
 
 (defun command-history-mode ()
-  "Major mode for listing and repeating recent commands."
+  "Major mode for listing and repeating recent commands.
+
+Keybindings:
+\\{command-history-map}"
+  (interactive)
   (Command-history-setup)
   (setq major-mode 'command-history-mode)
   (setq mode-name "Command History")
--- a/lisp/ibuf-ext.el	Mon Dec 09 20:24:40 2002 +0000
+++ b/lisp/ibuf-ext.el	Mon Dec 09 23:46:12 2002 +0000
@@ -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 @@
         (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 @@
 	       #'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)
+  (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))
-	  ((= pos (length ibuffer-filter-groups))
-	   (setq ibuffer-filter-groups (nconc ibuffer-filter-groups (list newgroup))))
 	  (t
 	   (let ((cell (nthcdr pos ibuffer-filter-groups)))
 	     (setf (cdr cell) (cons (car cell) (cdr cell)))
--- a/lisp/ibuffer.el	Mon Dec 09 20:24:40 2002 +0000
+++ b/lisp/ibuffer.el	Mon Dec 09 23:46:12 2002 +0000
@@ -883,7 +883,7 @@
 	     (save-excursion
 	       (popup-menu ibuffer-mode-operate-map)))))
       (setq buffer-read-only t)
-      (if (eq eventpt (point))
+      (if (= eventpt (point))
 	  (goto-char origpt)))))
 
 (defun ibuffer-skip-properties (props direction)
@@ -2387,6 +2387,9 @@
   ;; This makes things less ugly for Emacs 21 users with a non-nil
   ;; `show-trailing-whitespace'.
   (setq show-trailing-whitespace nil)
+  ;; disable `show-paren-mode' buffer-locally
+  (if (bound-and-true-p show-paren-mode)
+      (set (make-local-variable 'show-paren-mode) nil))
   (set (make-local-variable 'revert-buffer-function)
        #'ibuffer-update)
   (set (make-local-variable 'ibuffer-sorting-mode)