------------------------------------------------------------ revno: 116652 committer: Glenn Morris branch nick: trunk timestamp: Tue 2014-03-04 00:37:48 -0800 message: * lisp/cedet/semantic/util.el (semantic-complete-symbol): Replace use of obsolete argument of display-completion-list. diff: === modified file 'lisp/cedet/ChangeLog' --- lisp/cedet/ChangeLog 2014-03-03 04:57:26 +0000 +++ lisp/cedet/ChangeLog 2014-03-04 08:37:48 +0000 @@ -1,3 +1,8 @@ +2014-03-04 Glenn Morris + + * semantic/util.el (semantic-complete-symbol): + Replace use of obsolete argument of display-completion-list. + 2014-02-03 Glenn Morris * semantic/senator.el (senator-copy-tag-to-register): === modified file 'lisp/cedet/semantic/util.el' --- lisp/cedet/semantic/util.el 2014-01-01 07:43:34 +0000 +++ lisp/cedet/semantic/util.el 2014-03-04 08:37:48 +0000 @@ -419,7 +419,8 @@ (setq list (sort list 'string<)) (if (> (length list) 1) (with-output-to-temp-buffer "*Completions*" - (display-completion-list list pattern)) + (display-completion-list + (completion-hilit-commonality list (length pattern) nil))) ;; Bury any out-of-date completions buffer. (let ((win (get-buffer-window "*Completions*" 0))) (if win (with-selected-window win (bury-buffer)))))) ------------------------------------------------------------ revno: 116651 committer: Glenn Morris branch nick: trunk timestamp: Tue 2014-03-04 00:35:11 -0800 message: Small smie.el doc and fix * lisp/emacs-lisp/smie.el (smie-config-guess): Doc fix. Explicit error if no grammar. (smie-config-save): Doc fix. Fix quote typo. * etc/NEWS: Related edit. diff: === modified file 'etc/NEWS' --- etc/NEWS 2014-03-03 01:41:28 +0000 +++ etc/NEWS 2014-03-04 08:35:11 +0000 @@ -896,9 +896,14 @@ --- *** `sh-mode' now has its own setting for `add-log-current-defun-function'. -** SMIE indentation can be customized via `smie-config'. -Emacs can learn the appropriate indentation settings if you provide it -with an indented sample file. +** SMIE + +*** You can customize the indentation of modes that use SMIE via `smie-config'. +The command `smie-config-guess' can help you derive the appropriate +indentation settings, if you provide it with an indented sample file. +Use `smie-config-save' to save the result. + +*** New commands `smie-config-show-indent' and `smie-config-set-indent'. --- ** SQL mode === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-04 04:03:34 +0000 +++ lisp/ChangeLog 2014-03-04 08:35:11 +0000 @@ -1,3 +1,9 @@ +2014-03-04 Glenn Morris + + * emacs-lisp/smie.el (smie-config-guess): Doc fix. + Explicit error if no grammar. + (smie-config-save): Doc fix. Fix quote typo. + 2014-03-04 Stefan Monnier * progmodes/cc-mode.el (c-initialize-cc-mode): Only hook into === modified file 'lisp/emacs-lisp/smie.el' --- lisp/emacs-lisp/smie.el 2014-01-01 07:43:34 +0000 +++ lisp/emacs-lisp/smie.el 2014-03-04 08:35:11 +0000 @@ -2149,8 +2149,11 @@ rules)))) (defun smie-config-guess () - "Try and figure out this buffer's indentation settings." + "Try and figure out this buffer's indentation settings. +To save the result for future sessions, use `smie-config-save'." (interactive) + (if (eq smie-grammar 'unset) + (user-error "This buffer does not seem to be using SMIE")) (let ((config (smie-config--guess (point-min) (point-max)))) (cond ((null config) (message "Nothing to change")) @@ -2168,7 +2171,8 @@ (message "Rules guessed: %S" config))))) (defun smie-config-save () - "Save local rules for use with this major mode." + "Save local rules for use with this major mode. +One way to generate local rules is the command `smie-config-guess'." (interactive) (cond ((null smie-config--buffer-local) @@ -2190,7 +2194,7 @@ (setcdr existing config) (push (cons major-mode config) smie-config)) (setq smie-config--mode-local config) - (kill-local-variable smie-config--buffer-local) + (kill-local-variable 'smie-config--buffer-local) (customize-mark-as-set 'smie-config))))) (provide 'smie) ------------------------------------------------------------ revno: 116650 committer: Stefan Monnier branch nick: trunk timestamp: Mon 2014-03-03 23:03:34 -0500 message: * lisp/electric.el (electric-indent-mode-has-been-called): Remove. (electric-indent-mode): Fix accordingly. * lisp/progmodes/cc-mode.el (c-initialize-cc-mode): Only hook into electric-indent-mode-hook if we obey electric-indent-mode. (c-basic-common-init): Use (fboundp 'electric-indent-local-mode) to decide whether we obey electric-indent-mode. (c-change-set-fl-decl-start, c-extend-after-change-region): Silence warnings. (c-electric-indent-mode-hook): Assume we do want to obey electric-indent-mode. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-04 03:26:17 +0000 +++ lisp/ChangeLog 2014-03-04 04:03:34 +0000 @@ -1,5 +1,17 @@ 2014-03-04 Stefan Monnier + * progmodes/cc-mode.el (c-initialize-cc-mode): Only hook into + electric-indent-mode-hook if we obey electric-indent-mode. + (c-basic-common-init): Use (fboundp 'electric-indent-local-mode) to + decide whether we obey electric-indent-mode. + (c-change-set-fl-decl-start, c-extend-after-change-region): + Silence warnings. + (c-electric-indent-mode-hook): Assume we do want to obey + electric-indent-mode. + + * electric.el (electric-indent-mode-has-been-called): Remove. + (electric-indent-mode): Fix accordingly. + * files.el (hack-local-variables): Mention file name in warning. * htmlfontify.el (hfy-fontify-buffer): Drop `invis-range' message. === modified file 'lisp/electric.el' --- lisp/electric.el 2014-02-21 14:29:28 +0000 +++ lisp/electric.el 2014-03-04 04:03:34 +0000 @@ -286,9 +286,7 @@ (let ((electric-indent-mode nil)) (newline arg 'interactive))) -(defvar electric-indent-mode-has-been-called 0 - "How many times has `electric-indent-mode' been called? -It's > 1 if it's been called at least once by the user.") + ;;;###autoload (define-minor-mode electric-indent-mode "Toggle on-the-fly reindentation (Electric Indent mode). @@ -302,8 +300,6 @@ :global t :group 'electricity :initialize 'custom-initialize-delay :init-value t - (setq electric-indent-mode-has-been-called - (1+ electric-indent-mode-has-been-called)) (if (not electric-indent-mode) (progn (when (eq (lookup-key global-map [?\C-j]) === modified file 'lisp/progmodes/cc-mode.el' --- lisp/progmodes/cc-mode.el 2014-02-17 18:16:32 +0000 +++ lisp/progmodes/cc-mode.el 2014-03-04 04:03:34 +0000 @@ -75,7 +75,7 @@ ;; For Emacs < 22.2. (eval-and-compile - (unless (fboundp 'declare-function) (defmacro declare-function (&rest r)))) + (unless (fboundp 'declare-function) (defmacro declare-function (&rest _r)))) (eval-when-compile (let ((load-path @@ -190,11 +190,10 @@ (add-hook 'change-major-mode-hook 'c-leave-cc-mode-mode) (setq c-initialization-ok t) ;; Connect up with Emacs's electric-indent-mode, for >= Emacs 24.4 - (when (fboundp 'electric-indent-mode) + (when (fboundp 'electric-indent-local-mode) (add-hook 'electric-indent-mode-hook 'c-electric-indent-mode-hook) - (when (fboundp 'electric-indent-local-mode) - (add-hook 'electric-indent-local-mode-hook - 'c-electric-indent-local-mode-hook)))) + (add-hook 'electric-indent-local-mode-hook + 'c-electric-indent-local-mode-hook))) ;; Will try initialization hooks again if they failed. (put 'c-initialize-cc-mode initprop c-initialization-ok)))) @@ -588,8 +587,9 @@ ;; messing up CC Mode's, and set `c-electric-flag' if `electric-indent-mode' ;; has been called by the user. (when (boundp 'electric-indent-inhibit) (setq electric-indent-inhibit t)) - (when (and (boundp 'electric-indent-mode-has-been-called) - (> electric-indent-mode-has-been-called 1)) + ;; CC-mode should obey Emacs's generic preferences, tho only do it if + ;; Emacs's generic preferences can be set per-buffer (Emacs>=24.4). + (when (fboundp 'electric-indent-local-mode) (setq c-electric-flag electric-indent-mode)) ;; ;; Put submode indicators onto minor-mode-alist, but only once. @@ -1165,7 +1165,7 @@ (backward-char)) new-pos)) ; back over (, [, <. -(defun c-change-set-fl-decl-start (beg end old-len) +(defun c-change-set-fl-decl-start (_beg _end _old-len) ;; Set c-new-BEG to the beginning of a "local" declaration if it('s BOL) is ;; inside one. This is called from an after-change-function, but the ;; parameters BEG END and OLD-LEN are ignored. See `c-set-fl-decl-start' @@ -1239,7 +1239,7 @@ (make-local-hook 'font-lock-mode-hook)) (add-hook 'font-lock-mode-hook 'c-after-font-lock-init nil t)) -(defun c-extend-after-change-region (beg end old-len) +(defun c-extend-after-change-region (_beg _end _old-len) "Extend the region to be fontified, if necessary." ;; Note: the parameters are ignored here. This somewhat indirect ;; implementation exists because it is minimally different from the @@ -1256,15 +1256,13 @@ (defun c-electric-indent-mode-hook () ;; Emacs has en/disabled `electric-indent-mode'. Propagate this through to ;; each CC Mode buffer. - (when (and (boundp 'electric-indent-mode-has-been-called) - (> electric-indent-mode-has-been-called 1)) - (mapc (lambda (buf) - (with-current-buffer buf - (when c-buffer-is-cc-mode - ;; Don't use `c-toggle-electric-state' here due to recursion. - (setq c-electric-flag electric-indent-mode) - (c-update-modeline)))) - (buffer-list)))) + (mapc (lambda (buf) + (with-current-buffer buf + (when c-buffer-is-cc-mode + ;; Don't use `c-toggle-electric-state' here due to recursion. + (setq c-electric-flag electric-indent-mode) + (c-update-modeline)))) + (buffer-list))) (defun c-electric-indent-local-mode-hook () ;; Emacs has en/disabled `electric-indent-local-mode' for this buffer. ------------------------------------------------------------ revno: 116649 committer: Stefan Monnier branch nick: trunk timestamp: Mon 2014-03-03 22:26:17 -0500 message: * lisp/files.el (hack-local-variables): Mention file name in warning. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-04 03:18:55 +0000 +++ lisp/ChangeLog 2014-03-04 03:26:17 +0000 @@ -1,5 +1,7 @@ 2014-03-04 Stefan Monnier + * files.el (hack-local-variables): Mention file name in warning. + * htmlfontify.el (hfy-fontify-buffer): Drop `invis-range' message. 2014-03-04 Michal Nazarewicz === modified file 'lisp/files.el' --- lisp/files.el 2014-02-10 06:07:30 +0000 +++ lisp/files.el 2014-03-04 03:26:17 +0000 @@ -3340,8 +3340,11 @@ ((eq var 'lexical-binding) (unless hack-local-variables--warned-lexical (setq hack-local-variables--warned-lexical t) - (display-warning :warning - "Specify `lexical-binding' on the first line, not at the end"))) + (display-warning + :warning + (format "%s: `lexical-binding' at end of file unreliable" + (file-name-nondirectory + (or buffer-file-name "")))))) (t (ignore-errors (push (cons (if (eq var 'eval) ------------------------------------------------------------ revno: 116648 committer: Stefan Monnier branch nick: trunk timestamp: Mon 2014-03-03 22:18:55 -0500 message: * lisp/htmlfontify.el (hfy-fontify-buffer): Drop `invis-range' message. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-04 03:14:11 +0000 +++ lisp/ChangeLog 2014-03-04 03:18:55 +0000 @@ -1,3 +1,7 @@ +2014-03-04 Stefan Monnier + + * htmlfontify.el (hfy-fontify-buffer): Drop `invis-range' message. + 2014-03-04 Michal Nazarewicz * binding.el: Add comment describing why C-d binds to `delete-char'. === modified file 'lisp/htmlfontify.el' --- lisp/htmlfontify.el 2014-01-25 19:15:42 +0000 +++ lisp/htmlfontify.el 2014-03-04 03:18:55 +0000 @@ -1709,7 +1709,7 @@ ;; think we only need to relocate the hfy-endl property, as the hfy-linkp ;; property has already served its main purpose by this point. ;;(message "mapcar over the CSS-MAP") - (message "invis-ranges:\n%S" invis-ranges) + ;; (message "invis-ranges:\n%S" invis-ranges) (dolist (point-face css-map) (let ((pt (car point-face)) (fn (cdr point-face)) ------------------------------------------------------------ revno: 116647 author: Michal Nazarewicz committer: Stefan Monnier branch nick: trunk timestamp: Mon 2014-03-03 22:14:11 -0500 message: * binding.el: Add comment describing why C-d binds to `delete-char'. * lisp/simple.el (delete-forward-char): Mark as interactive-only. * src/cmds.c (delete-char): Update docstring pointing out that the function ignores `delete-active-region' and `overwrite-mode'. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-03 17:03:32 +0000 +++ lisp/ChangeLog 2014-03-04 03:14:11 +0000 @@ -1,3 +1,8 @@ +2014-03-04 Michal Nazarewicz + + * binding.el: Add comment describing why C-d binds to `delete-char'. + * simple.el (delete-forward-char): Mark as interactive-only. + 2014-03-03 Juanma Barranquero * icomplete.el (icomplete-completions): === modified file 'lisp/bindings.el' --- lisp/bindings.el 2014-02-10 01:34:22 +0000 +++ lisp/bindings.el 2014-03-04 03:14:11 +0000 @@ -873,6 +873,11 @@ ;; Update tutorial--default-keys if you change these. (define-key global-map "\177" 'delete-backward-char) +;; We explicitly want C-d to use `delete-char' instead of +;; `delete-forward-char' so that it ignores `delete-active-region': +;; Most C-d users are old-timers who don't expect +;; `delete-active-region' here, while newer users who expect +;; `delete-active-region' use C-d much less. (define-key global-map "\C-d" 'delete-char) (define-key global-map "\C-k" 'kill-line) === modified file 'lisp/simple.el' --- lisp/simple.el 2014-03-02 17:37:32 +0000 +++ lisp/simple.el 2014-03-04 03:14:11 +0000 @@ -1008,6 +1008,7 @@ ;; Otherwise, do simple deletion. (t (delete-char n killflag)))) +(put 'delete-forward-char 'interactive-only 'delete-char) (defun mark-whole-buffer () "Put point at beginning and mark at end of buffer. === modified file 'src/ChangeLog' --- src/ChangeLog 2014-03-03 19:58:20 +0000 +++ src/ChangeLog 2014-03-04 03:14:11 +0000 @@ -1,3 +1,8 @@ +2014-03-04 Michal Nazarewicz + + * cmds.c (delete-char): Update docstring pointing out that the + function ignores `delete-active-region' and `overwrite-mode'. + 2014-03-03 Eli Zaretskii * font.c (Fframe_font_cache): Fix last change. (Bug#16930) @@ -307,11 +312,11 @@ 2014-02-06 Eli Zaretskii - * w32.c (pMultiByteToWideChar, pWideCharToMultiByte): New - variables: pointers through which to call the respective APIs. + * w32.c (pMultiByteToWideChar, pWideCharToMultiByte): + New variables: pointers through which to call the respective APIs. (filename_to_utf16, filename_from_utf16, filename_to_ansi) - (filename_from_ansi, sys_link, check_windows_init_file): Call - MultiByteToWideChar and WideCharToMultiByte through pointers. + (filename_from_ansi, sys_link, check_windows_init_file): + Call MultiByteToWideChar and WideCharToMultiByte through pointers. This is required on Windows 9X, where we dynamically load UNICOWS.DLL which has their non-stub implementations. (maybe_load_unicows_dll): Assign addresses to these 2 function @@ -321,8 +326,8 @@ MultiByteToWideChar and WideCharToMultiByte through function pointers. - * w32.h (pMultiByteToWideChar, pWideCharToMultiByte): New - declarations. + * w32.h (pMultiByteToWideChar, pWideCharToMultiByte): + New declarations. 2014-02-06 Jan Djärv @@ -362,8 +367,8 @@ * w32menu.c (w32_popup_dialog): Don't condition the whole function on HAVE_DIALOGS. If the dialog is "simple", pop up a message box to show it; otherwise return 'unsupported--w32-dialog' to signal - to the caller that emulation with menus is necessary. This - resurrects code inadvertently deleted by the 2013-10-08 commit. + to the caller that emulation with menus is necessary. + This resurrects code inadvertently deleted by the 2013-10-08 commit. (Bug#16636) (syms_of_w32menu): DEFSYM Qunsupported__w32_dialog. @@ -471,8 +476,8 @@ from 2013-03-29. (move_it_to): Re-remove reference to last_max_ascent. (Fwindow_text_pixel_size): Add iterator's max_ascent and - max_descent here instead of calling line_bottom_y. Fix - doc-string. + max_descent here instead of calling line_bottom_y. + Fix doc-string. 2014-01-28 Dmitry Antipov @@ -537,8 +542,8 @@ 2014-01-24 Dmitry Antipov - * xdisp.c (reseat_1, Fcurrent_bidi_paragraph_direction): Avoid - undefined behavior by initializing display property bit of a + * xdisp.c (reseat_1, Fcurrent_bidi_paragraph_direction): + Avoid undefined behavior by initializing display property bit of a string processed by the bidirectional iterator. For details, see . @@ -637,8 +642,8 @@ 2014-01-13 Daniel Colascione - * textprop.c (Fremove_list_of_text_properties): Correctly - handle reaching the end of the interval tree. (Bug#15344) + * textprop.c (Fremove_list_of_text_properties): + Correctly handle reaching the end of the interval tree. (Bug#15344) 2014-01-13 Martin Rudalics @@ -651,7 +656,7 @@ * macfont.m: Include termchar.h. (CG_SET_FILL_COLOR_WITH_FACE_FOREGROUND) (CG_SET_FILL_COLOR_WITH_FACE_BACKGROUND) - (CG_SET_STROKE_COLOR_WITH_FACE_FOREGROUND): Modified from + (CG_SET_STROKE_COLOR_WITH_FACE_FOREGROUND): Modify from *_WITH_GC_* to take face and f as parameters. (macfont_draw): Check for DRAW_MOUSE_FACE and set face accordingly. Use *_WITH_FACE_*, and pass face as parameter (Bug#16425). @@ -695,8 +700,8 @@ 2014-01-10 Martin Rudalics Fix handling of internal borders (Bug#16348). - * dispnew.c (adjust_frame_glyphs_for_window_redisplay): Remove - internal border width from pixel width of windows. + * dispnew.c (adjust_frame_glyphs_for_window_redisplay): + Remove internal border width from pixel width of windows. (change_frame_size_1): Don't return early when frame's pixel size changes - we still have to record the new sizes in the frame structure. @@ -705,14 +710,14 @@ * window.c (check_frame_size): Include internal_border_width in check. * xdisp.c (Ftool_bar_height): Fix doc-string typo. - * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines): In - non-toolkit/non-GTK version clear internal border. + * xfns.c (x_set_menu_bar_lines, x_set_tool_bar_lines): + In non-toolkit/non-GTK version clear internal border. * xterm.c (x_clear_under_internal_border): New function for non-toolkit/non-GTK version. (x_after_update_window_line): In non-toolkit/non-GTK version don't do that. - (handle_one_xevent, x_set_window_size): Call - x_clear_under_internal_border in non-toolkit/non-GTK version. + (handle_one_xevent, x_set_window_size): + Call x_clear_under_internal_border in non-toolkit/non-GTK version. * xterm.h (x_clear_under_internal_border): Extern it. 2014-01-07 Paul Eggert @@ -767,8 +772,8 @@ 2014-01-02 Martin Rudalics Further adjust frame/window scrollbar width calculations. - * window.c (apply_window_adjustment): Set - windows_or_buffers_changed. + * window.c (apply_window_adjustment): + Set windows_or_buffers_changed. (Fwindow_scroll_bars): Return actual scrollbar width. * xfns.c (x_set_scroll_bar_default_width): Rename wid to unit. For non-toolkit builds again use 14 as minimum width and set @@ -843,8 +848,8 @@ (globals_of_w32): Initialize them to zero. (set_named_security_info): Set them to non-zero if the corresponding API is available. - (SetNamedSecurityInfoW_Proc, SetNamedSecurityInfoA_Proc): New - function typedefs. + (SetNamedSecurityInfoW_Proc, SetNamedSecurityInfoA_Proc): + New function typedefs. 2013-12-31 Martin Rudalics @@ -1464,8 +1469,8 @@ ANSI and Unicode APIs. Use the latter if w32_unicode_filenames is non-zero, else the former. (codepage_for_filenames, filename_to_utf16, ) - (filename_from_utf16, filename_to_ansi, filename_from_ansi): New - functions. + (filename_from_utf16, filename_to_ansi, filename_from_ansi): + New functions. (init_user_info): Allow $HOME and $SHELL to include non-ANSI characters. (normalize_filename): Lose the DBCS code, now works on UTF-8. @@ -1608,8 +1613,8 @@ * xterm.c (x_make_frame_visible): Restore hack which is needed when input polling is used. This is still meaningful for Cygwin, see http://lists.gnu.org/archive/html/emacs-devel/2013-12/msg00351.html. - * keyboard.c (poll_for_input_1, input_polling_used): Define - unconditionally. + * keyboard.c (poll_for_input_1, input_polling_used): + Define unconditionally. * dispextern.h (FACE_SUITABLE_FOR_CHAR_P): Remove unused macro. (FACE_FOR_CHAR): Simplify because face_for_char does the same. * fontset.c (face_suitable_for_char_p) [0]: Remove unused function. === modified file 'src/cmds.c' --- src/cmds.c 2014-02-10 22:15:54 +0000 +++ src/cmds.c 2014-03-04 03:14:11 +0000 @@ -229,7 +229,8 @@ Interactively, N is the prefix arg, and KILLFLAG is set if N was explicitly specified. -The command `delete-forward-char' is preferable for interactive use. */) +The command `delete-forward-char' is preferable for interactive use, e.g. +because it respects values of `delete-active-region' and `overwrite-mode'. */) (Lisp_Object n, Lisp_Object killflag) { EMACS_INT pos; ------------------------------------------------------------ revno: 116646 fixes bug: http://debbugs.gnu.org/16930 committer: Eli Zaretskii branch nick: trunk timestamp: Mon 2014-03-03 21:58:20 +0200 message: Fix bug #16930 with broken build --without-x. src/font.c (Fframe_font_cache): Fix last change. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-03-03 16:46:36 +0000 +++ src/ChangeLog 2014-03-03 19:58:20 +0000 @@ -1,5 +1,7 @@ 2014-03-03 Eli Zaretskii + * font.c (Fframe_font_cache): Fix last change. (Bug#16930) + * gmalloc.c (aligned_alloc): Fix adjustment of size of the allocated buffer due to alignment. (freehook): If the block to be freed was allocated by === modified file 'src/font.c' --- src/font.c 2014-03-03 07:46:08 +0000 +++ src/font.c 2014-03-03 19:58:20 +0000 @@ -4850,7 +4850,14 @@ If FRAME is omitted or nil, use the selected frame. */) (Lisp_Object frame) { - return FRAME_DISPLAY_INFO (decode_live_frame (frame))->name_list_element; +#ifdef HAVE_WINDOW_SYSTEM + struct frame *f = decode_live_frame (frame); + + if (FRAME_WINDOW_P (f)) + return FRAME_DISPLAY_INFO (f)->name_list_element; + else +#endif + return Qnil; } #endif /* FONT_DEBUG */ ------------------------------------------------------------ revno: 116645 committer: Juanma Barranquero branch nick: trunk timestamp: Mon 2014-03-03 18:15:42 +0100 message: doc/misc/*.texi: Fix typos and whitespace. * doc/misc/ede.texi (Android projects): * doc/misc/eieio.texi (Class Options, Making New Objects) (Method Invocation, CLOS compatibility): * doc/misc/sem-user.texi (Tag Decoration Mode): Fix typos. * doc/misc/gnus.texi: * doc/misc/semantic.texi: Fix whitespace. diff: === modified file 'doc/misc/ChangeLog' --- doc/misc/ChangeLog 2014-03-03 04:57:26 +0000 +++ doc/misc/ChangeLog 2014-03-03 17:15:42 +0000 @@ -1,3 +1,13 @@ +2014-03-03 Juanma Barranquero + + * gnus.texi: + * semantic.texi: Fix whitespace. + + * ede.texi (Android projects): + * eieio.texi (Class Options, Making New Objects) + (Method Invocation, CLOS compatibility): + * sem-user.texi (Tag Decoration Mode): Fix typos. + 2014-03-02 Xue Fuqiao * sem-user.texi (Create System Databases): Markup fix. === modified file 'doc/misc/ede.texi' --- doc/misc/ede.texi 2014-01-06 05:25:46 +0000 +++ doc/misc/ede.texi 2014-03-03 17:15:42 +0000 @@ -764,7 +764,7 @@ @defun cedet-android-sdk-root @anchor{cedet-android-sdk-root} -The root to the android @var{SDK}. +The root to the Android @var{SDK}. @end defun Android projects support different configurations including compile, === modified file 'doc/misc/eieio.texi' --- doc/misc/eieio.texi 2014-02-17 18:40:09 +0000 +++ doc/misc/eieio.texi 2014-03-03 17:15:42 +0000 @@ -610,7 +610,7 @@ @item :depth-first Search for methods in the class hierarchy in a depth first order. @item :c3 -Searches for methods in in a linearized way that most closely matches +Searches for methods in a linearized way that most closely matches what CLOS does when a monotonic class structure is defined. @end table @@ -644,7 +644,7 @@ Calling @code{defclass} has defined two new functions. One is the constructor @var{record}, and the other is the predicate, -@var{record-p}. +@var{record}-p. @defun record object-name &rest slots @@ -1022,8 +1022,8 @@ @item :depth-first Search for methods in the class hierarchy in a depth first order. @item :c3 -Searches for methods in in a linearized way that most closely matches -what CLOS does when CLOS when a monotonic class structure is defined. +Searches for methods in a linearized way that most closely matches +what CLOS does when a monotonic class structure is defined. This is derived from the Dylan language documents by Kim Barrett et al.: A Monotonic Superclass Linearization for Dylan @@ -1826,7 +1826,7 @@ the ability to provide object names. @end table -Defclass also supports class options, but does not currently use values +defclass also supports class options, but does not currently use values of @code{:metaclass}, and @code{:default-initargs}. @item make-instance === modified file 'doc/misc/gnus.texi' --- doc/misc/gnus.texi 2014-01-10 07:10:37 +0000 +++ doc/misc/gnus.texi 2014-03-03 17:15:42 +0000 @@ -461,7 +461,7 @@ * Selecting a Group:: Actually reading news. * Subscription Commands:: Unsubscribing, killing, subscribing. * Group Data:: Changing the info for a group. -* Group Levels:: Levels? What are those, then? +* Group Levels:: Levels? What are those, then? * Group Score:: A mechanism for finding out what groups you like. * Marking Groups:: You can mark groups for later processing. * Foreign Groups:: Creating and editing groups. @@ -521,7 +521,7 @@ * Charsets:: Character set issues. * Article Commands:: Doing various things with the article buffer. * Summary Sorting:: Sorting the summary buffer in various ways. -* Finding the Parent:: No child support? Get the parent. +* Finding the Parent:: No child support? Get the parent. * Alternative Approaches:: Reading using non-default summaries. * Tree Display:: A more visual display of threads. * Mail Group Commands:: Some commands can only be used in mail groups. @@ -1095,7 +1095,7 @@ if you're in a hurry as well. This command will not attempt to contact your primary server---instead, it will just activate all groups on level 1 and 2. (You should preferably keep no native groups on those two -levels.) Also @pxref{Group Levels}. +levels.) Also @pxref{Group Levels}. @node Slave Gnusae @@ -1678,7 +1678,7 @@ * Selecting a Group:: Actually reading news. * Subscription Commands:: Unsubscribing, killing, subscribing. * Group Data:: Changing the info for a group. -* Group Levels:: Levels? What are those, then? +* Group Levels:: Levels? What are those, then? * Group Score:: A mechanism for finding out what groups you like. * Marking Groups:: You can mark groups for later processing. * Foreign Groups:: Creating and editing groups. @@ -2854,7 +2854,7 @@ that group will always be visible in the Group buffer, regardless of whether it has any unread articles. -This parameter cannot be set via @code{gnus-parameters}. See +This parameter cannot be set via @code{gnus-parameters}. See @code{gnus-permanently-visible-groups} as an alternative. @item broken-reply-to @@ -3036,8 +3036,8 @@ If you're using topics to organize your group buffer (@pxref{Group Topics}), note that posting styles can also be set in -the topics parameters. Posting styles in topic parameters apply to all -groups in this topic. More precisely, the posting-style settings for a +the topics parameters. Posting styles in topic parameters apply to all +groups in this topic. More precisely, the posting-style settings for a group result from the hierarchical merging of all posting-style entries in the parameters of this group and all the topics it belongs to. @@ -4750,7 +4750,7 @@ * Charsets:: Character set issues. * Article Commands:: Doing various things with the article buffer. * Summary Sorting:: Sorting the summary buffer in various ways. -* Finding the Parent:: No child support? Get the parent. +* Finding the Parent:: No child support? Get the parent. * Alternative Approaches:: Reading using non-default summaries. * Tree Display:: A more visual display of threads. * Mail Group Commands:: Some commands can only be used in mail groups. @@ -8508,7 +8508,7 @@ So; there you are, reading your @emph{pseudo-articles} in your @emph{virtual newsgroup} from the @emph{virtual server}; and you think: -Why isn't anything real anymore? How did we get here? +Why isn't anything real anymore? How did we get here? @node Article Treatment @@ -9546,7 +9546,7 @@ be useful if you normally use some other conversion function and are worried that it might be doing something totally wrong. Say, claiming that the article was posted in 1854. Although something like that is -@emph{totally} impossible. Don't you trust me? *titter* +@emph{totally} impossible. Don't you trust me? *titter* @end table @@ -14302,7 +14302,7 @@ @cindex reading mail @cindex mail -Reading mail with a newsreader---isn't that just plain WeIrD@? But of +Reading mail with a newsreader---isn't that just plain WeIrD@? But of course. @menu @@ -16001,7 +16001,7 @@ default. The approximate maximum number of @code{Message-ID}s stored there is controlled by the @code{nnmail-message-id-cache-length} variable, which is 1000 by default. (So 1000 @code{Message-ID}s will be -stored.) If all this sounds scary to you, you can set +stored.) If all this sounds scary to you, you can set @code{nnmail-treat-duplicates} to @code{warn} (which is what it is by default), and @code{nnmail} won't delete duplicate mails. Instead it will insert a warning into the head of the mail saying that it thinks @@ -16767,11 +16767,11 @@ mail back ends. @code{nnmaildir} is largely similar to @code{nnml}, with some notable -differences. Each message is stored in a separate file, but the +differences. Each message is stored in a separate file, but the filename is unrelated to the article number in Gnus. @code{nnmaildir} also stores the equivalent of @code{nnml}'s overview files in one file per article, so it uses about twice as many inodes as @code{nnml}. -(Use @code{df -i} to see how plentiful your inode supply is.) If this +(Use @code{df -i} to see how plentiful your inode supply is.) If this slows you down or takes up very much space, a non-block-structured file system. @@ -18100,7 +18100,7 @@ @item However, since @code{nndiary} also has a @code{request-post} method, you can also use @kbd{C-u a} instead of @kbd{C-u m} on a diary group and the -message won't actually be sent; just stored locally in the group. This +message won't actually be sent; just stored locally in the group. This comes in very handy for private appointments. @end itemize @@ -20934,7 +20934,7 @@ @end example Suppose you're reading a high volume group and you're only interested -in replies. The plan is to score down all articles that don't have +in replies. The plan is to score down all articles that don't have subject that begin with "Re:", "Fw:" or "Fwd:" and then score up all parents of articles that have subjects that begin with reply marks. @@ -21065,7 +21065,7 @@ as well. This chapter describes tools for searching groups and servers for -articles matching a query and then retrieving those articles. Gnus +articles matching a query and then retrieving those articles. Gnus provides a simpler mechanism for searching through articles in a summary buffer to find those matching a pattern. @xref{Searching for Articles}. @@ -21091,13 +21091,13 @@ @subsection What is nnir? @code{nnir} is a Gnus interface to a number of tools for searching -through mail and news repositories. Different backends (like +through mail and news repositories. Different backends (like @code{nnimap} and @code{nntp}) work with different tools (called @dfn{engines} in @code{nnir} lingo), but all use the same basic search interface. The @code{nnimap} and @code{gmane} search engines should work with no -configuration. Other engines require a local index that needs to be +configuration. Other engines require a local index that needs to be created and maintained outside of Gnus. @@ -21108,35 +21108,35 @@ current line by calling @code{gnus-group-make-nnir-group}. This prompts for a query string, creates an ephemeral @code{nnir} group containing the articles that match this query, and takes you to a summary buffer -showing these articles. Articles may then be read, moved and deleted +showing these articles. Articles may then be read, moved and deleted using the usual commands. The @code{nnir} group made in this way is an @code{ephemeral} group, and some changes are not permanent: aside from reading, moving, and -deleting, you can't act on the original article. But there is an +deleting, you can't act on the original article. But there is an alternative: you can @emph{warp} (i.e., jump) to the original group for the article on the current line with @kbd{A W}, aka -@code{gnus-warp-to-article}. Even better, the function +@code{gnus-warp-to-article}. Even better, the function @code{gnus-summary-refer-thread}, bound by default in summary buffers to @kbd{A T}, will first warp to the original group before it works -its magic and includes all the articles in the thread. From here you +its magic and includes all the articles in the thread. From here you can read, move and delete articles, but also copy them, alter article -marks, whatever. Go nuts. +marks, whatever. Go nuts. You say you want to search more than just the group on the current line? -No problem: just process-mark the groups you want to search. You want -even more? Calling for an nnir search with the cursor on a topic heading +No problem: just process-mark the groups you want to search. You want +even more? Calling for an nnir search with the cursor on a topic heading will search all the groups under that heading. -Still not enough? OK, in the server buffer +Still not enough? OK, in the server buffer @code{gnus-group-make-nnir-group} (now bound to @kbd{G}) will search all -groups from the server on the current line. Too much? Want to ignore -certain groups when searching, like spam groups? Just customize +groups from the server on the current line. Too much? Want to ignore +certain groups when searching, like spam groups? Just customize @code{nnir-ignored-newsgroups}. One more thing: individual search engines may have special search -features. You can access these special features by giving a prefix-arg -to @code{gnus-group-make-nnir-group}. If you are searching multiple +features. You can access these special features by giving a prefix-arg +to @code{gnus-group-make-nnir-group}. If you are searching multiple groups with different search engines you will be prompted for the special search features for each engine separately. @@ -21144,16 +21144,16 @@ @node Setting up nnir @subsection Setting up nnir -To set up nnir you may need to do some prep work. Firstly, you may need -to configure the search engines you plan to use. Some of them, like -@code{imap} and @code{gmane}, need no special configuration. Others, +To set up nnir you may need to do some prep work. Firstly, you may need +to configure the search engines you plan to use. Some of them, like +@code{imap} and @code{gmane}, need no special configuration. Others, like @code{namazu} and @code{swish}, require configuration as described -below. Secondly, you need to associate a search engine with a server or +below. Secondly, you need to associate a search engine with a server or a backend. If you just want to use the @code{imap} engine to search @code{nnimap} servers, and the @code{gmane} engine to search @code{gmane} then you -don't have to do anything. But you might want to read the details of the +don't have to do anything. But you might want to read the details of the query language anyway. @menu @@ -21173,9 +21173,9 @@ When searching a group, @code{nnir} needs to know which search engine to -use. You can configure a given server to use a particular engine by +use. You can configure a given server to use a particular engine by setting the server variable @code{nnir-search-engine} to the engine -name. For example to use the @code{namazu} engine to search the server +name. For example to use the @code{namazu} engine to search the server named @code{home} you can use @lisp @@ -21186,14 +21186,14 @@ @end lisp Alternatively you might want to use a particular engine for all servers -with a given backend. For example, you might want to use the @code{imap} -engine for all servers using the @code{nnimap} backend. In this case you -can customize the variable @code{nnir-method-default-engines}. This is -an alist of pairs of the form @code{(backend . engine)}. By default this +with a given backend. For example, you might want to use the @code{imap} +engine for all servers using the @code{nnimap} backend. In this case you +can customize the variable @code{nnir-method-default-engines}. This is +an alist of pairs of the form @code{(backend . engine)}. By default this variable is set to use the @code{imap} engine for all servers using the @code{nnimap} backend, and the @code{gmane} backend for @code{nntp} -servers. (Don't worry, the @code{gmane} search engine won't actually try -to search non-gmane @code{nntp} servers.) But if you wanted to use +servers. (Don't worry, the @code{gmane} search engine won't actually try +to search non-gmane @code{nntp} servers.) But if you wanted to use @code{namazu} for all your servers with an @code{nnimap} backend you could change this to @@ -21215,10 +21215,10 @@ @item Boolean query operators AND, OR, and NOT are supported, and parentheses can be used to control -operator precedence, e.g., (emacs OR xemacs) AND linux. Note that +operator precedence, e.g., (emacs OR xemacs) AND linux. Note that operators must be written with all capital letters to be -recognized. Also preceding a term with a @minus{} sign is equivalent to NOT -term. +recognized. Also preceding a term with a @minus{} sign is equivalent +to NOT term. @item Automatic AND queries If you specify multiple words then they will be treated as an AND @@ -21230,20 +21230,20 @@ @end table -By default the whole message will be searched. The query can be limited -to a specific part of a message by using a prefix-arg. After inputting +By default the whole message will be searched. The query can be limited +to a specific part of a message by using a prefix-arg. After inputting the query this will prompt (with completion) for a message part. Choices include ``Whole message'', ``Subject'', ``From'', and -``To''. Any unrecognized input is interpreted as a header name. For +``To''. Any unrecognized input is interpreted as a header name. For example, typing @kbd{Message-ID} in response to this prompt will limit the query to the Message-ID header. Finally selecting ``Imap'' will interpret the query as a raw -@acronym{IMAP} search query. The format of such queries can be found in +@acronym{IMAP} search query. The format of such queries can be found in RFC3501. If you don't like the default of searching whole messages you can -customize @code{nnir-imap-default-search-key}. For example to use +customize @code{nnir-imap-default-search-key}. For example to use @acronym{IMAP} queries by default @lisp @@ -21273,14 +21273,14 @@ in any language. @item Stopwords -Common English words (like 'the' and 'a') are ignored by default. You +Common English words (like 'the' and 'a') are ignored by default. You can override this by prefixing such words with a + (e.g., +the) or enclosing the word in quotes (e.g., "the"). @end table The query can be limited to articles by a specific author using a -prefix-arg. After inputting the query this will prompt for an author +prefix-arg. After inputting the query this will prompt for an author name (or part of a name) to match. @node The swish++ Engine @@ -21294,15 +21294,15 @@ @table @code @item nnir-swish++-program -The name of the swish++ executable. Defaults to @code{search} +The name of the swish++ executable. Defaults to @code{search} @item nnir-swish++-additional-switches A list of strings to be given as additional arguments to -swish++. @code{nil} by default. +swish++. @code{nil} by default. @item nnir-swish++-remove-prefix The prefix to remove from each file name returned by swish++ in order -to get a group name. By default this is @code{$HOME/Mail}. +to get a group name. By default this is @code{$HOME/Mail}. @end table @@ -21317,15 +21317,15 @@ @table @code @item nnir-swish-e-program -The name of the swish-e search program. Defaults to @code{swish-e}. +The name of the swish-e search program. Defaults to @code{swish-e}. @item nnir-swish-e-additional-switches A list of strings to be given as additional arguments to -swish-e. @code{nil} by default. +swish-e. @code{nil} by default. @item nnir-swish-e-remove-prefix The prefix to remove from each file name returned by swish-e in order -to get a group name. By default this is @code{$HOME/Mail}. +to get a group name. By default this is @code{$HOME/Mail}. @end table @@ -21338,7 +21338,7 @@ variable. To work correctly the @code{nnir-namazu-remove-prefix} variable must -also be correct. This is the prefix to remove from each file name +also be correct. This is the prefix to remove from each file name returned by Namazu in order to get a proper group name (albeit with `/' instead of `.'). @@ -21358,7 +21358,7 @@ information on valid switches. Mail must first be indexed with the `mknmz' program. Read the documentation -for namazu to create a configuration file. Here is an example: +for namazu to create a configuration file. Here is an example: @cartouche @example @@ -21423,8 +21423,8 @@ @table @code @item nnir-method-default-engines -Alist of pairs of server backends and search engines. The default associations -are +Alist of pairs of server backends and search engines. The default +associations are @example (nnimap . imap) (nntp . gmane) @@ -21451,9 +21451,9 @@ If non-nil, a function that retrieves article headers rather than using the gnus built-in function. This function takes an article list and group as arguments and populates the `nntp-server-buffer' with the -retrieved headers. It should then return either 'nov or 'headers -indicating the retrieved header format. Failure to retrieve headers -should return @code{nil} +retrieved headers. It should then return either 'nov or 'headers +indicating the retrieved header format. Failure to retrieve headers +should return @code{nil}. If this variable is nil, or if the provided function returns nil for a search result, @code{gnus-retrieve-headers} will be called instead." @@ -21881,104 +21881,104 @@ @subsection Propagating marks First of: you really need a patched mairix binary for using the marks -propagation feature efficiently. Otherwise, you would have to update -the mairix database all the time. You can get the patch at +propagation feature efficiently. Otherwise, you would have to update +the mairix database all the time. You can get the patch at @uref{http://www.randomsample.de/mairix-maildir-patch.tar} You need the mairix v0.21 source code for this patch; everything else -is explained in the accompanied readme file. If you don't want to use +is explained in the accompanied readme file. If you don't want to use marks propagation, you don't have to apply these patches, but they also fix some annoyances regarding changing maildir flags, so it might still be useful to you. With the patched mairix binary, you can use @code{nnmairix} as an -alternative to mail splitting (@pxref{Fancy Mail Splitting}). For +alternative to mail splitting (@pxref{Fancy Mail Splitting}). For example, instead of splitting all mails from @samp{david@@foobar.com} into a group, you can simply create a search group with the query -@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are +@samp{f:david@@foobar.com}. This is actually what ``smart folders'' are all about: simply put everything in one mail folder and dynamically -create searches instead of splitting. This is more flexible, since you -can dynamically change your folders any time you want to. This also +create searches instead of splitting. This is more flexible, since you +can dynamically change your folders any time you want to. This also implies that you will usually read your mails in the @code{nnmairix} groups instead of your ``real'' mail groups. There is one problem, though: say you got a new mail from @samp{david@@foobar.com}; it will now show up in two groups, the ``real'' group (your INBOX, for example) and in the @code{nnmairix} -search group (provided you have updated the mairix database). Now you -enter the @code{nnmairix} group and read the mail. The mail will be +search group (provided you have updated the mairix database). Now you +enter the @code{nnmairix} group and read the mail. The mail will be marked as read, but only in the @code{nnmairix} group---in the ``real'' mail group it will be still shown as unread. You could now catch up the mail group (@pxref{Group Data}), but this is tedious and error prone, since you may overlook mails you don't have -created @code{nnmairix} groups for. Of course, you could first use +created @code{nnmairix} groups for. Of course, you could first use @code{nnmairix-goto-original-article} (@pxref{nnmairix keyboard shortcuts}) and then read the mail in the original group, but that's even more cumbersome. Clearly, the easiest way would be if marks could somehow be -automatically set for the original article. This is exactly what +automatically set for the original article. This is exactly what @emph{marks propagation} is about. -Marks propagation is inactive by default. You can activate it for a +Marks propagation is inactive by default. You can activate it for a certain @code{nnmairix} group with @code{nnmairix-group-toggle-propmarks-this-group} (bound to @kbd{G b -p}). This function will warn you if you try to use it with your default +p}). This function will warn you if you try to use it with your default search group; the reason is that the default search group is used for temporary searches, and it's easy to accidentally propagate marks from -this group. However, you can ignore this warning if you really want to. +this group. However, you can ignore this warning if you really want to. With marks propagation enabled, all the marks you set in a @code{nnmairix} -group should now be propagated to the original article. For example, +group should now be propagated to the original article. For example, you can now tick an article (by default with @kbd{!}) and this mark should magically be set for the original article, too. A few more remarks which you may or may not want to know: @vindex nnmairix-propagate-marks-upon-close -Marks will not be set immediately, but only upon closing a group. This +Marks will not be set immediately, but only upon closing a group. This not only makes marks propagation faster, it also avoids problems with dangling symlinks when dealing with maildir files (since changing flags -will change the file name). You can also control when to propagate marks +will change the file name). You can also control when to propagate marks via @code{nnmairix-propagate-marks-upon-close} (see the doc-string for details). Obviously, @code{nnmairix} will have to look up the original group for every -article you want to set marks for. If available, @code{nnmairix} will first use -the registry for determining the original group. The registry is very +article you want to set marks for. If available, @code{nnmairix} will first +use the registry for determining the original group. The registry is very fast, hence you should really, really enable the registry when using -marks propagation. If you don't have to worry about RAM and disc space, +marks propagation. If you don't have to worry about RAM and disc space, set @code{gnus-registry-max-entries} to a large enough value; to be on the safe side, choose roughly the amount of mails you index with mairix. @vindex nnmairix-only-use-registry If you don't want to use the registry or the registry hasn't seen the original article yet, @code{nnmairix} will use an additional mairix -search for determining the file name of the article. This, of course, is +search for determining the file name of the article. This, of course, is way slower than the registry---if you set hundreds or even thousands of -marks this way, it might take some time. You can avoid this situation by +marks this way, it might take some time. You can avoid this situation by setting @code{nnmairix-only-use-registry} to t. Maybe you also want to propagate marks the other way round, i.e., if you tick an article in a "real" mail group, you'd like to have the same -article in a @code{nnmairix} group ticked, too. For several good -reasons, this can only be done efficiently if you use maildir. To +article in a @code{nnmairix} group ticked, too. For several good +reasons, this can only be done efficiently if you use maildir. To immediately contradict myself, let me mention that it WON'T work with @code{nnmaildir}, since @code{nnmaildir} stores the marks externally and -not in the file name. Therefore, propagating marks to @code{nnmairix} +not in the file name. Therefore, propagating marks to @code{nnmairix} groups will usually only work if you use an IMAP server which uses maildir as its file format. @vindex nnmairix-propagate-marks-to-nnmairix-groups If you work with this setup, just set @code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t} and see what -happens. If you don't like what you see, just set it to @code{nil} again. One -problem might be that you get a wrong number of unread articles; this +happens. If you don't like what you see, just set it to @code{nil} again. +One problem might be that you get a wrong number of unread articles; this usually happens when you delete or expire articles in the original -groups. When this happens, you can recreate the @code{nnmairix} group on the -back end using @kbd{G b d}. +groups. When this happens, you can recreate the @code{nnmairix} group on +the back end using @kbd{G b d}. @node nnmairix tips and tricks @subsection nnmairix tips and tricks @@ -21988,7 +21988,7 @@ Checking Mail @findex nnmairix-update-groups -I put all my important mail groups at group level 1. The mairix groups +I put all my important mail groups at group level 1. The mairix groups have group level 5, so they do not get checked at start up (@pxref{Group Levels}). @@ -22006,7 +22006,7 @@ @end lisp Instead of @samp{"mairixsearch"} use the name of your @code{nnmairix} -server. See the doc string for @code{nnmairix-update-groups} for +server. See the doc string for @code{nnmairix-update-groups} for details. @item @@ -22018,13 +22018,13 @@ Hit @kbd{G b g}, enter group name (e.g., @samp{important}), use @samp{F:f} as query and do not include threads. -Now activate marks propagation for this group by using @kbd{G b p}. Then +Now activate marks propagation for this group by using @kbd{G b p}. Then activate the always-unread feature by using @kbd{G b r} twice. So far so good---but how do you remove the tick marks in the @code{nnmairix} group? There are two options: You may simply use @code{nnmairix-remove-tick-mark-original-article} (bound to @kbd{$ u}) to remove -tick marks from the original article. The other possibility is to set +tick marks from the original article. The other possibility is to set @code{nnmairix-propagate-marks-to-nnmairix-groups} to @code{t}, but see the above comments about this option. If it works for you, the tick marks should also exist in the @code{nnmairix} group and you can remove them as usual, @@ -22033,19 +22033,19 @@ When you have removed a tick mark from the original article, this article should vanish from the @code{nnmairix} group after you have updated the mairix database and updated the group. Fortunately, there is a function -for doing exactly that: @code{nnmairix-update-groups}. See the previous code +for doing exactly that: @code{nnmairix-update-groups}. See the previous code snippet and the doc string for details. @item Dealing with auto-subscription of mail groups As described before, all @code{nnmairix} groups are in fact stored on -the mail back end in the form @samp{zz_mairix--}. You can -see them when you enter the back end server in the server buffer. You -should not subscribe these groups! Unfortunately, these groups will +the mail back end in the form @samp{zz_mairix--}. You can +see them when you enter the back end server in the server buffer. You +should not subscribe these groups! Unfortunately, these groups will usually get @emph{auto-subscribed} when you use @code{nnmaildir} or @code{nnml}, i.e., you will suddenly see groups of the form -@samp{zz_mairix*} pop up in your group buffer. If this happens to you, +@samp{zz_mairix*} pop up in your group buffer. If this happens to you, simply kill these groups with C-k. For avoiding this, turn off auto-subscription completely by setting the variable @code{gnus-auto-subscribed-groups} to @code{nil} (@pxref{Filtering New @@ -22103,25 +22103,25 @@ @code{nnmairix} uses a rather brute force method to force Gnus to completely reread the group on the mail back end after mairix was called---it simply deletes and re-creates the group on the mail -back end. So far, this has worked for me without any problems, and I +back end. So far, this has worked for me without any problems, and I don't see how @code{nnmairix} could delete other mail groups than its own, but anyway: you really should have a backup of your mail folders. @item All necessary information is stored in the group parameters -(@pxref{Group Parameters}). This has the advantage that no active file +(@pxref{Group Parameters}). This has the advantage that no active file is needed, but also implies that when you kill a @code{nnmairix} group, it is gone for good. @item @findex nnmairix-purge-old-groups If you create and kill a lot of @code{nnmairix} groups, the -``zz_mairix-*'' groups will accumulate on the mail back end server. To +``zz_mairix-*'' groups will accumulate on the mail back end server. To delete old groups which are no longer needed, call -@code{nnmairix-purge-old-groups}. Note that this assumes that you don't +@code{nnmairix-purge-old-groups}. Note that this assumes that you don't save any ``real'' mail in folders of the form -@code{zz_mairix--}. You can change the prefix of +@code{zz_mairix--}. You can change the prefix of @code{nnmairix} groups by changing the variable @code{nnmairix-group-prefix}. @@ -22132,14 +22132,14 @@ A problem can occur when using @code{nnmairix} with maildir folders and comes with the fact that maildir stores mail flags like @samp{Seen} or @samp{Replied} by appending chars @samp{S} and @samp{R} to the message -file name, respectively. This implies that currently you would have to +file name, respectively. This implies that currently you would have to update the mairix database not only when new mail arrives, but also when -mail flags are changing. The same applies to new mails which are indexed +mail flags are changing. The same applies to new mails which are indexed while they are still in the @samp{new} folder but then get moved to -@samp{cur} when Gnus has seen the mail. If you don't update the database +@samp{cur} when Gnus has seen the mail. If you don't update the database after this has happened, a mairix query can lead to symlinks pointing to -non-existing files. In Gnus, these messages will usually appear with -``(none)'' entries in the header and can't be accessed. If this happens +non-existing files. In Gnus, these messages will usually appear with +``(none)'' entries in the header and can't be accessed. If this happens to you, using @kbd{G b u} and updating the group will usually fix this. @end itemize @@ -23479,7 +23479,7 @@ @c #### FIXME: faces and x-faces' implementations should really be harmonized. @code{Face} headers are essentially a funkier version of @code{X-Face} -ones. They describe a 48x48 pixel colored image that's supposed to +ones. They describe a 48x48 pixel colored image that's supposed to represent the author of the message. @cindex face @@ -23511,7 +23511,7 @@ converts the file to Face format by using the @code{gnus-convert-image-to-face-command} shell command. -Here's how you would typically use this function. Put something like the +Here's how you would typically use this function. Put something like the following in your @file{~/.gnus.el} file: @lisp @@ -23690,7 +23690,7 @@ @item gnus-gravatar-size @vindex gnus-gravatar-size -The size in pixels of gravatars. Gravatars are always square, so one +The size in pixels of gravatars. Gravatars are always square, so one number for the size is enough. @item gnus-gravatar-properties @@ -27874,7 +27874,7 @@ be correct for nnimap groups. This is achieved by calling @code{nnimap-fixup-unread-after-getting-new-news} from the @code{gnus-setup-news-hook} (called on startup) and -@code{gnus-after-getting-new-news-hook}. (called after getting new +@code{gnus-after-getting-new-news-hook} (called after getting new mail). If you have modified those variables from the default, you may want to add @code{nnimap-fixup-unread-after-getting-new-news} again. If you were happy with the estimate and want to save some (minimal) time @@ -28760,7 +28760,7 @@ @cindex splitting, terminology @cindex mail sorting @cindex mail filtering (splitting) -The action of sorting your emails according to certain rules. Sometimes +The action of sorting your emails according to certain rules. Sometimes incorrectly called mail filtering. @end table === modified file 'doc/misc/sem-user.texi' --- doc/misc/sem-user.texi 2014-03-02 09:32:46 +0000 +++ doc/misc/sem-user.texi 2014-03-03 17:15:42 +0000 @@ -1303,7 +1303,7 @@ Define a new decoration style with @var{name}. @var{doc} is a documentation string describing the decoration style @var{name}. It is appended to auto-generated doc strings. -An Optional list of @var{flags} can also be specified. Flags are: +An optional list of @var{flags} can also be specified. Flags are: @code{:enabled} - specify the default enabled value for @var{name}. === modified file 'doc/misc/semantic.texi' --- doc/misc/semantic.texi 2014-01-08 19:16:10 +0000 +++ doc/misc/semantic.texi 2014-03-03 17:15:42 +0000 @@ -227,12 +227,12 @@ to learn more about how @semantic{} works. @menu -* Parser code :: Code used for the parsers -* Tag handling :: Code used for manipulating tags -* Semanticdb Internals :: Code used in the semantic database -* Analyzer Internals :: Code used in the code analyzer -* Tools :: Code used in user tools -* Tests :: Code used for testing +* Parser code:: Code used for the parsers +* Tag handling:: Code used for manipulating tags +* Semanticdb Internals:: Code used in the semantic database +* Analyzer Internals:: Code used in the code analyzer +* Tools:: Code used in user tools +* Tests:: Code used for testing @end menu @node Parser code ------------------------------------------------------------ revno: 116644 committer: Glenn Morris branch nick: trunk timestamp: Mon 2014-03-03 09:03:32 -0800 message: ChangeLog entries should be usable without the VCS diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2014-03-03 04:57:26 +0000 +++ lisp/ChangeLog 2014-03-03 17:03:32 +0000 @@ -1,8 +1,7 @@ 2014-03-03 Juanma Barranquero - * icomplete.el (icomplete-completions): Follow-up to revno:116616. - -2014-03-03 Juanma Barranquero + * icomplete.el (icomplete-completions): + Follow-up to 2014-03-01 change. * icomplete.el: Miscellaneous doc fixes. Use Icomplete everywhere instead of icomplete for consistency. ------------------------------------------------------------ revno: 116643 fixes bug: http://debbugs.gnu.org/16901 committer: Eli Zaretskii branch nick: trunk timestamp: Mon 2014-03-03 18:46:36 +0200 message: Fix crashes in lisp_align_free in a build with GC_MCHECK. src/gmalloc.c (aligned_alloc): Fix adjustment of size of the allocated buffer due to alignment. (freehook): If the block to be freed was allocated by 'aligned_alloc', find its real pointer before calling 'free'. (mabort) [emacs]: Call 'emacs_abort', not 'abort', to provide a backtrace. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-03-03 08:27:58 +0000 +++ src/ChangeLog 2014-03-03 16:46:36 +0000 @@ -1,3 +1,13 @@ +2014-03-03 Eli Zaretskii + + * gmalloc.c (aligned_alloc): Fix adjustment of size of the + allocated buffer due to alignment. + (freehook): If the block to be freed was allocated by + 'aligned_alloc', find its real pointer before calling 'free'. + (Bug#16901) + (mabort) [emacs]: Call 'emacs_abort', not 'abort', to provide a + backtrace. + 2014-03-03 Dmitry Antipov * font.c (toplevel): Adjust comment about font cache layout. === modified file 'src/gmalloc.c' --- src/gmalloc.c 2014-01-01 07:43:34 +0000 +++ src/gmalloc.c 2014-03-03 16:46:36 +0000 @@ -68,6 +68,10 @@ extern void malloc_enable_thread (void); #endif +#ifdef emacs +extern void emacs_abort (void); +#endif + /* The allocator divides the heap into blocks of fixed size; large requests receive one or more whole blocks, and small requests receive a fragment of a block. Fragment sizes are powers of two, @@ -1595,7 +1599,7 @@ { /* Reallocate the block with only as much excess as it needs. */ free (result); - result = malloc (adj + size); + result = malloc (size + alignment - adj); if (result == NULL) /* Impossible unless interrupted. */ return NULL; @@ -1605,7 +1609,7 @@ different block with weaker alignment. If so, this block is too short to contain SIZE after alignment correction. So we must try again and get another block, slightly larger. */ - } while (adj > lastadj); + } while (adj < lastadj); if (adj != 0) { @@ -1787,6 +1791,22 @@ if (ptr) { + struct alignlist *l; + + /* If the block was allocated by aligned_alloc, its real pointer + to free is recorded in _aligned_blocks; find that. */ + PROTECT_MALLOC_STATE (0); + LOCK_ALIGNED_BLOCKS (); + for (l = _aligned_blocks; l != NULL; l = l->next) + if (l->aligned == ptr) + { + l->aligned = NULL; /* Mark the slot in the list as free. */ + ptr = l->exact; + break; + } + UNLOCK_ALIGNED_BLOCKS (); + PROTECT_MALLOC_STATE (1); + hdr = ((struct hdr *) ptr) - 1; checkhdr (hdr); hdr->magic = MAGICFREE; @@ -1878,7 +1898,11 @@ #else fprintf (stderr, "mcheck: %s\n", msg); fflush (stderr); +# ifdef emacs + emacs_abort (); +# else abort (); +# endif #endif } ------------------------------------------------------------ revno: 116642 committer: Dmitry Antipov branch nick: trunk timestamp: Mon 2014-03-03 12:27:58 +0400 message: Avoid crashes when X fonts are erroneously freed on reused X 'Display *' connection data (Bug#16069). Note that X font resources still may be leaked, but currently there is no way to completely avoid it. * xterm.h (struct x_display_info): New member x_id. Add comments. * xterm.c (x_display_id): New variable. (x_term_init): Assign identifier to each opened X connection. * xfont.c (struct xfont): New member x_display_id. (xfont_open): Initialize it with frame's display id. (xfont_close): Check whether font's display id matches the one recorded for the given display. Adjust comment. * xftfont.c (struct xftfont_info): (xftfont_open, xftfont_close): Exactly as above with xfont stuff. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2014-03-03 07:46:08 +0000 +++ src/ChangeLog 2014-03-03 08:27:58 +0000 @@ -6,6 +6,20 @@ (Fframe_font_cache) [FONT_DEBUG]: New function. (syms_of_font) [FONT_DEBUG]: Defsubr it. + Avoid crashes when X fonts are erroneously freed on reused X + 'Display *' connection data (Bug#16069). Note that X font + resources still may be leaked, but currently there is no way + to completely avoid it. + * xterm.h (struct x_display_info): New member x_id. Add comments. + * xterm.c (x_display_id): New variable. + (x_term_init): Assign identifier to each opened X connection. + * xfont.c (struct xfont): New member x_display_id. + (xfont_open): Initialize it with frame's display id. + (xfont_close): Check whether font's display id matches the one + recorded for the given display. Adjust comment. + * xftfont.c (struct xftfont_info): + (xftfont_open, xftfont_close): Exactly as above with xfont stuff. + 2014-03-01 Martin Rudalics Consider Vother_window_scroll_buffer valid iff it's a live buffer. === modified file 'src/xfont.c' --- src/xfont.c 2014-01-01 07:43:34 +0000 +++ src/xfont.c 2014-03-03 08:27:58 +0000 @@ -42,6 +42,7 @@ struct font font; Display *display; XFontStruct *xfont; + unsigned x_display_id; }; /* Prototypes of support functions. */ @@ -808,6 +809,7 @@ font = XFONT_OBJECT (font_object); ((struct xfont_info *) font)->xfont = xfont; ((struct xfont_info *) font)->display = FRAME_X_DISPLAY (f); + ((struct xfont_info *) font)->x_display_id = FRAME_DISPLAY_INFO (f)->x_id; font->pixel_size = pixel_size; font->driver = &xfont_driver; font->encoding_charset = encoding->id; @@ -892,12 +894,20 @@ static void xfont_close (struct font *font) { + struct x_display_info *xdi; struct xfont_info *xfi = (struct xfont_info *) font; /* This function may be called from GC when X connection is gone (Bug#16093), and an attempt to free font resources on invalid - display may lead to X protocol errors or segfaults. */ - if (xfi->xfont && x_display_info_for_display (xfi->display)) + display may lead to X protocol errors or segfaults. Moreover, + the memory referenced by 'Display *' pointer may be reused for + the logically different X connection after the previous display + connection was closed. That's why we also check whether font's + ID matches the one recorded in x_display_info for this display. + See http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16069. */ + if (xfi->xfont + && ((xdi = x_display_info_for_display (xfi->display)) + && xfi->x_display_id == xdi->x_id)) { block_input (); XFreeFont (xfi->display, xfi->xfont); === modified file 'src/xftfont.c' --- src/xftfont.c 2014-01-06 06:25:30 +0000 +++ src/xftfont.c 2014-03-03 08:27:58 +0000 @@ -59,6 +59,7 @@ FT_Matrix matrix; Display *display; XftFont *xftfont; + unsigned x_display_id; }; /* Structure pointed by (struct face *)->extra */ @@ -372,6 +373,7 @@ xftfont_info = (struct xftfont_info *) font; xftfont_info->display = display; xftfont_info->xftfont = xftfont; + xftfont_info->x_display_id = FRAME_DISPLAY_INFO (f)->x_id; /* This means that there's no need of transformation. */ xftfont_info->matrix.xx = 0; if (FcPatternGetMatrix (xftfont->pattern, FC_MATRIX, 0, &matrix) @@ -481,6 +483,7 @@ static void xftfont_close (struct font *font) { + struct x_display_info *xdi; struct xftfont_info *xftfont_info = (struct xftfont_info *) font; #ifdef HAVE_LIBOTF @@ -493,7 +496,8 @@ /* See comment in xfont_close. */ if (xftfont_info->xftfont - && x_display_info_for_display (xftfont_info->display)) + && ((xdi = x_display_info_for_display (xftfont_info->display)) + && xftfont_info->x_display_id == xdi->x_id)) { block_input (); XftUnlockFace (xftfont_info->xftfont); === modified file 'src/xterm.c' --- src/xterm.c 2014-02-04 07:36:58 +0000 +++ src/xterm.c 2014-03-03 08:27:58 +0000 @@ -9679,6 +9679,10 @@ } #endif +/* Current X display connection identifier. Incremented for each next + connection established. */ +static unsigned x_display_id; + /* Open a connection to X display DISPLAY_NAME, and return the structure that describes the open display. If we cannot contact the display, return null. */ @@ -9896,6 +9900,7 @@ lim = min (PTRDIFF_MAX, SIZE_MAX) - sizeof "@"; if (lim - SBYTES (Vinvocation_name) < SBYTES (Vsystem_name)) memory_full (SIZE_MAX); + dpyinfo->x_id = ++x_display_id; dpyinfo->x_id_name = xmalloc (SBYTES (Vinvocation_name) + SBYTES (Vsystem_name) + 2); strcat (strcat (strcpy (dpyinfo->x_id_name, SSDATA (Vinvocation_name)), "@"), === modified file 'src/xterm.h' --- src/xterm.h 2014-01-11 09:31:09 +0000 +++ src/xterm.h 2014-03-03 08:27:58 +0000 @@ -198,6 +198,10 @@ mouse-face. */ Mouse_HLInfo mouse_highlight; + /* Logical identifier of this display. */ + unsigned x_id; + + /* Default name for all frames on this display. */ char *x_id_name; /* The number of fonts opened for this display. */