>>>>> Richard Stallman writes:
> On ttys, reducing clutter may be more important than presenting
> a consistent interface.
> That may be the right argument. I don't have a feel for what is
> best here.
I made some quick changes to test inclusion of inactive entries in
text menus. For what it's worth, I didn't find the extra entries
distracting. Others may disagree.
If anyone is interested in trying it out, I've attached a patch. This
may not be the cleanest implementation, but it works as far as I have
tested it. The menus should now look something like this:
n==>New File... (C-x C-f) o==>Open Recent
O==>Open File... d==>Open Directory... (C-x d)
i==>Insert File... (C-x i) c==>Close (current buffer)
---Save (current buffer) (C-x C-s)
s==>Save Buffer As... (C-x C-w) ---Revert Buffer
r==>Recover Crashed Session p==>Print Buffer
---Print Region P==>Postscript Print Buffer
---Postscript Print Region 0==>Postscript Print Buffer (B+W)
---Postscript Print Region (B+W) a==>a2ps (<f22>)
S==>Split Window (C-x 2) ---Unsplit Windows (C-x 1)
N==>New Frame (C-x 5 2) f==>New Frame on Display...
D==>Delete Frame (C-x 5 0) e==>Exit Emacs (C-x C-c)
Thanks.
Index: tmm.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/tmm.el,v
retrieving revision 1.40
diff -u -r1.40 tmm.el
--- tmm.el 13 May 2005 23:23:42 -0000 1.40
+++ tmm.el 16 May 2005 12:42:55 -0000
@@ -193,7 +193,14 @@
(eq (car-safe (cdr (car tail))) 'menu-item)))
(setq index-of-default (1+ index-of-default)))
(setq tail (cdr tail)))))
- (setq history (reverse (mapcar 'car tmm-km-list)))
+ (let ((prompt (concat "^." (regexp-quote tmm-mid-prompt))))
+ (setq history
+ (reverse (delq nil
+ (mapcar
+ (lambda (elt)
+ (if (string-match prompt (car elt))
+ (car elt)))
+ tmm-km-list)))))
(setq history-len (length history))
(setq history (append history history history history))
(setq tmm-c-prompt (nth (- history-len 1 index-of-default) history))
@@ -259,37 +266,44 @@
(defsubst tmm-add-one-shortcut (elt)
;; uses the free vars tmm-next-shortcut-digit and tmm-short-cuts
- (let* ((str (car elt))
- (paren (string-match "(" str))
- (pos 0) (word 0) char)
- (catch 'done ; ??? is this slow?
- (while (and (or (not tmm-shortcut-words) ; no limit on words
- (< word tmm-shortcut-words)) ; try n words
- (setq pos (string-match "\\w+" str pos)) ; get next word
- (not (and paren (> pos paren)))) ; don't go past "(binding.."
- (if (or (= pos 0)
- (/= (aref str (1- pos)) ?.)) ; avoid file extensions
- (let ((shortcut-style
- (if (listp tmm-shortcut-style) ; convert to list
- tmm-shortcut-style
- (list tmm-shortcut-style))))
- (while shortcut-style ; try upcase and downcase variants
- (setq char (funcall (car shortcut-style) (aref str pos)))
- (if (not (memq char tmm-short-cuts)) (throw 'done char))
- (setq shortcut-style (cdr shortcut-style)))))
- (setq word (1+ word))
- (setq pos (match-end 0)))
- (while (<= tmm-next-shortcut-digit ?9) ; no letter shortcut, pick a digit
- (setq char tmm-next-shortcut-digit)
- (setq tmm-next-shortcut-digit (1+ tmm-next-shortcut-digit))
- (if (not (memq char tmm-short-cuts)) (throw 'done char)))
- (setq char nil))
- (if char (setq tmm-short-cuts (cons char tmm-short-cuts)))
- (cons (concat (if char (concat (char-to-string char) tmm-mid-prompt)
- ;; keep them lined up in columns
- (make-string (1+ (length tmm-mid-prompt)) ?\ ))
- str)
- (cdr elt))))
+ (cond
+ ((eq (cddr elt) 'ignore)
+ (setcar elt (concat " "
+ (make-string (length tmm-mid-prompt) ?\-)
+ (car elt)))
+ elt)
+ (t
+ (let* ((str (car elt))
+ (paren (string-match "(" str))
+ (pos 0) (word 0) char)
+ (catch 'done ; ??? is this slow?
+ (while (and (or (not tmm-shortcut-words) ; no limit on words
+ (< word tmm-shortcut-words)) ; try n words
+ (setq pos (string-match "\\w+" str pos)) ; get next word
+ (not (and paren (> pos paren)))) ; don't go past "(binding.."
+ (if (or (= pos 0)
+ (/= (aref str (1- pos)) ?.)) ; avoid file extensions
+ (let ((shortcut-style
+ (if (listp tmm-shortcut-style) ; convert to list
+ tmm-shortcut-style
+ (list tmm-shortcut-style))))
+ (while shortcut-style ; try upcase and downcase variants
+ (setq char (funcall (car shortcut-style) (aref str pos)))
+ (if (not (memq char tmm-short-cuts)) (throw 'done char))
+ (setq shortcut-style (cdr shortcut-style)))))
+ (setq word (1+ word))
+ (setq pos (match-end 0)))
+ (while (<= tmm-next-shortcut-digit ?9) ; no letter shortcut, pick a digit
+ (setq char tmm-next-shortcut-digit)
+ (setq tmm-next-shortcut-digit (1+ tmm-next-shortcut-digit))
+ (if (not (memq char tmm-short-cuts)) (throw 'done char)))
+ (setq char nil))
+ (if char (setq tmm-short-cuts (cons char tmm-short-cuts)))
+ (cons (concat (if char (concat (char-to-string char) tmm-mid-prompt)
+ ;; keep them lined up in columns
+ (make-string (1+ (length tmm-mid-prompt)) ?\ ))
+ str)
+ (cdr elt))))))
;; This returns the old map.
(defun tmm-define-keys (minibuffer)
@@ -438,7 +452,7 @@
(setq km (and (eval visible) km)))
(setq enable (plist-get plist :enable))
(if enable
- (setq km (and (eval enable) km)))
+ (setq km (if (eval enable) km 'ignore)))
(and str
(consp (nth 3 elt))
(stringp (cdr (nth 3 elt))) ; keyseq cache
@@ -467,8 +481,7 @@
;; Verify that the command is enabled;
;; if not, don't mention it.
(when (and km (symbolp km) (get km 'menu-enable))
- (unless (eval (get km 'menu-enable))
- (setq km nil)))
+ (setq km (if (eval (get km 'menu-enable)) km 'ignore)))
(and km str
(or (assoc str tmm-km-list)
(push (cons str (cons event km)) tmm-km-list))))))
_______________________________________________
Emacs-pretest-bug mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug