Mercurial > emacs
comparison lisp/ibuf-ext.el @ 45128:18c2dfafd097
(ibuffer-kill-filter-group): Test for killing "Default" group earlier.
Push killed group on `ibuffer-filter-group-kill-ring'.
(ibuffer-kill-line): Document. Don't push killed group ourselves.
(ibuffer-yank-filter-group): Renamed from `ibuffer-yank'.
(ibuffer-insert-filter-group-before): New function, broken out from
`ibuffer-yank'.
(ibuffer-yank): Now just call `ibuffer-yank-filter-group'.
author | Colin Walters <walters@gnu.org> |
---|---|
date | Sun, 05 May 2002 00:12:17 +0000 |
parents | f365c85cce40 |
children | b266348db08f |
comparison
equal
deleted
inserted
replaced
45127:ee4a77a2b6b7 | 45128:18c2dfafd097 |
---|---|
598 (goto-char (cdr it)) | 598 (goto-char (cdr it)) |
599 (error "No filter group with name %s" name)))) | 599 (error "No filter group with name %s" name)))) |
600 | 600 |
601 ;;;###autoload | 601 ;;;###autoload |
602 (defun ibuffer-kill-filter-group (name) | 602 (defun ibuffer-kill-filter-group (name) |
603 "Delete the filtering group named NAME." | 603 "Kill the filtering group named NAME. |
604 The group will be added to `ibuffer-filter-group-kill-ring'." | |
604 (interactive (list nil)) | 605 (interactive (list nil)) |
605 (when (interactive-p) | 606 (when (interactive-p) |
606 (setq name (completing-read "Kill filter group: " | 607 (setq name (completing-read "Kill filter group: " |
607 ibuffer-filter-groups nil t))) | 608 ibuffer-filter-groups nil t))) |
609 (when (equal name "Default") | |
610 (error "Can't kill default filtering group")) | |
608 (ibuffer-aif (assoc name ibuffer-filter-groups) | 611 (ibuffer-aif (assoc name ibuffer-filter-groups) |
609 (progn | 612 (progn |
613 (push (copy-tree it) ibuffer-filter-group-kill-ring) | |
610 (setq ibuffer-filter-groups (ibuffer-delete-alist | 614 (setq ibuffer-filter-groups (ibuffer-delete-alist |
611 name ibuffer-filter-groups)) | 615 name ibuffer-filter-groups)) |
612 (setq ibuffer-hidden-filter-groups | 616 (setq ibuffer-hidden-filter-groups |
613 (delete name ibuffer-hidden-filter-groups))) | 617 (delete name ibuffer-hidden-filter-groups))) |
614 (error "No filter group with name \"%s\"" name)) | 618 (error "No filter group with name \"%s\"" name)) |
615 (ibuffer-update nil t)) | 619 (ibuffer-update nil t)) |
616 | 620 |
617 ;;;###autoload | 621 ;;;###autoload |
618 (defun ibuffer-kill-line (&optional arg) | 622 (defun ibuffer-kill-line (&optional arg) |
623 "Kill the filtering group at point. | |
624 See also `ibuffer-kill-filter-group'." | |
619 (interactive "P") | 625 (interactive "P") |
620 (ibuffer-aif (save-excursion | 626 (ibuffer-aif (save-excursion |
621 (ibuffer-forward-line 0) | 627 (ibuffer-forward-line 0) |
622 (get-text-property (point) 'ibuffer-filter-group-name)) | 628 (get-text-property (point) 'ibuffer-filter-group-name)) |
623 (progn | 629 (progn |
624 (when (equal it "Default") | |
625 (error "Can't kill default filtering group")) | |
626 (push (copy-tree (assoc it ibuffer-filter-groups)) | |
627 ibuffer-filter-group-kill-ring) | |
628 (ibuffer-kill-filter-group it)) | 630 (ibuffer-kill-filter-group it)) |
629 (funcall (if (interactive-p) #'call-interactively #'funcall) | 631 (funcall (if (interactive-p) #'call-interactively #'funcall) |
630 #'kill-line arg))) | 632 #'kill-line arg))) |
631 | 633 |
632 ;;;###autoload | 634 (defun ibuffer-insert-filter-group-before (newgroup group) |
633 (defun ibuffer-yank (&optional arg) | 635 (let ((pos (or (position group (mapcar #'car ibuffer-filter-groups) |
634 (interactive "P") | 636 :test #'equal) |
637 (length ibuffer-filter-groups)))) | |
638 (cond ((<= pos 0) | |
639 (push newgroup ibuffer-filter-groups)) | |
640 ((= pos (length ibuffer-filter-groups)) | |
641 (setq ibuffer-filter-groups (nconc ibuffer-filter-groups (list newgroup)))) | |
642 (t | |
643 (let ((cell (nthcdr pos ibuffer-filter-groups))) | |
644 (setf (cdr cell) (cons (car cell) (cdr cell))) | |
645 (setf (car cell) newgroup)))))) | |
646 | |
647 ;;;###autoload | |
648 (defun ibuffer-yank () | |
649 "Yank the last killed filter group before group at point." | |
650 (interactive) | |
651 (ibuffer-yank-filter-group | |
652 (or (get-text-property (point) 'ibuffer-filter-group-name) | |
653 (get-text-property (point) 'ibuffer-filter-group) | |
654 (error "No filter group at point")))) | |
655 | |
656 ;;;###autoload | |
657 (defun ibuffer-yank-filter-group (name) | |
658 "Yank the last killed filter group before group named NAME." | |
659 (interactive (list nil)) | |
635 (unless ibuffer-filter-group-kill-ring | 660 (unless ibuffer-filter-group-kill-ring |
636 (error "ibuffer-filter-group-kill-ring is empty")) | 661 (error "ibuffer-filter-group-kill-ring is empty")) |
662 (when (and (not name) (interactive-p)) | |
663 (setq name (completing-read "Yank filter group before group: " | |
664 ibuffer-filter-groups nil t))) | |
637 (save-excursion | 665 (save-excursion |
638 (ibuffer-forward-line 0) | 666 (ibuffer-forward-line 0) |
639 (let* ((last-killed (pop ibuffer-filter-group-kill-ring)) | 667 (ibuffer-insert-filter-group-before (pop ibuffer-filter-group-kill-ring) |
640 (all-groups ibuffer-filter-groups) | 668 name)) |
641 (cur (or (get-text-property (point) 'ibuffer-filter-group-name) | |
642 (get-text-property (point) 'ibuffer-filter-group) | |
643 (last all-groups))) | |
644 (pos (or (position cur (mapcar #'car all-groups) :test #'equal) | |
645 (length all-groups)))) | |
646 (cond ((= pos 0) | |
647 (push last-killed ibuffer-filter-groups)) | |
648 ((= pos (length all-groups)) | |
649 (setq ibuffer-filter-groups | |
650 (nconc ibuffer-filter-groups (list last-killed)))) | |
651 (t | |
652 (let ((cell (nthcdr pos ibuffer-filter-groups))) | |
653 (setf (cdr cell) (cons (car cell) (cdr cell))) | |
654 (setf (car cell) last-killed)))))) | |
655 (ibuffer-update nil t)) | 669 (ibuffer-update nil t)) |
656 | 670 |
657 ;;;###autoload | 671 ;;;###autoload |
658 (defun ibuffer-save-filter-groups (name groups) | 672 (defun ibuffer-save-filter-groups (name groups) |
659 "Save all active filter groups GROUPS as NAME. | 673 "Save all active filter groups GROUPS as NAME. |