Mercurial > emacs
changeset 83262:92c8be21e2c3
Merged from miles@gnu.org--gnu-2005 (patch 31-33, 129-141)
Patches applied:
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-129
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-130
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-131
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-132
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-133
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-134
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-135
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-136
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-137
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-138
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-139
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-140
Update from CVS
* miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-141
Update from CVS
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-31
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-32
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2005/gnus--rel--5.10--patch-33
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-302
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Mon, 28 Feb 2005 15:15:44 +0000 |
parents | 7d309d464f83 (current diff) f0819ce6d7e4 (diff) |
children | 1f334cdd7020 |
files | admin/FOR-RELEASE lisp/ChangeLog lisp/url/url-history.el lisp/vc.el lispref/ChangeLog man/ChangeLog man/frames.texi src/buffer.c src/dispextern.h src/xdisp.c |
diffstat | 54 files changed, 1119 insertions(+), 828 deletions(-) [+] |
line wrap: on
line diff
--- a/admin/FOR-RELEASE Fri Feb 25 13:02:38 2005 +0000 +++ b/admin/FOR-RELEASE Mon Feb 28 15:15:44 2005 +0000 @@ -232,13 +232,13 @@ SECTION READERS ---------------------------------- -lispref/abbrevs.texi "Luc Teirlinck" -lispref/advice.texi Joakim Verona <joakim@verona.se> +lispref/abbrevs.texi "Luc Teirlinck" Chong Yidong +lispref/advice.texi joakim@verona.se Chong Yidong lispref/anti.texi -lispref/backups.texi "Luc Teirlinck" Chong Yidong +lispref/backups.texi "Luc Teirlinck" Chong Yidong lispref/buffers.texi "Luc Teirlinck" Chong Yidong lispref/calendar.texi Joakim Verona <joakim@verona.se> -lispref/commands.texi "Luc Teirlinck" +lispref/commands.texi "Luc Teirlinck" Chong Yidong lispref/compile.texi "Luc Teirlinck" Chong Yidong lispref/control.texi "Luc Teirlinck" Chong Yidong lispref/customize.texi @@ -252,17 +252,17 @@ lispref/frames.texi "Luc Teirlinck" Chong Yidong lispref/functions.texi "Luc Teirlinck" Chong Yidong lispref/hash.texi "Luc Teirlinck" Chong Yidong -lispref/help.texi "Luc Teirlinck" +lispref/help.texi "Luc Teirlinck" Chong Yidong lispref/hooks.texi lispref/internals.texi "Luc Teirlinck" lispref/intro.texi "Luc Teirlinck" -lispref/keymaps.texi "Luc Teirlinck" +lispref/keymaps.texi "Luc Teirlinck" Chong Yidong lispref/lists.texi "Luc Teirlinck" Chong Yidong lispref/loading.texi "Luc Teirlinck" Chong Yidong lispref/locals.texi -lispref/macros.texi "Luc Teirlinck" +lispref/macros.texi "Luc Teirlinck" Chong Yidong lispref/maps.texi -lispref/markers.texi "Luc Teirlinck" +lispref/markers.texi "Luc Teirlinck" Chong Yidong lispref/minibuf.texi "Luc Teirlinck" Chong Yidong lispref/modes.texi Chong Yidong lispref/nonascii.texi "Luc Teirlinck" @@ -270,7 +270,7 @@ lispref/objects.texi "Luc Teirlinck" Chong Yidong lispref/os.texi "Luc Teirlinck" Chong Yidong lispref/positions.texi "Luc Teirlinck" Chong Yidong -lispref/processes.texi +lispref/processes.texi Chong Yidong lispref/searching.texi "Luc Teirlinck" lispref/sequences.texi "Luc Teirlinck" Chong Yidong lispref/streams.texi "Luc Teirlinck" Chong Yidong
--- a/etc/NEWS Fri Feb 25 13:02:38 2005 +0000 +++ b/etc/NEWS Mon Feb 28 15:15:44 2005 +0000 @@ -153,8 +153,8 @@ Dragging the Mouse-1 inside a link still performs the original drag-mouse-1 action, typically copy the text. -You can customize the new Mouse-1 behavior via the new user option -`mouse-1-click-follows-link'. +You can customize the new Mouse-1 behavior via the new user options +`mouse-1-click-follows-link' and `mouse-1-click-in-non-selected-windows'. +++ ** require-final-newline now has two new possible values: @@ -1599,6 +1599,9 @@ prompts for a year and a week number, and moves to the first day of that ISO week. +** The new variable `calendar-minimum-window-height' affects the +window generated by the function `generate-calendar-window'. + --- ** The functions `holiday-easter-etc' and `holiday-advent' now take optional arguments, in order to only report on the specified holiday
--- a/lisp/ChangeLog Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/ChangeLog Mon Feb 28 15:15:44 2005 +0000 @@ -1,11 +1,109 @@ +2005-02-28 Chong Yidong" <cyd@stupidchicken.com> (tiny change) + + * international/utf-16.el (ccl-encode-mule-utf-16le): Fix + BUFFER_MAGNIFICATION to 2. + (ccl-encode-mule-utf-16be): Likewise. + +2005-02-28 Kenichi Handa <handa@m17n.org> + + * international/utf-16.el (ccl-encode-mule-utf-16le-with-signature): + Fix BUFFER_MAGNIFICATION to 4. + (ccl-encode-mule-utf-16be-with-signature): Likewise. + +2005-02-28 Nick Roberts <nickrob@snap.net.nz> + + * speedbar.el (speedbar-update-flag): Doc fix. + (speedbar-show-info-under-mouse): Give set-mouse-position the right + argument. + +2005-02-27 Stefan Monnier <monnier@iro.umontreal.ca> + + * reveal.el (reveal-post-command): Don't try to reveal overlays which + have a non-nil `invisible' property but are actually visible. + + * progmodes/perl-mode.el (perl-imenu-generic-expression): Add entries + for perldoc sections. + (perl-outline-regexp, perl-outline-level): New var and function. + (perl-mode): Use them. + +2005-02-27 Glenn Morris <gmorris@ast.cam.ac.uk> + + * calendar/diary-lib.el (diary-remind): Discard any mark portion + from diary-entry. Reported by Andrew Kemp <ajwk@pell.uklinux.net>. + +2005-02-27 Luc Teirlinck <teirllm@auburn.edu> + + * cus-edit.el: Comment change. + (custom-buffer-create-internal): Slightly reword text at top of + Custom buffers. Mention there that saving an option edits the + init file. Add link to Emacs manual node on `custom-file'. + (custom-magic-alist): Rewrite individual State messages to use + capitalized keywords. Doc fix. + +2005-02-27 Matt Hodges <MPHodges@member.fsf.org> + + * calendar/calendar.el (calendar-buffer): Move above + calendar-week-start-day. + (calendar-week-start-day): Doc fix. Add :set function. + (calendar-minimum-window-height): New variable. + (generate-calendar-window): Only resize window if selected-window + is displaying the calendar buffer. Use new variable + calendar-minimum-window-height. + (generate-calendar): Reword error message. + (calendar-mode-map): Bind DEL to scroll-other-window-down. + +2005-02-27 Andreas Schwab <schwab@suse.de> + + * vc.el (vc-do-command): Don't run command asynchronously when + operating in a remote directory. + + * net/tramp.el (tramp-file-name-for-operation): Fix misapplied + change from sync with Tramp 2.0.47. + +2005-02-27 Richard M. Stallman <rms@gnu.org> + + * textmodes/ispell.el (ispell-change-dictionary): Doc fix. + + * textmodes/flyspell.el (flyspell-mode-on): + Call ispell-change-dictionary only if necessary. + + * emacs-lisp/re-builder.el (regexp-builder): New function. + + * register.el (describe-register-1): Explicitly handle + yank-excluded-properties = t. + + * cus-edit.el (custom-buffer-create-internal): Improve progress msgs. + (custom-magic-alist): Change the status descriptions again. + (face widget-type): Total rewrite based on `restricted-sexp' + to eliminate the confusing double hiding levels. + + * emacs-lisp/debug.el (debug-on-entry-1): + If function body is empty, add nil as body form. + +2005-02-26 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/trace.el (inhibit-trace): New var. + (trace-make-advice): Use it. + + * emacs-lisp/debug.el (debug): Put back the inhibit-trace. + +2005-02-26 Kim F. Storm <storm@cua.dk> + + * mouse.el (mouse-1-click-in-non-selected-windows): New defcustom. + (mouse-on-link-p, mouse-drag-region-1): Use it. + +2005-02-25 Lute Kamstra <lute@gnu.org> + + * replace.el (query-replace-read-from): Fix 2005-02-19 change. + 2005-02-24 Luc Teirlinck <teirllm@auburn.edu> * frame.el (blink-cursor-mode): Add :group keyword. 2005-02-24 Ulf Jasper <ulf.jasper@web.de> - * calendar/icalendar.el (icalendar--decode-isodatetime): New - optional argument DAY-SHIFT. + * calendar/icalendar.el (icalendar--decode-isodatetime): + New optional argument DAY-SHIFT. (icalendar-export-region): Fix coding-system-for-write. (icalendar--convert-ical-to-diary): Shift end-day of all-day events by one. @@ -20,6 +118,13 @@ during redisplay. Call force-window-update after read-event and delete-region to signal that window is not accurate. +2005-02-23 Stefan Monnier <monnier@iro.umontreal.ca> + + * emacs-lisp/debug.el (debug): Hide the buffer if it's not killed. + Remove unused and inexistent var `inhibit-trace'. + (debugger-mode): Use run-mode-hooks. + (debugger-list-functions): Add buttons; setup xref stack. + 2005-02-23 Richard M. Stallman <rms@gnu.org> * calendar/appt.el (appt-time-msg-list): 3rd elt of each @@ -152,8 +257,8 @@ * viper-util.el (viper-glob-unix-files): Fix shell status check. (viper-file-remote-p): Make equivalent to file-remote-p. - * viper.el (viper-major-mode-modifier-list): Use - viper-gnus-modifier-map. + * viper.el (viper-major-mode-modifier-list): + Use viper-gnus-modifier-map. 2005-02-19 David Kastrup <dak@gnu.org> @@ -163,7 +268,7 @@ 2005-02-19 Jay Belanger <belanger@truman.edu> * calc/calc-math.el (calc-arctan, calc-tanh, calc-arctanh): - Removed extra definitions. + Remove extra definitions. (calc-coth): New function. (calcFunc-cot): Fix `let'. @@ -180,8 +285,8 @@ query-replace-from-history-variable to handle the case of an empty string entered to accept the suggested default. - * net/tramp.el (tramp-file-name-for-operation): Use - dired-call-process instead of dired-call-process-command. + * net/tramp.el (tramp-file-name-for-operation): + Use dired-call-process instead of dired-call-process-command. 2005-02-19 Jay Belanger <belanger@truman.edu> @@ -202,22 +307,22 @@ 2005-02-19 Michael Kifer <kifer@cs.stonybrook.edu> - * ediff.el (ediff-set-diff-overlays-in-one-buffer, - ediff-set-fine-overlays-in-one-buffer,ediff-goto-word) make sure + * ediff.el (ediff-set-diff-overlays-in-one-buffer) + (ediff-set-fine-overlays-in-one-buffer,ediff-goto-word): Make sure we use the syntax table of the correct buffer. - (ediff-same-file-contents,ediff-same-contents): enhancements thanks to + (ediff-same-file-contents,ediff-same-contents): Enhancements thanks to Felix Gatzemeier. - * ediff-init.el (ediff-hide-face): checks for definedness of functions. - (ediff-file-remote-p): make synonymous with file-remote-p. + * ediff-init.el (ediff-hide-face): Check for definedness of functions. + (ediff-file-remote-p): Make synonymous with file-remote-p. In all deffaces ediff-*-face-*, use min-colors. - * ediff-mult.el (ediff-meta-mark-equal-files): make use of - ediff-recurse-to-subdirectories. - (ediff-mark-if-equal): check that the arguments are strings, use + * ediff-mult.el (ediff-meta-mark-equal-files): Make use of + ediff-recurse-to-subdirectories. + (ediff-mark-if-equal): Check that the arguments are strings, use ediff-same-contents (after to Felix Gatzemeier). - * ediff.el (ediff-merge-on-startup): don't set buffer-modified-p to + * ediff.el (ediff-merge-on-startup): Don't set buffer-modified-p to nil. 2005-02-18 Stefan Monnier <monnier@iro.umontreal.ca> @@ -287,7 +392,7 @@ 2005-02-15 Jay Belanger <belanger@truman.edu> * calc/calc-alg.el: Add simplification rules for calcFunc-sec, - calcFunc-csc, calcFunc-cot, calcFunc-sech, calcFunc-csch and + calcFunc-csc, calcFunc-cot, calcFunc-sech, calcFunc-csch, and calcFunc-coth. (math-simplify-sqrt): Add simplifications.
--- a/lisp/calendar/calendar.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/calendar/calendar.el Mon Feb 28 15:15:44 2005 +0000 @@ -1,7 +1,7 @@ ;;; calendar.el --- calendar functions ;; Copyright (C) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1997, -;; 2000, 2001, 2003, 2004 Free Software Foundation, Inc. +;; 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Edward M. Reingold <reingold@cs.uiuc.edu> ;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk> @@ -141,11 +141,25 @@ :group 'calendar) +(defconst calendar-buffer "*Calendar*" + "Name of the buffer used for the calendar.") + ;;;###autoload (defcustom calendar-week-start-day 0 "*The day of the week on which a week in the calendar begins. -0 means Sunday (default), 1 means Monday, and so on." +0 means Sunday (default), 1 means Monday, and so on. + +If you change this variable directly (without using customize) +after starting `calendar', you should call `redraw-calendar' to +update the calendar display to reflect the change, otherwise +movement commands will not work correctly." :type 'integer + :set (lambda (sym val) + (set sym val) + (let ((buffer (get-buffer calendar-buffer))) + (when (buffer-live-p buffer) + (with-current-buffer buffer + (redraw-calendar))))) :group 'calendar) ;;;###autoload @@ -1303,9 +1317,6 @@ :type 'sexp :group 'holidays) -(defconst calendar-buffer "*Calendar*" - "Name of the buffer used for the calendar.") - (defconst holiday-buffer "*Holidays*" "Name of the buffer used for the displaying the holidays.") @@ -1563,7 +1574,7 @@ The choices are: `one-frame' (calendar and diary together in one separate, dedicated frame); `two-frames' (calendar and diary in separate, dedicated frames); `calendar-only' (calendar in a separate, dedicated frame); with -any other value the current frame is used. Using any of the first +any other value the current frame is used. Using any of the first three options overrides the value of `view-diary-entries-initially'." :type '(choice (const :tag "calendar and diary in separate frame" one-frame) @@ -1572,6 +1583,12 @@ (const :tag "use current frame" nil)) :group 'calendar) +(defcustom calendar-minimum-window-height 8 + "Minimum height `generate-calendar-window' should use for calendar window." + :type 'integer + :version "22.1" + :group 'calendar) + ;;;###autoload (defun calendar (&optional arg) "Choose between the one frame, two frame, or basic calendar displays. @@ -2039,28 +2056,33 @@ (or (not mon) (let ((offset (calendar-interval mon yr month year))) (and (<= offset 1) (>= offset -1))))) - (day-in-week (calendar-day-of-week today))) + (day-in-week (calendar-day-of-week today)) + (in-calendar-window (eq (window-buffer (selected-window)) + (get-buffer calendar-buffer)))) (update-calendar-mode-line) (if mon (generate-calendar mon yr) - (generate-calendar month year)) + (generate-calendar month year)) (calendar-cursor-to-visible-date (if today-visible today (list displayed-month 1 displayed-year))) (set-buffer-modified-p nil) - (if (or (one-window-p t) (/= (frame-width) (window-width))) - ;; Don't mess with the window size, but ensure that the first - ;; line is fully visible - (set-window-vscroll nil 0) - ;; Adjust the window to exactly fit the displayed calendar - (fit-window-to-buffer)) - (sit-for 0) + ;; Don't do any window-related stuff if we weren't called from a + ;; window displaying the calendar + (when in-calendar-window + (if (or (one-window-p t) (/= (frame-width) (window-width))) + ;; Don't mess with the window size, but ensure that the first + ;; line is fully visible + (set-window-vscroll nil 0) + ;; Adjust the window to exactly fit the displayed calendar + (fit-window-to-buffer nil nil calendar-minimum-window-height)) + (sit-for 0)) (if (and (boundp 'font-lock-mode) font-lock-mode) (font-lock-fontify-buffer)) (and mark-holidays-in-calendar ;;; (calendar-date-is-legal-p today) ; useful for BC dates (mark-calendar-holidays) - (sit-for 0)) + (and in-calendar-window (sit-for 0))) (unwind-protect (if mark-diary-entries-in-calendar (mark-diary-entries)) (if today-visible @@ -2071,10 +2093,10 @@ "Generate a three-month Gregorian calendar centered around MONTH, YEAR." ;;; A negative YEAR is interpreted as BC; -1 being 1 BC, and so on. ;;; Note that while calendars for years BC could be displayed as it -;;; stands, almost all other calendar functions (eg holidays) would +;;; stands, almost all other calendar functions (eg holidays) would ;;; at best have unpredictable results for such dates. (if (< (+ month (* 12 (1- year))) 2) - (error "Months before February, 1 AD are not available")) + (error "Months before January, 1 AD cannot be displayed")) (setq displayed-month month displayed-year year) (erase-buffer) @@ -2229,6 +2251,7 @@ (define-key calendar-mode-map "S" 'calendar-sunrise-sunset) (define-key calendar-mode-map "M" 'calendar-phases-of-moon) (define-key calendar-mode-map " " 'scroll-other-window) + (define-key calendar-mode-map (kbd "DEL") 'scroll-other-window-down) (define-key calendar-mode-map "\C-c\C-l" 'redraw-calendar) (define-key calendar-mode-map "." 'calendar-goto-today) (define-key calendar-mode-map "o" 'calendar-other-month)
--- a/lisp/calendar/diary-lib.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/calendar/diary-lib.el Mon Feb 28 15:15:44 2005 +0000 @@ -1625,8 +1625,10 @@ (or (not marking-diary-entries) marking)) (let ((date (calendar-gregorian-from-absolute (+ (calendar-absolute-from-gregorian date) days)))) - (if (setq diary-entry (eval sexp)) - (mapconcat 'eval diary-remind-message "")))) + (when (setq diary-entry (eval sexp)) ; re-evaluate with adjusted date + ;; Discard any mark portion from diary-anniversary, etc. + (if (consp diary-entry) (setq diary-entry (cdr diary-entry))) + (mapconcat 'eval diary-remind-message "")))) ;; Diary entry may apply to one of a list of days before date ((and (listp days) days) (or (diary-remind sexp (car days) marking)
--- a/lisp/cus-edit.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/cus-edit.el Mon Feb 28 15:15:44 2005 +0000 @@ -121,10 +121,11 @@ ;; 6. rogue ;; There is no standard value. This means that the variable was -;; not defined with defcustom. You can not create a Custom buffer -;; for such variables using the normal interactive Custom commands. -;; However, such Custom buffers can be created in other ways, for -;; instance, by calling `customize-option' non-interactively. +;; not defined with defcustom, nor handled in cus-start.el. You +;; can not create a Custom buffer for such variables using the +;; normal interactive Custom commands. However, such Custom +;; buffers can be created in other ways, for instance, by calling +;; `customize-option' non-interactively. ;; 7. hidden @@ -1367,7 +1368,6 @@ :group 'custom-buffer) (defun custom-buffer-create-internal (options &optional description) - (message "Creating customization buffer...") (custom-mode) (if custom-buffer-verbose-help (progn @@ -1377,17 +1377,23 @@ (widget-insert (format ". %s show active fields; type RET or click mouse-1 on an active field to invoke its action. Editing an option value -changes the text in the buffer; invoke the State button and -choose the Set operation to set the option value. -Invoke " (if custom-raised-buttons - "`Raised' buttons" - "Square brackets"))) +changes only the text in the buffer. Invoke the State button to set or +save the option value. Saving an option normally edits your init file. +Invoke " + (if custom-raised-buttons + "`Raised' buttons" + "Square brackets"))) + (widget-create 'info-link + :tag "Custom file" + "(emacs)Saving Customizations") + (widget-insert + " for information on how to save in a different file. +Invoke ") (widget-create 'info-link :tag "Help" :help-echo "Read the online help." "(emacs)Easy Customization") - (widget-insert " for more information.\n\n") - (message "Creating customization buttons...") + (widget-insert " for general information.\n\n") (widget-insert "Operate on everything in this buffer:\n ")) (widget-insert " ")) (widget-create 'push-button @@ -1478,13 +1484,15 @@ (unless (eq (preceding-char) ?\n) (widget-insert "\n")) (message "Creating customization items ...done") + (message "Resetting customization items...") (unless (eq custom-buffer-style 'tree) (mapc 'custom-magic-reset custom-options)) + (message "Resetting customization items...done") (message "Creating customization setup...") (widget-setup) (buffer-enable-undo) (goto-char (point-min)) - (message "Creating customization buffer...done")) + (message "Creating customization setup...done")) ;;; The Tree Browser. @@ -1665,31 +1673,31 @@ (defconst custom-magic-alist '((nil "#" underline "\ -uninitialized, you should not see this.") +UNINITIALIZED, you should not see this.") (unknown "?" italic "\ -unknown, you should not see this.") +UNKNOWN, you should not see this.") (hidden "-" default "\ -hidden, invoke \"Show\" in the previous line to show." "\ +HIDDEN, invoke \"Show\" in the previous line to show." "\ group now hidden, invoke \"Show\", above, to show contents.") (invalid "x" custom-invalid-face "\ -the value displayed for this %c is invalid and cannot be set.") +INVALID, the displayed value cannot be set.") (modified "*" custom-modified-face "\ -you have edited the value as text, but you have not set the %c." "\ -you have edited something in this group, but not set anything yet.") +EDITED, shown value does not take effect until you set or save it." "\ +something in this group has been edited but not set.") (set "+" custom-set-face "\ -you have set this %c, but not saved it for future sessions." "\ -you have set something in this group, but not saved anything yet.") +SET for current session only." "\ +something in this group has been set but not saved.") (changed ":" custom-changed-face "\ -this %c has been changed outside the customize buffer." "\ +CHANGED outside Customize; operating on it here may be unreliable." "\ something in this group has been changed outside customize.") (saved "!" custom-saved-face "\ -You have set this %c and saved it through Customize in your init file." "\ +SAVED and set." "\ something in this group has been set and saved.") (rogue "@" custom-rogue-face "\ -this %c has not been changed with customize." "\ +NO CUSTOMIZATION DATA; you should not see this." "\ something in this group is not prepared for customization.") (standard " " nil "\ -this %c is unchanged from its standard setting." "\ +STANDARD." "\ visible group members are all at standard settings.")) "Alist of customize option states. Each entry is of the form (STATE MAGIC FACE ITEM-DESC [ GROUP-DESC ]), where @@ -1709,7 +1717,7 @@ `set' This item has been set but not saved. `changed' - The current value of this item has been changed temporarily. + The current value of this item has been changed outside Customize. `saved' This item is marked for saving. `rogue' @@ -3285,54 +3293,69 @@ ;;; The `face' Widget. -(define-widget 'face 'default - "Select and customize a face." - :convert-widget 'widget-value-convert-widget - :button-prefix 'widget-push-button-prefix - :button-suffix 'widget-push-button-suffix - :format "%{%t%}: %[select face%] %v" - :tag "Face" - :value 'default +(defvar widget-face-prompt-value-history nil + "History of input to `widget-face-prompt-value'.") + +(define-widget 'face 'restricted-sexp + "A Lisp face name." + :complete-function (lambda () + (interactive) + (lisp-complete-symbol 'facep)) + :prompt-value 'widget-field-prompt-value + :prompt-internal 'widget-symbol-prompt-internal + :prompt-match 'facep + :prompt-history 'widget-face-prompt-value-history :value-create 'widget-face-value-create - :value-delete 'widget-face-value-delete - :value-get 'widget-value-value-get - :validate 'widget-children-validate - :action 'widget-face-action - :match (lambda (widget value) (symbolp value))) + :action 'widget-field-action + :match-alternatives '(facep) + :validate (lambda (widget) + (unless (facep (widget-value widget)) + (widget-put widget :error (format "Invalid face: %S" + (widget-value widget))) + widget)) + :value 'ignore + :tag "Function") + + +;;; There is a bug here: the sample doesn't get redisplayed +;;; in the new font when you specify one. Does anyone know how to +;;; make that work? -- rms. (defun widget-face-value-create (widget) - "Create a `custom-face' child." - (let* ((symbol (widget-value widget)) - (custom-buffer-style 'face) - (child (widget-create-child-and-convert - widget 'custom-face - :custom-level nil - :value symbol))) - (custom-magic-reset child) - (setq custom-options (cons child custom-options)) - (widget-put widget :children (list child)))) - -(defun widget-face-value-delete (widget) - "Remove the child from the options." - (let ((child (car (widget-get widget :children)))) - (setq custom-options (delq child custom-options)) - (widget-children-value-delete widget))) - -(defvar face-history nil - "History of entered face names.") - -(defun widget-face-action (widget &optional event) - "Prompt for a face." - (let ((answer (completing-read "Face: " - (mapcar (lambda (face) - (list (symbol-name face))) - (face-list)) - nil nil nil - 'face-history))) - (unless (zerop (length answer)) - (widget-value-set widget (intern answer)) - (widget-apply widget :notify widget event) - (widget-setup)))) + "Create an editable face name field." + (let ((buttons (widget-get widget :buttons)) + (symbol (widget-get widget :value))) + ;; Sample. + (push (widget-create-child-and-convert widget 'item + :format "(%{%t%})" + :sample-face symbol + :tag "sample") + buttons) + (insert " ") + ;; Update buttons. + (widget-put widget :buttons buttons)) + + (let ((size (widget-get widget :size)) + (value (widget-get widget :value)) + (from (point)) + ;; This is changed to a real overlay in `widget-setup'. We + ;; need the end points to behave differently until + ;; `widget-setup' is called. + (overlay (cons (make-marker) (make-marker)))) + (widget-put widget :field-overlay overlay) + (insert value) + (and size + (< (length value) size) + (insert-char ?\ (- size (length value)))) + (unless (memq widget widget-field-list) + (setq widget-field-new (cons widget widget-field-new))) + (move-marker (cdr overlay) (point)) + (set-marker-insertion-type (cdr overlay) nil) + (when (null size) + (insert ?\n)) + (move-marker (car overlay) from) + (set-marker-insertion-type (car overlay) t))) + ;;; The `hook' Widget.
--- a/lisp/emacs-lisp/debug.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/emacs-lisp/debug.el Mon Feb 28 15:15:44 2005 +0000 @@ -1,6 +1,7 @@ ;;; debug.el --- debuggers and related commands for Emacs -;; Copyright (C) 1985, 1986, 1994, 2001, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1994, 2001, 2003, 2005 +;; Free Software Foundation, Inc. ;; Maintainer: FSF ;; Keywords: lisp, tools, maint @@ -197,15 +198,16 @@ (recursive-edit))))) ;; Kill or at least neuter the backtrace buffer, so that users ;; don't try to execute debugger commands in an invalid context. - (if (get-buffer-window debugger-buffer 'visible) + (if (get-buffer-window debugger-buffer 0) ;; Still visible despite the save-window-excursion? Maybe it ;; it's in a pop-up frame. It would be annoying to delete and ;; recreate it every time the debugger stops, so instead we'll - ;; erase it but leave it visible. - (save-excursion - (set-buffer debugger-buffer) + ;; erase it and hide it but keep it alive. + (with-current-buffer debugger-buffer (erase-buffer) - (fundamental-mode)) + (fundamental-mode) + (with-selected-window (get-buffer-window debugger-buffer 0) + (bury-buffer))) (kill-buffer debugger-buffer)) (set-match-data debugger-outer-match-data))) ;; Put into effect the modified values of these variables @@ -543,29 +545,26 @@ 'read-expression-history))) (debugger-env-macro (eval-expression exp))) -(defvar debugger-mode-map nil) -(unless debugger-mode-map - (let ((loop ? )) - (setq debugger-mode-map (make-keymap)) - (set-keymap-parent debugger-mode-map button-buffer-map) - (suppress-keymap debugger-mode-map) - (define-key debugger-mode-map "-" 'negative-argument) - (define-key debugger-mode-map "b" 'debugger-frame) - (define-key debugger-mode-map "c" 'debugger-continue) - (define-key debugger-mode-map "j" 'debugger-jump) - (define-key debugger-mode-map "r" 'debugger-return-value) - (define-key debugger-mode-map "u" 'debugger-frame-clear) - (define-key debugger-mode-map "d" 'debugger-step-through) - (define-key debugger-mode-map "l" 'debugger-list-functions) - (define-key debugger-mode-map "h" 'describe-mode) - (define-key debugger-mode-map "q" 'top-level) - (define-key debugger-mode-map "e" 'debugger-eval-expression) - (define-key debugger-mode-map " " 'next-line) - (define-key debugger-mode-map "R" 'debugger-record-expression) - (define-key debugger-mode-map "\C-m" 'help-follow) - (define-key debugger-mode-map [mouse-2] 'push-button) - )) - +(defvar debugger-mode-map + (let ((map (make-keymap))) + (set-keymap-parent map button-buffer-map) + (suppress-keymap map) + (define-key map "-" 'negative-argument) + (define-key map "b" 'debugger-frame) + (define-key map "c" 'debugger-continue) + (define-key map "j" 'debugger-jump) + (define-key map "r" 'debugger-return-value) + (define-key map "u" 'debugger-frame-clear) + (define-key map "d" 'debugger-step-through) + (define-key map "l" 'debugger-list-functions) + (define-key map "h" 'describe-mode) + (define-key map "q" 'top-level) + (define-key map "e" 'debugger-eval-expression) + (define-key map " " 'next-line) + (define-key map "R" 'debugger-record-expression) + (define-key map "\C-m" 'help-follow) + (define-key map [mouse-2] 'push-button) + map)) (defcustom debugger-record-buffer "*Debugger-record*" "*Buffer name for expression values, for \\[debugger-record-expression]." @@ -616,7 +615,7 @@ (setq truncate-lines t) (set-syntax-table emacs-lisp-mode-syntax-table) (use-local-map debugger-mode-map) - (run-hooks 'debugger-mode-hook)) + (run-mode-hooks 'debugger-mode-hook)) ;;;###autoload (defun debug-on-entry (function) @@ -705,6 +704,10 @@ ;; Skip the interactive form. (if (eq 'interactive (car-safe (car tail))) (setq tail (cdr tail))) (unless (eq flag (equal (car tail) '(debug 'debug))) + ;; If the function has no body, add nil as a body element. + (when (null tail) + (setq tail (list nil)) + (nconc defn tail)) ;; Add/remove debug statement as needed. (if (not flag) (progn (setcar tail (cadr tail)) @@ -716,22 +719,23 @@ (defun debugger-list-functions () "Display a list of all the functions now set to debug on entry." (interactive) - (with-output-to-temp-buffer "*Help*" - (if (null debug-function-list) - (princ "No debug-on-entry functions now\n") - (princ "Functions set to debug on entry:\n\n") - (let ((list debug-function-list)) - (while list - (prin1 (car list)) - (terpri) - (setq list (cdr list)))) - (princ "Note: if you have redefined a function, then it may no longer\n") - (princ "be set to debug on entry, even if it is in the list.")) - (save-excursion - (set-buffer standard-output) - (help-mode)))) + (require 'help-mode) + (help-setup-xref '(debugger-list-functions) (interactive-p)) + (with-output-to-temp-buffer (help-buffer) + (with-current-buffer standard-output + (if (null debug-function-list) + (princ "No debug-on-entry functions now\n") + (princ "Functions set to debug on entry:\n\n") + (dolist (fun debug-function-list) + (make-text-button (point) (progn (prin1 fun) (point)) + 'type 'help-function + 'help-args (list fun)) + (terpri)) + (terpri) + (princ "Note: if you have redefined a function, then it may no longer\n") + (princ "be set to debug on entry, even if it is in the list."))))) (provide 'debug) -;;; arch-tag: b6ec7047-f801-4103-9c63-d69322db9d3b +;; arch-tag: b6ec7047-f801-4103-9c63-d69322db9d3b ;;; debug.el ends here
--- a/lisp/emacs-lisp/re-builder.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/emacs-lisp/re-builder.el Mon Feb 28 15:15:44 2005 +0000 @@ -327,10 +327,16 @@ "Return binding for SYMBOL in the RE Builder target buffer." `(with-current-buffer reb-target-buffer ,symbol)) +;;; This is to help people find this in Apropos. +;;;###autoload +(defun regexp-builder () + "Alias for `re-builder': Construct a regexp interactively." + (interactive) + (re-builder)) ;;;###autoload (defun re-builder () - "Call up the RE Builder for the current window." + "Construct a regexp interactively." (interactive) (if (and (string= (buffer-name) reb-buffer)
--- a/lisp/emacs-lisp/trace.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/emacs-lisp/trace.el Mon Feb 28 15:15:44 2005 +0000 @@ -1,6 +1,6 @@ ;;; trace.el --- tracing facility for Emacs Lisp functions -;; Copyright (C) 1993 Free Software Foundation, Inc. +;; Copyright (C) 1993, 1998, 2000, 2005 Free Software Foundation, Inc. ;; Author: Hans Chalupsky <hans@cs.buffalo.edu> ;; Maintainer: FSF @@ -175,6 +175,9 @@ ;; Used to separate new trace output from previous traced runs: (defvar trace-separator (format "%s\n" (make-string 70 ?=))) +(defvar inhibit-trace nil + "If non-nil, all tracing is temporarily inhibited.") + (defun trace-entry-message (function level argument-bindings) ;; Generates a string that describes that FUNCTION has been entered at ;; trace LEVEL with ARGUMENT-BINDINGS. @@ -183,14 +186,13 @@ (if (> level 1) " " "") level function - (mapconcat (function - (lambda (binding) - (concat - (symbol-name (ad-arg-binding-field binding 'name)) - "=" - ;; do this so we'll see strings: - (prin1-to-string - (ad-arg-binding-field binding 'value))))) + (mapconcat (lambda (binding) + (concat + (symbol-name (ad-arg-binding-field binding 'name)) + "=" + ;; do this so we'll see strings: + (prin1-to-string + (ad-arg-binding-field binding 'value)))) argument-bindings " "))) @@ -211,43 +213,27 @@ ;; (quietly if BACKGROUND is t). (ad-make-advice trace-advice-name nil t - (cond (background - `(advice - lambda () - (let ((trace-level (1+ trace-level)) - (trace-buffer (get-buffer-create ,buffer))) - (save-excursion - (set-buffer trace-buffer) - (goto-char (point-max)) - ;; Insert a separator from previous trace output: - (if (= trace-level 1) (insert trace-separator)) - (insert - (trace-entry-message - ',function trace-level ad-arg-bindings))) - ad-do-it - (save-excursion - (set-buffer trace-buffer) - (goto-char (point-max)) - (insert - (trace-exit-message - ',function trace-level ad-return-value)))))) - (t `(advice - lambda () - (let ((trace-level (1+ trace-level)) - (trace-buffer (get-buffer-create ,buffer))) - (pop-to-buffer trace-buffer) - (goto-char (point-max)) - ;; Insert a separator from previous trace output: - (if (= trace-level 1) (insert trace-separator)) - (insert - (trace-entry-message - ',function trace-level ad-arg-bindings)) - ad-do-it - (pop-to-buffer trace-buffer) - (goto-char (point-max)) - (insert - (trace-exit-message - ',function trace-level ad-return-value)))))))) + `(advice + lambda () + (let ((trace-level (1+ trace-level)) + (trace-buffer (get-buffer-create ,buffer))) + (unless inhibit-trace + (with-current-buffer trace-buffer + ,(unless background '(pop-to-buffer trace-buffer)) + (goto-char (point-max)) + ;; Insert a separator from previous trace output: + (if (= trace-level 1) (insert trace-separator)) + (insert + (trace-entry-message + ',function trace-level ad-arg-bindings)))) + ad-do-it + (unless inhibit-trace + (with-current-buffer trace-buffer + ,(unless background '(pop-to-buffer trace-buffer)) + (goto-char (point-max)) + (insert + (trace-exit-message + ',function trace-level ad-return-value)))))))) (defun trace-function-internal (function buffer background) ;; Adds trace advice for FUNCTION and activates it. @@ -297,9 +283,9 @@ was not traced this is a noop." (interactive (list (ad-read-advised-function "Untrace function: " 'trace-is-traced))) - (cond ((trace-is-traced function) - (ad-remove-advice function 'around trace-advice-name) - (ad-update function)))) + (when (trace-is-traced function) + (ad-remove-advice function 'around trace-advice-name) + (ad-update function))) (defun untrace-all () "Untraces all currently traced functions." @@ -309,5 +295,5 @@ (provide 'trace) -;;; arch-tag: cfd170a7-4932-4331-8c8b-b7151942e5a1 +;; arch-tag: cfd170a7-4932-4331-8c8b-b7151942e5a1 ;;; trace.el ends here
--- a/lisp/gnus/ChangeLog Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/gnus/ChangeLog Mon Feb 28 15:15:44 2005 +0000 @@ -1,13 +1,26 @@ +2005-02-27 Arne J,Ax(Brgensen <arne@arnested.dk> + + * mm-decode.el (mm-dissect-buffer): Pass the from field on to + `mm-dissect-multipart' and receive the from field as an (optional) + argument from `mm-dissect-multipart'. + (mm-dissect-multipart): Receive the from field as an argument and + pass it on when we call `mm-dissect-buffer' on MIME parts. Fixes + verification/decryption of signed/encrypted MIME parts. + +2005-02-26 Stefan Monnier <monnier@iro.umontreal.ca> + + * gnus-sum.el (gnus-summary-exit): Move point after displaying the + buffer, so it moves the window's cursor. + 2005-02-24 Reiner Steib <Reiner.Steib@gmx.de> - * nnheader.el (nnheader-find-file-noselect): Added doc string. + * nnheader.el (nnheader-find-file-noselect): Add doc string. * nnfolder.el (nnfolder-read-folder): Use RAWFILE for - `nnheader-find-file-noselect' to avoid - `large-file-warning-threshold'. + `nnheader-find-file-noselect' to avoid `large-file-warning-threshold'. - * gnus-sum.el (gnus-summary-caesar-message): Apply - `gnus-treat-article' after rotation. + * gnus-sum.el (gnus-summary-caesar-message): + Apply `gnus-treat-article' after rotation. * gnus-group.el (gnus-group-clear-data): Mention process/prefix in doc string. @@ -41,7 +54,7 @@ 2005-02-16 Teodor Zlatanov <tzz@lifelogs.com> - * gnus-registry.el (gnus-registry-delete-group): minor bug fix + * gnus-registry.el (gnus-registry-delete-group): Minor bug fix. * gnus.el (gnus-install-group-spam-parameters): Doc fix.
--- a/lisp/gnus/gnus-sum.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/gnus/gnus-sum.el Mon Feb 28 15:15:44 2005 +0000 @@ -1,5 +1,5 @@ ;;; gnus-sum.el --- summary mode commands for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 ;; Free Software Foundation, Inc. ;; Author: Lars Magne Ingebrigtsen <larsi@gnus.org> @@ -6680,9 +6680,11 @@ (set-buffer gnus-group-buffer) (if quit-config (gnus-handle-ephemeral-exit quit-config) - (goto-char group-point) (unless leave-hidden - (gnus-configure-windows 'group 'force))) + (gnus-configure-windows 'group 'force)) + ;; Move point after calling gnus-configure-windows to make sure it + ;; moves the window's point as well. + (goto-char group-point)) ;; Clear the current group name. (unless quit-config (setq gnus-newsgroup-name nil)))))
--- a/lisp/gnus/mm-decode.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/gnus/mm-decode.el Mon Feb 28 15:15:44 2005 +0000 @@ -509,10 +509,10 @@ (message "Destroying external MIME viewers") (mm-destroy-parts mm-postponed-undisplay-list))) -(defun mm-dissect-buffer (&optional no-strict-mime loose-mime) +(defun mm-dissect-buffer (&optional no-strict-mime loose-mime from) "Dissect the current buffer and return a list of MIME handles." (save-excursion - (let (ct ctl type subtype cte cd description id result from) + (let (ct ctl type subtype cte cd description id result) (save-restriction (mail-narrow-to-head) (when (or no-strict-mime @@ -523,8 +523,9 @@ cte (mail-fetch-field "content-transfer-encoding") cd (mail-fetch-field "content-disposition") description (mail-fetch-field "content-description") - from (mail-fetch-field "from") id (mail-fetch-field "content-id")) + (unless from + (setq from (mail-fetch-field "from"))) ;; FIXME: In some circumstances, this code is running within ;; an unibyte macro. mail-extract-address-components ;; creates unibyte buffers. This `if', though not a perfect @@ -567,7 +568,7 @@ 'from from 'start start) (car ctl)) - (cons (car ctl) (mm-dissect-multipart ctl)))) + (cons (car ctl) (mm-dissect-multipart ctl from)))) (t (mm-possibly-verify-or-decrypt (mm-dissect-singlepart @@ -594,7 +595,7 @@ (mm-make-handle (mm-copy-to-buffer) ctl cte nil cdl description nil id))) -(defun mm-dissect-multipart (ctl) +(defun mm-dissect-multipart (ctl from) (goto-char (point-min)) (let* ((boundary (concat "\n--" (mail-content-type-get ctl 'boundary))) (close-delimiter (concat (regexp-quote boundary) "--[ \t]*$")) @@ -611,7 +612,7 @@ (save-excursion (save-restriction (narrow-to-region start (point)) - (setq parts (nconc (list (mm-dissect-buffer t)) parts))))) + (setq parts (nconc (list (mm-dissect-buffer t nil from)) parts))))) (end-of-line 2) (or (looking-at boundary) (forward-line 1)) @@ -620,7 +621,7 @@ (save-excursion (save-restriction (narrow-to-region start end) - (setq parts (nconc (list (mm-dissect-buffer t)) parts))))) + (setq parts (nconc (list (mm-dissect-buffer t nil from)) parts))))) (mm-possibly-verify-or-decrypt (nreverse parts) ctl))) (defun mm-copy-to-buffer ()
--- a/lisp/international/utf-16.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/international/utf-16.el Mon Feb 28 15:15:44 2005 +0000 @@ -391,7 +391,7 @@ (define-ccl-program ccl-encode-mule-utf-16le - `(1 + `(2 ,utf-16le-encode-loop) "Encode to UTF-16LE (little endian without signature). Characters from the charsets ascii, eight-bit-control, @@ -401,7 +401,7 @@ Others are encoded as U+FFFD.") (define-ccl-program ccl-encode-mule-utf-16be - `(1 + `(2 ,utf-16be-encode-loop) "Encode to UTF-16BE (big endian without signature). Characters from the charsets ascii, eight-bit-control, @@ -411,7 +411,7 @@ Others are encoded as U+FFFD.") (define-ccl-program ccl-encode-mule-utf-16le-with-signature - `(1 + `(4 ((write #xFF) (write #xFE) ,@utf-16le-encode-loop)) @@ -423,7 +423,7 @@ Others are encoded as U+FFFD.") (define-ccl-program ccl-encode-mule-utf-16be-with-signature - `(1 + `(4 ((write #xFE) (write #xFF) ,@utf-16be-encode-loop))
--- a/lisp/mouse.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/mouse.el Mon Feb 28 15:15:44 2005 +0000 @@ -82,6 +82,17 @@ (other :tag "Single click" t)) :group 'mouse) +(defcustom mouse-1-click-in-non-selected-windows t + "*If non-nil, a Mouse-1 click also follows links in non-selected windows. + +If nil, a Mouse-1 click on a link in a non-selected window performs +the normal mouse-1 binding, typically selects the window and sets +point at the click position." + :type 'boolean + :version "22.1" + :group 'mouse) + + ;; Provide a mode-specific menu on a mouse button. @@ -771,6 +782,8 @@ "Return non-nil if POS is on a link in the current buffer. POS must be a buffer position in the current buffer or an mouse event location in the selected window, see `event-start'. +However, if `mouse-1-click-in-non-selected-windows' is non-nil, +POS may be a mouse event location in any window. A clickable link is identified by one of the following methods: @@ -805,21 +818,24 @@ - Otherwise, the mouse-1 event is translated into a mouse-2 event at the same position." - (if (consp pos) - (setq pos (and (eq (selected-window) (posn-window pos)) - (posn-point pos)))) - (when pos - (let ((action - (or (get-char-property pos 'follow-link) - (save-excursion - (goto-char pos) - (key-binding [follow-link] nil t))))) - (cond - ((eq action 'mouse-face) - (and (get-char-property pos 'mouse-face) t)) - ((functionp action) - (funcall action pos)) - (t action))))) + (let ((w (and (consp pos) (posn-window pos)))) + (if (consp pos) + (setq pos (and (or mouse-1-click-in-non-selected-windows + (eq (selected-window) w)) + (posn-point pos)))) + (when pos + (with-current-buffer (window-buffer w) + (let ((action + (or (get-char-property pos 'follow-link) + (save-excursion + (goto-char pos) + (key-binding [follow-link] nil t))))) + (cond + ((eq action 'mouse-face) + (and (get-char-property pos 'mouse-face) t)) + ((functionp action) + (funcall action pos)) + (t action))))))) (defun mouse-drag-region-1 (start-event) @@ -839,7 +855,8 @@ ;; Don't count the mode line. (1- (nth 3 bounds)))) (on-link (and mouse-1-click-follows-link - (eq start-window (selected-window)))) + (or mouse-1-click-in-non-selected-windows + (eq start-window (selected-window))))) remap-double-click (click-count (1- (event-click-count start-event)))) (setq mouse-selection-click-count click-count)
--- a/lisp/net/tramp.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/net/tramp.el Mon Feb 28 15:15:44 2005 +0000 @@ -4107,7 +4107,7 @@ ((member operation (list 'dired-call-process ; Emacs only - 'shell + 'shell-command ; Post Emacs 21.3 only 'process-file ; XEmacs only
--- a/lisp/progmodes/perl-mode.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/progmodes/perl-mode.el Mon Feb 28 15:15:44 2005 +0000 @@ -161,10 +161,11 @@ (defvar perl-imenu-generic-expression '(;; Functions - (nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)\\(\\s-\\|\n\\)*{" 1 ) + (nil "^sub\\s-+\\([-A-Za-z0-9+_:]+\\)" 1) ;;Variables - ("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1 ) - ("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1 )) + ("Variables" "^\\([$@%][-A-Za-z0-9+_:]+\\)\\s-*=" 1) + ("Packages" "^package\\s-+\\([-A-Za-z0-9+_:]+\\);" 1) + ("Doc sections" "^=head[0-9][ \t]+\\(.*\\)" 1)) "Imenu generic expression for Perl mode. See `imenu-generic-expression'.") ;; Regexps updated with help from Tom Tromey <tromey@cambric.colorado.edu> and @@ -411,6 +412,20 @@ (defcustom perl-nochange ";?#\\|\f\\|\\s(\\|\\(\\w\\|\\s_\\)+:[^:]" "*Lines starting with this regular expression are not auto-indented." :type 'regexp) + +;; Outline support + +(defvar perl-outline-regexp + (concat (mapconcat 'cadr perl-imenu-generic-expression "\\|") + "\\|^=cut\\>")) + +(defun perl-outline-level () + (cond + ((looking-at "package\\s-") 0) + ((looking-at "sub\\s-") 1) + ((looking-at "=head[0-9]") (- (char-before (match-end 0)) ?0)) + ((looking-at "=cut") 1) + (t 3))) ;;;###autoload (defun perl-mode () @@ -498,9 +513,12 @@ . perl-font-lock-syntactic-face-function) (parse-sexp-lookup-properties . t))) ;; Tell imenu how to handle Perl. - (make-local-variable 'imenu-generic-expression) - (setq imenu-generic-expression perl-imenu-generic-expression) + (set (make-local-variable 'imenu-generic-expression) + perl-imenu-generic-expression) (setq imenu-case-fold-search nil) + ;; Setup outline-minor-mode. + (set (make-local-variable 'outline-regexp) perl-outline-regexp) + (set (make-local-variable 'outline-level) 'perl-outline-level) (run-hooks 'perl-mode-hook)) ;; This is used by indent-for-comment
--- a/lisp/register.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/register.el Mon Feb 28 15:15:44 2005 +0000 @@ -227,8 +227,10 @@ (princ (car val)))) ((stringp val) - (remove-list-of-text-properties 0 (length val) - yank-excluded-properties val) + (if (eq yank-excluded-properties t) + (set-text-properties 0 (length val) nil val) + (remove-list-of-text-properties 0 (length val) + yank-excluded-properties val)) (if verbose (progn (princ "the text:\n")
--- a/lisp/replace.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/replace.el Mon Feb 28 15:15:44 2005 +0000 @@ -1,7 +1,7 @@ ;;; replace.el --- replace commands for Emacs ;; Copyright (C) 1985, 1986, 1987, 1992, 1994, 1996, 1997, 2000, 2001, 2002, -;; 2003, 2004 Free Software Foundation, Inc. +;; 2003, 2004, 2005 Free Software Foundation, Inc. ;; Maintainer: FSF @@ -116,10 +116,10 @@ nil t t)))) (if (and (zerop (length from)) lastto lastfrom) (progn + (set query-replace-from-history-variable + (cdr (symbol-value query-replace-from-history-variable))) (cons lastfrom - (query-replace-compile-replacement lastto regexp-flag)) - (set query-replace-from-history-variable - (cdr (symbol-value query-replace-from-history-variable)))) + (query-replace-compile-replacement lastto regexp-flag))) ;; Warn if user types \n or \t, but don't reject the input. (and regexp-flag (string-match "\\(\\`\\|[^\\]\\)\\(\\\\\\\\\\)*\\(\\\\[nt]\\)" from)
--- a/lisp/reveal.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/reveal.el Mon Feb 28 15:15:44 2005 +0000 @@ -1,6 +1,6 @@ ;;; reveal.el --- Automatically reveal hidden text at point -;; Copyright (C) 2000, 2001, 2004 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2004, 2005 Free Software Foundation, Inc. ;; Author: Stefan Monnier <monnier@cs.yale.edu> ;; Keywords: outlines @@ -93,16 +93,22 @@ (overlays-at (point)))) (push (cons (selected-window) ol) reveal-open-spots) (setq old-ols (delq ol old-ols)) - (let ((open (overlay-get ol 'reveal-toggle-invisible)) inv) - (when (or open - (and (setq inv (overlay-get ol 'invisible)) - (symbolp inv) - (or (setq open (or (get inv 'reveal-toggle-invisible) - (overlay-get ol 'isearch-open-invisible-temporary))) - (overlay-get ol 'isearch-open-invisible) - (and (consp buffer-invisibility-spec) - (assq inv buffer-invisibility-spec))) - (overlay-put ol 'reveal-invisible inv))) + (let ((inv (overlay-get ol 'invisible)) open) + (when (and inv + ;; There's an `invisible' property. Make sure it's + ;; actually invisible. + (or (not (listp buffer-invisibility-spec)) + (memq inv buffer-invisibility-spec) + (assq inv buffer-invisibility-spec)) + (or (setq open + (or (overlay-get ol 'reveal-toggle-invisible) + (and (symbolp inv) + (get inv 'reveal-toggle-invisible)) + (overlay-get ol 'isearch-open-invisible-temporary))) + (overlay-get ol 'isearch-open-invisible) + (and (consp buffer-invisibility-spec) + (cdr (assq inv buffer-invisibility-spec)))) + (overlay-put ol 'reveal-invisible inv)) (if (null open) (overlay-put ol 'invisible nil) ;; Use the provided opening function and repeat (since the @@ -110,7 +116,8 @@ (setq repeat t) (condition-case err (funcall open ol nil) - (error (message "!!Reveal-show: %s !!" err) + (error (message "!!Reveal-show (funcall %s %s nil): %s !!" + open ol err) ;; Let's default to a meaningful behavior to avoid ;; getting stuck in an infinite loop. (setq repeat nil) @@ -147,7 +154,8 @@ (overlay-get ol 'isearch-open-invisible-temporary))))) (condition-case err (funcall open ol t) - (error (message "!!Reveal-hide: %s !!" err))) + (error (message "!!Reveal-hide (funcall %s %s t): %s !!" + open ol err))) (overlay-put ol 'invisible inv)))))))) (error (message "Reveal: %s" err)))))
--- a/lisp/speedbar.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/speedbar.el Mon Feb 28 15:15:44 2005 +0000 @@ -761,11 +761,9 @@ (display-graphic-p) window-system)) "*Non-nil means to automatically update the display. -When this is nil then speedbar will not follow the attached frame's path. -When speedbar is active, use: - -\\<speedbar-key-map> `\\[speedbar-toggle-updates]' - +When this is nil then speedbar will not follow the attached +frame's path. Type \ +\\<speedbar-key-map>\\[speedbar-toggle-updates] in the speedbar \ to toggle this value.") (defvar speedbar-syntax-table nil @@ -1344,7 +1342,7 @@ (if (equal (car pos) speedbar-frame) (save-excursion (save-window-excursion - (apply 'set-mouse-position pos) + (apply 'set-mouse-position (list (car pos) (cadr pos) (cddr pos))) (speedbar-item-info)))))) (defun speedbar-set-mode-line-format ()
--- a/lisp/textmodes/flyspell.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/textmodes/flyspell.el Mon Feb 28 15:15:44 2005 +0000 @@ -543,8 +543,9 @@ "Turn Flyspell mode on. Do not use this; use `flyspell-mode' instead." (setq ispell-highlight-face 'flyspell-incorrect-face) ;; local dictionaries setup - (ispell-change-dictionary - (or ispell-local-dictionary ispell-dictionary flyspell-default-dictionary)) + (or ispell-local-dictionary ispell-dictionary + (if flyspell-default-dictionary + (ispell-change-dictionary flyspell-default-dictionary))) ;; we have to force ispell to accept the local definition or ;; otherwise it could be too late, the local dictionary may ;; be forgotten!
--- a/lisp/textmodes/ispell.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/textmodes/ispell.el Mon Feb 28 15:15:44 2005 +0000 @@ -2417,9 +2417,10 @@ ;;;###autoload (defun ispell-change-dictionary (dict &optional arg) "Change to dictionary DICT for Ispell. -By just answering RET you can find out what the current dictionary is. - -With prefix argument, set the default dictionary." +With a prefix arg, set it \"globally\", for all buffers. +Without a prefix arg, set it \"locally\", just for this buffer. + +By just answering RET you can find out what the current dictionary is." (interactive (list (completing-read "Use new dictionary (RET for current, SPC to complete): "
--- a/lisp/url/ChangeLog Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/url/ChangeLog Mon Feb 28 15:15:44 2005 +0000 @@ -1,3 +1,8 @@ +2005-02-26 James Cloos <cloos@jhcloos.com> (tiny change) + + * url-history.el (url-have-visited-url): Don't barf if + url-history-hash-table is nil. + 2005-02-14 Michael Welsh Duggan <md5i@cs.cmu.edu> * url-http.el (url-http-parse-headers): Test url-automatic-caching.
--- a/lisp/url/url-history.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/url/url-history.el Mon Feb 28 15:15:44 2005 +0000 @@ -164,7 +164,8 @@ (defun url-have-visited-url (url) (url-do-setup) - (gethash url url-history-hash-table nil)) + (and url-history-hash-table + (gethash url url-history-hash-table nil))) (defun url-completion-function (string predicate function) (url-do-setup)
--- a/lisp/vc.el Fri Feb 25 13:02:38 2005 +0000 +++ b/lisp/vc.el Mon Feb 28 15:15:44 2005 +0000 @@ -958,6 +958,9 @@ (mapconcat 'identity vc-path path-separator)) process-environment)) (w32-quote-process-args t)) + (if (and (eq okstatus 'async) (file-remote-p default-directory)) + ;; start-process does not support remote execution + (setq okstatus nil)) (if (eq okstatus 'async) (let ((proc (apply 'start-process command (current-buffer) command squeezed)))
--- a/lispref/ChangeLog Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/ChangeLog Mon Feb 28 15:15:44 2005 +0000 @@ -1,3 +1,66 @@ +2005-02-26 Richard M. Stallman <rms@gnu.org> + + * tips.texi (Coding Conventions): Clarify. + Put all the major mode key reservations together. + Mention the Mouse-1 => Mouse-2 conventions. + + * syntax.texi (Syntax Class Table): Clarify. + (Syntax Table Functions): syntax-after moved from here. + (Syntax Table Internals): syntax-after moved to here. + (Parsing Expressions): Update info on number of values + and what's meaningful in the STATE argument. + (Categories): Fix typo. + + * sequences.texi (Arrays): Cleanup. + (Char-Tables): Clarify. + + * processes.texi (Deleting Processes): Cleanups, add xref. + (Subprocess Creation): Explain nil in exec-path. Cleanup. + (Process Information): set-process-coding-system, some args optional. + (Input to Processes): Explain various types for PROCESS args. + Rename them from PROCESS-NAME to PROCESS. + (Signals to Processes): Likewise. + (Decoding Output): Cleanup. + (Query Before Exit): Clarify. + + * os.texi (Startup Summary): Correct the options; add missing ones. + (Terminal Output, Batch Mode): Clarify. + (Flow Control): Node deleted. + + * markers.texi (The Mark): Clarify. + + * macros.texi (Expansion): Cleanup. + (Indenting Macros): indent-spec allows ints, not floats. + + * keymaps.texi (Keymaps): Clarify. + (Format of Keymaps): Update lisp-mode-map example. + (Active Keymaps, Key Lookup): Clarify. + (Changing Key Bindings): Add xref to `kbd'. + (Key Binding Commands, Simple Menu Items): Clarify. + (Mouse Menus, Menu Bar): Clarify. + (Menu Example): Replace print example with menu-bar-replace-menu. + + * help.texi (Documentation Basics): Add function-documentation prop. + + * elisp.texi (Top): Don't refer to Flow Control node. + + * commands.texi (Command Overview): Improve xrefs. + (Adjusting Point): Adjusting point applies to intangible and invis. + (Key Sequence Input): Doc extra read-key-sequence args. + Likewise for read-key-sequence-vector. + + * backups.texi (Rename or Copy): Minor fix. + (Numbered Backups): For version-control, say the default. + (Auto-Saving): make-auto-save-file-name example is simplified. + + * advice.texi (Advising Functions): Don't imply one part of Emacs + should advise another part. Markup changes. + (Defining Advice): Move transitional para. + (Activation of Advice): Cleanup. + Explain if COMPILE is nil or negative. + + * abbrevs.texi (Abbrev Expansion): Clarify, fix typo. + 2005-02-24 Lute Kamstra <lute@gnu.org> * modes.texi (Defining Minor Modes): Explain that INIT-VALUE,
--- a/lispref/abbrevs.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/abbrevs.texi Mon Feb 28 15:15:44 2005 +0000 @@ -269,10 +269,10 @@ @end deffn @deffn Command abbrev-prefix-mark &optional arg -This command marks current point as the beginning of an abbrev. The -next call to @code{expand-abbrev} will use the text from here to point -(where it is then) as the abbrev to expand, rather than using the -previous word as usual. +This command marks the current location of point as the beginning of +an abbrev. The next call to @code{expand-abbrev} will use the text +from here to point (where it is then) as the abbrev to expand, rather +than using the previous word as usual. First, this command expands any abbrev before point, unless @var{arg} is non-@code{nil}. (Interactively, @var{arg} is the prefix argument.) @@ -363,7 +363,7 @@ nil t))) @end smallexample -Note that @code{foo-mode-pre-abbrex-expand} just returns @code{nil} +Note that @code{foo-mode-pre-abbrev-expand} just returns @code{nil} without doing anything for lines not starting with @samp{#}. Hence abbrevs expand normally using @code{foo-mode-abbrev-table} as local abbrev table for such lines.
--- a/lispref/advice.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/advice.texi Mon Feb 28 15:15:44 2005 +0000 @@ -7,15 +7,15 @@ @chapter Advising Emacs Lisp Functions @cindex advising functions - The @dfn{advice} feature lets you add to the existing definition of a -function, by @dfn{advising the function}. This is a clean method for a -library to customize functions defined by other parts of Emacs---cleaner + The @dfn{advice} feature lets you add to the existing definition of +a function, by @dfn{advising the function}. This is a clean method +for a library to customize functions defined within Emacs---cleaner than redefining the whole function. @cindex piece of advice Each function can have multiple @dfn{pieces of advice}, separately defined. Each defined piece of advice can be @dfn{enabled} or -disabled explicitly. All the enabled pieces of advice for any given +@dfn{disabled} explicitly. All the enabled pieces of advice for any given function actually take effect when you @dfn{activate} advice for that function, or when you define or redefine the function. Note that enabling a piece of advice and activating advice for a function @@ -129,6 +129,9 @@ describing the entity being advised, but this always includes macros and special forms. + In place of the argument list in an ordinary definition, an advice +definition calls for several different pieces of information. + @cindex class of advice @cindex before-advice @cindex after-advice @@ -154,9 +157,6 @@ @var{function}. The name allows you to refer to the piece of advice---to redefine it, or to enable or disable it. -In place of the argument list in an ordinary definition, an advice -definition calls for several different pieces of information. - The optional @var{position} specifies where, in the current list of advice of the specified @var{class}, this new advice should be placed. It should be either @code{first}, @code{last} or a number that specifies @@ -332,9 +332,9 @@ @cindex advice, activating By default, advice does not take effect when you define it---only when -you @dfn{activate} advice for the function that was advised. However -the advice will be automatically activated if the function is defined -or redefined later. You can request the activation of advice for a +you @dfn{activate} advice for the function that was advised. However, +the advice will be activated automatically if you define or redefine +the function later. You can request the activation of advice for a function when you define the advice, by specifying the @code{activate} flag in the @code{defadvice}. But normally you activate the advice for a function by calling the function @code{ad-activate} or one of @@ -353,9 +353,11 @@ @ref{Enabling Advice}.) This definition is installed, and optionally byte-compiled as well, depending on conditions described below. -In all of the commands to activate advice, if @var{compile} is @code{t}, -the command also compiles the combined definition which implements the -advice. +In all of the commands to activate advice, if @var{compile} is +@code{t} (or anything but @code{nil} or a negative number), the +command also compiles the combined definition which implements the +advice. If it is @code{nil} or a negative number, what happens +depends on @code{ad-default-compilation-action} as described below. @deffn Command ad-activate function &optional compile This command activates all the advice defined for @var{function}. @@ -438,9 +440,8 @@ compiled or a built-in function. This variable takes effect only if the @var{compile} argument of -@code{ad-activate} (or any of the above functions) was supplied as -@code{nil}. If that argument is non-@code{nil}, that means -to compile the advice regardless. +@code{ad-activate} (or any of the above functions) did not force +compilation. @end defopt If the advised definition was constructed during ``preactivation''
--- a/lispref/backups.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/backups.texi Mon Feb 28 15:15:44 2005 +0000 @@ -198,7 +198,7 @@ copying. @end defopt - The following two variables, when non-@code{nil}, cause the second + The following three variables, when non-@code{nil}, cause the second method to be used in certain special cases. They have no effect on the treatment of files that don't fall into the special cases. @@ -253,7 +253,7 @@ @table @asis @item @code{nil} Make numbered backups if the visited file already has numbered backups; -otherwise, do not. +otherwise, do not. This is the default. @item @code{never} Do not make numbered backups. @@ -503,7 +503,8 @@ @end group @end example -The standard definition of this function is as follows: +Here is a simplified version of the standard definition of this +function: @example @group
--- a/lispref/commands.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/commands.texi Mon Feb 28 15:15:44 2005 +0000 @@ -74,15 +74,15 @@ The editor command loop runs this normal hook before each command. At that time, @code{this-command} contains the command that is about to run, and @code{last-command} describes the previous command. -@xref{Hooks}. +@xref{Command Loop Info}. @end defvar @defvar post-command-hook The editor command loop runs this normal hook after each command (including commands terminated prematurely by quitting or by errors), and also when the command loop is first entered. At that time, -@code{this-command} describes the command that just ran, and -@code{last-command} describes the command before that. @xref{Hooks}. +@code{this-command} refers to the command that just ran, and +@code{last-command} refers to the command before that. @end defvar Quitting is suppressed while running @code{pre-command-hook} and @@ -840,21 +840,21 @@ @node Adjusting Point @section Adjusting Point After Commands - It is not easy to display a value of point in the middle of a sequence -of text that has the @code{display} or @code{composition} property. So -after a command finishes and returns to the command loop, if point is -within such a sequence, the command loop normally moves point to the -edge of the sequence. + It is not easy to display a value of point in the middle of a +sequence of text that has the @code{display}, @code{composition} or +@code{intangible} property, or is invisible. Therefore, after a +command finishes and returns to the command loop, if point is within +such a sequence, the command loop normally moves point to the edge of +the sequence. A command can inhibit this feature by setting the variable @code{disable-point-adjustment}: @defvar disable-point-adjustment @tindex disable-point-adjustment -If this variable is non-@code{nil} when a command returns to the command -loop, then the command loop does not check for text properties such as -@code{display} and @code{composition}, and does not move point out of -sequences that have these properties. +If this variable is non-@code{nil} when a command returns to the +command loop, then the command loop does not check for those text +properties, and does not move point out of sequences that have them. The command loop sets this variable to @code{nil} before each command, so if a command sets it, the effect applies only to that command. @@ -2051,7 +2051,7 @@ @code{read-key-sequence}. Lisp programs can also call this function; for example, @code{describe-key} uses it to read the key to describe. -@defun read-key-sequence prompt +@defun read-key-sequence prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop @cindex key sequence This function reads a key sequence and returns it as a string or vector. It keeps reading events until it has accumulated a complete key @@ -2066,8 +2066,28 @@ events---characters, symbols, and lists. The elements of the string or vector are the events in the key sequence. -The argument @var{prompt} is either a string to be displayed in the echo -area as a prompt, or @code{nil}, meaning not to display a prompt. +The argument @var{prompt} is either a string to be displayed in the +echo area as a prompt, or @code{nil}, meaning not to display a prompt. +The argument @var{continue-echo}, if non-@code{nil}, means to echo +this key as a continuation of the previous key. + +Normally any upper case event is converted to lower case if the +original event is undefined and the lower case equivalent is defined. +The argument @var{dont-downcase-last}, if non-@code{nil}, means do not +convert the last event to lower case. This is appropriate for reading +a key sequence to be defined. + +The argument @var{switch-frame-ok}, if non-@code{nil}, means that this +function should process a @code{switch-frame} event if the user +switches frames before typing anything. If the user switches frames +in the middle of a key sequence, or at the start of the sequence but +@var{switch-frame-ok} is @code{nil}, then the event will be put off +until after the current key sequence. + +The argument @var{command-loop}, if non-@code{nil}, means that this +key sequence is being read by something that will read commands one +after another. It should be @code{nil} if the caller will read just +one key sequence. In the example below, the prompt @samp{?} is displayed in the echo area, and the user types @kbd{C-x C-f}. @@ -2089,7 +2109,7 @@ and does not set @code{quit-flag}. @xref{Quitting}. @end defun -@defun read-key-sequence-vector prompt +@defun read-key-sequence-vector prompt &optional continue-echo dont-downcase-last switch-frame-ok command-loop This is like @code{read-key-sequence} except that it always returns the key sequence as a vector, never as a string. @xref{Strings of Events}.
--- a/lispref/elisp.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/elisp.texi Mon Feb 28 15:15:44 2005 +0000 @@ -873,7 +873,6 @@ * System Environment:: Distinguish the name and kind of system. * Terminal Input:: Recording terminal input for debugging. * Terminal Output:: Recording terminal output for debugging. -* Flow Control:: How to turn output flow control on or off. * Batch Mode:: Running Emacs without terminal interaction. Starting Up Emacs
--- a/lispref/help.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/help.texi Mon Feb 28 15:15:44 2005 +0000 @@ -66,9 +66,13 @@ @itemize @bullet @item -The documentation for a function is stored in the function definition -itself (@pxref{Lambda Expressions}). The function @code{documentation} -knows how to extract it. +@kindex function-documentation +The documentation for a function is usually stored in the function +definition itself (@pxref{Lambda Expressions}). The function +@code{documentation} knows how to extract it. You can also put +function documentation in the @code{function-documentation} property +of the function name. That is useful with definitions such as +keyboard macros that can't hold a documentation string. @item @kindex variable-documentation
--- a/lispref/keymaps.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/keymaps.texi Mon Feb 28 15:15:44 2005 +0000 @@ -10,7 +10,7 @@ The bindings between input events and commands are recorded in data structures called @dfn{keymaps}. Each binding in a keymap associates -(or @dfn{binds}) an individual event type either to another keymap or to +(or @dfn{binds}) an individual event type, either to another keymap or to a command. When an event type is bound to a keymap, that keymap is used to look up the next input event; this continues until a command is found. The whole process is called @dfn{key lookup}. @@ -202,24 +202,29 @@ @end group @group (keymap - ;; @key{TAB} - (9 . lisp-indent-line) + (3 keymap + ;; @kbd{C-c C-z} + (26 . run-lisp)) @end group @group + (27 keymap + ;; @r{@kbd{M-C-x}, treated as @kbd{@key{ESC} C-x}} + (24 . lisp-send-defun) + keymap + ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}} + (17 . indent-sexp))) +@end group +@group + ;; @r{This part is inherited from @code{lisp-mode-shared-map}.} + keymap ;; @key{DEL} (127 . backward-delete-char-untabify) @end group @group - (3 keymap - ;; @kbd{C-c C-l} - (12 . run-lisp)) -@end group -@group (27 keymap ;; @r{@kbd{M-C-q}, treated as @kbd{@key{ESC} C-q}} - (17 . indent-sexp) - ;; @r{@kbd{M-C-x}, treated as @kbd{@key{ESC} C-x}} - (24 . lisp-send-defun))) + (17 . indent-sexp)) + (9 . lisp-indent-line)) @end group @end example @@ -565,8 +570,8 @@ text or overlay property. If that is non-@code{nil}, it is the first keymap to be processed, in normal circumstances. - However, there are also special circumstances, ways programs can -substitute other keymaps for some of those. The variable + However, there are also special ways for program can to substitute +other keymaps for some of those. The variable @code{overriding-local-map}, if non-@code{nil}, specifies a keymap that replaces all the usual active keymaps except the global keymap. Another way to do this is with @code{overriding-terminal-local-map}; @@ -679,8 +684,8 @@ not do. The @sc{cdr} can be either a keymap (a list) or a symbol whose function definition is a keymap. -When more than one minor mode keymap is active, their order of priority -is the order of @code{minor-mode-map-alist}. But you should design +When more than one minor mode keymap is active, the earlier one in +@code{minor-mode-map-alist} takes priority. But you should design minor modes so that they don't interfere with each other. If you do this properly, the order will not matter. @@ -763,8 +768,8 @@ Key lookup uses just the event type of each event in the key sequence; the rest of the event is ignored. In fact, a key sequence used for key -lookup may designate mouse events with just their types (symbols) -instead of with entire mouse events (lists). @xref{Input Events}. Such +lookup may designate a mouse event with just its types (a symbol) +instead of the entire event (a list). @xref{Input Events}. Such a ``key-sequence'' is insufficient for @code{command-execute} to run, but it is sufficient for looking up or rebinding a key. @@ -1113,10 +1118,11 @@ @code{C-H-left}. One advantage of such lists is that the precise numeric codes for the modifier bits don't appear in compiled files. - For the functions below, an error is signaled if @var{keymap} is not a -keymap or if @var{key} is not a string or vector representing a key + For the functions below, an error is signaled if @var{keymap} is not +a keymap or if @var{key} is not a string or vector representing a key sequence. You can use event types (symbols) as shorthand for events -that are lists. +that are lists. The @code{kbd} macro (@pxref{Keymap Terminology}) is +a convenient way to specify the key sequence. @defun define-key keymap key binding This function sets the binding for @var{key} in @var{keymap}. (If @@ -1396,7 +1402,7 @@ @end smallexample @noindent -redefines the first (leftmost) mouse button, typed with the Meta key, to +redefines the first (leftmost) mouse button, entered with the Meta key, to set point where you click. @cindex non-@acronym{ASCII} text in keybindings @@ -1743,7 +1749,7 @@ describe the action of the command it corresponds to. Note that it is not generally possible to display non-@acronym{ASCII} text in menus. It will work for keyboard menus and will work to a large extent when Emacs is -built with Gtk+ support.@footnote{In this case, the text is first +built with the Gtk+ toolkit.@footnote{In this case, the text is first encoded using the @code{utf-8} coding system and then rendered by the toolkit as it sees fit.} @@ -2044,13 +2050,8 @@ special about @samp{@@} at the beginning of an item string is that the @samp{@@} doesn't appear in the menu item. - You can also produce multiple panes or submenus from separate keymaps. -The full definition of a prefix key always comes from merging the -definitions supplied by the various active keymaps (minor mode, local, -and global). When more than one of these keymaps is a menu, each of -them makes a separate pane or panes (when Emacs does not use an -X-toolkit) or a separate submenu (when using an X-toolkit). -@xref{Active Keymaps}. + Multiple keymaps that define the same menu prefix key produce +separate panes or separate submenus. @node Keyboard Menus @subsection Menus and the Keyboard @@ -2094,29 +2095,29 @@ @cindex menu definition example Here is a complete example of defining a menu keymap. It is the -definition of the @samp{Print} submenu in the @samp{Tools} menu in the -menu bar, and it uses the simple menu item format (@pxref{Simple Menu -Items}). First we create the keymap, and give it a name: - -@example -(defvar menu-bar-print-menu (make-sparse-keymap "Print")) -@end example +definition of the @samp{Replace} submenu in the @samp{Edit} menu in +the menu bar, and it uses the extended menu item format +(@pxref{Extended Menu Items}). First we create the keymap, and give +it a name: + +@smallexample +(defvar menu-bar-replace-menu (make-sparse-keymap "Replace")) +@end smallexample @noindent Next we define the menu items: -@example -(define-key menu-bar-print-menu [ps-print-region] - '("Postscript Print Region" . ps-print-region-with-faces)) -(define-key menu-bar-print-menu [ps-print-buffer] - '("Postscript Print Buffer" . ps-print-buffer-with-faces)) -(define-key menu-bar-print-menu [separator-ps-print] - '("--")) -(define-key menu-bar-print-menu [print-region] - '("Print Region" . print-region)) -(define-key menu-bar-print-menu [print-buffer] - '("Print Buffer" . print-buffer)) -@end example +@smallexample +(define-key menu-bar-replace-menu [tags-repl-continue] + '(menu-item "Continue Replace" tags-loop-continue + :help "Continue last tags replace operation")) +(define-key menu-bar-replace-menu [tags-repl] + '(menu-item "Replace in tagged files" tags-query-replace + :help "Interactively replace a regexp in all tagged files")) +(define-key menu-bar-replace-menu [separator-replace-tags] + '(menu-item "--")) +;; @r{@dots{}} +@end smallexample @noindent Note the symbols which the bindings are ``made for''; these appear @@ -2136,58 +2137,29 @@ The binding whose definition is @code{("--")} is a separator line. Like a real menu item, the separator has a key symbol, in this case -@code{separator-ps-print}. If one menu has two separators, they must -have two different key symbols. - - Here is code to define enable conditions for two of the commands in -the menu: - -@example -(put 'print-region 'menu-enable 'mark-active) -(put 'ps-print-region-with-faces 'menu-enable 'mark-active) -@end example +@code{separator-replace-tags}. If one menu has two separators, they +must have two different key symbols. Here is how we make this menu appear as an item in the parent menu: @example -(define-key menu-bar-tools-menu [print] - (cons "Print" menu-bar-print-menu)) +(define-key menu-bar-edit-menu [replace] + (list 'menu-item "Replace" menu-bar-replace-menu)) @end example @noindent Note that this incorporates the submenu keymap, which is the value of -the variable @code{menu-bar-print-menu}, rather than the symbol -@code{menu-bar-print-menu} itself. Using that symbol in the parent menu -item would be meaningless because @code{menu-bar-print-menu} is not a -command. - - If you wanted to attach the same print menu to a mouse click, you +the variable @code{menu-bar-replace-menu}, rather than the symbol +@code{menu-bar-replace-menu} itself. Using that symbol in the parent +menu item would be meaningless because @code{menu-bar-replace-menu} is +not a command. + + If you wanted to attach the same replace menu to a mouse click, you can do it this way: @example (define-key global-map [C-S-down-mouse-1] - menu-bar-print-menu) -@end example - - We could equally well use an extended menu item (@pxref{Extended Menu -Items}) for @code{print-region}, like this: - -@example -(define-key menu-bar-print-menu [print-region] - '(menu-item "Print Region" print-region - :enable mark-active)) -@end example - -@noindent -With the extended menu item, the enable condition is specified -inside the menu item itself. If we wanted to make this -item disappear from the menu entirely when the mark is inactive, -we could do it this way: - -@example -(define-key menu-bar-print-menu [print-region] - '(menu-item "Print Region" print-region - :visible mark-active)) + menu-bar-replace-menu) @end example @node Menu Bar @@ -2197,7 +2169,7 @@ Most window systems allow each frame to have a @dfn{menu bar}---a permanently displayed menu stretching horizontally across the top of the frame. The items of the menu bar are the subcommands of the fake -``function key'' @code{menu-bar}, as defined by all the active keymaps. +``function key'' @code{menu-bar}, as defined in the active keymaps. To add an item to the menu bar, invent a fake ``function key'' of your own (let's call it @var{key}), and make a binding for the key sequence
--- a/lispref/macros.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/macros.texi Mon Feb 28 15:15:44 2005 +0000 @@ -140,13 +140,10 @@ @defun macroexpand-all form &optional environment @cindex macro expansion in entire form - @code{macroexpand-all} expands macros like @code{macroexpand}, but will look for and expand all macros in @var{form}, not just at the -top-level. - -In emacs-lisp, @code{macroexpand-all} guarantees that if no macros -are expanded, the return value will be @code{eq} to @var{form}. +top-level. If no macros are expanded, the return value is @code{eq} +to @var{form}. Repeating the example used for @code{macroexpand} above with @code{macroexpand-all}, we see that @code{macroexpand-all} @emph{does} @@ -715,7 +712,7 @@ @item @code{defun} Handle this function like a @samp{def} construct: treat the second line as the start of a @dfn{body}. -@item a number, @var{number} +@item an integer, @var{number} The first @var{number} arguments of the function are @dfn{distinguished} arguments; the rest are considered the body of the expression. A line in the expression is indented according to
--- a/lispref/markers.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/markers.texi Mon Feb 28 15:15:44 2005 +0000 @@ -394,17 +394,17 @@ @cindex mark ring One special marker in each buffer is designated @dfn{the mark}. It -records a position for the user for the sake of commands such as -@code{kill-region} and @code{indent-rigidly}. Lisp programs should set -the mark only to values that have a potential use to the user, and never -for their own internal purposes. For example, the @code{replace-regexp} -command sets the mark to the value of point before doing any -replacements, because this enables the user to move back there -conveniently after the replace is finished. +specifies a position to bound a range of text for commands such as +@code{kill-region} and @code{indent-rigidly}. Lisp programs should +set the mark only to values that have a potential use to the user, and +never for their own internal purposes. For example, the +@code{replace-regexp} command sets the mark to the value of point +before doing any replacements, because this enables the user to move +back there conveniently after the replace is finished. - Many commands are designed so that when called interactively they -operate on the text between point and the mark. If you are writing such -a command, don't examine the mark directly; instead, use + Many commands are designed to operate on the text between point and +the mark when called interactively. If you are writing such a +command, don't examine the mark directly; instead, use @code{interactive} with the @samp{r} specification. This provides the values of point and the mark as arguments to the command in an interactive call, but permits other Lisp programs to specify arguments
--- a/lispref/os.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/os.texi Mon Feb 28 15:15:44 2005 +0000 @@ -30,7 +30,6 @@ * Terminal Output:: Recording terminal output for debugging. * Sound Output:: Playing sounds on the computer's speaker. * X11 Keysyms:: Operating on key symbols for X Windows -* Flow Control:: How to turn output flow control on or off. * Batch Mode:: Running Emacs without terminal interaction. * Session Management:: Saving and restoring state with X Session Management. @end menu @@ -86,22 +85,22 @@ It runs the normal hook @code{before-init-hook}. @item -It loads the library @file{site-start}, unless the option -@samp{-no-site-file} was specified. The library's file name is usually -@file{site-start.el}. +It loads the library @file{site-start} (if any), unless the option +@samp{-Q} (or @samp{--no-site-file}) was specified. The library's file +name is usually @file{site-start.el}. @cindex @file{site-start.el} @item -It loads your init file (usually @file{~/.emacs}), unless @samp{-q}, -@samp{-no-init-file}, or @samp{-batch} was specified on the command line. -The @samp{-u} option can specify another user whose home directory -should be used instead of @file{~}. +It loads your init file (usually @file{~/.emacs}), unless @samp{-q} +(or @samp{--no-init-file}), @samp{-Q}, or @samp{--batch} was specified +on the command line. The @samp{-u} option can specify another user +whose home directory should be used instead of @file{~}. @item -It loads the library @file{default}, unless @code{inhibit-default-init} -is non-@code{nil}. (This is not done in @samp{-batch} mode or if -@samp{-q} was specified on the command line.) The library's file name -is usually @file{default.el}. +It loads the library @file{default} (if any), unless +@code{inhibit-default-init} is non-@code{nil}. (This is not done in +@samp{-batch} mode, or if @samp{-Q} or @samp{-q} was specified on the +command line.) The library's file name is usually @file{default.el}. @cindex @file{default.el} @item @@ -118,7 +117,7 @@ @item It displays the initial echo area message, unless you have suppressed -that with @code{inhibit-startup-echo-area-message}. +that with @code{inhibit-startup-echo-area-message} or @samp{-Q}. @item It processes the action arguments from the command line. @@ -136,9 +135,8 @@ @item It displays copyleft, nonwarranty, and basic use information, provided -there were no remaining command-line arguments (a few steps above), -the value of @code{inhibit-startup-message} is @code{nil}, and the -buffer is still empty. +the value of @code{inhibit-startup-message} is @code{nil}, you didn't +specify @samp{--no-splash} or @samp{-Q}, and the buffer is still empty. @end enumerate @defopt inhibit-startup-message @@ -179,36 +177,39 @@ @cindex @file{.emacs} When you start Emacs, it normally attempts to load your @dfn{init -file}, a file in your home directory. Its normal name is @file{.emacs}, -but you can alternatively call it @file{.emacs.el}, which enables you to -byte-compile it (@pxref{Byte Compilation}); then the actual file loaded -will be @file{.emacs.elc}. +file}, a file in your home directory. Its normal name is +@file{.emacs}, but you can alternatively call it @file{.emacs.el}. +You can also store it inside a subdirectory @file{.emacs.d}. +Whichever place you use, you can also compile the file (@pxref{Byte +Compilation}); then the actual file loaded will be @file{.emacs.elc}. - The command-line switches @samp{-q} and @samp{-u} control whether and -where to find the init file; @samp{-q} says not to load an init file, -and @samp{-u @var{user}} says to load @var{user}'s init file instead of -yours. @xref{Entering Emacs,,, emacs, The GNU Emacs Manual}. If -neither option is specified, Emacs uses the @code{LOGNAME} environment + The command-line switches @samp{-q}, @samp{-Q}, and @samp{-u} +control whether and where to find the init file; @samp{-q} (and the +stronger @samp{-Q}) says not to load an init file, while @samp{-u +@var{user}} says to load @var{user}'s init file instead of yours. +@xref{Entering Emacs,,, emacs, The GNU Emacs Manual}. If neither +option is specified, Emacs uses the @code{LOGNAME} environment variable, or the @code{USER} (most systems) or @code{USERNAME} (MS -systems) variable, to find your home directory and thus your init file; -this way, even if you have su'd, Emacs still loads your own init file. -If those environment variables are absent, though, Emacs uses your -user-id to find your home directory. +systems) variable, to find your home directory and thus your init +file; this way, even if you have su'd, Emacs still loads your own init +file. If those environment variables are absent, though, Emacs uses +your user-id to find your home directory. @cindex default init file - A site may have a @dfn{default init file}, which is the library named -@file{default.el}. Emacs finds the @file{default.el} file through the -standard search path for libraries (@pxref{How Programs Do Loading}). -The Emacs distribution does not come with this file; sites may provide -one for local customizations. If the default init file exists, it is -loaded whenever you start Emacs, except in batch mode or if @samp{-q} is -specified. But your own personal init file, if any, is loaded first; if -it sets @code{inhibit-default-init} to a non-@code{nil} value, then -Emacs does not subsequently load the @file{default.el} file. + A site may have a @dfn{default init file}, which is the library +named @file{default.el}. Emacs finds the @file{default.el} file +through the standard search path for libraries (@pxref{How Programs Do +Loading}). The Emacs distribution does not come with this file; sites +may provide one for local customizations. If the default init file +exists, it is loaded whenever you start Emacs, except in batch mode or +if @samp{-q} (or @samp{-Q}) is specified. But your own personal init +file, if any, is loaded first; if it sets @code{inhibit-default-init} +to a non-@code{nil} value, then Emacs does not subsequently load the +@file{default.el} file. Another file for site-customization is @file{site-start.el}. Emacs loads this @emph{before} the user's init file. You can inhibit the -loading of this file with the option @samp{-no-site-file}. +loading of this file with the option @samp{--no-site-file}. @defvar site-run-file This variable specifies the site-customization file to load before the @@ -1526,7 +1527,7 @@ If @var{flow} is non-@code{nil}, then Emacs uses @sc{xon/xoff} (@kbd{C-q}, @kbd{C-s}) flow control for output to the terminal. This -has no effect except in @sc{cbreak} mode. @xref{Flow Control}. +has no effect except in @sc{cbreak} mode. @c Emacs 19 feature The argument @var{meta} controls support for input character codes @@ -1621,7 +1622,7 @@ char-table. Then we fill it in to swap the characters @kbd{C-s} and @kbd{C-\} and the characters @kbd{C-q} and @kbd{C-^}. Subsequently, typing @kbd{C-\} has all the usual effects of typing @kbd{C-s}, and vice -versa. (@xref{Flow Control}, for more information on this subject.) +versa. @cindex flow control example @example @@ -1820,7 +1821,7 @@ @section Terminal Output @cindex terminal output - The terminal output functions send output to the terminal, or keep + The terminal output functions send output to a text terminal, or keep track of output sent to the terminal. The variable @code{baud-rate} tells you what Emacs thinks is the output speed of the terminal. @@ -1852,6 +1853,7 @@ @defun send-string-to-terminal string This function sends @var{string} to the terminal without alteration. Control characters in @var{string} have terminal-dependent effects. +This function operates only on text terminals. One use of this function is to define function keys on terminals that have downloadable function key definitions. For example, this is how (on @@ -2003,98 +2005,6 @@ @end lisp @end defvar -@node Flow Control -@section Flow Control -@cindex flow control characters - - This section attempts to answer the question ``Why does Emacs use -flow-control characters in its command character set?'' For a second -view on this issue, read the comments on flow control in the -@file{emacs/INSTALL} file from the distribution; for help with Termcap -entries and DEC terminal concentrators, see @file{emacs/etc/TERMS}. - -@cindex @kbd{C-s} -@cindex @kbd{C-q} - At one time, most terminals did not need flow control, and none used -@code{C-s} and @kbd{C-q} for flow control. Therefore, the choice of -@kbd{C-s} and @kbd{C-q} as command characters for searching and quoting -was natural and uncontroversial. With so many commands needing key -assignments, of course we assigned meanings to nearly all @acronym{ASCII} -control characters. - - Later, some terminals were introduced which required these characters -for flow control. They were not very good terminals for full-screen -editing, so Emacs maintainers ignored them. In later years, flow -control with @kbd{C-s} and @kbd{C-q} became widespread among terminals, -but by this time it was usually an option. And the majority of Emacs -users, who can turn flow control off, did not want to switch to less -mnemonic key bindings for the sake of flow control. - - So which usage is ``right''---Emacs's or that of some terminal and -concentrator manufacturers? This question has no simple answer. - - One reason why we are reluctant to cater to the problems caused by -@kbd{C-s} and @kbd{C-q} is that they are gratuitous. There are other -techniques (albeit less common in practice) for flow control that -preserve transparency of the character stream. Note also that their use -for flow control is not an official standard. Interestingly, on the -model 33 teletype with a paper tape punch (around 1970), @kbd{C-s} and -@kbd{C-q} were sent by the computer to turn the punch on and off! - - As window systems and PC terminal emulators replace character-only -terminals, the flow control problem is gradually disappearing. For the -mean time, Emacs provides a convenient way of enabling flow control if -you want it: call the function @code{enable-flow-control}. - -@deffn Command enable-flow-control &optional arg -When @var{arg} is a positive integer, this function enables use of -@kbd{C-s} and @kbd{C-q} for output flow control, and provides the -characters @kbd{C-\} and @kbd{C-^} as aliases for them using -@code{keyboard-translate-table} (@pxref{Translating Input}). - -When @var{arg} is a negative integer or zero, it disables these -features. When @var{arg} is @code{nil} or omitted, it toggles. -Interactively, @var{arg} is the prefix argument. If non-@code{nil}, -its numeric value is used. -@end deffn - -You can use the function @code{enable-flow-control-on} in your -init file to enable flow control automatically on certain -terminal types. - -@defun enable-flow-control-on &rest termtypes -This function enables flow control, and the aliases @kbd{C-\} and @kbd{C-^}, -if the terminal type is one of @var{termtypes}. For example: - -@smallexample -(enable-flow-control-on "vt200" "vt300" "vt101" "vt131") -@end smallexample -@end defun - - Here is how @code{enable-flow-control} does its job: - -@enumerate -@item -@cindex @sc{cbreak} -It sets @sc{cbreak} mode for terminal input, and tells the operating -system to handle flow control. This is done using @code{set-input-mode}. - -@item -It sets up @code{keyboard-translate-table} to translate @kbd{C-\} and -@kbd{C-^} into @kbd{C-s} and @kbd{C-q}. Except at its very -lowest level, Emacs never knows that the characters typed were anything -but @kbd{C-s} and @kbd{C-q}, so you can in effect type them as @kbd{C-\} -and @kbd{C-^} even when they are input for other commands. -@xref{Translating Input}. -@end enumerate - -If the terminal is the source of the flow control characters, then once -you enable kernel flow control handling, you probably can make do with -less padding than normal for that terminal. You can reduce the amount -of padding by customizing the Termcap entry. You can also reduce it by -setting @code{baud-rate} to a smaller value so that Emacs uses a smaller -speed when calculating the padding needed. @xref{Terminal Output}. - @node Batch Mode @section Batch Mode @cindex batch mode @@ -2106,8 +2016,8 @@ to be outputting to an erasable screen. The idea is that you specify Lisp programs to run; when they are finished, Emacs should exit. The way to specify the programs to run is with @samp{-l @var{file}}, which -loads the library named @var{file}, and @samp{-f @var{function}}, which -calls @var{function} with no arguments. +loads the library named @var{file}, or @samp{-f @var{function}}, which +calls @var{function} with no arguments, or @samp{--eval @var{form}}. Any Lisp program output that would normally go to the echo area, either using @code{message}, or using @code{prin1}, etc., with @code{t}
--- a/lispref/processes.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/processes.texi Mon Feb 28 15:15:44 2005 +0000 @@ -77,11 +77,12 @@ @code{exec-path} contains a list of directories to search. Emacs initializes @code{exec-path} when it starts up, based on the value of the environment variable @code{PATH}. The standard file name -constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as usual -in @code{exec-path}, but environment variable substitutions +constructs, @samp{~}, @samp{.}, and @samp{..}, are interpreted as +usual in @code{exec-path}, but environment variable substitutions (@samp{$HOME}, etc.) are not recognized; use @code{substitute-in-file-name} to perform them (@pxref{File Name -Expansion}). +Expansion}). @code{nil} in this list refers to +@code{default-directory}. Executing a program can also try adding suffixes to the specified name: @@ -93,6 +94,10 @@ system-dependent. @end defvar + @strong{Please note:} The argument @var{program} contains only the +name of the program; it may not contain any command-line arguments. You +must use @var{args} to provide those. + Each of the subprocess-creating functions has a @var{buffer-or-name} argument which specifies where the standard output from the program will go. It should be a buffer or a buffer name; if it is a buffer name, @@ -107,12 +112,7 @@ argument, @var{args}. The @var{args} must all be strings, and they are supplied to @var{program} as separate command line arguments. Wildcard characters and other shell constructs have no special meanings in these -strings, since the whole strings are passed directly to the specified -program. - - @strong{Please note:} The argument @var{program} contains only the -name of the program; it may not contain any command-line arguments. You -must use @var{args} to provide those. +strings, since the strings are passed directly to the specified program. The subprocess gets its current directory from the value of @code{default-directory} (@pxref{File Name Expansion}). @@ -547,17 +547,16 @@ subprocess. Processes are deleted automatically after they terminate, but not necessarily right away. You can delete a process explicitly at any time. If you delete a terminated process explicitly before it -is deleted automatically, no harm results. Deletion of a running +is deleted automatically, no harm results. Deleting a running process sends a signal to terminate it (and its child processes if -any), and calls the process sentinel if it has one. +any), and calls the process sentinel if it has one. @xref{Sentinels}. - @code{get-buffer-process} and @code{process-list} do not remember a -deleted process, but the process object itself continues to exist as -long as other Lisp objects point to it. All the Lisp primitives that -work on process objects accept deleted processes, but those that do -I/O or send signals will report an error. The process mark continues -to point to the same place as before, usually into a buffer where -output from the process was being inserted. + When a process is deleted, the process object itself continues to +exist as long as other Lisp objects point to it. All the Lisp +primitives that work on process objects accept deleted processes, but +those that do I/O or send signals will report an error. The process +mark continues to point to the same place as before, usually into a +buffer where output from the process was being inserted. @defopt delete-exited-processes This variable controls automatic deletion of processes that have @@ -567,15 +566,16 @@ they exit. @end defopt -@defun delete-process name -This function deletes the process associated with @var{name}, killing -it with a @code{SIGKILL} signal. The argument @var{name} may be a -process, the name of a process, a buffer, or the name of a buffer. -Calling @code{delete-process} on a running process terminates it, -updates the process status, and runs the sentinel (if any) immediately. -If the process has already terminated, calling @code{delete-process} -has no effect on its status, or on the running of its sentinel (which -will happen sooner or later). +@defun delete-process process +This function deletes a process, killing it with a @code{SIGKILL} +signal. The argument may be a process, the name of a process, a +buffer, or the name of a buffer. (A buffer or buffer-name stands for +the process that @code{get-buffer-process} returns.) Calling +@code{delete-process} on a running process terminates it, updates the +process status, and runs the sentinel (if any) immediately. If the +process has already terminated, calling @code{delete-process} has no +effect on its status, or on the running of its sentinel (which will +happen sooner or later). @smallexample @group @@ -728,7 +728,7 @@ @end example @end defun -@defun set-process-coding-system process decoding-system encoding-system +@defun set-process-coding-system process &optional decoding-system encoding-system This function specifies the coding systems to use for subsequent output from and input to @var{process}. It will use @var{decoding-system} to decode subprocess output, and @var{encoding-system} to encode subprocess @@ -784,11 +784,14 @@ input and make space in the buffer. It also allows filters, sentinels and timers to run---so take account of that in writing your code. -@defun process-send-string process-name string -This function sends @var{process-name} the contents of @var{string} as -standard input. The argument @var{process-name} must be a process or -the name of a process. If it is @code{nil}, the current buffer's -process is used. + In these functions, the @var{process} argument can be a process or +the name of a process, or a buffer or buffer name (which stands +for a process via @code{get-buffer-process}). @code{nil} means +the current buffer's process. + +@defun process-send-string process string +This function sends @var{process} the contents of @var{string} as +standard input. If it is @code{nil}, the current buffer's process is used. The function returns @code{nil}. @@ -811,26 +814,20 @@ @end smallexample @end defun -@defun process-send-region process-name start end +@defun process-send-region process start end This function sends the text in the region defined by @var{start} and -@var{end} as standard input to @var{process-name}, which is a process or -a process name. (If it is @code{nil}, the current buffer's process is -used.) +@var{end} as standard input to @var{process}. An error is signaled unless both @var{start} and @var{end} are integers or markers that indicate positions in the current buffer. (It is unimportant which number is larger.) @end defun -@defun process-send-eof &optional process-name - This function makes @var{process-name} see an end-of-file in its +@defun process-send-eof &optional process +This function makes @var{process} see an end-of-file in its input. The @acronym{EOF} comes after any text already sent to it. - If @var{process-name} is not supplied, or if it is @code{nil}, then -this function sends the @acronym{EOF} to the current buffer's process. An -error is signaled if the current buffer has no process. - - The function returns @var{process-name}. +The function returns @var{process}. @smallexample @group @@ -875,10 +872,11 @@ Each of the signal-sending functions takes two optional arguments: @var{process-name} and @var{current-group}. - The argument @var{process-name} must be either a process, the name of -one, or @code{nil}. If it is @code{nil}, the process defaults to the -process associated with the current buffer. An error is signaled if -@var{process-name} does not identify a process. + The argument @var{process} must be either a process, a process +name, a buffer, a buffer name, or @code{nil}. A buffer or buffer name +stands for a process through @code{get-buffer-process}. @code{nil} +stands for the process associated with the current buffer. An error +is signaled if @var{process} does not identify a process. The argument @var{current-group} is a flag that makes a difference when you are running a job-control shell as an Emacs subprocess. If it @@ -895,8 +893,8 @@ job-control shells won't work when a pipe is used. See @code{process-connection-type} in @ref{Asynchronous Processes}. -@defun interrupt-process &optional process-name current-group -This function interrupts the process @var{process-name} by sending the +@defun interrupt-process &optional process current-group +This function interrupts the process @var{process} by sending the signal @code{SIGINT}. Outside of Emacs, typing the ``interrupt character'' (normally @kbd{C-c} on some systems, and @code{DEL} on others) sends this signal. When the argument @var{current-group} is @@ -904,21 +902,21 @@ on the terminal by which Emacs talks to the subprocess. @end defun -@defun kill-process &optional process-name current-group -This function kills the process @var{process-name} by sending the +@defun kill-process &optional process current-group +This function kills the process @var{process} by sending the signal @code{SIGKILL}. This signal kills the subprocess immediately, and cannot be handled by the subprocess. @end defun -@defun quit-process &optional process-name current-group +@defun quit-process &optional process current-group This function sends the signal @code{SIGQUIT} to the process -@var{process-name}. This signal is the one sent by the ``quit +@var{process}. This signal is the one sent by the ``quit character'' (usually @kbd{C-b} or @kbd{C-\}) when you are not inside Emacs. @end defun -@defun stop-process &optional process-name current-group -This function stops the process @var{process-name} by sending the +@defun stop-process &optional process current-group +This function stops the process @var{process} by sending the signal @code{SIGTSTP}. Use @code{continue-process} to resume its execution. @@ -929,9 +927,9 @@ subprocess. @end defun -@defun continue-process &optional process-name current-group +@defun continue-process &optional process current-group This function resumes execution of the process @var{process} by sending -it the signal @code{SIGCONT}. This presumes that @var{process-name} was +it the signal @code{SIGCONT}. This presumes that @var{process} was stopped previously. @end defun @@ -940,8 +938,9 @@ This function sends a signal to process @var{process}. The argument @var{signal} specifies which signal to send; it should be an integer. -You can specify the target process by its process @acronym{ID}; that allows -you to send signals to processes that are not children of Emacs. +The @var{process} argument can be a system process @acronym{ID}; that +allows you to send signals to processes that are not children of +Emacs. @end defun @node Output from Processes @@ -1240,7 +1239,7 @@ it decodes the output according to the process output coding system. If the coding system is @code{raw-text} or @code{no-conversion}, Emacs converts the unibyte output to multibyte using -@code{string-to-multibyte}, inserts the resulting multibyte text. +@code{string-to-multibyte}, and inserts the resulting multibyte text. You can use @code{set-process-coding-system} to specify which coding system to use (@pxref{Process Information}). Otherwise, the coding @@ -1443,7 +1442,7 @@ @section Querying Before Exit When Emacs exits, it terminates all its subprocesses by sending them -the @code{SIGHUP} signal. Because some subprocesses are doing +the @code{SIGHUP} signal. Because subprocesses may be doing valuable work, Emacs normally asks the user to confirm that it is ok to terminate them. Each process has a query flag which, if non-@code{nil}, says that Emacs should ask for confirmation before
--- a/lispref/sequences.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/sequences.texi Mon Feb 28 15:15:44 2005 +0000 @@ -252,8 +252,8 @@ change the length of an existing array. @item -The array is a constant, for evaluation---in other words, it evaluates -to itself. +for purposes of evaluation, the array is a constant---in other words, +it evaluates to itself. @item The elements of an array may be referenced or changed with the functions @@ -580,12 +580,12 @@ This function returns the subtype symbol of @var{char-table}. @end defun -@defun set-char-table-default char-table new-default -This function sets the default value of @var{char-table} to -@var{new-default}. +@defun set-char-table-default char-table char new-default +This function sets the default value of generic character @var{char} +in @var{char-table} to @var{new-default}. -There is no special function to access the default value of a char-table. -To do that, use @code{(char-table-range @var{char-table} nil)}. +There is no special function to access default values in a char-table. +To do that, use @code{char-table-range} (see below). @end defun @defun char-table-parent char-table @@ -628,9 +628,10 @@ @var{charset} (@pxref{Character Sets}). @item @var{generic-char} -A generic character stands for a character set; specifying the generic -character as argument is equivalent to specifying the character set -name. @xref{Splitting Characters}, for a description of generic characters. +A generic character stands for a character set, or a row of a +character set; specifying the generic character as argument is +equivalent to specifying the character set name. @xref{Splitting +Characters}, for a description of generic characters. @end table @end defun
--- a/lispref/syntax.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/syntax.texi Mon Feb 28 15:15:44 2005 +0000 @@ -155,9 +155,10 @@ @dfn{Punctuation characters} (designated by @samp{.}) are those characters that are used as punctuation in English, or are used in some way in a programming language to separate symbols from one another. -Most programming language modes, including Emacs Lisp mode, have no +Some programming language modes, such as Emacs Lisp mode, have no characters in this class since the few characters that are not symbol or -word constituents all have other uses. +word constituents all have other uses. Other programming language modes, +such as C mode, use punctuation syntax for operators. @end deffn @deffn {Syntax class} @w{open parenthesis character} @@ -501,12 +502,6 @@ @code{char-syntax}. @end defun -@defun syntax-after pos -This function returns a description of the syntax of the character in -the buffer after position @var{pos}, taking account of syntax -properties as well as the syntax table. -@end defun - @defun set-syntax-table table This function makes @var{table} the syntax table for the current buffer. It returns @var{table}. @@ -664,13 +659,13 @@ string, or the end of a comment or a string, whichever comes first. @cindex parse state -The fifth argument @var{state} is a nine-element list of the same form +The fifth argument @var{state} is a ten-element list of the same form as the value of this function, described below. (It is OK to omit the -last element of the nine.) The return value of one call may be used to -initialize the state of the parse on another call to +last two elements of this list.) The return value of one call may be +used to initialize the state of the parse on another call to @code{parse-partial-sexp}. -The result is a list of nine elements describing the final state of +The result is a list of ten elements describing the final state of the parse: @enumerate 0 @@ -717,15 +712,16 @@ the position where the comment began; while inside a string, this is the position where the string began. When outside of strings and comments, this element is @code{nil}. + +@item +Internal data for continuing the parsing. The meaning of this +data is subject to change; it is used if you pass this list +as the @var{state} argument to another call. + @end enumerate -Elements 0, 3, 4, 5 and 7 are significant in the argument @var{state}. - -Actually, the return value is currently a list of ten, rather than -nine, elements and @var{state} is allowed to be a list of ten elements -as well. However, the meaning of the tenth element is subject to -change and only the first eight elements of @var{state} need to be -specified. +Elements 0, 3, 4, 5, 7 and 9 are significant in the argument +@var{state}. @cindex indenting with parentheses This function is most often used to compute indentation for languages @@ -941,6 +937,12 @@ @var{matching-char})} corresponding to the syntax descriptor @var{desc}. @end defun +@defun syntax-after pos +This function returns the syntax code of the character in the buffer +after position @var{pos}, taking account of syntax properties as well +as the syntax table. +@end defun + @node Categories @section Categories @cindex categories of characters @@ -973,7 +975,7 @@ @defun define-category char docstring &optional table This function defines a new category, with name @var{char} and -documentation @var{docstring}, for the category table @var{table}, +documentation @var{docstring}, for the category table @var{table}. @end defun @defun category-docstring category &optional table
--- a/lispref/tips.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/lispref/tips.texi Mon Feb 28 15:15:44 2005 +0000 @@ -46,7 +46,7 @@ prefix. This helps avoid name conflicts. This recommendation applies even to names for traditional Lisp -primitives that are not primitives in Emacs Lisp---even to +primitives that are not primitives in Emacs Lisp---such as @code{copy-list}. Believe it or not, there is more than one plausible way to define @code{copy-list}. Play it safe; append your name prefix to produce a name like @code{foo-copy-list} or @code{mylib-copy-list} @@ -101,11 +101,7 @@ that could cause name clashes for users who don't use that package. However, there is no problem with using the @code{cl} package at compile -time, for the sake of macros. You do that like this: - -@example -(eval-when-compile (require 'cl)) -@end example +time, with @code{(eval-when-compile (require 'cl))}. @item When defining a major mode, please follow the major mode @@ -134,16 +130,26 @@ @item @cindex reserved keys @cindex keys, reserved -Please do not define @kbd{C-c @var{letter}} as a key in your major -modes. Sequences consisting of @kbd{C-c} and a letter (either upper -or lower case) are reserved for users; they are the @strong{only} -sequences reserved for users, so do not block them. +Please do not define @kbd{C-c @var{letter}} as a key in Lisp programs. +Sequences consisting of @kbd{C-c} and a letter (either upper or lower +case) are reserved for users; they are the @strong{only} sequences +reserved for users, so do not block them. Changing all the Emacs major modes to respect this convention was a lot of work; abandoning this convention would make that work go to waste, and inconvenience users. Please comply with it. @item +Function keys @key{F5} through @key{F9} without modifier keys are +also reserved for users to define. + +@item +Applications should not bind mouse events based on button 1 with the +shift key held down. These events include @kbd{S-mouse-1}, +@kbd{M-S-mouse-1}, @kbd{C-S-mouse-1}, and so on. They are reserved for +users. + +@item Sequences consisting of @kbd{C-c} followed by a control character or a digit are reserved for major modes. @@ -158,10 +164,6 @@ may be shadowed from time to time by minor modes. @item -Function keys @key{F5} through @key{F9} without modifier keys are -reserved for users to define. - -@item Do not bind @kbd{C-h} following any prefix character (including @kbd{C-c}). If you don't bind @kbd{C-h}, it is automatically available as a help character for listing the subcommands of the prefix character. @@ -189,12 +191,6 @@ @kbd{@key{ESC} @key{ESC}} instead. @item -Applications should not bind mouse events based on button 1 with the -shift key held down. These events include @kbd{S-mouse-1}, -@kbd{M-S-mouse-1}, @kbd{C-S-mouse-1}, and so on. They are reserved for -users. - -@item @cindex mouse-2 @cindex references, following Special major modes used for read-only text should usually redefine @@ -202,6 +198,9 @@ Modes such as Dired, Info, Compilation, and Occur redefine it in this way. +In addition, they should mark the text as a kind of ``link'' so that +@kbd{mouse-1} will follow it also. @xref{Links and Mouse-1}. + @item When a package provides a modification of ordinary Emacs behavior, it is good to include a command to enable and disable the feature, provide a @@ -382,8 +381,7 @@ @item If you use many functions and variables from a certain file, you can add a @code{require} for that package to avoid compilation warnings -for them. It is better if the @code{require} acts only at compile -time. Here's how to do this: +for them. For instance, @example (eval-when-compile @@ -434,7 +432,7 @@ If you have signed papers to assign the copyright to the Foundation, then use @samp{Free Software Foundation, Inc.} as @var{name}. -Otherwise, use your name. +Otherwise, use your name. See also @xref{Library Headers}. @end itemize @node Compilation Tips
--- a/man/ChangeLog Fri Feb 25 13:02:38 2005 +0000 +++ b/man/ChangeLog Mon Feb 28 15:15:44 2005 +0000 @@ -1,3 +1,45 @@ +2005-02-27 Matt Hodges <MPHodges@member.fsf.org> + + * calendar.texi (General Calendar): Document binding of + scroll-other-window-down. + (Mayan Calendar): Fix earliest date. + (Time Intervals): Document timeclock-change. Fix + timeclock-ask-before-exiting documentation. + +2005-02-26 Kim F. Storm <storm@cua.dk> + + * frames.texi (Mouse References): + Add mouse-1-click-in-non-selected-windows. + +2005-02-25 Richard M. Stallman <rms@gnu.org> + + * screen.texi (Screen): Explain better about cursors and mode lines; + don't presuppose text terminals. + (Point): Don't assume just one cursor. + Clarify explanation of cursors. + (Echo Area, Menu Bar): Cleanups. + + * mini.texi (Minibuffer): Prompts are highlighted. + (Minibuffer Edit): Newline = C-j only on text terminals. + Clarify resize-mini-windows values. + Mention M-PAGEUP and M-PAGEDOWN. + (Completion Commands): Mouse-1 like Mouse-2. + (Minibuffer History): Explain history commands better. + (Repetition): Add xref to Incremental Search. + + * mark.texi (Setting Mark): Clarify info about displaying mark. + Clarify explanation of C-@ and C-SPC. + (Transient Mark): Mention Delete Selection mode. + (Marking Objects): Clean up text about extending the region. + + * m-x.texi (M-x): One C-g doesn't always go to top level. + No delay before suggest-key-bindings output. + + * fixit.texi (Fixit): Mention C-/ for undo. + (Spelling): Mention ESC TAB like M-TAB. + Replacement words with r and R are rechecked. + Say where C-g leaves point. Mention ? as input. + 2005-02-23 Lute Kamstra <lute@gnu.org> * cmdargs.texi (Initial Options): Add cross reference.
--- a/man/building.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/man/building.texi Mon Feb 28 15:15:44 2005 +0000 @@ -82,12 +82,13 @@ Variables}). Starting a compilation displays the buffer @samp{*compilation*} in -another window but does not select it. The buffer's mode line tells you -whether compilation is finished, with the word @samp{run} or @samp{exit} -inside the parentheses. You do not have to keep this buffer visible; -compilation continues in any case. While a compilation is going on, the -string @samp{Compiling} appears in the mode lines of all windows. When -this string disappears, the compilation is finished. +another window but does not select it. The buffer's mode line tells +you whether compilation is finished, with the word @samp{run}, +@samp{signal} or @samp{exit} inside the parentheses. You do not have +to keep this buffer visible; compilation continues in any case. While +a compilation is going on, the string @samp{Compiling} appears in the +mode lines of all windows. When this string disappears, the +compilation is finished. If you want to watch the compilation transcript as it appears, switch to the @samp{*compilation*} buffer and move point to the end of the @@ -104,12 +105,14 @@ @findex kill-compilation When the compiler process terminates, for whatever reason, the mode -line of the @samp{*compilation*} buffer changes to say @samp{signal} -instead of @samp{run}. Starting a new compilation also kills any -running compilation, as only one can exist at any time. However, -@kbd{M-x compile} asks for confirmation before actually killing a -compilation that is running. You can also kill the compilation -process with @kbd{M-x kill-compilation}. +line of the @samp{*compilation*} buffer changes to say @samp{exit} +(followed by the exit code, @samp{[0]} for a normal exit), or +@samp{signal} (if a signal terminated the process), instead of +@samp{run}. Starting a new compilation also kills any running +compilation, as only one can exist at any time. However, @kbd{M-x +compile} asks for confirmation before actually killing a compilation +that is running. You can also kill the compilation process with +@kbd{M-x kill-compilation}. @findex recompile To rerun the last compilation with the same command, type @kbd{M-x
--- a/man/calendar.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/man/calendar.texi Mon Feb 28 15:15:44 2005 +0000 @@ -291,7 +291,9 @@ @item C-c C-l Regenerate the calendar window (@code{redraw-calendar}). @item SPC -Scroll the next window (@code{scroll-other-window}). +Scroll the next window up (@code{scroll-other-window}). +@item DEL +Scroll the next window down (@code{scroll-other-window-down}). @item q Exit from calendar (@code{exit-calendar}). @end table @@ -314,8 +316,9 @@ @kindex SPC @r{(Calendar mode)} In Calendar mode, you can use @kbd{SPC} (@code{scroll-other-window}) -to scroll the other window. This is handy when you display a list of -holidays or diary entries in another window. +and @kbd{DEL} (@code{scroll-other-window-down}) to scroll the other +window up or down, respectively. This is handy when you display a list +of holidays or diary entries in another window. @kindex q @r{(Calendar mode)} @findex exit-calendar @@ -437,8 +440,8 @@ @findex list-calendar-holidays To get even more detailed information, use the @kbd{a} command, which displays a separate buffer containing a list of all holidays in the -current three-month range. You can use @key{SPC} in the calendar window -to scroll that list. +current three-month range. You can use @key{SPC} and @key{DEL} in the +calendar window to scroll that list up and down, respectively. @findex holidays The command @kbd{M-x holidays} displays the list of holidays for the @@ -861,7 +864,7 @@ @noindent Thus, the long count date 12.16.11.16.6 means 12 baktun, 16 katun, 11 tun, 16 uinal, and 6 kin. The Emacs calendar can handle Mayan long -count dates as early as 7.17.18.13.1, but no earlier. When you use the +count dates as early as 7.17.18.13.3, but no earlier. When you use the @kbd{g m l} command, type the Mayan long count date with the baktun, katun, tun, uinal, and kin separated by periods. @@ -1510,11 +1513,14 @@ @findex timeclock-in @findex timeclock-out +@findex timeclock-change @findex timeclock-workday-remaining @findex timeclock-when-to-leave Use the @kbd{M-x timeclock-in} command when you start working on a project, and @kbd{M-x timeclock-out} command when you're done. Each -time you do this, it adds one time interval to the record of the project. +time you do this, it adds one time interval to the record of the +project. You can change to working on a different project with @kbd{M-x +timeclock-change}. Once you've collected data from a number of time intervals, you can use @kbd{M-x timeclock-workday-remaining} to see how much time is left to @@ -1529,12 +1535,13 @@ @code{t}, or invoke the @kbd{M-x timeclock-modeline-display} command. @vindex timeclock-ask-before-exiting - Terminating the current Emacs session might or might not mean that -you have stopped working on the project. If you'd like Emacs to ask -you about this, set the value of the variable -@code{timeclock-ask-before-exiting} to @code{t} (via @kbd{M-x -customize}). By default, only an explicit @kbd{M-x timeclock-out} -tells Emacs that the current interval is over. + Terminating the current Emacs session might or might not mean that you +have stopped working on the project and, by default, Emacs queries this. +You can, however, set the value of the variable +@code{timeclock-ask-before-exiting} to @code{nil} (via @kbd{M-x +customize}) to avoid this behaviour; then, only an explicit @kbd{M-x +timeclock-out} or @kbd{M-x timeclock-change} will tell Emacs that the +current interval is over. @cindex @file{.timelog} file @vindex timeclock-file
--- a/man/fixit.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/man/fixit.texi Mon Feb 28 15:15:44 2005 +0000 @@ -11,12 +11,12 @@ it, or change your mind while composing text on the fly. The most fundamental command for correcting erroneous editing is the -undo command, @kbd{C-x u} or @kbd{C-_}. This command undoes a single -command (usually), a part of a command (in the case of -@code{query-replace}), or several consecutive self-inserting characters. -Consecutive repetitions of @kbd{C-_} or @kbd{C-x u} undo earlier and -earlier changes, back to the limit of the undo information available. -@xref{Undo}, for more information. +undo command, @kbd{C-x u} or @kbd{C-_} or @kbd{C-/}. This command +undoes a single command (usually), a part of a command (in the case of +@code{query-replace}), or several consecutive self-inserting +characters. Consecutive repetitions of the undo command undo earlier +and earlier changes, back to the limit of the undo information +available. @xref{Undo}, for more information. @menu * Kill Errors:: Commands to kill a batch of recently entered text. @@ -164,6 +164,7 @@ @item M-$ Check and correct spelling of the word at point (@code{ispell-word}). @item M-@key{TAB} +@itemx @key{ESC} @key{TAB} Complete the word before point based on the spelling dictionary (@code{ispell-complete-word}). @item M-x ispell @@ -239,11 +240,13 @@ here. @item r @var{new} @key{RET} -Replace the word (just this time) with @var{new}. +Replace the word (just this time) with @var{new}. (The replacement +string will be rescanned for more spelling errors.) @item R @var{new} @key{RET} Replace the word with @var{new}, and do a @code{query-replace} so you -can replace it elsewhere in the buffer if you wish. +can replace it elsewhere in the buffer if you wish. (The replacements +will be rescanned for more spelling errors.) @item @var{digit} Replace the word (just this time) with one of the displayed @@ -277,8 +280,9 @@ wildcard. @item C-g -Quit interactive spell checking. You can restart it again afterward -with @kbd{C-u M-$}. +Quit interactive spell checking, leaving point at the word that was +being checked. You can restart checking again afterward with @kbd{C-u +M-$}. @item X Same as @kbd{C-g}. @@ -296,6 +300,9 @@ @item C-z This key has its normal command meaning (suspend Emacs or iconify this frame). + +@item ? +Show the list of options. @end table @findex ispell-complete-word
--- a/man/frames.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/man/frames.texi Mon Feb 28 15:15:44 2005 +0000 @@ -312,6 +312,12 @@ the region. The variable @code{mouse-1-click-follows-link} controls whether @kbd{Mouse-1} has this behavior. +@vindex mouse-1-click-follows-link + Normally, the @kbd{Mouse-1} click behavior is performed on links in +any window. The variable @code{mouse-1-click-in-non-selected-windows} +controls whether @kbd{Mouse-1} has this behavior even in non-selected +windows, or only in the selected window. + @vindex mouse-highlight You can usually tell when @kbd{Mouse-1} and @kbd{Mouse-2} have this special sort of meaning because the sensitive text highlights when you
--- a/man/m-x.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/man/m-x.texi Mon Feb 28 15:15:44 2005 +0000 @@ -46,8 +46,9 @@ the key @kbd{C-f}. You can run any Emacs command by name using @kbd{M-x}, whether or not any keys are bound to it. - If you type @kbd{C-g} while the command name is being read, you cancel -the @kbd{M-x} command and get out of the minibuffer, ending up at top level. + If you type @kbd{C-g} while the command name is being read, you +cancel the @kbd{M-x} command and get out of the minibuffer, ending up +at command level. To pass a numeric argument to the command you are invoking with @kbd{M-x}, specify the numeric argument before the @kbd{M-x}. @kbd{M-x} @@ -56,11 +57,10 @@ @vindex suggest-key-bindings If the command you type has a key binding of its own, Emacs mentions -this in the echo area, two seconds after the command finishes (if you -don't type anything else first). For example, if you type @kbd{M-x +this in the echo area. For example, if you type @kbd{M-x forward-word}, the message says that you can run the same command more -easily by typing @kbd{M-f}. You can turn off these messages by setting -@code{suggest-key-bindings} to @code{nil}. +easily by typing @kbd{M-f}. You can turn off these messages by +setting @code{suggest-key-bindings} to @code{nil}. Normally, when describing in this manual a command that is run by name, we omit the @key{RET} that is needed to terminate the name. Thus
--- a/man/mark.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/man/mark.texi Mon Feb 28 15:15:44 2005 +0000 @@ -85,23 +85,28 @@ button one across a range of text; that puts point where you release the mouse button, and sets the mark at the other end of that range. Or you can click mouse button three, which sets the mark at point (like -@kbd{C-@key{SPC}}) and then moves point (like @kbd{Mouse-1}). Both of -these methods copy the region into the kill ring in addition to setting -the mark; that gives behavior consistent with other window-driven -applications, but if you don't want to modify the kill ring, you must -use keyboard commands to set the mark. @xref{Mouse Commands}. +@kbd{C-@key{SPC}}) and then moves point where you clicked (like +@kbd{Mouse-1}). Both of these methods copy the region into the kill +ring in addition to setting the mark; that gives behavior consistent +with other window-driven applications, but if you don't want to modify +the kill ring, you must use keyboard commands to set the mark. +@xref{Mouse Commands}. @kindex C-x C-x @findex exchange-point-and-mark - Ordinary terminals have only one cursor, so there is no way for Emacs -to show you where the mark is located. You have to remember. The usual -solution to this problem is to set the mark and then use it soon, before -you forget where it is. Alternatively, you can see where the mark is -with the command @kbd{C-x C-x} (@code{exchange-point-and-mark}) which -puts the mark where point was and point where the mark was. The extent -of the region is unchanged, but the cursor and point are now at the -previous position of the mark. In Transient Mark mode, this command -also reactivates the mark. + When Emacs was developed, terminals had only one cursor, so Emacs +does not show where the mark is located--you have to remember. If you +enable Transient Mark mode (see below), then the region is highlighted +when it is active; you can tell mark is at the other end of the +highlighted region. But this only applies when the mark is active. + + The usual solution to this problem is to set the mark and then use +it soon, before you forget where it is. Alternatively, you can see +where the mark is with the command @kbd{C-x C-x} +(@code{exchange-point-and-mark}) which puts the mark where point was +and point where the mark was. The extent of the region is unchanged, +but the cursor and point are now at the previous position of the mark. +In Transient Mark mode, this command also reactivates the mark. @kbd{C-x C-x} is also useful when you are satisfied with the position of point but want to move the other end of the region (where the mark @@ -113,14 +118,13 @@ @ref{Mark Ring}. @kindex C-@@ - There is no such character as @kbd{C-@key{SPC}} in @acronym{ASCII}; when you -type @key{SPC} while holding down @key{CTRL}, what you get on most -ordinary terminals is the character @kbd{C-@@}. This key is actually -bound to @code{set-mark-command}. But unless you are unlucky enough to -have a terminal where typing @kbd{C-@key{SPC}} does not produce + There is no such character as @kbd{C-@key{SPC}} in @acronym{ASCII}; +when you type @key{SPC} while holding down @key{CTRL} on a text +terminal, what you get is the character @kbd{C-@@}. This key is also +bound to @code{set-mark-command}--so unless you are unlucky enough to +have a text terminal where typing @kbd{C-@key{SPC}} does not produce @kbd{C-@@}, you might as well think of this character as -@kbd{C-@key{SPC}}. Under X, @kbd{C-@key{SPC}} is actually a distinct -character, but its binding is still @code{set-mark-command}. +@kbd{C-@key{SPC}}. @node Transient Mark @section Transient Mark Mode @@ -182,6 +186,10 @@ region active again by typing @kbd{C-x C-x}. @item +If Delete Selection mode is also enabled, some commands delete the +region when used while the mark is active. @xref{Graphical Kill}. + +@item Quitting with @kbd{C-g} deactivates the mark. @item @@ -320,10 +328,10 @@ word, while @kbd{C-M-@@} (@code{mark-sexp}) puts it at the end of the next balanced expression (@pxref{Expressions}). These commands handle arguments just like @kbd{M-f} and @kbd{C-M-f}. If you repeat these -commands, the region is extended. For example, you can type either -@kbd{C-u 2 M-@@} or @kbd{M-@@ M-@@} to mark the next two words. -The region is also extended when the mark is active in Transient Mark -mode, regardless of the last command. +commands, that extends the region. For example, you can type either +@kbd{C-u 2 M-@@} or @kbd{M-@@ M-@@} to mark the next two words. This +command also extends the region when the mark is active in Transient +Mark mode, regardless of the last command. @kindex C-x h @findex mark-whole-buffer @@ -337,20 +345,20 @@ point. If the prefix argument is @minus{}@var{n}, @kbd{M-h} also marks @var{n} paragraphs, running back form the one surrounding point. In that last case, point moves forward to the end of that paragraph, -and the mark goes at the start of the region. The @kbd{M-h} command -also supports the extension of the region, similar to @kbd{M-@@} and -@kbd{C-M-@@}. +and the mark goes at the start of the region. Repeating the @kbd{M-h} +command extends the region, just as with @kbd{M-@@} and @kbd{C-M-@@}. @kbd{C-M-h} (@code{mark-defun}) similarly puts point before, and the mark after, the current (or following) major top-level definition, or -defun (@pxref{Moving by Defuns}). (Currently it only marks one defun, -but repeating it marks more defuns, like for @kbd{M-@@}.) @kbd{C-x -C-p} (@code{mark-page}) puts point before the current page, and mark -at the end (@pxref{Pages}). The mark goes after the terminating page -delimiter (to include it in the region), while point goes after the -preceding page delimiter (to exclude it). A numeric argument -specifies a later page (if positive) or an earlier page (if negative) -instead of the current page. +defun (@pxref{Moving by Defuns}). Repeating @kbd{C-M-h} also extends +the region. + + @kbd{C-x C-p} (@code{mark-page}) puts point before the current page, +and mark at the end (@pxref{Pages}). The mark goes after the +terminating page delimiter (to include it in the region), while point +goes after the preceding page delimiter (to exclude it). A numeric +argument specifies a later page (if positive) or an earlier page (if +negative) instead of the current page. Finally, @kbd{C-x h} (@code{mark-whole-buffer}) sets up the entire buffer as the region, by putting point at the beginning and the mark at
--- a/man/mini.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/man/mini.texi Mon Feb 28 15:15:44 2005 +0000 @@ -16,9 +16,10 @@ @cindex prompt When the minibuffer is in use, it appears in the echo area, and the terminal's cursor moves there. The beginning of the minibuffer line -displays a @dfn{prompt} which says what kind of input you should supply and -how it will be used. Often this prompt is derived from the name of the -command that the argument is for. The prompt normally ends with a colon. +displays a @dfn{prompt} in a special color, to say what kind of input +you should supply and how it will be used. Often this prompt is +derived from the name of the command that the argument is for. The +prompt normally ends with a colon. @cindex default argument Sometimes a @dfn{default argument} appears in parentheses after the @@ -123,8 +124,8 @@ Since @key{RET} in the minibuffer is defined to exit the minibuffer, you can't use it to insert a newline in the minibuffer. To do that, -type @kbd{C-o} or @kbd{C-q C-j}. (Recall that a newline is really the -character control-J.) +type @kbd{C-o} or @kbd{C-q C-j}. (On text terminals, newline is +really the @acronym{ASCII} character control-J.) The minibuffer has its own window which always has space on the screen but acts as if it were not there when the minibuffer is not in use. When @@ -147,12 +148,13 @@ @vindex resize-mini-windows The minibuffer window expands vertically as necessary to hold the -text that you put in the minibuffer, if @code{resize-mini-windows} is -non-@code{nil}. If @code{resize-mini-windows} is @code{t}, the window -is always resized to fit the size of the text it displays. If -@code{resize-mini-windows} is the symbol @code{grow-only}, the window -grows when the size of displayed text increases, but shrinks (back to -the normal size) only when the minibuffer becomes inactive. +text that you put in the minibuffer. If @code{resize-mini-windows} is +@code{t} (the default), the window is always resized to fit the size +of the text it displays. If its value is the symbol @code{grow-only}, +the window grows when the size of displayed text increases, but +shrinks (back to the normal size) only when the minibuffer becomes +inactive. If its value is @code{nil}, you have to adjust the height +yourself. @vindex max-mini-window-height The variable @code{max-mini-window-height} controls the maximum @@ -161,11 +163,13 @@ maximum number of lines; @code{nil} means do not resize the minibuffer window automatically. The default value is 0.25. - If while in the minibuffer you issue a command that displays help text -of any sort in another window, you can use the @kbd{C-M-v} command while -in the minibuffer to scroll the help text. This lasts until you exit -the minibuffer. This feature is especially useful when you display -a buffer listing possible completions. @xref{Other Window}. + If, while in the minibuffer, you issue a command that displays help +text of any sort in another window, you can use the @kbd{C-M-v} +command while in the minibuffer to scroll the help text. +(@kbd{M-@key{PAGEUP}} and @kbd{M-@key{PAGEDOWN}} also operate on that +help text.) This lasts until you exit the minibuffer. This feature +is especially useful when you display a buffer listing possible +completions. @xref{Other Window}. @vindex enable-recursive-minibuffers Emacs normally disallows most commands that use the minibuffer while @@ -273,8 +277,9 @@ @table @kbd @findex mouse-choose-completion -@item Mouse-2 -Clicking mouse button 2 on a completion in the list of possible +@item Mouse-1 +@itemx Mouse-2 +Clicking mouse button 1 or 2 on a completion in the list of possible completions chooses that completion (@code{mouse-choose-completion}). You normally use this command while point is in the minibuffer, but you must click in the list of completions, not in the minibuffer itself. @@ -447,10 +452,13 @@ @findex previous-history-element The simplest way to reuse the saved arguments in the history list is to move through the history list one element at a time. While in the -minibuffer, use @kbd{M-p} or up-arrow (@code{previous-history-element}) -to ``move to'' the next earlier minibuffer input, and use @kbd{M-n} or -down-arrow (@code{next-history-element}) to ``move to'' the next later -input. +minibuffer, use @kbd{M-p} or up-arrow +(@code{previous-history-element}) to ``move to'' the next earlier +minibuffer input, and use @kbd{M-n} or down-arrow +(@code{next-history-element}) to ``move to'' the next later input. +These commands don't move the cursor, they bring different saved +strings into the minibuffer. But you can think of them as ``moving'' +through the history list. The previous input that you fetch from the history entirely replaces the contents of the minibuffer. To use it as the argument, exit the @@ -570,7 +578,7 @@ it normally does not appear in the history list for @kbd{C-x @key{ESC} @key{ESC}}. You can make it appear in the history by setting @code{isearch-resume-in-command-history} to a non-@code{nil} -value. +value. @xref{Incremental Search}. @vindex command-history The list of previous minibuffer-using commands is stored as a Lisp
--- a/man/screen.texi Fri Feb 25 13:02:38 2005 +0000 +++ b/man/screen.texi Mon Feb 28 15:15:44 2005 +0000 @@ -29,19 +29,23 @@ file (@pxref{Windows}). In this manual, the word ``window'' always refers to the subdivisions of a frame within Emacs. - At any time, one window is the @dfn{selected window}; the most -prominent cursor indicates which window is selected. Most Emacs -commands implicitly apply to the text in the selected window (though -mouse commands generally operate on whatever window you click them in, -whether selected or not). The other windows display text for -reference only, unless/until you select them. If you use multiple -frames under the X Window System, then giving the input focus to a -particular frame selects a window in that frame. + At any time, one window is the @dfn{selected window}. On graphical +terminals, the selected window normally shows a more prominent cursor +(solid and blinking) while other windows show a weaker cursor (such as +a hollow box). On text terminals, which have just one cursor, that cursor +appears in the selected window. + + Most Emacs commands implicitly apply to the text in the selected +window (though mouse commands generally operate on whatever window you +click them in, whether selected or not). The other windows display +text for reference only, unless/until you select them. If you use +multiple frames under the X Window System, then giving the input focus +to a particular frame selects a window in that frame. Each window's last line is a @dfn{mode line}, which describes what -is going on in that window. It appears in inverse video, if the -terminal supports that; its contents normally begin with -@w{@samp{--:-- @ *scratch*}} when Emacs starts. The mode line +is going on in that window. It appears in different color and/or a +``3D'' box, if the terminal supports that; its contents normally begin +with @w{@samp{--:-- @ *scratch*}} when Emacs starts. The mode line displays status information such as what buffer is being displayed above it in the window, what major and minor modes are in use, and whether the buffer contains unsaved changes. @@ -58,7 +62,7 @@ @cindex point @cindex cursor - Within Emacs, the terminal's cursor shows the location at which + Within Emacs, the active cursor shows the location at which editing commands will take effect. This location is called @dfn{point}. Many Emacs commands move point through the text, so that you can edit at different places in it. You can also place point by clicking mouse @@ -93,9 +97,9 @@ point is. On graphical terminals, Emacs shows a cursor in each window; the -selected window's cursor is solid or blinking, and the other cursors -are just hollow. Thus, the most striking cursor always shows you -the selected window, on all kinds of terminals. +selected window's cursor is solid and blinking, and the other cursors +are just hollow. Thus, the most prominent cursor always shows you the +selected window, on all kinds of terminals. @xref{Cursor Display}, for customizable variables that control display of the cursor or cursors. @@ -111,11 +115,11 @@ The line at the bottom of the frame (below the mode line) is the @dfn{echo area}. It is used to display small amounts of text for -several purposes. +various purposes. - @dfn{Echoing} means displaying the characters that you type. Outside -Emacs, the operating system normally echoes all your input. Emacs -handles echoing differently. + @dfn{Echoing} means displaying the characters that you type. At the +command line, the operating system normally echoes all your input. +Emacs handles echoing differently. Single-character commands do not echo in Emacs, and multi-character commands echo only if you pause while typing them. As soon as you pause @@ -326,7 +330,7 @@ When you are using a window system, you can use the mouse to choose a command from the menu bar. An arrow pointing right, after the menu item, indicates that the item leads to a subsidiary menu; @samp{...} at -the end means that the command will read arguments from the keyboard +the end means that the command will read arguments (further input from you) before it actually does anything. To view the full command name and documentation for a menu item, type
--- a/src/ChangeLog Fri Feb 25 13:02:38 2005 +0000 +++ b/src/ChangeLog Mon Feb 28 15:15:44 2005 +0000 @@ -1,3 +1,19 @@ +2005-02-27 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> + + * gtkutil.c (xg_resize_outer_widget): Removed unneeded call to + gtk_window_resize and x_wm_set_size_hint. + +2005-02-25 Kim F. Storm <storm@cua.dk> + + * dispextern.h (OVERLAY_STRING_CHUNK_SIZE): Increase from 3 to 16. + + * xdisp.c (init_from_display_pos): Don't read past end of + it->overlay_strings array. + +2005-02-25 Stephan Stahl <stahl@eos.franken.de> (tiny change) + + * buffer.c (syms_of_buffer): Fix typo. + 2005-02-23 Lute Kamstra <lute@gnu.org> * buffer.c (Foverlay_buffer): Doc fix.
--- a/src/buffer.c Fri Feb 25 13:02:38 2005 +0000 +++ b/src/buffer.c Mon Feb 28 15:15:44 2005 +0000 @@ -5673,7 +5673,7 @@ If value is a symbol `left' or `right', both angle and arrow bitmaps are displayed in the left or right fringe, resp. Any other value -that doesn't look like an alist means displat the angle bitmaps in +that doesn't look like an alist means display the angle bitmaps in the left fringe but no arrows. You can exercise more precise control by using an alist as the
--- a/src/dispextern.h Fri Feb 25 13:02:38 2005 +0000 +++ b/src/dispextern.h Mon Feb 28 15:15:44 2005 +0000 @@ -1882,7 +1882,7 @@ /* Vector of overlays to process. Overlay strings are processed OVERLAY_STRING_CHUNK_SIZE at a time. */ -#define OVERLAY_STRING_CHUNK_SIZE 3 +#define OVERLAY_STRING_CHUNK_SIZE 16 Lisp_Object overlay_strings[OVERLAY_STRING_CHUNK_SIZE]; /* Total number of overlay strings to process. This can be >
--- a/src/gtkutil.c Fri Feb 25 13:02:38 2005 +0000 +++ b/src/gtkutil.c Mon Feb 28 15:15:44 2005 +0000 @@ -556,12 +556,6 @@ int columns; int rows; { - gtk_window_resize (GTK_WINDOW (FRAME_GTK_OUTER_WIDGET (f)), - FRAME_PIXEL_WIDTH (f), FRAME_TOTAL_PIXEL_HEIGHT (f)); - - /* base_height is now changed. */ - x_wm_set_size_hint (f, 0, 0); - /* If we are not mapped yet, set geometry once again, as window height now have changed. */ if (! GTK_WIDGET_MAPPED (FRAME_GTK_OUTER_WIDGET (f)))
--- a/src/xdisp.c Fri Feb 25 13:02:38 2005 +0000 +++ b/src/xdisp.c Mon Feb 28 15:15:44 2005 +0000 @@ -2534,7 +2534,10 @@ after-string. */ init_iterator (it, w, charpos, bytepos, NULL, DEFAULT_FACE_ID); - for (i = 0; i < it->n_overlay_strings; ++i) + /* This only scans the current chunk -- it should scan all chunks. + However, OVERLAY_STRING_CHUNK_SIZE has been increased from 3 in 21.1 + to 16 in 22.1 to make this a lesser problem. */ + for (i = 0; i < it->n_overlay_strings && i < OVERLAY_STRING_CHUNK_SIZE; ++i) { const char *s = SDATA (it->overlay_strings[i]); const char *e = s + SBYTES (it->overlay_strings[i]); @@ -5841,9 +5844,9 @@ ((op & MOVE_TO_POS) != 0 \ && BUFFERP (it->object) \ && IT_CHARPOS (*it) >= to_charpos \ - && (it->method == GET_FROM_BUFFER || \ - (it->method == GET_FROM_DISPLAY_VECTOR && \ - it->dpvec + it->current.dpvec_index + 1 >= it->dpend))) + && (it->method == GET_FROM_BUFFER \ + || (it->method == GET_FROM_DISPLAY_VECTOR \ + && it->dpvec + it->current.dpvec_index + 1 >= it->dpend))) while (1) @@ -20772,8 +20775,10 @@ /* If whole rows or last part of a row came from a display overlay, row_containing_pos will skip over such rows because their end pos - equals the start pos of the overlay or interval. Backtrack if we - have a STOP object and previous row's end glyph came from STOP. */ + equals the start pos of the overlay or interval. + + Move back if we have a STOP object and previous row's + end glyph came from STOP. */ if (!NILP (stop)) { struct glyph_row *prev; @@ -20781,11 +20786,11 @@ && MATRIX_ROW_END_CHARPOS (prev) == charpos && prev->used[TEXT_AREA] > 0) { - end = prev->glyphs[TEXT_AREA]; - glyph = end + prev->used[TEXT_AREA]; - while (--glyph >= end + struct glyph *beg = prev->glyphs[TEXT_AREA]; + glyph = beg + prev->used[TEXT_AREA]; + while (--glyph >= beg && INTEGERP (glyph->object)); - if (glyph < end + if (glyph < beg || !EQ (stop, glyph->object)) break; row = prev; @@ -22814,8 +22819,10 @@ message_truncate_lines = 0; DEFVAR_LISP ("menu-bar-update-hook", &Vmenu_bar_update_hook, - doc: /* Normal hook run for clicks on menu bar, before displaying a submenu. -Can be used to update submenus whose contents should vary. */); + doc: /* Normal hook run to update the menu bar definitions. +Redisplay runs this hook before it redisplays the menu bar. +This is used to update submenus such as Buffers, +whose contents depend on various data. */); Vmenu_bar_update_hook = Qnil; DEFVAR_BOOL ("inhibit-menubar-update", &inhibit_menubar_update,