+2011-05-17 Martin Rudalics <rudalics@gmx.at>
+
+ * windows.texi (Basic Windows): Remove description of
+ window-internal-p.
+ (Splitting Windows): New nomenclature for window splitting
+ commands.
+
+ 2011-05-14 Eli Zaretskii <eliz@gnu.org>
+
+ * 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 <rgm@gnu.org>
+
+ * display.texi (Image Descriptors): Fix typo. (Bug#8495)
+
+ 2011-05-12 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <drew.adams@oracle.com>
+
+ * modes.texi (Region to Fontify): Fix typo.
+
+ 2011-05-10 Jim Meyering <meyering@redhat.com>
+
+ * minibuf.texi: Fix typo "in in -> in".
+
+ 2011-05-06 Paul Eggert <eggert@cs.ucla.edu>
+
+ * numbers.texi (Integer Basics): Large integers are treated as floats.
+
+ 2011-04-30 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * processes.texi (Synchronous Processes): Document the (:file
+ "/file-name") syntax for `call-process'.
+
+ 2011-04-23 Juanma Barranquero <lekktu@gmail.com>
+
+ * windows.texi (Choosing Window): Fix typo.
+
+ 2011-04-23 Chong Yidong <cyd@stupidchicken.com>
+
+ * 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 <rudalics@gmx.at>
+
+ * windows.texi (Splitting Windows): Explain window-splits and
+ window-nest.
+ (Displaying Buffers): Replace other-visible-frame by other-frame.
+
2011-03-21 Stefan Monnier <monnier@iro.umontreal.ca>
* minibuf.texi (Basic Completion): Be a bit more precise about the
+ 2011-05-17 Glenn Morris <rgm@gnu.org>
+
+ * 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 <lekktu@gmail.com>
+
+ * progmodes/python.el (python-font-lock-keywords):
+ Add the Python 3.X keyword "nonlocal" (bug#8639).
+
+2011-05-16 Martin Rudalics <rudalics@gmx.at>
+
+ * 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 <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/eieio.el (defmethod): Fix quoting of code (bug#8677).
+
+ 2011-05-16 Kevin Ryde <user42@zip.com.au>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * 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 <rgm@gnu.org>
+
+ * 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 <bill@carpenter.org>
+
+ * 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 <ulf.jasper@web.de>
+
+ * 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 <didier@xemacs.org>
+
+ 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 <monnier@iro.umontreal.ca>
+
+ * thingatpt.el (bounds-of-thing-at-point): Return nil rather than
+ bounds for the empty string (bug#8667).
+
+ 2011-05-13 Glenn Morris <rgm@gnu.org>
+
+ * 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 <schwab@linux-m68k.org>
+
+ * progmodes/ld-script.el (ld-script-keywords)
+ (ld-script-builtins): Update keywords list.
+
+ 2011-05-12 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <rgm@gnu.org>
+
+ * calendar/appt.el (appt-now-displayed): Remove pointless variable.
+ (appt-check): Simplify.
+
+ 2011-05-12 Eli Zaretskii <eliz@gnu.org>
+
+ * smerge-mode.el (smerge-resolve): Use null-device rather than a
+ literal "/dev/null".
+
+ 2011-05-12 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/lisp.el (lisp-complete-symbol, lisp-completion-at-point):
+ Fix typo.
+
+ 2011-05-12 Ralph Schleicher <rs@ralph-schleicher.de>
+
+ * 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 <rgm@gnu.org>
+
+ * emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble):
+ Let byte-compile-initial-macro-environment always take precedence.
+
+ 2011-05-12 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <rgm@gnu.org>
+
+ * 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 <sdl.web@gmail.com>
+
+ * 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 <meyering@redhat.com>
+
+ 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 <rgm@gnu.org>
+ Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * files.el (hack-one-local-variable-eval-safep):
+ Consider "eval: (foo-mode)" to be safe. (Bug#8613)
+
+ 2011-05-10 Glenn Morris <rgm@gnu.org>
+
+ * 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 <lekktu@gmail.com>
+
+ * misc.el: Require tabulated-list.el during compilation.
+
+ 2011-05-09 Chong Yidong <cyd@stupidchicken.com>
+
+ * progmodes/compile.el (compilation-start):
+ Run compilation-filter-hook for the async case too.
+ (compilation-filter-hook): Doc fix.
+
+ 2011-05-09 Deniz Dogan <deniz@dogan.se>
+
+ * wdired.el: Remove outdated installation comment. Fix usage
+ comment.
+
+ 2011-05-09 Juanma Barranquero <lekktu@gmail.com>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * 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 <rs@ralph-schleicher.de>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * 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 <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/eieio.el (defmethod): Fix typo in last change.
+
+ 2011-05-07 Eli Zaretskii <eliz@gnu.org>
+
+ * 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 <monnier@iro.umontreal.ca>
+
+ 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 <rgm@gnu.org>
+
+ * 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 <friedman@splode.com>
+
+ * 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 <monnier@iro.umontreal.ca>
+
+ * 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 <rgm@gnu.org>
+
+ * 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 <lekktu@gmail.com>
+
+ * simple.el (list-processes): Return nil as the docstring says.
+
+ 2011-05-05 Michael Albinus <michael.albinus@gmx.de>
+
+ * 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 <michael.albinus@gmx.de>
+
+ * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
+ Fix port computation bug. (Bug#8618)
+
+ 2011-05-05 Glenn Morris <rgm@gnu.org>
+
+ * 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 <monnier@iro.umontreal.ca>
+
+ 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 <pdm@zamazal.org>
+
+ * progmodes/glasses.el (glasses-separate-capital-groups): New option.
+ (glasses-make-readable): Use glasses-separate-capital-groups.
+
+ 2011-05-05 Juanma Barranquero <lekktu@gmail.com>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * 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 <lekktu@gmail.com>
+
+ * term/w32-win.el (dynamic-library-alist): Add `gnutls'.
+
+ 2011-05-04 Glenn Morris <rgm@gnu.org>
+
+ * 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 <tzz@lifelogs.com>
+
+ * 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 <monnier@iro.umontreal.ca>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * emacs-lisp/autoload.el (generated-autoload-file): Doc fix (Bug#7989).
+
+ 2011-05-03 AgustÃn MartÃn Domingo <agustin.martin@hispalinux.es>
+
+ * textmodes/ispell.el (ispell-add-per-file-word-list):
+ Use `concat' to create string for insertion.
+
+ 2011-05-03 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <dirk.ullrich@googlemail.com> (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 <sdl.web@gmail.com>
+
+ * isearch.el (isearch-yank-pop): New command.
+ (isearch-mode-map): Bind it to `M-y'.
+ (isearch-forward): Mention it.
+
+ 2011-05-03 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <sdl.web@gmail.com>
+
+ * vc/diff.el: Fix description.
+
+ 2011-05-02 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * server.el (server-eval-at): New function.
+
+ 2011-05-01 Lars Magne Ingebrigtsen <larsi@gnus.org>
+
+ * 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 <schwab@linux-m68k.org>
+
+ * faces.el (face-spec-set-match-display): Don't match toolkit
+ options on terminal frames.
+
+ 2011-04-29 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <lekktu@gmail.com>
+
+ * 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 <deniz@dogan.se>
+
+ * net/rcirc.el (rcirc-handler-353): Fix bug for channels which the
+ user has not joined.
+
+ 2011-04-28 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * pcomplete.el (pcomplete-completions-at-point): Return nil if there
+ aren't any completions at point.
+
+ 2011-04-28 Juanma Barranquero <lekktu@gmail.com>
+
+ * subr.el (display-delayed-warnings): New function.
+ (delayed-warnings-hook): New variable.
+
+ 2011-04-28 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <niels.giesen@gmail.com>
+
+ * 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 <dan.colascione@gmail.com>
+
+ * subr.el (shell-quote-argument): Use alternate escaping strategy
+ when we spot a variable reference in a string.
+
+ 2011-04-26 Daniel Colascione <dan.colascione@gmail.com>
+
+ * cus-start.el (all): Define customization for debug-on-event.
+
+ 2011-04-26 Daniel Colascione <dan.colascione@gmail.com>
+
+ * subr.el (shell-quote-argument): Escape correctly under Windows.
+
+ 2011-04-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emulation/cua-base.el (cua-selection-mode): Make it toggle again.
+
+ 2011-04-25 Michael Albinus <michael.albinus@gmx.de>
+
+ * 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 <monnier@iro.umontreal.ca>
+
+ * 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 <lekktu@gmail.com>
+
+ * net/gnutls.el (gnutls-errorp): Declare before first use.
+
+ 2011-04-24 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * 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 <claudio.bley@gmail.com>.
+ (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 <dan.colascione@gmail.com>
+
+ * progmodes/cc-engine.el (c-forward-decl-or-cast-1):
+ Use correct match group (bug#8438).
+
+ 2011-04-24 Chong Yidong <cyd@stupidchicken.com>
+
+ * 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 <u.s.reddy@cs.bham.ac.uk> (tiny change)
+
+ * progmodes/etags.el (next-file): Don't use set-buffer to change
+ buffers (Bug#8478).
+
+ 2011-04-24 Chong Yidong <cyd@stupidchicken.com>
+
+ * 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 <lekktu@gmail.com>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * 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 <stephen.berman@gmx.net>
+
+ * textmodes/page.el (what-page): Use line-number-at-pos to
+ calculate line number (Bug#6825).
+
+ 2011-04-22 Juanma Barranquero <lekktu@gmail.com>
+
+ * 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 <lekktu@gmail.com>
+
+ 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 <cyd@stupidchicken.com>
+
+ * 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 <lekktu@gmail.com>
+
+ 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 <lekktu@gmail.com>
+
+ * vc/vc.el (ediff-vc-internal): Declare function.
+
+ 2011-04-20 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <cschol2112@googlemail.com>
+
+ * 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 <monnier@iro.umontreal.ca>
+
+ * 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 <rgm@gnu.org>
+
+ * 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 <viniciusjl@ig.com.br>
+
+ * whitespace.el: New version 13.2.1.
+
+ 2011-04-20 felix <EmacsWiki> (tiny change)
+
+ * whitespace.el (global-whitespace-mode): keep highlight when
+ switching between major modes on a file.
+
+ 2011-04-19 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <lekktu@gmail.com>
+
+ 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 <rgm@gnu.org>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * 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 <sds@gnu.org>
+
+ * vc/add-log.el (change-log-font-lock-keywords): Add "Thanks to"
+ to acknowledgments.
+
+ 2011-04-17 Glenn Morris <rgm@gnu.org>
+
+ * 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 <rgm@gnu.org>
+
+ * progmodes/f90.el: Use lexical-binding.
+ (f90-get-correct-indent): Remove unnecessary local variable `cont'.
+
+ 2011-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <lekktu@gmail.com>
+
+ * loadup.el: Use `string-to-number', not `string-to-int'.
+
+ 2011-04-15 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * 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 <rudalics@gmx.at>
+
+ * window.el (adjust-window-trailing-edge): Assign normal sizes
+ to the windows affected in window-splits nil case.
+
+ 2011-04-14 Michael Albinus <michael.albinus@gmx.de>
+
+ * 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 <monnier@iro.umontreal.ca>
* minibuffer.el (completion-in-region-mode-predicate)
(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.
Changing this globally has no effect.")
(make-variable-buffer-local 'window-area-factor)
- (condition-case err
+(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 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
+2011-05-16 Martin Rudalics <rudalics@gmx.at>
+
+ * 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 <drew.adams@oracle.com>
+
+ * textprop.c (Fprevious_single_char_property_change): Doc fix (bug#8655).
+
+ 2011-05-12 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
+
+ * 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 <meyering@redhat.com>
+
+ * xdisp.c (x_intersect_rectangles): Fix typo "the the -> the".
+
+ 2011-05-10 Juanma Barranquero <lekktu@gmail.com>
+
+ * image.c (Finit_image_library): Return t for built-in image types,
+ like pbm and xbm. (Bug#8640)
+
+ 2011-05-09 Andreas Schwab <schwab@linux-m68k.org>
+
+ * w32menu.c (set_frame_menubar): Fix submenu allocation.
+
+ 2011-05-07 Eli Zaretskii <eliz@gnu.org>
+
+ * 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 <bkey76@gmail.com>
+
+ * 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 <michael.albinus@gmx.de>
+
+ * 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 <lekktu@gmail.com>
+
+ * makefile.w32-in: Update dependencies.
+ (LISP_H): Add inttypes.h and stdin.h.
+ (PROCESS_H): Add unistd.h.
+
+ 2011-05-06 Eli Zaretskii <eliz@gnu.org>
+
+ * 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 <eggert@cs.ucla.edu>
+
+ * 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 <stdarg.h>, as <lisp.h> 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
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00919.html>.
+ (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 <inttypes.h>; 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 <inttypes.h>, 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 <lekktu@gmail.com>
+
+ * gnutls.c (DEF_GNUTLS_FN):
+ * image.c (DEF_IMGLIB_FN): Make function pointers static.
+
+ 2011-05-05 Andreas Schwab <schwab@linux-m68k.org>
+
+ * lread.c (lisp_file_lexically_bound_p): Stop scanning at end
+ marker. (Bug#8610)
+
+ 2011-05-05 Eli Zaretskii <eliz@gnu.org>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * nsfns.m (Fns_read_file_name): Doc fix (Bug#8534).
+
+ 2011-05-05 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnutls.c (fn_gnutls_certificate_set_x509_key_file): Add alias to
+ `gnutls_certificate_set_x509_key_file'.
+
+ 2011-05-05 Juanma Barranquero <lekktu@gmail.com>
+
+ * makefile.w32-in ($(BLD)/image.$(O), $(BLD)/process.$(O)):
+ Update dependencies.
+
+ 2011-05-04 Juanma Barranquero <lekktu@gmail.com>
+
+ * 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 <lekktu@gmail.com>
+
+ 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 <lekktu@gmail.com>
+
+ 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) <Qgnutls_dll>: Initialize and staticpro it.
+ (syms_of_gnutls) <Sgnutls_available_p>: defsubr it.
+
+ * image.c: Include w32.h.
+ (Vimage_type_cache): Delete.
+ (syms_of_image) <Vimage_type_cache>: 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) <QCloaded_from, Vlibrary_cache>:
+ 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 <tzz@lifelogs.com>
+
+ * 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 <jan.h.d@swipnet.se>
+
+ * 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 <lekktu@gmail.com>
+
+ * sysdep.c (get_tty_size) [WINDOWSNT]: Implement. (Bug#8596)
+
+ 2011-05-02 Juanma Barranquero <lekktu@gmail.com>
+
+ * 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 <schwab@linux-m68k.org>
+
+ * 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 <larsi@gnus.org>
+
+ * 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 <eliz@gnu.org>
+
+ * 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 <eliz@gnu.org>
+
+ 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 <eliz@gnu.org>
+
+ * 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 <eggert@cs.ucla.edu>
+
+ * 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 <lekktu@gmail.com>
+
+ * w32.c (init_environment): Warn about defaulting HOME to C:\.
+
+ 2011-04-28 Juanma Barranquero <lekktu@gmail.com>
+
+ * keyboard.c (Qdelayed_warnings_hook): Define.
+ (command_loop_1): Run `delayed-warnings-hook'
+ if Vdelayed_warnings_list is non-nil.
+ (syms_of_keyboard) <delayed-warnings-hook>: DEFSYM it.
+ (syms_of_keyboard) <delayed-warnings-list>: DEFVAR_LISP it.
+
+ 2011-04-28 Eli Zaretskii <eliz@gnu.org>
+
+ * doprnt.c (doprnt): Don't return value smaller than the buffer
+ size if the message was truncated. (Bug#8545).
+
+ 2011-04-28 Juanma Barranquero <lekktu@gmail.com>
+
+ * 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 <eggert@cs.ucla.edu>
+
+ * doprnt.c (doprnt): Support "ll" length modifier, for long long.
+
+ 2011-04-27 Juanma Barranquero <lekktu@gmail.com>
+
+ * makefile.w32-in: Update dependencies.
+
+ 2011-04-27 Eli Zaretskii <eliz@gnu.org>
+
+ 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 <kasahara@nc.kyushu-u.ac.jp> (tiny change)
+
+ * buffer.c (init_buffer) [USE_MMAP_FOR_BUFFERS]: Adjust to aliasing
+ change.
+
+ 2011-04-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * 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 <eggert@cs.ucla.edu>
+
+ * 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 <inttypes.h>, 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
+ <http://lists.gnu.org/archive/html/emacs-devel/2011-04/msg00514.html>.
+ (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 <lekktu@gmail.com>
+
+ * keyboard.c (QCrtl): Rename from Qrtl. All uses changed.
+
+ 2011-04-26 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * gnutls.c (emacs_gnutls_handshake): Return an error if we're not
+ supposed to be handshaking. (Bug#8556)
+ Reported by Paul Eggert <eggert@cs.ucla.edu>.
+
+ 2011-04-26 Daniel Colascione <dan.colascione@gmail.com>
+
+ * 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 <dann@ics.uci.edu>
+
+ * alloc.c (check_sblock, check_string_bytes)
+ (check_string_free_list): Convert to standard C.
+
+ 2011-04-25 Teodor Zlatanov <tzz@lifelogs.com>
+
+ * w32.c (emacs_gnutls_push): Fix typo.
+
+ 2011-04-25 Eli Zaretskii <eliz@gnu.org>
+
+ * 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 <tzz@lifelogs.com>
+
+ * 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 <claudio.bley@gmail.com> (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 <eliz@gnu.org>
+
+ * 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.
+ <menu_help_message, prev_menu_help_message>: 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 <Qunspecified>: 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.
+ <char-direction-table>: Deleted.
+
+ 2011-04-23 Eli Zaretskii <eliz@gnu.org>
+
+ 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 <eliz@gnu.org>
+
+ * s/ms-w32.h (localtime): Redirect to sys_localtime.
+
+ * w32.c: Include <time.h>.
+ (sys_localtime): New function.
+
+ 2011-04-23 Chong Yidong <cyd@stupidchicken.com>
+
+ * xdisp.c (init_xdisp): Initialize echo_area_window (Bug#6451).
+
+ * buffer.c (syms_of_buffer): Doc fix (Bug#6902).
+
+ 2011-04-23 Samuel Thibault <sthibault@debian.org> (tiny change)
+
+ * sysdep.c (wait_for_termination): On GNU Hurd, kill returns -1 on
+ zombies (Bug#8467).
+
+ 2011-04-19 Eli Zaretskii <eliz@gnu.org>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * 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 <cyd@stupidchicken.com>
+
+ * 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 <eggert@cs.ucla.edu>
+
+ 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 <stdio.h>, 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 <eliz@gnu.org>
+
+ * 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) <pfreg>: Declare `long'.
+ (CHECK_INFINITE_LOOP) <failure>: Declare `ssize_t'.
+ <compile_stack_type>: `size' and `avail' are now `size_t'.
+
+ * regex.h <regoff_t>: 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 <bkey76@gmail.com>
+
+ * 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 <eggert@cs.ucla.edu>
+
+ * 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 <bkey76@gmail.com>
+
+ * 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 <monnier@iro.umontreal.ca>
+
+ * process.c (Qprocessp): Don't declare static.
+ * lisp.h (Qprocessp): Declare again.
+
+ 2011-04-15 Juanma Barranquero <lekktu@gmail.com>
+
+ * font.c (Qopentype): Don't make static (used from w32uniscribe.c).
+
+ 2011-04-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ 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 <schwab@linux-m68k.org>
* fileio.c (Finsert_file_contents): Fix typo in 2005-05-13
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;
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);
#include "nsterm.h"
#endif
- Lisp_Object Qwindowp, Qwindow_live_p, Qwindow_configuration_p;
- Lisp_Object Qwindow_deletable_p, Qdelete_window, Qdisplay_buffer;
- Lisp_Object Qreplace_buffer_in_windows, Qget_mru_window;
- Lisp_Object Qrecord_window_buffer;
- Lisp_Object Qresize_root_window, Qresize_root_window_vertically;
- Lisp_Object Qscroll_up, Qscroll_down, Qscroll_command;
- Lisp_Object Qsafe, Qabove, Qbelow;
- Lisp_Object Qauto_buffer_name;
+ Lisp_Object Qwindowp, Qwindow_live_p;
-static Lisp_Object Qwindow_configuration_p;
-static Lisp_Object Qdisplay_buffer;
++static Lisp_Object Qwindow_configuration_p, Qrecord_window_buffer;
++static Qwindow_deletable_p, Qdelete_window, Qdisplay_buffer;
++static Lisp_Object Qreplace_buffer_in_windows, Qget_mru_window;
++static Lisp_Object Qresize_root_window, Qresize_root_window_vertically;
+ static Lisp_Object Qscroll_up, Qscroll_down, Qscroll_command;
-static Lisp_Object Qwindow_size_fixed;
++static Lisp_Object Qsafe, Qabove, Qbelow;
++static Lisp_Object Qauto_buffer_name;
static int displayed_window_lines (struct window *);
static struct window *decode_window (Lisp_Object);
Lisp_Object minibuf_selected_window;
/* Hook run at end of temp_output_buffer_show. */
- Lisp_Object Qtemp_buffer_show_hook;
-
+ static Lisp_Object Qtemp_buffer_show_hook;
/* Incremented for each window created. */
-
static int sequence_number;
/* Nonzero after init_window_once has finished. */
static Lisp_Object Qwindow_configuration_change_hook;
/* Incremented by 1 whenever a window is deleted. */
- int window_deletion_count;
+ static int window_deletion_count;
/* Used by the function window_scroll_pixel_based */
-
static int window_scroll_pixel_based_preserve_x;
static int window_scroll_pixel_based_preserve_y;
return FRAME_MINIBUF_WINDOW (XFRAME (frame));
}
- DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p, Swindow_minibuffer_p, 0, 1, 0,
+ DEFUN ("window-minibuffer-p", Fwindow_minibuffer_p,
+ Swindow_minibuffer_p, 0, 1, 0,
doc: /* Return non-nil if WINDOW is a minibuffer window.
-WINDOW defaults to the selected window. */)
+WINDOW can be any window and defaults to the selected one. */)
(Lisp_Object window)
{
- struct window *w = decode_window (window);
- return MINI_WINDOW_P (w) ? Qt : Qnil;
+ return MINI_WINDOW_P (decode_any_window (window)) ? Qt : Qnil;
}
-
-DEFUN ("pos-visible-in-window-p", Fpos_visible_in_window_p,
- Spos_visible_in_window_p, 0, 3, 0,
- doc: /* Return non-nil if position POS is currently on the frame in WINDOW.
-Return nil if that position is scrolled vertically out of view.
-If a character is only partially visible, nil is returned, unless the
-optional argument PARTIALLY is non-nil.
-If POS is only out of view because of horizontal scrolling, return non-nil.
-If POS is t, it specifies the position of the last visible glyph in WINDOW.
-POS defaults to point in WINDOW; WINDOW defaults to the selected window.
-
-If POS is visible, return t if PARTIALLY is nil; if PARTIALLY is non-nil,
-return value is a list of 2 or 6 elements (X Y [RTOP RBOT ROWH VPOS]),
-where X and Y are the pixel coordinates relative to the top left corner
-of the window. The remaining elements are omitted if the character after
-POS is fully visible; otherwise, RTOP and RBOT are the number of pixels
-off-window at the top and bottom of the row, ROWH is the height of the
-display row, and VPOS is the row number (0-based) containing POS. */)
- (Lisp_Object pos, Lisp_Object window, Lisp_Object partially)
+/* Don't move this to window.el - this must be a safe routine. */
+DEFUN ("frame-first-window", Fframe_first_window, Sframe_first_window, 0, 1, 0,
+ doc: /* Return the topmost, leftmost live window on FRAME_OR_WINDOW.
+If omitted, FRAME_OR_WINDOW defaults to the currently selected frame.
+Else if FRAME_OR_WINDOW denotes any window, return the first window of
+that window's frame. If FRAME_OR_WINDOW denotes a live frame, return
+the first window of that frame. */)
+ (Lisp_Object frame_or_window)
{
- register struct window *w;
- register EMACS_INT posint;
- register struct buffer *buf;
- struct text_pos top;
- Lisp_Object in_window = Qnil;
- int rtop, rbot, rowh, vpos, fully_p = 1;
- int x, y;
+ Lisp_Object window;
- w = decode_window (window);
- buf = XBUFFER (w->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);
+}
\f
-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;
+}
+\f
+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,
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);
- }
-}
-
\f
- 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)
{
/* 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;
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))
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;
}
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]