summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/ChangeLog51
-rw-r--r--lisp/align.el8
-rw-r--r--lisp/emacs-lisp/easymenu.el73
-rw-r--r--lisp/macros.el9
-rw-r--r--lisp/net/tramp.el7
-rw-r--r--lisp/outline.el5
-rw-r--r--lisp/recentf.el2
-rw-r--r--lisp/tempo.el6
8 files changed, 123 insertions, 38 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 8e55dcd6270..6fc7796f339 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,54 @@
+2004-11-06 Kai Grossjohann <kai.grossjohann@gmx.net>
+
+ * net/tramp.el (tramp-coding-commands): Additionally try "uudecode
+ -o /dev/stdout" before trying "uudecode -o -". Suggested by Han
+ Boetes.
+ (tramp-uudecode): Mention `uudecode -o /dev/stdout'.
+
+2004-11-06 David Ponce <david@dponce.com>
+
+ * recentf.el (recentf-menu-path): Use menu item name.
+
+2004-11-06 Eli Zaretskii <eliz@gnu.org>
+
+ * progmodes/gdb-ui.el: Don't call define-fringe-bitmap if the
+ display doesn't support images.
+
+2004-11-06 Andreas Schwab <schwab@suse.de>
+
+ * tempo.el (tempo-match-finder): Doc fix.
+
+ * emacs-lisp/easymenu.el (easy-menu-get-map): Fix last change.
+
+2004-11-06 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/easymenu.el (easy-menu-get-map-look-for-name): Remove.
+ (easy-menu-lookup-name): New fun to replace it.
+ (easy-menu-get-map): Use it to obey menu item names (rather than just
+ keys) when looking up `path'.
+ (easy-menu-always-true-p): Rename from easy-menu-always-true.
+ (easy-menu-convert-item-1): Adjust to new name.
+
+2004-11-06 Peter Heslin <pj@heslin.eclipse.co.uk> (tiny change)
+
+ * outline.el (hide-body): Don't hide lines at the top of the file
+ that precede the first header line.
+
+2004-11-06 Paul Pogonyshev <pogonyshev@gmx.net>
+
+ * align.el (align-areas): Delete whitespace before reindenting, so
+ that tabs are never placed after spaces.
+
+2004-11-06 Alan Shutko <ats@acm.org>
+
+ * macros.el (insert-kbd-macro): Do completions based on macros,
+ rather than all commands.
+
+2004-11-06 David Hansen <david.hansen@gmx.net> (tiny change)
+
+ * tempo.el (tempo-match-finder): Use [:word:] instead of "^\\b",
+ to solve a bug whereby tags with 'b' don't match.
+
2004-11-05 Juri Linkov <juri@jurta.org>
* info.el (Info-search): Don't search in node header lines
diff --git a/lisp/align.el b/lisp/align.el
index bae09d749db..5e739c8f7c0 100644
--- a/lisp/align.el
+++ b/lisp/align.el
@@ -1212,6 +1212,14 @@ have been aligned. No changes will be made to the buffer."
(cond ((< gocol 0) t) ; don't do anything
((= cur gocol) t) ; don't need to
((< cur gocol) ; just add space
+ ;; FIXME: It is stated above that "...the
+ ;; whitespace to be modified was already
+ ;; deleted by `align-region', all we have
+ ;; to do here is indent." However, this
+ ;; doesn't seem to be true, so we first
+ ;; delete the whitespace to avoid tabs
+ ;; after spaces.
+ (delete-horizontal-space t)
(indent-to gocol))
(t
;; This code works around an oddity in the
diff --git a/lisp/emacs-lisp/easymenu.el b/lisp/emacs-lisp/easymenu.el
index e039b80aee5..7b18756fd7e 100644
--- a/lisp/emacs-lisp/easymenu.el
+++ b/lisp/emacs-lisp/easymenu.el
@@ -242,9 +242,9 @@ possibly preceded by keyword pairs as described in `easy-menu-define'."
(setq visible (or arg ''nil)))))
(if (equal visible ''nil)
nil ; Invisible menu entry, return nil.
- (if (and visible (not (easy-menu-always-true visible)))
+ (if (and visible (not (easy-menu-always-true-p visible)))
(setq prop (cons :visible (cons visible prop))))
- (if (and enable (not (easy-menu-always-true enable)))
+ (if (and enable (not (easy-menu-always-true-p enable)))
(setq prop (cons :enable (cons enable prop))))
(if filter (setq prop (cons :filter (cons filter prop))))
(if help (setq prop (cons :help (cons help prop))))
@@ -363,12 +363,12 @@ ITEM defines an item as in `easy-menu-define'."
(cons cmd keys))))
(setq cache-specified nil))
(if keys (setq prop (cons :keys (cons keys prop)))))
- (if (and visible (not (easy-menu-always-true visible)))
+ (if (and visible (not (easy-menu-always-true-p visible)))
(if (equal visible ''nil)
;; Invisible menu item. Don't insert into keymap.
(setq remove t)
(setq prop (cons :visible (cons visible prop)))))))
- (if (and active (not (easy-menu-always-true active)))
+ (if (and active (not (easy-menu-always-true-p active)))
(setq prop (cons :enable (cons active prop))))
(if (and (or no-name cache-specified)
(or (null cache) (stringp cache) (vectorp cache)))
@@ -426,7 +426,8 @@ KEY does not have to be a symbol, and comparison is done with equal."
(defun easy-menu-name-match (name item)
"Return t if NAME is the name of menu item ITEM.
-NAME can be either a string, or a symbol."
+NAME can be either a string, or a symbol.
+ITEM should be a keymap binding of the form (KEY . MENU-ITEM)."
(if (consp item)
(if (symbolp name)
(eq (car-safe item) name)
@@ -439,7 +440,7 @@ NAME can be either a string, or a symbol."
(eq (car-safe item) (intern name))
(eq (car-safe item) (easy-menu-intern name)))))))
-(defun easy-menu-always-true (x)
+(defun easy-menu-always-true-p (x)
"Return true if form X never evaluates to nil."
(if (consp x) (and (eq (car x) 'quote) (cadr x))
(or (eq x t) (not (symbolp x)))))
@@ -591,10 +592,24 @@ If item is an old format item, a new format item is returned."
(cons name item)) ; Keymap or new menu format
)))
-(defun easy-menu-get-map-look-for-name (name submap)
- (while (and submap (not (easy-menu-name-match name (car submap))))
- (setq submap (cdr submap)))
- submap)
+(defun easy-menu-lookup-name (map name)
+ "Lookup menu item NAME in keymap MAP.
+Like `lookup-key' except that NAME is not an array but just a single key
+and that NAME can be a string representing the menu item's name."
+ (or (lookup-key map (vector (easy-menu-intern name)))
+ (when (stringp name)
+ ;; `lookup-key' failed and we have a menu item name: look at the
+ ;; actual menu entries's names.
+ (catch 'found
+ (map-keymap (lambda (key item)
+ (if (condition-case nil (member name item)
+ (error nil))
+ ;; Found it!! Look for it again with
+ ;; `lookup-key' so as to handle inheritance and
+ ;; to extract the actual command/keymap bound to
+ ;; `name' from the item (via get_keyelt).
+ (throw 'found (lookup-key map (vector key)))))
+ map)))))
(defun easy-menu-get-map (map path &optional to-modify)
"Return a sparse keymap in which to add or remove an item.
@@ -605,34 +620,34 @@ wants to modify in the map that we return.
In some cases we use that to select between the local and global maps."
(setq map
(catch 'found
- (let* ((key (vconcat (unless map '(menu-bar))
- (mapcar 'easy-menu-intern path)))
- (maps (mapcar (lambda (map)
- (setq map (lookup-key map key))
- (while (and (symbolp map) (keymapp map))
- (setq map (symbol-function map)))
- map)
- (if map
- (list (if (and (symbolp map)
- (not (keymapp map)))
- (symbol-value map) map))
- (current-active-maps)))))
+ (if (and map (symbolp map) (not (keymapp map)))
+ (setq map (symbol-value map)))
+ (let ((maps (if map (list map) (current-active-maps))))
+ ;; Look for PATH in each map.
+ (unless map (push 'menu-bar path))
+ (dolist (name path)
+ (setq maps
+ (delq nil (mapcar (lambda (map)
+ (setq map (easy-menu-lookup-name
+ map name))
+ (and (keymapp map) map))
+ maps))))
+
;; Prefer a map that already contains the to-be-modified entry.
(when to-modify
(dolist (map maps)
- (when (and (keymapp map)
- (easy-menu-get-map-look-for-name to-modify map))
+ (when (easy-menu-lookup-name map to-modify)
(throw 'found map))))
;; Use the first valid map.
- (dolist (map maps)
- (when (keymapp map)
- (throw 'found map)))
+ (when maps (throw 'found (car maps)))
+
;; Otherwise, make one up.
;; Hardcoding current-local-map is lame, but it's difficult
;; to know what the caller intended for us to do ;-(
(let* ((name (if path (format "%s" (car (reverse path)))))
(newmap (make-sparse-keymap name)))
- (define-key (or map (current-local-map)) key
+ (define-key (or map (current-local-map))
+ (apply 'vector (mapcar 'easy-menu-intern path))
(if name (cons name newmap) newmap))
newmap))))
(or (keymapp map) (error "Malformed menu in easy-menu: (%s)" map))
@@ -640,5 +655,5 @@ In some cases we use that to select between the local and global maps."
(provide 'easymenu)
-;;; arch-tag: 2a04020d-90d2-476d-a7c6-71e072007a4a
+;; arch-tag: 2a04020d-90d2-476d-a7c6-71e072007a4a
;;; easymenu.el ends here
diff --git a/lisp/macros.el b/lisp/macros.el
index 0de5d223ee0..bb9fda41a45 100644
--- a/lisp/macros.el
+++ b/lisp/macros.el
@@ -63,7 +63,14 @@ bindings.
To save a kbd macro, visit a file of Lisp code such as your `~/.emacs',
use this command, and then save the file."
- (interactive "CInsert kbd macro (name): \nP")
+ (interactive (list (intern (completing-read "Insert kbd macro (name): "
+ obarray
+ (lambda (elt)
+ (and (fboundp elt)
+ (or (stringp (symbol-function elt))
+ (vectorp (symbol-function elt)))))
+ t))
+ current-prefix-arg))
(let (definition)
(if (string= (symbol-name macroname) "")
(progn
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index 5a71a50c5db..e153ab3341f 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -1535,8 +1535,9 @@ cat /tmp/tramp.$$
rm -f /tmp/tramp.$$
}"
"Shell function to implement `uudecode' to standard output.
-Many systems support `uudecode -o -' for this or `uudecode -p', but
-some systems don't, and for them we have this shell function.")
+Many systems support `uudecode -o /dev/stdout' for this or
+`uudecode -o -' or `uudecode -p', but some systems don't, and for
+them we have this shell function.")
;; Perl script to implement `file-attributes' in a Lisp `read'able
;; output. If you are hacking on this, note that you get *no* output
@@ -5970,6 +5971,8 @@ locale to C and sets up the remote shell search path."
base64-encode-region base64-decode-region)
("recode data..base64" "recode base64..data"
base64-encode-region base64-decode-region)
+ ("uuencode xxx" "uudecode -o /dev/stdout"
+ tramp-uuencode-region uudecode-decode-region)
("uuencode xxx" "uudecode -o -"
tramp-uuencode-region uudecode-decode-region)
("uuencode xxx" "uudecode -p"
diff --git a/lisp/outline.el b/lisp/outline.el
index 2d2663b12f2..89e9e193e9c 100644
--- a/lisp/outline.el
+++ b/lisp/outline.el
@@ -723,7 +723,7 @@ Show the heading too, if it is currently invisible."
(progn (outline-next-preface) (point)) nil)))
(defun hide-body ()
- "Hide all of buffer except headings."
+ "Hide all body lines in buffer, leaving all headings visible."
(interactive)
(hide-region-body (point-min) (point-max)))
@@ -738,7 +738,8 @@ Show the heading too, if it is currently invisible."
(narrow-to-region start end)
(goto-char (point-min))
(if (outline-on-heading-p)
- (outline-end-of-heading))
+ (outline-end-of-heading)
+ (outline-next-preface))
(while (not (eobp))
(outline-flag-region (point)
(progn (outline-next-preface) (point)) t)
diff --git a/lisp/recentf.el b/lisp/recentf.el
index 4ef55d4e1bf..2fee8e637a8 100644
--- a/lisp/recentf.el
+++ b/lisp/recentf.el
@@ -98,7 +98,7 @@ Set VARIABLE with VALUE, and force a rebuild of the recentf menu."
:type 'string
:set 'recentf-menu-customization-changed)
-(defcustom recentf-menu-path '("files")
+(defcustom recentf-menu-path '("File")
"*Path where to add the recentf menu.
If nil add it at top level (see also `easy-menu-add-item')."
:group 'recentf
diff --git a/lisp/tempo.el b/lisp/tempo.el
index 3ceb3e271f4..43f90b64766 100644
--- a/lisp/tempo.el
+++ b/lisp/tempo.el
@@ -1,6 +1,6 @@
;;; tempo.el --- Flexible template insertion
-;; Copyright (C) 1994, 1995 Free Software Foundation, Inc.
+;; Copyright (C) 1994, 1995, 2004 Free Software Foundation, Inc.
;; Author: David K}gedal <davidk@lysator.liu.se>
;; Created: 16 Feb 1994
@@ -172,7 +172,7 @@ documentation for the function `tempo-complete-tag' for more info.
(defvar tempo-marks nil
"A list of marks to jump to with `\\[tempo-forward-mark]' and `\\[tempo-backward-mark]'.")
-(defvar tempo-match-finder "\\b\\([^\\b]+\\)\\="
+(defvar tempo-match-finder "\\b\\([[:word:]]+\\)\\="
"The regexp or function used to find the string to match against tags.
If `tempo-match-finder is a string, it should contain a regular
@@ -182,7 +182,7 @@ the string between the first \\( and \\) is used for matching against
each string in the tag list. If one is found, the whole text between
the first \\( and the point is replaced with the inserted template.
-You will probably want to include \\ \= at the end of the regexp to
+You will probably want to include \\=\\= at the end of the regexp to
make sure that the string is matched only against text adjacent to the
point.