From: Martin Rudalics Date: Tue, 17 May 2011 15:28:55 +0000 (+0200) Subject: Merge from trunk X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9861d12ef8b1e9d185524f0f42707bda383d9653;p=emacs.git Merge from trunk --- 9861d12ef8b1e9d185524f0f42707bda383d9653 diff --cc doc/lispref/ChangeLog index 3ecdfb96336,593b54d088b..28d46666049 --- a/doc/lispref/ChangeLog +++ b/doc/lispref/ChangeLog @@@ -1,16 -1,50 +1,63 @@@ +2011-05-17 Martin Rudalics + + * windows.texi (Basic Windows): Remove description of + window-internal-p. + (Splitting Windows): New nomenclature for window splitting + commands. + + 2011-05-14 Eli Zaretskii + + * nonascii.texi (Character Properties): Fix inconsistencies with + implementation. + + * text.texi (Special Properties): Move @defvar's out of the + @table. (Bug#8652) + + 2011-05-12 Glenn Morris + + * display.texi (Image Descriptors): Fix typo. (Bug#8495) + + 2011-05-12 Stefan Monnier + + * modes.texi (Region to Refontify): Rename from "Region to Fontify". + (Multiline Font Lock): + * vol2.texi (Top): + * vol1.texi (Top): + * elisp.texi (Top): Update menu accordingly. + + 2011-05-12 Drew Adams + + * modes.texi (Region to Fontify): Fix typo. + + 2011-05-10 Jim Meyering + + * minibuf.texi: Fix typo "in in -> in". + + 2011-05-06 Paul Eggert + + * numbers.texi (Integer Basics): Large integers are treated as floats. + + 2011-04-30 Lars Magne Ingebrigtsen + + * processes.texi (Synchronous Processes): Document the (:file + "/file-name") syntax for `call-process'. + + 2011-04-23 Juanma Barranquero + + * windows.texi (Choosing Window): Fix typo. + + 2011-04-23 Chong Yidong + + * frames.texi (Layout Parameters): Note the difference between + querying and setting parameters for left-fringe and right-fringe + (Bug#6930). + +2011-04-09 Martin Rudalics + + * windows.texi (Splitting Windows): Explain window-splits and + window-nest. + (Displaying Buffers): Replace other-visible-frame by other-frame. + 2011-03-21 Stefan Monnier * minibuf.texi (Basic Completion): Be a bit more precise about the diff --cc lisp/ChangeLog index 2804e692315,844fcaad833..2f77b6d81e8 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@@ -1,57 -1,1594 +1,1648 @@@ + 2011-05-17 Glenn Morris + + * mail/mail-utils.el (mail-dont-reply-to): Silence compiler. + + * progmodes/idlw-shell.el (idlwave-shell-complete-filename): + Replace obsolete function. + + * shell.el (pcomplete-parse-arguments-function): Declare. + + * calendar/appt.el (appt-message-warning-time, appt-display-mode-line) + (appt-display-diary, appt-display-interval, appt-prev-comp-time) + (appt-check): Doc fixes. + (appt-disp-window-function, appt-delete-window-function): + Remove needless special case in custom :type. + (appt-display-count): Default to 0, not nil. + (appt-check): Reset appt-display-count to 0, not nil. + + 2011-05-17 Juanma Barranquero + + * progmodes/python.el (python-font-lock-keywords): + Add the Python 3.X keyword "nonlocal" (bug#8639). + +2011-05-16 Martin Rudalics + + * mouse.el (mouse-drag-mode-line-1): Don't use window + configurations any more. + + * window.el (window-child-count, normalize-live-frame) + (normalize-any-window, normalize-live-window): Fix doc-strings. + (window-internal-p): Remove. + (window-last-child): New function. + (make-window-atom): Call window-child instead of + window-internal-p. + (window-min-delta, window-min-delta-1, window-max-delta) + (window-max-delta-1, window-resizable, window-resizable-p): Rename + argument SIDE to TRAIL. + (resize-window-reset-1, resize-mini-window): Call set-window-new-total. + (resize-window-safe-window): Remove. + (resize-window): Reword error message. Use + set-window-new-normal and rewrite associated code. + (resize-subwindows-skip-p): Call window-new-normal. + (resize-subwindows-normal): Major rewrite. Rename arguments SIDE + and DELTA to TRAIL and THIS-DELTA. New argument OTHER-DELTA. + (resize-subwindows): Major rewrite. New arguments WIDNOW and + EDGE. Rename argument SIDE to TRAIL. + (resize-other-windows): Major rewrite. Rename argument SIDE to + TRAIL. New argument EDGE. + (resize-this-window): Minor rewrite. Rename arguments ADD-TOTAL + and SIDE to ADD and TRAIL. New argument EDGE. + (resize-root-window, resize-root-window-vertically): Clarify + doc-strings. + (adjust-window-trailing-edge): Major rewrite. + (delete-window): Fix doc-string. Call set-window-new-normal. + (split-window): Rename argument HORIZONTAL to SIDE. Handle normal + sizes more intuitively. Call split-window-internal with new + normal-size argument. + (split-window-keep-point): Replace split-window-vertically by + split-window-above-each-other. + (split-window-vertically): Rename to + split-window-above-each-other, provide alias for old name. + (split-window-horizontally): Rename to + split-window-side-by-side. Provide alias for old name. + (balance-windows-1): Call window-new-total and + set-window-new-total. + (balance-windows-2): Call window-new-total, set-window-new-normal + and set-window-new-total. + (display-buffer-alist): Fix doc-string. + (ctl-x-map): Bind split-window-above-each-other and + split-window-side-by-side instead of split-window-vertically and + split-window-horizontally. + + 2011-05-16 Stefan Monnier + + * emacs-lisp/eieio.el (defmethod): Fix quoting of code (bug#8677). + + 2011-05-16 Kevin Ryde + + * info-look.el (makefile-automake-mode): New setups, looking in + automake manual, then makefile-mode. + (makefile-mode): Remove automake manual, have it just in + makefile-automake-mode since there's various things different or + not relevant to plain make. + (makefile-mode): Remove "other-modes" non-existent automake-mode, + believe a hypothetical automake-mode would go to makefile-mode, + not the other way around. + + 2011-05-15 Chong Yidong + + * vc/diff-mode.el (diff-fixup-modifs): Locate correct position for + hunk-end tags (Bug#8672). + + * vc/vc-annotate.el (vc-annotate-mode-map): Bind = to + vc-annotate-show-diff-revision-at-line (Bug#8671). + + 2011-05-14 Glenn Morris + + * vc/add-log.el (add-change-log-entry): Don't start adding a new entry + in the middle of an existing one with multiple authors. (Bug#8645) + (change-log-font-lock-keywords): Also handle multiple author lines + with leading tabs. (Bug#8644) + + * calendar/appt.el (appt-check): Rename some local variables. + Some simplification/reordering. + + * mail/feedmail.el (feedmail-confirm-outgoing-timeout) + (feedmail-sendmail-f-doesnt-sell-me-out) + (feedmail-queue-slug-suspect-regexp, feedmail-debug) + (feedmail-debug-sit-for, feedmail-queue-express-hook) + (feedmail-queue-runner-message-sender): Set :version. + (bbdb-search, bbdb-records, smtp-via-smtp, smtp-server) + (bbdb-dwim-net-address, vm-mail): Declare. + (feedmail-binmail-gnulinuxish-template): + Rename from feedmail-binmail-linuxish-template. + (feedmail-buffer-to-smtp, feedmail-vm-mail-mode): + Use insert-buffer-substring. + + 2011-05-14 Bill Carpenter + + * mail/feedmail.el (feedmail-patch-level): Increase. + (feedmail-debug): New custom group. + (feedmail-confirm-outgoing-timeout) + (feedmail-sendmail-f-doesnt-sell-me-out) + (feedmail-queue-slug-suspect-regexp, feedmail-debug) + (feedmail-debug-sit-for, feedmail-queue-express-hook): New options. + (feedmail-sender-line, feedmail-from-line) + (feedmail-fiddle-headers-upwardly, feedmail-enable-spray) + (feedmail-spray-this-address, ) + (feedmail-spray-address-fiddle-plex-list) + (feedmail-queue-use-send-time-for-date) + (feedmail-queue-use-send-time-for-message-id) + (feedmail-last-chance-hook, feedmail-queue-runner-mode-setter) + (feedmail-buffer-eating-function): + Doc fixes. + (feedmail-spray-via-bbdb, feedmail-buffer-to-smtp) + (feedmail-vm-mail-mode, feedmail-message-action-scroll-up) + (feedmail-message-action-scroll-down): New functions. + (feedmail-queue-directory, feedmail-queue-draft-directory): + Use expand-file-name. + (feedmail-prompt-before-queue-standard-alist): Add scroll entries. + Remove C-v help entry. + (feedmail-queue-buffer-file-name): New variable. + (feedmail-mail-send-hook-splitter, feedmail-buffer-to-binmail) + (feedmail-buffer-to-smtpmail, feedmail-queue-express-to-draft) + (feedmail-message-action-send-strong, feedmail-message-action-edit) + (feedmail-message-action-draft, feedmail-message-action-draft-strong) + (feedmail-message-action-queue, feedmail-message-action-queue-strong) + (feedmail-message-action-toggle-spray) + (feedmail-run-the-queue-no-prompts) + (feedmail-run-the-queue-global-prompt, feedmail-queue-reminder) + (feedmail-look-at-queue-directory, feedmail-queue-subject-slug-maker) + (feedmail-create-queue-filename, feedmail-rfc822-time-zone): + (feedmail-fiddle-header, feedmail-give-it-to-buffer-eater) + (feedmail-envelope-deducer, feedmail-fiddle-from) + (feedmail-fiddle-sender, feedmail-default-date-generator) + (feedmail-fiddle-date, feedmail-fiddle-message-id) + (feedmail-fiddle-spray-address) + (feedmail-fiddle-list-of-spray-fiddle-plexes) + (feedmail-fiddle-list-of-fiddle-plexes) + (feedmail-fill-to-cc-function, feedmail-fill-this-one) + (feedmail-one-last-look, feedmail-fqm-p): Add debug calls. + (feedmail-queue-runner-message-sender, feedmail-binmail-template): + Change default. Doc fix. + (feedmail-queue-runner-cleaner-upper): Use feedmail-say-chatter. + (feedmail-binmail-linuxish-template): New constant. + (feedmail-buffer-to-sendmail): Doc fix. Add debug call. + Respect feedmail-sendmail-f-doesnt-sell-me-out. + (feedmail-send-it): Add debug call. + Use feedmail-queue-buffer-file-name, and + feedmail-send-it-immediately-wrapper. + (feedmail-message-action-send): Add debug call. + Use feedmail-send-it-immediately-wrapper. + (feedmail-queue-express-to-queue): Add debug call. + Run feedmail-queue-express-hook. + (feedmail-message-action-help): Add debug call. Use feedmail-p-h-b-n. + (feedmail-message-action-help-blat): + Rename from feedmail-queue-send-edit-prompt-help-first. + (feedmail-run-the-queue): Add debug call. Set buffer-file-type. + Check line-endings. Handle errors better. + (feedmail-queue-reminder-brief, feedmail-queue-reminder-medium): + Doc fix. Add debug call. + (feedmail-queue-send-edit-prompt): Doc fix. Add debug call. + Use feedmail-queue-send-edit-prompt-inner. + (feedmail-queue-runner-prompt, feedmail-scroll-buffer): New functions. + (feedmail-queue-send-edit-prompt-inner): New function, extracted + from feedmail-queue-send-edit-prompt. + (feedmail-queue-send-edit-prompt-help) + (feedmail-queue-send-edit-prompt-help-later): Remove functions. + (feedmail-tidy-up-slug): Add debug call. + Respect feedmail-queue-slug-suspect-regexp. + (feedmail-queue-subject-slug-maker): Use buffer-substring-no-properties. + (feedmail-dump-message-to-queue): Add debug call. + Expand queue-directory. + (feedmail-dump-message-to-queue): Change message slightly. + Use feedmail-say-chatter. + (feedmail-rfc822-date): Add debug call. Bind system-time-locale. + (feedmail-send-it-immediately-wrapper): New function. + (feedmail-send-it-immediately): Add debug calls. Use let not let*. + Insert empty string rather than newline. Handle full-frame case. + Use catch/throw. Use feedmail-say-chatter. + (feedmail-fiddle-from): Try mail-host-address. + (feedmail-default-message-id-generator): Doc fix. + Bind system-time-locale. Handle missing end. + (feedmail-fiddle-x-mailer): Add debug call. + Handle feedmail-x-mailer-line being nil. + (feedmail-accume-n-nuke-header, feedmail-deduce-address-list): + Add debug call. Use buffer-substring-no-properties. + (feedmail-say-debug, feedmail-say-chatter): New functions. + (feedmail-find-eoh): Give an explicit error. + + 2011-05-13 Ulf Jasper + + * net/newst-treeview.el (newsticker-treeview-face): Changed default + family from helvetica to sans. + (newsticker-treeview-tool-bar-map): Moved tool-bar icons to + etc/images/newsticker. + + * net/newst-reader.el (newsticker-feed-face): Changed default + family from helvetica to sans. + + * net/newst-plainview.el (newsticker-new-item-face) + (newsticker-old-item-face, newsticker-immortal-item-face) + (newsticker-obsolete-item-face, newsticker-date-face) + (newsticker-statistics-face): Changed default family from + helvetica to sans. + (newsticker--plainview-tool-bar-map): Moved tool-bar icons to + etc/images/newsticker. + + * net/newst-backend.el (newsticker--do-run-auto-mark-filter), + (newsticker--process-auto-mark-filter-match): : Tell user about + auto-marking. + + 2011-05-13 Didier Verna + + Common Lisp indentation improvements on defmethod and lambda-lists. + * cl-indent.el: Advertise the changes and remove obsolete TODO entries. + (lisp-lambda-list-keyword-parameter-indentation) + (lisp-lambda-list-keyword-parameter-alignment) + (lisp-lambda-list-keyword-alignment): New customizable user options. + (lisp-indent-defun-method): Improve docstring. + (extended-loop-p): Fix comment. + (lisp-indent-lambda-list-keywords-regexp): New variable. + (lisp-indent-lambda-list): New function. + (lisp-indent-259): Use it. + (lisp-indent-defmethod): Support for more than one + method qualifier and properly indent methods lambda-lists. + (defgeneric): Provide a missing common-lisp-indent-function property. + + 2011-05-13 Stefan Monnier + + * thingatpt.el (bounds-of-thing-at-point): Return nil rather than + bounds for the empty string (bug#8667). + + 2011-05-13 Glenn Morris + + * mail/feedmail.el (feedmail-buffer-to-sendmail): Require sendmail. + + * mail/sendmail.el (sendmail-program): Try executable-find first. + (sendmail-send-it): `sendmail-program' cannot be unbound. + + * calendar/appt.el (appt-make-list): Simplify. + (appt-time-msg-list): Doc fix. + (appt-check): Change mode-line message at the time of the appointment. + + 2011-05-12 Andreas Schwab + + * progmodes/ld-script.el (ld-script-keywords) + (ld-script-builtins): Update keywords list. + + 2011-05-12 Stefan Monnier + + * progmodes/grep.el (grep-filter): Don't trip on partial lines. + + * shell.el (shell-completion-vars): New function. + (shell-mode): + * simple.el (read-shell-command): Use it. + (blink-matching-open): No need for " [...]" in minibuffer-message. + + 2011-05-12 Glenn Morris + + * calendar/appt.el (appt-now-displayed): Remove pointless variable. + (appt-check): Simplify. + + 2011-05-12 Eli Zaretskii + + * smerge-mode.el (smerge-resolve): Use null-device rather than a + literal "/dev/null". + + 2011-05-12 Stefan Monnier + + * emacs-lisp/lisp.el (lisp-complete-symbol, lisp-completion-at-point): + Fix typo. + + 2011-05-12 Ralph Schleicher + + * progmodes/which-func.el (which-function): + Use add-log-current-defun instead of add-log-current-defun-function, + which might not be defined (Bug#8260). + + 2011-05-12 Glenn Morris + + * emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble): + Let byte-compile-initial-macro-environment always take precedence. + + 2011-05-12 Stefan Monnier + + * net/rcirc.el: Add support for SSL/TLS connections. + (rcirc-server-alist): New field `encryption'. + (rcirc): Check `encryption' settings. + (rcirc-connect): New arg `encryption'. Use open-network-stream. + Merge make-local-variable into `set'. + (rcirc--connection-open-p): New function. + (rcirc-send-string, rcirc-clean-up-buffer): Use it to handle case where + the process is not a network process (e.g. running gnutls-cli). + (set-rcirc-decode-coding-system, set-rcirc-encode-coding-system): + Make rcirc-(en|de)code-coding-system local here. + (rcirc-mode): Merge make-local-variable into `set'. + (rcirc-parent-buffer): Make permanent buffer-local. + (rcirc-multiline-minor-mode): Don't do it here. + (rcirc-switch-to-server-buffer): Don't switch to a random buffer if + there's no server buffer. + + 2011-05-11 Glenn Morris + + * newcomment.el (comment-kill): Prefix "unused" local. + + * term/w32console.el (get-screen-color): Declare. + + * emacs-lisp/bytecomp.el (byte-compile-arglist-warn): + Handle symbol elements of byte-compile-initial-macro-environment. + + 2011-05-10 Leo Liu + + * bookmark.el (bookmark-bmenu-mode-map): + Bind bookmark-bmenu-search to `/'. + + * mail/footnote.el: Convert to utf-8 encoding. + (footnote-unicode-string, footnote-unicode-regexp): New variable. + (Footnote-unicode): New function. + (footnote-style-alist): Add unicode style to the list. + (footnote-style): Doc fix. + + 2011-05-10 Jim Meyering + + Fix doubled-word typos. + * international/quail.el (quail-insert-kbd-layout): and and -> and + * kermit.el: and and -> and + * net/ldap.el (ldap-search-internal): to to -> to + * progmodes/vhdl-mode.el (vhdl-offsets-alist): Likewise. + * progmodes/js.el (js-mode): and and -> and + * textmodes/artist.el (artist-move-to-xy): at at -> at + (artist-draw-region-trim-line-endings): if if -> if + And Safetyc -> Safety. + * textmodes/reftex-dcr.el (reftex-view-crossref): at at -> at a + + 2011-05-10 Glenn Morris + Stefan Monnier + + * files.el (hack-one-local-variable-eval-safep): + Consider "eval: (foo-mode)" to be safe. (Bug#8613) + + 2011-05-10 Glenn Morris + + * calendar/diary-lib.el (diary-list-entries-hook) + (diary-mark-entries-hook, diary-nongregorian-listing-hook) + (diary-nongregorian-marking-hook, diary-list-entries) + (diary-include-other-diary-files, diary-mark-entries) + (diary-mark-included-diary-files): Doc fixes. + + 2011-05-09 Juanma Barranquero + + * misc.el: Require tabulated-list.el during compilation. + + 2011-05-09 Chong Yidong + + * progmodes/compile.el (compilation-start): + Run compilation-filter-hook for the async case too. + (compilation-filter-hook): Doc fix. + + 2011-05-09 Deniz Dogan + + * wdired.el: Remove outdated installation comment. Fix usage + comment. + + 2011-05-09 Juanma Barranquero + + * misc.el: Implement new command `list-dynamic-libraries'. + (list-dynamic-libraries--loaded-only-p): New variable. + (list-dynamic-libraries--refresh): New function. + (list-dynamic-libraries): New command. + + 2011-05-09 Chong Yidong + + * progmodes/compile.el (compilation-error-regexp-alist-alist): + Fix the ant regexp to handle end-line and end-column info from jikes. + Re-introduce maven regexp. Give the ruby-Test::Unit regexp a + higher priority to avoid clobbering by gnu. + + 2011-05-08 Chong Yidong + + * cus-face.el (custom-declare-face): Call custom-theme-recalc-face + if the face has existing theme settings (Bug#8454). + + 2011-05-08 Ralph Schleicher + + * progmodes/perl-mode.el (perl-imenu-generic-expression): + Only match variables declared via `my' or `our' (Bug#8261). + + * net/browse-url.el (browse-url-of-dired-file): Allow browsing of + special file names `.' and `..' (Bug#8259). + + 2011-05-08 Chong Yidong + + * progmodes/grep.el (grep-mode-font-lock-keywords): + Remove buffer-changing entries. + (grep-filter): New function. + (grep-mode): Add it to compilation-filter-hook. + + * progmodes/compile.el (compilation-filter-hook) + (compilation-filter-start): New defvars. + (compilation-filter): Call compilation-filter-hook prior to + updating the process mark. + + 2011-05-08 Stefan Monnier + + * emacs-lisp/eieio.el (defmethod): Fix typo in last change. + + 2011-05-07 Eli Zaretskii + + * mail/sendmail.el (send-mail-function): On MS-Windows, default to + mailclient-send-it even if window-system is nil. (Bug#8595) + + * term/w32console.el (terminal-init-w32console): + Call get-screen-color and use its output to set the frame + background-mode. (Bug#8597) + + 2011-05-07 Stefan Monnier + + Make bytecomp.el understand that defmethod defines funs (bug#8631). + * emacs-lisp/eieio.el (eieio--defalias, eieio--defgeneric-init-form): + New functions. + (defgeneric, eieio--defmethod): Use them. + (eieio-defgeneric): Remove. + (defmethod): Call defgeneric in a way visible to the byte-compiler. + + 2011-05-07 Glenn Morris + + * calendar/timeclock.el (timeclock-log-data): Remove unused local. + Use let rather than let*. + (timeclock-find-discrep): Remove unused local. + + * calendar/diary-lib.el (diary-comment-start): Doc fix. + + * calendar/appt.el (appt-time-msg-list): Doc fix. + + 2011-05-06 Noah Friedman + + * apropos.el (apropos-print-doc): Only use + emacs-lisp-docstring-fill-column when it is bound to an integer, + per that variable's documentation. + + 2011-05-06 Stefan Monnier + + * lpr.el (print-region-1): Echo lpr-program's output, so error messages + and warnings are not silently discarded (e.g. use -d instead of -P). + + 2011-05-06 Glenn Morris + + * calendar/appt.el (appt-message-warning-time): Doc fix. + (appt-warning-time-regexp): New option. + (appt-make-list): Respect appt-message-warning-time. + + * calendar/diary-lib.el (diary-comment-start, diary-comment-end): + New options. + (diary-add-to-list): Strip comments from the displayed string. + (diary-mode): Set comment-start and comment-end. + + * vc/diff-mode.el (smerge-refine-subst): Declare. + (diff-refine-hunk): Don't require smerge-mode when compiling. + + 2011-05-06 Juanma Barranquero + + * simple.el (list-processes): Return nil as the docstring says. + + 2011-05-05 Michael Albinus + + * net/ange-ftp.el (ange-ftp-binary-file-name-regexp): Set default + to "". + (ange-ftp-write-region, ange-ftp-insert-file-contents) + (ange-ftp-copy-file-internal): Use only `ange-ftp-binary-file' for + determining of binary transfer. (Bug#7383) + + 2011-05-05 Michael Albinus + + * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): + Fix port computation bug. (Bug#8618) + + 2011-05-05 Glenn Morris + + * allout-widgets.el (allout-widgets-mode-inhibit): Declare before use. + + * simple.el (shell-dynamic-complete-functions) + (comint-dynamic-complete-functions): Declare. + + * net/network-stream.el (gnutls-negotiate): + * simple.el (tabulated-list-print): Fix declarations. + + * progmodes/gud.el (syntax-symbol, syntax-point): + Remove unnecessary and incorrect declarations. + + * emacs-lisp/check-declare.el (check-declare-scan): + Handle byte-compile-initial-macro-environment in bytecomp.el + + 2011-05-05 Stefan Monnier + + Fix earlier half-done eieio-defmethod change (bug#8338). + * emacs-lisp/eieio.el (eieio--defmethod): Rename from eieio-defmethod. + Streamline and change calling convention. + (defmethod): Adjust accordingly and simplify. + (eieio-defclass): Fix broken calls to eieio-defmethod and redirect to + new eieio--defmethod. + (slot-boundp): Minor CSE simplification. + + 2011-05-05 Milan Zamazal + + * progmodes/glasses.el (glasses-separate-capital-groups): New option. + (glasses-make-readable): Use glasses-separate-capital-groups. + + 2011-05-05 Juanma Barranquero + + * emacs-lisp/warnings.el (warning-level-aliases): Reflow docstring. + (warning-series): Doc fix. + (display-warning): Don't try to create the buffer if we just found it. + + 2011-05-04 Chong Yidong + + * emacs-lisp/autoload.el (generated-autoload-file): Set to nil. + (autoload-find-generated-file): New function. + (generate-file-autoloads): Bind generated-autoload-file to + buffer-file-name. + (update-file-autoloads, update-directory-autoloads): + Use autoload-find-generated-file. If called interactively, prompt for + output file (Bug#7989). + (batch-update-autoloads): Doc fix. + + 2011-05-04 Juanma Barranquero + + * term/w32-win.el (dynamic-library-alist): Add `gnutls'. + + 2011-05-04 Glenn Morris + + * calendar/diary-lib.el (diary-fancy-date-pattern): Turn it into a + function, so it follows changes in calendar-date-style. + (diary-fancy-date-matcher): New function. + (diary-fancy-font-lock-keywords): Use diary-fancy-date-matcher. + (diary-fancy-font-lock-fontify-region-function): + Use diary-fancy-date-pattern as a function. + + * calendar/diary-lib.el (diary-fancy-date-pattern): Do not use + non-numbers for `year' etc pseudo-variables. (Bug#8583) + + 2011-05-04 Teodor Zlatanov + + * net/gnutls.el (gnutls-negotiate): Use CL-style keyword arguments + instead of positional arguments. Allow :keylist and :crlfiles + arguments. + (open-gnutls-stream): Call it. + + * net/network-stream.el (network-stream-open-starttls): Adjust to + call `gnutls-negotiate' with :process and :hostname arguments. + + 2011-05-04 Stefan Monnier + + * minibuffer.el (completion--message): New function. + (completion--do-completion, minibuffer-complete) + (minibuffer-force-complete, minibuffer-complete-word): Use it. + (completion--do-completion): Don't ignore completion-auto-help when in + icomplete-mode. + + * whitespace.el (whitespace-trailing-regexp): Don't rely on the + internal encoding (e.g. tibetan zero is not whitespace). + (global-whitespace-mode): Prefer save-current-buffer. + (whitespace-trailing-regexp): Remove useless save-match-data. + (whitespace-empty-at-bob-regexp): Minor simplification. + + 2011-05-03 Chong Yidong + + * emacs-lisp/autoload.el (generated-autoload-file): Doc fix (Bug#7989). + + 2011-05-03 Agustín Martín Domingo + + * textmodes/ispell.el (ispell-add-per-file-word-list): + Use `concat' to create string for insertion. + + 2011-05-03 Stefan Monnier + + * textmodes/bibtex.el (bibtex-fill-field-bounds, bibtex-fill-entry): + Avoid open-line which runs post-self-insert-hook. + (bibtex-fill-entry): Remove unused `end' var. + + 2011-05-03 Dirk Ullrich (tiny change) + + * textmodes/ispell.el (ispell-add-per-file-word-list): + Protect against `nil' value of `comment-start' (Bug#8579). + + 2011-05-03 Leo Liu + + * isearch.el (isearch-yank-pop): New command. + (isearch-mode-map): Bind it to `M-y'. + (isearch-forward): Mention it. + + 2011-05-03 Stefan Monnier + + * simple.el (minibuffer-complete-shell-command): Remove. + (minibuffer-local-shell-command-map): Use completion-at-point. + (read-shell-command): Setup completion vars here instead. + (read-expression-map): Bind TAB to symbol completion. + + * textmodes/ispell.el (lookup-words): Use with-temp-buffer; signal + error directly rather via storing it into `results'. + + 2011-05-02 Leo Liu + + * vc/diff.el: Fix description. + + 2011-05-02 Lars Magne Ingebrigtsen + + * server.el (server-eval-at): New function. + + 2011-05-01 Lars Magne Ingebrigtsen + + * net/network-stream.el (open-network-stream): Take a :nowait + parameter and pass it on to `make-network-process'. + (network-stream-open-plain): Ditto. + + 2011-04-30 Andreas Schwab + + * faces.el (face-spec-set-match-display): Don't match toolkit + options on terminal frames. + + 2011-04-29 Stefan Monnier + + * progmodes/pascal.el: Use lexical binding. + (pascal-mode-map): Remove author preferences. + + * pcomplete.el (pcomplete-std-complete): Don't abuse + completion-at-point. + + 2011-04-28 Juanma Barranquero + + * calc/calccomp.el (math-comp-to-string-flat-term): Simplify by + removing code that has been dead since 1991 or so. + + * startup.el (command-line): When warning about "_emacs", use a + delayed warning to allow the user to filter it out. + + 2011-04-28 Deniz Dogan + + * net/rcirc.el (rcirc-handler-353): Fix bug for channels which the + user has not joined. + + 2011-04-28 Stefan Monnier + + * pcomplete.el (pcomplete-completions-at-point): Return nil if there + aren't any completions at point. + + 2011-04-28 Juanma Barranquero + + * subr.el (display-delayed-warnings): New function. + (delayed-warnings-hook): New variable. + + 2011-04-28 Stefan Monnier + + * minibuffer.el (completion-at-point, completion-help-at-point): + Don't presume that a given completion-at-point-function will always + use the same calling convention. + + * pcomplete.el (pcomplete-completions-at-point): + Obey pcomplete-ignore-case. Don't call pcomplete-norm-func unless + pcomplete-seen is non-nil. + (pcomplete-comint-setup): Also recognize the new comint/shell + completion functions. + (pcomplete-do-complete): Don't call pcomplete-norm-func unless + pcomplete-seen is non-nil. + + 2011-04-27 Niels Giesen + + * calendar/icalendar.el (diary-lib): Add require statement. + (icalendar--create-uid): Read out a uid from a text-property on + the first character in the entry. This allows for code to add its + own uid to the entry. + (icalendar--convert-float-to-ical): Add export of + `diary-float'-entries save for those with the optional DAY + argument. + + 2011-04-27 Daniel Colascione + + * subr.el (shell-quote-argument): Use alternate escaping strategy + when we spot a variable reference in a string. + + 2011-04-26 Daniel Colascione + + * cus-start.el (all): Define customization for debug-on-event. + + 2011-04-26 Daniel Colascione + + * subr.el (shell-quote-argument): Escape correctly under Windows. + + 2011-04-25 Stefan Monnier + + * emulation/cua-base.el (cua-selection-mode): Make it toggle again. + + 2011-04-25 Michael Albinus + + * net/tramp.el (tramp-process-actions): Add POS argument. + Delete region between POS and (pos). + + * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): + Use `nil' position in `tramp-process-actions' call. + (tramp-maybe-open-connection): Call `tramp-process-actions' with pos. + + * net/tramp-smb.el (tramp-smb-maybe-open-connection): Use `nil' + position in `tramp-process-actions' call. + + * net/trampver.el: Update release number. + + 2011-04-25 Stefan Monnier + + * custom.el (defcustom): Obey lexical-binding. + + Fix octave-inf completion problems reported by Alexander Klimov. + * progmodes/octave-inf.el (inferior-octave-mode-syntax-table): + Inherit from octave-mode-syntax-table. + (inferior-octave-mode): Set info-lookup-mode. + (inferior-octave-completion-at-point): New function. + (inferior-octave-complete): Use it and completion-in-region. + (inferior-octave-dynamic-complete-functions): Use it as well, and use + comint-filename-completion. + * progmodes/octave-mod.el (octave-mode-syntax-table): Use _ syntax for + symbol elements which shouldn't be word elements. + (octave-font-lock-keywords, octave-beginning-of-defun) + (octave-function-header-regexp): Adjust regexps accordingly. + (octave-mode-map): Also use info-lookup-symbol for C-c C-h. + + 2011-04-25 Juanma Barranquero + + * net/gnutls.el (gnutls-errorp): Declare before first use. + + 2011-04-24 Teodor Zlatanov + + * net/gnutls.el (gnutls-negotiate): Add hostname, verify-flags, + verify-error, and verify-hostname-error parameters. Check whether + default trustfile exists before going to use it. Add missing + argument to gnutls-message-maybe call. Return return value. + Reported by Claudio Bley . + (open-gnutls-stream): Add usage example. + + * net/network-stream.el (network-stream-open-starttls): Give host + parameter to `gnutls-negotiate'. + (gnutls-negotiate): Adjust `gnutls-negotiate' declaration. + * subr.el (shell-quote-argument): Escape correctly under Windows. + + 2011-04-24 Daniel Colascione + + * progmodes/cc-engine.el (c-forward-decl-or-cast-1): + Use correct match group (bug#8438). + + 2011-04-24 Chong Yidong + + * emacs-lisp/package.el (package-built-in-p): Fix typo. + (package-menu--generate): New arg specifying packages to show. + (package-menu-refresh, package-menu-execute, list-packages): + Callers changed. + (package-show-package-list): New function, replacing deleted + package--list-packages (renamed because it is non-internal). + + * finder.el (finder-list-matches): Use package-show-package-list + instead of deleted package--list-packages. + + * vc/vc-annotate.el (vc-annotate-goto-line): New command. + Based on a previous implementation by Juanma Barranquero (Bug#8366). + (vc-annotate-mode-map): Bind it to RET. + + 2011-04-24 Uday S Reddy (tiny change) + + * progmodes/etags.el (next-file): Don't use set-buffer to change + buffers (Bug#8478). + + 2011-04-24 Chong Yidong + + * files.el (auto-mode-alist): Use js-mode for .json (Bug#8529). + + * apropos.el (apropos-label-face): Avoid variable-pitch face. + (apropos-accumulator): Doc fix. + (apropos-function, apropos-macro, apropos-command) + (apropos-variable, apropos-face, apropos-group, apropos-widget) + (apropos-plist): Add face property. + (apropos-symbols-internal): Fix indentation. + (apropos-print): Simplify help, and recognize apropos-multi-type. + (apropos-print-doc): Use button-type-get to extract the button's + face property. Fill docstring (Bug#8352). + + 2011-04-23 Juanma Barranquero + + * buff-menu.el (Buffer-menu--buffers): Fix typo in docstring (bug#8535). + + * play/mpuz.el (mpuz-silent): Doc fix. + (mpuz-mode-map): Use mapc. + (mpuz-put-number-on-board): Rename parameter L to COLUMNS. + (mpuz-letter-to-digit, mpuz-check-all-solved, mpuz-create-buffer): + Fix typos in docstrings. + + * play/doctor.el (doc$, doctor-$, doctor-read-print, doctor-read-token) + (doctor-nounp, doctor-pronounp): Fix typos in docstrings. + + * mouse-drag.el (mouse-drag-throw): Fix typo in docstring. + + 2011-04-23 Chong Yidong + + * minibuffer.el (completion--do-completion): Avoid the "Next char + not unique" prompt if icomplete-mode is enabled (Bug#5849). + + * mouse.el (mouse-drag-mode-line-1): Make sure that if we push + mouse-2 into unread-command-events, it is interpreted correctly. + + * image-mode.el (image-type, image-mode-map, image-minor-mode-map) + (image-toggle-display): Doc fix. + + 2011-04-23 Stephen Berman + + * textmodes/page.el (what-page): Use line-number-at-pos to + calculate line number (Bug#6825). + + 2011-04-22 Juanma Barranquero + + * eshell/esh-mode.el (find-tag-interactive): Declare function. + (eshell-find-tag): Remove `with-no-warnings', unneeded now. + Pass argument NO-DEFAULT to `find-tag-interactive'. + + 2011-04-22 Juanma Barranquero + + Lexical-binding cleanup. + + * progmodes/ada-mode.el (ada-after-change-function, ada-loose-case-word) + (ada-no-auto-case, ada-capitalize-word, ada-untab, ada-narrow-to-defun): + * progmodes/ada-prj.el (ada-prj-initialize-values) + (ada-prj-display-page, ada-prj-field-modified, ada-prj-display-help) + (ada-prj-show-value): + * progmodes/ada-xref.el (ada-find-any-references, ada-gdb-application): + * progmodes/antlr-mode.el (antlr-with-displaying-help-buffer) + (antlr-invalidate-context-cache, antlr-options-menu-filter) + (antlr-language-option-extra, antlr-c++-mode-extra, antlr-run-tool): + * progmodes/bug-reference.el (bug-reference-push-button): + * progmodes/fortran.el (fortran-line-length): + * progmodes/glasses.el (glasses-change): + * progmodes/octave-mod.el (octave-fill-paragraph): + * progmodes/python.el (python-mode, python-pdbtrack-track-stack-file) + (python-pdbtrack-grub-for-buffer, python-sentinel): + * progmodes/sql.el (sql-save-connection): + * progmodes/tcl.el (tcl-indent-command, tcl-popup-menu): + * progmodes/xscheme.el (xscheme-enter-debugger-mode): + Mark unused parameters. + + * progmodes/compile.el (compilation--flush-directory-cache) + (compilation--flush-parse, compile-internal): Mark unused parameters. + (compilation-buffer-name): Rename parameter MODE-NAME to NAME-OF-MODE. + (compilation-next-error-function): Remove unused variable `timestamp'. + + * progmodes/cpp.el (cpp-parse-close): Remove unused variable `begin'. + (cpp-signal-read-only, cpp-grow-overlay): Mark unused parameters. + + * progmodes/dcl-mode.el (dcl-end-of-command): + Remove unused variable `start'. + (dcl-calc-command-indent-multiple, dcl-calc-cont-indent-relative) + (dcl-option-value-basic, dcl-option-value-offset) + (dcl-option-value-margin-offset, dcl-option-value-comment-line): + Mark unused parameters. + (dcl-save-local-variable): Remove unused variable `val'. + (mode): Declare. + + * progmodes/delphi.el (delphi-save-state, delphi-after-change): + Mark unused parameters. + (delphi-ignore-changes): Move before first use. + (delphi-charset-token-at): Remove unused variable `start'. + (delphi-else-start): Remove unused variable `if-count'. + (delphi-comment-block-start, delphi-comment-block-end): + Remove unused variable `kind'. + (delphi-indent-line): Remove unused variable `new-point'. + + * progmodes/ebrowse.el (ebrowse-files-list) + (ebrowse-list-of-matching-members, ebrowse-tags-list-members-in-file): + Mark unused parameters. Don't quote `lambda'. + (ebrowse-sort-tree-list, ebrowse-same-tree-member-buffer-list): + Don't quote `lambda'. + (ebrowse-revert-tree-buffer-from-file, ebrowse-tags-choose-class) + (ebrowse-goto-visible-member/all-member-lists): Mark unused parameters. + (ebrowse-create-tree-buffer): Rename parameter OBARRAY to CLASSES. + (ebrowse-toggle-mark-at-point): Remove unused variable `pnt'. + Use `ignore-errors'. + (ebrowse-frozen-tree-buffer-name, ebrowse-find-source-file) + (ebrowse-view/find-file-and-search-pattern) + (ebrowse-view/find-member-declaration/definition): + Rename parameter TAGS-FILE-NAME to TAGS-FILE. + (ebrowse-find-class-declaration, ebrowse-view-class-declaration): + Rename parameter PREFIX-ARG to PREFIX. + (ebrowse-tags-read-name): Remove unused variables `start' and + `member-info'. + (ebrowse-display-member-buffer): Rename variable `tags-file-name' + to `tags-file'. + + * progmodes/etags.el (local-find-tag-hook): Declare. + (tag-partial-file-name-match-p, tag-any-match-p, list-tags): + Mark unused parameters. + + * progmodes/executable.el (compilation-error-regexp-alist): Declare. + (executable-interpret): Mark unused parameter. + + * progmodes/flymake.el (flymake-process-sentinel) + (flymake-after-change-function) + (flymake-create-temp-with-folder-structure) + (flymake-get-include-dirs-dot): Mark unused parameters. + (flymake-safe-delete-directory): Remove unused variable `err'. + + * progmodes/gdb-mi.el (speedbar-change-initial-expansion-list) + (speedbar-timer-fn, speedbar-line-text) + (speedbar-change-expand-button-char, speedbar-delete-subblock) + (speedbar-center-buffer-smartly): Declare functions. + (gdb-find-watch-expression): Remove unused variable `array'. + (gdb-edit-value, gdb-gdb, gdb-ignored-notification, gdb-thread-created) + (gdb-starting): Mark unused parameters. + (gud-gdbmi-marker-filter): Remove unused variable `output-record'. + (gdb-table-string): Remove unused variable `res'. + (gdb-place-breakpoints): Remove unused variables `flag' and `bptno'. + (gdb-disassembly-handler-custom): Remove unused variable `pos'. + (gdb-display-buffer): Remove unused variable `cur-size'. + + * progmodes/gud.el (gud-def): Use `defalias' instead of `defun' to + allow lexical-binding compilation. + (gud-expansion-speedbar-buttons, gud-gdb-goto-stackframe) + (gud-dbx-massage-args, gud-xdb-massage-args, gud-perldb-massage-args) + (gud-jdb-massage-args, gud-jdb-find-source, gud-find-class): + Mark unused parameters. + (gud-gdb-marker-filter): Remove unused variable `match'. + (gud-find-class): Bind `syntax-symbol' and `syntax-point' to suitable + lambda expressions and funcall them, instead of using `fset'. + + * progmodes/hideif.el (hif-parse-if-exp): Rename parameter + HIF-TOKEN-LIST to TOKEN-LIST and let-bind `hif-token-list'. + + * progmodes/hideshow.el (hs-hide-block-at-point): Remove unused + variable `header-beg'; use `let'. + + * progmodes/icon.el (indent-icon-exp): Remove unused variables + `restart', `last-sexp' and `at-do'. + + * progmodes/js.el (js--debug): Mark unused parameter. + (js--parse-state-at-point): Remove unused variable `bound'; use `let'. + (js--splice-into-items): Remove unused variable `item'. + (js--read-symbol, js--read-tab): Pass 1/-1 to `ido-mode', not t/nil. + + * progmodes/make-mode.el (makefile-make-font-lock-keywords): + Rename parameter FONT-LOCK-KEYWORDS to FL-KEYWORDS. + (makefile-complete): Remove unused variable `try'. + (makefile-fill-paragraph, makefile-match-function-end): + Mark unused parameters. + + * progmodes/octave-inf.el (inferior-octave-complete): + Remove unused variable `proc'. + (inferior-octave-output-digest): Mark unused parameter. + + * progmodes/perl-mode.el (perl-calculate-indent): + Remove unused variable `err'. + + * progmodes/prolog.el (prolog-mode-keybindings-inferior) + (prolog-indent-line): Mark unused parameters. + (prolog-indent-line): Remove unused variable `beg'. + + * progmodes/ps-mode.el (reporter-prompt-for-summary-p) + (reporter-dont-compact-list): Declare. + + * progmodes/sh-script.el (sh-font-lock-quoted-subshell): + Remove unused variable `char'. + (sh-debug): Mark unused parameter. + (sh-get-indent-info): Remove unused variable `start'. + (sh-calculate-indent): Remove unused variable `var'. + + * progmodes/simula.el (simula-popup-menu): Mark unused parameter. + (simula-electric-keyword): Remove unused variable `null'. + (simula-search-backward, simula-search-forward): Remove unused + variables `begin' and `end'. + + * progmodes/vera-mode.el (vera-guess-basic-syntax): + Remove unused variable `pos'. + (vera-electric-tab, vera-comment-uncomment-region): + Mark unused parameters. + (vera-electric-tab): Rename parameter PREFIX-ARG to PREFIX. + + 2011-04-22 Chong Yidong + + * emacs-lisp/package.el (package--builtins, package-alist) + (package-load-descriptor, package-built-in-p, package-activate) + (define-package, package-installed-p) + (package-compute-transaction, package-buffer-info) + (package--push): Doc fix. Distinguish more clearly between + version strings and version lists. + + 2011-04-21 Juanma Barranquero + + Lexical-binding cleanup. + + * play/5x5.el (5x5-make-random-solution, 5x5-make-mutate-current) + (5x5-make-mutate-best): + * play/fortune.el (fortune-in-buffer): + * play/gomoku.el (gomoku-init-display): + * play/solitaire.el (solitaire, solitaire-do-check): + * play/tetris.el (tetris-default-update-speed-function): + Mark unused parameters. + + * play/bubbles.el (bubbles-mode): Set `show-trailing-whitespace'. + (bubbles--shift): Remove unused variable `char-org'. + (bubbles--set-faces): Remove unused variable `fg-col'. Simplify. + (bubbles--show-images): Remove unused variable `char'. + + * play/decipher.el (decipher-keypress, decipher-alphabet-keypress) + (decipher-get-undo, decipher-set-map, decipher-complete-alphabet) + (decipher-resync, decipher-loop-with-breaks, decipher--analyze) + (decipher-analyze-buffer): Use ?\s. + (decipher-make-checkpoint): Remove unused variable `mapping'. + + * play/doctor.el (doctor-doc): Rename parameter DOCTOR-SENT to SENT. + + * play/gamegrid.el (gamegrid-add-score-with-update-game-score): + Remove unused variable `result'; use `let'. + + * play/gametree.el (gametree-current-layout, gametree-apply-layout): + Rename parameter TOP-LEVEL to FROM-TOP-LEVEL; use `ignore-errors'. + (gametree-children-shown-p, gametree-compute-reduced-score): + Use `ignore-errors'. + + * play/handwrite.el (ps-lpr-switches): Declare. + (handwrite): Remove unused variables `pmin' and `lastp'. + + * play/hanoi.el (hanoi-move-ring): Remove unused variable `total-steps'. + + * play/landmark.el (landmark-init-display) + (landmark-update-naught-weights): Mark unused parameters. + (landmark-y): Remove unused variable `noise'. Simplify. + (landmark-human-plays): Remove unused variable `score'. + + * play/mpuz.el (mpuz-try-letter): Remove unused variable `message'. + (mpuz-try-proposal): Remove unused variable `game'. + + * play/zone.el (life-patterns): Declare. + + 2011-04-20 Juanma Barranquero + + * vc/vc.el (ediff-vc-internal): Declare function. + + 2011-04-20 Stefan Monnier + + * shell.el: Use lexical-binding and std completion UI. + (shell-filter-ctrl-a-ctrl-b): Work as a preoutput filter. + (shell-mode): Put shell-filter-ctrl-a-ctrl-b on + comint-preoutput-filter-functions rather than on + comint-output-filter-functions. + (shell-command-completion, shell--command-completion-data) + (shell-filename-completion, shell-environment-variable-completion) + (shell-c-a-p-replace-by-expanded-directory): New functions. + (shell-dynamic-complete-functions, shell-dynamic-complete-command) + (shell-dynamic-complete-filename, shell-replace-by-expanded-directory) + (shell-dynamic-complete-environment-variable): Use them. + (shell-dynamic-complete-as-environment-variable) + (shell-dynamic-complete-as-command): Remove. + (shell-match-partial-variable): Match past point. + * comint.el: Clean up use of completion-at-point-functions. + (comint-completion-at-point): New function. + (comint-mode): Use it completion-at-point-functions. + (comint-dynamic-complete): Make it obsolete. + (comint-replace-by-expanded-history-before-point): Add dry-run arg. + (comint-c-a-p-replace-by-expanded-history): New function. + (comint-dynamic-complete-functions) + (comint-replace-by-expanded-history): Use it. + * minibuffer.el (completion-table-with-terminator): Allow dynamic + termination strings. Try harder to avoid second try-completion. + (completion-in-region-mode-map): Disable bindings that don't work yet. + + * comint.el: Use lexical-binding. Require CL. + (comint-dynamic-complete-functions): Use comint-filename-completion. + (comint-completion-addsuffix): Tweak custom type. + (comint-filename-completion, comint--common-suffix) + (comint--common-quoted-suffix, comint--table-subvert) + (comint--complete-file-name-data): New functions. + (comint-dynamic-complete-as-filename, comint-dynamic-complete-filename) + (comint-dynamic-list-filename-completions): Use them. + (comint-dynamic-simple-complete): Make obsolete. + + * minibuffer.el (completion-in-region-mode): + Keep completion-in-region-mode--predicate global. + (completion-in-region--postch): + Assume completion-in-region-mode--predicate is not null. + + * progmodes/flymake.el (flymake-start-syntax-check-process): + Obey `dir'. Simplify. + + * vc/vc.el (vc-version-ediff): Call ediff-vc-internal directly, since + we're in VC after all. + + 2011-04-20 Christoph Scholtes + + * vc/vc.el (vc-diff-build-argument-list-internal) + (vc-version-ediff, vc-ediff): New commands. + (vc-version-diff): Use vc-diff-build-argument-list-internal. + + 2011-04-20 Stefan Monnier + + * emacs-lisp/byte-opt.el (byte-decompile-bytecode-1): Remove dead code, + add sanity check. + + * obsolete/erc-hecomplete.el: Make obsolete. + * obsolete/: Standardize obsolescence info in the header. + + 2011-04-20 Glenn Morris + + * calendar/solar.el (solar-horizontal-coordinates): + Use the longitude argument rather than `calendar-longitude'. + (solar-date-next-longitude): Remove unused locals. + + 2011-04-20 Vinicius Jose Latorre + + * whitespace.el: New version 13.2.1. + + 2011-04-20 felix (tiny change) + + * whitespace.el (global-whitespace-mode): keep highlight when + switching between major modes on a file. + + 2011-04-19 Stefan Monnier + + * progmodes/octave-mod.el (octave-in-comment-p, octave-in-string-p) + (octave-not-in-string-or-comment-p): Use syntax-ppss so it works with + multi-line comments as well. + + 2011-04-19 Juanma Barranquero + + Lexical-binding cleanup. + + * arc-mode.el (archive-mode-revert): + * cmuscheme.el (scheme-interactively-start-process): + * custom.el (custom-initialize-delay): + * dnd.el (dnd-open-local-file, dnd-open-remote-url): + * dos-w32.el (direct-print-region-helper, direct-print-region-function): + * emacs-lock.el (emacs-lock-clear-sentinel): + * ezimage.el (defezimage): + * follow.el (follow-avoid-tail-recenter): + * fringe.el (set-fringe-mode-1): + * generic-x.el (bat-generic-mode-compile): + * help-mode.el (help-info-variable, help-do-xref) + (help-mode-revert-buffer): + * help.el (view-emacs-todo): + * iswitchb.el (iswitchb-completion-help): + * jka-compr.el (jka-compr-make-temp-name, jka-compr-load): + * kmacro.el (kmacro-cycle-ring-next, kmacro-cycle-ring-previous) + (kmacro-delete-ring-head, kmacro-bind-to-key, kmacro-view-macro): + * locate.el (locate-update): + * longlines.el (longlines-encode-region) + (longlines-after-change-function): + * outline.el (outline-isearch-open-invisible): + * ps-def.el (declare-function, charset-dimension, char-width) + (encode-char): + * ps-mule.el (ps-mule-plot-string): + * recentf.el (recentf-make-menu-items, recentf-cancel-dialog) + (recentf-edit-list-select, recentf-edit-list-validate) + (recentf-open-files-action): + * rect.el (delete-whitespace-rectangle-line) + (rectangle-number-line-callback): + * register.el (window-configuration-to-register) + (frame-configuration-to-register): + * scroll-bar.el (scroll-bar-mode, toggle-horizontal-scroll-bar): + * select.el (xselect-convert-to-string, xselect-convert-to-length) + (xselect-convert-to-targets, xselect-convert-to-delete) + (xselect-convert-to-filename, xselect-convert-to-charpos) + (xselect-convert-to-lineno, xselect-convert-to-colno) + (xselect-convert-to-os, xselect-convert-to-host) + (xselect-convert-to-user, xselect-convert-to-class) + (xselect-convert-to-name, xselect-convert-to-integer) + (xselect-convert-to-atom, xselect-convert-to-identity): + * subr.el (declare, ignore, process-kill-without-query) + (text-clone-maintain): + * terminal.el (te-get-char, te-tic-sentinel): + * tool-bar.el (tool-bar-make-keymap): + * tooltip.el (tooltip-timeout, tooltip-hide, tooltip-help-tips): + * type-break.el (type-break-mode, type-break-noninteractive-query): + * view.el (View-back-to-mark): + * wid-browse.el (widget-browse-action, widget-browse-widget) + (widget-browse-widgets, widget-browse-sexp): + * widget.el (define-widget-keywords): + * xt-mouse.el (xterm-mouse-translate, turn-off-xterm-mouse-tracking): + Mark unused parameters. + + * align.el (align-adjust-col-for-rule): Mark unused parameter. + (align-areas): Remove unused variable `look'. + (align-region): Remove unused variables `real-end' and `pos-list'. + + * apropos.el (apropos-score-doc): Remove unused variable `i'. + + * bindings.el (mode-line-modified, mode-line-remote): + Mark unused parameters. + (mode-line-mule-info): Mark unused parameter; don't quote `lambda'. + + * buff-menu.el (Buffer-menu-revert-function): Mark unused parameters. + (Buffer-menu-mode): Mark unused parameter; don't quote `lambda'. + + * comint.el (comint-history-isearch-pop-state) + (comint-postoutput-scroll-to-bottom, comint-truncate-buffer) + (comint-strip-ctrl-m, comint-read-noecho): Mark unused parameters. + (comint-substitute-in-file-name): Doc fix. + + * completion.el (cmpl-statistics-block): Mark unused parameter. + (add-completions-from-tags-table, add-completions-from-lisp-buffer) + (save-completions-to-file, load-completions-from-file): + Remove unused local variable `e'. + + * composite.el (compose-chars): Remove unused variable `len'. + (lgstring-insert-glyph): Remove unused variable `g'. + (compose-glyph-string): Remove unused variables `ascent', + `descent', `lbearing' and `rbearing'. + (compose-glyph-string-relative): Remove unused variables + `lbearing', `rbearing' and `wadjust'. + (compose-gstring-for-graphic): Remove unused variables `header', + `wadjust', `xoff' and `yoff'. Use `let', not `let*'. + (compose-gstring-for-terminal): Remove unused variables `header' + and `nchars'. Use `let', not `let*'. + + * cus-edit.el (Custom-set, Custom-save, custom-reset) + (Custom-reset-current, Custom-reset-saved, Custom-reset-standard) + (Custom-buffer-done, custom-buffer-create-internal) + (custom-browse-visibility-action, custom-browse-group-tag-action) + (custom-browse-variable-tag-action, custom-browse-face-tag-action) + (widget-magic-mouse-down-action, custom-toggle-parent) + (custom-add-parent-links, custom-toggle-hide-variable) + (custom-face-edit-value-visibility-action, custom-face-edit-fix-value) + (custom-toggle-hide-face, face, hook, custom-group-link-action) + (custom-face-menu-create, custom-variable-menu-create, get) + (custom-group-menu-create, Custom-no-edit): Mark unused parameters. + (custom-reset-standard-save-and-update): Remove unused variable `value'. + (customize-apropos): Remove unused variable `tests'. + (custom-group-value-create): Remove unused variable `hidden-p'. + (sort-fold-case): Declare. + + * cus-theme.el (custom-reset-standard-faces-list) + (custom-reset-standard-variables-list): Declare. + (customize-create-theme, custom-theme-revert, custom-theme-write) + (custom-theme-choose-mode, customize-themes, custom-theme-save): + Mark unused parameters. + + * dabbrev.el (dabbrev-completion): Remove unused variable `init'. + + * delim-col.el (delimit-columns-max): Move defvar before first use. + + * descr-text.el (describe-char-categories): Don't quote `lambda'. + (describe-char): Don't quote `lambda'. Mark unused parameter. + + * desktop.el (desktop-save-buffer-p): Mark unused parameter. + (auto-insert): Declare. + (desktop-restore-file-buffer): Rename desktop-* parameters; + mark unused ones. + (desktop-create-buffer): Rename desktop-* parameters and bind them. + (desktop-buffer): Rename desktop-* parameters. + + * dframe.el (x-sensitive-text-pointer-shape, x-pointer-shape): Declare. + (dframe-reposition-frame-xemacs, dframe-help-echo) + (dframe-hack-buffer-menu, dframe-set-timer, dframe-set-timer-internal): + Mark unused parameters. + + * dired-aux.el (backup-extract-version-start, overwrite-query) + (overwrite-backup-query, rename-regexp-query) + (rename-non-directory-query): Declare. + (dired-shell-stuff-it, dired-do-create-files): Mark unused parameters. + (dired-add-entry): Remove unused variable `orig-file-name'. + (dired-copy-file-recursive): Remove unused variable `dirfailed'. + Use parameter PRESERVE-TIME instead of accessing dynamic variable + `dired-copy-preserve-time' directly. + (dired-do-create-files-regexp): Remove unused variable `fn-count'. + (dired-insert-subdir-newpos): Rename unused variable `pos'. + + * dired-x.el (dired-omit-size-limit): Move defcustom before first use. + (dired-virtual-revert, dired-make-relative-symlink): + Mark unused parameters. + (manual-program): Declare. + (dired-x-hands-off-my-keys): Rename parameters of lambda expression. + (inode, s, mode, nlink, uid, gid, size, time, name, sym): Declare them, + wrapped in `with-no-warnings' to avoid replacing one warning by another. + + * dirtrack.el (dirtrack): Remove unused variable `multi-line'. + + * dos-fns.el (dos-8+3-filename): Remove unused variable `i'. + + * echistory.el (electric-history-in-progress, Helper-return-blurb): + Declare. + + * edmacro.el (edmacro-finish-edit): Remove unused variable `kmacro'. + + * electric.el (Electric-command-loop): Rename parameter + INHIBIT-QUIT to INHIBIT-QUITTING and bind `inhibit-quit'. + + * expand.el (expand-in-literal): Remove unused variable `here'. + + * facemenu.el (facemenu-add-new-color): + Remove unused variable `docstring'. + + * faces.el (face-id, make-face-bold, make-face-unbold, make-face-italic) + (make-face-unitalic, make-face-bold-italic): Mark unused parameters. + (face-attr-construct): Mark unused parameter. Doc fix. + (read-color): Remove unused variable `hex-string'. + + * files.el (parse-colon-path): Rename argument CD-PATH to SEARCH-PATH. + (locate-dominating-file): Remove unused vars `prev-file' and `user'. + (remote-file-name-inhibit-cache, revert-buffer): Clean up docstrings. + (display-buffer-other-frame): Remove unused variable `old-window'. + (kill-buffer-hook): Declare. + (insert-file-contents-literally, set-auto-mode, risky-local-variable-p): + Mark unused parameters. + (after-find-file): Pass 1 to `auto-save-mode', not t. + + * files-x.el (auto-insert): Declare. + (modify-file-local-variable-prop-line): Remove unused variable `val'. + + * find-lisp.el (find-lisp-find-dired-internal): Remove unused + variable `buf'. Mark unused parameter. + (find-lisp-insert-directory): Mark unused parameter. + + * format.el (format-decode-run-method): Mark unused parameter; doc fix. + (format-encode-region): Remove unused variables `cur-buf' and `result'. + (format-common-tail): Remove, unused. + (format-deannotate-region): Remove unused variable `loc'. + (format-annotate-region): Remove unused variable `p'. + (format-annotate-single-property-change): Remove unused variables + `default' and `tail'. + + * forms.el (read-file-filter): Declare. + (forms--iif-hook, forms--revert-buffer): Mark unused parameters. + + * frame.el (frame-creation-function-alist): Mark unused parameter. + (frame-geom-spec-cons): Pass FRAME to `frame-geom-value-cons'. + + * hilit-chg.el (hilit-chg-cust-fix-changes-face-list, hilit-chg-clear): + Remove unused parameters. + (hilit-chg-set-face-on-change): Remove unused variable `beg-decr'. + (highlight-compare-with-file): Remove unused variable `buf-b-read-only'. + + * htmlfontify.el (hfy-default-footer, hfy-decor, hfy-invisible) + (hfy-parse-tags-buffer, hfy-prepare-index-i, hfy-prepare-index) + (hfy-prepare-tag-map): Mark unused parameters. + (htmlfontify-buffer): Use `called-interactively-p'. + + * ibuf-ext.el (ibuffer-do-kill-lines, ibuffer-jump-to-buffer) + (ibuffer-copy-filename-as-kill, ibuffer-mark-on-buffer) + (ibuffer-do-occur): Mark unused parameters. + (ibuffer-forward-next-marked): Remove unused variable `curmark'. + (ibuffer-diff-buffer-with-file-1): Remove unused variable `proc'. + + * ibuffer.el: Don't quote `lambda'. + (ibuffer-count-marked-lines, ibuffer-count-deletion-lines) + (ibuffer-unmark-all, ibuffer-toggle-marks, ibuffer-redisplay-engine): + Mark unused parameters. + + * ido.el (ido-mode, ido-wide-find-dir-or-delete-dir) + (ido-completing-read): Mark unused parameters. + (ido-copy-current-word): Mark unused parameters; + remove unused variable `name'. + (ido-sort-merged-list): Remove unused parameter `dirs'. + + * ielm.el (ielm-input-sender): Mark unused parameter. + (ielm-string, ielm-form, ielm-pos, ielm-result, ielm-error-type) + (ielm-output, ielm-wbuf, ielm-pmark): Declare. + (ielm-eval-input): Rename argument IELM-STRING to INPUT-STRING to keep + `ielm-string' as a dynamic variable accessible from the IELM prompt. + Bind `ielm-string' to INPUT-STRING. Remove unused variable `err'. + + * image-dired.el (image-dired-display-thumbs): Remove unused + variables `curr-file' and `count'. + (image-dired-remove-tag): Remove unused variable `start'. + (image-dired-tag-files, image-dired-create-thumbs): Remove unused + variable `curr-file' + (image-dired-rotate-original): Remove unused variable `temp-file'. + (image-dired-mouse-select-thumbnail, image-dired-mouse-toggle-mark): + Remove unused variable `file'. + (image-dired-gallery-generate): Remove unused variable `curr'. + (image-dired-dired-edit-comment-and-tags): Mark unused parameters. + + * indent.el (tab-to-tab-stop): Remove unused variable `opoint'. + + * info-xref.el (info-xref-goto-node-p): Remove unused variable `err'. + + * informat.el (texinfo-command-start, texinfo-command-end): Declare. + + * isearch.el (minibuffer-history-symbol): Declare. + (isearch-edit-string): Remove unused variable `err'. + (isearch-message-prefix, isearch-message-suffix): + Mark unused parameters. + + * ls-lisp.el (ls-lisp-insert-directory): Remove unused variable `fil'. + + * macros.el (insert-kbd-macro): Remove unused variable `mods'. + + * makesum.el (double-column): Remove unused variable `cnt'. + + * misearch.el (multi-isearch-pop-state): Mark unused parameter. + (ido-ignore-item-temp-list): Declare. + + * mouse-drag.el (mouse-drag-throw): Remove unused variables + `mouse-delta', `window-last-row', `mouse-col-delta', `window-last-col', + `adjusted-mouse-col-delta' and `adjusted-mouse-delta'. + (mouse-drag-drag): Remove unused variables `mouse-delta' and + `mouse-col-delta'. + + * mouse-sel.el (mouse-extend-internal): + Remove unused variable `orig-window-frame'. + + * pcomplete.el (pcomplete-args, pcomplete-begins, pcomplete-last) + (pcomplete-index, pcomplete-stub, pcomplete-seen, pcomplete-norm-func): + Move declarations before first use. + (pcomplete-opt): Mark unused parameters; doc fix. + + * proced.el (proced-revert): Mark unused parameter. + (proced-send-signal): Remove unused variable `err'. + + * ps-print.el (ps-print-preprint-region, ps-print-preprint): + Rename parameter PREFIX-ARG to ARG. + (ps-basic-plot-string, ps-basic-plot-whitespace): + Mark unused parameters. + + * replace.el (replace-count): Define. + (occur-revert-function): Mark unused parameters. + (ido-ignore-item-temp-list, isearch-error, isearch-forward) + (isearch-case-fold-search, isearch-string): Declare. + (occur-engine): Rename parameter CASE-FOLD-SEARCH to CASE-FOLD and + bind `case-fold-search'. Remove unused variables `beg' and `end', + and simplify. + (replace-eval-replacement): Rename parameter REPLACE-COUNT to + COUNT and bind `replace-count'. + (replace-loop-through-replacements): Rename parameter REPLACE-COUNT + to COUNT. + + * savehist.el (print-readably, print-string-length): Declare. + + * shadowfile.el (shadow-expand-cluster-in-file-name): + Remove unused variable `cluster'. + (shadow-copy-file): Remove unused variable `i'. + (shadow-noquery, shadow-clusters, shadow-site-cluster) + (shadow-parse-fullname, shadow-parse-name, shadow-define-cluster) + (shadow-define-literal-group, shadow-define-regexp-group) + (shadow-make-group, shadow-shadows-of): Clean up docstrings. + + * shell.el (shell-filter-ctrl-a-ctrl-b): Mark unused parameter. + (shell): Use `called-interactively-p'. + (shell-directory-tracker): Remove unused variable `chdir-failure'. + + * simple.el (compilation-context-lines, comint-file-name-quote-list) + (comint-file-name-chars, comint-delimiter-argument-list): Declare. + (delete-backward-char): Remove unused variable `ocol'. + (minibuffer-avoid-prompt, minibuffer-history-isearch-pop-state) + (line-move-1, event-apply-alt-modifier, event-apply-super-modifier) + (event-apply-hyper-modifier, event-apply-shift-modifier) + (event-apply-control-modifier, event-apply-meta-modifier): + Mark unused parameters. + (undo-make-selective-list): Remove duplicate variable `undo-elt'. + (normal-erase-is-backspace-mode): Remove unused variable `old-state'. + + * speedbar.el (speedbar-ignored-directory-expressions) + (speedbar-supported-extension-expressions, speedbar-directory-buttons) + (speedbar-find-file, speedbar-dir-follow) + (speedbar-directory-buttons-follow, speedbar-tag-find) + (speedbar-buffer-buttons, speedbar-buffer-buttons-temp) + (speedbar-buffers-line-directory, speedbar-buffer-click): + Mark unused parameters. + (speedbar-tag-file): Remove unused variable `mode'. + (speedbar-buffers-tail-notes): Remove unused variable `mod'; simplify. + + * strokes.el (strokes-decode-buffer): Remove unused variable `ext'. + + * talk.el (talk): Remove unused variable `display'. + + * tar-mode.el (tar-subfile-save-buffer): Remove unused variable `name'. + (tar-write-region-annotate): Mark unused parameter. + + * time.el (now, time, load, mail, 24-hours, hour, 12-hours, am-pm) + (minutes, seconds, time-zone, day, year, monthname, month, dayname): + Declare them, wrapped in `with-no-warnings' to avoid replacing one + warning by another. + + * time-stamp.el (time-stamp-string-preprocess): + Remove unused variable `require-padding'. + + * tree-widget.el (widget-glyph-enable): Declare. + (tree-widget-action): Mark unused parameter. + + * w32-fns.el (x-get-selection): Mark unused parameter. + (autoload-make-program, generated-autoload-file): Declare. + + * wdired.el (wdired-revert): Mark unused parameters. + (wdired-xcase-word): Remove unused variable `err'. + + * whitespace.el (whitespace-buffer-changed): Mark unused parameters. + (whitespace-help-scroll): Remove unused variable `data-help'. + + * wid-edit.el (widget-mouse-help, widget-overlay-inactive) + (widget-image-insert, widget-after-change, default) + (widget-default-format-handler, widget-default-notify) + (widget-default-prompt-value, widget-info-link-action) + (widget-url-link-action, widget-function-link-action) + (widget-variable-link-action, widget-file-link-action) + (widget-emacs-library-link-action, widget-emacs-commentary-link-action) + (widget-field-prompt-internal, widget-field-action, widget-field-match) + (widget-choice-mouse-down-action, toggle, widget-radio-button-notify) + (widget-insert-button-action, widget-delete-button-action, visibility) + (widget-documentation-link-action, widget-documentation-string-action) + (widget-const-prompt-value, widget-regexp-match, symbol) + (widget-coding-system-prompt-value) + (widget-key-sequence-value-to-external, sexp) + (widget-sexp-value-to-internal, character, vector, cons) + (widget-choice-prompt-value, widget-boolean-prompt-value) + (widget-color--choose-action): Mark unused parameters. + (widget-item-match-inline, widget-choice-match-inline) + (widget-checklist-match, widget-checklist-match-inline) + (widget-group-match): Rename parameter VALUES to VALS. + (widget-field-value-set): Remove unused variable `size'. + (widget-color-action): Remove unused variables `value' and `start'. + + * windmove.el (windmove-wrap-loc-for-movement): Remove unused + variable `dir'. Doc fix. + (windmove-find-other-window): Don't pass it. + + * window.el (count-windows): Mark unused parameter. + (bw-adjust-window): Remove unused variable `err'. + + * woman.el (woman-file-name): Remove unused variable `default'. + (woman-expand-directory-path): Rename parameters WOMAN-MANPATH and + WOMAN-PATH to PATH-DIRS and PATH-REGEXPS, respectively. + (global-font-lock-mode): Declare. + (woman-decode-region): Mark unused parameter. + (woman-get-tab-stop): Rename parameter TAB-STOP-LIST to TAB-STOPS. + + * x-dnd.el (x-dnd-default-test-function, x-dnd-handle-old-kde) + (x-dnd-handle-xdnd, x-dnd-handle-motif): Mark unused parameters. + (x-dnd-handle-moz-url): Remove unused variable `title'. + (x-dnd-handle-xdnd): Remove unused variables `x', `y' and `ret-action'. + + * xml.el (xml-parse-tag, xml-parse-attlist): + Remove unused variable `pos'. + + 2011-04-19 Glenn Morris + + * calendar/cal-tex.el (cal-tex-list-holidays, cal-tex-cursor-month) + (cal-tex-cursor-week, cal-tex-cursor-week2, cal-tex-cursor-week-iso) + (cal-tex-cursor-filofax-2week, cal-tex-cursor-filofax-week) + (cal-tex-cursor-filofax-daily, cal-tex-mini-calendar) + * calendar/cal-html.el (cal-html-insert-minical): + * calendar/diary-lib.el (diary-list-entries-1, diary-list-entries) + (calendar-mark-date-pattern): + Prefix "unused" locals. + + * calendar/cal-dst.el (dst-adjust-time): Remove never-implemented + optional argument `style'. + + * calendar/appt.el (appt-make-list): + * calendar/cal-china.el (calendar-chinese-date-string): + * calendar/cal-hebrew.el (calendar-hebrew-list-yahrzeits) + (diary-hebrew-yahrzeit): + * calendar/cal-tex.el (cal-tex-last-blank-p, cal-tex-cursor-week2): + * calendar/calendar.el (calendar-generate-window): + * calendar/time-date.el (time-to-days): + Remove unused local variables. + + 2011-04-18 Chong Yidong + + * emacs-lisp/tabulated-list.el (tabulated-list-mode): Use a custom + glyphless-char-display table. + (tabulated-list-glyphless-char-display): New var. + + 2011-04-18 Sam Steingold + + * vc/add-log.el (change-log-font-lock-keywords): Add "Thanks to" + to acknowledgments. + + 2011-04-17 Glenn Morris + + * calendar/diary-lib.el (diary-sexp-entry): + * calendar/holidays.el (holiday-sexp): + Set debug-on-error rather than the removed stack-trace-on-error. + + 2011-04-16 Glenn Morris + + * progmodes/f90.el: Use lexical-binding. + (f90-get-correct-indent): Remove unnecessary local variable `cont'. + + 2011-04-15 Stefan Monnier + + * mail/sendmail.el (mail-mode-map): Use completion-at-point. + (mail-mode): Setup mailalias completion here instead. + * mail/mailalias.el: Use lexical-binding. + (pattern, mailalias-done): Declare dynamic. + (mail-completion-at-point-function): New function, from mail-complete. + (mail-complete): Use it. + (mail-completion-expand): New function. + (mail-get-names): Use it. + (mail-directory, mail-directory-process, mail-directory-stream): + Don't use `pattern' for lexically bound arg. + + * emacs-lisp/lisp-mode.el (eval-defun-2): Use eval-sexp-add-defvars. + + * htmlfontify.el (hfy-etags-cmd): Remove inoperant eval-and-compile. + (hfy-e2x-etags-cmd, hfy-etags-cmd-alist-default) + (hfy-etags-cmd-alist): Don't eval-and-compile any more. + + * emacs-lisp/bytecomp.el (byte-temp-output-buffer-show) + (byte-save-window-excursion, byte-temp-output-buffer-setup) + (byte-interactive-p): Define them again, for use when inlining + old code. + + 2011-04-15 Juanma Barranquero + + * loadup.el: Use `string-to-number', not `string-to-int'. + + 2011-04-15 Stefan Monnier + + * progmodes/gud.el (gud-gdb): Use completion-at-point instead of + gud-gdb-complete-command. + (gud-gdb-completions): New function, from gud-gdb-complete-command. + (gud-gdb-completion-at-point): New function. + (gud-gdb-completions): Remove. + +2011-04-14 Martin Rudalics + + * window.el (adjust-window-trailing-edge): Assign normal sizes + to the windows affected in window-splits nil case. + + 2011-04-14 Michael Albinus + + * net/tramp-sh.el (tramp-sh-handle-file-attributes): Handle the case + when the scripts fail. Use `tramp-do-file-attributes-with-ls' then. + (tramp-do-copy-or-rename-file-out-of-band): Do not check any longer + whether `executable-find' is bound. + + * net/tramp-smb.el (tramp-smb-handle-copy-file): Fix docstring. + 2011-04-14 Stefan Monnier * minibuffer.el (completion-in-region-mode-predicate) diff --cc lisp/progmodes/ebrowse.el index 0b0bbcaa038,d31a46cc308..849bd02c521 --- a/lisp/progmodes/ebrowse.el +++ b/lisp/progmodes/ebrowse.el @@@ -1625,10 -1624,11 +1624,10 @@@ The new frame is deleted when you quit (and (not had-a-buf) (not (buffer-modified-p buf-to-view)) 'kill-buffer)) - (view-mode-enter (cons (selected-window) (cons (selected-window) t)) - 'ebrowse-view-exit-fn))) + (view-mode-enter nil 'ebrowse-view-exit-fn))) (defun ebrowse-view/find-file-and-search-pattern - (struc info file tags-file-name &optional view where) + (struc info file tags-file &optional view where) "Find or view a member or class. STRUC is an `ebrowse-bs' structure (or a structure including that) describing what to search. diff --cc lisp/window.el index 4e3d8b0d4e6,9ea00442628..ef9c1869dfe --- a/lisp/window.el +++ b/lisp/window.el @@@ -3528,19 -469,6 +3528,19 @@@ This is used by `balance-windows-area' Changing this globally has no effect.") (make-variable-buffer-local 'window-area-factor) +(defun balance-windows-area-adjust (window delta horizontal) + "Wrapper around `resize-window' with error checking. +Arguments WINDOW, DELTA and HORIZONTAL are passed on to that function." + ;; `resize-window' may fail if delta is too large. + (while (>= (abs delta) 1) - (condition-case err ++ (condition-case nil + (progn + (resize-window window delta horizontal) + (setq delta 0)) + (error + ;;(message "adjust: %s" (error-message-string err)) + (setq delta (/ delta 2)))))) + (defun balance-windows-area () "Make all visible windows the same area (approximately). See also `window-area-factor' to change the relative size of diff --cc src/ChangeLog index 3d95cb3f4be,ceb45afebc5..e4a537a22d1 --- a/src/ChangeLog +++ b/src/ChangeLog @@@ -1,24 -1,1442 +1,1463 @@@ +2011-05-16 Martin Rudalics + + * frame.c (make_frame): Use other_buffer_safely. + (store_frame_param): Just store val in the buffer_list and + buried_buffer_list slots. + + * window.c: Remove constant Qset. + (Fwindow_new_total_size): Rename to Fwindow_new_total_size. + (Fwindow_new_normal_size): Rename to Fwindow_new_normal. + (replace_window, make_window): Use floats for normal_lines and + normal_cols. + (run_window_configuration_change_hook): Record current buffer + first and selected frame afterwards to assure that the current + buffer is correctly reestablished. Rename count1 to count. + (Fresize_window_total): Rename to Fset_window_new_total. + (Fresize_window_normal): Rename to Fset_window_new_normal. + (resize_window_apply): Remove the Qset related branches + (Fsplit_window_internal): Rename horizontal argument to side. + New optional argument normal_size. Simplify assignment of normal + sizes which is mostly done in split-window itself now. + + 2011-05-12 Drew Adams + + * textprop.c (Fprevious_single_char_property_change): Doc fix (bug#8655). + + 2011-05-12 YAMAMOTO Mitsuharu + + * w32term.c (w32_draw_fringe_bitmap): Rename local vars `left' and + `width' to `bar_area_x' and `bar_area_width', respectively. + (x_scroll_run): Take account of fringe background extension. + + * xterm.c (x_draw_fringe_bitmap) [USE_TOOLKIT_SCROLL_BARS]: Rename + local vars `left' and `width' to `bar_area_x' and + `bar_area_width', respectively. + (x_scroll_run) [USE_TOOLKIT_SCROLL_BARS]: Take account of fringe + background extension. + + 2011-05-10 Jim Meyering + + * xdisp.c (x_intersect_rectangles): Fix typo "the the -> the". + + 2011-05-10 Juanma Barranquero + + * image.c (Finit_image_library): Return t for built-in image types, + like pbm and xbm. (Bug#8640) + + 2011-05-09 Andreas Schwab + + * w32menu.c (set_frame_menubar): Fix submenu allocation. + + 2011-05-07 Eli Zaretskii + + * w32console.c (Fset_screen_color): Doc fix. + (Fget_screen_color): New function. + (syms_of_ntterm): Defsubr it. + + * callproc.c (call_process_cleanup): Don't close and unlink the + temporary file if Fcall_process didn't create it in the first + place. + (Fcall_process): Don't create tempfile if stdout of the child + process will be redirected to a file specified with `:file'. + Don't try to re-open tempfile in that case, and set fd[0] to -1 as + cue to call_process_cleanup not to close that handle. + + 2011-05-07 Ben Key + + * makefile.w32-in: The bootstrap-temacs rule now makes use of + one of two shell specific rules, either bootstrap-temacs-CMD or + bootstrap-temacs-SH. The bootstrap-temacs-SH rule is identical + to the previous implementation of the bootstrap-temacs rule. + The bootstrap-temacs-CMD rule is similar to the previous + implementation of the bootstrap-temacs rule except that it + makes use of the ESC_CFLAGS variable instead of the CFLAGS + variable. + + These changes, along with some changes to nt/configure.bat, + nt/gmake.defs, and nt/nmake.defs, are required to extend my + earlier fix to add support for --cflags and --ldflags options + that include quotes so that it works whether make uses cmd or + sh as the shell. + + 2011-05-06 Michael Albinus + + * dbusbind.c (QCdbus_type_unix_fd): Declare static. + (xd_remove_watch): Don't check QCdbus_type_unix_fd for SYMBOLP, it + is a constant. + (Fdbus_init_bus, xd_read_queued_messages): Bus can be a symbol or + a string. Handle both cases. + (Fdbus_call_method_asynchronously, Fdbus_register_signal) + (Fdbus_register_method): Use Qinvalid_function. + + 2011-05-06 Juanma Barranquero + + * makefile.w32-in: Update dependencies. + (LISP_H): Add inttypes.h and stdin.h. + (PROCESS_H): Add unistd.h. + + 2011-05-06 Eli Zaretskii + + * lread.c: Include limits.h (fixes the MS-Windows build broken by + 2011-05-06T07:13:19Z!eggert@cs.ucla.edu). + + 2011-05-06 Paul Eggert + + * image.c (Finit_image_library) [!HAVE_NTGUI]: Omit unused local. + + * term.c (vfatal): Remove stray call to va_end. + It's not needed and the C Standard doesn't allow it here anyway. + + Use C99's va_copy to avoid undefined behavior on x86-64 GNU/Linux. + * eval.c (verror): doprnt a copy of ap, not the original. (Bug#8545) + + * eval.c (verror): OK to create a string of up to MOST_POSITIVE_FIXNUM + bytes. + + * term.c: Don't include , as does that. + + * callproc.c (Fcall_process): Use 'volatile' to avoid vfork clobbering. + + * process.c (Fformat_network_address): Fix typo: args2 -> *args2. + + * xmenu.c (set_frame_menubar): Fix typo: int * -> int (3 times). + + * coding.c (detect_coding_charset): Fix typo: * 2 -> *4 (Bug#8601). + + * charset.h (struct charset.code_space): Now has 15 elements, not 16. + * charset.c (Fdefine_charset_internal): Don't initialize + charset.code_space[15]. The value was garbage, on hosts with + 32-bit int (Bug#8600). + + * lread.c (read_integer): Be more consistent with string-to-number. + Use string_to_number to do the actual conversion; this avoids + rounding errors and fixes some other screwups. Without this fix, + for example, #x1fffffffffffffff was misread as -2305843009213693952. + (digit_to_number): Move earlier, for benefit of read_integer. + Return -1 if the digit is out of range for the base, -2 if it is + not a digit in any supported base. (Bug#8602) + + * doprnt.c (doprnt): Support arbitrary pI values, such as "I64". + + * dispnew.c (scrolling_window): Return 1 if we scrolled, + to match comment at start of function. This also removes a + GCC warning about overflow in a 32+64-bit port. + + * lisp.h (EMACS_INT, EMACS_UINT, BITS_PER_EMACS_INT, pI): Simplify. + + * dbusbind.c: Do not use XPNTR on a value that may be an integer. + Reported by Stefan Monnier in + . + (xd_remove_watch, Fdbus_init_bus, xd_read_queued_messages): Use + SYMBOLP-guarded XSYMBOL, not XPNTR. + + * lisp.h (EMACS_INTPTR): Remove. All uses changed to intptr_t. + (EMACS_UINTPTR): Likewise, with uintptr_t. + + * lisp.h: Prefer 64-bit EMACS_INT if available. + (EMACS_INT, EMACS_UINT, BITS_PER_EMACS_INT, pI): Define to 64-bit + on 32-bit hosts that have 64-bit int, so that they can access + large files. + However, temporarily disable this change unless the temporary + symbol WIDE_EMACS_INT is defined. + + * lread.c, process.c: Do not include ; lisp.h does it now. + + Prefer intptr_t/uintptr_t for integers the same widths as pointers. + This removes an assumption that EMACS_INT and long are the same + width as pointers. The assumption is true for Emacs porting targets + now, but we want to make other targets possible. + * lisp.h: Include , for INTPTR_MAX, UINTPTR_MAX. + (EMACS_INTPTR, EMACS_UINTPTR): New macros. + In the rest of the code, change types of integers that hold casted + pointers to EMACS_INTPTR and EMACS_UINTPTR, systematically + replacing EMACS_INT, long, EMACS_UINT, and unsigned long. + (XTYPE): Don't cast arg to EMACS_UINT; normally is not needed. + (XSET): Cast type of XTYPE arg to EMACS_INTPTR; it is needed here. + No need to cast type when ORing. + (XPNTR): Return a value of type EMACS_INTPTR or EMACS_UINTPTR. + * alloc.c (lisp_align_malloc): Remove a no-longer-needed cast. + * doc.c (store_function_docstring): Use EMACS_INTPTR, so as not to + assume EMACS_INT is the same width as char *. + * gtkutil.c (xg_gtk_scroll_destroy, xg_tool_bar_button_cb): + (xg_tool_bar_callback, xg_tool_bar_help_callback, xg_make_tool_item): + Remove no-longer-needed casts. + (xg_create_scroll_bar, xg_tool_bar_button_cb, xg_tool_bar_callback): + (xg_tool_bar_help_callback, xg_make_tool_item): + Use EMACS_INTPTR to hold an integer + that will be cast to void *; this can avoid a GCC warning + if EMACS_INT is not the same width as void *. + * menu.c (find_and_call_menu_selection): Remove no-longer-needed cast. + * xdisp.c (display_echo_area_1, resize_mini_window_1): + (current_message_1, set_message_1): + Use a local to convert to proper width without a cast. + * xmenu.c (dialog_selection_callback): Likewise. + + * sysdep.c (get_random): Don't assume EMACS_INT is no wider than long. + Also, don't assume VALBITS / RAND_BITS is less than 5, + and don't rely on undefined behavior when shifting a 1 left into + the sign bit. + * lisp.h (get_random): Change signature to match. + + * lread.c (hash_string): Use size_t, not int, for hash computation. + Normally we prefer signed values; but hashing is special, because + it's better to use unsigned division on hash table sizes so that + the remainder is nonnegative. Also, size_t is the natural width + for hashing into memory. The previous code used 'int', which doesn't + retain enough info to hash well into very large tables. + (oblookup, oblookup_last_bucket_number, Funintern): Likewise. + + * dbusbind.c: Don't possibly lose pointer info when converting. + (xd_remove_watch, Fdbus_init_bus, xd_read_queued_messages): + Use XPNTR rather than XHASH, so that the high-order bits of + the pointer aren't lost when converting through void *. + + * eval.c (Fautoload): Don't double-shift a pointer. + + * fns.c (Frandom): Let EMACS_UINT be wider than unsigned long. + + 2011-05-06 Juanma Barranquero + + * gnutls.c (DEF_GNUTLS_FN): + * image.c (DEF_IMGLIB_FN): Make function pointers static. + + 2011-05-05 Andreas Schwab + + * lread.c (lisp_file_lexically_bound_p): Stop scanning at end + marker. (Bug#8610) + + 2011-05-05 Eli Zaretskii + + * w32heap.c (allocate_heap) [USE_LISP_UNION_TYPE || USE_LSB_TAG]: + New version that can reserve upto 2GB of heap space. + + 2011-05-05 Chong Yidong + + * nsfns.m (Fns_read_file_name): Doc fix (Bug#8534). + + 2011-05-05 Teodor Zlatanov + + * gnutls.c (fn_gnutls_certificate_set_x509_key_file): Add alias to + `gnutls_certificate_set_x509_key_file'. + + 2011-05-05 Juanma Barranquero + + * makefile.w32-in ($(BLD)/image.$(O), $(BLD)/process.$(O)): + Update dependencies. + + 2011-05-04 Juanma Barranquero + + * gnutls.h (emacs_gnutls_write, emacs_gnutls_read): + * gnutls.c (emacs_gnutls_write, emacs_gnutls_read): + Remove unused parameter `fildes'. + * process.c (read_process_output, send_process): Don't pass it. + + 2011-05-04 Juanma Barranquero + + Fix previous change: the library cache is defined in w32.c. + * image.c (CACHE_IMAGE_TYPE) [!HAVE_NTGUI]: Define to noop. + (Finit_image_library): Wrap Vlibrary_cache on "#ifdef HAVE_NTGUI". + + 2011-05-04 Juanma Barranquero + + Implement dynamic loading of GnuTLS on Windows. + + * gnutls.h (GNUTLS_EMACS_ERROR_NOT_LOADED): New macro. + (emacs_gnutls_write, emacs_gnutls_read): Mark as extern. + (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno): + Declare. + + * gnutls.c (Qgnutls_dll): Define. + (DEF_GNUTLS_FN, LOAD_GNUTLS_FN): New macros. + (gnutls_*): Declare function pointers. + (init_gnutls_functions): New function to initialize function pointers. + (emacs_gnutls_handshake, Fgnutls_error_string, Fgnutls_deinit) + (emacs_gnutls_global_init, Fgnutls_bye): Use function pointers. + (emacs_gnutls_record_check_pending, emacs_gnutls_transport_set_errno): + Wrappers for gnutls_record_check_pending and gnutls_transport_set_errno. + (emacs_gnutls_write, emacs_gnutls_read) + (emacs_gnutls_handle_error, Fgnutls_error_fatalp) + (Fgnutls_available_p): New function. + (Fgnutls_boot): Call Fgnutls_available_p. Use function pointers. + (syms_of_gnutls) : Initialize and staticpro it. + (syms_of_gnutls) : defsubr it. + + * image.c: Include w32.h. + (Vimage_type_cache): Delete. + (syms_of_image) : Don't initialize and staticpro it. + (CACHE_IMAGE_TYPE, Finit_image_library): Use Vlibrary_cache instead. + (w32_delayed_load): Move to w32.c. + + * w32.h (VlibraryCache, QCloaded_from, w32_delayed_load): Declare. + + * w32.c (QCloaded_from, Vlibrary_cache): Define. + (w32_delayed_load): Move from image.c. When loading a library, record + its filename in the :loaded-from property of the library id. + (globals_of_w32) : + Initialize and staticpro them. + (emacs_gnutls_pull, emacs_gnutls_push): Call emacs_gnutls_* functions. + + * process.c: Include lisp.h before w32.h, not after. + (wait_reading_process_output): Call emacs_gnutls_record_check_pending + instead of gnutls_record_check_pending. + + * callproc.c, emacs.c: Include lisp.h before w32.h, not after. + + 2011-05-04 Teodor Zlatanov + + * gnutls.c (Fgnutls_boot): Support :keylist and :crlfiles options + instead of :keyfiles. Give GnuTLS the keylist and the CRL lists + as passed in. + + 2011-05-03 Jan Djärv + + * xterm.c (x_set_frame_alpha): Do not set property on anything + else than FRAME_X_OUTER_WINDOW (Bug#8608). + + 2011-05-02 Juanma Barranquero + + * sysdep.c (get_tty_size) [WINDOWSNT]: Implement. (Bug#8596) + + 2011-05-02 Juanma Barranquero + + * gnutls.c (Qgnutls_log_level, Qgnutls_code, Qgnutls_anon) + (Qgnutls_x509pki, Qgnutls_e_interrupted, Qgnutls_e_again) + (Qgnutls_e_invalid_session, Qgnutls_e_not_ready_for_handshake) + (gnutls_global_initialized, Qgnutls_bootprop_priority) + (Qgnutls_bootprop_trustfiles, Qgnutls_bootprop_keyfiles) + (Qgnutls_bootprop_callbacks, Qgnutls_bootprop_loglevel) + (Qgnutls_bootprop_hostname, Qgnutls_bootprop_verify_flags) + (Qgnutls_bootprop_verify_error, Qgnutls_bootprop_verify_hostname_error) + (Qgnutls_bootprop_callbacks_verify): Make static. + + 2011-05-01 Andreas Schwab + + * callproc.c: Indentation fixup. + + * sysdep.c (wait_for_termination_1): Make static. + (wait_for_termination, interruptible_wait_for_termination): Move + after wait_for_termination_1. + + 2011-05-01 Lars Magne Ingebrigtsen + + * sysdep.c (interruptible_wait_for_termination): New function + which is like wait_for_termination, but allows keyboard + interruptions. + + * callproc.c (Fcall_process): Add (:file "file") as an option for + the STDOUT buffer. + (Fcall_process_region): Ditto. + + 2011-04-30 Eli Zaretskii + + * dosfns.c (Fint86, Fdos_memget, Fdos_memput): Use `ASIZE (FOO)' + rather than `XVECTOR (FOO)->size'. + + * process.c: Remove HAVE_INTTYPES_H condition from inclusion of + inttypes.h, as a gnulib replacement is used if it not available in + system headers. + + 2011-04-21 Eli Zaretskii + + Lift the MOST_POSITIVE_FIXNUM/4 limitation on visited files. + * fileio.c (Finsert_file_contents): Don't limit file size to 1/4 + of MOST_POSITIVE_FIXNUM. (Bug#8528) + + * coding.c (coding_alloc_by_realloc): Error out if destination + will grow beyond MOST_POSITIVE_FIXNUM. + (decode_coding_emacs_mule): Abort if there isn't enough place in + charbuf for the composition carryover bytes. Reserve an extra + space for up to 2 characters produced in a loop. + (decode_coding_iso_2022): Abort if there isn't enough place in + charbuf for the composition carryover bytes. + + 2011-04-21 Eli Zaretskii + + * doprnt.c (doprnt) [!HAVE_LONG_LONG_INT]: Error out instead of + aborting when %lld or %lll format is passed. + [!HAVE_UNSIGNED_LONG_LONG_INT]: Error out instead of aborting when + %llo or %llx format is passed. (Bug#8545) + + * window.c (window_scroll_line_based): Use a marker instead of + simple variables to record original value of point. (Bug#7952) + + * doprnt.c (doprnt): Fix the case where a multibyte sequence + produced by %s or %c overflows available buffer space. (Bug#8545) + + 2011-04-28 Paul Eggert + + * doprnt.c (doprnt): Omit useless test; int overflow check (Bug#8545). + (SIZE_MAX): Move defn after all includes, as they might #define it. + + 2011-04-28 Juanma Barranquero + + * w32.c (init_environment): Warn about defaulting HOME to C:\. + + 2011-04-28 Juanma Barranquero + + * keyboard.c (Qdelayed_warnings_hook): Define. + (command_loop_1): Run `delayed-warnings-hook' + if Vdelayed_warnings_list is non-nil. + (syms_of_keyboard) : DEFSYM it. + (syms_of_keyboard) : DEFVAR_LISP it. + + 2011-04-28 Eli Zaretskii + + * doprnt.c (doprnt): Don't return value smaller than the buffer + size if the message was truncated. (Bug#8545). + + 2011-04-28 Juanma Barranquero + + * w32fns.c (Fx_change_window_property, Fx_delete_window_property) + (Fx_window_property): #if-0 the whole functions, not just the bodies. + + 2011-04-27 Paul Eggert + + * doprnt.c (doprnt): Support "ll" length modifier, for long long. + + 2011-04-27 Juanma Barranquero + + * makefile.w32-in: Update dependencies. + + 2011-04-27 Eli Zaretskii + + Improve `doprnt' and its usage. (Bug#8545) + * doprnt.c (doprnt): Make sure `format' is never accessed beyond + `format_end'. Remove support for %l as a conversion specifier. + Don't use xrealloc. Improve diagnostics when the %l size modifier + is used. Update the commentary. + + * eval.c (verror): Simplify calculation of size_t. + + * coding.c (Ffind_operation_coding_system): Fix diagnostic error + messages. + + 2011-04-27 Yoshiaki Kasahara (tiny change) + + * buffer.c (init_buffer) [USE_MMAP_FOR_BUFFERS]: Adjust to aliasing + change. + + 2011-04-27 Paul Eggert + + * nsmenu.m: Replace all uses of XVECTOR with ASIZE and AREF. + This makes this file independent of the recent pseudovector change. + + 2011-04-26 Paul Eggert + + * keyboard.c (handle_user_signal): Fix pointer signedness problem. + + * gnutls.c (emacs_gnutls_handle_error): Remove unused local. + (Fgnutls_boot): gnutls_certificate_verify_peers2 wants unsigned *. + Remove unused local. + (emacs_gnutls_write): Don't use uninitialized rtnval if nbyte <= 0. + + * lisp.h: Fix a problem with aliasing and vector headers. (Bug#8546) + GCC 4.6.0 optimizes based on type-based alias analysis. For + example, if b is of type struct buffer * and v of type struct + Lisp_Vector *, then gcc -O2 was incorrectly assuming that &b->size + != &v->size, and therefore "v->size = 1; b->size = 2; return + v->size;" must therefore return 1. This assumption is incorrect + for Emacs, since it type-puns struct Lisp_Vector * with many other + types. To fix this problem, this patch adds a new type struct + vectorlike_header that documents the constraints on layout of vectors + and pseudovectors, and helps optimizing compilers not get fooled + by Emacs's type punning. It also adds the macros XSETTYPED_PVECTYPE + XSETTYPED_PSEUDOVECTOR, TYPED_PSEUDOVECTORP, for similar reasons. + * lisp.h (XSETTYPED_PVECTYPE): New macro, specifying the name of + the size member. + (XSETPVECTYPE): Rewrite in terms of new macro. + (XSETPVECTYPESIZE): New macro, specifying both type and size. + This is a bit clearer, and further avoids the possibility of + undesirable aliasing. + (XSETTYPED_PSEUDOVECTOR): New macro, specifying the size. + (XSETPSEUDOVECTOR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR. + (XSETSUBR): Rewrite in terms of XSETTYPED_PSEUDOVECTOR and XSIZE, + since Lisp_Subr is a special case (no "next" field). + (ASIZE): Now uses header.size rather than size. All + previous uses of XVECTOR (foo)->size replaced to use this macro, + to avoid the hassle of writing XVECTOR (foo)->header.size. + (struct vectorlike_header): New type. + (TYPED_PSEUDOVECTORP): New macro, also specifying the C type of the + object, to help avoid aliasing. + (PSEUDOVECTORP): Rewrite in terms of TYPED_PSEUDOVECTORP. + (SUBRP): Likewise, since Lisp_Subr is a special case. + * lisp.h (struct Lisp_Vector, struct Lisp_Char_Table): + (struct Lisp_Sub_Char_Table, struct Lisp_Bool_Vector): + (struct Lisp_Hash_Table): Combine first two members into a single + struct vectorlike_header member. All uses of "size" and "next" members + changed to be "header.size" and "header.next". + * buffer.h (struct buffer): Likewise. + * font.h (struct font_spec, struct font_entity, struct font): Likewise. + * frame.h (struct frame): Likewise. + * process.h (struct Lisp_Process): Likewise. + * termhooks.h (struct terminal): Likewise. + * window.c (struct save_window_data, struct saved_window): Likewise. + * window.h (struct window): Likewise. + * alloc.c (allocate_buffer, Fmake_bool_vector, allocate_pseudovector): + Use XSETPVECTYPESIZE, not XSETPVECTYPE, to avoid aliasing problems. + * buffer.c (init_buffer_once): Likewise. + * lread.c (defsubr): Use XSETTYPED_PVECTYPE, since Lisp_Subr is a + special case. + * process.c (Fformat_network_address): Use local var for size, + for brevity. + + * bytecode.c (exec_byte_code): Don't use XVECTOR before CHECK_VECTOR. + + Make the Lisp reader and string-to-float more consistent (Bug#8525) + * data.c (atof): Remove decl; no longer used or needed. + (digit_to_number): Move to lread.c. + (Fstring_to_number): Use new string_to_number function, to be + consistent with how the Lisp reader treats infinities and NaNs. + Do not assume that floating-point numbers represent EMACS_INT + without losing information; this is not true on most 64-bit hosts. + Avoid double-rounding errors, by insisting on integers when + parsing non-base-10 numbers, as the documentation specifies. + * lisp.h (string_to_number): New decl, replacing ... + (isfloat_string): Remove. + * lread.c: Include , for uintmax_t and strtoumax. + (read1): Do not accept +. and -. as integers; this + appears to have been a coding error. Similarly, do not accept + strings like +-1e0 as floating point numbers. Do not report + overflow for integer overflows unless the base is not 10 which + means we have no simple and reliable way to continue. + Break out the floating-point parsing into a new + function string_to_number, so that Fstring_to_number parses + floating point numbers consistently with the Lisp reader. + (digit_to_number): Moved here from data.c. Make it static inline. + (E_CHAR, EXP_INT): Remove, replacing with ... + (E_EXP): New macro, to solve the "1.0e+" problem mentioned below. + (string_to_number): New function, replacing isfloat_string. + This function checks for valid syntax and produces the resulting + Lisp float number too. Rework it so that string-to-number + no longer mishandles examples like "1.0e+". Use strtoumax, + so that overflow for non-base-10 numbers is reported only when + there's no portable and simple way to convert to floating point. + + * textprop.c (set_text_properties_1): Rewrite for clarity, + and to avoid GCC warning about integer overflow. + + * intervals.h (struct interval): Use EMACS_INT for members + where EMACS_UINT might cause problems. See + . + (CHECK_TOTAL_LENGTH): Remove cast to EMACS_INT; no longer needed. + * intervals.c (interval_deletion_adjustment): Now returns EMACS_INT. + All uses changed. + (offset_intervals): Tell GCC not to worry about length overflow + when negating a negative length. + + * alloc.c (overrun_check_malloc, overrun_check_realloc): Now static. + (overrun_check_free): Likewise. + + * alloc.c (SDATA_SIZE) [!GC_CHECK_STRING_BYTES]: Avoid runtime check + in the common case where SDATA_DATA_OFFSET is a multiple of Emacs + word size. + + * gnutls.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10. + (gnutls_make_error): Rename local to avoid shadowing. + (gnutls_emacs_global_deinit): ifdef out; not used. + (Fgnutls_boot): Use const for pointer to readonly storage. + Comment out unused local. Fix pointer signedness problems. + + * lread.c (openp): Don't stuff size_t into an 'int'. + Use <= on length, not < on length + 1, to avoid GCC 4.6.0 warning + about possible signed overflow. + + * gtkutil.c: Fix problems found by GCC 4.6.0 on Ubuntu 10.10. + (GDK_KEY_g): Don't define if already defined. + (xg_prepare_tooltip): Avoid pointer signedness problem. + (xg_set_toolkit_scroll_bar_thumb): Redo to avoid two casts. + + * process.c (Fnetwork_interface_info): Avoid left-shift undefined + behavior with 1 << 31. GCC 4.6.0 warns about this on 32-bit hosts. + + * xfns.c (Fx_window_property): Simplify a bit, + to make a bit faster and to avoid GCC 4.6.0 warning. + * xselect.c (x_get_window_property, x_handle_dnd_message): Likewise. + + * fns.c (internal_equal): Don't assume size_t fits in int. + + * alloc.c (compact_small_strings): Tighten assertion a little. + + Replace pEd with more-general pI, and fix some printf arg casts. + * lisp.h (pI): New macro, generalizing old pEd macro to other + conversion specifiers. For example, use "...%"pI"d..." rather + than "...%"pEd"...". + (pEd): Remove. All uses replaced with similar uses of pI. + * src/m/amdx86-64.h, src/m/ia64.h, src/m/ibms390x.h: Likewise. + * alloc.c (check_pure_size): Don't overflow by converting size to int. + * bidi.c (bidi_dump_cached_states): Use pI to avoid cast. + * data.c (Fnumber_to_string): Use pI instead of if-then-else-abort. + * dbusbind.c (xd_append_arg): Use pI to avoid cast. + (Fdbus_method_return_internal, Fdbus_method_error_internal): Likewise. + * font.c (font_unparse_xlfd): Avoid potential buffer overrun on + 64-bit hosts. + (font_unparse_xlfd, font_unparse_fcname): Use pI to avoid casts. + * keyboard.c (record_char, modify_event_symbol): Use pI to avoid casts. + * print.c (safe_debug_print, print_object): Likewise. + (print_object): Don't overflow by converting EMACS_INT or EMACS_UINT + to int. + Use pI instead of if-then-else-abort. Use %p to avoid casts, + avoiding the 0 flag, which is not portable. + * process.c (Fmake_network_process): Use pI to avoid cast. + * region-cache.c (pp_cache): Likewise. + * xdisp.c (decode_mode_spec): Likewise. + * xrdb.c (x_load_resources) [USE_MOTIF]: Use pI to avoid undefined + behavior on 64-bit hosts with printf arg. + * xselect.c (x_queue_event): Use %p to avoid casts, avoiding 0 flag. + (x_stop_queuing_selection_requests): Likewise. + (x_get_window_property): Don't truncate byte count to an 'int' + when tracing. + + * frame.c (frame_name_fnn_p): Get rid of strtol, which isn't right + here, since it parses constructs like leading '-' and spaces, + which are not wanted; and it overflows with large numbers. + Instead, simply match F[0-9]+, which is what is wanted anyway. + + * alloc.c: Remove unportable assumptions about struct layout. + (SDATA_SELECTOR, SDATA_DATA_OFFSET): New macros. + (SDATA_OF_STRING, SDATA_SIZE, allocate_string_data): + (allocate_vectorlike, make_pure_vector): Use the new macros, + plus offsetof, to remove unportable assumptions about struct layout. + These assumptions hold on all porting targets that I know of, but + they are not guaranteed, they're easy to remove, and removing them + makes further changes easier. + + * alloc.c (BLOCK BYTES): Fix typo by changing "ablock" to "ablocks". + This doesn't fix a bug but makes the code clearer. + (string_overrun_cookie): Now const. Use initializers that + don't formally overflow signed char, to avoid warnings. + (allocate_string_data) [GC_CHECK_STRING_OVERRUN]: Fix typo that + can cause Emacs to crash when string overrun checking is enabled. + (allocate_buffer): Don't assume sizeof (struct buffer) is a + multiple of sizeof (EMACS_INT); it need not be, if + alignof(EMACS_INT) < sizeof (EMACS_INT). + (check_sblock, check_string_bytes, check_string_free_list): Protoize. + + 2011-04-26 Juanma Barranquero + + * keyboard.c (QCrtl): Rename from Qrtl. All uses changed. + + 2011-04-26 Teodor Zlatanov + + * gnutls.c (emacs_gnutls_handshake): Return an error if we're not + supposed to be handshaking. (Bug#8556) + Reported by Paul Eggert . + + 2011-04-26 Daniel Colascione + + * lisp.h (Qdebug): List symbol. + * eval.c (Qdebug): Restore global linkage. + * keyboard.c (debug-on-event): New variable. + (handle_user_signal): Break into debugger when debug-on-event + matches the current signal symbol. + + 2011-04-25 Dan Nicolaescu + + * alloc.c (check_sblock, check_string_bytes) + (check_string_free_list): Convert to standard C. + + 2011-04-25 Teodor Zlatanov + + * w32.c (emacs_gnutls_push): Fix typo. + + 2011-04-25 Eli Zaretskii + + * gnutls.c (emacs_gnutls_handshake): Avoid compiler warnings about + "cast to pointer from integer of different size". + + Improve doprnt and its use in verror. (Bug#8545) + * doprnt.c (doprnt): Document the set of format control sequences + supported by the function. Use SAFE_ALLOCA instead of always + using `alloca'. + + * eval.c (verror): Don't limit the buffer size at size_max-1, that + is one byte too soon. Don't use xrealloc; instead xfree and + xmalloc anew. + + 2011-04-24 Teodor Zlatanov + + * gnutls.h: Add GNUTLS_STAGE_CALLBACKS enum to denote we're in the + callbacks stage. + + * gnutls.c: Renamed global_initialized to + gnutls_global_initialized. Added internals for the + :verify-hostname-error, :verify-error, and :verify-flags + parameters of `gnutls-boot' and documented those parameters in the + docstring. Start callback support. + (emacs_gnutls_handshake): Add Woe32 support. Retry handshake + unless a fatal error occured. Call gnutls_alert_send_appropriate + on error. Return error code. + (emacs_gnutls_write): Call emacs_gnutls_handle_error. + (emacs_gnutls_read): Likewise. + (Fgnutls_boot): Return handshake error code. + (emacs_gnutls_handle_error): New function. + (wsaerror_to_errno): Likewise. + + * w32.h (emacs_gnutls_pull): Add prototype. + (emacs_gnutls_push): Likewise. + + * w32.c (emacs_gnutls_pull): New function for GnuTLS on Woe32. + (emacs_gnutls_push): Likewise. + + 2011-04-24 Claudio Bley (tiny change) + + * process.c (wait_reading_process_output): Check if GnuTLS + buffered some data internally if no FDs are set for TLS + connections. + + * makefile.w32-in (OBJ2): Add gnutls.$(O). + (LIBS): Link to USER_LIBS. + ($(BLD)/gnutls.$(0)): New target. + + 2011-04-24 Eli Zaretskii + + * xdisp.c (handle_single_display_spec): Rename the + display_replaced_before_p argument into display_replaced_p, to + make it consistent with the commentary. Fix typos in the + commentary. + + * textprop.c (syms_of_textprop): Remove dead code. + (copy_text_properties): Delete obsolete commentary about an + interface that was deleted long ago. Fix typos in the description + of arguments. + + * msdos.c (XMenuActivate, XMenuAddSelection): Adjust argument list + to changes in oldXMenu/XMenu.h from 2011-04-16. + : Constify. + (IT_menu_make_room): menu->help_text is now `const char **'; + adjust. + + * msdos.h (XMenuActivate, XMenuAddSelection): Adjust prototypes + to changes in oldXMenu/XMenu.h from 2011-04-16. + (struct XMenu): Declare `help_text' `const char **'. + + * xfaces.c : Make extern again. + + * syntax.c: Include sys/types.h before including regex.h, as + required by Posix. + + * doc.c (get_doc_string): Improve the format passed to `error'. + + * doprnt.c (doprnt): Improve commentary. + + * term.c (init_tty) [MSDOS]: Fix 1st argument to maybe_fatal. + + * Makefile.in (TAGS): Depend on $(M_FILE) and $(S_FILE), and scan + them with etags. + + * makefile.w32-in (globals.h): Add a dummy recipe, to make any + changes in globals.h immediately force recompilation. + (TAGS): Depend on $(CURDIR)/m/intel386.h and + $(CURDIR)/s/ms-w32.h. + (TAGS-gmake): Scan $(CURDIR)/m/intel386.h and $(CURDIR)/s/ms-w32.h. + + * character.c (Fchar_direction): Function deleted. + (syms_of_character): Don't defsubr it. + : Deleted. + + 2011-04-23 Eli Zaretskii + + Fix doprnt so it could be used again safely in `verror'. (Bug#8435) + * doprnt.c: Include limits.h. + (SIZE_MAX): New macro. + (doprnt): Return a size_t value. 2nd arg is now size_t. Many + local variables are now size_t instead of int or unsigned. + Improve overflow protection. Support `l' modifier for integer + conversions. Support %l conversion. Don't assume an EMACS_INT + argument for integer conversions and for %c. + + * lisp.h (doprnt): Restore prototype. + + * makefile.w32-in ($(BLD)/callint.$(O)): Depend on + $(SRC)/character.h. + + * Makefile.in (base_obj): Add back doprnt.o. + + * deps.mk (doprnt.o): Add back prerequisites. + (callint.o): Depend on character.h. + + * eval.c (internal_lisp_condition_case): Include the handler + representation in the error message. + (verror): Call doprnt instead of vsnprintf. Fix an off-by-one bug + when breaking from the loop. + + * xdisp.c (vmessage): Call doprnt instead of vsnprintf. + + * callint.c (Fcall_interactively): When displaying error message + about invalid control letter, pass the character's codepoint, not + a pointer to its multibyte form. Improve display of the character + in octal and display also its hex code. + + * character.c (char_string): Use %x to display the (unsigned) + codepoint of an invalid character, to avoid displaying a bogus + negative value. + + * font.c (check_otf_features): Pass SDATA of SYMBOL_NAME to + `error', not SYMBOL_NAME itself. + + * coding.c (Fencode_sjis_char, Fencode_big5_char): Use %c for + character arguments to `error'. + + * charset.c (check_iso_charset_parameter): Fix incorrect argument + to `error' in error message about FINAL_CHAR argument. Make sure + FINAL_CHAR is a character, and use %c when it is passed as + argument to `error'. + + 2011-04-23 Eli Zaretskii + + * s/ms-w32.h (localtime): Redirect to sys_localtime. + + * w32.c: Include . + (sys_localtime): New function. + + 2011-04-23 Chong Yidong + + * xdisp.c (init_xdisp): Initialize echo_area_window (Bug#6451). + + * buffer.c (syms_of_buffer): Doc fix (Bug#6902). + + 2011-04-23 Samuel Thibault (tiny change) + + * sysdep.c (wait_for_termination): On GNU Hurd, kill returns -1 on + zombies (Bug#8467). + + 2011-04-19 Eli Zaretskii + + * syntax.h (SETUP_SYNTAX_TABLE_FOR_OBJECT): Fix setting of + gl_state.e_property when gl_state.object is Qt. + + * insdel.c (make_gap_larger): Remove limitation of buffer size + to <= INT_MAX. + + 2011-04-18 Chong Yidong + + * xdisp.c (lookup_glyphless_char_display) + (produce_glyphless_glyph): Handle cons cell entry in + glyphless-char-display. + (Vglyphless_char_display): Document it. + + * term.c (produce_glyphless_glyph): Handle cons cell entry in + glyphless-char-display. + + 2011-04-17 Chong Yidong + + * xdisp.c (get_next_display_element): Remove unnecessary ifdefs. + + * termhooks.h (FRAME_WINDOW_P): Remove duplicated definitions. + + * dispextern.h (FACE_SUITABLE_FOR_ASCII_CHAR_P): Add missing + definition for no-X builds. + + 2011-04-16 Paul Eggert + + Static checks with GCC 4.6.0 and non-default toolkits. + + * s/sol2-6.h, s/unixware.h (PTY_TTY_NAME_SPRINTF): Protoize decl. + + * process.c (keyboard_bit_set): Define only if SIGIO. + (send_process_trap): Mark it with NO_RETURN if it doesn't return. + (send_process): Repair possible setjmp clobbering. + + * s/usg5-4-common.h (SETUP_SLAVE_PTY): Don't pass extra arg to 'fatal'. + + * eval.c: Include , for vsnprintf on non-GNU/Linux hosts. + + * data.c (arith_error): Mark with NO_RETURN if it doesn't return. + + * alloc.c (bytes_used_when_full, SPARE_MEMORY, BYTES_USED): + Define only if needed. + + * sysdep.c (_FILE_OFFSET_BITS): Make this hack even uglier + by pacifying GCC about it. Maybe it's time to retire it? + * xfaces.c (USG, __TIMEVAL__): Likewise. + + * dispextern.h (struct redisplay_interface): Rename param + to avoid shadowing. + * termhooks.h (struct terminal): Likewise. + * xterm.c (xembed_send_message): Likewise. + + * insdel.c (make_gap_smaller): Define only if + USE_MMAP_FOR_BUFFERS || REL_ALLOC || DOUG_LEA_MALLOC. + + * keyboard.c (read_char): Make a var volatile so longjmp won't clobber + it. + + * emacs.c (MAX_HEAP_BSS_DIFF, my_edata): Move to where they're used, + so that we aren't warned about unused symbols. + + * xfns.c (Fx_file_dialog): Rename local to avoid shadowing. + + * xdisp.c (x_produce_glyphs): Mark var as initialized (Bug#8512). + + * xfns.c (x_real_positions): Mark locals as initialized. + + * xmenu.c (xmenu_show): Don't use uninitialized vars. + + * xterm.c: Fix problems found by static analysis with other toolkits. + (toolkit_scroll_bar_interaction): Define and use only if USE_X_TOOLKIT. + (x_dispatch_event): Declare static if USE_GTK, and + define if USE_GTK || USE_X_TOOLKIT. + (SET_SAVED_BUTTON_EVENT): Define only if USE_X_TOOLKIT || USE_GTK. + * xterm.h (x_dispatch_event): Extern only if USE_X_TOOLKIT. + * xterm.c, xterm.h (x_mouse_leave): Bring this function back, but only + if defined HAVE_MENUS && !defined USE_X_TOOLKIT && !defined USE_GTK. + + * xmenu.c (menu_help_callback): Pointer type fixes. + Use const pointers when pointing at readonly data. Avoid pointer + signedness clashes. + (FALSE): Remove unused macro. + (update_frame_menubar): Remove unused decl. + + * xfns.c (Fx_hide_tip): Move locals to avoid shadowing. + + * menu.c (push_submenu_start, push_submenu_end): Do not define unless + USE_X_TOOLKIT || USE_GTK || HAVE_NS || defined HAVE_NTGUI. + (single_menu_item): Rename local to avoid shadowing. + + * keyboard.c (make_lispy_event): Remove unused local var. + + * frame.c, frame.h (x_get_resource_string): Bring this back, but + only if HAVE_X_WINDOWS && !USE_X_TOOLKIT. + + * bitmaps: Change bitmaps from unsigned char back to the X11 + compatible char. Avoid the old compiler warnings about + out-of-range initializers by using, for example, '\xab' rather + than 0xab. + + * xgselect.c (xgselect_initialize): Check vs interface + even if ! (defined (USE_GTK) || defined (HAVE_GCONF)). + + * xmenu.c (xmenu_show): Rename parm to avoid shadowing. + + * xterm.c (x_create_toolkit_scroll_bar): Use const * for pointers + to read-only memory. + + * fns.c (vector): Remove; this old hack is no longer needed. + + * xsmfns.c (create_client_leader_window): Rename shadowing arg. + Remove unused var. + (gdk_x11_set_sm_client_id) [!USE_GTK]: Don't define. + + * xrdb.c (x_load_resources): Omit unused local. + + * xfns.c (free_frame_menubar, atof): Remove duplicate decls. + (x_window): Rename locals to avoid shadowing. + (USG): Use the kludged USG macro, to pacify gcc. + + * xterm.c (x_alloc_nearest_color_for_widget): Remove; unused. + (x_term_init): Remove local to avoid shadowing. + + * xfns.c, xterm.c (_XEditResCheckMessages): Protoize decl. + + * xdisp.c, dispextern.h (set_vertical_scroll_bar): Now extern if + USE_TOOLKIT_SCROLL_BARS && !USE_GTK, as xterm.c needs it then. + + 2011-04-16 Eli Zaretskii + + * gnutls.c (Fgnutls_boot): Don't pass Lisp_Object to `error'. + + Fix regex.c, syntax.c and friends for buffers > 2GB. + * syntax.h (struct gl_state_s): Declare character position members + EMACS_INT. + + * syntax.c (update_syntax_table): Declare 2nd argument EMACS_INT. + + * textprop.c (verify_interval_modification, interval_of): Declare + arguments EMACS_INT. + + * intervals.c (adjust_intervals_for_insertion): Declare arguments + EMACS_INT. + + * intervals.h (CHECK_TOTAL_LENGTH): Cast to EMACS_INT, not `int'. + + * indent.c (Fvertical_motion): Local variable it_start is now + EMACS_INT. + + * regex.c (re_match, re_match_2, re_match_2_internal) + (bcmp_translate, regcomp, regexec, print_double_string) + (group_in_compile_stack, re_search, re_search_2, regex_compile) + (re_compile_pattern, re_exec): Declare arguments and local + variables `size_t' and `ssize_t' and return values `regoff_t', as + appropriate. + (POP_FAILURE_REG_OR_COUNT) : Declare `long'. + (CHECK_INFINITE_LOOP) : Declare `ssize_t'. + : `size' and `avail' are now `size_t'. + + * regex.h : Use ssize_t, not int. + (re_search, re_search_2, re_match, re_match_2): Arguments that + specify buffer/string position and length are now ssize_t and + size_t. Return type is regoff_t. + + 2011-04-16 Ben Key + + * nsfont.m: Fixed bugs in ns_get_family and + ns_descriptor_to_entity that were caused by using free to + deallocate memory blocks that were allocated by xmalloc (via + xstrdup). This caused Emacs to crash when compiled with + XMALLOC_OVERRUN_CHECK defined (when Emacs was configured with + --enable-checking=xmallocoverrun). xfree is now used to + deallocate these memory blocks. + + 2011-04-15 Paul Eggert + + * sysdep.c (emacs_read): Remove unnecessary check vs MAX_RW_COUNT. + + emacs_write: Accept and return EMACS_INT for sizes. + See http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00514.html + et seq. + * gnutls.c, gnutls.h (emacs_gnutls_read, emacs_gnutls_write): + Accept and return EMACS_INT. + (emacs_gnutls_write): Return the number of bytes written on + partial writes. + * sysdep.c, lisp.h (emacs_read, emacs_write): Likewise. + (emacs_read, emacs_write): Remove check for negative size, as the + Emacs source code has been audited now. + * sysdep.c (MAX_RW_COUNT): New macro, to work around kernel bugs. + (emacs_read, emacs_write): Use it. + * process.c (send_process): Adjust to the new signatures of + emacs_write and emacs_gnutls_write. Do not attempt to store + a byte offset into an 'int'; it might overflow. + See http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00483.html + + * sound.c: Don't assume sizes fit in 'int'. + (struct sound_device.period_size, alsa_period_size): + Return EMACS_INT, not int. + (struct sound_device.write, vox_write, alsa_write): + Accept EMACS_INT, not int. + (wav_play, au_play): Use EMACS_INT to store sizes and to + record read return values. + + 2011-04-15 Ben Key + + * keyboard.c (Qundefined): Don't declare static since it is used + in nsfns.m. + * xfaces.c (Qbold, Qexpanded, Qitalic, Qcondensed): Don't declare + static since they are used in nsfont.m. + + 2011-04-15 Stefan Monnier + + * process.c (Qprocessp): Don't declare static. + * lisp.h (Qprocessp): Declare again. + + 2011-04-15 Juanma Barranquero + + * font.c (Qopentype): Don't make static (used from w32uniscribe.c). + + 2011-04-14 Paul Eggert + + Improve C-level modularity by making more things 'static'. + + Don't publish debugger-only interfaces to other modules. + * lisp.h (safe_debug_print, debug_output_compilation_hack): + (verify_bytepos, count_markers): Move decls to the only modules + that need them. + * region-cache.h (pp_cache): Likewise. + * window.h (check_all_windows): Likewise. + * marker.c, print.c, region-cache.c, window.c: Decls moved here. + + * sysdep.c (croak): Now static, if + defined TIOCNOTTY || defined USG5 || defined CYGWIN. + * syssignal.h (croak): Declare only if not static. + + * alloc.c (refill_memory_reserve): Now static if + !defined REL_ALLOC || defined SYSTEM_MALLOC. + * lisp.h (refill_memory_reserve): Declare only if not static. + + * xsettings.c, xsettings.h (xsettings_get_system_normal_font): + Define only if USE_LUCID. + + * xrdb.c (x_customization_string, x_rm_string): Now static. + + * xmenu.c (x_menu_wait_for_event): Export only if USE_MOTIF. + * xterm.h (x_menu_wait_for_event): Declare only if USE_MOTIF. + + * xdisp.c (draw_row_with_mouse_face): Now static. + * dispextern.h (draw_row_with_mouse_fave): Remove decl. + + * window.h (check_all_windows): Mark externally visible. + + * window.c (window_deletion_count): Now static. + + * undo.c: Make symbols static if they're not exported. + (last_undo_buffer, last_boundary_position, pending_boundary): + Now static. + + * textprop.c (interval_insert_behind_hooks): Now static. + (interval_insert_in_front_hooks): Likewise. + + * term.c: Make symbols static if they're not exported. + (tty_turn_off_highlight, get_tty_terminal, max_frame_cols): + (max_frame_lines, tty_set_terminal_modes): + (tty_reset_terminal_modes, tty_turn_off_highlight): + (get_tty_terminal): Now static. + (term_mouse_moveto): Do not define if HAVE_WINDOW_SYSTEM. + * termhooks.h (term_mouse_moveto): Do not declare if + HAVE_WINDOW_SYSTEM. + * dispextern.h (tty_set_terminal_modes, tty_reset_terminal_modes): + (tty_turn_off_highlight, get_tty_terminal): Remove decls. + + * sysdep.c: Make symbols static if they're not exported. + (emacs_get_tty, emacs_set_tty, old_fcntl_flags, old_fcntl_owner): + Now static. + (sigprocmask_set, full_mask): Remove; unused. + (wait_debugging): Mark as visible. + * syssignal.h (SIGFULLMASK, full_mask): Remove decls. + * systty.h (emacs_get_tty, emacs_set_tty): Remove decls. + + * syntax.c (syntax_temp): Define only if !__GNUC__. + + * sound.c (current_sound_device, current_sound): Now static. + + * search.c (searchbufs, searchbuf_head): Now static. + + * scroll.c (scroll_cost): Remove; unused. + * dispextern.h (scroll_cost): Remove decl. + + * region-cache.h (pp_cache): Mark as externally visible. + + * process.c: Make symbols static if they're not exported. + (process_tick, update_tick, create_process, chan_process): + (Vprocess_alist, proc_buffered_char, datagram_access): + (fd_callback_data, send_process_frame, process_sent_to): Now static. + (deactivate_process): Mark defn as static, as well as decl. + * lisp.h (create_process): Remove decl. + * process.h (chan_process, Vprocess_alist): Remove decls. + + * print.c: Make symbols static if they're not exported. + (print_depth, new_backquote_output, being_printed, print_buffer): + (print_buffer_size, print_buffer_pos, print_buffer_pos_byte): + (print_interval, print_number_index, initial_stderr_stream): + Now static. + * lisp.h (Fprinc): Remove decl. + (debug_output_compilation_hack): Mark as externally visible. + + * sysdep.c (croak): Move decl from here to syssignal.h. + * syssignal.h (croak): Put it here, so the API can be checked when + 'croak' is called from dissociate_if_controlling_tty. + + * minibuf.c: Make symbols static if they're not exported. + (minibuf_save_list, choose_minibuf_frame): Now static. + * lisp.h (choose_minibuf_frame): Remove decl. + + * lisp.h (verify_bytepos, count_markers): Mark as externally visible. + + * lread.c: Make symbols static if they're not exported. + (read_objects, initial_obarray, oblookup_last_bucket_number): + Now static. + (make_symbol): Remove; unused. + * lisp.h (initial_obarray, make_symbol): Remove decls. + + * keyboard.c: Make symbols static if they're not exported. + (single_kboard, recent_keys_index, total_keys, recent_keys): + (this_command_key_count_reset, raw_keybuf, raw_keybuf_count): + (this_single_command_key_start, echoing, last_auto_save): + (read_key_sequence_cmd, dribble, recursive_edit_unwind): + (command_loop, echo_now, keyboard_init_hook, help_char_p): + (quit_throw_to_read_char, command_loop_2, top_level_1, poll_timer): + (Vlispy_mouse_stem, double_click_count): + Now static. + (force_auto_save_soon): Define only if SIGDANGER. + (ignore_mouse_drag_p): Now static if + !defined HAVE_WINDOW_SYSTEM || defined USE_GTK || defined HAVE_NS. + (print_help): Remove; unused. + (stop_character, last_timer_event): Mark as externally visible. + * keyboard.h (ignore_mouse_drag_p): Declare only if + defined HAVE_WINDOW_SYSTEM && !defined USE_GTK && !defined HAVE_NS. + (echo_now, help_char_p, quit_throw_to_read_char): Remove decls. + * lisp.h (echoing): Remove decl. + (force_auto_save_soon): Declare only if SIGDANGER. + * xdisp.c (redisplay_window): Simplify code, to make it more + obvious that ignore_mouse_drag_p is not accessed if !defined + USE_GTK && !defined HAVE_NS. + + * intervals.c: Make symbols static if they're not exported. + (merge_properties_sticky, merge_interval_right, delete_interval): + Now static. + * intervals.h (merge_interval_right, delete_interval): Remove decls. + + * insdel.c: Make symbols static if they're not exported. + However, leave prepare_to_modify_buffer alone. It's never + called from outside this function, but that appears to be a bug. + (combine_after_change_list, combine_after_change_buffer): + (adjust_after_replace, signal_before_change): Now static. + (adjust_after_replace_noundo): Remove; unused. + * lisp.h (adjust_after_replace, adjust_after_replace_noundo): + (signal_before_change): Remove decls. + + * indent.c (val_compute_motion, val_vmotion): Now static. + + * image.c: Make symbols static if they're not exported. + * dispextern.h (x_create_bitmap_from_xpm_data): Do not declare + if USE_GTK. + * image.c (x_create_bitmap_from_xpm_data): Do not define if USE_GTK. + (xpm_color_cache, ct_table, ct_colors_allocated): Now static. + + * fringe.c (standard_bitmaps): Now static. + (max_used_fringe_bitmap): Now static, unless HAVE_NS. + + * frame.c: Make symbols static if they're not exported. + (x_report_frame_params, make_terminal_frame): Now static. + (get_frame_param): Now static, unless HAVE_NS. + (x_fullscreen_adjust): Define if WINDOWSNT, not if HAVE_WINDOW_SYSTEM. + (x_get_resource_string): Remove; not used. + * frame.h (make_terminal_frame, x_report_frame_params): + (x_get_resource_string); Remove decls. + (x_fullscreen_adjust): Declare only if WINDOWSNT. + * lisp.h (get_frame_param): Declare only if HAVE_NS. + + * font.c, fontset.c: Make symbols static if they're not exported. + * dispextern.h (FACE_SUITABLE_FOR_ASCII_CHAR_P): New macro. + (FACE_SUITABLE_FOR_CHAR_P): Use it. + * font.c (font_close_object): Now static. + * font.h (font_close_object): Remove. + * fontset.c (FONTSET_OBJLIST): Remove. + (free_realized_fontset) #if-0 the body, which does nothing. + (face_suitable_for_char_p): #if-0, as it's never called. + * fontset.h (face_suitable_for_char_p): Remove decl. + * xfaces.c (face_at_string_position): Use + FACE_SUITABLE_FOR_ASCII_CHAR_P, not FACE_SUITABLE_FOR_CHAR_P, + since 0 is always ASCII. + + * fns.c (weak_hash_tables): Now static. + + * fileio.c: Make symbols static if they're not exported. + (auto_saving, auto_save_mode_bits, auto_save_error_occurred): + (Vwrite_region_annotation_buffers): Now static. + + * eval.c: Make symbols static if they're not exported. + (backtrace_list, lisp_eval_depth, when_entered_debugger): Now static. + * lisp.h (backtrace_list): Remove decl. + + * emacs.c: Make symbols static if they're not exported. + (malloc_state_ptr, malloc_using_checking, syms_of_emacs): + (fatal_error_code, fatal_error_signal_hook, standard_args): + Now static. + (fatal_error_signal): Now static, unless FLOAT_CATCH_SIGKILL. + (DEFINE_DUMMY_FUNCTION): Mark function as externally visible. + (__CTOR_LIST__, __DTOR_LIST__): Now externally visible. + * lisp.h (fatal_error_signal_hook): Remove decl. + (fatal_error_signal): Declare only if FLOAT_CATCH_SIGKILL. + + * editfns.c: Move a (normally-unused) function to its only use. + * editfns.c, lisp.h (get_operating_system_release): Remove. + * process.c (init_process) [DARWIN_OS]: Do it inline, as it is not + worth the hassle of breaking this out. + + * xterm.c: Make symbols static if they're not exported. + (x_raise_frame, x_lower_frame, x_wm_set_window_state): + (x_wm_set_icon_pixmap, x_initialize, XTread_socket_fake_io_error): + (x_destroy_window, x_delete_display): + Now static. + (x_dispatch_event): Now static if ! (USE_MOTIF || USE_X_TOOLKIT). + (x_mouse_leave): Remove; unused. + * xterm.h (x_display_info_for_name, x_raise_frame, x_lower_frame): + (x_destroy_window, x_wm_set_window_state, x_wm_set_icon_pixmap): + (x_delete_display, x_initialize, x_set_border_pixel, x_screen_planes): + Remove decls. + (x_mouse_leave): Declare only if WINDOWSNT. + (x_dispatch_event): Declare only if USE_MOTIF or USE_X_TOOLKIT. + (xic_create_fontsetname): Declare only if HAVE_X_WINDOWS && + USE_X_TOOLKIT. + + * ftxfont.c: Make symbols static if they're not exported. + (ftxfont_driver): Export only if !defined HAVE_XFT && def8ined + HAVE_FREETYPE. + * font.h (ftxfont_driver): Likewise. + + * xfns.c: Make symbols static if they're not exported. + (x_last_font_name, x_display_info_for_name): + (x_set_foreground_color, x_set_background_color, x_set_mouse_color): + (x_set_cursor_color, x_set_border_pixel, x_set_border_color): + (x_set_cursor_type, x_set_icon_type, x_set_icon_name): + (x_set_scroll_bar_foreground, x_set_scroll_bar_background): + (x_explicitly_set_name, x_set_title, xic_defaut_fontset, tip_timer): + (last_show_tip_args): Now static. + (xic_defaut_fontset, xic_create_fontsetname): Define only if + defined HAVE_X_WINDOWS && defined USE_X_TOOLKIT + (x_screen_planes): Remove; unused. + * dispextern.h (x_screen_planes): Remove decl. + + * dispnew.c: Make symbols static if they're not exported. + * dispextern.h (redraw_garbaged_frames, scrolling): + (increment_row_positions): Remove. + * dispnew.c (new_glyph_matrix, increment_row_positions, scrolling): + (delayed_size_change, glyph_matrix_count, glyph_pool_count): + Now static. + (redraw_garbaged_frames): Remove; unused. + + * xfaces.c: Make symbols static if they're not exported. + * dispextern.h (ascii_face_of_lisp_face, free_realized_face): + Remove decls. + * xterm.h (defined_color): Remove decls. + (x_free_dpy_colors): Declare only if USE_X_TOOLKIT. + * xfaces.c (tty_suppress_bold_inverse_default_colors_p): + (menu_face_changed_default, defined_color, free_realized_face): + (x_free_dpy_colors): Define only if USE_X_TOOLKIT. + (ascii_face_of_lisp_face): Remove; unused. + + * xdisp.c: Make symbols static if they're not exported. + * dispextern.h (scratch_glyph_row, window_box_edges): + (glyph_to_pixel_coords, set_cursor_from_row): + (get_next_display_element, set_iterator_to_next): + (highlight_trailing_whitespace, frame_to_window_pixel_xy): + (show_mouse_face): Remove decls + * frame.h (message_buf_print): Likewise. + * lisp.h (pop_message, set_message, check_point_in_composition): + Likewise. + * xterm.h (set_vertical_scroll_bar): Likewise. + * xdisp.c (list_of_error, Vmessage_stack, line_number_displayed): + (message_buf_print, scratch_glyph_row, displayed_buffer): + (set_iterator_to_next, pop_message, set_message, set_cursor_from_row): + (get_next_display_element, show_mouse_face, window_box_edges): + (frame_to_window_pixel_xy, check_point_in_composition): + (set_vertical_scroll_bar, highlight_trailing_whitespace): Now static. + (glyph_to_pixel_coords): Remove; unused. + + * dired.c (file_name_completion): Now static. + + * dbusbind.c (xd_in_read_queued_messages): Now static. + + * lisp.h (circular_list_error, FOREACH): Remove; unused. + * data.c (circular_list_error): Remove. + + * commands.h (last_point_position, last_point_position_buffer): + (last_point_position_window): Remove decls. + * keyboard.c: Make these variables static. + + * coding.h (coding, code_convert_region, encode_coding_gap): Remove + decls. + * coding.c (Vsjis_coding_system, Vbig5_coding_system): + (iso_code_class, detect_coding, code_convert_region): Now static. + (encode_coding_gap): Remove; unused. + + * chartab.c (chartab_chars, chartab_bits): Now static. + + * charset.h (charset_iso_8859_1): Remove decl. + * charset.c (charset_iso_8859_1, charset_emacs, map_charset_for_dump): + Now static. + + * ccl.h (check_ccl_update, Vccl_program_table): Remove decls. + * ccl.c (Vccl_program_table): Now static. + (check_ccl_update): Remove; unused. + + * category.c (SET_CATEGORY_SET, set_category_set): Move here. + * category.h: ... from here. + * category.c (check_category_table, set_category_set): Now static. + + * casetab.c (Vascii_upcase_table, Vascii_eqv_table): Now static. + * lisp.h: Remove these decls. + + * buffer.c (buffer_count): Remove unused var. + + * bidi.c (bidi_dump_cached_states): Mark as externally visible, + so that it's not optimized away. + (bidi_ignore_explicit_marks_for_paragraph_level): Likewise. + * dispextern.h (bidi_dump_cached_states): Remove, since it's + exported only to the debugger. + + * atimer.c (alarm_signal_handler, run_all_atimers): Now static. + * atimer.h (run_all_atimers): Removed; not exported. + + font.c: Make copy_font_spec and merge_font_spec ordinary C functions. + * font.c (copy_font_spec): Rename from Fcopy_font_spec, since it + was inaccessible from Lisp. + (merge_font_spec): Likewise, renaming from Fmerge_font_spec. + * font.c, font.h, fontset.c, xfaces.c, xfont.c: Change all uses. + + alloc.c: Import and export fewer symbols, and remove unused items. + * lisp.h (suppress_checking, die): Declare only if ENABLE_CHECKING + is defined. + (suppress_checking): Add EXTERNALLY_VISIBLE attribute, so that + it's not optimized away by whole-program optimization. + (message_enable_multibyte, free_misc): Remove. + (catchlist, handlerlist, mark_backtrace): + Declare only if BYTE_MARK_STACK. + (mark_byte_stack): Likewise, fixing a ifdef-vs-if typo. + * alloc.c (pure): Export only if VIRT_ADDR_VARIES is defined. + (message_enable_multibyte): Remove decl. + (free_misc, interval_free_list, float_block, float_block_index): + (n_float_blocks, float_free_list, cons_block, cons_block_index): + (cons_free_list, last_marked_index): + Now static. + (suppress_checking, die): Define only if ENABLE_CHECKING is defined. + * eval.c (catchlist, handlerlist): Export only if BYTE_MARK_STACK. + (mark_backtrace): Define only if BYTE_MARK_STACK. + * xdisp.c (message_enable_multibyte): Now static. + + Declare Lisp_Object Q* variables to be 'static' if not exported. + This makes it easier for human readers (and static analyzers) + to see whether these variables are used from other modules. + * alloc.c, buffer.c, bytecode.c, callint.c, casetab.c, category.c: + * ccl.c, character.c, charset.c, cmds.c, coding.c, composite.c: + * data.c, dbusbind.c, dired.c, editfns.c, eval.c, fileio.c, fns.c: + * font.c, frame.c, fringe.c, ftfont.c, image.c, keyboard.c, keymap.c: + * lread.c, macros.c, minibuf.c, print.c, process.c, search.c: + * sound.c, syntax.c, textprop.c, window.c, xdisp.c, xfaces.c, xfns.c: + * xmenu.c, xselect.c: + Declare Q* vars static if they are not used in other modules. + * ccl.h, character.h, charset.h, coding.h, composite.h, font.h: + * frame.h, intervals.h, keyboard.h, lisp.h, process.h, syntax.h: + Remove decls of unexported vars. + * keyboard.h (EVENT_HEAD_UNMODIFIED): Remove now-unused macro. + + * lisp.h (DEFINE_FUNC): Make sname 'static'. + + Make Emacs functions such as Fatom 'static' by default. + This makes it easier for human readers (and static analyzers) + to see whether these functions can be called from other modules. + DEFUN now defines a static function. To make the function external + so that it can be used in other C modules, use the new macro DEFUE. + * lisp.h (Funibyte_char_to_multibyte, Fsyntax_table_p): + (Finit_image_library): + (Feval_region, Fbacktrace, Ffetch_bytecode, Fswitch_to_buffer): + (Ffile_executable_p, Fmake_symbolic_link, Fcommand_execute): + (Fget_process, Fdocumentation_property, Fbyte_code, Ffile_attributes): + Remove decls, since these functions are now static. + (Funintern, Fget_internal_run_time): New decls, since these functions + were already external. + + * alloc.c, buffer.c, callint.c, callproc.c, casefiddle.c, casetab.c: + * ccl.c, character.c, chartab.c, cmds.c, coding.c, data.c, dispnew.c: + * doc.c, editfns.c, emacs.c, eval.c, fileio.c, filelock.c, floatfns.c: + * fns.c, font.c, fontset.c, frame.c, image.c, indent.c: + * keyboard.c, keymap.c, lread.c: + * macros.c, marker.c, menu.c, minibuf.c, print.c, process.c, search.c: + * syntax.c, term.c, terminal.c, textprop.c, undo.c: + * window.c, xdisp.c, xfaces.c, xfns.c, xmenu.c, xsettings.c: + Mark functions with DEFUE instead of DEFUN, + if they are used in other modules. + * buffer.c (Fset_buffer_major_mode, Fdelete_overlay): New forward + decls for now-static functions. + * buffer.h (Fdelete_overlay): Remove decl. + * callproc.c (Fgetenv_internal): Mark as internal. + * composite.c (Fremove_list_of_text_properties): Remove decl. + (Fcomposition_get_gstring): New forward static decl. + * composite.h (Fcomposite_get_gstring): Remove decl. + * dired.c (Ffile_attributes): New forward static decl. + * doc.c (Fdocumntation_property): New forward static decl. + * eval.c (Ffetch_bytecode): New forward static decl. + (Funintern): Remove extern decl; now in .h file where it belongs. + * fileio.c (Fmake_symbolic_link): New forward static decl. + * image.c (Finit_image_library): New forward static decl. + * insdel.c (Fcombine_after_change_execute): Make forward decl static. + * intervals.h (Fprevious_property_change): + (Fremove_list_of_text_properties): Remove decls. + * keyboard.c (Fthis_command_keys): Remove decl. + (Fcommand_execute): New forward static decl. + * keymap.c (Flookup_key): New forward static decl. + (Fcopy_keymap): Now static. + * keymap.h (Flookup_key): Remove decl. + * process.c (Fget_process): New forward static decl. + (Fprocess_datagram_address): Mark as internal. + * syntax.c (Fsyntax_table_p): New forward static decl. + (skip_chars): Remove duplicate decl. + * textprop.c (Fprevious_property_change): New forward static decl. + * window.c (Fset_window_fringes, Fset_window_scroll_bars): + Now internal. + (Fset_window_margins, Fset_window_vscroll): New forward static decls. + * window.h (Fset_window_vscroll, Fset_window_margins): Remove decls. + + * editfns.c (Fformat): Remove unreachable code. + 2011-04-14 Andreas Schwab * fileio.c (Finsert_file_contents): Fix typo in 2005-05-13 diff --cc src/buffer.c index e9bed681cc5,05bd129976f..ae2000ae211 --- a/src/buffer.c +++ b/src/buffer.c @@@ -119,23 -121,23 +121,25 @@@ static Lisp_Object Qchange_major_mode_h Lisp_Object Qfirst_change_hook; Lisp_Object Qbefore_change_functions; Lisp_Object Qafter_change_functions; - Lisp_Object Qucs_set_table_for_input; + static Lisp_Object Qucs_set_table_for_input; - Lisp_Object Qfundamental_mode, Qmode_class, Qpermanent_local; - Lisp_Object Qpermanent_local_hook; + static Lisp_Object Qfundamental_mode, Qmode_class, Qpermanent_local; + static Lisp_Object Qpermanent_local_hook; - Lisp_Object Qprotected_field; + static Lisp_Object Qprotected_field; - Lisp_Object QSFundamental; /* A string "Fundamental" */ + static Lisp_Object QSFundamental; /* A string "Fundamental" */ - Lisp_Object Qkill_buffer_hook; - Lisp_Object Qbuffer_list_update_hook; + static Lisp_Object Qkill_buffer_hook; ++static Lisp_Object Qbuffer_list_update_hook; - Lisp_Object Qget_file_buffer; + static Lisp_Object Qget_file_buffer; - Lisp_Object Qoverlayp; + static Lisp_Object Qoverlayp; - Lisp_Object Qpriority, Qclone_number, Qevaporate, Qbefore_string, Qafter_string; + Lisp_Object Qpriority, Qbefore_string, Qafter_string; -static Lisp_Object Qevaporate; ++ ++static Lisp_Object Qclone_number, Qevaporate; Lisp_Object Qmodification_hooks; Lisp_Object Qinsert_in_front_hooks; diff --cc src/lisp.h index 49bd82a0822,66f5c962be8..80e2d9f71ac --- a/src/lisp.h +++ b/src/lisp.h @@@ -2953,9 -2978,7 +2978,8 @@@ EXFUN (Fset_buffer, 1) extern Lisp_Object set_buffer_if_live (Lisp_Object); EXFUN (Fbarf_if_buffer_read_only, 0); EXFUN (Fcurrent_buffer, 0); - EXFUN (Fswitch_to_buffer, 2); EXFUN (Fother_buffer, 3); +extern Lisp_Object other_buffer_safely (Lisp_Object); EXFUN (Foverlay_get, 2); EXFUN (Fbuffer_modified_p, 1); EXFUN (Fset_buffer_modified_p, 1); diff --cc src/window.c index a0d6f1010c2,4dbee41c5f4..a288bdd864a --- a/src/window.c +++ b/src/window.c @@@ -50,14 -50,11 +50,14 @@@ along with GNU Emacs. If not, see buffer); - SET_TEXT_POS_FROM_MARKER (top, w->start); + if (NILP (frame_or_window)) + window = SELECTED_FRAME ()->root_window; + else if (WINDOWP (frame_or_window)) + window = XFRAME (WINDOW_FRAME (XWINDOW (frame_or_window)))->root_window; + else + { + CHECK_LIVE_FRAME (frame_or_window); + window = XFRAME (frame_or_window)->root_window; + } - if (EQ (pos, Qt)) - posint = -1; - else if (!NILP (pos)) + while (NILP (XWINDOW (window)->buffer)) { - CHECK_NUMBER_COERCE_MARKER (pos); - posint = XINT (pos); + if (! NILP (XWINDOW (window)->hchild)) + window = XWINDOW (window)->hchild; + else if (! NILP (XWINDOW (window)->vchild)) + window = XWINDOW (window)->vchild; + else + abort (); } - else if (w == XWINDOW (selected_window)) - posint = PT; - else - posint = XMARKER (w->pointm)->charpos; - /* If position is above window start or outside buffer boundaries, - or if window start is out of range, position is not visible. */ - if ((EQ (pos, Qt) - || (posint >= CHARPOS (top) && posint <= BUF_ZV (buf))) - && CHARPOS (top) >= BUF_BEGV (buf) - && CHARPOS (top) <= BUF_ZV (buf) - && pos_visible_p (w, posint, &x, &y, &rtop, &rbot, &rowh, &vpos) - && (fully_p = !rtop && !rbot, (!NILP (partially) || fully_p))) - in_window = Qt; + return window; +} - if (!NILP (in_window) && !NILP (partially)) +DEFUN ("frame-selected-window", Fframe_selected_window, + Sframe_selected_window, 0, 1, 0, + doc: /* Return the selected window of FRAME_OR_WINDOW. +If omitted, FRAME_OR_WINDOW defaults to the currently selected frame. +Else if FRAME_OR_WINDOW denotes any window, return the selected window +of that window's frame. If FRAME_OR_WINDOW denotes a live frame, return +the selected window of that frame. */) + (Lisp_Object frame_or_window) +{ + Lisp_Object window; + + if (NILP (frame_or_window)) + window = SELECTED_FRAME ()->selected_window; + else if (WINDOWP (frame_or_window)) + window = XFRAME (WINDOW_FRAME (XWINDOW (frame_or_window)))->selected_window; + else { - Lisp_Object part = Qnil; - if (!fully_p) - part = list4 (make_number (rtop), make_number (rbot), - make_number (rowh), make_number (vpos)); - in_window = Fcons (make_number (x), - Fcons (make_number (y), part)); + CHECK_LIVE_FRAME (frame_or_window); + window = XFRAME (frame_or_window)->selected_window; } - return in_window; + return window; } -DEFUN ("window-line-height", Fwindow_line_height, - Swindow_line_height, 0, 2, 0, - doc: /* Return height in pixels of text line LINE in window WINDOW. -If WINDOW is nil or omitted, use selected window. +DEFUN ("set-frame-selected-window", Fset_frame_selected_window, + Sset_frame_selected_window, 2, 3, 0, + doc: /* Set selected window of FRAME to WINDOW. +FRAME must be a live frame and defaults to the selected one. If FRAME +is the selected frame, this makes WINDOW the selected window. Optional +argument NORECORD non-nil means to neither change the order of recently +selected windows nor the buffer list. WINDOW must denote a live window. +Return WINDOW. */) + (Lisp_Object frame, Lisp_Object window, Lisp_Object norecord) +{ + if (NILP (frame)) + frame = selected_frame; -Return height of current line if LINE is omitted or nil. Return height of -header or mode line if LINE is `header-line' and `mode-line'. -Otherwise, LINE is a text line number starting from 0. A negative number -counts from the end of the window. + CHECK_LIVE_FRAME (frame); + CHECK_LIVE_WINDOW (window); -Value is a list (HEIGHT VPOS YPOS OFFBOT), where HEIGHT is the height -in pixels of the visible part of the line, VPOS and YPOS are the -vertical position in lines and pixels of the line, relative to the top -of the first text line, and OFFBOT is the number of off-window pixels at -the bottom of the text line. If there are off-window pixels at the top -of the (first) text line, YPOS is negative. + if (! EQ (frame, WINDOW_FRAME (XWINDOW (window)))) + error ("In `set-frame-selected-window', WINDOW is not on FRAME"); -Return nil if window display is not up-to-date. In that case, use -`pos-visible-in-window-p' to obtain the information. */) - (Lisp_Object line, Lisp_Object window) + if (EQ (frame, selected_frame)) + return Fselect_window (window, norecord); + else + return XFRAME (frame)->selected_window = window; +} + +DEFUN ("selected-window", Fselected_window, Sselected_window, 0, 0, 0, + doc: /* Return the selected window. +The selected window is the window in which the standard cursor for +selected windows appears and to which many commands apply. */) + (void) { - register struct window *w; - register struct buffer *b; - struct glyph_row *row, *end_row; - int max_y, crop, i, n; + return selected_window; +} - w = decode_window (window); +int window_select_count; - if (noninteractive - || w->pseudo_window_p) - return Qnil; +/* If select_window is called with inhibit_point_swap non-zero it will + not store point of the old selected window's buffer back into that + window's pointm slot. This is needed by Fset_window_configuration to + avoid that the display routine is called with selected_window set to + Qnil causing a subsequent crash. */ +static Lisp_Object +select_window (Lisp_Object window, Lisp_Object norecord, int inhibit_point_swap) +{ + register struct window *w; + register struct window *ow; + struct frame *sf; - CHECK_BUFFER (w->buffer); - b = XBUFFER (w->buffer); + CHECK_LIVE_WINDOW (window); - /* Fail if current matrix is not up-to-date. */ - if (NILP (w->window_end_valid) - || current_buffer->clip_changed - || current_buffer->prevent_redisplay_optimizations_p - || XFASTINT (w->last_modified) < BUF_MODIFF (b) - || XFASTINT (w->last_overlay_modified) < BUF_OVERLAY_MODIFF (b)) - return Qnil; + w = XWINDOW (window); + w->frozen_window_start_p = 0; - if (NILP (line)) + if (NILP (norecord)) { - i = w->cursor.vpos; - if (i < 0 || i >= w->current_matrix->nrows - || (row = MATRIX_ROW (w->current_matrix, i), !row->enabled_p)) - return Qnil; - max_y = window_text_bottom_y (w); - goto found_row; + ++window_select_count; + XSETFASTINT (w->use_time, window_select_count); + record_buffer (w->buffer); } - if (EQ (line, Qheader_line)) + if (EQ (window, selected_window) && !inhibit_point_swap) + return window; + + sf = SELECTED_FRAME (); + if (XFRAME (WINDOW_FRAME (w)) != sf) { - if (!WINDOW_WANTS_HEADER_LINE_P (w)) - return Qnil; - row = MATRIX_HEADER_LINE_ROW (w->current_matrix); - if (!row->enabled_p) - return Qnil; - return list4 (make_number (row->height), - make_number (0), make_number (0), - make_number (0)); + XFRAME (WINDOW_FRAME (w))->selected_window = window; + /* Use this rather than Fhandle_switch_frame + so that FRAME_FOCUS_FRAME is moved appropriately as we + move around in the state where a minibuffer in a separate + frame is active. */ + Fselect_frame (WINDOW_FRAME (w), norecord); + /* Fselect_frame called us back so we've done all the work already. */ + eassert (EQ (window, selected_window)); + return window; } + else + sf->selected_window = window; - if (EQ (line, Qmode_line)) + /* Store the current buffer's actual point into the + old selected window. It belongs to that window, + and when the window is not selected, must be in the window. */ + if (!inhibit_point_swap) { - row = MATRIX_MODE_LINE_ROW (w->current_matrix); - if (!row->enabled_p) - return Qnil; - return list4 (make_number (row->height), - make_number (0), /* not accurate */ - make_number (WINDOW_HEADER_LINE_HEIGHT (w) - + window_text_bottom_y (w)), - make_number (0)); + ow = XWINDOW (selected_window); + if (! NILP (ow->buffer)) + set_marker_both (ow->pointm, ow->buffer, + BUF_PT (XBUFFER (ow->buffer)), + BUF_PT_BYTE (XBUFFER (ow->buffer))); } - CHECK_NUMBER (line); - n = XINT (line); - - row = MATRIX_FIRST_TEXT_ROW (w->current_matrix); - end_row = MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w); - max_y = window_text_bottom_y (w); - i = 0; + selected_window = window; - while ((n < 0 || i < n) - && row <= end_row && row->enabled_p - && row->y + row->height < max_y) - row++, i++; + Fset_buffer (w->buffer); - if (row > end_row || !row->enabled_p) - return Qnil; + BVAR (XBUFFER (w->buffer), last_selected_window) = window; - if (++n < 0) - { - if (-n > i) - return Qnil; - row += n; - i += n; - } + /* Go to the point recorded in the window. + This is important when the buffer is in more + than one window. It also matters when + redisplay_window has altered point after scrolling, + because it makes the change only in the window. */ + { + register EMACS_INT new_point = marker_position (w->pointm); + if (new_point < BEGV) + SET_PT (BEGV); + else if (new_point > ZV) + SET_PT (ZV); + else + SET_PT (new_point); + } - found_row: - crop = max (0, (row->y + row->height) - max_y); - return list4 (make_number (row->height + min (0, row->y) - crop), - make_number (i), - make_number (row->y), - make_number (crop)); + windows_or_buffers_changed++; + return window; } +DEFUN ("select-window", Fselect_window, Sselect_window, 1, 2, 0, + doc: /* Select WINDOW. Most editing will apply to WINDOW's buffer. +Also make WINDOW's buffer current and make WINDOW the frame's selected +window. Return WINDOW. + +Optional second arg NORECORD non-nil means do not put this buffer at the +front of the buffer list and do not make this window the most recently +selected one. +Note that the main editor command loop sets the current buffer to the +buffer of the selected window before each command. */) + (register Lisp_Object window, Lisp_Object norecord) +{ + return select_window (window, norecord, 0); +} -static struct window * -decode_window (register Lisp_Object window) +DEFUN ("window-clone-number", Fwindow_clone_number, Swindow_clone_number, 0, 1, 0, + doc: /* Return WINDOW's clone number. +WINDOW can be any window and defaults to the selected one. */) + (Lisp_Object window) { - if (NILP (window)) - return XWINDOW (selected_window); + return decode_any_window (window)->clone_number; +} - CHECK_LIVE_WINDOW (window); - return XWINDOW (window); +DEFUN ("window-buffer", Fwindow_buffer, Swindow_buffer, 0, 1, 0, + doc: /* Return the buffer that WINDOW is displaying. +WINDOW can be any window and defaults to the selected one. +If WINDOW is an internal window return nil. */) + (Lisp_Object window) +{ + return decode_any_window (window)->buffer; } -static struct window * -decode_any_window (register Lisp_Object window) +DEFUN ("window-parent", Fwindow_parent, Swindow_parent, 0, 1, 0, + doc: /* Return WINDOW's parent window. +WINDOW can be any window and defaults to the selected one. +Return nil if WINDOW has no parent. */) + (Lisp_Object window) { - if (NILP (window)) - return XWINDOW (selected_window); + return decode_any_window (window)->parent; +} - CHECK_WINDOW (window); - return XWINDOW (window); +DEFUN ("window-vchild", Fwindow_vchild, Swindow_vchild, 0, 1, 0, + doc: /* Return WINDOW's first vertical child window. +WINDOW can be any window and defaults to the selected one. +Return nil if WINDOW has no vertical child. */) + (Lisp_Object window) +{ + return decode_any_window (window)->vchild; } -DEFUN ("window-buffer", Fwindow_buffer, Swindow_buffer, 0, 1, 0, - doc: /* Return the buffer that WINDOW is displaying. -WINDOW defaults to the selected window. */) +DEFUN ("window-hchild", Fwindow_hchild, Swindow_hchild, 0, 1, 0, + doc: /* Return WINDOW's first horizontal child window. +WINDOW can be any window and defaults to the selected one. +Return nil if WINDOW has no horizontal child. */) (Lisp_Object window) { - return decode_window (window)->buffer; + return decode_any_window (window)->hchild; } -DEFUN ("window-height", Fwindow_height, Swindow_height, 0, 1, 0, - doc: /* Return the number of lines in WINDOW. -WINDOW defaults to the selected window. +DEFUN ("window-next", Fwindow_next, Swindow_next, 0, 1, 0, + doc: /* Return WINDOW's right sibling window. +WINDOW can be any window and defaults to the selected one. +Return nil if WINDOW has no right sibling. */) + (Lisp_Object window) +{ + return decode_any_window (window)->next; +} -The return value includes WINDOW's mode line and header line, if any. +DEFUN ("window-prev", Fwindow_prev, Swindow_prev, 0, 1, 0, + doc: /* Return WINDOW's left sibling window. +WINDOW can be any window and defaults to the selected one. +Return nil if WINDOW has no left sibling. */) + (Lisp_Object window) +{ + return decode_any_window (window)->prev; +} + +DEFUN ("window-splits", Fwindow_splits, Swindow_splits, 0, 1, 0, + doc: /* Return splits status for WINDOW. +WINDOW can be any window and defaults to the selected one. -Note: The function does not take into account the value of `line-spacing' -when calculating the number of lines in WINDOW. */) +If the value returned by this function is nil and WINDOW is resized, the +corresponding space is preferably taken from (or given to) WINDOW's +right sibling. When WINDOW is deleted, its space is given to its left +sibling. + +If the value returned by this function is non-nil, resizing and deleting +WINDOW may resize all windows in the same combination. */) (Lisp_Object window) { - return decode_any_window (window)->total_lines; + return decode_any_window (window)->splits; } -DEFUN ("window-width", Fwindow_width, Swindow_width, 0, 1, 0, - doc: /* Return the number of display columns in WINDOW. -WINDOW defaults to the selected window. +DEFUN ("set-window-splits", Fset_window_splits, Sset_window_splits, 2, 2, 0, + doc: /* Set splits status of WINDOW to STATUS. +WINDOW can be any window and defaults to the selected one. Return +STATUS. + +If STATUS is nil and WINDOW is later resized, the corresponding space is +preferably taken from (or given to) WINDOW's right sibling. When WINDOW +is deleted, its space is given to its left sibling. + +If STATUS is non-nil, resizing and deleting WINDOW may resize all +windows in the same combination. */) + (Lisp_Object window, Lisp_Object status) +{ + register struct window *w = decode_any_window (window); + + w->splits = status; + + return w->splits; +} + +DEFUN ("window-nest", Fwindow_nest, Swindow_nest, 0, 1, 0, + doc: /* Return nest status of WINDOW. +WINDOW can be any window and defaults to the selected one. -Note: The return value is the number of columns available for text in -WINDOW. If you want to find out how many columns WINDOW takes up, use -(let ((edges (window-edges))) (- (nth 2 edges) (nth 0 edges))). */) +If the return value is nil, subwindows of WINDOW can be recombined with +WINDOW's siblings. A return value of nil means that subwindows of +WINDOW are never \(re-)combined with WINDOW's siblings. */) (Lisp_Object window) { - return make_number (window_box_text_cols (decode_any_window (window))); + return decode_any_window (window)->nest; } -DEFUN ("window-full-width-p", Fwindow_full_width_p, Swindow_full_width_p, 0, 1, 0, - doc: /* Return t if WINDOW is as wide as its frame. -WINDOW defaults to the selected window. */) +DEFUN ("set-window-nest", Fset_window_nest, Sset_window_nest, 2, 2, 0, + doc: /* Set nest status of WINDOW to STATUS. +WINDOW can be any window and defaults to the selected one. Return +STATUS. + +If the return value is nil, subwindows of WINDOW can be recombined with +WINDOW's siblings. A return value of nil means that subwindows of +WINDOW are never \(re-)combined with WINDOW's siblings. */) + (Lisp_Object window, Lisp_Object status) +{ + register struct window *w = decode_any_window (window); + + w->nest = status; + + return w->nest; +} + +DEFUN ("window-use-time", Fwindow_use_time, Swindow_use_time, 0, 1, 0, + doc: /* Return WINDOW's use time. +WINDOW defaults to the selected window. The window with the highest use +time is the most recently selected one. The window with the lowest use +time is the least recently selected one. */) + (Lisp_Object window) +{ + return decode_window (window)->use_time; +} + +DEFUN ("window-total-size", Fwindow_total_size, Swindow_total_size, 0, 2, 0, + doc: /* Return the total number of lines of WINDOW. +WINDOW can be any window and defaults to the selected one. The return +value includes WINDOW's mode line and header line, if any. If WINDOW +is internal, the return value is the sum of the total number of lines +of WINDOW's child windows if these are vertically combined and the +height of WINDOW's first child otherwise. + +Optional argument HORIZONTAL non-nil means return the total number of +columns of WINDOW. In this case the return value includes any vertical +dividers or scrollbars of WINDOW. If WINDOW is internal, the return +value is the sum of the total number of columns of WINDOW's child +windows if they are horizontally combined and the width of WINDOW's +first child otherwise. */) + (Lisp_Object window, Lisp_Object horizontal) +{ + if (NILP (horizontal)) + return decode_any_window (window)->total_lines; + else + return decode_any_window (window)->total_cols; +} + +DEFUN ("window-new-total", Fwindow_new_total, Swindow_new_total, 0, 1, 0, + doc: /* Return new total size of WINDOW. +WINDOW defaults to the selected window. */) + (Lisp_Object window) +{ + return decode_any_window (window)->new_total; +} + +DEFUN ("window-normal-size", Fwindow_normal_size, Swindow_normal_size, 0, 2, 0, + doc: /* Return normal height of WINDOW. +WINDOW can be any window and defaults to the selected one. Optional +argument HORIZONTAL non-nil means return normal width of WINDOW. */) + (Lisp_Object window, Lisp_Object horizontal) +{ + if (NILP (horizontal)) + return decode_any_window (window)->normal_lines; + else + return decode_any_window (window)->normal_cols; +} + +DEFUN ("window-new-normal", Fwindow_new_normal, Swindow_new_normal, 0, 1, 0, + doc: /* Return new normal size of WINDOW. +WINDOW can be any window and defaults to the selected one. */) + (Lisp_Object window) +{ + return decode_any_window (window)->new_normal; +} + +DEFUN ("window-left-column", Fwindow_left_column, Swindow_left_column, 0, 1, 0, + doc: /* Return left column of WINDOW. +WINDOW can be any window and defaults to the selected one. */) + (Lisp_Object window) +{ + return decode_any_window (window)->left_col; +} + +DEFUN ("window-top-line", Fwindow_top_line, Swindow_top_line, 0, 1, 0, + doc: /* Return top line of WINDOW. +WINDOW can be any window and defaults to the selected one. */) (Lisp_Object window) { - return WINDOW_FULL_WIDTH_P (decode_any_window (window)) ? Qt : Qnil; + return decode_any_window (window)->top_line; +} + +/* Return the number of lines of W's body. Don't count any mode or + header line of W. */ + +int +window_body_lines (struct window *w) +{ + int height = XFASTINT (w->total_lines); + + if (!MINI_WINDOW_P (w)) + { + if (WINDOW_WANTS_MODELINE_P (w)) + --height; + if (WINDOW_WANTS_HEADER_LINE_P (w)) + --height; + } + + return height; +} + +/* Return the number of columns of W's body. Don't count columns + occupied by the scroll bar or the vertical bar separating W from its + right sibling. On window-systems don't count fringes or display + margins either. */ + +int +window_body_cols (struct window *w) +{ + struct frame *f = XFRAME (WINDOW_FRAME (w)); + int width = XINT (w->total_cols); + + if (WINDOW_HAS_VERTICAL_SCROLL_BAR (w)) + /* Scroll bars occupy a few columns. */ + width -= WINDOW_CONFIG_SCROLL_BAR_COLS (w); + else if (!FRAME_WINDOW_P (f) + && !WINDOW_RIGHTMOST_P (w) && !WINDOW_FULL_WIDTH_P (w)) + /* The column of `|' characters separating side-by-side windows + occupies one column only. */ + width -= 1; + + if (FRAME_WINDOW_P (f)) + /* On window-systems, fringes and display margins cannot be + used for normal text. */ + width -= (WINDOW_FRINGE_COLS (w) + + WINDOW_LEFT_MARGIN_COLS (w) + + WINDOW_RIGHT_MARGIN_COLS (w)); + + return width; +} + +DEFUN ("window-body-size", Fwindow_body_size, Swindow_body_size, 0, 2, 0, + doc: /* Return the number of lines of WINDOW's body. +WINDOW must be a live window and defaults to the selected one. The +return value does not include WINDOW's mode line and header line, if +any. + +Optional argument HORIZONTAL non-nil means return the number of columns +of WINDOW's body. In this case, the return value does not include any +vertical dividers or scroll bars owned by WINDOW. On a window-system +the return value does not include the number of columns used for +WINDOW's fringes or display margins either. */) + (Lisp_Object window, Lisp_Object horizontal) +{ + struct window *w = decode_any_window (window); + + if (NILP (horizontal)) + return make_number (window_body_lines (w)); + else + return make_number (window_body_cols (w)); } DEFUN ("window-hscroll", Fwindow_hscroll, Swindow_hscroll, 0, 1, 0, @@@ -2895,12 -2874,417 +2897,16 @@@ adjust_window_margins (struct window *w w->left_margin_cols = make_number (margin_cols); return 1; } - -/* Calculate new sizes for windows in the list FORWARD when their - compound size goes from TOTAL to SIZE. TOTAL must be greater than - SIZE. The number of windows in FORWARD is NCHILDREN, and the number - that can shrink is SHRINKABLE. Fixed-size windows may be shrunk if - and only if RESIZE_FIXED_P is non-zero. WIDTH_P non-zero means - shrink columns, otherwise shrink lines. - - SAFE_P zero means windows may be sized down to window-min-height - lines (window-min-window columns for WIDTH_P non-zero). SAFE_P - non-zero means windows may be sized down to their minimum safe sizes - taking into account the space needed to display modelines, fringes, - and scrollbars. - - This function returns an allocated array of new sizes that the caller - must free. A size -1 means the window is fixed and RESIZE_FIXED_P is - zero. A size zero means the window shall be deleted. Array index 0 - refers to the first window in FORWARD, 1 to the second, and so on. - - This function resizes windows proportionally to their size. It also - tries to preserve smaller windows by resizing larger windows before - resizing any window to zero. If resize_proportionally is non-nil for - a specific window, it will attempt to strictly resize that window - proportionally, even at the expense of deleting smaller windows. */ -static int * -shrink_windows (int total, int size, int nchildren, int shrinkable, - int resize_fixed_p, Lisp_Object forward, int width_p, int safe_p) -{ - int available_resize = 0; - int *new_sizes, *min_sizes; - struct window *c; - Lisp_Object child; - int smallest = total; - int total_removed = 0; - int total_shrink = total - size; - int i; - - new_sizes = xmalloc (sizeof (*new_sizes) * nchildren); - min_sizes = xmalloc (sizeof (*min_sizes) * nchildren); - - for (i = 0, child = forward; !NILP (child); child = c->next, ++i) - { - int child_size; - - c = XWINDOW (child); - child_size = WINDOW_TOTAL_SIZE (c, width_p); - - if (!resize_fixed_p && window_fixed_size_p (c, width_p, 0)) - new_sizes[i] = -1; - else - { - new_sizes[i] = child_size; - min_sizes[i] = window_min_size_1 (c, width_p, safe_p); - if (child_size > min_sizes[i] - && NILP (c->resize_proportionally)) - available_resize += child_size - min_sizes[i]; - } - } - /* We might need to shrink some windows to zero. Find the smallest - windows and set them to 0 until we can fulfil the new size. */ - - while (shrinkable > 1 && size + available_resize < total) - { - for (i = 0; i < nchildren; ++i) - if (new_sizes[i] > 0 && smallest > new_sizes[i]) - smallest = new_sizes[i]; - - for (i = 0; i < nchildren; ++i) - if (new_sizes[i] == smallest) - { - /* Resize this window down to zero. */ - new_sizes[i] = 0; - if (smallest > min_sizes[i]) - available_resize -= smallest - min_sizes[i]; - available_resize += smallest; - --shrinkable; - total_removed += smallest; - - /* We don't know what the smallest is now. */ - smallest = total; - - /* Out of for, just remove one window at the time and - check again if we have enough space. */ - break; - } - } - - /* Now, calculate the new sizes. Try to shrink each window - proportional to its size. */ - for (i = 0; i < nchildren; ++i) - { - if (new_sizes[i] > min_sizes[i]) - { - int to_shrink = total_shrink * new_sizes[i] / total; - - if (new_sizes[i] - to_shrink < min_sizes[i]) - to_shrink = new_sizes[i] - min_sizes[i]; - new_sizes[i] -= to_shrink; - total_removed += to_shrink; - } - } - - /* Any reminder due to rounding, we just subtract from windows - that are left and still can be shrunk. */ - while (total_shrink > total_removed) - { - int nonzero_sizes = 0; - - for (i = 0; i < nchildren; ++i) - if (new_sizes[i] > 0) - ++nonzero_sizes; - - for (i = 0; i < nchildren; ++i) - if (new_sizes[i] > min_sizes[i]) - { - --new_sizes[i]; - ++total_removed; - - /* Out of for, just shrink one window at the time and - check again if we have enough space. */ - break; - } - - /* Special case, only one window left. */ - if (nonzero_sizes == 1) - break; - } - - /* Any surplus due to rounding, we add to windows that are left. */ - while (total_shrink < total_removed) - { - for (i = 0; i < nchildren; ++i) - { - if (new_sizes[i] != 0 && total_shrink < total_removed) - { - ++new_sizes[i]; - --total_removed; - break; - } - } - } - - xfree (min_sizes); - - return new_sizes; -} - -/* Set WINDOW's height or width to SIZE. WIDTH_P non-zero means set - WINDOW's width. Resize WINDOW's children, if any, so that they keep - their proportionate size relative to WINDOW. - - If FIRST_ONLY is 1, change only the first of WINDOW's children when - they are in series. If LAST_ONLY is 1, change only the last of - WINDOW's children when they are in series. - - Propagate WINDOW's top or left edge position to children. Delete - windows that become too small unless NODELETE_P is 1. When - NODELETE_P equals 2 do not honor settings for window-min-height and - window-min-width when resizing windows but use safe defaults instead. - This should give better behavior when resizing frames. */ - -static void -size_window (Lisp_Object window, int size, int width_p, int nodelete_p, int first_only, int last_only) -{ - struct window *w = XWINDOW (window); - struct window *c; - Lisp_Object child, *forward, *sideward; - int old_size = WINDOW_TOTAL_SIZE (w, width_p); - - size = max (0, size); - - /* Delete WINDOW if it's too small. */ - if (nodelete_p != 1 && !NILP (w->parent) - && size < window_min_size_1 (w, width_p, nodelete_p == 2)) - { - delete_window (window); - return; - } - - /* Set redisplay hints. */ - w->last_modified = make_number (0); - w->last_overlay_modified = make_number (0); - windows_or_buffers_changed++; - FRAME_WINDOW_SIZES_CHANGED (XFRAME (w->frame)) = 1; - - if (width_p) - { - sideward = &w->vchild; - forward = &w->hchild; - w->total_cols = make_number (size); - adjust_window_margins (w); - } - else - { - sideward = &w->hchild; - forward = &w->vchild; - w->total_lines = make_number (size); - w->orig_total_lines = Qnil; - } - - if (!NILP (*sideward)) - { - /* We have a chain of parallel siblings whose size should all change. */ - for (child = *sideward; !NILP (child); child = c->next) - { - c = XWINDOW (child); - if (width_p) - c->left_col = w->left_col; - else - c->top_line = w->top_line; - size_window (child, size, width_p, nodelete_p, - first_only, last_only); - } - } - else if (!NILP (*forward) && last_only) - { - /* Change the last in a series of siblings. */ - Lisp_Object last_child; - int child_size; - - for (child = *forward; !NILP (child); child = c->next) - { - c = XWINDOW (child); - last_child = child; - } - - child_size = WINDOW_TOTAL_SIZE (c, width_p); - size_window (last_child, size - old_size + child_size, - width_p, nodelete_p, first_only, last_only); - } - else if (!NILP (*forward) && first_only) - { - /* Change the first in a series of siblings. */ - int child_size; - - child = *forward; - c = XWINDOW (child); - - if (width_p) - c->left_col = w->left_col; - else - c->top_line = w->top_line; - - child_size = WINDOW_TOTAL_SIZE (c, width_p); - size_window (child, size - old_size + child_size, - width_p, nodelete_p, first_only, last_only); - } - else if (!NILP (*forward)) - { - int fixed_size, each IF_LINT (= 0), extra IF_LINT (= 0), n; - int resize_fixed_p, nfixed; - int last_pos, first_pos, nchildren, total; - int *new_sizes = NULL; - - /* Determine the fixed-size portion of this window, and the - number of child windows. */ - fixed_size = nchildren = nfixed = total = 0; - for (child = *forward; !NILP (child); child = c->next, ++nchildren) - { - int child_size; - - c = XWINDOW (child); - child_size = WINDOW_TOTAL_SIZE (c, width_p); - total += child_size; - - if (window_fixed_size_p (c, width_p, 0)) - { - fixed_size += child_size; - ++nfixed; - } - } - - /* If the new size is smaller than fixed_size, or if there - aren't any resizable windows, allow resizing fixed-size - windows. */ - resize_fixed_p = nfixed == nchildren || size < fixed_size; - - /* Compute how many lines/columns to add/remove to each child. The - value of extra takes care of rounding errors. */ - n = resize_fixed_p ? nchildren : nchildren - nfixed; - if (size < total && n > 1) - new_sizes = shrink_windows (total, size, nchildren, n, - resize_fixed_p, *forward, width_p, - nodelete_p == 2); - else - { - each = (size - total) / n; - extra = (size - total) - n * each; - } - - /* Compute new children heights and edge positions. */ - first_pos = width_p ? XINT (w->left_col) : XINT (w->top_line); - last_pos = first_pos; - for (n = 0, child = *forward; !NILP (child); child = c->next, ++n) - { - int new_child_size, old_child_size; - - c = XWINDOW (child); - old_child_size = WINDOW_TOTAL_SIZE (c, width_p); - new_child_size = old_child_size; - - /* The top or left edge position of this child equals the - bottom or right edge of its predecessor. */ - if (width_p) - c->left_col = make_number (last_pos); - else - c->top_line = make_number (last_pos); - - /* If this child can be resized, do it. */ - if (resize_fixed_p || !window_fixed_size_p (c, width_p, 0)) - { - new_child_size = - new_sizes ? new_sizes[n] : old_child_size + each + extra; - extra = 0; - } - - /* Set new size. Note that size_window also propagates - edge positions to children, so it's not a no-op if we - didn't change the child's size. */ - size_window (child, new_child_size, width_p, 1, - first_only, last_only); - - /* Remember the bottom/right edge position of this child; it - will be used to set the top/left edge of the next child. */ - last_pos += new_child_size; - } - - xfree (new_sizes); - - /* We should have covered the parent exactly with child windows. */ - xassert (size == last_pos - first_pos); - - /* Now delete any children that became too small. */ - if (nodelete_p != 1) - for (child = *forward; !NILP (child); child = c->next) - { - int child_size; - - c = XWINDOW (child); - child_size = WINDOW_TOTAL_SIZE (c, width_p); - size_window (child, child_size, width_p, nodelete_p, - first_only, last_only); - } - } -} - -/* Set WINDOW's height to HEIGHT, and recursively change the height of - WINDOW's children. NODELETE zero means windows that have become - smaller than window-min-height in the process may be deleted. - NODELETE 1 means never delete windows that become too small in the - process. (The caller should check later and do so if appropriate.) - NODELETE 2 means delete only windows that have become too small to be - displayed correctly. */ - -void -set_window_height (Lisp_Object window, int height, int nodelete) -{ - size_window (window, height, 0, nodelete, 0, 0); -} - -/* Set WINDOW's width to WIDTH, and recursively change the width of - WINDOW's children. NODELETE zero means windows that have become - smaller than window-min-width in the process may be deleted. - NODELETE 1 means never delete windows that become too small in the - process. (The caller should check later and do so if appropriate.) - NODELETE 2 means delete only windows that have become too small to be - displayed correctly. */ - -void -set_window_width (Lisp_Object window, int width, int nodelete) -{ - size_window (window, width, 1, nodelete, 0, 0); -} - -/* Change window heights in windows rooted in WINDOW by N lines. */ - -void -change_window_heights (Lisp_Object window, int n) -{ - struct window *w = XWINDOW (window); - - XSETFASTINT (w->top_line, XFASTINT (w->top_line) + n); - XSETFASTINT (w->total_lines, XFASTINT (w->total_lines) - n); - - if (INTEGERP (w->orig_top_line)) - XSETFASTINT (w->orig_top_line, XFASTINT (w->orig_top_line) + n); - if (INTEGERP (w->orig_total_lines)) - XSETFASTINT (w->orig_total_lines, XFASTINT (w->orig_total_lines) - n); - - /* Handle just the top child in a vertical split. */ - if (!NILP (w->vchild)) - change_window_heights (w->vchild, n); - - /* Adjust all children in a horizontal split. */ - for (window = w->hchild; !NILP (window); window = w->next) - { - w = XWINDOW (window); - change_window_heights (window, n); - } -} - - EXFUN (Fset_window_fringes, 4); - EXFUN (Fset_window_scroll_bars, 4); -int window_select_count; - + static Lisp_Object Fset_window_margins (Lisp_Object, Lisp_Object, Lisp_Object); + static Lisp_Object Fset_window_fringes (Lisp_Object, Lisp_Object, Lisp_Object, + Lisp_Object); + static Lisp_Object Fset_window_scroll_bars (Lisp_Object, Lisp_Object, + Lisp_Object, Lisp_Object); + static Lisp_Object Fset_window_vscroll (Lisp_Object, Lisp_Object, Lisp_Object); +/* The following three routines are needed for running a window's + configuration change hook. */ static void run_funs (Lisp_Object funs) { @@@ -5348,14 -5824,10 +5361,12 @@@ struct save_window_dat /* This is saved as a Lisp_Vector */ struct saved_window { - /* these first two must agree with struct Lisp_Vector in lisp.h */ - EMACS_UINT size; - struct Lisp_Vector *next_from_Lisp_Vector_struct; + struct vectorlike_header header; - Lisp_Object window; + + Lisp_Object window, clone_number; Lisp_Object buffer, start, pointm, mark; Lisp_Object left_col, top_line, total_cols, total_lines; + Lisp_Object normal_cols, normal_lines; Lisp_Object hscroll, min_hscroll; Lisp_Object parent, prev; Lisp_Object start_at_line_beg; @@@ -5533,13 -6003,12 +5544,13 @@@ the return value is nil. Otherwise th Save their current buffers in their height fields, since we may need it later, if a buffer saved in the configuration is now dead. */ - delete_all_subwindows (XWINDOW (FRAME_ROOT_WINDOW (f))); + delete_all_subwindows (FRAME_ROOT_WINDOW (f)); - for (k = 0; k < saved_windows->size; k++) + for (k = 0; k < saved_windows->header.size; k++) { p = SAVED_WINDOW_N (saved_windows, k); - w = XWINDOW (p->window); + window = p->window; + w = XWINDOW (window); w->next = Qnil; if (!NILP (p->parent)) @@@ -6351,82 -6842,116 +6362,82 @@@ freeze_window_starts (struct frame *f, Initialization ***********************************************************************/ -/* Return 1 if window configurations C1 and C2 - describe the same state of affairs. This is used by Fequal. */ +/* Return 1 if window configurations CONFIGURATION1 and CONFIGURATION2 + describe the same state of affairs. This is used by Fequal. + + ignore_positions non-zero means ignore non-matching scroll positions + and the like. + + This ignores a couple of things like the dedicatedness status of + window, splits, nest and the like. This might have to be fixed. */ int -compare_window_configurations (Lisp_Object c1, Lisp_Object c2, int ignore_positions) +compare_window_configurations (Lisp_Object configuration1, Lisp_Object configuration2, int ignore_positions) { register struct save_window_data *d1, *d2; - struct Lisp_Vector *sw1, *sw2; + struct Lisp_Vector *sws1, *sws2; int i; - CHECK_WINDOW_CONFIGURATION (c1); - CHECK_WINDOW_CONFIGURATION (c2); - - d1 = (struct save_window_data *) XVECTOR (c1); - d2 = (struct save_window_data *) XVECTOR (c2); - sw1 = XVECTOR (d1->saved_windows); - sw2 = XVECTOR (d2->saved_windows); - - if (d1->frame_cols != d2->frame_cols) - return 0; - if (d1->frame_lines != d2->frame_lines) - return 0; - if (d1->frame_menu_bar_lines != d2->frame_menu_bar_lines) - return 0; - if (! EQ (d1->selected_frame, d2->selected_frame)) - return 0; - /* Don't compare the current_window field directly. - Instead see w1_is_current and w2_is_current, below. */ - if (! EQ (d1->current_buffer, d2->current_buffer)) - return 0; - if (! ignore_positions) - { - if (! EQ (d1->minibuf_scroll_window, d2->minibuf_scroll_window)) - return 0; - if (! EQ (d1->minibuf_selected_window, d2->minibuf_selected_window)) - return 0; - } - /* Don't compare the root_window field. - We don't require the two configurations - to use the same window object, - and the two root windows must be equivalent - if everything else compares equal. */ - if (! EQ (d1->focus_frame, d2->focus_frame)) - return 0; - - /* Verify that the two confis have the same number of windows. */ - if (sw1->header.size != sw2->header.size) + CHECK_WINDOW_CONFIGURATION (configuration1); + CHECK_WINDOW_CONFIGURATION (configuration2); + + d1 = (struct save_window_data *) XVECTOR (configuration1); + d2 = (struct save_window_data *) XVECTOR (configuration2); + sws1 = XVECTOR (d1->saved_windows); + sws2 = XVECTOR (d2->saved_windows); + + /* Frame settings must match. */ + if (d1->frame_cols != d2->frame_cols + || d1->frame_lines != d2->frame_lines + || d1->frame_menu_bar_lines != d2->frame_menu_bar_lines + || !EQ (d1->selected_frame, d2->selected_frame) + || !EQ (d1->current_buffer, d2->current_buffer) + || (!ignore_positions + && (!EQ (d1->minibuf_scroll_window, d2->minibuf_scroll_window) + || !EQ (d1->minibuf_selected_window, d2->minibuf_selected_window))) + || !EQ (d1->focus_frame, d2->focus_frame) + /* Verify that the two configurations have the same number of windows. */ - || sws1->size != sws2->size) ++ || sws1->header.size != sws2->header.size) return 0; - for (i = 0; i < sws1->size; i++) - for (i = 0; i < sw1->header.size; i++) ++ for (i = 0; i < sws1->header.size; i++) { - struct saved_window *p1, *p2; + struct saved_window *sw1, *sw2; int w1_is_current, w2_is_current; - p1 = SAVED_WINDOW_N (sw1, i); - p2 = SAVED_WINDOW_N (sw2, i); - - /* Verify that the current windows in the two - configurations correspond to each other. */ - w1_is_current = EQ (d1->current_window, p1->window); - w2_is_current = EQ (d2->current_window, p2->window); - - if (w1_is_current != w2_is_current) - return 0; - - /* Verify that the corresponding windows do match. */ - if (! EQ (p1->buffer, p2->buffer)) - return 0; - if (! EQ (p1->left_col, p2->left_col)) - return 0; - if (! EQ (p1->top_line, p2->top_line)) - return 0; - if (! EQ (p1->total_cols, p2->total_cols)) - return 0; - if (! EQ (p1->total_lines, p2->total_lines)) - return 0; - if (! EQ (p1->display_table, p2->display_table)) - return 0; - if (! EQ (p1->parent, p2->parent)) - return 0; - if (! EQ (p1->prev, p2->prev)) - return 0; - if (! ignore_positions) - { - if (! EQ (p1->hscroll, p2->hscroll)) - return 0; - if (!EQ (p1->min_hscroll, p2->min_hscroll)) - return 0; - if (! EQ (p1->start_at_line_beg, p2->start_at_line_beg)) - return 0; - if (NILP (Fequal (p1->start, p2->start))) - return 0; - if (NILP (Fequal (p1->pointm, p2->pointm))) - return 0; - if (NILP (Fequal (p1->mark, p2->mark))) - return 0; - } - if (! EQ (p1->left_margin_cols, p2->left_margin_cols)) - return 0; - if (! EQ (p1->right_margin_cols, p2->right_margin_cols)) - return 0; - if (! EQ (p1->left_fringe_width, p2->left_fringe_width)) - return 0; - if (! EQ (p1->right_fringe_width, p2->right_fringe_width)) - return 0; - if (! EQ (p1->fringes_outside_margins, p2->fringes_outside_margins)) - return 0; - if (! EQ (p1->scroll_bar_width, p2->scroll_bar_width)) - return 0; - if (! EQ (p1->vertical_scroll_bar_type, p2->vertical_scroll_bar_type)) + sw1 = SAVED_WINDOW_N (sws1, i); + sw2 = SAVED_WINDOW_N (sws2, i); + + if ( + /* The "current" windows in the two configurations must + correspond to each other. */ + EQ (d1->current_window, sw1->window) + != EQ (d2->current_window, sw2->window) + /* Windows' buffers must match. */ + || !EQ (sw1->buffer, sw2->buffer) + || !EQ (sw1->left_col, sw2->left_col) + || !EQ (sw1->top_line, sw2->top_line) + || !EQ (sw1->total_cols, sw2->total_cols) + || !EQ (sw1->total_lines, sw2->total_lines) + || !EQ (sw1->display_table, sw2->display_table) + /* The next two disjuncts check the window structure for + equality. */ + || !EQ (sw1->parent, sw2->parent) + || !EQ (sw1->prev, sw2->prev) + || (!ignore_positions + && (!EQ (sw1->hscroll, sw2->hscroll) + || !EQ (sw1->min_hscroll, sw2->min_hscroll) + || !EQ (sw1->start_at_line_beg, sw2->start_at_line_beg) + || NILP (Fequal (sw1->start, sw2->start)) + || NILP (Fequal (sw1->pointm, sw2->pointm)) + || NILP (Fequal (sw1->mark, sw2->mark)))) + || !EQ (sw1->left_margin_cols, sw2->left_margin_cols) + || !EQ (sw1->right_margin_cols, sw2->right_margin_cols) + || !EQ (sw1->left_fringe_width, sw2->left_fringe_width) + || !EQ (sw1->right_fringe_width, sw2->right_fringe_width) + || !EQ (sw1->fringes_outside_margins, sw2->fringes_outside_margins) + || !EQ (sw1->scroll_bar_width, sw2->scroll_bar_width) + || !EQ (sw1->vertical_scroll_bar_type, sw2->vertical_scroll_bar_type)) return 0; } diff --cc src/xdisp.c index 015d6e612bb,66e51ac2c32..c0ad82daca0 --- a/src/xdisp.c +++ b/src/xdisp.c @@@ -27022,22 -26988,24 +26985,23 @@@ init_xdisp (void CHARPOS (this_line_start_pos) = 0; - mini_w = XWINDOW (minibuf_window); - root_window = FRAME_ROOT_WINDOW (XFRAME (WINDOW_FRAME (mini_w))); - echo_area_window = minibuf_window; - if (!noninteractive) { - /* Does it really make sense to "bootstrap" from minibuf_window? */ - struct frame *f = XFRAME (WINDOW_FRAME (XWINDOW (root_window))); + struct window *m = XWINDOW (minibuf_window); + Lisp_Object frame = m->frame; + struct frame *f = XFRAME (frame); + Lisp_Object root = FRAME_ROOT_WINDOW (f); + struct window *r = XWINDOW (root); int i; - XWINDOW (root_window)->top_line = make_number (FRAME_TOP_MARGIN (f)); - set_window_height (root_window, - FRAME_LINES (f) - 1 - FRAME_TOP_MARGIN (f), - 0); - mini_w->top_line = make_number (FRAME_LINES (f) - 1); - set_window_height (minibuf_window, 1, 0); ++ echo_area_window = minibuf_window; + - XWINDOW (root_window)->total_cols = make_number (FRAME_COLS (f)); - mini_w->total_cols = make_number (FRAME_COLS (f)); + XSETFASTINT (r->top_line, FRAME_TOP_MARGIN (f)); + XSETFASTINT (r->total_lines, FRAME_LINES (f) - 1 - FRAME_TOP_MARGIN (f)); + XSETFASTINT (r->total_cols, FRAME_COLS (f)); + XSETFASTINT (m->top_line, FRAME_LINES (f) - 1); + XSETFASTINT (m->total_lines, 1); + XSETFASTINT (m->total_cols, FRAME_COLS (f)); scratch_glyph_row.glyphs[TEXT_AREA] = scratch_glyphs; scratch_glyph_row.glyphs[TEXT_AREA + 1]