-2014-09-29 Fabrice Niessen <fniessen@pirilampo.org>
+ 2014-09-30 Bill Wohler <wohler@newt.com>
+
+ Release MH-E version 8.6
+
+ * NEWS, MH-E-NEWS: Update for MH-E release 8.6.
+
-2014-09-24 Stefan Monnier <monnier@iro.umontreal.ca>
++2014-09-30 Fabrice Niessen <fniessen@pirilampo.org>
+
+ * themes/leuven-theme.el: Updates.
+
++2014-09-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * package-keyring.gpg: New file.
+
+2014-09-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * TODO: Remove char/unsigned char, long long, IRIX unexelf.c.
+ The first two are done, and IRIX support has been dropped.
+
+2014-09-29 Eli Zaretskii <eliz@gnu.org>
+
+ * refcards/ru-refcard.tex: Bump version to 25.0.50.
+
+ * refcards/emacsver.tex: Bump version to 25.0.50.
+
+2014-09-14 Daniel Colascione <dancol@dancol.org>
+
+ * NEWS: Mention changes to `insert-register'
+
+2014-09-13 Christopher Schmidt <ch@ristopher.com>
+
+ * NEWS: Mention nil `calendar-mode-line-format' will not modify
+ the mode line of the calendar buffer. (Bug#18467)
+
+2014-09-06 Leo Liu <sdl.web@gmail.com>
+
+ * NEWS: Mention vector qpattern for pcase. (Bug#18327).
+
+2014-09-01 Eli Zaretskii <eliz@gnu.org>
+
+ * NEWS: Mention that ls-lisp uses string-collate-lessp.
+
+2014-09-01 Paul Eggert <eggert@cs.ucla.edu>
+
+ --enable-silent-rules now suppresses more chatter.
+ * NEWS: Document this.
+
+2014-08-29 Leo Liu <sdl.web@gmail.com>
+
+ * NEWS: Mention (:append FUN) to minibuffer-with-setup-hook.
+
+2014-08-29 Eli Zaretskii <eliz@gnu.org>
+
+ * NEWS: Mention w32-collate-ignore-punctuation.
+
+2014-08-29 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * NEWS: Mention that `sort' can handle vectors.
+
2014-08-28 Glenn Morris <rgm@gnu.org>
* emacs.appdata.xml: New file; description from Emacs's homepage.
-2014-09-27 Stefan Monnier <monnier@iro.umontreal.ca>
+ 2014-09-30 Leonardo Nobrega <leonobr@gmail.com> (tiny change)
+
+ * progmodes/python.el (python-fill-paren): Don't inf-loop at EOB
+ (bug#18462).
+
-2014-09-18 Kan-Ru Chen <kanru@kanru.info>
++2014-09-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/package.el (package-check-signature): Default to nil if
+ GPG is not available.
+ (package-refresh-contents): Don't mess with the keyring if we won't
+ check the signatures anyway.
+
+2014-09-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * ses.el (ses--row, ses--col): New dyn-scoped vars, to replace row&col.
+ (ses-center, ses-center-span): Use them.
+ (ses-print-cell): Bind them while calling the printer.
+ (row, col, maxrow, maxcol): Don't declare as dynamically scoped.
+ (ses-dorange): Revert last change.
+ (ses-calculate-cell): Don't bind row&col dynamically while evaluating
+ the formula.
+ (ses-set-cell): Avoid `eval'.
+ (ses--time-check): Rename it from ses-time-check and turn it into
+ a macro.
+
+ * ses.el (ses-setup): Don't assume modifying the iteration var of
+ dotimes affects the iteration (bug#18191).
+
+2014-09-30 Vincent Belaïche <vincentb1@users.sourceforge.net>
+
+ * ses.el (ses-calculate-cell): Bind row and col dynamically to
+ their values with 'cl-progv'.
+ (ses-dorange): Bind row, col, maxrow and maxcol dynamically to
+ their values with 'cl-progv', also use non-interned symbols for
+ row, minrow, maxrow, mincol and maxcol.
+ (maxrow maxcol): New defvar, to make the compiler happy.
+
+2014-09-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * minibuffer.el (completion-at-point): Emit warning for ill-behaved
+ completion functions.
+
+2014-09-29 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * ses.el (ses--letref): Quote value before it gets re-evaluated.
+
+2014-09-28 Thien-Thi Nguyen <ttn@gnu.org>
+
+ Font-lock `cl-flet*', too.
+ * emacs-lisp/lisp-mode.el (lisp-cl-font-lock-keywords-2):
+ Add "flet*" to intermediate var `cl-lib-kw'.
+
+2014-09-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * epg-config.el (epg-gpg-program): Use the plain program names rather
+ than their absolute file name.
+
+ * subr.el (track-mouse): New macro.
+ * emacs-lisp/cconv.el (cconv-convert, cconv-analyse-form):
+ Remove track-mouse case.
+ * emacs-lisp/bytecomp.el (byte-compile-track-mouse): Remove.
+
+2014-09-27 Leo Liu <sdl.web@gmail.com>
+
+ * progmodes/elisp-mode.el (elisp--eldoc-last-data): Use defvar.
+
+ * emacs-lisp/eldoc.el (eldoc-mode): Fix thinko.
+
+2014-09-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/pcase.el (pcase--split-match, pcase--app-subst-match):
+ Handle the case where `match' is :pcase--succeed or :pcase--fail
+ (bug#18554).
+
+ Introduce global-eldoc-mode. Move Elisp-specific code to elisp-mode.el.
+ * emacs-lisp/eldoc.el (global-eldoc-mode): New minor mode.
+ (eldoc-schedule-timer): Obey it.
+ (eldoc-documentation-function): Default to nil.
+ (eldoc-mode): Don't enable if eldoc-documentation-function is not set.
+ (eldoc-documentation-function-default, eldoc-get-fnsym-args-string)
+ (eldoc-highlight-function-argument, eldoc-get-var-docstring)
+ (eldoc-last-data-store, eldoc-docstring-first-line)
+ (eldoc-docstring-format-sym-doc, eldoc-fnsym-in-current-sexp)
+ (eldoc-beginning-of-sexp, eldoc-current-symbol)
+ (eldoc-function-argstring): Move to elisp-mode.el.
+ (eldoc-symbol-function): Remove, unused.
+ * progmodes/elisp-mode.el: New file. Rename all "eldoc-*" to "elisp--*".
+ (elisp-completion-at-point): Rename from lisp-completion-at-point.
+ (elisp--preceding-sexp): Rename from preceding-sexp.
+ * loadup.el: Load new file progmodes/elisp-mode.
+ * ielm.el (inferior-emacs-lisp-mode): Set eldoc-documentation-function.
+ * emacs-lisp/lisp.el (lisp--local-variables-1, lisp--local-variables)
+ (lisp--local-variables-completion-table, lisp--expect-function-p)
+ (lisp--form-quoted-p, lisp--company-doc-buffer)
+ (lisp--company-doc-string, lisp--company-location)
+ (lisp-completion-at-point): Move to elisp-mode.el.
+ * emacs-lisp/lisp-mode.el (lisp--mode-syntax-table): New syntax-table,
+ extracted from emacs-lisp-mode-syntax-table.
+ (emacs-lisp-mode-abbrev-table, emacs-lisp-mode-syntax-table): Move to
+ elisp-mode.el.
+ (lisp-imenu-generic-expression): Add comments to document what comes
+ from which Lisp dialect.
+ (emacs-lisp-mode-map, emacs-lisp-byte-compile)
+ (emacs-lisp-byte-compile-and-load, emacs-lisp-mode-hook)
+ (emacs-lisp-mode, emacs-list-byte-code-comment-re)
+ (emacs-lisp-byte-code-comment)
+ (emacs-lisp-byte-code-syntax-propertize, emacs-lisp-byte-code-mode)
+ (lisp-interaction-mode-map, lisp-interaction-mode)
+ (eval-print-last-sexp, last-sexp-setup-props)
+ (last-sexp-toggle-display, prin1-char, preceding-sexp)
+ (eval-last-sexp-1, eval-last-sexp-print-value)
+ (eval-last-sexp-fake-value, eval-sexp-add-defvars, eval-last-sexp)
+ (eval-defun-1, eval-defun-2, eval-defun): Move to elisp-mode.el.
+
+2014-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * progmodes/grep.el (grep-regexp-alist): Use more-accurate regexp.
+ Do not match file names that end in '/', as they cannot be 'grep'
+ hits nowadays. This prevents confusion when 'grep -r' reports a
+ match in a file whose basename is ':12345:'. Conversely, do not
+ require exactly the same sequence of spaces and tabs after both
+ colons, and allow spaces or tabs before the second colon, as per
+ the POSIX spec for 'grep' output.
+
+2014-09-26 Leo Liu <sdl.web@gmail.com>
+
+ Add cl-parse-integer based on parse-integer (Bug#18557)
+ * calendar/parse-time.el (parse-time-digits): Remove.
+ (digit-char-p, parse-integer) Moved to cl-lib.el.
+ (parse-time-tokenize, parse-time-rules, parse-time-string):
+ Use cl-parse-integer.
+
+ * emacs-lisp/cl-extra.el (cl-parse-integer): New function.
+
+ * emacs-lisp/cl-lib.el (cl-digit-char-table): New var.
+ (cl-digit-char-p): New function.
+
+2014-09-25 Juri Linkov <juri@jurta.org>
+
+ * vc/add-log.el (change-log-next-buffer): Don't create an empty
+ buffer "ChangeLog" when the current buffer doesn't match ChangeLog.[0-9].
+ Return the current buffer if no files match the default pattern
+ ChangeLog.[0-9]. Signal "end of multi" when file is nil. (Bug#18547)
+
+2014-09-25 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * net/tramp-sh.el (tramp-sh-handle-vc-registered): Don't modify
+ the global vc-handled-backends (bug#18535).
+
+2014-09-24 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * find-cmd.el (find-cmd): Use grep's `find-program' (bug#18518).
+ Suggested by <lompik@voila.fr>.
+
+2014-09-24 Ulf Jasper <ulf.jasper@web.de>
+
+ * net/newst-treeview.el (newsticker--treeview-do-get-node-by-id):
+ Rename from `newsticker--treeview-do-get-node'.
+ (newsticker--treeview-get-node-by-id):
+ Rename from `newsticker--treeview-get-node'.
+ (newsticker--treeview-buffer-init)
+ (newsticker--treeview-buffer-init): Disable buffer undo.
+ (newsticker--treeview-unfold-node): Adapt to modified
+ `newsticker--group-find-parent-group'.
+ (newsticker--group-do-find-group):
+ Rename from `newsticker--group-do-find-group-for-feed'.
+ Now works for both, groups and feeds.
+ (newsticker--group-find-parent-group):
+ Rename from `newsticker--group-find-group-for-feed'.
+ Now works for both, groups and feeds.
+ (newsticker--group-do-get-parent-group)
+ (newsticker--group-get-parent-group): Remove.
+ (newsticker-group-add-group): Change interactive prompts.
+ (newsticker-group-add-group): Finally jump to added group.
+ (newsticker-group-delete-group): Finally jump to current feed.
+ (newsticker--group-do-rename-group, newsticker-group-rename-group)
+ (newsticker--get-group-names, newsticker--group-names): New.
+ (newsticker-group-move-feed): Finally jump to moved feed.
+ (newsticker-group-shift-feed-down, newsticker-group-shift-feed-up)
+ (newsticker-group-shift-group-down)
+ (newsticker-group-shift-group-up, newsticker--group-shift): New.
+ (newsticker-treeview-mode-map): New keybindings for new shift commands.
+
+ * net/newst-backend.el (newsticker--item-list)
+ (newsticker--item-position, newsticker--prev-message)
+ (newsticker--scrollable-text): Move to newst-ticker.el.
+
+ * net/newst-ticker.el (newsticker--item-list)
+ (newsticker--item-position, newsticker--prev-message)
+ (newsticker--scrollable-text): Move from newst-backend.el.
+
+2014-09-22 Kan-Ru Chen <kanru@kanru.info>
* window.el (fit-window-to-buffer): When counting buffer width,
count the whole visible buffer. Correctly convert the body-height
-2014-09-24 Stefan Monnier <monnier@iro.umontreal.ca>
++2014-09-30 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * erc-track.el (erc-modified-channels-display): Update all mode lines
+ if needed (bug#18510). Remove call to erc-modified-channels-object
+ where we ignored the return value.
- (erc-modified-channels-update): Don't force-mode-line-update here any more.
++ (erc-modified-channels-update): Don't force-mode-line-update here
++ any more.
++
+2014-09-26 Kelvin White <kwhite@gnu.org>
+
+ * erc.el (erc-format-nick): Fix code regression - Bug #18551
+
+2014-09-25 Kelvin White <kwhite@gnu.org>
+
+ * erc.el: Follow Emacs version instead of tracking it seperately.
+ (erc-quit/part-reason-default) : Clean up quit/part message
+ functions by abstracting repetitive code, change version string.
+ (erc-quit-reason-various, erc-quit-reason-normal, erc-quit-reason-zippy)
+ (erc-part-reason-normal, erc-part-reason-zippy, erc-part-reason-various)
+ (erc-cmd-SV, erc-ctcp-query-VERSION, erc-version, erc-version-string):
+ Change version string.
+
- 2014-08-13 Kelvin White <kwhite@gnu.org>
++2014-08-13 Kelvin White <kwhite@gnu.org>
+
+ * erc.el (erc-send-input): Disable display commands in current buffer
+ (erc-format-target-and/or-network): Fix cases when buffer name is set
+
+2014-08-12 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * erc-stamp.el (erc-timestamp-intangible): Disable by default because
+ `intangible' is evil.
+
+2014-08-07 Kelvin White <kwhite@gnu.org>
+
+ * erc.el (erc-channel-receive-names): Fix variable names
+ (erc-format-target-and/or-network): Rename server-buffers to
+ network name if possible
+
+2014-07-08 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * erc.el (erc-channel-receive-names): Reduce redundancy.
+
+2014-06-19 Kelvin White <kwhite@gnu.org>
+
+ * erc-backend.el: Handle user modes in relevant server responses
+ * erc.el: Better user mode support.
+ (erc-channel-user): Add members for new modes.
+ (erc-channel-member-halfop-p, erc-channel-user-admin-p)
+ (erc-channel-user-owner-p): Use new struct members.
+ (erc-format-nick, erc-format-@nick): Display user modes as nick prefix.
+ (erc-nick-prefix-face, erc-my-nick-prefix-face): Add new faces
+ (erc-get-user-mode-prefix): Return symbol for mode prefix.
+ (erc-update-channel-member, erc-update-current-channel-member)
+ (erc-channel-receive-names): Update channel users.
+ (erc-nick-at-point): Return correct user info.
+
+2014-04-04 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * erc.el (erc-invite-only-mode, erc-toggle-channel-mode): Simplify.
+ (erc-load-script): Tighten a regexp.
2014-02-25 Julien Danjou <julien@danjou.info>
* mh-comp.el (mh-insert-x-face): Ensure that mh-x-face-file is a
string before trying to use it (closes SF #474).
(mh-bare-components): New function to create a temporary initial
-- components file; replaces mh-find-components. Improve the temp
-- folder and file names as per a suggestion from Bill Wohler. Also
++ components file; replaces mh-find-components. Improve the temp
++ folder and file names as per a suggestion from Bill Wohler. Also
address XEmacs compatibility issues: use mm-make-temp-file instead
of make-temp-file, and only pass one argument to delete-directory.
(mh-edit-again, mh-send-sub): Use mh-bare-components instead of
-2014-09-29 Eli Zaretskii <eliz@gnu.org>
+ 2014-09-30 Eli Zaretskii <eliz@gnu.org>
+
+ * w32fns.c (w32_createwindow): Accept an additional argument, an
+ array of 2 values specifying the coordinates of the frame's
+ top-left corner. Use these values instead of calling x_get_arg,
+ which can cons Lisp objects, and therefore cannot be called except
+ from the main thread. Remove redundant tests for the default
+ values.
+ (my_create_window): Move the calculation of the coordinates of the
+ frame's top-left edge here. Pass them to the input thread via the
+ second parameter of the WM_EMACS_CREATEWINDOW message. See
+ http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00892.html
+ for the details.
+
-2014-09-24 Eli Zaretskii <eliz@gnu.org>
++2014-09-30 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (cursor_row_fully_visible_p): Update commentary.
+ (redisplay_window): Treat the frame's frozen_window_starts flag
+ the same way as the optional_new_start flag for the window: only
+ obey it if the glyph row showing point will be fully visible.
+ Likewise when the window start is in a continuation line. If,
+ after trying everything under the 'force_start' label, point is
+ still not fully visible, give up and scroll the window. Add
+ debugging traces. (Bug#18545)
+
+ * window.c (Frecenter): Set the window's redisplay flag.
+
++2014-09-30 Eli Zaretskii <eliz@gnu.org>
+
+ * w32term.c (w32_read_socket): Don't use frame dimensions for
+ resizing if GetClientRect returned an empty (0, 0, 0, 0)
+ rectangle. Check the return value of GetClientRect, and don't use
+ the results if it didn't succeed.
+
+ * dispnew.c (change_frame_size_1): Recompute the frame dimensions
+ in columns and lines after correcting the pixel dimensions in
+ check_frame_size.
+ (adjust_decode_mode_spec_buffer): Add assertion to avoid passing
+ negative values to xrealloc. (Bug#18528)
+
+2014-09-30 Paul Eggert <eggert@cs.ucla.edu>
+
+ * alloc.c: Remove now-unnecessary check.
+ Suggested by Dmitry Antipov in:
+ http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00891.html
+
+ * xterm.c (x_term_init): Allocate temps on stack, not on heap.
+
+ * frame.c (x_set_frame_parameters): Port --enable-gcc-warnings
+ to Ubuntu 14.04.1 x86-64.
+
+ Simplify stack-allocated Lisp objects, and make them more portable.
+ The build_local_string macro was used in two ways: (1) string
+ literals for which scoped allocation suffices, and (2) file name
+ components, where it's not safe in general to assume bounded-size
+ ASCII data. Simplify by defining a new macro SCOPED_STRING that
+ allocates a block-scope string, and by using SCOPED_STRING for (1)
+ and build_string for (2). Furthermore, actually use stack
+ allocation only for objects known to have sufficient alignment.
+ This simpler implementation means Emacs can make
+ USE_STACK_LISP_OBJECTS the default unless GC_MARK_STACK !=
+ GC_MAKE_GCPROS_NOOPS.
+ * lisp.h (GCALIGNED): Align even if !USE_STACK_LISP_OBJECTS,
+ for fewer differences among implementations.
+ (struct Lisp_String): Now GCALIGNED.
+ (USE_STACK_LISP_OBJECTS): Default to true, since the
+ implementation no longer insists on a nonempty GCALIGNED.
+ But make it false if GC_MARK_STACK != GC_MAKE_GCPROS_NOOPS.
+ (SCOPED_CONS_INITIALIZER): Remove, since it's no longer needed
+ separately. Move definiens to scoped_cons. The old definition
+ was incorrect when GCALIGNED was defined to be empty.
+ (union Aligned_String): New type.
+ (USE_STACK_CONS, USE_STACK_STRING): New constants, so that the
+ implementation ports to compilers that don't align strictly enough.
+ Don't worry about the union sizes; it's not worth bothering about.
+ (scoped_cons, scoped_list1, scoped_list3, scoped_list4):
+ Rewrite using USE_STACK_CONS.
+ (scoped_cons): Assume the use of union Aligned_Cons.
+ (lisp_string_size, make_local_string, build_local_string): Remove.
+ Unless otherwise specified, all callers of build_local_string
+ changed to use SCOPED_STRING.
+ (SCOPED_STRING): New macro.
+ * data.c (wrong_choice):
+ * menu.c (single_menu_item):
+ * process.c (Fformat_network_address):
+ Hoist use of SCOPED_STRING out of a scope, so that its returned
+ object lives long enough.
+ * fileio.c (Fexpand_file_name): Use build_string, not SCOPED_STRING,
+ as the string might be long or might not be ASCII.
+
+2014-09-29 Eli Zaretskii <eliz@gnu.org>
+
+ * msdos.c (internal_terminal_init): Bump version to 25.
+
+2014-09-29 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Keep stack-allocated Lisp objects fast rather than versatile.
+ * lisp.h (union Aligned_Cons) [!GCALIGNED]: Define as such.
+ (SCOPED_CONS_INITIALIZER): New macro.
+ (scoped_cons) [USE_STACK_LISP_OBJECTS]: Use it.
+ (USE_LOCAL_ALLOCA): Remove.
+ (local_cons, local_list1, local_list2, local_list3, local_list4):
+ Remove. Stack overflow checking makes them too slow.
+ (make_local_vector): Likewise. Also we just don't have enough
+ users for it.
+ (enum LISP_STRING_OVERHEAD): Remove.
+ (local_string_init, local_vector_init): Remove prototypes.
+ (make_local_string, build_local_string): Redesign to target short
+ compile-time string constants, fall back to regular string allocation
+ where appropriate.
+ (lisp_string_size): New function.
+ (verify_ascii) [ENABLE_CHECKING]: Add prototype.
+ * alloc.c (local_string_init, local_vector_init): Remove.
+ (verify_ascii) [ENABLE_CHECKING]: New function.
+ * buffer.c, charset.c, chartab.c, data.c, editfns.c, emacs.c, fileio.c:
+ * fns.c, font.c, fontset.c, frame.c, keyboard.c, keymap.c, lread.c:
+ * menu.c, minibuf.c, process.c, textprop.c, xdisp.c, xfns.c, xfont.c:
+ * xselect.c, xterm.c: All related users changed.
+
+2014-09-28 Ken Brown <kbrown@cornell.edu>
+
+ * sheap.c (bss_sbrk_buffer_beg): Remove redundant variable.
+ * gmalloc.c [CYGWIN]: Adapt to change in sheap.c.
+
+2014-09-27 Ken Brown <kbrown@cornell.edu>
+
+ Fix implementation of HYBRID_MALLOC on Cygwin.
+ * sheap.c (bss_sbrk_buffer_end): Cast to void *.
+ (bss_sbrk_buffer_beg): New variable. Use it...
+ * gmalloc.c (ALLOCATED_BEFORE_DUMPING) [CYGWIN]: ...here, to fix
+ incorrect definition.
+
+2014-09-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * keyboard.c (track-mouse): Rename to internal--track-mouse.
+ Make it into a function and change arg to be a function.
+
+ * lisp.mk (lisp): Add elisp-mode.elc.
+
+2014-09-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ * xfns.c (x_default_scroll_bar_color_parameter):
+ Use USE_LOCAL_ALLOCA only if USE_TOOLKIT_SCROLL_BARS,
+ to pacify --enable-gcc-warnings in non-scrollbar builds.
+
+2014-09-26 Ken Brown <kbrown@cornell.edu>
+
+ * w32term.h (ALIGN_STACK): Fix the cpp condition.
+
+2014-09-25 Eli Zaretskii <eliz@gnu.org>
+
+ * lisp.h (USE_STACK_LISP_OBJECTS): Default to false for 32-bit
+ MinGW builds that use GCC before 4.2.
+
+ Default to stack objects on DOS_NT platforms as well.
+ * w32term.h (ALIGN_STACK) [__GNUC__]: Define to
+ __attribute__((force_align_arg_pointer)) for GCC 4.2 and later.
+
+ * lisp.h (USE_STACK_LISP_OBJECTS): Remove the !DOS_NT condition.
+
+ * w32proc.c (enum_locale_fn, enum_codepage_fn): Add the
+ ALIGN_STACK attribute.
+
+ * w32fns.c (w32_monitor_enum): Add the ALIGN_STACK attribute.
+
+ * w32uniscribe.c (add_opentype_font_name_to_list): Add the
+ ALIGN_STACK attribute.
+
+ * w32font.c (add_font_name_to_list, add_font_entity_to_list)
+ (add_one_font_entity_to_list): Add the ALIGN_STACK attribute.
+
+2014-09-25 Martin Rudalics <rudalics@gmx.at>
+
+ * frame.c (frame_inhibit_resize):
+ * widget.c (EmacsFrameResize):
+ * window.c (resize_frame_windows, Fset_window_configuration):
+ * xdisp.c (expose_frame):
+ * xfns.c (x_change_tool_bar_height):
+ * xmenu.c (update_frame_menubar):
+ * xterm.c (handle_one_xevent, x_new_font, x_set_window_size_1):
+ Remove code left dead after 2014-07-27 changes.
+
+2014-09-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix local_cons etc. to not exhaust the stack when in a loop.
+ Problem reported in:
+ http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00696.html
+ * buffer.c (Fother_buffer, other_buffer_safely, init_buffer):
+ * charset.c (load_charset_map_from_file, Ffind_charset_region)
+ (Ffind_charset_string):
+ * chartab.c (uniprop_encode_value_numeric, uniprop_table):
+ * data.c (wrong_range):
+ * editfns.c (Fpropertize, format2):
+ * emacs.c (init_cmdargs, decode_env_path):
+ * fileio.c (auto_save_error):
+ * fns.c (Fyes_or_no_p):
+ * font.c (font_style_to_value, font_parse_xlfd)
+ (font_parse_family_registry, font_delete_unmatched)
+ (font_add_log):
+ * fontset.c (Fset_fontset_font):
+ * frame.c (x_get_arg):
+ * keyboard.c (echo_dash, safe_run_hooks_error, parse_menu_item)
+ (read_char_minibuf_menu_prompt):
+ * keymap.c (silly_event_symbol_error, describe_vector):
+ * lread.c (load_warn_old_style_backquotes):
+ * menu.c (single_menu_item):
+ * minibuf.c (Fread_buffer):
+ * process.c (status_message, Fformat_network_address)
+ (server_accept_connection):
+ * textprop.c (copy_text_properties):
+ * xdisp.c (Fcurrent_bidi_paragraph_direction):
+ * xfns.c (x_default_scroll_bar_color_parameter):
+ * xfont.c (xfont_open):
+ * xselect.c (x_clipboard_manager_error_1):
+ * xterm.c (x_term_init):
+ Put USE_LOCAL_ALLOCA at the start of the function.
+ * fns.c (maybe_resize_hash_table): Use build_string instead of
+ build_local_string, since we'd otherwise need a conditional
+ USE_LOCAL_ALLOCA here, but this is just debugging output and is
+ not worth the bother of optimization.
+ * font.c (font_delete_unmatched): Remove by-hand code that
+ observed MAX_ALLOCA limit, since it's now done automatically.
+ * keymap.c (Fsingle_key_description): Put USE_SAFE_ALLOCA at top,
+ since build_local_string needs its sa_alloc.
+ * lisp.h (lisp_word_count): New function.
+ (SAFE_ALLOCA_LISP): Use it.
+ (USE_LOCAL_ALLOCA): New macro.
+ (local_cons, make_local_vector, make_local_string):
+ Observe the MAX_ALLOCA limit.
+ (LISP_STRING_OVERHEAD): New constant.
+ (make_local_string): Use it.
+
+2014-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ Default to stack objects on non-GNU/Linux, non-DOS_NT platforms.
+ * lisp.h (USE_STACK_LISP_OBJECTS): Also default to true
+ if !defined DOS_NT && !defined GNU_LINUX. I've tested this on AIX
+ and Solaris and it's likely to work on similar platforms.
+
+ Avoid signed integer overflow when converting Time to ptrdiff_t.
+ * keyboard.c (INPUT_EVENT_POS_MAX, INPUT_EVENT_POS_MIN):
+ New macros.
+ (position_to_Time, Time_to_position): New functions.
+ (gen_help_event, kbd_buffer_get_event): Use them.
+ * systime.h (Time) [emacs && !HAVE_X_WINDOWS]:
+ Go back to plain 'unsigned long', so that 'Time' is the same
+ for both X and non-X builds; this is less likely to cause surprise.
+ * termhooks.h: Remove compile-time check that Time and ptrdiff_t
+ are the same size; this is no longer required.
+
+ * keyboard.c (make_lispy_event): Avoid unnecessary tests
+ of bit 28 and of whether an unsigned value is negative.
+ This simplifies the code a bit, and pacifies clang 3.4.
+
+2014-09-24 Eli Zaretskii <eliz@gnu.org>
+
+ * systime.h (Time): Define as size_t, to be consistent with 64-bit
+ Windows builds, where 'long' is a 32-bit type.
+
+ * w32inevt.h (w32_console_mouse_position): Update the argument
+ types to use 'Time'.
+
+ * w32term.c (w32_mouse_position)
+ (x_horizontal_scroll_bar_report_motion)
+ (x_scroll_bar_report_motion): Update the argument types to use
+ 'Time'.
+
+2014-09-24 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * termhooks.h (enum scroll_bar_part): Begin from 0 to allow...
+ (struct input_event): ...unsigned bitfields. Likewise for
+ `event_kind' member. Prefer unsigned for `code' and 'modifiers'.
+ Use `timestamp' for HELP_EVENT position. Add compile-time assert.
+ * keyboard.c (gen_help_event, kbd_buffer_store_help_event)
+ (kbd_buffer_get_event): Adjust users.
+ (scroll_bar_parts): Add Qnil to match scroll_bar_nowhere.
+ (make_scroll_bar_position): New function, refactored out of...
+ (make_lispy_event): ...adjusted user.
+ * nsterm.h (EmacsScroller): Use enum for `last_hit_part' member.
+ * nsterm.m (ns_mouse_position, mouseUp):
+ * term.c (term_mouse_position):
+ * w32inevt.c (w32_console_mouse_position):
+ * w32term.c (w32_mouse_position):
+ * xterm.c (XTmouse_position): Use scroll_bar_above_handle.
+ (x_send_scroll_bar_event, xm_scroll_callback, xg_scroll_callback):
+ Prefer enum and explicit enum members to integers and numeric values.
+
+ * chartab.c (uniprop_encode_value_numeric):
+ * font.c (font_style_to_value): Use make_local_vector.
+ (font_delete_unmatched): Use local_cons but respect MAX_ALLOCA.
+ * keymap.c (append_key): Use scoped_list1.
+
+ * lisp.h (USE_STACK_LISP_OBJECTS): Enable by default if GNU_LINUX
+ && __GNUC__ && !__clang__. Mention known problems. Adjust comment.
+
+2014-09-24 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix some slow uses and misuses of strcat.
+ * doc.c (get_doc_string):
+ * gtkutil.c (get_utf8_string):
+ * xsmfns.c (x_session_initialize):
+ Avoid recomputation of string length.
+ * ftfont.c (ftfont_spec_pattern):
+ * xfns.c (xic_create_fontsetname):
+ Don't assume output buffer is initially zero.
+
+2014-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ * lisp.h (lispstpcpy): Rename from lispstrcpy, and act like stpcpy.
+ All callers changed.
+ * xterm.c (x_term_init): Use new functionality to avoid two needs
+ to compute a string length.
+
+ * dispextern.h, xdisp.c (window_box_right_offset): Now static.
+
+2014-09-23 Dmitry Antipov <dmantipov@yandex.ru>
+
+ Use known length of a Lisp string to copy it faster.
+ * lisp.h (lispstrcpy): New function. Add comment.
+ * callproc.c (child_setup):
+ * dbusbind.c (xd_append_arg):
+ * doc.c (get_doc_string):
+ * font.c (Ffont_xlfd_name):
+ * frame.c (xrdb_get_resource):
+ * process.c (Fmake_network_process, network_interface_info):
+ * w32fns.c (Fx_open_connection):
+ * w32proc.c (sys_spawnve):
+ * xfns.c (select_visual):
+ * xfont.c (xfont_list):
+ * xsmfns.c (x_session_initialize):
+ * xterm.c (x_term_init): Use it.
+
+2014-09-23 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix SAFE_ALLOCA to not exhaust the stack when in a loop.
+ Problem reported by Dmitry Antipov in thread leading to:
+ http://lists.gnu.org/archive/html/emacs-devel/2014-09/msg00713.html
+ This patch fixes only SAFE_ALLOCA, SAFE_NALLOCA, and SAFE_ALLOCA_LISP;
+ the experimental local_* macros enabled by USE_LOCAL_ALLOCATORS
+ remain unfixed.
+ * callproc.c (call_process): Save and restore sa_avail.
+ * lisp.h (USE_SAFE_ALLOCA): Define sa_avail.
+ (AVAIL_ALLOCA): New macro.
+ (SAFE_ALLOCA, SAFE_NALLOCA, SAFE_ALLOCA_LISP):
+ Use it, and check against sa_avail rather than MAX_ALLOCA.
+
2014-09-22 Dmitry Antipov <dmantipov@yandex.ru>
On OSX, do not free font-specific data more than once (Bug#18501).
FRAME_W32_WINDOW (f), NULL, hinst, NULL);
}
+static HWND
+w32_createhscrollbar (struct frame *f, struct scroll_bar * bar)
+{
+ return CreateWindow ("SCROLLBAR", "", SBS_HORZ | WS_CHILD | WS_VISIBLE,
+ /* Position and size of scroll bar. */
+ bar->left, bar->top, bar->width, bar->height,
+ FRAME_W32_WINDOW (f), NULL, hinst, NULL);
+}
+
static void
- w32_createwindow (struct frame *f)
+ w32_createwindow (struct frame *f, int *coords)
{
HWND hwnd;
RECT rect;
RECT rect;
int rows, columns, width, height, text_width, text_height;
- GetClientRect (msg.msg.hwnd, &rect);
-
- height = rect.bottom - rect.top;
- width = rect.right - rect.left;
- text_width = FRAME_PIXEL_TO_TEXT_WIDTH (f, width);
- text_height = FRAME_PIXEL_TO_TEXT_HEIGHT (f, height);
- /* rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, height); */
- /* columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, width); */
-
- /* TODO: Clip size to the screen dimensions. */
-
- /* Even if the number of character rows and columns has
- not changed, the font size may have changed, so we need
- to check the pixel dimensions as well. */
-
- if (width != FRAME_PIXEL_WIDTH (f)
- || height != FRAME_PIXEL_HEIGHT (f)
- || text_width != FRAME_TEXT_WIDTH (f)
- || text_height != FRAME_TEXT_HEIGHT (f))
+ if (GetClientRect (msg.msg.hwnd, &rect)
+ /* GetClientRect evidently returns (0, 0, 0, 0) if
+ called on a minimized frame. Such "dimensions"
+ aren't useful anyway. */
+ && !(rect.bottom == 0
+ && rect.top == 0
+ && rect.left == 0
+ && rect.right == 0))
{
- change_frame_size (f, text_width, text_height, 0, 1, 0, 1);
- SET_FRAME_GARBAGED (f);
- cancel_mouse_face (f);
- f->win_gravity = NorthWestGravity;
+ height = rect.bottom - rect.top;
+ width = rect.right - rect.left;
+ text_width = FRAME_PIXEL_TO_TEXT_WIDTH (f, width);
+ text_height = FRAME_PIXEL_TO_TEXT_HEIGHT (f, height);
- rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, height);
- columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, width);
++ /* rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, height); */
++ /* columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, width); */
+
+ /* TODO: Clip size to the screen dimensions. */
+
+ /* Even if the number of character rows and columns
+ has not changed, the font size may have changed,
+ so we need to check the pixel dimensions as well. */
+
+ if (width != FRAME_PIXEL_WIDTH (f)
+ || height != FRAME_PIXEL_HEIGHT (f)
+ || text_width != FRAME_TEXT_WIDTH (f)
+ || text_height != FRAME_TEXT_HEIGHT (f))
+ {
+ change_frame_size (f, text_width, text_height, 0, 1, 0, 1);
+ SET_FRAME_GARBAGED (f);
+ cancel_mouse_face (f);
- /* Do we want to set these here ???? */
- /** FRAME_PIXEL_WIDTH (f) = width; **/
- /** FRAME_TEXT_WIDTH (f) = text_width; **/
- /** FRAME_PIXEL_HEIGHT (f) = height; **/
+ f->win_gravity = NorthWestGravity;
+ }
}
}
w->optional_new_start = 1;
- w->start_at_line_beg = (bytepos == BEGV_BYTE ||
- FETCH_BYTE (bytepos - 1) == '\n');
+ w->start_at_line_beg = (bytepos == BEGV_BYTE
+ || FETCH_BYTE (bytepos - 1) == '\n');
- set_buffer_internal (obuf);
+ wset_redisplay (w);
+
return Qnil;
}