From: Stefan Monnier Date: Tue, 30 Sep 2014 23:19:31 +0000 (-0400) Subject: Merge from emacs-24 X-Git-Tag: emacs-25.0.90~2635^2~679^2~179 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=07bec0fc67ee0b26685f0ec7f28d9b73f67bf3de;p=emacs.git Merge from emacs-24 --- 07bec0fc67ee0b26685f0ec7f28d9b73f67bf3de diff --cc etc/ChangeLog index 05f4dcade27,a1a8e258b11..b27e85e86f8 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@@ -1,48 -1,17 +1,62 @@@ + 2014-09-30 Bill Wohler + + Release MH-E version 8.6 + + * NEWS, MH-E-NEWS: Update for MH-E release 8.6. + -2014-09-29 Fabrice Niessen ++2014-09-30 Fabrice Niessen + + * themes/leuven-theme.el: Updates. + -2014-09-24 Stefan Monnier ++2014-09-30 Stefan Monnier + + * package-keyring.gpg: New file. + +2014-09-30 Paul Eggert + + * 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 + + * refcards/ru-refcard.tex: Bump version to 25.0.50. + + * refcards/emacsver.tex: Bump version to 25.0.50. + +2014-09-14 Daniel Colascione + + * NEWS: Mention changes to `insert-register' + +2014-09-13 Christopher Schmidt + + * NEWS: Mention nil `calendar-mode-line-format' will not modify + the mode line of the calendar buffer. (Bug#18467) + +2014-09-06 Leo Liu + + * NEWS: Mention vector qpattern for pcase. (Bug#18327). + +2014-09-01 Eli Zaretskii + + * NEWS: Mention that ls-lisp uses string-collate-lessp. + +2014-09-01 Paul Eggert + + --enable-silent-rules now suppresses more chatter. + * NEWS: Document this. + +2014-08-29 Leo Liu + + * NEWS: Mention (:append FUN) to minibuffer-with-setup-hook. + +2014-08-29 Eli Zaretskii + + * NEWS: Mention w32-collate-ignore-punctuation. + +2014-08-29 Dmitry Antipov + + * NEWS: Mention that `sort' can handle vectors. + 2014-08-28 Glenn Morris * emacs.appdata.xml: New file; description from Emacs's homepage. diff --cc lisp/ChangeLog index 745346a903a,9ac4f6b1bf1..e9db9891714 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@@ -1,183 -1,16 +1,195 @@@ + 2014-09-30 Leonardo Nobrega (tiny change) + + * progmodes/python.el (python-fill-paren): Don't inf-loop at EOB + (bug#18462). + -2014-09-27 Stefan Monnier ++2014-09-30 Stefan Monnier + + * 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-18 Kan-Ru Chen +2014-09-30 Stefan Monnier + + * 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 + + * 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 + + * minibuffer.el (completion-at-point): Emit warning for ill-behaved + completion functions. + +2014-09-29 Stefan Monnier + + * ses.el (ses--letref): Quote value before it gets re-evaluated. + +2014-09-28 Thien-Thi Nguyen + + 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 + + * 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 + + * progmodes/elisp-mode.el (elisp--eldoc-last-data): Use defvar. + + * emacs-lisp/eldoc.el (eldoc-mode): Fix thinko. + +2014-09-27 Stefan Monnier + + * 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 + + * 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 + + 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 + + * 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 + + * net/tramp-sh.el (tramp-sh-handle-vc-registered): Don't modify + the global vc-handled-backends (bug#18535). + +2014-09-24 Stefan Monnier + + * find-cmd.el (find-cmd): Use grep's `find-program' (bug#18518). + Suggested by . + +2014-09-24 Ulf Jasper + + * 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 * window.el (fit-window-to-buffer): When counting buffer width, count the whole visible buffer. Correctly convert the body-height diff --cc lisp/erc/ChangeLog index b5dd3f2f359,b3cdb067d13..1ea79dbbc1a --- a/lisp/erc/ChangeLog +++ b/lisp/erc/ChangeLog @@@ -1,55 -1,9 +1,63 @@@ -2014-09-24 Stefan Monnier ++2014-09-30 Stefan Monnier + + * 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 + + * erc.el (erc-format-nick): Fix code regression - Bug #18551 + +2014-09-25 Kelvin White + + * 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 ++2014-08-13 Kelvin White + + * 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 + + * erc-stamp.el (erc-timestamp-intangible): Disable by default because + `intangible' is evil. + +2014-08-07 Kelvin White + + * 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 + + * erc.el (erc-channel-receive-names): Reduce redundancy. + +2014-06-19 Kelvin White + + * 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 + + * erc.el (erc-invite-only-mode, erc-toggle-channel-mode): Simplify. + (erc-load-script): Tighten a regexp. 2014-02-25 Julien Danjou diff --cc lisp/mh-e/ChangeLog index 6e482280a9f,e0beeef46de..8008f07c700 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@@ -9,8 -9,8 +9,8 @@@ * 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 diff --cc src/ChangeLog index 7dfa2f80775,fdc30da96b6..257cc34c909 --- a/src/ChangeLog +++ b/src/ChangeLog @@@ -1,309 -1,43 +1,349 @@@ + 2014-09-30 Eli Zaretskii + + * 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-29 Eli Zaretskii ++2014-09-30 Eli Zaretskii + + * 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-24 Eli Zaretskii ++2014-09-30 Eli Zaretskii + + * 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 + + * 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 + + * msdos.c (internal_terminal_init): Bump version to 25. + +2014-09-29 Dmitry Antipov + + 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 + + * sheap.c (bss_sbrk_buffer_beg): Remove redundant variable. + * gmalloc.c [CYGWIN]: Adapt to change in sheap.c. + +2014-09-27 Ken Brown + + 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 + + * 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 + + * 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 + + * w32term.h (ALIGN_STACK): Fix the cpp condition. + +2014-09-25 Eli Zaretskii + + * 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 + + * 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 + + 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 + + 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 + + * 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 + + * 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 + + 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 + + * 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 + + 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 + + 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 On OSX, do not free font-specific data more than once (Bug#18501). diff --cc src/w32fns.c index 0a8bde1f661,bc95005f52a..98eb8e9f97b --- a/src/w32fns.c +++ b/src/w32fns.c @@@ -1946,17 -1910,8 +1946,17 @@@ w32_createvscrollbar (struct frame *f, 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; diff --cc src/w32term.c index 4f8482736c3,5a053b4fc0d..2a4c30af12d --- a/src/w32term.c +++ b/src/w32term.c @@@ -5144,30 -4754,42 +5144,38 @@@ w32_read_socket (struct terminal *termi 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; + } } } diff --cc src/window.c index f05ea561263,2210d5bc868..456a8bce691 --- a/src/window.c +++ b/src/window.c @@@ -5911,9 -5894,12 +5911,11 @@@ and redisplay normally--don't erase an 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'); + wset_redisplay (w); + - set_buffer_internal (obuf); return Qnil; }