Now on revision 108636. ------------------------------------------------------------ revno: 108636 [merge] committer: Chong Yidong branch nick: trunk timestamp: Sun 2012-06-17 13:14:47 +0800 message: Merge changes from emacs-24; up to r108039 diff: === modified file 'doc/emacs/ChangeLog' --- doc/emacs/ChangeLog 2012-06-10 13:20:58 +0000 +++ doc/emacs/ChangeLog 2012-06-17 05:13:40 +0000 @@ -1,3 +1,25 @@ +2012-06-11 Chong Yidong + + * emacs.texi: Remove urlcolor setting. + +2012-06-10 Chong Yidong + + * emacs.texi: Update ISBN and edition number. + + * anti.texi: + * building.texi: + * cmdargs.texi: + * custom.texi: + * display.texi: + * files.texi: + * frames.texi: + * glossary.texi: + * misc.texi: + * mule.texi: + * programs.texi: + * sending.texi: + * text.texi: Copyedits to avoid underfull/overfull in 7x9 manual. + 2012-06-06 Michael Albinus * custom.texi (Directory Variables): Mention enable-remote-dir-locals. === modified file 'doc/emacs/anti.texi' --- doc/emacs/anti.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/anti.texi 2012-06-17 05:13:40 +0000 @@ -63,19 +63,18 @@ @kbd{C-y} and @kbd{M-y} is unintended. @item -Various completion features have been simplified. The options -@code{completion-cycle-threshold} and -@code{completion-category-overrides} have been removed. Due to the -latter removal, Emacs uses a single consistent scheme to generate -completions, instead of using a separate scheme for (say) buffer name -completion. Several major modes, such as Shell mode, now implement -their own inline completion commands instead of using -@code{completion-at-point}. +Various completion features have been simplified. The option +@code{completion-category-overrides} has been removed, so Emacs uses a +single consistent scheme to generate completions, instead of using a +separate scheme for (say) buffer name completion. Several major +modes, such as Shell mode, now implement their own inline completion +commands instead of using @code{completion-at-point}. @item -We have removed various options for controlling how windows are used, -e.g.@: @code{display-buffer-base-action}, @code{display-buffer-alist}, -@code{window-combination-limit}, and @code{window-combination-resize}. +We have removed several options for controlling how windows are used, +such as @code{display-buffer-base-action}, +@code{display-buffer-alist}, @code{window-combination-limit}, and +@code{window-combination-resize}. @item The command @kbd{M-x customize-themes} has been removed. Emacs no === modified file 'doc/emacs/building.texi' --- doc/emacs/building.texi 2012-05-28 23:35:09 +0000 +++ doc/emacs/building.texi 2012-06-17 05:13:40 +0000 @@ -426,11 +426,11 @@ C/C++ files this is usually the C compiler. Flymake can also use build tools such as @code{make} for checking complicated projects. - To enable Flymake mode, type @kbd{M-x flymake-mode}. You can jump to -the errors that it finds by using @kbd{M-x -flymake-goto-next-error} and @kbd{M-x flymake-goto-prev-error}. -Use the command @kbd{M-x flymake-display-err-menu-for-current-line} -to display any error messages associated with the current line. + To enable Flymake mode, type @kbd{M-x flymake-mode}. You can jump +to the errors that it finds by using @kbd{M-x flymake-goto-next-error} +and @kbd{M-x flymake-goto-prev-error}. To display any error messages +associated with the current line, type @kbd{M-x +flymake-display-err-menu-for-current-line}. For more details about using Flymake, @ifnottex @@ -1495,7 +1495,7 @@ @vindex eval-expression-print-level @vindex eval-expression-print-length @vindex eval-expression-debug-on-error - The customizable variables @code{eval-expression-print-level} and + The options @code{eval-expression-print-level} and @code{eval-expression-print-length} control the maximum depth and length of lists to print in the result of the evaluation commands before abbreviating them. @code{eval-expression-debug-on-error} === modified file 'doc/emacs/calendar.texi' --- doc/emacs/calendar.texi 2012-05-28 23:35:09 +0000 +++ doc/emacs/calendar.texi 2012-06-17 05:13:40 +0000 @@ -245,10 +245,10 @@ Scroll calendar one month backward (@code{calendar-scroll-right}). @item C-v @itemx @key{next} -Scroll three months forward (@code{calendar-scroll-left-three-months}). +Scroll forward by three months (@code{calendar-scroll-left-three-months}). @item M-v @itemx @key{prior} -Scroll three months backward (@code{calendar-scroll-right-three-months}). +Scroll backward by three months (@code{calendar-scroll-right-three-months}). @end table @kindex > @r{(Calendar mode)} === modified file 'doc/emacs/cmdargs.texi' --- doc/emacs/cmdargs.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/cmdargs.texi 2012-06-17 05:13:40 +0000 @@ -436,7 +436,7 @@ when you specify a relative directory name. @item EMACSDATA Directory for the architecture-independent files that come with Emacs. -This is used to initialize the Lisp variable @code{data-directory}. +This is used to initialize the variable @code{data-directory}. @item EMACSDOC Directory for the documentation string file, which is used to initialize the Lisp variable @code{doc-directory}. @@ -577,7 +577,8 @@ The user's login name. See also @env{LOGNAME}. On MS-DOS, this defaults to @samp{root}. @item VERSION_CONTROL -Used to initialize the @code{version-control} variable (@pxref{Backup Names}). +Used to initialize the @code{version-control} variable (@pxref{Backup +Names}). @end table @node Misc Variables === modified file 'doc/emacs/custom.texi' --- doc/emacs/custom.texi 2012-06-06 14:57:16 +0000 +++ doc/emacs/custom.texi 2012-06-17 05:13:40 +0000 @@ -765,16 +765,14 @@ @example fill-column is a variable defined in `C source code'. fill-column's value is 70 -Local in buffer custom.texi; global value is 70 + Automatically becomes buffer-local when set in any fashion. - - Automatically becomes buffer-local when set in any fashion. - This variable is safe as a file local variable if its value - satisfies the predicate `integerp'. +This variable is safe as a file local variable if its value +satisfies the predicate `integerp'. Documentation: -*Column beyond which automatic line-wrapping should happen. -Interactively, you can set the buffer local value using C-x f. +Column beyond which automatic line-wrapping should happen. +Interactively, you can set the local value with C-x f. You can customize this variable. @end example @@ -1054,13 +1052,14 @@ @findex add-file-local-variable-prop-line @findex delete-file-local-variable-prop-line @findex copy-dir-locals-to-file-locals-prop-line - You can use the command @kbd{M-x add-file-local-variable-prop-line} -instead of adding entries by hand. It prompts for -a variable and value, and adds them to the first line in the -appropriate way. @kbd{M-x delete-file-local-variable-prop-line} -prompts for a variable, and deletes its entry from the line. @kbd{M-x -copy-dir-locals-to-file-locals-prop-line} copies directory-local -variables to the first line (@pxref{Directory Variables}). + You can use @kbd{M-x add-file-local-variable-prop-line} instead of +adding entries by hand. This command prompts for a variable and +value, and adds them to the first line in the appropriate way. +@kbd{M-x delete-file-local-variable-prop-line} prompts for a variable, +and deletes its entry from the line. The command @kbd{M-x +copy-dir-locals-to-file-locals-prop-line} copies the current +directory-local variables to the first line (@pxref{Directory +Variables}). Here is an example first line that specifies Lisp mode and sets two variables with numeric values: === modified file 'doc/emacs/display.texi' --- doc/emacs/display.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/display.texi 2012-06-17 05:13:40 +0000 @@ -759,11 +759,10 @@ @findex global-font-lock-mode @vindex global-font-lock-mode - To toggle Font Lock mode in all buffers, type @kbd{M-x -global-font-lock-mode}. To impose this setting for future Emacs -sessions, customize the variable @code{global-font-lock-mode} -(@pxref{Easy Customization}), or add the following line to your init -file: + Type @kbd{M-x global-font-lock-mode} to toggle Font Lock mode in all +buffers. To impose this setting for future Emacs sessions, customize +the variable @code{global-font-lock-mode} (@pxref{Easy +Customization}), or add the following line to your init file: @example (global-font-lock-mode 0) === modified file 'doc/emacs/emacs.texi' --- doc/emacs/emacs.texi 2012-05-27 02:13:54 +0000 +++ doc/emacs/emacs.texi 2012-06-17 05:13:40 +0000 @@ -14,7 +14,7 @@ @c be something added by the FSF during the publishing process. @c Also, the lispref uses a float (3.0), whereas this uses an ordinal, @c so the format is not even consistent. -@set EDITION Sixteenth +@set EDITION Seventeenth @include emacsver.texi @copying @@ -54,7 +54,7 @@ @c in general, keep the following line commented out, unless doing a @c copy of this manual that will be published. The manual should go @c onto the distribution in the full, 8.5 x 11" size. -@c @smallbook +@c @set smallbook @ifset smallbook @smallbook @@ -66,8 +66,6 @@ @tex @ifset smallbook @fonttextsize 10 -\global\let\urlcolor=\Black % don't print links in grayscale -\global\let\linkcolor=\Black @end ifset \global\hbadness=6666 % don't worry about not-too-underfull boxes @end tex @@ -96,10 +94,10 @@ Published by the Free Software Foundation @* 51 Franklin Street, Fifth Floor @* Boston, MA 02110-1301 USA @* -ISBN 1-882114-86-8 +ISBN 978-0-9831592-2-3 @sp 2 -Cover art by Etienne Suvasa. +Cover art by Etienne Suvasa; cover design by Matt Lee. @end titlepage === modified file 'doc/emacs/files.texi' --- doc/emacs/files.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/files.texi 2012-06-17 05:13:40 +0000 @@ -1101,11 +1101,11 @@ this---saving them---updates the files themselves. @vindex auto-save-list-file-prefix - Emacs records information about interrupted sessions for later -recovery in files named @file{.saves-@var{pid}-@var{hostname}} in the -directory @file{~/.emacs.d/auto-save-list/}. This directory is -determined by the variable @code{auto-save-list-file-prefix}. If you -set @code{auto-save-list-file-prefix} to @code{nil}, sessions are not + Emacs records information about interrupted sessions in files named +@file{.saves-@var{pid}-@var{hostname}} in the directory +@file{~/.emacs.d/auto-save-list/}. This directory is determined by +the variable @code{auto-save-list-file-prefix}. If you set +@code{auto-save-list-file-prefix} to @code{nil}, sessions are not recorded for recovery. @node File Aliases === modified file 'doc/emacs/frames.texi' --- doc/emacs/frames.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/frames.texi 2012-06-17 05:13:40 +0000 @@ -499,7 +499,8 @@ (@pxref{Frame Parameters}), like this: @example -(add-to-list 'default-frame-alist '(font . "DejaVu Sans Mono-10")) +(add-to-list 'default-frame-alist + '(font . "DejaVu Sans Mono-10")) @end example @cindex X defaults file === modified file 'doc/emacs/glossary.texi' --- doc/emacs/glossary.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/glossary.texi 2012-06-17 05:13:40 +0000 @@ -40,8 +40,8 @@ letter, or the Control version of one of the characters @samp{@@[\]^_?}. @item @acronym{ASCII} printing character -@acronym{ASCII} printing characters include letters, digits, space, and these -punctuation characters: @samp{!@@#$%^&*()_-+=|\~`@{@}[]:;"'<>,.?/}. +@acronym{ASCII} letters, digits, space, and the following punctuation +characters: @samp{!@@#$%^&*()_-+=|\~`@{@}[]:;"'<>,.?/}. @item Auto Fill Mode Auto Fill mode is a minor mode (q.v.@:) in which text that you insert is === modified file 'doc/emacs/maintaining.texi' --- doc/emacs/maintaining.texi 2012-05-28 23:35:09 +0000 +++ doc/emacs/maintaining.texi 2012-06-17 05:13:40 +0000 @@ -903,11 +903,11 @@ @kindex C-x v l @findex vc-print-log - The command @kbd{C-x v l} (@code{vc-print-log}) displays a buffer -named @file{*vc-change-log*}, showing the history of changes made to -the current file, including who made the changes, the dates, and the -log entry for each change (these are the same log entries you would -enter via the @file{*vc-log*} buffer; @pxref{Log Buffer}). Point is + @kbd{C-x v l} (@code{vc-print-log}) displays a buffer named +@file{*vc-change-log*}, showing the history of changes made to the +current file, including who made the changes, the dates, and the log +entry for each change (these are the same log entries you would enter +via the @file{*vc-log*} buffer; @pxref{Log Buffer}). Point is centered at the revision of the file currently being visited. With a prefix argument, the command prompts for the revision to center on, and the maximum number of revisions to display. === modified file 'doc/emacs/misc.texi' --- doc/emacs/misc.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/misc.texi 2012-06-17 05:13:40 +0000 @@ -2257,18 +2257,18 @@ @cindex Brief emulation @cindex emulation of Brief @cindex mode, CRiSP -You can turn on key bindings to emulate the CRiSP/Brief editor with -@kbd{M-x crisp-mode}. Note that this rebinds @kbd{M-x} to exit Emacs -unless you set the variable @code{crisp-override-meta-x}. You can -also use the command @kbd{M-x scroll-all-mode} or set the variable +@kbd{M-x crisp-mode} enables key bindings to emulate the CRiSP/Brief +editor. Note that this rebinds @kbd{M-x} to exit Emacs unless you set +the variable @code{crisp-override-meta-x}. You can also use the +command @kbd{M-x scroll-all-mode} or set the variable @code{crisp-load-scroll-all} to emulate CRiSP's scroll-all feature (scrolling all windows together). @item EDT (DEC VMS editor) @findex edt-emulation-on @findex edt-emulation-off -Turn on EDT emulation @kbd{M-x edt-emulation-on}; use @kbd{M-x -edt-emulation-off} to restore normal Emacs command bindings. +Turn on EDT emulation with @kbd{M-x edt-emulation-on}; restore normal +command bindings with @kbd{M-x edt-emulation-off}. Most of the EDT emulation commands are keypad keys, and most standard Emacs key bindings are still available. The EDT emulation rebindings @@ -2454,7 +2454,7 @@ @code{ffap-read-only-other-window}, analogous to @code{find-file-read-only-other-window}. @item C-x 4 d -@code{ffap-dired-other-window}, analogous to @code{dired-other-window}. +@code{ffap-dired-other-window}, like @code{dired-other-window}. @item C-x 5 f @kindex C-x 5 f @r{(FFAP)} @code{ffap-other-frame}, analogous to @code{find-file-other-frame}. @@ -2481,8 +2481,8 @@ @findex animate-birthday-present @cindex animate - The @code{animate} package makes text dance (e.g. try -@kbd{M-x animate-birthday-present}). + The @code{animate} package makes text dance (e.g. @kbd{M-x +animate-birthday-present}). @findex blackbox @findex mpuz === modified file 'doc/emacs/msdog.texi' --- doc/emacs/msdog.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/msdog.texi 2012-06-17 05:13:40 +0000 @@ -415,16 +415,15 @@ @section HOME and Startup Directories on MS-Windows @cindex @code{HOME} directory on MS-Windows - The Windows equivalent of the @code{HOME} directory is the -@dfn{user-specific application data directory}. The actual location -depends on the Windows version; typical values are @file{C:\Documents -and Settings\@var{username}\Application Data} on Windows 2K/XP/2K3, -@file{C:\Users\@var{username}\AppData\Roaming} on Windows Vista/7/2K8, -and either @file{C:\WINDOWS\Application Data} or -@file{C:\WINDOWS\Profiles\@var{username}\Application Data} on the -older Windows 9X/ME systems. If this directory does not exist or -cannot be accessed, Emacs falls back to @file{C:\} as the default -value of @code{HOME}. + The Windows equivalent of @code{HOME} is the @dfn{user-specific +application data directory}. The actual location depends on the +Windows version; typical values are @file{C:\Documents and +Settings\@var{username}\Application Data} on Windows 2000/XP/2K3, +@file{C:\Users\@var{username}\AppData\Roaming} on Windows +Vista/7/2008, and either @file{C:\WINDOWS\Application Data} or +@file{C:\WINDOWS\Profiles\@var{username}\Application Data} on Windows +9X/ME. If this directory does not exist or cannot be accessed, Emacs +falls back to @file{C:\} as the default value of @code{HOME}. You can override this default value of @code{HOME} by explicitly setting the environment variable @env{HOME} to point to any directory === modified file 'doc/emacs/mule.texi' --- doc/emacs/mule.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/mule.texi 2012-06-17 05:13:40 +0000 @@ -1111,11 +1111,11 @@ @table @kbd @item C-x @key{RET} x @var{coding} @key{RET} Use coding system @var{coding} for transferring selections to and from -other window-based applications (@code{set-selection-coding-system}). +other graphical applications (@code{set-selection-coding-system}). @item C-x @key{RET} X @var{coding} @key{RET} Use coding system @var{coding} for transferring @emph{one} -selection---the next one---to or from another window-based application +selection---the next one---to or from another graphical application (@code{set-next-selection-coding-system}). @item C-x @key{RET} p @var{input-coding} @key{RET} @var{output-coding} @key{RET} === modified file 'doc/emacs/programs.texi' --- doc/emacs/programs.texi 2012-05-27 01:25:06 +0000 +++ doc/emacs/programs.texi 2012-06-17 05:13:40 +0000 @@ -1651,7 +1651,8 @@ @example (defun my-bind-clb () - (define-key c-mode-base-map "\C-j" 'c-context-line-break)) + (define-key c-mode-base-map "\C-j" + 'c-context-line-break)) (add-hook 'c-initialization-hook 'my-bind-clb) @end example === modified file 'doc/emacs/sending.texi' --- doc/emacs/sending.texi 2012-04-10 06:54:43 +0000 +++ doc/emacs/sending.texi 2012-06-10 14:02:52 +0000 @@ -74,8 +74,8 @@ Subject: Re: What is best in life? From: conan@@example.org --text follows this line-- -To crush your enemies, see them driven before you, and to hear the -lamentation of their women. +To crush your enemies, see them driven before you, and to +hear the lamentation of their women. @end example @noindent === modified file 'doc/emacs/text.texi' --- doc/emacs/text.texi 2012-05-28 23:35:09 +0000 +++ doc/emacs/text.texi 2012-06-17 05:13:40 +0000 @@ -1015,11 +1015,11 @@ @kindex C-c C-f @r{(Outline mode)} @kindex C-c C-b @r{(Outline mode)} @kindex C-c C-u @r{(Outline mode)} - The commands @kbd{C-c C-f} (@code{outline-forward-same-level}) and -@kbd{C-c C-b} (@code{outline-backward-same-level}) move from one -heading line to another visible heading at the same depth in the -outline. @kbd{C-c C-u} (@code{outline-up-heading}) moves backward to -another heading that is less deeply nested. + @kbd{C-c C-f} (@code{outline-forward-same-level}) and @kbd{C-c C-b} +(@code{outline-backward-same-level}) move from one heading line to +another visible heading at the same depth in the outline. @kbd{C-c +C-u} (@code{outline-up-heading}) moves backward to another heading +that is less deeply nested. @node Outline Visibility @subsection Outline Visibility Commands @@ -2311,8 +2311,7 @@ within the text). The @samp{Remove Special} menu item removes all of these special properties from the text in the region. - The @code{invisible} and @code{intangible} properties are not saved -in the @samp{text/enriched} format. + The @code{invisible} and @code{intangible} properties are not saved. @node Text Based Tables @section Editing Text-based Tables @@ -2345,8 +2344,8 @@ following sections for navigating and editing the table layout. @findex table-fixed-width-mode - To toggle the automatic table resizing feature, type @kbd{M-x -table-fixed-width-mode}. + Type @kbd{M-x table-fixed-width-mode} to toggle the automatic table +resizing feature. @menu * Table Definition:: What is a text based table. @@ -2506,15 +2505,16 @@ @cindex text-based tables, splitting cells @cindex splitting table cells @kbd{M-x table-split-cell} splits the current cell vertically or -horizontally, prompting for the direction with the minibuffer. The -commands @kbd{M-x table-split-cell-vertically} and @kbd{M-x -table-split-cell-horizontally} split in a specific direction. When -splitting vertically, the old cell contents are automatically split -between the two new cells. When splitting horizontally, you are -prompted for how to divide the cell contents, if the cell is -non-empty; the options are @samp{split} (divide the contents at -point), @samp{left} (put all the contents in the left cell), and -@samp{right} (put all the contents in the right cell). +horizontally, prompting for the direction with the minibuffer. To +split in a specific direction, use @kbd{M-x +table-split-cell-vertically} and @kbd{M-x +table-split-cell-horizontally}. When splitting vertically, the old +cell contents are automatically split between the two new cells. When +splitting horizontally, you are prompted for how to divide the cell +contents, if the cell is non-empty; the options are @samp{split} +(divide the contents at point), @samp{left} (put all the contents in +the left cell), and @samp{right} (put all the contents in the right +cell). The following commands enlarge or shrink a cell. By default, they resize by one row or column; if a numeric argument is supplied, that === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2012-06-17 02:07:26 +0000 +++ doc/lispref/ChangeLog 2012-06-17 05:13:40 +0000 @@ -1,3 +1,7 @@ +2012-06-17 Chong Yidong + + * elisp.texi: Remove urlcolor setting. + 2012-06-17 Glenn Morris * display.texi (Face Attributes): Copyedits. Add a few cindex entries. === modified file 'doc/lispref/customize.texi' --- doc/lispref/customize.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/customize.texi 2012-06-17 05:13:40 +0000 @@ -702,7 +702,8 @@ symbol for the key. @example -:options '("foo" ((function-item some-function) integer) +:options '("foo" + ((function-item some-function) integer) "baz") @end example @@ -710,7 +711,8 @@ example, @example -(defcustom list-alist '(("foo" 1) ("bar" 2) ("baz" 3)) +(defcustom list-alist + '(("foo" 1) ("bar" 2) ("baz" 3)) "Each element is a list of the form (KEY VALUE).") @end example @@ -718,7 +720,8 @@ instead of @example -(defcustom cons-alist '(("foo" . 1) ("bar" . 2) ("baz" . 3)) +(defcustom cons-alist + '(("foo" . 1) ("bar" . 2) ("baz" . 3)) "Each element is a cons-cell (KEY . VALUE).") @end example === modified file 'doc/lispref/display.texi' --- doc/lispref/display.texi 2012-06-17 02:07:26 +0000 +++ doc/lispref/display.texi 2012-06-17 05:13:40 +0000 @@ -790,8 +790,8 @@ @findex collapse-delayed-warnings @findex display-delayed-warnings @noindent -The function @code{collapse-delayed-warnings} iterates through -@code{delayed-warnings-list}, removing repeated entries. The function +The function @code{collapse-delayed-warnings} removes repeated entries +from @code{delayed-warnings-list}. The function @code{display-delayed-warnings} calls @code{display-warning} on each of the entries in @code{delayed-warnings-list}, in turn, and then sets @code{delayed-warnings-list} to @code{nil}. @@ -2081,11 +2081,10 @@ GNU Emacs Manual}. @item :width -Relative proportionate character width, also known as the character -set width. This should be one of the symbols @code{ultra-condensed}, -@code{extra-condensed}, @code{condensed}, @code{semi-condensed}, -@code{normal}, @code{semi-expanded}, @code{expanded}, -@code{extra-expanded}, or @code{ultra-expanded}. +Relative character width. This should be one of the symbols +@code{ultra-condensed}, @code{extra-condensed}, @code{condensed}, +@code{semi-condensed}, @code{normal}, @code{semi-expanded}, +@code{expanded}, @code{extra-expanded}, or @code{ultra-expanded}. @item :height The height of the font. In the simplest case, this is an integer in === modified file 'doc/lispref/edebug.texi' --- doc/lispref/edebug.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/edebug.texi 2012-06-17 05:13:40 +0000 @@ -1035,10 +1035,10 @@ @item The variables @code{last-command}, @code{this-command}, -@code{last-input-event}, @code{last-command-event}, +@code{last-command-event}, @code{last-input-event}, @code{last-event-frame}, @code{last-nonmenu-event}, and -@code{track-mouse}. Commands used within Edebug do not affect these -variables outside of Edebug. +@code{track-mouse}. Commands in Edebug do not affect these variables +outside of Edebug. Executing commands within Edebug can change the key sequence that would be returned by @code{this-command-keys}, and there is no way to === modified file 'doc/lispref/elisp.texi' --- doc/lispref/elisp.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/elisp.texi 2012-06-17 05:13:40 +0000 @@ -61,7 +61,7 @@ @c in general, keep the following line commented out, unless doing a @c copy of this manual that will be published. The manual should go @c onto the distribution in the full, 8.5 x 11" size. -@c @smallbook +@c @set smallbook @ifset volflag @smallbook @@ -77,8 +77,6 @@ @tex @ifset smallbook @fonttextsize 10 -\global\let\urlcolor=\Black % don't print links in grayscale -\global\let\linkcolor=\Black @end ifset \global\hbadness=6666 % don't worry about not-too-underfull boxes @end tex === modified file 'doc/lispref/files.texi' --- doc/lispref/files.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/files.texi 2012-06-17 05:13:40 +0000 @@ -2950,7 +2950,8 @@ (let ((remote-file-name-inhibit-cache (- display-time-interval 5))) (and (file-exists-p file) - (< 0 (nth 7 (file-attributes (file-chase-links file))))))) + (< 0 (nth 7 (file-attributes + (file-chase-links file))))))) @end example @end defopt === modified file 'doc/lispref/functions.texi' --- doc/lispref/functions.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/functions.texi 2012-06-17 05:13:40 +0000 @@ -1263,8 +1263,8 @@ @example In end of data: -fortran.el:2152:1:Warning: the function `gud-find-c-expr' is not known - to be defined. +fortran.el:2152:1:Warning: the function `gud-find-c-expr' is not + known to be defined. @end example In fact, @code{gud-find-c-expr} is only used in the function that === modified file 'doc/lispref/keymaps.texi' --- doc/lispref/keymaps.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/keymaps.texi 2012-06-17 05:13:40 +0000 @@ -448,8 +448,8 @@ @example (defvar help-mode-map (let ((map (make-sparse-keymap))) - (set-keymap-parent map (make-composed-keymap button-buffer-map - special-mode-map)) + (set-keymap-parent map + (make-composed-keymap button-buffer-map special-mode-map)) ... map) ... ) @end example @@ -1600,10 +1600,11 @@ @end defvar @cindex key translation function -You can use @code{input-decode-map}, @code{local-function-key-map}, or -@code{key-translation-map} for more than simple aliases, by using a -function, instead of a key sequence, as the ``translation'' of a key. -Then this function is called to compute the translation of that key. +You can use @code{input-decode-map}, @code{local-function-key-map}, +and @code{key-translation-map} for more than simple aliases, by using +a function, instead of a key sequence, as the ``translation'' of a +key. Then this function is called to compute the translation of that +key. The key translation function receives one argument, which is the prompt that was specified in @code{read-key-sequence}---or @code{nil} if the === modified file 'doc/lispref/loading.texi' --- doc/lispref/loading.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/loading.texi 2012-06-17 05:13:40 +0000 @@ -513,9 +513,10 @@ @item Definitions for major or minor modes: @code{define-minor-mode}, @code{define-globalized-minor-mode}, -@code{define-generic-mode}, @code{easy-mmode-define-minor-mode}, +@code{define-generic-mode}, @code{define-derived-mode}, +@code{easy-mmode-define-minor-mode}, @code{easy-mmode-define-global-mode}, @code{define-compilation-mode}, -@code{define-derived-mode}, and @code{define-global-minor-mode}. +and @code{define-global-minor-mode}. @item Other definition types: @code{defcustom}, @code{defgroup}, @code{defclass} === modified file 'doc/lispref/macros.texi' --- doc/lispref/macros.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/macros.texi 2012-06-17 05:13:40 +0000 @@ -338,8 +338,9 @@ "Execute a simple \"for\" loop. For example, (for i from 1 to 10 do (print i))." (list 'let (list (list var init)) - (cons 'while (cons (list '<= var final) - (append body (list (list 'inc var))))))) + (cons 'while + (cons (list '<= var final) + (append body (list (list 'inc var))))))) @end group @result{} for === modified file 'doc/lispref/modes.texi' --- doc/lispref/modes.texi 2012-06-03 09:03:23 +0000 +++ doc/lispref/modes.texi 2012-06-17 05:13:40 +0000 @@ -1234,8 +1234,8 @@ @smallexample @group -(defun lisp-mode-variables (&optional lisp-syntax keywords-case-insensitive) - (when lisp-syntax +(defun lisp-mode-variables (&optional syntax keywords-case-insensitive) + (when syntax (set-syntax-table lisp-mode-syntax-table)) (setq local-abbrev-table lisp-mode-abbrev-table) @dots{} @@ -1308,9 +1308,9 @@ Entry to this mode calls the value of `lisp-mode-hook' if that value is non-nil." (lisp-mode-variables nil t) - (set (make-local-variable 'find-tag-default-function) 'lisp-find-tag-default) - (make-local-variable 'comment-start-skip) - (setq comment-start-skip + (set (make-local-variable 'find-tag-default-function) + 'lisp-find-tag-default) + (set (make-local-variable 'comment-start-skip) "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\)\\(;+\\|#|\\) *") (setq imenu-case-fold-search t)) @end group === modified file 'doc/lispref/nonascii.texi' --- doc/lispref/nonascii.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/nonascii.texi 2012-06-17 05:13:40 +0000 @@ -408,16 +408,15 @@ or @code{R} (strong R). @item decomposition -Corresponds to the Unicode @code{Decomposition_Type} and -@code{Decomposition_Value} properties. The value is a list, whose -first element may be a symbol representing a compatibility formatting -tag, such as @code{small}@footnote{The Unicode specification writes -these tag names inside @samp{<..>} brackets, but the tag names in -Emacs do not include the brackets; e.g.@: Unicode specifies -@samp{} where Emacs uses @samp{small}. }; the other elements -are characters that give the compatibility decomposition sequence of -this character. For unassigned codepoints, the value is the character -itself. +Corresponds to the Unicode properties @code{Decomposition_Type} and +@code{Decomposition_Value}. The value is a list, whose first element +may be a symbol representing a compatibility formatting tag, such as +@code{small}@footnote{The Unicode specification writes these tag names +inside @samp{<..>} brackets, but the tag names in Emacs do not include +the brackets; e.g.@: Unicode specifies @samp{} where Emacs uses +@samp{small}. }; the other elements are characters that give the +compatibility decomposition sequence of this character. For +unassigned codepoints, the value is the character itself. @item decimal-digit-value Corresponds to the Unicode @code{Numeric_Value} property for === modified file 'doc/lispref/os.texi' --- doc/lispref/os.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/os.texi 2012-06-17 05:13:40 +0000 @@ -2322,7 +2322,7 @@ @item :image-path @var{path} This is represented either as a URI (@samp{file://} is the only URI schema supported right now) or a name in a freedesktop.org-compliant -icon theme from @samp{$XDG_DATA_DIRS/icons}, like @samp{"mail-message-new"}. +icon theme from @samp{$XDG_DATA_DIRS/icons}. @item :sound-file @var{filename} The path to a sound file to play when the notification pops up. @@ -2473,26 +2473,27 @@ strings giving alternate filenames for that library. Emacs tries to load the library from the files in the order they -appear in the list; if none is found, the running session of Emacs -won't have access to that library, and the features that depend on the -library will be unavailable. +appear in the list; if none is found, the Emacs session won't have +access to that library, and the features it provides will be +unavailable. Image support on some platforms uses this facility. Here's an example of setting this variable for supporting images on MS-Windows: -@lisp +@example (setq dynamic-library-alist '((xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll") (png "libpng12d.dll" "libpng12.dll" "libpng.dll" - "libpng13d.dll" "libpng13.dll") - (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll") + "libpng13d.dll" "libpng13.dll") + (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" + "jpeg.dll") (tiff "libtiff3.dll" "libtiff.dll") (gif "giflib4.dll" "libungif4.dll" "libungif.dll") (svg "librsvg-2-2.dll") (gdk-pixbuf "libgdk_pixbuf-2.0-0.dll") (glib "libglib-2.0-0.dll") (gobject "libgobject-2.0-0.dll"))) -@end lisp +@end example Note that image types @code{pbm} and @code{xbm} do not need entries in this variable because they do not depend on external libraries and are === modified file 'doc/lispref/positions.texi' --- doc/lispref/positions.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/positions.texi 2012-06-17 05:13:40 +0000 @@ -828,7 +828,8 @@ during an excursion: @example -Warning: Use `with-current-buffer' rather than save-excursion+set-buffer +Warning: Use `with-current-buffer' rather than + save-excursion+set-buffer @end example @noindent === modified file 'doc/lispref/processes.texi' --- doc/lispref/processes.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/processes.texi 2012-06-17 05:13:40 +0000 @@ -1802,7 +1802,7 @@ @item start The time when the process was started, in the same @w{@code{(@var{high} @var{low} @var{microsec})}} format used by -@code{current-time} and @code{file-attributes}. +@code{current-time} and by @code{file-attributes}. @item etime The time elapsed since the process started, in the @w{@code{(@var{high} === modified file 'doc/lispref/text.texi' --- doc/lispref/text.texi 2012-06-09 06:26:46 +0000 +++ doc/lispref/text.texi 2012-06-17 05:13:40 +0000 @@ -215,8 +215,7 @@ @defun buffer-string This function returns the contents of the entire accessible portion of -the current buffer as a string. It is equivalent to -@w{@code{(buffer-substring (point-min) (point-max))}}. +the current buffer, as a string. @end defun @defun filter-buffer-substring start end &optional delete === modified file 'doc/lispref/windows.texi' --- doc/lispref/windows.texi 2012-05-27 01:34:14 +0000 +++ doc/lispref/windows.texi 2012-06-17 05:13:40 +0000 @@ -1399,7 +1399,7 @@ functions described in @ref{Switching Buffers}, instead of calling @code{set-window-buffer} directly. -This function runs @code{window-scroll-functions}, followed by +This runs @code{window-scroll-functions}, followed by @code{window-configuration-change-hook}. @xref{Window Hooks}. @end defun === modified file 'etc/NEWS' --- etc/NEWS 2012-06-17 01:49:50 +0000 +++ etc/NEWS 2012-06-17 05:13:40 +0000 @@ -617,7 +617,8 @@ specifies how to display them: as a hexadecimal code in a box, a thin 1-pixel space, an empty box, etc. -*** New input methods: farsi, farsi-translit, bulgarian-alt-phonetic. +*** New input methods for Farsi and Bulgarian +(farsi-isiri-9147, farsi-transliterate-banan, bulgarian-alt-phonetic). *** `nobreak-char-display' now also highlights Unicode hyphen chars (U+2010 and U+2011). === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-17 00:32:36 +0000 +++ lisp/ChangeLog 2012-06-17 05:13:40 +0000 @@ -1,3 +1,8 @@ +2012-06-13 Glenn Morris + + * international/mule-cmds.el (mule-menu-keymap) + (set-language-environment, set-locale-environment): Doc tweaks. + 2012-06-16 Aurelien Aptel * cus-face.el (custom-face-attributes): Add wave-style underline === modified file 'lisp/gnus/ChangeLog' --- lisp/gnus/ChangeLog 2012-06-11 22:35:02 +0000 +++ lisp/gnus/ChangeLog 2012-06-17 05:13:40 +0000 @@ -1,3 +1,13 @@ +2012-06-10 Toke Høiland-Jørgensen (tiny change) + + * nnmaildir.el (nnmaildir-request-expire-articles): Ensure that `time' + is an integer to avoid later problems. + +2012-06-10 Lars Magne Ingebrigtsen + + * shr.el: Add a iso-8859-1 cookie to make stuff work under other + locales. + 2012-04-14 Wolfgang Jenkner * gnus-agent.el (gnus-agent-retrieve-headers): Recalculate the range of === modified file 'lisp/gnus/nnmaildir.el' --- lisp/gnus/nnmaildir.el 2011-08-04 00:58:07 +0000 +++ lisp/gnus/nnmaildir.el 2012-06-10 22:16:03 +0000 @@ -1461,7 +1461,7 @@ (if (eq time 'immediate) (setq time 0) (if (numberp time) - (setq time (* time 86400))))) + (setq time (round (* time 86400)))))) (when no-force (unless (integerp time) ;; handle 'never (throw 'return (gnus-uncompress-range ranges))) === modified file 'lisp/gnus/shr.el' --- lisp/gnus/shr.el 2012-03-19 14:44:14 +0000 +++ lisp/gnus/shr.el 2012-06-10 22:16:03 +0000 @@ -1393,4 +1393,8 @@ (provide 'shr) +;; Local Variables: +;; coding: iso-8859-1 +;; End: + ;;; shr.el ends here === modified file 'lisp/international/mule-cmds.el' --- lisp/international/mule-cmds.el 2012-06-07 19:25:48 +0000 +++ lisp/international/mule-cmds.el 2012-06-17 05:13:40 +0000 @@ -129,10 +129,10 @@ `(menu-item ,(purecopy "Set Coding Systems") ,set-coding-system-map :enable (default-value 'enable-multibyte-characters))) (define-key-after map [view-hello-file] - `(menu-item ,(purecopy "Show Multi-lingual Text") view-hello-file + `(menu-item ,(purecopy "Show Multilingual Sample Text") view-hello-file :enable (file-readable-p (expand-file-name "HELLO" data-directory)) - :help ,(purecopy "Display file which says HELLO in many languages"))) + :help ,(purecopy "Demonstrate various character sets"))) (define-key-after map [separator-coding-system] menu-bar-separator) (define-key-after map [describe-language-environment] @@ -148,7 +148,7 @@ `(menu-item ,(purecopy "List Character Sets") list-character-sets :help ,(purecopy "Show table of available character sets"))) (define-key-after map [mule-diag] - `(menu-item ,(purecopy "Show All of Mule Status") mule-diag + `(menu-item ,(purecopy "Show All Multilingual Settings") mule-diag :help ,(purecopy "Display multilingual environment settings"))) map) "Keymap for Mule (Multilingual environment) menu specific commands.") @@ -1828,7 +1828,7 @@ (set-terminal-coding-system (or coding-system coding) display))) (defun set-language-environment (language-name) - "Set up multi-lingual environment for using LANGUAGE-NAME. + "Set up multilingual environment for using LANGUAGE-NAME. This sets the coding system priority and the default input method and sometimes other things. LANGUAGE-NAME should be a string which is the name of a language environment. For example, \"Latin-1\" @@ -2500,7 +2500,7 @@ locale)) (defun set-locale-environment (&optional locale-name frame) - "Set up multi-lingual environment for using LOCALE-NAME. + "Set up multilingual environment for using LOCALE-NAME. This sets the language environment, the coding system priority, the default input method and sometimes other things. === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-17 00:32:36 +0000 +++ src/ChangeLog 2012-06-17 05:13:40 +0000 @@ -1,3 +1,8 @@ +2012-06-17 Jan Djärv + + * nsterm.m (x_free_frame_resources): Move xfree so freed memory isn't + referenced (Bug#11583). + 2012-06-16 Aurelien Aptel Implement wave-style variant of underlining. === modified file 'src/nsterm.m' --- src/nsterm.m 2012-06-17 00:32:36 +0000 +++ src/nsterm.m 2012-06-17 05:13:40 +0000 @@ -1155,14 +1155,14 @@ hlinfo->mouse_face_mouse_frame = 0; } - xfree (f->output_data.ns); - if (f->output_data.ns->miniimage != nil) [f->output_data.ns->miniimage release]; [[view window] close]; [view release]; + xfree (f->output_data.ns); + UNBLOCK_INPUT; } ------------------------------------------------------------ revno: 108635 committer: Glenn Morris branch nick: trunk timestamp: Sat 2012-06-16 19:07:26 -0700 message: Minor edits for Face Attributes section of display.texi * display.texi (Face Attributes): Copyedits. Add a few cindex entries. Overlining no longer behaves exactly like underlining. diff: === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2012-06-17 01:42:56 +0000 +++ doc/lispref/ChangeLog 2012-06-17 02:07:26 +0000 @@ -1,3 +1,8 @@ +2012-06-17 Glenn Morris + + * display.texi (Face Attributes): Copyedits. Add a few cindex entries. + Overlining no longer behaves exactly like underlining. + 2012-06-16 Aurelien Aptel * display.texi (Face Attributes): === modified file 'doc/lispref/display.texi' --- doc/lispref/display.texi 2012-06-17 00:32:36 +0000 +++ doc/lispref/display.texi 2012-06-17 02:07:26 +0000 @@ -2113,6 +2113,7 @@ as extra bright, and any weight less than normal is displayed as half-bright. +@cindex italic text @item :slant Font slant---one of the symbols @code{italic}, @code{oblique}, @code{normal}, @code{reverse-italic}, or @code{reverse-oblique}. On @@ -2129,10 +2130,10 @@ Background color, a string. The value can be a system-defined color name, or a hexadecimal color specification. @xref{Color Names}. +@cindex underlined text @item :underline Whether or not characters should be underlined, and in what -color. Here are the possible values of the @code{:underline} -attribute, and what they mean: +way. The possible values of the @code{:underline} attribute are: @table @asis @item @code{nil} @@ -2142,28 +2143,29 @@ Underline with the foreground color of the face. @item @var{color} -Underline in color @var{color}. +Underline in color @var{color}; which should be either a string +specifying a color, or the symbol @code{foreground-color}, meaning the +foreground color of the face. @item @code{(:color @var{color} :style @var{style})} -If @var{color} is a string, underline in it. -If @var{color} is @code{foreground-color}, underline with the -foreground color of the face. - -If @var{style} is @code{wave} underline with a wave. -If @var{style} is @code{line} underline with a line. - -If the attribute @code{:color} is omited, underline with the -foreground color of the face. -If the attribute @code{:style} is omited, underline with a line. +@var{color} is as described above. Omitting the attribute +@code{:color} means to use the foreground color of the face. +@var{style} should be a symbol @code{line} or @code{wave}, meaning to +use a straight or wavy line. Omitting the attribute @code{:style} +means to use a straight line. @end table +@cindex overlined text @item :overline Whether or not characters should be overlined, and in what color. -The value is used like that of @code{:underline}. +If the value is @code{t}, overlining uses the foreground color of the +face. If the value is a string, overlining uses that color. The +value @code{nil} means do not overline. +@cindex strike-through text @item :strike-through Whether or not characters should be strike-through, and in what -color. The value is used like that of @code{:underline}. +color. The value is used like that of @code{:overline}. @item :box Whether or not a box should be drawn around characters, its color, the ------------------------------------------------------------ revno: 108634 committer: Glenn Morris branch nick: trunk timestamp: Sat 2012-06-16 18:49:50 -0700 message: Mention face underwave diff: === modified file 'etc/NEWS' --- etc/NEWS 2012-06-16 17:56:44 +0000 +++ etc/NEWS 2012-06-17 01:49:50 +0000 @@ -88,6 +88,9 @@ *** Images displayed via ImageMagick now support transparency and the :background image spec property. +** Face underlining can now use a wave. +See the "Face Attributes" section of the Elisp manual. + ** String values for `initial-buffer-choice' also apply to emacsclient frames, if emacsclient is only told to open a new frame without specifying any file to visit or expression to evaluate. ------------------------------------------------------------ revno: 108633 committer: Glenn Morris branch nick: trunk timestamp: Sat 2012-06-16 18:42:56 -0700 message: ChangeLog fix diff: === modified file 'ChangeLog' --- ChangeLog 2012-06-17 00:32:36 +0000 +++ ChangeLog 2012-06-17 01:42:56 +0000 @@ -1,8 +1,3 @@ -2012-06-16 Aurelien Aptel - - * doc/lispref/display.texi: Document wave-style underline - face attribute. - 2012-06-13 Andreas Schwab * configure.in: Rename --enable-use-lisp-union-type to === modified file 'doc/lispref/ChangeLog' --- doc/lispref/ChangeLog 2012-06-11 14:42:55 +0000 +++ doc/lispref/ChangeLog 2012-06-17 01:42:56 +0000 @@ -1,3 +1,8 @@ +2012-06-16 Aurelien Aptel + + * display.texi (Face Attributes): + Document wave-style underline face attribute. + 2012-06-11 Chong Yidong * display.texi (ImageMagick Images): ImageMagick now supports the ------------------------------------------------------------ revno: 108632 [merge] committer: Alp Aker branch nick: trunk timestamp: Sat 2012-06-16 20:35:30 -0400 message: Merge implmentation of wave-style underline face attribute (debbugs.gnu.org/10736). diff: === modified file 'ChangeLog' --- ChangeLog 2012-06-13 13:40:48 +0000 +++ ChangeLog 2012-06-17 00:32:36 +0000 @@ -1,3 +1,8 @@ +2012-06-16 Aurelien Aptel + + * doc/lispref/display.texi: Document wave-style underline + face attribute. + 2012-06-13 Andreas Schwab * configure.in: Rename --enable-use-lisp-union-type to === modified file 'doc/lispref/display.texi' --- doc/lispref/display.texi 2012-06-11 14:42:55 +0000 +++ doc/lispref/display.texi 2012-06-17 00:32:36 +0000 @@ -2130,10 +2130,32 @@ name, or a hexadecimal color specification. @xref{Color Names}. @item :underline -Whether or not characters should be underlined, and in what color. If -the value is @code{t}, underlining uses the foreground color of the -face. If the value is a string, underlining uses that color. The -value @code{nil} means do not underline. +Whether or not characters should be underlined, and in what +color. Here are the possible values of the @code{:underline} +attribute, and what they mean: + +@table @asis +@item @code{nil} +Don't underline. + +@item @code{t} +Underline with the foreground color of the face. + +@item @var{color} +Underline in color @var{color}. + +@item @code{(:color @var{color} :style @var{style})} +If @var{color} is a string, underline in it. +If @var{color} is @code{foreground-color}, underline with the +foreground color of the face. + +If @var{style} is @code{wave} underline with a wave. +If @var{style} is @code{line} underline with a line. + +If the attribute @code{:color} is omited, underline with the +foreground color of the face. +If the attribute @code{:style} is omited, underline with a line. +@end table @item :overline Whether or not characters should be overlined, and in what color. === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-16 17:45:09 +0000 +++ lisp/ChangeLog 2012-06-17 00:32:36 +0000 @@ -1,3 +1,10 @@ +2012-06-16 Aurelien Aptel + + * cus-face.el (custom-face-attributes): Add wave-style underline + attribute. + * faces.el (set-face-attribute): Update docstring to describe + wave-style underline attribute. + 2012-06-16 Chong Yidong * term/xterm.el (terminal-init-xterm): Discard input before === modified file 'lisp/cus-face.el' --- lisp/cus-face.el 2012-01-19 07:21:25 +0000 +++ lisp/cus-face.el 2012-06-17 00:32:36 +0000 @@ -135,8 +135,13 @@ (choice :tag "Underline" :help-echo "Control text underlining." (const :tag "Off" nil) - (const :tag "On" t) - (color :tag "Colored"))) + (list :tag "On" + (const :format "" :value :color) + (choice :tag "Color" (const :tag "Foreground Color" foreground-color) color) + (const :format "" :value :style) + (choice :tag "Style" + (const :tag "Line" line) + (const :tag "Wave" wave))))) (:overline (choice :tag "Overline" === modified file 'lisp/faces.el' --- lisp/faces.el 2012-06-08 16:39:49 +0000 +++ lisp/faces.el 2012-06-17 00:32:36 +0000 @@ -623,10 +623,21 @@ `:underline' -VALUE specifies whether characters in FACE should be underlined. If -VALUE is t, underline with foreground color of the face. If VALUE is -a string, underline with that color. If VALUE is nil, explicitly -don't underline. +VALUE specifies whether characters in FACE should be underlined. +If VALUE is t, underline with foreground color of the face. +If VALUE is a string, underline with that color. +If VALUE is nil, explicitly don't underline. + +Otherwise, VALUE must be a property list of the form: + +`(:color COLOR :style STYLE)'. + +COLOR can be a either a color name string or `foreground-color'. +STYLE can be either `line' or `wave'. +If a keyword/value pair is missing from the property list, a +default value will be used for the value. +The default value of COLOR is the foreground color of the face. +The default value of STYLE is `line'. `:overline' === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-16 13:44:20 +0000 +++ src/ChangeLog 2012-06-17 00:32:36 +0000 @@ -1,3 +1,20 @@ +2012-06-16 Aurelien Aptel + + Implement wave-style variant of underlining. + * dispextern.h (face_underline_type): New enum. + (face): Add field for underline type. + * nsterm.m (ns_draw_underwave): New function. + (ns_draw_text_decoration): Use it. + * w32term.c (w32_restore_glyph_string_clip, w32_draw_underwave): + New functions. + (x_draw_glyph_string): Use them. + * xfaces.c (Qline, Qwave): New Lisp objects. + (check_lface_attrs, merge_face_ref) + (Finternal_set_lisp_face_attribute, realize_x_face): Handle + wave-style underline face attributes. + * xterm.c (x_draw_underwave): New function. + (x_draw_glyph_string): Use it. + 2012-06-16 Juanma Barranquero * makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/fringe.$(O)) === modified file 'src/dispextern.h' --- src/dispextern.h 2012-06-10 13:20:58 +0000 +++ src/dispextern.h 2012-06-17 00:32:36 +0000 @@ -1510,6 +1510,13 @@ FACE_SUNKEN_BOX }; +/* Underline type. */ + +enum face_underline_type +{ + FACE_UNDER_LINE, + FACE_UNDER_WAVE +}; /* Structure describing a realized face. @@ -1585,6 +1592,9 @@ drawing shadows. */ unsigned use_box_color_for_shadows_p : 1; + /* Style of underlining. */ + enum face_underline_type underline_type; + /* Non-zero if text in this face should be underlined, overlined, strike-through or have a box drawn around it. */ unsigned underline_p : 1; === modified file 'src/nsterm.m' --- src/nsterm.m 2012-05-26 21:23:28 +0000 +++ src/nsterm.m 2012-06-17 00:32:36 +0000 @@ -2595,6 +2595,60 @@ return n; } +/* -------------------------------------------------------------------- + Draw a wavy line under glyph string s. The wave fills wave_height + pixels from y. + + x wave_length = 3 + -- + y * * * * * + |* * * * * * * * * + wave_height = 3 | * * * * + --------------------------------------------------------------------- */ + +static void +ns_draw_underwave (struct glyph_string *s, CGFloat width, CGFloat x) +{ + int wave_height = 3, wave_length = 3; + int y, dx, dy, odd, xmax; + NSPoint a, b; + NSRect waveClip; + + dx = wave_length; + dy = wave_height - 1; + y = s->ybase + 1; + xmax = x + width; + + /* Find and set clipping rectangle */ + waveClip = NSMakeRect (x, y, width, wave_height); + [[NSGraphicsContext currentContext] saveGraphicsState]; + NSRectClip (waveClip); + + /* Draw the waves */ + a.x = x - ((int)(x) % dx); + b.x = a.x + dx; + odd = (int)(a.x/dx) % 2; + a.y = b.y = y; + + if (odd) + a.y += dy; + else + b.y += dy; + + while (a.x <= xmax) + { + [NSBezierPath strokeLineFromPoint:a toPoint:b]; + a.x = b.x, a.y = b.y; + b.x += dx, b.y = y + odd*dy; + odd = !odd; + } + + /* Restore previous clipping rectangle(s) */ + [[NSGraphicsContext currentContext] restoreGraphicsState]; +} + + + void ns_draw_text_decoration (struct glyph_string *s, struct face *face, NSColor *defaultCol, CGFloat width, CGFloat x) @@ -2608,63 +2662,75 @@ /* Do underline. */ if (face->underline_p) { - NSRect r; - unsigned long thickness, position; - - /* If the prev was underlined, match its appearance. */ - if (s->prev && s->prev->face->underline_p - && s->prev->underline_thickness > 0) - { - thickness = s->prev->underline_thickness; - position = s->prev->underline_position; - } - else - { - struct font *font; - unsigned long descent; - - font=s->font; - descent = s->y + s->height - s->ybase; - - /* Use underline thickness of font, defaulting to 1. */ - thickness = (font && font->underline_thickness > 0) - ? font->underline_thickness : 1; - - /* Determine the offset of underlining from the baseline. */ - if (x_underline_at_descent_line) - position = descent - thickness; - else if (x_use_underline_position_properties - && font && font->underline_position >= 0) - position = font->underline_position; - else if (font) - position = lround (font->descent / 2); - else - position = underline_minimum_offset; - - position = max (position, underline_minimum_offset); - - /* Ensure underlining is not cropped. */ - if (descent <= position) - { - position = descent - 1; - thickness = 1; - } - else if (descent < position + thickness) - thickness = 1; - } - - s->underline_thickness = thickness; - s->underline_position = position; - - r = NSMakeRect (x, s->ybase + position, width, thickness); - - if (face->underline_defaulted_p) - [defaultCol set]; - else - [ns_lookup_indexed_color (face->underline_color, s->f) set]; - NSRectFill (r); + if (s->face->underline_type == FACE_UNDER_WAVE) + { + if (face->underline_defaulted_p) + [defaultCol set]; + else + [ns_lookup_indexed_color (face->underline_color, s->f) set]; + + ns_draw_underwave (s, width, x); + } + else if (s->face->underline_type == FACE_UNDER_LINE) + { + + NSRect r; + unsigned long thickness, position; + + /* If the prev was underlined, match its appearance. */ + if (s->prev && s->prev->face->underline_p + && s->prev->underline_thickness > 0) + { + thickness = s->prev->underline_thickness; + position = s->prev->underline_position; + } + else + { + struct font *font; + unsigned long descent; + + font=s->font; + descent = s->y + s->height - s->ybase; + + /* Use underline thickness of font, defaulting to 1. */ + thickness = (font && font->underline_thickness > 0) + ? font->underline_thickness : 1; + + /* Determine the offset of underlining from the baseline. */ + if (x_underline_at_descent_line) + position = descent - thickness; + else if (x_use_underline_position_properties + && font && font->underline_position >= 0) + position = font->underline_position; + else if (font) + position = lround (font->descent / 2); + else + position = underline_minimum_offset; + + position = max (position, underline_minimum_offset); + + /* Ensure underlining is not cropped. */ + if (descent <= position) + { + position = descent - 1; + thickness = 1; + } + else if (descent < position + thickness) + thickness = 1; + } + + s->underline_thickness = thickness; + s->underline_position = position; + + r = NSMakeRect (x, s->ybase + position, width, thickness); + + if (face->underline_defaulted_p) + [defaultCol set]; + else + [ns_lookup_indexed_color (face->underline_color, s->f) set]; + NSRectFill (r); + } } - /* Do overline. We follow other terms in using a thickness of 1 and ignoring overline_margin. */ if (face->overline_p) === modified file 'src/w32term.c' --- src/w32term.c 2012-06-13 13:40:48 +0000 +++ src/w32term.c 2012-06-17 00:32:36 +0000 @@ -313,6 +313,94 @@ SelectClipRgn (hdc, NULL); } +/* Restore clipping rectangle in S */ +static void +w32_restore_glyph_string_clip (struct glyph_string *s) +{ + RECT *r = s->clip; + int n = s->num_clips; + + if (n == 1) + w32_set_clip_rectangle (s->hdc, r); + else if (n > 1) + { + HRGN clip1 = CreateRectRgnIndirect (r); + HRGN clip2 = CreateRectRgnIndirect (r + 1); + if (CombineRgn (clip1, clip1, clip2, RGN_OR) != ERROR) + SelectClipRgn (s->hdc, clip1); + DeleteObject (clip1); + DeleteObject (clip2); + } +} + +/* + Draw a wavy line under S. The wave fills wave_height pixels from y0. + + x0 wave_length = 2 + -- + y0 * * * * * + |* * * * * * * * * + wave_height = 3 | * * * * + +*/ + +void +w32_draw_underwave (struct glyph_string *s, COLORREF color) +{ + int wave_height = 2, wave_length = 3; + int dx, dy, x0, y0, width, x1, y1, x2, y2, odd, xmax; + XRectangle wave_clip, string_clip, final_clip; + RECT w32_final_clip, w32_string_clip; + HPEN hp, oldhp; + + dx = wave_length; + dy = wave_height - 1; + x0 = s->x; + y0 = s->ybase + 1; + width = s->width; + xmax = x0 + width; + + /* Find and set clipping rectangle */ + + wave_clip = (XRectangle){ x0, y0, width, wave_height }; + get_glyph_string_clip_rect (s, &w32_string_clip); + CONVERT_TO_XRECT (string_clip, w32_string_clip); + + if (!x_intersect_rectangles (&wave_clip, &string_clip, &final_clip)) + return; + + hp = CreatePen (PS_SOLID, 0, color); + oldhp = SelectObject (s->hdc, hp); + CONVERT_FROM_XRECT (final_clip, w32_final_clip); + w32_set_clip_rectangle (s->hdc, &w32_final_clip); + + /* Draw the waves */ + + x1 = x0 - (x0 % dx); + x2 = x1 + dx; + odd = (x1/dx) % 2; + y1 = y2 = y0; + + if (odd) + y1 += dy; + else + y2 += dy; + + MoveToEx (s->hdc, x1, y1, NULL); + + while (x1 <= xmax) + { + LineTo (s->hdc, x2, y2); + x1 = x2, y1 = y2; + x2 += dx, y2 = y0 + odd*dy; + odd = !odd; + } + + /* Restore previous pen and clipping rectangle(s) */ + w32_restore_glyph_string_clip (s); + SelectObject (s->hdc, oldhp); + DeleteObject (hp); +} /* Draw a hollow rectangle at the specified position. */ void @@ -2347,60 +2435,74 @@ /* Draw underline. */ if (s->face->underline_p) { - unsigned long thickness, position; - int y; - - if (s->prev && s->prev->face->underline_p) - { - /* We use the same underline style as the previous one. */ - thickness = s->prev->underline_thickness; - position = s->prev->underline_position; - } - else - { - /* Get the underline thickness. Default is 1 pixel. */ - if (s->font && s->font->underline_thickness > 0) - thickness = s->font->underline_thickness; - else - thickness = 1; - if (x_underline_at_descent_line) - position = (s->height - thickness) - (s->ybase - s->y); - else - { - /* Get the underline position. This is the recommended - vertical offset in pixels from the baseline to the top of - the underline. This is a signed value according to the - specs, and its default is - - ROUND ((maximum_descent) / 2), with - ROUND (x) = floor (x + 0.5) */ - - if (x_use_underline_position_properties - && s->font && s->font->underline_position >= 0) - position = s->font->underline_position; - else if (s->font) - position = (s->font->descent + 1) / 2; - } - position = max (position, underline_minimum_offset); - } - /* Check the sanity of thickness and position. We should - avoid drawing underline out of the current line area. */ - if (s->y + s->height <= s->ybase + position) - position = (s->height - 1) - (s->ybase - s->y); - if (s->y + s->height < s->ybase + position + thickness) - thickness = (s->y + s->height) - (s->ybase + position); - s->underline_thickness = thickness; - s->underline_position =position; - y = s->ybase + position; - if (s->face->underline_defaulted_p) - { - w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x, - y, s->width, 1); - } - else - { - w32_fill_area (s->f, s->hdc, s->face->underline_color, s->x, - y, s->width, 1); + if (s->face->underline_type == FACE_UNDER_WAVE) + { + COLORREF color; + + if (s->face->underline_defaulted_p) + color = s->gc->foreground; + else + color = s->face->underline_color; + + w32_draw_underwave (s, color); + } + else if (s->face->underline_type == FACE_UNDER_LINE) + { + unsigned long thickness, position; + int y; + + if (s->prev && s->prev->face->underline_p) + { + /* We use the same underline style as the previous one. */ + thickness = s->prev->underline_thickness; + position = s->prev->underline_position; + } + else + { + /* Get the underline thickness. Default is 1 pixel. */ + if (s->font && s->font->underline_thickness > 0) + thickness = s->font->underline_thickness; + else + thickness = 1; + if (x_underline_at_descent_line) + position = (s->height - thickness) - (s->ybase - s->y); + else + { + /* Get the underline position. This is the recommended + vertical offset in pixels from the baseline to the top of + the underline. This is a signed value according to the + specs, and its default is + + ROUND ((maximum_descent) / 2), with + ROUND (x) = floor (x + 0.5) */ + + if (x_use_underline_position_properties + && s->font && s->font->underline_position >= 0) + position = s->font->underline_position; + else if (s->font) + position = (s->font->descent + 1) / 2; + } + position = max (position, underline_minimum_offset); + } + /* Check the sanity of thickness and position. We should + avoid drawing underline out of the current line area. */ + if (s->y + s->height <= s->ybase + position) + position = (s->height - 1) - (s->ybase - s->y); + if (s->y + s->height < s->ybase + position + thickness) + thickness = (s->y + s->height) - (s->ybase + position); + s->underline_thickness = thickness; + s->underline_position =position; + y = s->ybase + position; + if (s->face->underline_defaulted_p) + { + w32_fill_area (s->f, s->hdc, s->gc->foreground, s->x, + y, s->width, 1); + } + else + { + w32_fill_area (s->f, s->hdc, s->face->underline_color, s->x, + y, s->width, 1); + } } } /* Draw overline. */ === modified file 'src/xfaces.c' --- src/xfaces.c 2012-06-09 16:44:44 +0000 +++ src/xfaces.c 2012-06-17 00:32:36 +0000 @@ -320,6 +320,7 @@ Lisp_Object Qnormal; Lisp_Object Qbold; +static Lisp_Object Qline, Qwave; static Lisp_Object Qultra_light, Qextra_light, Qlight; static Lisp_Object Qsemi_light, Qsemi_bold, Qextra_bold, Qultra_bold; static Lisp_Object Qoblique, Qreverse_oblique, Qreverse_italic; @@ -1894,7 +1895,8 @@ xassert (UNSPECIFIEDP (attrs[LFACE_UNDERLINE_INDEX]) || IGNORE_DEFFACE_P (attrs[LFACE_UNDERLINE_INDEX]) || SYMBOLP (attrs[LFACE_UNDERLINE_INDEX]) - || STRINGP (attrs[LFACE_UNDERLINE_INDEX])); + || STRINGP (attrs[LFACE_UNDERLINE_INDEX]) + || CONSP (attrs[LFACE_UNDERLINE_INDEX])); xassert (UNSPECIFIEDP (attrs[LFACE_OVERLINE_INDEX]) || IGNORE_DEFFACE_P (attrs[LFACE_OVERLINE_INDEX]) || SYMBOLP (attrs[LFACE_OVERLINE_INDEX]) @@ -2525,7 +2527,8 @@ { if (EQ (value, Qt) || NILP (value) - || STRINGP (value)) + || STRINGP (value) + || CONSP (value)) to[LFACE_UNDERLINE_INDEX] = value; else err = 1; @@ -2948,15 +2951,54 @@ } else if (EQ (attr, QCunderline)) { - if (!UNSPECIFIEDP (value) && !IGNORE_DEFFACE_P (value)) - if ((SYMBOLP (value) - && !EQ (value, Qt) - && !EQ (value, Qnil)) - /* Underline color. */ - || (STRINGP (value) - && SCHARS (value) == 0)) - signal_error ("Invalid face underline", value); - + int valid_p = 0; + + if (UNSPECIFIEDP (value) || IGNORE_DEFFACE_P (value)) + valid_p = 1; + else if (NILP (value) || EQ (value, Qt)) + valid_p = 1; + else if (STRINGP (value) && SCHARS (value) > 0) + valid_p = 1; + else if (CONSP (value)) + { + Lisp_Object key, val, list; + + list = value; + valid_p = 1; + + while (!NILP (CAR_SAFE(list))) + { + key = CAR_SAFE (list); + list = CDR_SAFE (list); + val = CAR_SAFE (list); + list = CDR_SAFE (list); + + if(NILP (key) || NILP (val)) + { + valid_p = 0; + break; + } + + else if (EQ (key, QCcolor) + && !(EQ (val, Qforeground_color) + || (STRINGP (val) && SCHARS (val) > 0))) + { + valid_p = 0; + break; + } + + else if (EQ (key, QCstyle) + && !(EQ (val, Qline) || EQ (val, Qwave))) + { + valid_p = 0; + break; + } + } + } + + if (!valid_p) + signal_error ("Invalid face underline", value); + old_value = LFACE_UNDERLINE (lface); LFACE_UNDERLINE (lface) = value; } @@ -5576,7 +5618,7 @@ #ifdef HAVE_WINDOW_SYSTEM struct face *default_face; struct frame *f; - Lisp_Object stipple, overline, strike_through, box; + Lisp_Object stipple, underline, overline, strike_through, box; xassert (FRAME_WINDOW_P (cache->f)); @@ -5709,29 +5751,76 @@ /* Text underline, overline, strike-through. */ - if (EQ (attrs[LFACE_UNDERLINE_INDEX], Qt)) + underline = attrs[LFACE_UNDERLINE_INDEX]; + if (EQ (underline, Qt)) { /* Use default color (same as foreground color). */ face->underline_p = 1; + face->underline_type = FACE_UNDER_LINE; face->underline_defaulted_p = 1; face->underline_color = 0; } - else if (STRINGP (attrs[LFACE_UNDERLINE_INDEX])) + else if (STRINGP (underline)) { /* Use specified color. */ face->underline_p = 1; + face->underline_type = FACE_UNDER_LINE; face->underline_defaulted_p = 0; face->underline_color - = load_color (f, face, attrs[LFACE_UNDERLINE_INDEX], + = load_color (f, face, underline, LFACE_UNDERLINE_INDEX); } - else if (NILP (attrs[LFACE_UNDERLINE_INDEX])) + else if (NILP (underline)) { face->underline_p = 0; face->underline_defaulted_p = 0; face->underline_color = 0; } - + else if (CONSP (underline)) + { + /* `(:color COLOR :style STYLE)'. + STYLE being one of `line' or `wave'. */ + face->underline_p = 1; + face->underline_color = 0; + face->underline_defaulted_p = 1; + face->underline_type = FACE_UNDER_LINE; + + while (CONSP (underline)) + { + Lisp_Object keyword, value; + + keyword = XCAR (underline); + underline = XCDR (underline); + + if (!CONSP (underline)) + break; + value = XCAR (underline); + underline = XCDR (underline); + + if (EQ (keyword, QCcolor)) + { + if (EQ (value, Qforeground_color)) + { + face->underline_defaulted_p = 1; + face->underline_color = 0; + } + else if (STRINGP (value)) + { + face->underline_defaulted_p = 0; + face->underline_color = load_color (f, face, value, + LFACE_UNDERLINE_INDEX); + } + } + else if (EQ (keyword, QCstyle)) + { + if (EQ (value, Qline)) + face->underline_type = FACE_UNDER_LINE; + else if (EQ (value, Qwave)) + face->underline_type = FACE_UNDER_WAVE; + } + } + } + overline = attrs[LFACE_OVERLINE_INDEX]; if (STRINGP (overline)) { @@ -6476,6 +6565,8 @@ DEFSYM (QCcolor, ":color"); DEFSYM (QCline_width, ":line-width"); DEFSYM (QCstyle, ":style"); + DEFSYM (Qline, "line"); + DEFSYM (Qwave, "wave"); DEFSYM (Qreleased_button, "released-button"); DEFSYM (Qpressed_button, "pressed-button"); DEFSYM (Qnormal, "normal"); === modified file 'src/xterm.c' --- src/xterm.c 2012-05-31 06:51:43 +0000 +++ src/xterm.c 2012-06-17 00:32:36 +0000 @@ -2663,6 +2663,65 @@ s->background_filled_p = 1; } +/* + Draw a wavy line under S. The wave fills wave_height pixels from y0. + + x0 wave_length = 2 + -- + y0 * * * * * + |* * * * * * * * * + wave_height = 3 | * * * * + +*/ + +static void +x_draw_underwave (struct glyph_string *s) +{ + int wave_height = 2, wave_length = 3; + int dx, dy, x0, y0, width, x1, y1, x2, y2, odd, xmax; + XRectangle wave_clip, string_clip, final_clip; + + dx = wave_length; + dy = wave_height - 1; + x0 = s->x; + y0 = s->ybase + 1; + width = s->width; + xmax = x0 + width; + + /* Find and set clipping rectangle */ + + wave_clip = (XRectangle){ x0, y0, width, wave_height }; + get_glyph_string_clip_rect (s, &string_clip); + + if (!x_intersect_rectangles (&wave_clip, &string_clip, &final_clip)) + return; + + XSetClipRectangles (s->display, s->gc, 0, 0, &final_clip, 1, Unsorted); + + /* Draw the waves */ + + x1 = x0 - (x0 % dx); + x2 = x1 + dx; + odd = (x1/dx) % 2; + y1 = y2 = y0; + + if (odd) + y1 += dy; + else + y2 += dy; + + while (x1 <= xmax) + { + XDrawLine (s->display, s->window, s->gc, x1, y1, x2, y2); + x1 = x2, y1 = y2; + x2 += dx, y2 = y0 + odd*dy; + odd = !odd; + } + + /* Restore previous clipping rectangle(s) */ + XSetClipRectangles (s->display, s->gc, 0, 0, s->clip, s->num_clips, Unsorted); +} + /* Draw glyph string S. */ @@ -2765,68 +2824,83 @@ { /* Draw underline. */ if (s->face->underline_p) - { - unsigned long thickness, position; - int y; - - if (s->prev && s->prev->face->underline_p) - { - /* We use the same underline style as the previous one. */ - thickness = s->prev->underline_thickness; - position = s->prev->underline_position; - } - else - { - /* Get the underline thickness. Default is 1 pixel. */ - if (s->font && s->font->underline_thickness > 0) - thickness = s->font->underline_thickness; - else - thickness = 1; - if (x_underline_at_descent_line) - position = (s->height - thickness) - (s->ybase - s->y); - else - { - /* Get the underline position. This is the recommended - vertical offset in pixels from the baseline to the top of - the underline. This is a signed value according to the - specs, and its default is - - ROUND ((maximum descent) / 2), with - ROUND(x) = floor (x + 0.5) */ - - if (x_use_underline_position_properties - && s->font && s->font->underline_position >= 0) - position = s->font->underline_position; - else if (s->font) - position = (s->font->descent + 1) / 2; - else - position = underline_minimum_offset; - } - position = max (position, underline_minimum_offset); - } - /* Check the sanity of thickness and position. We should - avoid drawing underline out of the current line area. */ - if (s->y + s->height <= s->ybase + position) - position = (s->height - 1) - (s->ybase - s->y); - if (s->y + s->height < s->ybase + position + thickness) - thickness = (s->y + s->height) - (s->ybase + position); - s->underline_thickness = thickness; - s->underline_position = position; - y = s->ybase + position; - if (s->face->underline_defaulted_p) - XFillRectangle (s->display, s->window, s->gc, - s->x, y, s->width, thickness); - else - { - XGCValues xgcv; - XGetGCValues (s->display, s->gc, GCForeground, &xgcv); - XSetForeground (s->display, s->gc, s->face->underline_color); - XFillRectangle (s->display, s->window, s->gc, - s->x, y, s->width, thickness); - XSetForeground (s->display, s->gc, xgcv.foreground); - } - } - + { + if (s->face->underline_type == FACE_UNDER_WAVE) + { + if (s->face->underline_defaulted_p) + x_draw_underwave (s); + else + { + XGCValues xgcv; + XGetGCValues (s->display, s->gc, GCForeground, &xgcv); + XSetForeground (s->display, s->gc, s->face->underline_color); + x_draw_underwave (s); + XSetForeground (s->display, s->gc, xgcv.foreground); + } + } + else if (s->face->underline_type == FACE_UNDER_LINE) + { + unsigned long thickness, position; + int y; + + if (s->prev && s->prev->face->underline_p) + { + /* We use the same underline style as the previous one. */ + thickness = s->prev->underline_thickness; + position = s->prev->underline_position; + } + else + { + /* Get the underline thickness. Default is 1 pixel. */ + if (s->font && s->font->underline_thickness > 0) + thickness = s->font->underline_thickness; + else + thickness = 1; + if (x_underline_at_descent_line) + position = (s->height - thickness) - (s->ybase - s->y); + else + { + /* Get the underline position. This is the recommended + vertical offset in pixels from the baseline to the top of + the underline. This is a signed value according to the + specs, and its default is + + ROUND ((maximum descent) / 2), with + ROUND(x) = floor (x + 0.5) */ + + if (x_use_underline_position_properties + && s->font && s->font->underline_position >= 0) + position = s->font->underline_position; + else if (s->font) + position = (s->font->descent + 1) / 2; + else + position = underline_minimum_offset; + } + position = max (position, underline_minimum_offset); + } + /* Check the sanity of thickness and position. We should + avoid drawing underline out of the current line area. */ + if (s->y + s->height <= s->ybase + position) + position = (s->height - 1) - (s->ybase - s->y); + if (s->y + s->height < s->ybase + position + thickness) + thickness = (s->y + s->height) - (s->ybase + position); + s->underline_thickness = thickness; + s->underline_position = position; + y = s->ybase + position; + if (s->face->underline_defaulted_p) + XFillRectangle (s->display, s->window, s->gc, + s->x, y, s->width, thickness); + else + { + XGCValues xgcv; + XGetGCValues (s->display, s->gc, GCForeground, &xgcv); + XSetForeground (s->display, s->gc, s->face->underline_color); + XFillRectangle (s->display, s->window, s->gc, + s->x, y, s->width, thickness); + XSetForeground (s->display, s->gc, xgcv.foreground); + } + } + } /* Draw overline. */ if (s->face->overline_p) { ------------------------------------------------------------ revno: 108631 committer: Glenn Morris branch nick: trunk timestamp: Sat 2012-06-16 10:56:44 -0700 message: NEWS fixes: positioning, copyedits diff: === modified file 'etc/NEWS' --- etc/NEWS 2012-06-15 02:05:43 +0000 +++ etc/NEWS 2012-06-16 17:56:44 +0000 @@ -150,6 +150,60 @@ The old `cl' is now deprecated and is nothing more than a bunch of aliases that provide the old non-prefixed names. +** A new mode for Python. +This provides several new features, including: +per-buffer shells, better indentation, Python 3 support, and improved +shell-interaction compatible with iPython (and virtually any other +text based shell). + +*** Some user options have been replaced/renamed: +Old defcustom: | New defcustom: +python-indent | python-indent-offset +python-guess-indent | python-indent-guess-indent-offset +python-pdbtrack-do-tracking-p | python-pdbtrack-activate +python-use-skeletons | python-skeleton-autoinsert + +*** Some user options have been removed: + +**** `python-indent-string-contents': Strings are never indented. + +**** `python-honour-comment-indentation': +Comments are never considered as indentation markers themselves. + +**** `python-continuation-offset': Indentation is automatically +calculated in a pep8 compliant way depending on the context. + +**** `python-shell-prompt-alist', `python-shell-continuation-prompt-alist': +Have no direct mapping as the shell interaction is completely different. + +**** `python-python-command', `python-jython-command': +Replaced by `python-shell-interpreter'. + +**** `inferior-python-filter-regexp', `python-remove-cwd-from-path', +`python-pdbtrack-minor-mode-string', `python-source-modes': +No longer relevant. + +*** Some commands have been replaced: +Old command | New command +python-insert-class | python-skeleton-class +python-insert-def | python-skeleton-def +python-insert-for | python-skeleton-for +python-insert-if | python-skeleton-if +python-insert-try/except | python-skeleton-try +python-insert-try/finally | python-skeleton-try +python-insert-while | python-skeleton-while +python-find-function | python-nav-jump-to-defun +python-next-statement | python-nav-forward-sentence +python-previous-statement | python-nav-backward-sentence +python-send-buffer | python-shell-send-buffer +python-send-defun | python-shell-send-defun +python-send-region | python-shell-send-region +python-send-region-and-go | Emulate with python-shell-send-region and + python-shell-switch-to-shell +python-send-string | python-shell-send-string +python-switch-to-python | python-shell-switch-to-shell +python-describe-symbol | python-eldoc-at-point + ** VHDL-mode - Support for ghdl (free vhdl compiler). Now default. - Add/update support for VHDL-AMS packages. @@ -1076,72 +1130,6 @@ functionality such as more intelligent indentation, electricity, support for more variants, including Mercury, and a lot more. -** Python mode has been replaced with fgallina's python.el. -Per-buffer shells, solid automatic indentation, Python 2 and 3 support -out of the box, a revamped shell interaction compatible with iPython -(and virtually any other text based shell) plus other goodies are -provided. - -*** Defcustom replacements. - -| Old defcustom | New defcustom | -|-------------------------------+-----------------------------------| -| python-indent | python-indent-offset | -| python-guess-indent | python-indent-guess-indent-offset | -| python-pdbtrack-do-tracking-p | python-pdbtrack-activate | -| python-use-skeletons | python-skeleton-autoinsert | - -*** Removed defcustoms. - -`python-indent-string-contents': Strings are never indented. - -`python-honour-comment-indentation': Comments are never considered as -indentation markers themselves. - -`python-continuation-offset': Removed, indentation is automatically -calculated in a pep8 compliant way depending on the context. - -`python-shell-prompt-alist', `python-shell-continuation-prompt-alist': -Have no direct mapping as the shell interaction is completely -different. - -`python-python-command', `python-jython-command': Are somehow replaced -by `python-shell-interpreter'. - -`inferior-python-filter-regexp', `python-remove-cwd-from-path': Have -no mapping whatsoever, they are removed. - -`python-pdbtrack-minor-mode-string': Removed, pdbtracking has no minor -mode for it. - -`python-source-modes': Removed, This mode makes no distinction between -jython and python files. - -*** Command replacements. - -| Old command | New command | -|---------------------------+------------------------------| -| python-insert-class | python-skeleton-class | -| python-insert-def | python-skeleton-def | -| python-insert-for | python-skeleton-for | -| python-insert-if | python-skeleton-if | -| python-insert-try/except | python-skeleton-try | -| python-insert-try/finally | python-skeleton-try | -| python-insert-while | python-skeleton-while | -| python-find-function | python-nav-jump-to-defun | -| python-next-statement | python-nav-forward-sentence | -| python-previous-statement | python-nav-backward-sentence | -| python-send-buffer | python-shell-send-buffer | -| python-send-defun | python-shell-send-defun | -| python-send-region | python-shell-send-region | -| python-send-region-and-go | [0] | -| python-send-string | python-shell-send-string | -| python-switch-to-python | python-shell-switch-to-shell | -| python-describe-symbol | python-eldoc-at-point | - -[0] Can be emulated by python-shell-send-region + -python-shell-switch-to-shell - ** Rmail *** The command `rmail-epa-decrypt' decrypts OpenPGP data ------------------------------------------------------------ revno: 108630 committer: Glenn Morris branch nick: trunk timestamp: Sat 2012-06-16 10:45:09 -0700 message: ChangeLog position, case fixes diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-16 09:56:15 +0000 +++ lisp/ChangeLog 2012-06-16 17:45:09 +0000 @@ -17,6 +17,197 @@ * makefile.w32-in (COMPILE_FIRST): Synch with makefile.in changes in revno:88864. +2012-06-15 Fabián Ezequiel Gallina + + * progmodes/python.el: New python.el merge. + (python-guess-indent): Obsolete var. + (python-indent-guess-indent-offset): New defcustom. + (python-indent): Obsolete var. + (python-indent-offset): New defcustom. + (python-python-command, python-jython-command): Delete var. + (python-shell-interpreter): New defcustom. + (python-pdbtrack-do-tracking-p): Delete var. + (python-pdbtrack-activate): New defcustom. + (python-use-skeletons): Obsolete var. + (python-skeleton-autoinsert): New defcustom. + (inferior-python-filter-regexp, python-continuation-offset) + (python-honour-comment-indentation, python-indent-string-contents) + (python-jython-packages, python-mode-hook) + (python-pdbtrack-minor-mode-string, python-remove-cwd-from-path) + (python-shell-prompt-alist) + (python-source-modes): Delete defcustoms. + (python-check-buffer-name, python-eldoc-setup-code) + (python-eldoc-string-code, python-ffap-setup-code) + (python-ffap-string-code, python-fill-comment-function) + (python-fill-decorator-function, python-fill-paren-function) + (python-fill-string-function, python-imenu-include-defun-type) + (python-imenu-make-tree, python-imenu-subtree-root-label) + (python-pdbtrack-stacktrace-info-regexp, python-shell-buffer-name) + (python-shell-compilation-regexp-alist) + (python-shell-completion-module-string-code) + (python-shell-completion-pdb-string-code) + (python-shell-completion-setup-code) + (python-shell-completion-string-code) + (python-shell-enable-font-lock, python-shell-exec-path) + (python-shell-extra-pythonpaths) + (python-shell-internal-buffer-name, python-shell-interpreter-args) + (python-shell-process-environment) + (python-shell-prompt-block-regexp) + (python-shell-prompt-output-regexp) + (python-shell-prompt-pdb-regexp, python-shell-prompt-regexp) + (python-shell-send-setup-max-wait, python-shell-setup-codes) + (python-shell-virtualenv-path): New defcustoms. + (brm-menu, eldoc-documentation-function, inferior-python-mode-map) + (inferior-python-mode-syntax-table, python--prompt-regexp) + (python-buffer, python-command python-python-command) + (python-default-template, python-imports, python-indent-index) + (python-indent-list, python-indent-list-length) + (python-mode-running, python-pdbtrack-is-tracking-p) + (python-preoutput-continuation, python-preoutput-leftover) + (python-preoutput-result, python-preoutput-skip-next-prompt) + (python-prev-dir/file, python-recursing) + (python-saved-check-command, python-version-checked) + (python-which-func-length-limit) + (view-return-to-alist): Delete vars. + (python-check-custom-command, python-dotty-syntax-table) + (python-imenu-index-alist, python-indent-current-level) + (python-indent-dedenters, python-indent-levels) + (python-nav-beginning-of-defun-regexp) + (python-nav-list-defun-positions-cache) + (python-pdbtrack-buffers-to-kill, python-pdbtrack-tracked-buffer) + (python-shell-internal-buffer) + (python-skeleton-available): New vars. + (def-python-skeleton): Delete macro. + (python-skeleton-define): New macro. + (python-define-auxiliary-skeleton, python-rx): New macros. + (python-insert-class): Delete command. + (python-skeleton-class): New command. + (python-insert-def): Delete command. + (python-skeleton-def): New command. + (python-insert-for): Delete command. + (python-skeleton-for): New command. + (python-insert-if): Delete command. + (python-skeleton-if): New command. + (python-insert-try/except, python-insert-try/finally): Delete commands. + (python-skeleton-try): New command. + (python-insert-while): Delete command. + (python-skeleton-while): New command. + (python-backspace): Delete command. + (python-indent-dedent-line-backspace): New command. + (python-electric-colon): Delete command. + (python-indent-electric-colon): New command. + (python-guess-indent): Delete command. + (python-indent-guess-indent-offset): New command. + (python-shift-left): Delete command. + (python-indent-shift-left): New command. + (python-shift-right): Delete command. + (python-indent-shift-right): New command. + (python-find-function): Delete command. + (python-nav-jump-to-defun): New command. + (python-next-statement): Delete command. + (python-nav-forward-sentence): New command. + (python-previous-statement): Delete command. + (python-nav-backward-sentence): New command. + (python-fill-paragraph): Delete command. + (python-fill-paragraph-function): New command. + (python-send-buffer): Delete command. + (python-shell-send-buffer): New command. + (python-send-defun): Delete command. + (python-shell-send-defun): New command. + (python-send-region, python-send-region-and-go): Delete commands. + (python-shell-send-region) + (python-shell-switch-to-shell): New commands. + (python-send-string): Delete command. + (python-shell-send-string): New command. + (python-switch-to-python): Delete command. + (python-shell-switch-to-shell): New command. + (python-describe-symbol): Delete command. + (python-eldoc-at-point): New command. + (python--set-prompt-regexp, python-args-to-list) + (python-after-info-look, python-check-version) + (python-check-comint-prompt, python-find-imports) + (python-execute-file, turn-off-pdbtrack, turn-on-pdbtrack) + (python-unload-function, python-expand-template) + (python-maybe-jython, python-preoutput-filter) + (python-pdbtrack-get-source-buffer) + (python-pdbtrack-grub-for-buffer, python-pdbtrack-overlay-arrow) + (python-pdbtrack-toggle-stack-tracking) + (python-pdbtrack-track-stack-file, python-initial-text) + (python-first-word, python-comment-line-p, python-send-command) + (python-setup-brm, python-sentinel, python-set-proc) + (python-skip-out, python-input-filter, python-outdent-p) + (python-outline-level, python-backslash-continuation-line-p) + (python-end-of-block, python-end-of-statement, python-mark-block) + (python-beginning-of-block, python-beginning-of-statement) + (python-blank-line-p, python-beginning-of-string) + (python-open-block-statement-p): Delete functions. + (python-indent-line, python-indent-line-1): Delete functions. + (python-indent-line): New function. + (python-indentation-levels): Delete function. + (python-indent-calculate-levels): New function. + (python-proc): Delete function. + (python-shell-get-process): New function. + (python-send-receive): Delete function. + (python-shell-send-string-no-output): New function. + (python-module-path): Delete function. + (python-ffap-module-path): New function. + (python-completion-at-point) + (python-symbol-completions): Delete functions. + (python-completion-complete-at-point): New function. + (python-load-file): Delete function. + (python-shell-send-file): New function. + (python-calculate-indentation): Delete function. + (python-indent-calculate-indentation): New function. + (python-skip-comments/blanks): Delete function. + (python-util-forward-comment): New function. + (python-continuation-line-p): Delete function. + (python-info-continuation-line-p): New function. + (python-which-func, python-current-defun): Delete function. + (python-info-current-defun): New function. + (python-beginning-of-defun): Delete function. + (python-nav-beginning-of-defun): New function. + (python-close-block-statement-p) + (python-block-end-p): Delete function. + (python-info-closing-block): New function. + (python-comint-output-filter-function) + (python-eldoc--get-doc-at-point, python-end-of-defun-function) + (python-fill-comment, python-fill-decorator, python-fill-paren) + (python-fill-string, python-imenu-make-element-tree) + (python-imenu-make-tree, python-imenu-tree-assoc) + (python-indent-context, python-indent-dedent-line) + (python-indent-line-function) + (python-indent-post-self-insert-function) + (python-indent-toggle-levels) + (python-info-assignment-continuation-line-p) + (python-info-beginning-of-backlash) + (python-info-block-continuation-line-p) + (python-info-closing-block-message) + (python-info-line-ends-backslash-p) + (python-info-looking-at-beginning-of-defun) + (python-info-ppss-context, python-info-ppss-context-type) + (python-nav-list-defun-positions, python-nav-read-defun) + (python-nav-sentence-end, python-nav-sentence-start) + (python-pdbtrack-comint-output-filter-function) + (python-pdbtrack-set-tracked-buffer) + (python-shell-calculate-exec-path) + (python-shell-calculate-process-environment) + (python-shell-completion--do-completion-at-point) + (python-shell-completion--get-completions) + (python-shell-completion-complete-at-point) + (python-shell-completion-complete-or-indent) + (python-shell-get-or-create-process) + (python-shell-get-process-name) + (python-shell-internal-get-or-create-process) + (python-shell-internal-get-process-name) + (python-shell-internal-send-string, python-shell-make-comint) + (python-shell-parse-command, python-shell-send-setup-code) + (python-skeleton-add-menu-items) + (python-util-clone-local-variables, python-util-position) + (run-python-internal, python-indentation-levels) + (python-nav-beginning-of-defun) + (python-completion-complete-at-point): New functions. + (run-python): Change arguments. New API requirements. + 2012-06-15 Stefan Monnier * emacs-lisp/cl-lib.el (cl--defsubst-expand): Autoload inliner @@ -1369,198 +1560,6 @@ * emacs-lisp/cl-macs.el (cl-transform-lambda): Don't add spurious parens around the arg list (bug#11499). -2012-05-16 Fabián Ezequiel Gallina - - * progmodes/python.el: New python.el merge. - (python-guess-indent): Obsolete Var. - (python-indent-guess-indent-offset): New Defcustom. - (python-indent): Obsolete Var. - (python-indent-offset): New Defcustom. - (python-python-command, python-jython-command): Delete Var. - (python-shell-interpreter): New Defcustom. - (python-pdbtrack-do-tracking-p): Delete Var. - (python-pdbtrack-activate): New Defcustom. - (python-use-skeletons): Obsolete Var. - (python-skeleton-autoinsert): New Defcustom. - (inferior-python-filter-regexp, python-continuation-offset) - (python-honour-comment-indentation, python-indent-string-contents) - (python-jython-packages, python-mode-hook) - (python-pdbtrack-minor-mode-string, python-remove-cwd-from-path) - (python-shell-prompt-alist) - (python-source-modes): Delete Defcustoms. - (python-check-buffer-name, python-eldoc-setup-code) - (python-eldoc-string-code, python-ffap-setup-code) - (python-ffap-string-code, python-fill-comment-function) - (python-fill-decorator-function, python-fill-paren-function) - (python-fill-string-function, python-imenu-include-defun-type) - (python-imenu-make-tree, python-imenu-subtree-root-label) - (python-pdbtrack-stacktrace-info-regexp, python-shell-buffer-name) - (python-shell-compilation-regexp-alist) - (python-shell-completion-module-string-code) - (python-shell-completion-pdb-string-code) - (python-shell-completion-setup-code) - (python-shell-completion-string-code) - (python-shell-enable-font-lock, python-shell-exec-path) - (python-shell-extra-pythonpaths) - (python-shell-internal-buffer-name, python-shell-interpreter-args) - (python-shell-process-environment) - (python-shell-prompt-block-regexp) - (python-shell-prompt-output-regexp) - (python-shell-prompt-pdb-regexp, python-shell-prompt-regexp) - (python-shell-send-setup-max-wait, python-shell-setup-codes) - (python-shell-virtualenv-path): New Defcustoms. - (brm-menu, eldoc-documentation-function, inferior-python-mode-map) - (inferior-python-mode-syntax-table, python--prompt-regexp) - (python-buffer, python-command python-python-command) - (python-default-template, python-imports, python-indent-index) - (python-indent-list, python-indent-list-length) - (python-mode-running, python-pdbtrack-is-tracking-p) - (python-preoutput-continuation, python-preoutput-leftover) - (python-preoutput-result, python-preoutput-skip-next-prompt) - (python-prev-dir/file, python-recursing) - (python-saved-check-command, python-version-checked) - (python-which-func-length-limit) - (view-return-to-alist): Delete Vars. - (python-check-custom-command, python-dotty-syntax-table) - (python-imenu-index-alist, python-indent-current-level) - (python-indent-dedenters, python-indent-levels) - (python-nav-beginning-of-defun-regexp) - (python-nav-list-defun-positions-cache) - (python-pdbtrack-buffers-to-kill, python-pdbtrack-tracked-buffer) - (python-shell-internal-buffer) - (python-skeleton-available): New Vars. - (def-python-skeleton): Delete Macro. - (python-skeleton-define): New Macro. - (python-define-auxiliary-skeleton, python-rx): New Macros. - (python-insert-class): Delete Command. - (python-skeleton-class): New Command. - (python-insert-def): Delete Command. - (python-skeleton-def): New Command. - (python-insert-for): Delete Command. - (python-skeleton-for): New Command. - (python-insert-if): Delete Command. - (python-skeleton-if): New Command. - (python-insert-try/except) - (python-insert-try/finally): Delete Commands. - (python-skeleton-try): New Command. - (python-insert-while): Delete Command. - (python-skeleton-while): New Command. - (python-backspace): Delete Command. - (python-indent-dedent-line-backspace): New Command. - (python-electric-colon): Delete Command. - (python-indent-electric-colon): New Command. - (python-guess-indent): Delete Command. - (python-indent-guess-indent-offset): New Command. - (python-shift-left): Delete Command. - (python-indent-shift-left): New Command. - (python-shift-right): Delete Command. - (python-indent-shift-right): New Command. - (python-find-function): Delete Command. - (python-nav-jump-to-defun): New Command. - (python-next-statement): Delete Command. - (python-nav-forward-sentence): New Command. - (python-previous-statement): Delete Command. - (python-nav-backward-sentence): New Command. - (python-fill-paragraph): Delete Command. - (python-fill-paragraph-function): New Command. - (python-send-buffer): Delete Command. - (python-shell-send-buffer): New Command. - (python-send-defun): Delete Command. - (python-shell-send-defun): New Command. - (python-send-region, python-send-region-and-go): Delete Commands. - (python-shell-send-region) - (python-shell-switch-to-shell): New Commands. - (python-send-string): Delete Command. - (python-shell-send-string): New Command. - (python-switch-to-python): Delete Command. - (python-shell-switch-to-shell): New Command. - (python-describe-symbol): Delete Command. - (python-eldoc-at-point): New Command. - (python--set-prompt-regexp, python-args-to-list) - (python-after-info-look, python-check-version) - (python-check-comint-prompt, python-find-imports) - (python-execute-file, turn-off-pdbtrack, turn-on-pdbtrack) - (python-unload-function, python-expand-template) - (python-maybe-jython, python-preoutput-filter) - (python-pdbtrack-get-source-buffer) - (python-pdbtrack-grub-for-buffer, python-pdbtrack-overlay-arrow) - (python-pdbtrack-toggle-stack-tracking) - (python-pdbtrack-track-stack-file, python-initial-text) - (python-first-word, python-comment-line-p, python-send-command) - (python-setup-brm, python-sentinel, python-set-proc) - (python-skip-out, python-input-filter, python-outdent-p) - (python-outline-level, python-backslash-continuation-line-p) - (python-end-of-block, python-end-of-statement, python-mark-block) - (python-beginning-of-block, python-beginning-of-statement) - (python-blank-line-p, python-beginning-of-string) - (python-open-block-statement-p): Delete Functions. - (python-indent-line, python-indent-line-1): Delete Functions. - (python-indent-line): New Function. - (python-indentation-levels): Delete Function. - (python-indent-calculate-levels): New Function. - (python-proc): Delete Function. - (python-shell-get-process): New Function. - (python-send-receive): Delete Function. - (python-shell-send-string-no-output): New Function. - (python-module-path): Delete Function. - (python-ffap-module-path): New Function. - (python-completion-at-point) - (python-symbol-completions): Delete Functions. - (python-completion-complete-at-point): New Function. - (python-load-file): Delete Function. - (python-shell-send-file): New Function. - (python-calculate-indentation): Delete Function. - (python-indent-calculate-indentation): New Function. - (python-skip-comments/blanks): Delete Function. - (python-util-forward-comment): New Function. - (python-continuation-line-p): Delete Function. - (python-info-continuation-line-p): New Function. - (python-which-func, python-current-defun): Delete Function. - (python-info-current-defun): New Function. - (python-beginning-of-defun): Delete Function. - (python-nav-beginning-of-defun): New Function. - (python-close-block-statement-p) - (python-block-end-p): Delete Function. - (python-info-closing-block): New Function. - (python-comint-output-filter-function) - (python-eldoc--get-doc-at-point, python-end-of-defun-function) - (python-fill-comment, python-fill-decorator, python-fill-paren) - (python-fill-string, python-imenu-make-element-tree) - (python-imenu-make-tree, python-imenu-tree-assoc) - (python-indent-context, python-indent-dedent-line) - (python-indent-line-function) - (python-indent-post-self-insert-function) - (python-indent-toggle-levels) - (python-info-assignment-continuation-line-p) - (python-info-beginning-of-backlash) - (python-info-block-continuation-line-p) - (python-info-closing-block-message) - (python-info-line-ends-backslash-p) - (python-info-looking-at-beginning-of-defun) - (python-info-ppss-context, python-info-ppss-context-type) - (python-nav-list-defun-positions, python-nav-read-defun) - (python-nav-sentence-end, python-nav-sentence-start) - (python-pdbtrack-comint-output-filter-function) - (python-pdbtrack-set-tracked-buffer) - (python-shell-calculate-exec-path) - (python-shell-calculate-process-environment) - (python-shell-completion--do-completion-at-point) - (python-shell-completion--get-completions) - (python-shell-completion-complete-at-point) - (python-shell-completion-complete-or-indent) - (python-shell-get-or-create-process) - (python-shell-get-process-name) - (python-shell-internal-get-or-create-process) - (python-shell-internal-get-process-name) - (python-shell-internal-send-string, python-shell-make-comint) - (python-shell-parse-command, python-shell-send-setup-code) - (python-skeleton-add-menu-items) - (python-util-clone-local-variables, python-util-position) - (run-python-internal, python-indentation-levels) - (python-nav-beginning-of-defun) - (python-completion-complete-at-point): New Functions. - (run-python): Change arguments. New API Requirements. - 2012-05-17 Juri Linkov * isearch.el (word-search-regexp, word-search-backward) ------------------------------------------------------------ revno: 108629 committer: Juanma Barranquero branch nick: trunk timestamp: Sat 2012-06-16 15:44:20 +0200 message: src/makefile.w32-in: Update dependencies. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-16 12:24:15 +0000 +++ src/ChangeLog 2012-06-16 13:44:20 +0000 @@ -1,3 +1,11 @@ +2012-06-16 Juanma Barranquero + + * makefile.w32-in ($(BLD)/emacs.$(O), $(BLD)/fringe.$(O)) + ($(BLD)/xml.$(O), $(BLD)/intervals.$(O), $(BLD)/macros.$(O)) + ($(BLD)/minibuf.$(O), $(BLD)/regex.$(O), $(BLD)/region-cache.$(O)) + ($(BLD)/textprop.$(O), $(BLD)/undo.$(O), $(BLD)/window.$(O)) + ($(BLD)/w32select.$(O)): Update dependencies. + 2012-06-16 Andreas Schwab * buffer.h (FETCH_MULTIBYTE_CHAR): Define as inline. === modified file 'src/makefile.w32-in' --- src/makefile.w32-in 2012-06-13 21:37:23 +0000 +++ src/makefile.w32-in 2012-06-16 13:44:20 +0000 @@ -782,6 +782,7 @@ $(NT_INC)/sys/file.h \ $(NT_INC)/unistd.h \ $(BLOCKINPUT_H) \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(FRAME_H) \ $(INTERVALS_H) \ @@ -921,6 +922,7 @@ $(SRC)/fringe.c \ $(SRC)/buffer.h \ $(BLOCKINPUT_H) \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(DISPEXTERN_H) \ $(FRAME_H) \ @@ -945,6 +947,7 @@ $(SRC)/xml.c \ $(SRC)/buffer.h \ $(SRC)/w32.h \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(LISP_H) @@ -1003,6 +1006,7 @@ $(SRC)/keymap.h \ $(SRC)/puresize.h \ $(GNU_LIB)/intprops.h \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(INTERVALS_H) \ $(KEYBOARD_H) \ @@ -1082,6 +1086,7 @@ $(SRC)/buffer.h \ $(SRC)/commands.h \ $(SRC)/macros.h \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(KEYBOARD_H) \ $(LISP_H) \ @@ -1114,6 +1119,7 @@ $(SRC)/commands.h \ $(SRC)/keymap.h \ $(SRC)/syntax.h \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(DISPEXTERN_H) \ $(FRAME_H) \ @@ -1259,7 +1265,6 @@ $(SRC)/category.h \ $(SRC)/regex.h \ $(SRC)/syntax.h \ - $(NT_INC)/unistd.h \ $(CHARACTER_H) \ $(CONFIG_H) \ $(LISP_H) @@ -1268,6 +1273,7 @@ $(SRC)/region-cache.c \ $(SRC)/buffer.h \ $(SRC)/region-cache.h \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(LISP_H) @@ -1390,6 +1396,7 @@ $(BLD)/textprop.$(O) : \ $(SRC)/textprop.c \ $(SRC)/buffer.h \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(INTERVALS_H) \ $(LISP_H) \ @@ -1405,6 +1412,7 @@ $(SRC)/undo.c \ $(SRC)/buffer.h \ $(SRC)/commands.h \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(LISP_H) \ $(WINDOW_H) @@ -1430,6 +1438,7 @@ $(SRC)/keymap.h \ $(SRC)/termchar.h \ $(BLOCKINPUT_H) \ + $(CHARACTER_H) \ $(CONFIG_H) \ $(DISPEXTERN_H) \ $(FRAME_H) \ @@ -1519,6 +1528,7 @@ $(SRC)/keymap.h \ $(SRC)/w32heap.h \ $(BLOCKINPUT_H) \ + $(CHARACTER_H) \ $(CHARSET_H) \ $(CODING_H) \ $(CONFIG_H) \ ------------------------------------------------------------ revno: 108628 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2012-06-16 16:17:14 +0300 message: Fix "make dist" on MS-Windows. nt/makefile.w32-in (install-addpm): New target. (dist): Depend on it. (install-shortcuts): Depend on install-addpm instead of copying addpm.exe as part of the recipe. See http://lists.gnu.org/archive/html/emacs-devel/2012-06/msg00171.html for the related problem and discussions. diff: === modified file 'nt/ChangeLog' --- nt/ChangeLog 2012-06-11 23:17:11 +0000 +++ nt/ChangeLog 2012-06-16 13:17:14 +0000 @@ -1,3 +1,12 @@ +2012-06-16 Eli Zaretskii + + * makefile.w32-in (install-addpm): New target. + (dist): Depend on it. + (install-shortcuts): Depend on install-addpm instead of copying + addpm.exe as part of the recipe. See + http://lists.gnu.org/archive/html/emacs-devel/2012-06/msg00171.html + for the related problem and discussions. + 2012-06-11 Glenn Morris * config.nt (SYSTEM_TYPE): Define it. === modified file 'nt/makefile.w32-in' --- nt/makefile.w32-in 2012-06-10 13:20:58 +0000 +++ nt/makefile.w32-in 2012-06-16 13:17:14 +0000 @@ -257,8 +257,10 @@ $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../lisp install $(MAKE) $(MFLAGS) $(XMFLAGS) -C ../leim install -install-shortcuts: $(INSTALL_DIR)/bin +install-addpm: $(INSTALL_DIR)/bin addpm - $(CP) $(BLD)/addpm.exe $(INSTALL_DIR)/bin + +install-shortcuts: install-addpm "$(INSTALL_DIR)/bin/addpm" -q maybe-copy-distfiles: maybe-copy-distfiles-$(SHELLTYPE) @@ -276,7 +278,7 @@ # Also create bin directory for dist files. mkdir "$(TMP_DIST_DIR)/bin" -dist: install-bin maybe-copy-distfiles +dist: install-bin install-addpm maybe-copy-distfiles $(CP) "$(INSTALL_DIR)/BUGS" $(TMP_DIST_DIR) $(CP) "$(INSTALL_DIR)/COPYING" $(TMP_DIST_DIR) $(CP) "$(INSTALL_DIR)/README" $(TMP_DIST_DIR) ------------------------------------------------------------ revno: 108627 committer: Andreas Schwab branch nick: emacs timestamp: Sat 2012-06-16 14:24:15 +0200 message: * buffer.h (FETCH_MULTIBYTE_CHAR): Define as inline. (BUF_FETCH_MULTIBYTE_CHAR): Likewise. * character.c (_fetch_multibyte_char_p): Remove. * alloc.c: Include "character.h" before "buffer.h". * bidi.c: Likewise. * buffer.c: Likewise. * bytecode.c: Likewise. * callint.c: Likewise. * callproc.c: Likewise. * casefiddle.c: Likewise. * casetab.c: Likewise. * category.c: Likewise. * cmds.c: Likewise. * coding.c: Likewise. * composite.c: Likewise. * dired.c: Likewise. * dispnew.c: Likewise. * doc.c: Likewise. * dosfns.c: Likewise. * editfns.c: Likewise. * emacs.c: Likewise. * fileio.c: Likewise. * filelock.c: Likewise. * font.c: Likewise. * fontset.c: Likewise. * fringe.c: Likewise. * indent.c: Likewise. * insdel.c: Likewise. * intervals.c: Likewise. * keyboard.c: Likewise. * keymap.c: Likewise. * lread.c: Likewise. * macros.c: Likewise. * marker.c: Likewise. * minibuf.c: Likewise. * nsfns.m: Likewise. * nsmenu.m: Likewise. * print.c: Likewise. * process.c: Likewise. * regex.c: Likewise. * region-cache.c: Likewise. * search.c: Likewise. * syntax.c: Likewise. * term.c: Likewise. * textprop.c: Likewise. * undo.c: Likewise. * unexsol.c: Likewise. * w16select.c: Likewise. * w32fns.c: Likewise. * w32menu.c: Likewise. * window.c: Likewise. * xdisp.c: Likewise. * xfns.c: Likewise. * xmenu.c: Likewise. * xml.c: Likewise. * xselect.c: Likewise. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-16 11:47:44 +0000 +++ src/ChangeLog 2012-06-16 12:24:15 +0000 @@ -1,3 +1,62 @@ +2012-06-16 Andreas Schwab + + * buffer.h (FETCH_MULTIBYTE_CHAR): Define as inline. + (BUF_FETCH_MULTIBYTE_CHAR): Likewise. + * character.c (_fetch_multibyte_char_p): Remove. + * alloc.c: Include "character.h" before "buffer.h". + * bidi.c: Likewise. + * buffer.c: Likewise. + * bytecode.c: Likewise. + * callint.c: Likewise. + * callproc.c: Likewise. + * casefiddle.c: Likewise. + * casetab.c: Likewise. + * category.c: Likewise. + * cmds.c: Likewise. + * coding.c: Likewise. + * composite.c: Likewise. + * dired.c: Likewise. + * dispnew.c: Likewise. + * doc.c: Likewise. + * dosfns.c: Likewise. + * editfns.c: Likewise. + * emacs.c: Likewise. + * fileio.c: Likewise. + * filelock.c: Likewise. + * font.c: Likewise. + * fontset.c: Likewise. + * fringe.c: Likewise. + * indent.c: Likewise. + * insdel.c: Likewise. + * intervals.c: Likewise. + * keyboard.c: Likewise. + * keymap.c: Likewise. + * lread.c: Likewise. + * macros.c: Likewise. + * marker.c: Likewise. + * minibuf.c: Likewise. + * nsfns.m: Likewise. + * nsmenu.m: Likewise. + * print.c: Likewise. + * process.c: Likewise. + * regex.c: Likewise. + * region-cache.c: Likewise. + * search.c: Likewise. + * syntax.c: Likewise. + * term.c: Likewise. + * textprop.c: Likewise. + * undo.c: Likewise. + * unexsol.c: Likewise. + * w16select.c: Likewise. + * w32fns.c: Likewise. + * w32menu.c: Likewise. + * window.c: Likewise. + * xdisp.c: Likewise. + * xfns.c: Likewise. + * xmenu.c: Likewise. + * xml.c: Likewise. + * xselect.c: Likewise. + 2012-06-16 Eli Zaretskii * xdisp.c (set_cursor_from_row): Don't dereference glyphs_end. If === modified file 'src/alloc.c' --- src/alloc.c 2012-06-13 13:40:48 +0000 +++ src/alloc.c 2012-06-16 12:24:15 +0000 @@ -38,12 +38,12 @@ #include "process.h" #include "intervals.h" #include "puresize.h" +#include "character.h" #include "buffer.h" #include "window.h" #include "keyboard.h" #include "frame.h" #include "blockinput.h" -#include "character.h" #include "syssignal.h" #include "termhooks.h" /* For struct terminal. */ #include === modified file 'src/bidi.c' --- src/bidi.c 2012-05-28 07:13:45 +0000 +++ src/bidi.c 2012-06-16 12:24:15 +0000 @@ -59,8 +59,8 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "dispextern.h" static int bidi_initialized = 0; === modified file 'src/buffer.c' --- src/buffer.c 2012-06-06 06:39:24 +0000 +++ src/buffer.c 2012-06-16 12:24:15 +0000 @@ -33,8 +33,8 @@ #include "intervals.h" #include "window.h" #include "commands.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "region-cache.h" #include "indent.h" #include "blockinput.h" === modified file 'src/buffer.h' --- src/buffer.h 2012-06-03 09:03:23 +0000 +++ src/buffer.h 2012-06-16 12:24:15 +0000 @@ -355,28 +355,6 @@ #define FETCH_BYTE(n) *(BYTE_POS_ADDR ((n))) -/* Variables used locally in FETCH_MULTIBYTE_CHAR. */ -extern unsigned char *_fetch_multibyte_char_p; - -/* Return character code of multi-byte form at byte position POS. If POS - doesn't point the head of valid multi-byte form, only the byte at - POS is returned. No range checking. - - WARNING: The character returned by this macro could be "unified" - inside STRING_CHAR, if the original character in the buffer belongs - to one of the Private Use Areas (PUAs) of codepoints that Emacs - uses to support non-unified CJK characters. If that happens, - CHAR_BYTES will return a value that is different from the length of - the original multibyte sequence stored in the buffer. Therefore, - do _not_ use FETCH_MULTIBYTE_CHAR if you need to advance through - the buffer to the next character after fetching this one. Instead, - use either FETCH_CHAR_ADVANCE or STRING_CHAR_AND_LENGTH. */ - -#define FETCH_MULTIBYTE_CHAR(pos) \ - (_fetch_multibyte_char_p = (((pos) >= GPT_BYTE ? GAP_SIZE : 0) \ - + (pos) + BEG_ADDR - BEG_BYTE), \ - STRING_CHAR (_fetch_multibyte_char_p)) - /* Return character at byte position POS. If the current buffer is unibyte and the character is not ASCII, make the returning character multibyte. */ @@ -425,16 +403,6 @@ #define BUF_FETCH_BYTE(buf, n) \ *(BUF_BYTE_ADDRESS ((buf), (n))) - -/* Return character code of multi-byte form at byte position POS in BUF. - If POS doesn't point the head of valid multi-byte form, only the byte at - POS is returned. No range checking. */ - -#define BUF_FETCH_MULTIBYTE_CHAR(buf, pos) \ - (_fetch_multibyte_char_p \ - = (((pos) >= BUF_GPT_BYTE (buf) ? BUF_GAP_SIZE (buf) : 0) \ - + (pos) + BUF_BEG_ADDR (buf) - BEG_BYTE), \ - STRING_CHAR (_fetch_multibyte_char_p)) /* Define the actual buffer data structures. */ @@ -945,7 +913,41 @@ extern Lisp_Object Qbefore_change_functions; extern Lisp_Object Qafter_change_functions; extern Lisp_Object Qfirst_change_hook; - + +/* Return character code of multi-byte form at byte position POS. If POS + doesn't point the head of valid multi-byte form, only the byte at + POS is returned. No range checking. + + WARNING: The character returned by this macro could be "unified" + inside STRING_CHAR, if the original character in the buffer belongs + to one of the Private Use Areas (PUAs) of codepoints that Emacs + uses to support non-unified CJK characters. If that happens, + CHAR_BYTES will return a value that is different from the length of + the original multibyte sequence stored in the buffer. Therefore, + do _not_ use FETCH_MULTIBYTE_CHAR if you need to advance through + the buffer to the next character after fetching this one. Instead, + use either FETCH_CHAR_ADVANCE or STRING_CHAR_AND_LENGTH. */ + +static inline int +FETCH_MULTIBYTE_CHAR (ptrdiff_t pos) +{ + unsigned char *p = ((pos >= GPT_BYTE ? GAP_SIZE : 0) + + pos + BEG_ADDR - BEG_BYTE); + return STRING_CHAR (p); +} + +/* Return character code of multi-byte form at byte position POS in BUF. + If POS doesn't point the head of valid multi-byte form, only the byte at + POS is returned. No range checking. */ + +static inline int +BUF_FETCH_MULTIBYTE_CHAR (struct buffer *buf, ptrdiff_t pos) +{ + unsigned char *p + = ((pos >= BUF_GPT_BYTE (buf) ? BUF_GAP_SIZE (buf) : 0) + + pos + BUF_BEG_ADDR (buf) - BEG_BYTE); + return STRING_CHAR (p); +} /* Overlays */ === modified file 'src/bytecode.c' --- src/bytecode.c 2012-02-10 18:58:48 +0000 +++ src/bytecode.c 2012-06-16 12:24:15 +0000 @@ -35,8 +35,8 @@ #include #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "syntax.h" #include "window.h" === modified file 'src/callint.c' --- src/callint.c 2012-06-02 19:21:34 +0000 +++ src/callint.c 2012-06-16 12:24:15 +0000 @@ -22,12 +22,12 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" #include "commands.h" #include "keyboard.h" #include "window.h" #include "keymap.h" -#include "character.h" Lisp_Object Qminus, Qplus; Lisp_Object Qcall_interactively; === modified file 'src/callproc.c' --- src/callproc.c 2012-05-30 14:20:45 +0000 +++ src/callproc.c 2012-06-16 12:24:15 +0000 @@ -44,8 +44,8 @@ #endif /* MSDOS */ #include "commands.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "ccl.h" #include "coding.h" #include "composite.h" === modified file 'src/casefiddle.c' --- src/casefiddle.c 2012-02-10 18:58:48 +0000 +++ src/casefiddle.c 2012-06-16 12:24:15 +0000 @@ -21,8 +21,8 @@ #include #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "commands.h" #include "syntax.h" #include "composite.h" === modified file 'src/casetab.c' --- src/casetab.c 2012-02-10 18:58:48 +0000 +++ src/casetab.c 2012-06-16 12:24:15 +0000 @@ -21,8 +21,8 @@ #include #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" static Lisp_Object Qcase_table_p, Qcase_table; Lisp_Object Vascii_downcase_table; === modified file 'src/category.c' --- src/category.c 2012-06-16 08:20:19 +0000 +++ src/category.c 2012-06-16 12:24:15 +0000 @@ -32,8 +32,8 @@ #include #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "charset.h" #include "category.h" #include "keymap.h" === modified file 'src/character.c' --- src/character.c 2012-02-10 18:58:48 +0000 +++ src/character.c 2012-06-16 12:24:15 +0000 @@ -57,9 +57,6 @@ Unicode character. Mainly used by the macro MAYBE_UNIFY_CHAR. */ Lisp_Object Vchar_unify_table; -/* Variable used locally in the macro FETCH_MULTIBYTE_CHAR. */ -unsigned char *_fetch_multibyte_char_p; - static Lisp_Object Qchar_script_table; === modified file 'src/cmds.c' --- src/cmds.c 2012-02-10 18:58:48 +0000 +++ src/cmds.c 2012-06-16 12:24:15 +0000 @@ -22,8 +22,8 @@ #include #include "lisp.h" #include "commands.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "syntax.h" #include "window.h" #include "keyboard.h" === modified file 'src/coding.c' --- src/coding.c 2012-05-26 22:27:21 +0000 +++ src/coding.c 2012-06-16 12:24:15 +0000 @@ -288,8 +288,8 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "charset.h" #include "ccl.h" #include "composite.h" === modified file 'src/composite.c' --- src/composite.c 2012-04-09 22:54:59 +0000 +++ src/composite.c 2012-06-16 12:24:15 +0000 @@ -25,8 +25,8 @@ #include #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "coding.h" #include "intervals.h" #include "window.h" === modified file 'src/dired.c' --- src/dired.c 2012-04-22 00:53:32 +0000 +++ src/dired.c 2012-06-16 12:24:15 +0000 @@ -71,9 +71,9 @@ #include "lisp.h" #include "systime.h" +#include "character.h" #include "buffer.h" #include "commands.h" -#include "character.h" #include "charset.h" #include "coding.h" #include "regex.h" === modified file 'src/dispnew.c' --- src/dispnew.c 2012-06-08 13:59:28 +0000 +++ src/dispnew.c 2012-06-16 12:24:15 +0000 @@ -30,8 +30,8 @@ /* cm.h must come after dispextern.h on Windows. */ #include "dispextern.h" #include "cm.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "keyboard.h" #include "frame.h" #include "termhooks.h" === modified file 'src/doc.c' --- src/doc.c 2012-05-31 06:06:42 +0000 +++ src/doc.c 2012-06-16 12:24:15 +0000 @@ -28,9 +28,9 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" #include "keyboard.h" -#include "character.h" #include "keymap.h" #include "buildobj.h" === modified file 'src/dosfns.c' --- src/dosfns.c 2012-04-09 13:05:48 +0000 +++ src/dosfns.c 2012-06-16 12:24:15 +0000 @@ -26,6 +26,7 @@ #include #include #include "lisp.h" +#include "character.h" #include "buffer.h" #include "termchar.h" #include "frame.h" @@ -35,7 +36,6 @@ #include "dosfns.h" #include "msdos.h" #include "dispextern.h" -#include "character.h" #include "coding.h" #include "process.h" #include === modified file 'src/editfns.c' --- src/editfns.c 2012-05-25 19:24:54 +0000 +++ src/editfns.c 2012-06-16 12:24:15 +0000 @@ -52,8 +52,8 @@ #include #include "intervals.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "coding.h" #include "frame.h" #include "window.h" === modified file 'src/emacs.c' --- src/emacs.c 2012-06-13 13:40:48 +0000 +++ src/emacs.c 2012-06-16 12:24:15 +0000 @@ -45,6 +45,7 @@ #include "commands.h" #include "intervals.h" +#include "character.h" #include "buffer.h" #include "window.h" === modified file 'src/fileio.c' --- src/fileio.c 2012-06-01 03:41:03 +0000 +++ src/fileio.c 2012-06-16 12:24:15 +0000 @@ -40,8 +40,8 @@ #include "lisp.h" #include "intervals.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "coding.h" #include "window.h" #include "blockinput.h" === modified file 'src/filelock.c' --- src/filelock.c 2012-05-10 00:55:57 +0000 +++ src/filelock.c 2012-06-16 12:24:15 +0000 @@ -40,8 +40,8 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "coding.h" #include "systime.h" === modified file 'src/font.c' --- src/font.c 2012-02-10 18:58:48 +0000 +++ src/font.c 2012-06-16 12:24:15 +0000 @@ -27,12 +27,12 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" #include "frame.h" #include "window.h" #include "dispextern.h" #include "charset.h" -#include "character.h" #include "composite.h" #include "fontset.h" #include "font.h" === modified file 'src/fontset.c' --- src/fontset.c 2012-04-09 22:54:59 +0000 +++ src/fontset.c 2012-06-16 12:24:15 +0000 @@ -32,8 +32,8 @@ #include "lisp.h" #include "blockinput.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "charset.h" #include "ccl.h" #include "keyboard.h" === modified file 'src/fringe.c' --- src/fringe.c 2012-06-09 07:27:15 +0000 +++ src/fringe.c 2012-06-16 12:24:15 +0000 @@ -24,6 +24,7 @@ #include "frame.h" #include "window.h" #include "dispextern.h" +#include "character.h" #include "buffer.h" #include "blockinput.h" #include "termhooks.h" === modified file 'src/indent.c' --- src/indent.c 2012-04-22 00:53:32 +0000 +++ src/indent.c 2012-06-16 12:24:15 +0000 @@ -22,8 +22,8 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "category.h" #include "composite.h" #include "indent.h" === modified file 'src/insdel.c' --- src/insdel.c 2012-05-25 18:19:24 +0000 +++ src/insdel.c 2012-06-16 12:24:15 +0000 @@ -25,8 +25,8 @@ #include "lisp.h" #include "intervals.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "window.h" #include "blockinput.h" #include "region-cache.h" === modified file 'src/intervals.c' --- src/intervals.c 2012-05-25 18:19:24 +0000 +++ src/intervals.c 2012-06-16 12:24:15 +0000 @@ -42,6 +42,7 @@ #include #include "lisp.h" #include "intervals.h" +#include "character.h" #include "buffer.h" #include "puresize.h" #include "keyboard.h" === modified file 'src/keyboard.c' --- src/keyboard.c 2012-06-02 19:21:34 +0000 +++ src/keyboard.c 2012-06-16 12:24:15 +0000 @@ -30,8 +30,8 @@ #include "keyboard.h" #include "window.h" #include "commands.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "disptab.h" #include "dispextern.h" #include "syntax.h" === modified file 'src/keymap.c' --- src/keymap.c 2012-05-31 06:06:42 +0000 +++ src/keymap.c 2012-06-16 12:24:15 +0000 @@ -43,8 +43,8 @@ #include #include "lisp.h" #include "commands.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "charset.h" #include "keyboard.h" #include "frame.h" === modified file 'src/lread.c' --- src/lread.c 2012-06-11 15:13:27 +0000 +++ src/lread.c 2012-06-16 12:24:15 +0000 @@ -28,8 +28,8 @@ #include #include "lisp.h" #include "intervals.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "charset.h" #include "coding.h" #include === modified file 'src/macros.c' --- src/macros.c 2012-06-02 19:21:34 +0000 +++ src/macros.c 2012-06-16 12:24:15 +0000 @@ -23,6 +23,7 @@ #include "lisp.h" #include "macros.h" #include "commands.h" +#include "character.h" #include "buffer.h" #include "window.h" #include "keyboard.h" === modified file 'src/marker.c' --- src/marker.c 2012-02-10 18:58:48 +0000 +++ src/marker.c 2012-06-16 12:24:15 +0000 @@ -20,8 +20,8 @@ #include #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" /* Record one cached position found recently by buf_charpos_to_bytepos or buf_bytepos_to_charpos. */ === modified file 'src/minibuf.c' --- src/minibuf.c 2012-06-02 17:03:49 +0000 +++ src/minibuf.c 2012-06-16 12:24:15 +0000 @@ -25,6 +25,7 @@ #include "lisp.h" #include "commands.h" +#include "character.h" #include "buffer.h" #include "dispextern.h" #include "keyboard.h" === modified file 'src/nsfns.m' --- src/nsfns.m 2012-02-10 18:58:48 +0000 +++ src/nsfns.m 2012-06-16 12:24:15 +0000 @@ -38,11 +38,11 @@ #include "blockinput.h" #include "nsterm.h" #include "window.h" +#include "character.h" #include "buffer.h" #include "keyboard.h" #include "termhooks.h" #include "fontset.h" -#include "character.h" #include "font.h" #if 0 === modified file 'src/nsmenu.m' --- src/nsmenu.m 2012-02-10 18:58:48 +0000 +++ src/nsmenu.m 2012-06-16 12:24:15 +0000 @@ -28,6 +28,7 @@ #include "lisp.h" #include "window.h" +#include "character.h" #include "buffer.h" #include "keymap.h" #include "coding.h" === modified file 'src/print.c' --- src/print.c 2012-05-26 15:52:27 +0000 +++ src/print.c 2012-06-16 12:24:15 +0000 @@ -23,8 +23,8 @@ #include #include #include "lisp.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "charset.h" #include "keyboard.h" #include "frame.h" === modified file 'src/process.c' --- src/process.c 2012-04-22 04:48:13 +0000 +++ src/process.c 2012-06-16 12:24:15 +0000 @@ -93,8 +93,8 @@ #include "systty.h" #include "window.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "coding.h" #include "process.h" #include "frame.h" === modified file 'src/regex.c' --- src/regex.c 2012-06-10 08:39:19 +0000 +++ src/regex.c 2012-06-16 12:24:15 +0000 @@ -130,13 +130,13 @@ # include # include "lisp.h" +# include "character.h" # include "buffer.h" /* Make syntax table lookup grant data in gl_state. */ # define SYNTAX_ENTRY_VIA_PROPERTY # include "syntax.h" -# include "character.h" # include "category.h" # ifdef malloc === modified file 'src/region-cache.c' --- src/region-cache.c 2012-01-19 07:21:25 +0000 +++ src/region-cache.c 2012-06-16 12:24:15 +0000 @@ -24,6 +24,7 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" #include "region-cache.h" === modified file 'src/search.c' --- src/search.c 2012-05-31 06:06:42 +0000 +++ src/search.c 2012-06-16 12:24:15 +0000 @@ -24,8 +24,8 @@ #include "lisp.h" #include "syntax.h" #include "category.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "charset.h" #include "region-cache.h" #include "commands.h" === modified file 'src/syntax.c' --- src/syntax.c 2012-04-09 22:54:59 +0000 +++ src/syntax.c 2012-06-16 12:24:15 +0000 @@ -25,8 +25,8 @@ #include #include "lisp.h" #include "commands.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "keymap.h" #include "regex.h" === modified file 'src/term.c' --- src/term.c 2012-06-09 16:44:44 +0000 +++ src/term.c 2012-06-16 12:24:15 +0000 @@ -32,8 +32,8 @@ #include "termchar.h" #include "termopts.h" #include "tparam.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "charset.h" #include "coding.h" #include "composite.h" === modified file 'src/textprop.c' --- src/textprop.c 2012-05-25 18:19:24 +0000 +++ src/textprop.c 2012-06-16 12:24:15 +0000 @@ -20,6 +20,7 @@ #include #include "lisp.h" #include "intervals.h" +#include "character.h" #include "buffer.h" #include "window.h" === modified file 'src/undo.c' --- src/undo.c 2012-05-25 18:19:24 +0000 +++ src/undo.c 2012-06-16 12:24:15 +0000 @@ -20,6 +20,7 @@ #include #include #include "lisp.h" +#include "character.h" #include "buffer.h" #include "commands.h" #include "window.h" === modified file 'src/unexsol.c' --- src/unexsol.c 2011-03-17 18:41:30 +0000 +++ src/unexsol.c 2012-06-16 12:24:15 +0000 @@ -7,6 +7,7 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" #include "charset.h" #include "coding.h" === modified file 'src/w16select.c' --- src/w16select.c 2012-02-11 09:38:41 +0000 +++ src/w16select.c 2012-06-16 12:24:15 +0000 @@ -36,8 +36,8 @@ #include "dispextern.h" /* frame.h seems to want this */ #include "frame.h" /* Need this to get the X window of selected_frame */ #include "blockinput.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "coding.h" #include "composite.h" === modified file 'src/w32fns.c' --- src/w32fns.c 2012-06-13 13:40:48 +0000 +++ src/w32fns.c 2012-06-16 12:24:15 +0000 @@ -32,13 +32,13 @@ #include "w32term.h" #include "frame.h" #include "window.h" +#include "character.h" #include "buffer.h" #include "intervals.h" #include "dispextern.h" #include "keyboard.h" #include "blockinput.h" #include "epaths.h" -#include "character.h" #include "charset.h" #include "coding.h" #include "ccl.h" === modified file 'src/w32menu.c' --- src/w32menu.c 2012-06-13 13:40:48 +0000 +++ src/w32menu.c 2012-06-16 12:24:15 +0000 @@ -31,6 +31,7 @@ #include "termhooks.h" #include "window.h" #include "blockinput.h" +#include "character.h" #include "buffer.h" #include "charset.h" #include "coding.h" === modified file 'src/window.c' --- src/window.c 2012-06-16 07:18:44 +0000 +++ src/window.c 2012-06-16 12:24:15 +0000 @@ -23,6 +23,7 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" #include "keyboard.h" #include "keymap.h" === modified file 'src/xdisp.c' --- src/xdisp.c 2012-06-16 11:47:44 +0000 +++ src/xdisp.c 2012-06-16 12:24:15 +0000 @@ -281,8 +281,8 @@ #include "window.h" #include "termchar.h" #include "dispextern.h" +#include "character.h" #include "buffer.h" -#include "character.h" #include "charset.h" #include "indent.h" #include "commands.h" === modified file 'src/xfns.c' --- src/xfns.c 2012-06-01 20:49:03 +0000 +++ src/xfns.c 2012-06-16 12:24:15 +0000 @@ -32,13 +32,13 @@ #include "xterm.h" #include "frame.h" #include "window.h" +#include "character.h" #include "buffer.h" #include "intervals.h" #include "dispextern.h" #include "keyboard.h" #include "blockinput.h" #include -#include "character.h" #include "charset.h" #include "coding.h" #include "fontset.h" === modified file 'src/xmenu.c' --- src/xmenu.c 2012-02-10 18:58:48 +0000 +++ src/xmenu.c 2012-06-16 12:24:15 +0000 @@ -47,6 +47,7 @@ #include "termhooks.h" #include "window.h" #include "blockinput.h" +#include "character.h" #include "buffer.h" #include "charset.h" #include "coding.h" === modified file 'src/xml.c' --- src/xml.c 2012-04-09 22:54:59 +0000 +++ src/xml.c 2012-06-16 12:24:15 +0000 @@ -26,6 +26,7 @@ #include #include "lisp.h" +#include "character.h" #include "buffer.h" === modified file 'src/xselect.c' --- src/xselect.c 2012-05-25 18:19:24 +0000 +++ src/xselect.c 2012-06-16 12:24:15 +0000 @@ -35,11 +35,11 @@ #include "dispextern.h" /* frame.h seems to want this */ #include "frame.h" /* Need this to get the X window of selected_frame */ #include "blockinput.h" +#include "character.h" #include "buffer.h" #include "process.h" #include "termhooks.h" #include "keyboard.h" -#include "character.h" #include ------------------------------------------------------------ revno: 108626 fixes bug(s): http://debbugs.gnu.org/11720 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2012-06-16 14:47:44 +0300 message: Fix bug #11720 with cursor positioning in outline-mode and Org buffers. src/xdisp.c (set_cursor_from_row): Use the leftmost glyph as GLYPH_BEFORE, not the rightmost. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-16 10:18:21 +0000 +++ src/ChangeLog 2012-06-16 11:47:44 +0000 @@ -6,6 +6,8 @@ row. (handle_face_prop): Use chunk-relative overlay string index when indexing into it->string_overlays array. (Bug#11653) + (set_cursor_from_row): Use the leftmost glyph as GLYPH_BEFORE, not + the rightmost. (Bug#11720) 2012-06-16 Andreas Schwab === modified file 'src/xdisp.c' --- src/xdisp.c 2012-06-16 10:18:21 +0000 +++ src/xdisp.c 2012-06-16 11:47:44 +0000 @@ -13937,16 +13937,13 @@ break; } /* See if we've found a better approximation to - POS_BEFORE or to POS_AFTER. Note that we want the - first (leftmost) glyph of all those that are the - closest from below, and the last (rightmost) of all - those from above. */ + POS_BEFORE or to POS_AFTER. */ if (0 > dpos && dpos > pos_before - pt_old) { pos_before = glyph->charpos; glyph_before = glyph; } - else if (0 < dpos && dpos <= pos_after - pt_old) + else if (0 < dpos && dpos < pos_after - pt_old) { pos_after = glyph->charpos; glyph_after = glyph; @@ -14030,7 +14027,7 @@ pos_before = glyph->charpos; glyph_before = glyph; } - else if (0 < dpos && dpos <= pos_after - pt_old) + else if (0 < dpos && dpos < pos_after - pt_old) { pos_after = glyph->charpos; glyph_after = glyph; ------------------------------------------------------------ revno: 108625 fixes bug(s): http://debbugs.gnu.org/11653 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2012-06-16 13:18:21 +0300 message: Fix bug #11653 with a crash when more than 16 overlay strings are loaded. src/xdisp.c (handle_face_prop): Use chunk-relative overlay string index when indexing into it->string_overlays array. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-16 09:57:56 +0000 +++ src/ChangeLog 2012-06-16 10:18:21 +0000 @@ -3,7 +3,9 @@ * xdisp.c (set_cursor_from_row): Don't dereference glyphs_end. If all the glyphs of the glyph row came from strings, and we have no cursor positioning clues, put the cursor on the first glyph of the - row. (Bug#11653) + row. + (handle_face_prop): Use chunk-relative overlay string index when + indexing into it->string_overlays array. (Bug#11653) 2012-06-16 Andreas Schwab === modified file 'src/xdisp.c' --- src/xdisp.c 2012-06-16 09:57:56 +0000 +++ src/xdisp.c 2012-06-16 10:18:21 +0000 @@ -3691,7 +3691,8 @@ int i; Lisp_Object from_overlay = (it->current.overlay_string_index >= 0 - ? it->string_overlays[it->current.overlay_string_index] + ? it->string_overlays[it->current.overlay_string_index + % OVERLAY_STRING_CHUNK_SIZE] : Qnil); /* See if we got to this string directly or indirectly from @@ -3705,7 +3706,8 @@ { if (it->stack[i].current.overlay_string_index >= 0) from_overlay - = it->string_overlays[it->stack[i].current.overlay_string_index]; + = it->string_overlays[it->stack[i].current.overlay_string_index + % OVERLAY_STRING_CHUNK_SIZE]; else if (! NILP (it->stack[i].from_overlay)) from_overlay = it->stack[i].from_overlay; ------------------------------------------------------------ revno: 108624 fixes bug(s): http://debbugs.gnu.org/11653 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2012-06-16 12:57:56 +0300 message: Fix bug #11653 with cursor positioning in a row that has only strings. src/xdisp.c (set_cursor_from_row): Don't dereference glyphs_end. If all the glyphs of the glyph row came from strings, and we have no cursor positioning clues, put the cursor on the first glyph of the row. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-16 08:20:19 +0000 +++ src/ChangeLog 2012-06-16 09:57:56 +0000 @@ -1,3 +1,10 @@ +2012-06-16 Eli Zaretskii + + * xdisp.c (set_cursor_from_row): Don't dereference glyphs_end. If + all the glyphs of the glyph row came from strings, and we have no + cursor positioning clues, put the cursor on the first glyph of the + row. (Bug#11653) + 2012-06-16 Andreas Schwab * category.h (CHAR_HAS_CATEGORY): Define as inline. === modified file 'src/xdisp.c' --- src/xdisp.c 2012-06-08 17:50:17 +0000 +++ src/xdisp.c 2012-06-16 09:57:56 +0000 @@ -14260,6 +14260,7 @@ the cursor is not on this line. */ if (cursor == NULL && (row->reversed_p ? glyph <= end : glyph >= end) + && (row->reversed_p ? end > glyphs_end : end < glyphs_end) && STRINGP (end->object) && row->continued_p) return 0; @@ -14289,6 +14290,21 @@ compute_x: if (cursor != NULL) glyph = cursor; + else if (glyph == glyphs_end + && pos_before == pos_after + && STRINGP ((row->reversed_p + ? row->glyphs[TEXT_AREA] + row->used[TEXT_AREA] - 1 + : row->glyphs[TEXT_AREA])->object)) + { + /* If all the glyphs of this row came from strings, put the + cursor on the first glyph of the row. This avoids having the + cursor outside of the text area in this very rare and hard + use case. */ + glyph = + row->reversed_p + ? row->glyphs[TEXT_AREA] + row->used[TEXT_AREA] - 1 + : row->glyphs[TEXT_AREA]; + } if (x < 0) { struct glyph *g; ------------------------------------------------------------ revno: 108623 fixes bug(s): http://debbugs.gnu.org/10959 committer: Chong Yidong branch nick: trunk timestamp: Sat 2012-06-16 17:56:15 +0800 message: Fix for xterm reportBackground query. * lisp/term/xterm.el (terminal-init-xterm): Discard input before querying background mode. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-16 09:48:23 +0000 +++ lisp/ChangeLog 2012-06-16 09:56:15 +0000 @@ -1,3 +1,8 @@ +2012-06-16 Chong Yidong + + * term/xterm.el (terminal-init-xterm): Discard input before + querying background mode (Bug#10959). + 2012-06-16 Stefan Merten * textmodes/rst.el: Added and corrected some comments. === modified file 'lisp/term/xterm.el' --- lisp/term/xterm.el 2012-04-22 13:58:00 +0000 +++ lisp/term/xterm.el 2012-06-16 09:56:15 +0000 @@ -539,6 +539,7 @@ (and (memq 'reportBackground tocheck-capabilities) version (>= version 242))) + (discard-input) (send-string-to-terminal "\e]11;?\e\\") (when (and (equal (read-event nil nil 2) ?\e) (equal (read-event nil nil 2) ?\])) ------------------------------------------------------------ revno: 108622 committer: Stefan Merten branch nick: trunk timestamp: Sat 2012-06-16 11:48:23 +0200 message: (rst-cvs-header, rst-svn-rev, rst-svn-timestamp) (rst-official-version, rst-official-cvs-rev): Update version information. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-16 09:33:58 +0000 +++ lisp/ChangeLog 2012-06-16 09:48:23 +0000 @@ -3,6 +3,9 @@ * textmodes/rst.el: Added and corrected some comments. (rst-re-alist-def): Improve symbol syntax. (rst-mode-syntax-table): Correct syntax entries. + (rst-cvs-header, rst-svn-rev, rst-svn-timestamp) + (rst-official-version, rst-official-cvs-rev): Update version + information. 2012-06-15 Juanma Barranquero === modified file 'lisp/textmodes/rst.el' --- lisp/textmodes/rst.el 2012-06-16 09:33:58 +0000 +++ lisp/textmodes/rst.el 2012-06-16 09:48:23 +0000 @@ -171,7 +171,7 @@ ;; Use CVSHeader to really get information from CVS and not other version ;; control systems. (defconst rst-cvs-header - "$CVSHeader: sm/rst_el/rst.el,v 1.285 2012-06-11 20:38:23 stefan Exp $") + "$CVSHeader: sm/rst_el/rst.el,v 1.287 2012-06-16 09:41:47 stefan Exp $") (defconst rst-cvs-rev (rst-extract-version "\\$" "CVSHeader: \\S + " "[0-9]+\\(?:\\.[0-9]+\\)+" " .*" rst-cvs-header "0.0") @@ -185,22 +185,22 @@ ;; Use LastChanged... to really get information from SVN. (defconst rst-svn-rev (rst-extract-version "\\$" "LastChangedRevision: " "[0-9]+" " " - "$LastChangedRevision: 7399 $") + "$LastChangedRevision: 7444 $") "The SVN revision of this file. SVN revision is the upstream (docutils) revision.") (defconst rst-svn-timestamp (rst-extract-version "\\$" "LastChangedDate: " ".+?+" " " - "$LastChangedDate: 2012-04-29 17:01:05 +0200 (Sun, 29 Apr 2012) $") + "$LastChangedDate: 2012-06-16 11:41:40 +0200 (Sat, 16 Jun 2012) $") "The SVN time stamp of this file.") ;; Maintained by the release process. (defconst rst-official-version (rst-extract-version "%" "OfficialVersion: " "[0-9]+\\(?:\\.[0-9]+\\)+" " " - "%OfficialVersion: 1.2.1 %") + "%OfficialVersion: 1.3.0 %") "Official version of the package.") (defconst rst-official-cvs-rev (rst-extract-version "[%$]" "Revision: " "[0-9]+\\(?:\\.[0-9]+\\)+" " " - "%Revision: 1.256 %") + "%Revision: 1.287 %") "CVS revision of this file in the official version.") (defconst rst-version ------------------------------------------------------------ revno: 108621 committer: Stefan Merten branch nick: trunk timestamp: Sat 2012-06-16 11:33:58 +0200 message: Added and corrected some comments. (rst-re-alist-def): Improve symbol syntax. (rst-mode-syntax-table): Correct syntax entries. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-15 21:47:39 +0000 +++ lisp/ChangeLog 2012-06-16 09:33:58 +0000 @@ -1,3 +1,9 @@ +2012-06-16 Stefan Merten + + * textmodes/rst.el: Added and corrected some comments. + (rst-re-alist-def): Improve symbol syntax. + (rst-mode-syntax-table): Correct syntax entries. + 2012-06-15 Juanma Barranquero * makefile.w32-in (COMPILE_FIRST): Synch with makefile.in changes === modified file 'lisp/textmodes/rst.el' --- lisp/textmodes/rst.el 2012-06-07 09:20:41 +0000 +++ lisp/textmodes/rst.el 2012-06-16 09:33:58 +0000 @@ -103,6 +103,9 @@ ;;; Code: +;; FIXME: When 24.1 is common place remove use of `lexical-let' and put "-*- +;; lexical-binding: t -*-" in the first line. + ;; Only use of macros is allowed - may be replaced by `cl-lib' some time. (eval-when-compile (require 'cl)) @@ -150,10 +153,7 @@ (equal elem e))) seq))) -;; FIXME: Check whether complicated `defconst's can be embedded in -;; `eval-when-compile'. - -;; FIXME: Check whether `lambda's can be embedded in `function'. +;; FIXME: Embed complicated `defconst's in `eval-when-compile'. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Versions @@ -171,7 +171,7 @@ ;; Use CVSHeader to really get information from CVS and not other version ;; control systems. (defconst rst-cvs-header - "$CVSHeader: sm/rst_el/rst.el,v 1.282 2012-06-06 19:16:55 stefan Exp $") + "$CVSHeader: sm/rst_el/rst.el,v 1.285 2012-06-11 20:38:23 stefan Exp $") (defconst rst-cvs-rev (rst-extract-version "\\$" "CVSHeader: \\S + " "[0-9]+\\(?:\\.[0-9]+\\)+" " .*" rst-cvs-header "0.0") @@ -203,7 +203,6 @@ "%Revision: 1.256 %") "CVS revision of this file in the official version.") -;; FIXME: Version differences due to SVN checkin must not change this. (defconst rst-version (if (equal rst-official-cvs-rev rst-cvs-rev) rst-official-version @@ -412,7 +411,8 @@ ; tag. ;; Symbol (`sym') - (sym-tag (:shy "\\sw+" (:shy "\\s_\\sw+") "*")) + (sym-prt "[-+.:_]") ; Non-word part of a symbol. + (sym-tag (:shy "\\sw+" (:shy sym-prt "\\sw+") "*")) ;; URIs (`uri') (uri-tag (:alt ,@rst-uri-schemes)) @@ -599,6 +599,7 @@ ;; Same as mark-defun sgml-mark-current-element. [?\C-c ?\C-m]) ;; Move backward/forward between section titles. + ;; FIXME: Also bind similar to outline mode. (rst-define-key map [?\C-\M-a] 'rst-backward-section ;; Same as beginning-of-defun. [?\C-c ?\C-n]) @@ -696,23 +697,20 @@ ;; Syntax table. (defvar rst-mode-syntax-table (let ((st (copy-syntax-table text-mode-syntax-table))) - ;; FIXME: This must be rethought; at the very least ?. should not be a - ;; symbol for `dabbrev' to work properly. (modify-syntax-entry ?$ "." st) (modify-syntax-entry ?% "." st) (modify-syntax-entry ?& "." st) (modify-syntax-entry ?' "." st) (modify-syntax-entry ?* "." st) - (modify-syntax-entry ?+ "_" st) - (modify-syntax-entry ?. "_" st) + (modify-syntax-entry ?+ "." st) + (modify-syntax-entry ?- "." st) (modify-syntax-entry ?/ "." st) - (modify-syntax-entry ?: "_" st) (modify-syntax-entry ?< "." st) (modify-syntax-entry ?= "." st) (modify-syntax-entry ?> "." st) (modify-syntax-entry ?\\ "\\" st) + (modify-syntax-entry ?_ "." st) (modify-syntax-entry ?| "." st) - (modify-syntax-entry ?_ "_" st) (modify-syntax-entry ?\u00ab "." st) (modify-syntax-entry ?\u00bb "." st) (modify-syntax-entry ?\u2018 "." st) @@ -1816,7 +1814,7 @@ ;; Apply the new style. (apply 'rst-update-section (nth (car lm) rst-preferred-adornments)) - ;; Reset the market to avoid slowing down editing until it gets GC'ed. + ;; Reset the marker to avoid slowing down editing until it gets GC'ed. (set-marker (cdr lm) nil) ) ))) ------------------------------------------------------------ revno: 108620 committer: Andreas Schwab branch nick: emacs timestamp: Sat 2012-06-16 10:20:19 +0200 message: * category.h (CHAR_HAS_CATEGORY): Define as inline. (CATEGORY_MEMBER): Enforce 1/0 value. * category.c (_temp_category_set): Remove. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-16 07:18:44 +0000 +++ src/ChangeLog 2012-06-16 08:20:19 +0000 @@ -1,3 +1,9 @@ +2012-06-16 Andreas Schwab + + * category.h (CHAR_HAS_CATEGORY): Define as inline. + (CATEGORY_MEMBER): Enforce 1/0 value. + * category.c (_temp_category_set): Remove. + 2012-06-16 Eli Zaretskii * window.c (Fdelete_other_windows_internal) === modified file 'src/category.c' --- src/category.c 2012-02-10 18:58:48 +0000 +++ src/category.c 2012-06-16 08:20:19 +0000 @@ -50,9 +50,6 @@ static Lisp_Object Qcategory_table, Qcategoryp, Qcategorysetp, Qcategory_table_p; -/* Temporary internal variable used in macro CHAR_HAS_CATEGORY. */ -Lisp_Object _temp_category_set; - /* Make CATEGORY_SET includes (if VAL is t) or excludes (if VAL is nil) CATEGORY. */ #define SET_CATEGORY_SET(category_set, category, val) \ === modified file 'src/category.h' --- src/category.h 2011-09-21 17:41:20 +0000 +++ src/category.h 2012-06-16 08:20:19 +0000 @@ -1,6 +1,6 @@ /* Declarations having to do with Emacs category tables. Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, - 2005, 2006, 2007, 2008, 2009, 2010, 2011 + 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 National Institute of Advanced Industrial Science and Technology (AIST) Registration Number H14PRO021 Copyright (C) 2003 @@ -69,27 +69,27 @@ #define CHECK_CATEGORY_SET(x) \ CHECK_TYPE (CATEGORY_SET_P (x), Qcategorysetp, x) +/* Return the category set of character C in the current category table. */ +#define CATEGORY_SET(c) char_category_set (c) + /* Return 1 if CATEGORY_SET contains CATEGORY, else return 0. The faster version of `!NILP (Faref (category_set, category))'. */ #define CATEGORY_MEMBER(category, category_set) \ - (XCATEGORY_SET (category_set)->data[(category) / 8] \ - & (1 << ((category) % 8))) - -/* Temporary internal variable used in macro CHAR_HAS_CATEGORY. */ -extern Lisp_Object _temp_category_set; - -/* Return 1 if category set of CH contains CATEGORY, elt return 0. */ -#define CHAR_HAS_CATEGORY(ch, category) \ - (_temp_category_set = CATEGORY_SET (ch), \ - CATEGORY_MEMBER (category, _temp_category_set)) + ((XCATEGORY_SET (category_set)->data[(category) / 8] \ + >> ((category) % 8)) & 1) + +/* Return 1 if category set of CH contains CATEGORY, else return 0. */ +static inline int +CHAR_HAS_CATEGORY (int ch, int category) +{ + Lisp_Object category_set = CATEGORY_SET (ch); + return CATEGORY_MEMBER (category, category_set); +} /* The standard category table is stored where it will automatically be used in all new buffers. */ #define Vstandard_category_table BVAR (&buffer_defaults, category_table) -/* Return the category set of character C in the current category table. */ -#define CATEGORY_SET(c) char_category_set (c) - /* Return the doc string of CATEGORY in category table TABLE. */ #define CATEGORY_DOCSTRING(table, category) \ XVECTOR (Fchar_table_extra_slot (table, make_number (0)))->contents[(category) - ' '] ------------------------------------------------------------ revno: 108619 fixes bug(s): http://debbugs.gnu.org/11677 committer: Eli Zaretskii branch nick: trunk timestamp: Sat 2012-06-16 10:18:44 +0300 message: Fix bug #11677 with segfault when deleting windows under -batch. src/window.c (Fdelete_other_windows_internal) (Fdelete_window_internal): Don't access frame's mouse highlight info of the initial frame. diff: === modified file 'src/ChangeLog' --- src/ChangeLog 2012-06-14 04:02:35 +0000 +++ src/ChangeLog 2012-06-16 07:18:44 +0000 @@ -1,3 +1,9 @@ +2012-06-16 Eli Zaretskii + + * window.c (Fdelete_other_windows_internal) + (Fdelete_window_internal): Don't access frame's mouse highlight + info of the initial frame. (Bug#11677) + 2012-06-14 Paul Eggert * .gdbinit (xgetint): Fix recently-introduced paren typo. === modified file 'src/window.c' --- src/window.c 2012-06-01 03:41:03 +0000 +++ src/window.c 2012-06-16 07:18:44 +0000 @@ -2566,7 +2566,6 @@ Lisp_Object sibling, pwindow, swindow IF_LINT (= Qnil), delta; ptrdiff_t startpos IF_LINT (= 0); int top IF_LINT (= 0), new_top, resize_failed; - Mouse_HLInfo *hlinfo; w = decode_any_window (window); XSETWINDOW (window, w); @@ -2647,19 +2646,23 @@ } BLOCK_INPUT; - hlinfo = MOUSE_HL_INFO (f); - /* We are going to free the glyph matrices of WINDOW, and with that - we might lose any information about glyph rows that have some of - their glyphs highlighted in mouse face. (These rows are marked - with a non-zero mouse_face_p flag.) If WINDOW indeed has some - glyphs highlighted in mouse face, signal to frame's up-to-date - hook that mouse highlight was overwritten, so that it will - arrange for redisplaying the highlight. */ - if (EQ (hlinfo->mouse_face_window, window)) + if (!FRAME_INITIAL_P (f)) { - hlinfo->mouse_face_beg_row = hlinfo->mouse_face_beg_col = -1; - hlinfo->mouse_face_end_row = hlinfo->mouse_face_end_col = -1; - hlinfo->mouse_face_window = Qnil; + Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f); + + /* We are going to free the glyph matrices of WINDOW, and with + that we might lose any information about glyph rows that have + some of their glyphs highlighted in mouse face. (These rows + are marked with a non-zero mouse_face_p flag.) If WINDOW + indeed has some glyphs highlighted in mouse face, signal to + frame's up-to-date hook that mouse highlight was overwritten, + so that it will arrange for redisplaying the highlight. */ + if (EQ (hlinfo->mouse_face_window, window)) + { + hlinfo->mouse_face_beg_row = hlinfo->mouse_face_beg_col = -1; + hlinfo->mouse_face_end_row = hlinfo->mouse_face_end_col = -1; + hlinfo->mouse_face_window = Qnil; + } } free_window_matrices (r); @@ -3903,7 +3906,6 @@ && EQ (r->new_total, (horflag ? r->total_cols : r->total_lines))) /* We can delete WINDOW now. */ { - Mouse_HLInfo *hlinfo; /* Block input. */ BLOCK_INPUT; @@ -3911,9 +3913,13 @@ /* If this window is referred to by the dpyinfo's mouse highlight, invalidate that slot to be safe (Bug#9904). */ - hlinfo = MOUSE_HL_INFO (XFRAME (w->frame)); - if (EQ (hlinfo->mouse_face_window, window)) - hlinfo->mouse_face_window = Qnil; + if (!FRAME_INITIAL_P (f)) + { + Mouse_HLInfo *hlinfo = MOUSE_HL_INFO (f); + + if (EQ (hlinfo->mouse_face_window, window)) + hlinfo->mouse_face_window = Qnil; + } windows_or_buffers_changed++; Vwindow_list = Qnil; ------------------------------------------------------------ revno: 108618 committer: Juanma Barranquero branch nick: trunk timestamp: Fri 2012-06-15 23:47:39 +0200 message: lisp/makefile.w32-in (COMPILE_FIRST): Synch with changes in revno:88864. diff: === modified file 'lisp/ChangeLog' --- lisp/ChangeLog 2012-06-15 03:18:14 +0000 +++ lisp/ChangeLog 2012-06-15 21:47:39 +0000 @@ -1,3 +1,8 @@ +2012-06-15 Juanma Barranquero + + * makefile.w32-in (COMPILE_FIRST): Synch with makefile.in changes + in revno:88864. + 2012-06-15 Stefan Monnier * emacs-lisp/cl-lib.el (cl--defsubst-expand): Autoload inliner === modified file 'lisp/makefile.w32-in' --- lisp/makefile.w32-in 2012-06-14 23:53:41 +0000 +++ lisp/makefile.w32-in 2012-06-15 21:47:39 +0000 @@ -76,18 +76,14 @@ BYTE_COMPILE_FLAGS = $(BIG_STACK_OPTS) $(BYTE_COMPILE_EXTRA_FLAGS) # Files to compile before others during a bootstrap. This is done to -# speed up the bootstrap process. The CC files are compiled first -# because CC mode tweaks the compilation process, and requiring -# cc-mode when it is not compiled doesn't work during the -# bootstrapping. +# speed up the bootstrap process. COMPILE_FIRST = \ + $(lisp)/emacs-lisp/bytecomp.el \ $(lisp)/emacs-lisp/byte-opt.el \ - $(lisp)/emacs-lisp/bytecomp.el \ $(lisp)/emacs-lisp/macroexp.el \ $(lisp)/emacs-lisp/cconv.el \ - $(lisp)/progmodes/cc-mode.el \ - $(lisp)/progmodes/cc-vars.el + $(lisp)/emacs-lisp/autoload.el # The actual Emacs command run in the targets below. # The quotes around $(EMACS) are here because the user could type ------------------------------------------------------------ Use --include-merges or -n0 to see merged revisions.