Mercurial > emacs
changeset 83085:c0e839b60d0b
Merged in changes from CVS HEAD
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-173
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-174
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-125
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Sun, 28 Mar 2004 06:08:38 +0000 |
parents | 0d3eea319893 (current diff) 7830fa922e7e (diff) |
children | 347ce3d5d79c |
files | lisp/ChangeLog lisp/faces.el lisp/vc-hooks.el lisp/vc.el src/xdisp.c |
diffstat | 33 files changed, 623 insertions(+), 446 deletions(-) [+] |
line wrap: on
line diff
--- a/etc/NEWS Fri Mar 26 04:35:08 2004 +0000 +++ b/etc/NEWS Sun Mar 28 06:08:38 2004 +0000 @@ -104,6 +104,11 @@ ** M-x diff uses diff-mode instead of compilation-mode. +** New command `strokes-global-set-stroke-string'. +This is like `strokes-global-set-stroke', but it allows you to bind +the stroke directly to a string to insert. This is convenient for +using strokes as an input method. + --- ** The saveplace.el package now filters out unreadable files. When you exit Emacs, the saved positions in visited files no longer
--- a/lisp/ChangeLog Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/ChangeLog Sun Mar 28 06:08:38 2004 +0000 @@ -1,15 +1,111 @@ +2004-03-27 Francis J. Wright <F.J.Wright@qmul.ac.uk> + + * woman.el (woman-change-fonts): Rename local variable + woman-font-alist to font-alist to avoid a compiler warning. + +2004-03-27 Dave Love <fx@gnu.org> + + * emacs-lisp/rx.el (rx): Doc fix. + Fix copyright years. + + * strokes.el (strokes-global-set-stroke-string): New function. + (strokes-list-strokes): Cope with strings, not just commands. Set + foreground colour of image. + (strokes-global-set-stroke): Doc fix. + +2004-03-26 Luc Teirlinck <teirllm@auburn.edu> + + * buff-menu.el (Buffer-menu-revert-function): Make it suitable for + Auto Revert mode. + (Buffer-menu-files-only): New variable. + (Buffer-menu-toggle-files-only): New function. + (Buffer-menu-mode-map): Bind it to `T'. + (Buffer-menu-mode): Mention `T' in docstring. + Set buffer-stale-function. + (list-buffers-noselect): Mark buffer non-modified and set + Buffer-menu-files-only. + + * dired.el (buffer-stale-function): Remove no longer needed defvar. + + * autorevert.el (auto-revert-handler): Print revert message + before, rather than after, reverting. + (buffer-stale-function): Move to files.el. + + * files.el (buffer-stale-function): Moved here from autorevert.el. + +2004-03-26 Stefan Monnier <monnier@iro.umontreal.ca> + + * vc.el (vc-maybe-resolve-conflicts): Don't prompt the user. + + * calc/calc.el (calc-mode-map): Use mapc. + + * apropos.el (apropos-mode): Don't autoload. + (apropos-symbols-internal): New fun. Extracted from `apropos'. + (apropos): Use it. + (apropos-print): Add optional `text' argument. + (apropos-describe-plist): Use help-buffer and hexlp-setup-xref. + Don't assume point-min == 1. + + * bs.el (bs-buffer-list): Use buffer-local-value. + (bs--set-toggle-to-show): Use with-current-buffer. + + * buff-menu.el (Buffer-menu-sort, Buffer-menu-make-sort-button): + New funs. + (list-buffers-noselect): Use them. Adjust :align-to to new style. + + * cvs-status.el (cvs-tree-use-jisx0208): Use char-displayable-p. + + * dabbrev.el (dabbrev-expand): Fix regexp construction. + (dabbrev--find-expansion): Use pop. + (dabbrev--search): Use match-string-no-properties. + + * dired.el (dired-mode): Use run-mode-hooks. + (dired-move-to-end-of-filename): Use match-string. + + * ediff-init.el (ediff-hide-face): Check that facemenu-unlisted-faces + is bound before using it. + (ediff-verbose-p): Make it into a var since it's not constant. + + * electric.el (Electric-pop-up-window): Avoid popping up a new frame. + + * faces.el (read-face-font): Don't cons up unnecessarily. + (header-line, tool-bar): Share common parts. + + * files.el (file-relative-name): Use compare-strings. + + * finder.el (finder-mode): Follow coding convention. + + * subr.el (read-number): New function. + + * ses.el (ses-read-number): Move to subr.el. + (ses-set-header-row): Use read-number. + +2004-03-26 Andre Spiegel <spiegel@gnu.org> + + * vc-hooks.el (vc-arg-list): New function, which handles both + compiled and uncompiled code. + (vc-default-workfile-unchanged-p): Use it. + + * vc.el (vc-print-log): Undo prev change, use new function + vc-arg-list from vc-hooks.el. + 2004-03-26 Masatake YAMATO <jet@gyve.org> * simple.el (completion-setup-function): Emphasize the - first uncommon characters in the completions;and de-emphasize + first uncommon characters in the completions; and de-emphasize the common prefix substrings. (completion-emphasis): New face. (completion-de-emphasis): New face. +2004-03-25 Juanma Barranquero <lektu@terra.es> + + * progmodes/cperl-mode.el (cperl-indent-alist, cperl-where-am-i): + Comment out (it's unused and unfinished code). + 2004-03-25 Sam Steingold <sds@gnu.org> - * vc.el (vc-print-log): Fixed a bug in the last patch: - backend-function may be a byte-compiled object, not a lambda + * vc.el (vc-print-log): Fix a bug in the last patch: + backend-function may be a byte-compiled object, not a lambda. 2004-03-25 Juri Linkov <juri@jurta.org> @@ -28,6 +124,14 @@ * jit-lock.el (jit-lock): Remove links to removed Support Modes Info node. + * eshell/eshell.el (eshell): Fix broken info-link. + + * eshell/em-alias.el (eshell-alias, eshell-bad-command-tolerance): + * eshell/em-banner.el (eshell-banner): + * eshell/em-smart.el (eshell-smart): + * eshell/esh-cmd.el (eshell-cmd): + Comment out broken info-links to incomplete Info manual. + * info-xref.el: Fix commentary. 2004-03-25 Kevin Ryde <user42@zip.com.au>
--- a/lisp/apropos.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/apropos.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; apropos.el --- apropos commands for users and programmers -;; Copyright (C) 1989, 1994, 1995, 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 1989,94,1995,2001,02,03,2004 Free Software Foundation, Inc. ;; Author: Joe Wells <jbw@bigbird.bu.edu> ;; Rewritten: Daniel Pfeiffer <occitan@esperanto.org> @@ -58,6 +58,7 @@ ;;; Code: (require 'button) +(eval-when-compile (require 'cl)) (defgroup apropos nil "Apropos commands for users and programmers" @@ -348,7 +349,6 @@ "Return t if DOC is really matched by the current keywords." (apropos-true-hit doc apropos-all-words)) -;;;###autoload (define-derived-mode apropos-mode fundamental-mode "Apropos" "Major mode for following hyperlinks in output of apropos commands. @@ -452,37 +452,42 @@ time-consuming. Returns list of symbols and documentation found." (interactive "sApropos symbol (regexp or words): \nP") (setq apropos-regexp (apropos-rewrite-regexp apropos-regexp)) - (setq apropos-accumulator - (apropos-internal apropos-regexp + (apropos-symbols-internal + (apropos-internal apropos-regexp (and (not do-all) (not apropos-do-all) (lambda (symbol) (or (fboundp symbol) (boundp symbol) (facep symbol) - (symbol-plist symbol)))))) - (let ((tem apropos-accumulator)) - (while tem - (if (get (car tem) 'apropos-inhibit) - (setq apropos-accumulator (delq (car tem) apropos-accumulator))) - (setq tem (cdr tem)))) - (let ((p apropos-accumulator) - symbol doc properties) - (while p - (setcar p (list - (setq symbol (car p)) - (apropos-score-symbol symbol) - (when (fboundp symbol) - (if (setq doc (condition-case nil - (documentation symbol t) - (void-function - "(alias for undefined function)") - (error - "(error retrieving function documentation)"))) - (substring doc 0 (string-match "\n" doc)) - "(not documented)")) - (when (boundp symbol) - (apropos-documentation-property + (symbol-plist symbol))))) + (or do-all apropos-do-all))) + +(defun apropos-symbols-internal (symbols keys &optional text) + ;; Filter out entries that are marked as apropos-inhibit. + (let ((all nil)) + (dolist (symbol symbols) + (unless (get symbol 'apropos-inhibit) + (push symbol all))) + (setq symbols all)) + (let ((apropos-accumulator + (mapcar + (lambda (symbol) + (let (doc properties) + (list + symbol + (apropos-score-symbol symbol) + (when (fboundp symbol) + (if (setq doc (condition-case nil + (documentation symbol t) + (void-function + "(alias for undefined function)") + (error + "(can't retrieve function documentation)"))) + (substring doc 0 (string-match "\n" doc)) + "(not documented)")) + (when (boundp symbol) + (apropos-documentation-property symbol 'variable-documentation t)) (when (setq properties (symbol-plist symbol)) (setq doc (list (car properties))) @@ -492,16 +497,14 @@ (when (get symbol 'widget-type) (apropos-documentation-property symbol 'widget-documentation t)) - (when (facep symbol) - (apropos-documentation-property - symbol 'face-documentation t)) - (when (get symbol 'custom-group) + (when (facep symbol) + (apropos-documentation-property + symbol 'face-documentation t)) + (when (get symbol 'custom-group) (apropos-documentation-property - symbol 'group-documentation t)))) - (setq p (cdr p)))) - (apropos-print - (or do-all apropos-do-all) - nil)) + symbol 'group-documentation t))))) + symbols))) + (apropos-print keys nil text))) ;;;###autoload @@ -755,7 +758,7 @@ function)) -(defun apropos-print (do-keys spacing) +(defun apropos-print (do-keys spacing &optional text) "Output result of apropos searching into buffer `*Apropos*'. The value of `apropos-accumulator' is the list of items to output. Each element should have the format @@ -764,8 +767,8 @@ alphabetically by symbol name; but this function also sets `apropos-accumulator' to nil before returning. -If SPACING is non-nil, it should be a string; -separate items with that string." +If SPACING is non-nil, it should be a string; separate items with that string. +If non-nil TEXT is a string that will be printed as a heading." (if (null apropos-accumulator) (message "No apropos matches for `%s'" apropos-orig-regexp) (setq apropos-accumulator @@ -794,6 +797,7 @@ " or variable,\n" (substitute-command-keys "and type \\[apropos-follow] to get full documentation.\n\n")) + (if text (insert text "\n\n")) (while (consp p) (when (and spacing (not (bobp))) (princ spacing)) @@ -907,13 +911,15 @@ (defun apropos-describe-plist (symbol) "Display a pretty listing of SYMBOL's plist." - (with-output-to-temp-buffer "*Help*" + (help-setup-xref (list 'apropos-describe-plist symbol) (interactive-p)) + (with-output-to-temp-buffer (help-buffer) (set-buffer standard-output) (princ "Symbol ") (prin1 symbol) (princ "'s plist is\n (") (if apropos-symbol-face - (put-text-property 8 (- (point) 14) 'face apropos-symbol-face)) + (put-text-property (+ (point-min) 7) (- (point) 14) + 'face apropos-symbol-face)) (insert (apropos-format-plist symbol "\n ")) (princ ")") (print-help-return-message)))
--- a/lisp/autorevert.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/autorevert.el Sun Mar 28 06:08:38 2004 +0000 @@ -198,19 +198,6 @@ This variable becomes buffer local when set in any fashion.") (make-variable-buffer-local 'global-auto-revert-ignore-buffer) -(defvar buffer-stale-function nil - "Function to check whether a non-file buffer needs reverting. -This should be a function with one optional argument NOCONFIRM. -Auto Revert Mode sets NOCONFIRM to t. The function should return -non-nil if the buffer should be reverted. The buffer is current -when this function is called. - -The idea behind the NOCONFIRM argument is that the same function -can also be used to ask the user whether the buffer should be -reverted. In such a situation one has to be less careful about, -say, reverting remote files, than if the function is called at -regular intervals by Auto Revert Mode.") - ;; Internal variables: (defvar auto-revert-buffer-list '() @@ -349,8 +336,8 @@ (let (revert) (cond ((auto-revert-vc-buffer-p) - (when (auto-revert-handler-vc) - (setq revert 'vc))) + (when (auto-revert-handler-vc) + (setq revert 'vc))) ((or (and (buffer-file-name) (file-readable-p (buffer-file-name)) (not (verify-visited-file-modtime (current-buffer)))) @@ -361,11 +348,11 @@ (funcall buffer-stale-function t))) (setq revert t))) (when revert + (when auto-revert-verbose + (message "Reverting buffer `%s'." (buffer-name))) (revert-buffer 'ignore-auto 'dont-ask 'preserve-modes) - (if (eq revert 'vc) - (vc-mode-line buffer-file-name)) - (if auto-revert-verbose - (message "Reverting buffer `%s'." (buffer-name))))))) + (if (eq revert 'vc) + (vc-mode-line buffer-file-name)))))) (defun auto-revert-buffers () "Revert buffers as specified by Auto-Revert and Global Auto-Revert Mode.
--- a/lisp/bs.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/bs.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; bs.el --- menu for selecting and displaying buffers -;; Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2004 Free Software Foundation, Inc. ;; Author: Olaf Sylvester <Olaf.Sylvester@netsurf.de> ;; Maintainer: Olaf Sylvester <Olaf.Sylvester@netsurf.de> ;; Keywords: convenience @@ -546,9 +546,7 @@ (extern-must-show-from-fun (and bs-must-show-function (funcall bs-must-show-function (car list)))) - (show-flag (save-excursion - (set-buffer (car list)) - bs-buffer-show-mark))) + (show-flag (buffer-local-value 'bs-buffer-show-mark (car list)))) (if (or (eq show-flag 'always) (and (or bs--show-all (not (eq show-flag 'never))) (not int-show-never) @@ -865,9 +863,7 @@ "Set value `bs-buffer-show-mark' of buffer BUFFER to WHAT. Redisplay current line and display a message describing the status of buffer on current line." - (save-excursion - (set-buffer buffer) - (setq bs-buffer-show-mark what)) + (with-current-buffer buffer (setq bs-buffer-show-mark what)) (bs--update-current-line) (bs--set-window-height) (bs--show-config-message what))
--- a/lisp/buff-menu.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/buff-menu.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; buff-menu.el --- buffer menu main function and support functions -;; Copyright (C) 1985, 86, 87, 93, 94, 95, 2000, 2001, 2002, 2003 +;; Copyright (C) 1985, 86, 87, 93, 94, 95, 2000, 2001, 2002, 03, 2004 ;; Free Software Foundation, Inc. ;; Maintainer: FSF @@ -47,22 +47,22 @@ ;;; Code: -;;;Trying to preserve the old window configuration works well in -;;;simple scenarios, when you enter the buffer menu, use it, and exit it. -;;;But it does strange things when you switch back to the buffer list buffer -;;;with C-x b, later on, when the window configuration is different. -;;;The choice seems to be, either restore the window configuration -;;;in all cases, or in no cases. -;;;I decided it was better not to restore the window config at all. -- rms. +;;Trying to preserve the old window configuration works well in +;;simple scenarios, when you enter the buffer menu, use it, and exit it. +;;But it does strange things when you switch back to the buffer list buffer +;;with C-x b, later on, when the window configuration is different. +;;The choice seems to be, either restore the window configuration +;;in all cases, or in no cases. +;;I decided it was better not to restore the window config at all. -- rms. -;;;But since then, I changed buffer-menu to use the selected window, -;;;so q now once again goes back to the previous window configuration. +;;But since then, I changed buffer-menu to use the selected window, +;;so q now once again goes back to the previous window configuration. -;;;(defvar Buffer-menu-window-config nil -;;; "Window configuration saved from entry to `buffer-menu'.") +;;(defvar Buffer-menu-window-config nil +;; "Window configuration saved from entry to `buffer-menu'.") -; Put buffer *Buffer List* into proper mode right away -; so that from now on even list-buffers is enough to get a buffer menu. +;; Put buffer *Buffer List* into proper mode right away +;; so that from now on even list-buffers is enough to get a buffer menu. (defgroup Buffer-menu nil "Show a menu of all buffers in a buffer." @@ -89,7 +89,7 @@ :type 'number :group 'Buffer-menu) -; This should get updated & resorted when you click on a column heading +;; This should get updated & resorted when you click on a column heading (defvar Buffer-menu-sort-column nil "*2 for sorting by buffer names. 5 for sorting by file names. nil for default sorting by visited order.") @@ -99,6 +99,14 @@ (defvar Buffer-menu-mode-map nil "Local keymap for `Buffer-menu-mode' buffers.") +(defvar Buffer-menu-files-only nil + "Non-nil if the current buffer-menu lists only file buffers. +This variable determines whether reverting the buffer lists only +file buffers. It affects both manual reverting and reverting by +Auto Revert Mode.") + +(make-variable-buffer-local 'Buffer-menu-files-only) + (if Buffer-menu-mode-map () (setq Buffer-menu-mode-map (make-keymap)) @@ -131,6 +139,7 @@ (define-key Buffer-menu-mode-map "b" 'Buffer-menu-bury) (define-key Buffer-menu-mode-map "g" 'Buffer-menu-revert) (define-key Buffer-menu-mode-map "V" 'Buffer-menu-view) + (define-key Buffer-menu-mode-map "T" 'Buffer-menu-toggle-files-only) (define-key Buffer-menu-mode-map [mouse-2] 'Buffer-menu-mouse-select) ) @@ -167,13 +176,16 @@ \\[Buffer-menu-backup-unmark] -- back up a line and remove marks. \\[Buffer-menu-toggle-read-only] -- toggle read-only status of buffer on this line. \\[Buffer-menu-revert] -- update the list of buffers. +\\[Buffer-menu-toggle-files-only] -- toggle whether the menu displays only file buffers. \\[Buffer-menu-bury] -- bury the buffer listed on this line." (kill-all-local-variables) (use-local-map Buffer-menu-mode-map) (setq major-mode 'Buffer-menu-mode) (setq mode-name "Buffer Menu") - (make-local-variable 'revert-buffer-function) - (setq revert-buffer-function 'Buffer-menu-revert-function) + (set (make-local-variable 'revert-buffer-function) + 'Buffer-menu-revert-function) + (set (make-local-variable 'buffer-stale-function) + #'(lambda (&optional noconfirm) t)) (setq truncate-lines t) (setq buffer-read-only t) (run-hooks 'buffer-menu-mode-hook)) @@ -184,7 +196,21 @@ (revert-buffer)) (defun Buffer-menu-revert-function (ignore1 ignore2) - (list-buffers)) + ;; We can not use save-excursion here. The buffer gets erased. + (let ((old-point (point))) + (list-buffers-noselect Buffer-menu-files-only) + (goto-char old-point))) + +(defun Buffer-menu-toggle-files-only (arg) + "Toggle whether the current buffer-menu displays only file buffers. +With a positive ARG display only file buffers. With zero or +negative ARG, display other buffers as well." + (interactive "P") + (setq Buffer-menu-files-only + (cond ((not arg) (not Buffer-menu-files-only)) + ((> (prefix-numeric-value arg) 0) t))) + (revert-buffer)) + (defun Buffer-menu-buffer (error-if-non-existent-p) "Return buffer described by this line of buffer menu." @@ -547,6 +573,29 @@ ? ) size)) +(defun Buffer-menu-sort (column) + "Sort the buffer menu by COLUMN." + (interactive "P") + (when column + (setq column (prefix-numeric-value column)) + (if (< column 2) (setq column 2)) + (if (> column 5) (setq column 5))) + (setq Buffer-menu-sort-column column) + (Buffer-menu-revert)) + +(defun Buffer-menu-make-sort-button (name column) + (if (equal column Buffer-menu-sort-column) (setq column nil)) + (propertize name + 'help-echo (if column + (concat "mouse-2: sort by " (downcase name)) + "mouse-2: sort by visited order") + 'mouse-face 'highlight + 'keymap (let ((map (make-sparse-keymap))) + (define-key map [header-line mouse-2] + `(lambda () (interactive) + (Buffer-menu-sort ,column))) + map))) + (defun list-buffers-noselect (&optional files-only) "Create and return a buffer with a list of names of existing buffers. The buffer is named `*Buffer List*'. @@ -557,29 +606,25 @@ (let* ((old-buffer (current-buffer)) (standard-output standard-output) (mode-end (make-string (- Buffer-menu-mode-width 2) ? )) - (header (concat (propertize "CRM " 'face 'fixed-pitch) - (Buffer-menu-buffer+size "Buffer" "Size") - " Mode" mode-end "File\n")) - list desired-point name file mode) + (header (concat " " (propertize "CRM " 'face 'fixed-pitch) + (Buffer-menu-buffer+size + (Buffer-menu-make-sort-button "Buffer" 2) + (Buffer-menu-make-sort-button "Size" 3)) + " " + (Buffer-menu-make-sort-button "Mode" 4) mode-end + (Buffer-menu-make-sort-button "File" 5) "\n")) + list desired-point name file) (when Buffer-menu-use-header-line - (let ((spaces - (- (car (window-inside-edges)) - (car (window-edges)))) - (pos 0)) + (let ((pos 0)) ;; Turn spaces in the header into stretch specs so they work ;; regardless of the header-line face. (while (string-match "[ \t]+" header pos) (setq pos (match-end 0)) (put-text-property (match-beginning 0) pos 'display ;; Assume fixed-size chars - (list 'space :align-to (+ spaces pos)) - header)) - ;; Add the leading space - (setq header (concat (propertize (make-string (floor spaces) ? ) - 'display (list 'space :width spaces)) + (list 'space :align-to (1- pos)) header)))) - (save-excursion - (set-buffer (get-buffer-create "*Buffer List*")) + (with-current-buffer (get-buffer-create "*Buffer List*") (setq buffer-read-only nil) (erase-buffer) (setq standard-output (current-buffer)) @@ -662,6 +707,8 @@ ;; current buffer is not displayed for some reason. (and desired-point (goto-char desired-point)) + (setq Buffer-menu-files-only files-only) + (set-buffer-modified-p nil) (current-buffer)))) ;;; arch-tag: e7dfcfc9-6cb2-46e4-bf55-8ef1936d83c6
--- a/lisp/calc/calc-ext.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/calc/calc-ext.el Sun Mar 28 06:08:38 2004 +0000 @@ -591,6 +591,9 @@ (define-key calc-mode-map "v}" 'calc-matrix-brackets) (define-key calc-mode-map "v(" 'calc-vector-parens) (define-key calc-mode-map "v)" 'calc-matrix-brackets) + ;; We can't rely on the automatic upper->lower conversion because + ;; in the global map V is explicitly bound, so we need to bind it + ;; explicitly as well :-( --stef (define-key calc-mode-map "V" (lookup-key calc-mode-map "v")) (define-key calc-mode-map "z" 'nil)
--- a/lisp/calc/calc.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/calc/calc.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; calc.el --- the GNU Emacs calculator -;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002 Free Software Foundation, Inc. +;; Copyright (C) 1990, 1991, 1992, 1993, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ;; Author: David Gillespie <daveg@synaptics.com> ;; Maintainers: D. Goel <deego@gnufans.org> @@ -733,13 +733,13 @@ (define-key map "\M-\C-m" 'calc-last-args-stub) (define-key map "\C-j" 'calc-over) - (mapcar (lambda (x) (define-key map (char-to-string x) 'undefined)) - "lOW") - (mapcar (lambda (x) (define-key map (char-to-string x) 'calc-missing-key)) - (concat "ABCDEFGHIJKLMNPQRSTUVXZabcdfghjkmoprstuvwxyz" - ":\\|!()[]<>{},;=~`\C-k\M-k\C-w\M-w\C-y\C-_")) - (mapcar (lambda (x) (define-key map (char-to-string x) 'calcDigit-start)) - "_0123456789.#@") + (mapc (lambda (x) (define-key map (char-to-string x) 'undefined)) + "lOW") + (mapc (lambda (x) (define-key map (char-to-string x) 'calc-missing-key)) + (concat "ABCDEFGHIJKLMNPQRSTUVXZabcdfghjkmoprstuvwxyz" + ":\\|!()[]<>{},;=~`\C-k\M-k\C-w\M-w\C-y\C-_")) + (mapc (lambda (x) (define-key map (char-to-string x) 'calcDigit-start)) + "_0123456789.#@") map)) (defvar calc-digit-map @@ -2952,8 +2952,7 @@ (if (eq calc-language 'big) (setq s (concat s "\n")) (when calc-line-numbering - (aset s 0 ?1) - (aset s 1 ?:))) + (setq s (concat "1:" (substring s 2))))) (setcar (cdr entry) (calc-count-lines s)) s))
--- a/lisp/cvs-status.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/cvs-status.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; cvs-status.el --- major mode for browsing `cvs status' output -;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2000, 03, 2004 Free Software Foundation, Inc. ;; Author: Stefan Monnier <monnier@cs.yale.edu> ;; Keywords: pcl-cvs cvs status tree tools @@ -385,7 +385,7 @@ ;;;; (defvar cvs-tree-use-jisx0208 - nil ;; (and (char-display-font 'japanese-jisx0208) t) + (and (char-displayable-p (make-char 'japanese-jisx0208 40 44)) t) "*Non-nil if we should use the graphical glyphs from `japanese-jisx0208'. Otherwise, default to ASCII chars like +, - and |.")
--- a/lisp/dabbrev.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/dabbrev.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; dabbrev.el --- dynamic abbreviation package -;; Copyright (C) 1985, 86, 92, 94, 96, 1997, 2000, 01, 2003 +;; Copyright (C) 1985, 86, 92, 94, 96, 1997, 2000, 01, 03, 2004 ;; Free Software Foundation, Inc. ;; Author: Don Morrison @@ -529,7 +529,7 @@ ;; Take the following word, with intermediate separators, ;; as our expansion this time. (re-search-forward - (concat "\\(\\(" dabbrev--abbrev-char-regexp "\\)+\\)")) + (concat "\\(?:" dabbrev--abbrev-char-regexp "\\)+")) (setq expansion (buffer-substring-no-properties dabbrev--last-expansion-location (point))) @@ -793,10 +793,7 @@ ;; Walk through the buffers till we find a match. (let (expansion) (while (and (not expansion) dabbrev--friend-buffer-list) - (setq dabbrev--last-buffer - (car dabbrev--friend-buffer-list)) - (setq dabbrev--friend-buffer-list - (cdr dabbrev--friend-buffer-list)) + (setq dabbrev--last-buffer (pop dabbrev--friend-buffer-list)) (set-buffer dabbrev--last-buffer) (dabbrev--scanning-message) (setq dabbrev--last-expansion-location (point-min)) @@ -1000,8 +997,7 @@ nil ;; We have a truly valid match. Find the end. (re-search-forward pattern2) - (setq found-string (buffer-substring-no-properties - (match-beginning 0) (match-end 0))) + (setq found-string (match-string-no-properties 0)) (setq result found-string) (and ignore-case (setq found-string (downcase found-string))) ;; Ignore this match if it's already in the table. @@ -1010,9 +1006,7 @@ (string= found-string table-string)) (setq found-string nil))) ;; Prepare to continue searching. - (if reverse - (goto-char (match-beginning 0)) - (goto-char (match-end 0)))) + (goto-char (if reverse (match-beginning 0) (match-end 0)))) ;; If we found something, use it. (when found-string ;; Put it into `dabbrev--last-table'
--- a/lisp/dired.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/dired.el Sun Mar 28 06:08:38 2004 +0000 @@ -1227,8 +1227,6 @@ ;; Dired mode is suitable only for specially formatted data. (put 'dired-mode 'mode-class 'special) -(defvar buffer-stale-function) - (defun dired-mode (&optional dirname switches) "\ Mode for \"editing\" directory listings. @@ -1323,7 +1321,7 @@ (set (make-local-variable 'font-lock-defaults) '(dired-font-lock-keywords t nil nil beginning-of-line)) (dired-sort-other dired-actual-switches t) - (run-hooks 'dired-mode-hook) + (run-mode-hooks 'dired-mode-hook) (when (featurep 'x-dnd) (make-variable-buffer-local 'x-dnd-test-function) (make-variable-buffer-local 'x-dnd-protocol-alist) @@ -1720,12 +1718,9 @@ (string-match "[xst]" ;; execute bit set anywhere? (concat - (buffer-substring (match-beginning 2) - (match-end 2)) - (buffer-substring (match-beginning 3) - (match-end 3)) - (buffer-substring (match-beginning 4) - (match-end 4)))))) + (match-string 2) + (match-string 3) + (match-string 4))))) (or no-error (error "No file on this line")))) ;; Move point to end of name: (if symlink @@ -2897,10 +2892,10 @@ (concat result (substring string start)))) (defun dired-sort-other (switches &optional no-revert) - ;; Specify new ls SWITCHES for current dired buffer. Values matching - ;; `dired-sort-by-date-regexp' or `dired-sort-by-name-regexp' set the - ;; minor mode accordingly, others appear literally in the mode line. - ;; With optional second arg NO-REVERT, don't refresh the listing afterwards. + "Specify new ls SWITCHES for current dired buffer. +Values matching `dired-sort-by-date-regexp' or `dired-sort-by-name-regexp' +set the minor mode accordingly, others appear literally in the mode line. +With optional second arg NO-REVERT, don't refresh the listing afterwards." (dired-sort-R-check switches) (setq dired-actual-switches switches) (if (eq major-mode 'dired-mode) (dired-sort-set-modeline))
--- a/lisp/ediff-init.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/ediff-init.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; ediff-init.el --- Macros, variables, and defsubsts used by Ediff -;; Copyright (C) 1994, 95, 96, 97, 98, 99, 2000, 01, 02 Free Software Foundation, Inc. +;; Copyright (C) 1994, 95, 96, 97, 98, 99, 2000, 01, 02, 04 Free Software Foundation, Inc. ;; Author: Michael Kifer <kifer@cs.stonybrook.edu> @@ -895,7 +895,8 @@ (sit-for 1))))) (defun ediff-hide-face (face) - (if (and (ediff-has-face-support-p) ediff-emacs-p) + (if (and (ediff-has-face-support-p) (boundp 'add-to-list) + (boundp 'facemenu-unlisted-faces)) (add-to-list 'facemenu-unlisted-faces face))) @@ -1288,7 +1289,7 @@ ;;; Misc ;; if nil, this silences some messages -(defconst ediff-verbose-p t) +(defvar ediff-verbose-p t) (defcustom ediff-autostore-merges 'group-jobs-only "*Save the results of merge jobs automatically.
--- a/lisp/electric.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/electric.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; electric.el --- window maker and Command loop for `electric' modes -;; Copyright (C) 1985, 1986, 1995 Free Software Foundation, Inc. +;; Copyright (C) 1985, 1986, 1995, 2004 Free Software Foundation, Inc. ;; Author: K. Shane Hartman ;; Maintainer: FSF @@ -144,12 +144,12 @@ (buf (get-buffer buffer)) (one-window (one-window-p t)) (pop-up-windows t) + (pop-up-frames nil) (target-height) (lines)) (if (not buf) (error "Buffer %s does not exist" buffer) - (save-excursion - (set-buffer buf) + (with-current-buffer buf (setq lines (count-lines (point-min) (point-max))) (setq target-height (min (max (if max-height (min max-height (1+ lines)) (1+ lines))
--- a/lisp/emacs-lisp/rx.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/emacs-lisp/rx.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; rx.el --- sexp notation for regular expressions -;; Copyright (C) 2001, 03, 2004 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc. ;; Author: Gerd Moellmann <gerd@gnu.org> ;; Maintainer: FSF @@ -802,6 +802,9 @@ `(backref N)' matches what was matched previously by submatch N. +`(backref N)' + matches what was matched previously by submatch N. + `(eval FORM)' evaluate FORM and insert result. If result is a string, `regexp-quote' it. @@ -811,7 +814,6 @@ (rx-to-string regexp)) - (provide 'rx) ;;; arch-tag: 12d01a63-0008-42bb-ab8c-1c7d63be370b
--- a/lisp/eshell/em-alias.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/eshell/em-alias.el Sun Mar 28 06:08:38 2004 +0000 @@ -28,7 +28,7 @@ (defgroup eshell-alias nil "Command aliases allow for easy definition of alternate commands." :tag "Command aliases" - :link '(info-link "(eshell)Command aliases") + ;; :link '(info-link "(eshell)Command aliases") :group 'eshell-module) ;;; Commentary: @@ -103,7 +103,7 @@ (defcustom eshell-bad-command-tolerance 3 "*The number of failed commands to ignore before creating an alias." :type 'integer - :link '(custom-manual "(eshell)Auto-correction of bad commands") + ;; :link '(custom-manual "(eshell)Auto-correction of bad commands") :group 'eshell-alias) ;;;
--- a/lisp/eshell/em-banner.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/eshell/em-banner.el Sun Mar 28 06:08:38 2004 +0000 @@ -30,7 +30,7 @@ It exists so that others wishing to create their own Eshell extension modules may have a simple template to begin with." :tag "Login banner" - :link '(info-link "(eshell)Login banner") + ;; :link '(info-link "(eshell)Login banner") :group 'eshell-module) ;;; Commentary:
--- a/lisp/eshell/em-smart.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/eshell/em-smart.el Sun Mar 28 06:08:38 2004 +0000 @@ -33,7 +33,7 @@ Most likely you will have to turn this option on and play around with it to get a real sense of how it works." :tag "Smart display of output" - :link '(info-link "(eshell)Smart display of output") + ;; :link '(info-link "(eshell)Smart display of output") :group 'eshell-module) ;;; Commentary:
--- a/lisp/eshell/esh-cmd.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/eshell/esh-cmd.el Sun Mar 28 06:08:38 2004 +0000 @@ -30,7 +30,7 @@ pressing <RET>. There are several different kinds of commands, however." :tag "Command invocation" - :link '(info-link "(eshell)Command invocation") + ;; :link '(info-link "(eshell)Command invocation") :group 'eshell) ;;; Commentary:
--- a/lisp/eshell/eshell.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/eshell/eshell.el Sun Mar 28 06:08:38 2004 +0000 @@ -34,7 +34,7 @@ bash, zsh, rc, 4dos; since Emacs itself is capable of handling most of the tasks accomplished by such tools." :tag "The Emacs shell" - :link '(info-link "(eshell)The Emacs shell") + :link '(info-link "(eshell)Top") :version "21.1" :group 'applications)
--- a/lisp/faces.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/faces.el Sun Mar 28 06:08:38 2004 +0000 @@ -1071,7 +1071,7 @@ If optional argument FRAME Is nil or omitted, use the selected frame." (let ((completion-ignore-case t)) (completing-read (format "Set font attributes of face `%s' from font: " face) - (mapcar 'list (x-list-fonts "*" nil frame))))) + (x-list-fonts "*" nil frame)))) (defun read-all-face-attributes (face &optional frame) @@ -1866,7 +1866,9 @@ (put 'modeline-inactive 'face-alias 'mode-line-inactive) (defface header-line - '((((type tty)) + '((t + :inherit mode-line) + (((type tty)) ;; This used to be `:inverse-video t', but that doesn't look very ;; good when combined with inverse-video mode-lines and multiple ;; windows. Underlining looks better, and is more consistent with @@ -1876,41 +1878,37 @@ ;; highlighting; this may be too confusing in general, although it ;; happens to look good with the only current use of header-lines, ;; the info browser. XXX + :inverse-video nil ;Override the value inherited from mode-line. :underline t) (((class color grayscale) (background light)) :background "grey90" :foreground "grey20" - :box nil - :inherit mode-line) + :box nil) (((class color grayscale) (background dark)) :background "grey20" :foreground "grey90" - :box nil - :inherit mode-line) + :box nil) (((class mono) (background light)) :background "white" :foreground "black" :inverse-video nil :box nil - :underline t - :inherit mode-line) + :underline t) (((class mono) (background dark)) :background "black" :foreground "white" :inverse-video nil :box nil - :underline t - :inherit mode-line)) + :underline t)) "Basic header-line face." :version "21.1" :group 'basic-faces) (defface tool-bar - '((((type x w32 mac) (class color)) + '((t :box (:line-width 1 :style released-button) - :background "grey75" :foreground "black") + :foreground "black") + (((type x w32 mac) (class color)) + :background "grey75") (((type x) (class mono)) - :box (:line-width 1 :style released-button) - :background "grey" :foreground "black") - (t - ())) + :background "grey")) "Basic tool-bar face." :version "21.1" :group 'basic-faces)
--- a/lisp/files.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/files.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; files.el --- file input and output commands for Emacs -;; Copyright (C) 1985,86,87,92,93,94,95,96,97,98,99,2000,01,02,2003 +;; Copyright (C) 1985,86,87,92,93,94,95,96,97,98,99,2000,01,02,03,2004 ;;; Free Software Foundation, Inc. ;; Maintainer: FSF @@ -2905,9 +2905,9 @@ (or ;; Test for different drives on DOS/Windows (and + ;; Should `cygwin' really be included here? --stef (memq system-type '(ms-dos cygwin windows-nt)) - (not (string-equal (substring filename 0 2) - (substring directory 0 2)))) + (not (eq t (compare-strings filename 0 2 directory 0 2)))) ;; Test for different remote file handlers (not (eq hf hd)) ;; Test for different remote file system identification @@ -2925,21 +2925,22 @@ filename (let ((ancestor ".") (filename-dir (file-name-as-directory filename))) - (while - (and - (not (string-match (concat "\\`" (regexp-quote directory)) - filename-dir)) - (not (string-match (concat "\\`" (regexp-quote directory)) - filename))) + (while (not + (or + (eq t (compare-strings filename-dir nil (length directory) + directory nil nil case-fold-search)) + (eq t (compare-strings filename nil (length directory) + directory nil nil case-fold-search)))) (setq directory (file-name-directory (substring directory 0 -1)) ancestor (if (equal ancestor ".") ".." (concat "../" ancestor)))) ;; Now ancestor is empty, or .., or ../.., etc. - (if (string-match (concat "^" (regexp-quote directory)) filename) + (if (eq t (compare-strings filename nil (length directory) + directory nil nil case-fold-search)) ;; We matched within FILENAME's directory part. ;; Add the rest of FILENAME onto ANCESTOR. - (let ((rest (substring filename (match-end 0)))) + (let ((rest (substring filename (length directory)))) (if (and (equal ancestor ".") (not (equal rest ""))) ;; But don't bother with ANCESTOR if it would give us `./'. rest @@ -3453,6 +3454,18 @@ The function you specify is responsible for updating (or preserving) point.") +(defvar buffer-stale-function nil + "Function to check whether a non-file buffer needs reverting. +This should be a function with one optional argument NOCONFIRM. +Auto Revert Mode sets NOCONFIRM to t. The function should return +non-nil if the buffer should be reverted. The buffer is current +when this function is called. + +The idea behind the NOCONFIRM argument is that it should be +non-nil if the buffer is going to be reverted without asking the +user. In such situations, one has to be careful with potentially +time consuming operations.") + (defvar before-revert-hook nil "Normal hook for `revert-buffer' to run before reverting. If `revert-buffer-function' is used to override the normal revert
--- a/lisp/finder.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/finder.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; finder.el --- topic & keyword-based code finder -;; Copyright (C) 1992, 1997, 1998, 1999, 2001 Free Software Foundation, Inc. +;; Copyright (C) 1992,97,98,1999,2001,2004 Free Software Foundation, Inc. ;; Author: Eric S. Raymond <esr@snark.thyrsus.com> ;; Created: 16 Jun 1992 @@ -95,17 +95,16 @@ (wp . "word processing") )) -(defvar finder-mode-map nil) -(or finder-mode-map - (let ((map (make-sparse-keymap))) - (define-key map " " 'finder-select) - (define-key map "f" 'finder-select) - (define-key map [mouse-2] 'finder-mouse-select) - (define-key map "\C-m" 'finder-select) - (define-key map "?" 'finder-summary) - (define-key map "q" 'finder-exit) - (define-key map "d" 'finder-list-keywords) - (setq finder-mode-map map))) +(defvar finder-mode-map + (let ((map (make-sparse-keymap))) + (define-key map " " 'finder-select) + (define-key map "f" 'finder-select) + (define-key map [mouse-2] 'finder-mouse-select) + (define-key map "\C-m" 'finder-select) + (define-key map "?" 'finder-summary) + (define-key map "q" 'finder-exit) + (define-key map "d" 'finder-list-keywords) + map)) ;;; Code for regenerating the keyword list. @@ -336,13 +335,13 @@ \\[finder-select] more help for the item on the current line \\[finder-exit] exit Finder mode and kill the Finder buffer." (interactive) + (kill-all-local-variables) (use-local-map finder-mode-map) (set-syntax-table emacs-lisp-mode-syntax-table) (setq mode-name "Finder") (setq major-mode 'finder-mode) - (make-local-variable 'finder-headmark) - (setq finder-headmark nil) - (run-hooks 'finder-mode-hook)) + (set (make-local-variable 'finder-headmark) nil) + (run-mode-hooks 'finder-mode-hook)) (defun finder-summary () "Summarize basic Finder commands."
--- a/lisp/gnus/ChangeLog Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/gnus/ChangeLog Sun Mar 28 06:08:38 2004 +0000 @@ -1,3 +1,7 @@ +2004-03-27 Juanma Barranquero <lektu@terra.es> + + * gnus-srvr.el (gnus-server-prepare): Remove spurious call to `cdr'. + 2004-03-22 Stefan Monnier <monnier@iro.umontreal.ca> * gnus-art.el: Use inhibit-read-only instead of buffer-read-only.
--- a/lisp/gnus/gnus-srvr.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/gnus/gnus-srvr.el Sun Mar 28 06:08:38 2004 +0000 @@ -219,7 +219,7 @@ (while alist (unless (member (cdar alist) done) (push (cdar alist) done) - (cdr (setq server (pop alist))) + (setq server (pop alist)) (when (and server (car server) (cdr server)) (gnus-server-insert-server-line (car server) (cdr server)))) (when (member (cdar alist) done)
--- a/lisp/progmodes/cperl-mode.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/progmodes/cperl-mode.el Sun Mar 28 06:08:38 2004 +0000 @@ -2693,168 +2693,168 @@ (cperl-calculate-indent)) (current-indentation)))))))))))))) -(defvar cperl-indent-alist - '((string nil) - (comment nil) - (toplevel 0) - (toplevel-after-parenth 2) - (toplevel-continued 2) - (expression 1)) - "Alist of indentation rules for CPerl mode. -The values mean: - nil: do not indent; - number: add this amount of indentation. - -Not finished, not used.") - -(defun cperl-where-am-i (&optional parse-start start-state) - ;; Unfinished - "Return a list of lists ((TYPE POS)...) of good points before the point. -POS may be nil if it is hard to find, say, when TYPE is `string' or `comment'. - -Not finished, not used." - (save-excursion - (let* ((start-point (point)) - (s-s (cperl-get-state)) - (start (nth 0 s-s)) - (state (nth 1 s-s)) - (prestart (nth 3 s-s)) - (containing-sexp (car (cdr state))) - (case-fold-search nil) - (res (list (list 'parse-start start) (list 'parse-prestart prestart)))) - (cond ((nth 3 state) ; In string - (setq res (cons (list 'string nil (nth 3 state)) res))) ; What started string - ((nth 4 state) ; In comment - (setq res (cons '(comment) res))) - ((null containing-sexp) - ;; Line is at top level. - ;; Indent like the previous top level line - ;; unless that ends in a closeparen without semicolon, - ;; in which case this line is the first argument decl. - (cperl-backward-to-noncomment (or parse-start (point-min))) - ;;(skip-chars-backward " \t\f\n") - (cond - ((or (bobp) - (memq (preceding-char) (append ";}" nil))) - (setq res (cons (list 'toplevel start) res))) - ((eq (preceding-char) ?\) ) - (setq res (cons (list 'toplevel-after-parenth start) res))) - (t - (setq res (cons (list 'toplevel-continued start) res))))) - ((/= (char-after containing-sexp) ?{) - ;; line is expression, not statement: - ;; indent to just after the surrounding open. - ;; skip blanks if we do not close the expression. - (setq res (cons (list 'expression-blanks - (progn - (goto-char (1+ containing-sexp)) - (or (looking-at "[ \t]*\\(#\\|$\\)") - (skip-chars-forward " \t")) - (point))) - (cons (list 'expression containing-sexp) res)))) - ((progn - ;; Containing-expr starts with \{. Check whether it is a hash. - (goto-char containing-sexp) - (not (cperl-block-p))) - (setq res (cons (list 'expression-blanks - (progn - (goto-char (1+ containing-sexp)) - (or (looking-at "[ \t]*\\(#\\|$\\)") - (skip-chars-forward " \t")) - (point))) - (cons (list 'expression containing-sexp) res)))) - (t - ;; Statement level. - (setq res (cons (list 'in-block containing-sexp) res)) - ;; Is it a continuation or a new statement? - ;; Find previous non-comment character. - (cperl-backward-to-noncomment containing-sexp) - ;; Back up over label lines, since they don't - ;; affect whether our line is a continuation. - ;; Back up comma-delimited lines too ????? - (while (or (eq (preceding-char) ?\,) - (save-excursion (cperl-after-label))) - (if (eq (preceding-char) ?\,) - ;; Will go to beginning of line, essentially - ;; Will ignore embedded sexpr XXXX. - (cperl-backward-to-start-of-continued-exp containing-sexp)) - (beginning-of-line) - (cperl-backward-to-noncomment containing-sexp)) - ;; Now we get the answer. - (if (not (memq (preceding-char) (append ";}{" '(nil)))) ; Was ?\, - ;; This line is continuation of preceding line's statement. - (list (list 'statement-continued containing-sexp)) - ;; This line starts a new statement. - ;; Position following last unclosed open. - (goto-char containing-sexp) - ;; Is line first statement after an open-brace? - (or - ;; If no, find that first statement and indent like - ;; it. If the first statement begins with label, do - ;; not believe when the indentation of the label is too - ;; small. - (save-excursion - (forward-char 1) - (let ((colon-line-end 0)) - (while (progn (skip-chars-forward " \t\n" start-point) - (and (< (point) start-point) - (looking-at - "#\\|[a-zA-Z_][a-zA-Z0-9_]*:[^:]"))) - ;; Skip over comments and labels following openbrace. - (cond ((= (following-char) ?\#) - ;;(forward-line 1) - (end-of-line)) - ;; label: - (t - (save-excursion (end-of-line) - (setq colon-line-end (point))) - (search-forward ":")))) - ;; Now at the point, after label, or at start - ;; of first statement in the block. - (and (< (point) start-point) - (if (> colon-line-end (point)) - ;; Before statement after label - (if (> (current-indentation) - cperl-min-label-indent) - (list (list 'label-in-block (point))) - ;; Do not believe: `max' is involved - (list - (list 'label-in-block-min-indent (point)))) - ;; Before statement - (list 'statement-in-block (point)))))) - ;; If no previous statement, - ;; indent it relative to line brace is on. - ;; For open brace in column zero, don't let statement - ;; start there too. If cperl-indent-level is zero, - ;; use cperl-brace-offset + cperl-continued-statement-offset instead. - ;; For open-braces not the first thing in a line, - ;; add in cperl-brace-imaginary-offset. - - ;; If first thing on a line: ????? - (+ (if (and (bolp) (zerop cperl-indent-level)) - (+ cperl-brace-offset cperl-continued-statement-offset) - cperl-indent-level) - ;; Move back over whitespace before the openbrace. - ;; If openbrace is not first nonwhite thing on the line, - ;; add the cperl-brace-imaginary-offset. - (progn (skip-chars-backward " \t") - (if (bolp) 0 cperl-brace-imaginary-offset)) - ;; If the openbrace is preceded by a parenthesized exp, - ;; move to the beginning of that; - ;; possibly a different line - (progn - (if (eq (preceding-char) ?\)) - (forward-sexp -1)) - ;; Get initial indentation of the line we are on. - ;; If line starts with label, calculate label indentation - (if (save-excursion - (beginning-of-line) - (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*:[^:]")) - (if (> (current-indentation) cperl-min-label-indent) - (- (current-indentation) cperl-label-offset) - (cperl-calculate-indent)) - (current-indentation)))))))) - res))) +;; (defvar cperl-indent-alist +;; '((string nil) +;; (comment nil) +;; (toplevel 0) +;; (toplevel-after-parenth 2) +;; (toplevel-continued 2) +;; (expression 1)) +;; "Alist of indentation rules for CPerl mode. +;; The values mean: +;; nil: do not indent; +;; number: add this amount of indentation. + +;; Not finished, not used.") + +;; (defun cperl-where-am-i (&optional parse-start start-state) +;; ;; Unfinished +;; "Return a list of lists ((TYPE POS)...) of good points before the point. +;; ;; POS may be nil if it is hard to find, say, when TYPE is `string' or `comment'. + +;; ;; Not finished, not used." +;; (save-excursion +;; (let* ((start-point (point)) +;; (s-s (cperl-get-state)) +;; (start (nth 0 s-s)) +;; (state (nth 1 s-s)) +;; (prestart (nth 3 s-s)) +;; (containing-sexp (car (cdr state))) +;; (case-fold-search nil) +;; (res (list (list 'parse-start start) (list 'parse-prestart prestart)))) +;; (cond ((nth 3 state) ; In string +;; (setq res (cons (list 'string nil (nth 3 state)) res))) ; What started string +;; ((nth 4 state) ; In comment +;; (setq res (cons '(comment) res))) +;; ((null containing-sexp) +;; ;; Line is at top level. +;; ;; Indent like the previous top level line +;; ;; unless that ends in a closeparen without semicolon, +;; ;; in which case this line is the first argument decl. +;; (cperl-backward-to-noncomment (or parse-start (point-min))) +;; ;;(skip-chars-backward " \t\f\n") +;; (cond +;; ((or (bobp) +;; (memq (preceding-char) (append ";}" nil))) +;; (setq res (cons (list 'toplevel start) res))) +;; ((eq (preceding-char) ?\) ) +;; (setq res (cons (list 'toplevel-after-parenth start) res))) +;; (t +;; (setq res (cons (list 'toplevel-continued start) res))))) +;; ((/= (char-after containing-sexp) ?{) +;; ;; line is expression, not statement: +;; ;; indent to just after the surrounding open. +;; ;; skip blanks if we do not close the expression. +;; (setq res (cons (list 'expression-blanks +;; (progn +;; (goto-char (1+ containing-sexp)) +;; (or (looking-at "[ \t]*\\(#\\|$\\)") +;; (skip-chars-forward " \t")) +;; (point))) +;; (cons (list 'expression containing-sexp) res)))) +;; ((progn +;; ;; Containing-expr starts with \{. Check whether it is a hash. +;; (goto-char containing-sexp) +;; (not (cperl-block-p))) +;; (setq res (cons (list 'expression-blanks +;; (progn +;; (goto-char (1+ containing-sexp)) +;; (or (looking-at "[ \t]*\\(#\\|$\\)") +;; (skip-chars-forward " \t")) +;; (point))) +;; (cons (list 'expression containing-sexp) res)))) +;; (t +;; ;; Statement level. +;; (setq res (cons (list 'in-block containing-sexp) res)) +;; ;; Is it a continuation or a new statement? +;; ;; Find previous non-comment character. +;; (cperl-backward-to-noncomment containing-sexp) +;; ;; Back up over label lines, since they don't +;; ;; affect whether our line is a continuation. +;; ;; Back up comma-delimited lines too ????? +;; (while (or (eq (preceding-char) ?\,) +;; (save-excursion (cperl-after-label))) +;; (if (eq (preceding-char) ?\,) +;; ;; Will go to beginning of line, essentially +;; ;; Will ignore embedded sexpr XXXX. +;; (cperl-backward-to-start-of-continued-exp containing-sexp)) +;; (beginning-of-line) +;; (cperl-backward-to-noncomment containing-sexp)) +;; ;; Now we get the answer. +;; (if (not (memq (preceding-char) (append ";}{" '(nil)))) ; Was ?\, +;; ;; This line is continuation of preceding line's statement. +;; (list (list 'statement-continued containing-sexp)) +;; ;; This line starts a new statement. +;; ;; Position following last unclosed open. +;; (goto-char containing-sexp) +;; ;; Is line first statement after an open-brace? +;; (or +;; ;; If no, find that first statement and indent like +;; ;; it. If the first statement begins with label, do +;; ;; not believe when the indentation of the label is too +;; ;; small. +;; (save-excursion +;; (forward-char 1) +;; (let ((colon-line-end 0)) +;; (while (progn (skip-chars-forward " \t\n" start-point) +;; (and (< (point) start-point) +;; (looking-at +;; "#\\|[a-zA-Z_][a-zA-Z0-9_]*:[^:]"))) +;; ;; Skip over comments and labels following openbrace. +;; (cond ((= (following-char) ?\#) +;; ;;(forward-line 1) +;; (end-of-line)) +;; ;; label: +;; (t +;; (save-excursion (end-of-line) +;; (setq colon-line-end (point))) +;; (search-forward ":")))) +;; ;; Now at the point, after label, or at start +;; ;; of first statement in the block. +;; (and (< (point) start-point) +;; (if (> colon-line-end (point)) +;; ;; Before statement after label +;; (if (> (current-indentation) +;; cperl-min-label-indent) +;; (list (list 'label-in-block (point))) +;; ;; Do not believe: `max' is involved +;; (list +;; (list 'label-in-block-min-indent (point)))) +;; ;; Before statement +;; (list 'statement-in-block (point)))))) +;; ;; If no previous statement, +;; ;; indent it relative to line brace is on. +;; ;; For open brace in column zero, don't let statement +;; ;; start there too. If cperl-indent-level is zero, +;; ;; use cperl-brace-offset + cperl-continued-statement-offset instead. +;; ;; For open-braces not the first thing in a line, +;; ;; add in cperl-brace-imaginary-offset. + +;; ;; If first thing on a line: ????? +;; (+ (if (and (bolp) (zerop cperl-indent-level)) +;; (+ cperl-brace-offset cperl-continued-statement-offset) +;; cperl-indent-level) +;; ;; Move back over whitespace before the openbrace. +;; ;; If openbrace is not first nonwhite thing on the line, +;; ;; add the cperl-brace-imaginary-offset. +;; (progn (skip-chars-backward " \t") +;; (if (bolp) 0 cperl-brace-imaginary-offset)) +;; ;; If the openbrace is preceded by a parenthesized exp, +;; ;; move to the beginning of that; +;; ;; possibly a different line +;; (progn +;; (if (eq (preceding-char) ?\)) +;; (forward-sexp -1)) +;; ;; Get initial indentation of the line we are on. +;; ;; If line starts with label, calculate label indentation +;; (if (save-excursion +;; (beginning-of-line) +;; (looking-at "[ \t]*[a-zA-Z_][a-zA-Z_0-9]*:[^:]")) +;; (if (> (current-indentation) cperl-min-label-indent) +;; (- (current-indentation) cperl-label-offset) +;; (cperl-calculate-indent)) +;; (current-indentation)))))))) +;; res))) (defun cperl-calculate-indent-within-comment () "Return the indentation amount for line, assuming that
--- a/lisp/ses.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/ses.el Sun Mar 28 06:08:38 2004 +0000 @@ -2658,27 +2658,6 @@ ;;;; Other user commands ;;;---------------------------------------------------------------------------- -;; This should be used by `call-interactively'. -(defun ses-read-number (prompt &optional default) - (let ((n nil)) - (when default - (setq prompt - (if (string-match "\\(\\):[^:]*" prompt) - (replace-match (format " [%s]" default) t t prompt 1) - (concat prompt (format " [%s] " default))))) - (while - (progn - (let ((str (read-from-minibuffer prompt nil nil nil nil - (number-to-string default)))) - (setq n (cond - ((zerop (length str)) default) - ((stringp str) (read str))))) - (unless (numberp n) - (message "Please enter a number.") - (sit-for 1) - t))) - n)) - (defun ses-unset-header-row () "Select the default header row." (interactive) @@ -2694,7 +2673,7 @@ (list (if (numberp current-prefix-arg) current-prefix-arg (let ((currow (1+ (car (ses-sym-rowcol ses--curcell))))) (if current-prefix-arg - (ses-read-number "Header row: " currow) + (read-number "Header row: " currow) currow))))) (if (or (< row 0) (> row ses--numrows)) (error "Invalid header-row"))
--- a/lisp/strokes.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/strokes.el Sun Mar 28 06:08:38 2004 +0000 @@ -78,7 +78,7 @@ ;; however, if you would probably just have the user enter in the ;; stroke interactively and then set the stroke to whatever he/she -;; entered. The Lisp function to interactively read a stroke is +;; entered. The Lisp function to interactively read a stroke is ;; `strokes-read-stroke'. This is especially helpful when you're ;; on a fast computer that can handle a 9x9 stroke grid. @@ -435,7 +435,9 @@ Operated just like `global-set-key', except for strokes. COMMAND is a symbol naming an interactively-callable function. STROKE is a list of sampled positions on the stroke grid as described in the -documentation for the `strokes-define-stroke' function." +documentation for the `strokes-define-stroke' function. + +See also `strokes-global-set-stroke-string'." (interactive (list (and (or strokes-mode (strokes-mode t)) @@ -444,6 +446,22 @@ (read-command "Command to map stroke to: "))) (strokes-define-stroke strokes-global-map stroke command)) +(defun strokes-global-set-stroke-string (stroke string) + "Interactively give STROKE the global binding as STRING. +Operated just like `global-set-key', except for strokes. STRING +is a string to be inserted by the stroke. STROKE is a list of +sampled positions on the stroke grid as described in the +documentation for the `strokes-define-stroke' function. + +Compare `strokes-global-set-stroke'." + (interactive + (list + (and (or strokes-mode (strokes-mode t)) + (strokes-read-complex-stroke + "Draw with mouse button 1 (or 2). End with button 3...")) + (read-string "String to map stroke to: "))) + (strokes-define-stroke strokes-global-map stroke string)) + ;;(defun global-unset-stroke (stroke); FINISH THIS DEFUN! ;; "delete all strokes matching STROKE from `strokes-global-map', ;; letting the user input @@ -1319,7 +1337,9 @@ "------- ------") (loop for def in strokes-map do (let ((stroke (car def)) - (command-name (symbol-name (cdr def)))) + (command-name (if (symbolp (cdr def)) + (symbol-name (cdr def)) + (prin1-to-string (cdr def))))) (strokes-xpm-for-stroke stroke " *strokes-xpm*") (newline 2) (insert-char ?\ 45) @@ -1327,9 +1347,13 @@ (insert command-name) (beginning-of-line) (forward-char 45) - (insert-image (create-image (with-current-buffer " *strokes-xpm*" - (buffer-string)) - 'xpm t))) + (insert-image + (create-image (with-current-buffer " *strokes-xpm*" + (buffer-string)) + 'xpm t + :color-symbols + `(("foreground" + . ,(frame-parameter nil 'foreground-color)))))) finally do (kill-region (1+ (point)) (point-max))) (view-buffer "*Strokes List*" nil) (set (make-local-variable 'view-mode-map)
--- a/lisp/subr.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/subr.el Sun Mar 28 06:08:38 2004 +0000 @@ -1,6 +1,6 @@ ;;; subr.el --- basic lisp subroutines for Emacs -;; Copyright (C) 1985, 86, 92, 94, 95, 99, 2000, 2001, 2002, 2003 +;; Copyright (C) 1985, 86, 92, 94, 95, 99, 2000, 2001, 2002, 03, 2004 ;; Free Software Foundation, Inc. ;; Maintainer: FSF @@ -1307,6 +1307,27 @@ (setq pass new-pass)))))) (message nil) (or pass default "")))) + +;; This should be used by `call-interactively' for `n' specs. +(defun read-number (prompt &optional default) + (let ((n nil)) + (when default + (setq prompt + (if (string-match "\\(\\):[^:]*" prompt) + (replace-match (format " [%s]" default) t t prompt 1) + (concat prompt (format " [%s] " default))))) + (while + (progn + (let ((str (read-from-minibuffer prompt nil nil nil nil + (number-to-string default)))) + (setq n (cond + ((zerop (length str)) default) + ((stringp str) (read str))))) + (unless (numberp n) + (message "Please enter a number.") + (sit-for 1) + t))) + n)) ;;; Atomic change groups.
--- a/lisp/vc-hooks.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/vc-hooks.el Sun Mar 28 06:08:38 2004 +0000 @@ -6,7 +6,7 @@ ;; Author: FSF (see vc.el for full credits) ;; Maintainer: Andre Spiegel <spiegel@gnu.org> -;; $Id: vc-hooks.el,v 1.163 2004/03/23 20:59:19 monnier Exp $ +;; $Id: vc-hooks.el,v 1.164 2004/03/26 06:06:39 spiegel Exp $ ;; This file is part of GNU Emacs. @@ -267,6 +267,15 @@ ;; BEWARE!! `file' is evaluated twice!! `(vc-call-backend (vc-backend ,file) ',fun ,file ,@args)) +(defun vc-arg-list (backend fun) + "Return the argument list of BACKEND function FUN." + (let ((f (symbol-function (vc-find-backend-function backend fun)))) + (if (listp f) + ;; loaded from .el file + (cadr f) + ;; loaded from .elc file + (aref f 0)))) + (defsubst vc-parse-buffer (pattern i) "Find PATTERN in the current buffer and return its Ith submatch." @@ -463,15 +472,12 @@ (defun vc-default-workfile-unchanged-p (backend file) "Check if FILE is unchanged by diffing against the master version. Return non-nil if FILE is unchanged." - (let ((diff-args-length - (length (cadr (symbol-function - (vc-find-backend-function backend 'diff)))))) - (zerop (if (> diff-args-length 4) - ;; If the implementation supports it, let the output - ;; go to *vc*, not *vc-diff*, since this is an internal call. - (vc-call diff file nil nil "*vc*") - ;; for backward compatibility - (vc-call diff file))))) + (zerop (if (> (length (vc-arg-list backend 'diff)) 4) + ;; If the implementation supports it, let the output + ;; go to *vc*, not *vc-diff*, since this is an internal call. + (vc-call diff file nil nil "*vc*") + ;; for backward compatibility + (vc-call diff file)))) (defun vc-workfile-version (file) "Return the version level of the current workfile FILE.
--- a/lisp/vc.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/vc.el Sun Mar 28 06:08:38 2004 +0000 @@ -7,7 +7,7 @@ ;; Maintainer: Andre Spiegel <spiegel@gnu.org> ;; Keywords: tools -;; $Id: vc.el,v 1.371 2004/03/25 15:39:03 sds Exp $ +;; $Id: vc.el,v 1.373 2004/03/26 16:17:12 monnier Exp $ ;; This file is part of GNU Emacs. @@ -1989,9 +1989,7 @@ (vc-resynch-buffer file t (not (buffer-modified-p))) (if (zerop status) (message "Merge successful") (smerge-mode 1) - (if (y-or-n-p "Conflicts detected. Resolve them now? ") - (vc-resolve-conflicts name-A name-B) - (message "File contains conflict markers")))) + (message "File contains conflicts."))) ;;;###autoload (defalias 'vc-resolve-conflicts 'smerge-ediff) @@ -2334,19 +2332,12 @@ If FOCUS-REV is non-nil, leave the point at that revision." (interactive) (vc-ensure-vc-buffer) - (let* ((file buffer-file-name) - (backend-function - (symbol-function - (vc-find-backend-function (vc-backend file) 'print-log))) - (print-log-args - (if (byte-code-function-p backend-function) - (aref backend-function 0) - (cadr backend-function)))) + (let ((file buffer-file-name)) (or focus-rev (setq focus-rev (vc-workfile-version file))) ;; Don't switch to the output buffer before running the command, ;; so that any buffer-local settings in the vc-controlled ;; buffer can be accessed by the command. - (if (cdr print-log-args) + (if (> (length (vc-arg-list (vc-backend file) 'print-log)) 1) (progn (vc-call print-log file "*vc-change-log*") (set-buffer "*vc-change-log*"))
--- a/lisp/woman.el Fri Mar 26 04:35:08 2004 +0000 +++ b/lisp/woman.el Sun Mar 28 06:08:38 2004 +0000 @@ -3239,7 +3239,7 @@ ;; Paragraph .LP/PP/HP/IP/TP and font .B/.BI etc. macros reset font. ;; Should .SH/.SS reset font? ;; Font size setting macros (?) should reset font. - (let ((woman-font-alist woman-font-alist) ; for local updating + (let ((font-alist woman-font-alist) ; for local updating (previous-pos (point)) (previous-font 'default) (current-font 'default)) @@ -3270,15 +3270,15 @@ ;; Get font name: (or font (let ((fontstring (match-string 0))) - (setq font (assoc fontstring woman-font-alist) - ;; NB: woman-font-alist contains VARIABLE NAMES. + (setq font (assoc fontstring font-alist) + ;; NB: font-alist contains VARIABLE NAMES. font (if font (cdr font) (WoMan-warn "Unknown font %s." fontstring) ;; Output this message once only per call ... - (setq woman-font-alist + (setq font-alist (cons (cons fontstring 'woman-unknown-face) - woman-font-alist)) + font-alist)) 'woman-unknown-face) ))) ;; Delete font control line or escape sequence:
--- a/src/ChangeLog Fri Mar 26 04:35:08 2004 +0000 +++ b/src/ChangeLog Sun Mar 28 06:08:38 2004 +0000 @@ -1,19 +1,21 @@ +2004-03-26 Kim F. Storm <storm@cua.dk> + + * xdisp.c (syms_of_xdisp): Include `void-variable' in list_of_error + to catch errors in calc_pixel_width_or_height during redisplay. + 2004-03-26 Masatake YAMATO <jet@gyve.org> - * insdel.c (adjust_markers_for_insert): Call - fix_start_end_in_overlays. - - * buffer.c (fix_start_end_in_overlays): Rename - fix_overlays_in_range. + * buffer.c (fix_start_end_in_overlays): Rename fix_overlays_in_range. + + * lisp.h (fix_start_end_in_overlays): Likewise. + + * insdel.c (adjust_markers_for_insert): Call fix_start_end_in_overlays. * editfns.c (Ftranspose_regions): Likewise. - * lisp.h (top_level): Likewise. - 2004-03-20 Jan Dj,Ad(Brv <jan.h.d@swipnet.se> - * xterm.c (handle_one_xevent): Do not pass key press events to - GTK. + * xterm.c (handle_one_xevent): Do not pass key press events to GTK. 2004-03-19 Richard M. Stallman <rms@gnu.org> @@ -65,8 +67,7 @@ 2004-03-14 Steven Tamm <steventamm@mac.com> - * Makefile.in (XMENU_OBJ): Do not include xmenu.o if - HAVE_CARBON is defined. + * Makefile.in (XMENU_OBJ) [HAVE_CARBON]: Do not include xmenu.o. 2004-03-14 Kim F. Storm <storm@cua.dk>
--- a/src/xdisp.c Fri Mar 26 04:35:08 2004 +0000 +++ b/src/xdisp.c Sun Mar 28 06:08:38 2004 +0000 @@ -315,7 +315,7 @@ extern Lisp_Object Voverflow_newline_into_fringe; /* Test if overflow newline into fringe. Called with iterator IT - at or past right window margin, and with IT->current_x set. */ + at or past right window margin, and with IT->current_x set. */ #define IT_OVERFLOW_NEWLINE_INTO_FRINGE(it) \ (!NILP (Voverflow_newline_into_fringe) \ @@ -407,7 +407,7 @@ /* List of variables (symbols) which hold markers for overlay arrows. The symbols on this list are examined during redisplay to determine - where to display overlay arrows. */ + where to display overlay arrows. */ Lisp_Object Voverlay_arrow_variable_list; @@ -8363,7 +8363,7 @@ /* Redisplay the tool-bar if we changed it. */ if (! NILP (Fequal (old_tool_bar, f->tool_bar_items))) w->update_mode_line = Qt; - + UNGCPRO; unbind_to (count, Qnil); @@ -9462,7 +9462,7 @@ continue; val = find_symbol_value (var); - + if (MARKERP (val) && current_buffer == XMARKER (val)->buffer && (MATRIX_ROW_START_CHARPOS (row) == marker_position (val))) @@ -11352,7 +11352,7 @@ which reflect the whole buffer size, with special markers indicating narrowing, and scrollbars which reflect only the visible region. - + Note that mini-buffers sometimes aren't displaying any text. */ if (!MINI_WINDOW_P (w) || (w == XWINDOW (minibuf_window) @@ -11364,7 +11364,7 @@ /* I don't think this is guaranteed to be right. For the moment, we'll pretend it is. */ end = BUF_Z (buf) - XFASTINT (w->window_end_pos) - BUF_BEGV (buf); - + if (end < start) end = start; if (whole < (end - start)) @@ -16701,7 +16701,7 @@ /* Calculate a width or height in pixels from a specification using the following elements: - SPEC ::= + SPEC ::= NUM - a (fractional) multiple of the default font width/height (NUM) - specifies exactly NUM pixels UNIT - a fixed number of pixels, see below. @@ -16711,7 +16711,7 @@ (- SPEC SPEC ...) - subtract pixel values (- SPEC) - negate pixel value - NUM ::= + NUM ::= INT or FLOAT - a number constant SYMBOL - use symbol's (buffer local) variable binding. @@ -16737,15 +16737,15 @@ Examples: Pixels corresponding to 5 inches: - (5 . in) - + (5 . in) + Total width of non-text areas on left side of window (if scroll-bar is on left): '(space :width (+ left-fringe left-margin scroll-bar)) Align to first text column (in header line): '(space :align-to 0) - Align to middle of text area minus half the width of variable `my-image' + Align to middle of text area minus half the width of variable `my-image' containing a loaded image: '(space :align-to (0.5 . (- text my-image))) @@ -18313,7 +18313,7 @@ && calc_pixel_width_or_height (&tem, it, prop, font, 1, &align_to)) { if (it->glyph_row == NULL || !it->glyph_row->mode_line_p) - align_to = (align_to < 0 + align_to = (align_to < 0 ? 0 : align_to - window_box_left_offset (it->w, TEXT_AREA)); else if (align_to < 0) @@ -20196,7 +20196,7 @@ int x0, y0; /* Need an even number of coordinates, and at least 3 edges. */ - if (n < 6 || n & 1) + if (n < 6 || n & 1) return 0; /* Count edge segments intersecting line from (X,Y) to (X,infinity). @@ -20246,13 +20246,13 @@ return XCAR (map); map = XCDR (map); } - + return Qnil; } DEFUN ("lookup-image-map", Flookup_image_map, Slookup_image_map, 3, 3, 0, - doc: /* Lookup in image map MAP coordinates X and Y. + doc: /* Lookup in image map MAP coordinates X and Y. An image map is an alist where each element has the format (AREA ID PLIST). An AREA is specified as either a rectangle, a circle, or a polygon: A rectangle is a cons (rect . ((x0 . y0) . (x1 . y1))) specifying the @@ -21125,13 +21125,13 @@ cursor_glyph = get_phys_cursor_glyph (w); if (cursor_glyph) { - /* r is relative to W's box, but w->phys_cursor.x is relative + /* r is relative to W's box, but w->phys_cursor.x is relative to left edge of W's TEXT area. Adjust it. */ cr.x = window_box_left_offset (w, TEXT_AREA) + w->phys_cursor.x; cr.y = w->phys_cursor.y; cr.width = cursor_glyph->pixel_width; cr.height = w->phys_cursor_height; - /* ++KFS: W32 version used W32-specific IntersectRect here, but + /* ++KFS: W32 version used W32-specific IntersectRect here, but I assume the effect is the same -- and this is portable. */ return x_intersect_rectangles (&cr, r, &result); } @@ -21151,7 +21151,7 @@ struct frame *f = XFRAME (WINDOW_FRAME (w)); /* We could do better, if we knew what type of scroll-bar the adjacent - windows (on either side) have... But we don't :-( + windows (on either side) have... But we don't :-( However, I think this works ok. ++KFS 2003-04-25 */ /* Redraw borders between horizontally adjacent windows. Don't @@ -21642,7 +21642,9 @@ Qinhibit_free_realized_faces = intern ("inhibit-free-realized-faces"); staticpro (&Qinhibit_free_realized_faces); - list_of_error = Fcons (intern ("error"), Qnil); + list_of_error = Fcons (Fcons (intern ("error"), + Fcons (intern ("void-variable"), Qnil)), + Qnil); staticpro (&list_of_error); Qlast_arrow_position = intern ("last-arrow-position"); @@ -21698,7 +21700,7 @@ DEFVAR_LISP ("void-text-area-pointer", &Vvoid_text_area_pointer, doc: /* *The pointer shape to show in void text areas. Nil means to show the text pointer. Other options are `arrow', `text', -`hand', `vdrag', `hdrag', `modeline', and `hourglass'. */); +`hand', `vdrag', `hdrag', `modeline', and `hourglass'. */); Vvoid_text_area_pointer = Qarrow; DEFVAR_LISP ("inhibit-redisplay", &Vinhibit_redisplay,