correctly, using the "virtual semicolon" mechanism.
cc-defs.el: Update "virtual semicolon" comments.
cc-engine.el (c-crosses-statement-barrier-p): Recoded to scan one line at
at time rather than having \n and \r explicitly in c-stmt-delim-chars
(for some modes, e.g. AWK).
(c-forward-label): Amend for virtual semicolons.
(c-at-macro-vsemi-p, c-macro-vsemi-status-unknown-p): New functions
cc-fonts.el (c-font-lock-declarations): Take account of the new C macros.
cc-langs.el (c-at-vsemi-p-fn, c-vsemi-status-unknown-p-fn): move to
earlier in the file.
(c-opt-cpp-symbol, c-line-comment-start-regexp): New language variables.
(c-opt-cpp-macro-define): Make into a full language variable.
(c-stmt-delim-chars, c-stmt-delim-chars-with-comma): Special value for
AWK Mode (including \n, \r) removed, no longer needed.
cc-mode.el (c-mode, c++-mode, objc-mode): Invoke
c-make-macro-with-semi-re.
cc-vars.el (c-macro-with-semi-re, c-macro-names-with-semicolon): New
variables.
(c-make-macro-with-semi-re): New function
cc-mode.texi (Indentation Commands): Mention "macros with semicolons".
(Other Special Indentations): Add an xref to "Macros with ;".
(Customizing Macros): Add stuff about syntax in macros. Add an xref to
"Macros with ;".
(Macros with ;): New page.
* doc/emacs/display.texi (Scrolling): Document scroll-up-line and
scroll-down-line. Document scroll-command property.
(Recentering): New node, split off from Scrolling.
Also, minor copyedits to standardize on the phrase "key binding"
rather than "keybinding" in the manual.
It hasn't worked in a VC sense since 2008-05-02T07:12:59Z!esr@snark.thyrsus.com, though this was
not documented at the time (grr).
* lisp/vc/vc-hooks.el (vc-toggle-read-only): Make it an obsolete alias
for toggle-read-only. Note that this hasn't called vc-next-action
since 2008-05-02, though it wasn't documented at the time.
* lisp/files.el (toggle-read-only): Remove obsolete comment about
version control.
* doc/emacs/buffers.texi (Misc Buffer): Don't mention vc-toggle-read-only.
* lisp/cedet/ede.el (ede-maybe-checkout): Function deleted;
vc-toggle-read-only does not do version control now.
* lisp/cedet/ede/project-am.el (project-remove-file, project-add-file)
(project-new-target): Don't call ede-maybe-checkout.
* lisp/cedet/ede/util.el (ede-make-buffer-writable): Don't use
vc-toggle-read-only.
* lisp/vc/ediff-init.el (ediff-toggle-read-only-function): Use
toggle-read-only.
Plus miscellaneous minor speling fixes in other manual files.
* doc/emacs/files.texi (File Names, Visiting, Interlocking): Copyedits.
(Backup Copying): backup-by-copying-when-mismatch is now t.
(Customize Save): Fix description of require-final-newline.
(Reverting): Note that revert-buffer can't be undone. Mention VC.
(Auto Save Control): Clarify.
(File Archives): Add 7z.
(Remote Files): ange-ftp-make-backup-files defaults to nil.
* doc/emacs/arevert-xtra.texi (Autorevert): Copyedits.
* doc/emacs/custom.texi (Hooks, Init Examples):
* doc/emacs/display.texi (Font Lock):
* doc/emacs/fixit.texi (Spelling):
* doc/emacs/rmail.texi (Rmail Display): Minor mode function with no arg now
enables it.
* doc/emacs/fixit.texi (Spelling): Fix description of inline completion.
* doc/emacs/display.texi (Fringes): Move overflow-newline-into-fringe here,
from Line Truncation node.
(Standard Faces): Note that only the background of the cursor face
has an effect.
(Cursor Display): Fix descriptions of cursor face
and bar cursor blinking.
(Text Display): Document nobreak-char-display more clearly.
(Line Truncation): Add xref to Split Window node.
(Display Custom): Don't bother documenting baud-rate or
no-redraw-on-reenter.
* doc/emacs/search.texi (Slow Isearch): Node removed.
* doc/emacs/display.texi (Faces): Simplify discussion. Move documentation
of list-faces-display here, from Standard Faces node. Note
special role of `default' background.
(Standard Faces): Note special role of `default' background. Note
that region face may be taken fom GTK. Add xref to Text Display.
(Text Scale): Rename from "Temporary Face Changes". Callers
changed. Don't bother documenting variable-pitch-mode.
(Font Lock): Copyedits. Remove font-lock-maximum-size.
(Useless Whitespace): Simplify description of
delete-trailing-whitespace. Note active region case.
(Text Display): Fix description of escape-glyph face assignment.
Remove unibye mode discussion. Update some parts for Unicode.
Move glyphless chars documentation to Lisp manual.
* doc/emacs/frames.texi (Tooltips): Document x-gtk-use-system-tooltips.
* doc/lispref/display.texi (Glyphless Chars): New node.
* doc/emacs/killing.texi (Deletion): Document negative prefix arg to M-SPC.
* doc/emacs/regs.texi (Text Registers): C-x r i does not activate the mark.
(Bookmarks): Document new default bookmark location.
* doc/misc/ert.texi (Introduction, How to Run Tests)
(Running Tests Interactively, Expected Failures)
(Tests and Their Environment, Useful Techniques)
(Interactive Debugging, Fixtures and Test Suites):
Minor rephrasings.
(Running Tests Interactively, The @code{should} Macro): Add xrefs.
(Running Tests in Batch Mode): Simplify loading instructions.
(Test Selectors): Clarify some selectors.
(Expected Failures, Useful Techniques):
Make examples fit in 80 columns.
Remove unused "LocalWords".
* doc/emacs/killing.texi (Deletion): Add xref to Using Region.
(Yanking): Move yank-excluded-properties to Lisp manual. Move C-y
description here. Recommend C-u C-SPC for jumping to mark.
(Kill Ring): Move kill ring variable documentation here.
(Primary Selection): Copyedits.
(Rectangles): Document new command rectangle-number-lines.
(CUA Bindings): Note that this disables the mark-even-if-inactive
behavior for C-x and C-c.
* doc/emacs/mark.texi (Mark): Mention "active region" terminology.
(Using Region): Document delete-active-region.
* doc/lispref/text.texi (Yanking): Document yank-excluded-properties.
* doc/lispref/package.texi (Packaging Basics): The commentary should say how
to begin using the package.
* mark.texi (Mark): Clarify description of disabled Transient Mark
mode.
(Setting Mark): Document prefix arg for C-x C-x. Document primary
selection changes. Mention that commands like C-y set the mark.
(Marking Objects): Add xref to Words node. Note that mark-word
and mark-sexp also have the "extend region" behavior.
(Using Region): Mention M-$ in the table. Document
mark-even-if-inactive here instead of in Mark Ring.
(Mark Ring): Move mark-even-if-inactive to Using Region. Take
note of the "Mark Set" behavior.
(Disabled Transient Mark): Rename from "Persistent Mark"
(Bug#9688). Callers changed.
* programs.texi (Expressions):
* text.texi (Words): Defer to Marking Objects for mark-word doc.
Fixes: debbugs:9689
* buffers.texi (The Buffer List): Describe how bury-buffer deals
with the selected window.
* windows.texi (Buffers and Windows): Reformulate text on how
replace-buffer-in-windows deals with a window.
(Quitting Windows): Describe how quit-window deals with a
standalone frame. Describe new option frame-auto-hide-function.
See discussion at http://lists.gnu.org/archive/html/emacs-devel/2011-10/msg00193.html
* lisp/simple.el (count-words-region): Always count in the region.
Report the number of lines and characters too.
(count-words): New command, which counts in the buffer if the
region is inactive, as count-words-region used to.
(count-words--message): New function. Handle plurals.
(count-lines-region): Make it an alias for count-words-region.
* lisp/bindings.el (esc-map): Replace count-lines-region with
count-words-region.
* doc/emacs/basic.texi (Position Info): Omit page commands. Document
count-words-region and count-words.
* doc/emacs/text.texi (Pages): Move what-page documentation here.
* doc/emacs/mini.texi (Minibuffer File): Minor copyedits. Use xref to
Remote Files node instead of linking directly to the Tramp manual.
(Minibuffer Edit): Add xref to Blank Lines.
(Completion): Add xref to Symbol Completion. Remove redundant
example, which is repeated in the next node.
(Completion Commands): Minor clarifications.
(Completion Styles): New node, split from Completion Commands.
Document substring and initials styles.
(Strict Completion): Remove information duplicated in other nodes.
(Completion Options): Consolidate case difference discussion here.
* doc/emacs/files.texi (File Names): Add index entries.
* doc/emacs/help.texi (Help Mode): Fix kindex entries.
* doc/emacs/basic.texi (Inserting Text): Add xref to Completion. Add
ucs-insert example, and document prefix argument.
(Moving Point): Fix introduction; C-f/C-b are no longer equivalent
to left/right. Tweak left-char and right-char descriptions.
M-left and M-right are now bound to left-word/right-word.
(Erasing): Document delete-forward-char.
* doc/emacs/commands.texi (User Input): Define "input event" more clearly.
(Keys): Add xref to Echo Area.
(Commands): Clarify relation between commands and functions.
* doc/emacs/entering.texi (Entering Emacs): Define "startup screen".
Document window-splitting behavior with command-line inputs.
(Exiting): Remove obsolete paragraph about shells without suspend
functionality.
* doc/emacs/frames.texi (Non-Window Terminals): Index just "text-only
terminal", which is used throughout the manual now.
* doc/emacs/screen.texi (Screen, Menu Bar): Copyedits.
(Point): Remove duplicate paragraph on cursors, also in Screen.
(Mode Line): Trailing dashes no longer shown on X displays.
gnus.texi (Gnus Utility Functions): Add more references and explanations (bug#9683).
ecomplete.el (ecomplete-display-matches): Use a local keymap to handle bindings.
gnus-win.el (gnus-configure-windows): Protect against reading ephemeral groups outside of Gnus.
* doc/emacs/misc.texi (emacsclient Options): Document how emacsclient
runs the Emacs daemon.
* doc/man/emacsclient.1: Document how -a "" starts the daemon.
Fixes: debbugs:9674
This clarifies and fixes some licensing issues raised by Glenn Morris
<http://lists.gnu.org/archive/html/bug-gnulib/2011-09/msg00397.html>.
It also merges the latest version of texinfo.tex and has some
MSVC-related changes that don't affect Emacs.
* Makefile.in (GNULIB_TOOL_FLAGS): Avoid msvc-inval, msvc-nothrow,
pathmax, and raise, since these are needed only to address
MSVC-related issues that Emacs doesn't have.
* doc/misc/texinfo.tex, lib/dup2.c, lib/gnulib.mk, lib/signal.in.h:
* lib/sigprocmask.c, lib/stat.c, lib/stdio.in.h, lib/sys_stat.in.h:
* lib/unistd.in.h, m4/dup2.m4, m4/getloadavg.m4, m4/gl-comp.m4:
* m4/include_next.m4, m4/signal_h.m4, m4/signalblocking.m4:
* m4/stdint.m4, m4/stdio_h.m4, m4/sys_stat_h.m4, m4/time_h.m4:
* m4/unistd_h.m4: Merge from gnulib.
* windows.texi (Windows and Frames, Display Action Functions)
(Switching Buffers): Fix some typos.
(Buffers and Windows): Remove reference to window-auto-delete.
Reword description of replace-buffer-in-windows.
(Window History): Fix some typos and refer to frame local buffer
list.
* doc/lispref/windows.texi (Window History): New node. Move text here
from Buffers and Windows.
(Switching Buffers): Rename from Displaying Buffers, since we
don't document display-buffer here; callers changed. Document
FORCE-SAME-WINDOW arg to switch-to-buffer and
switch-to-buffer-other-frame. Delete duplicate
replace-buffer-in-windows doc.
(Choosing Window): Document display actions.
src/dispnew.c (syms_of_display) <redisplay-dont-pause>: Default
value is now t. Doc fix.
doc/lispref/display.texi (Forcing Redisplay): Update the description of
redisplay-dont-pause due to change in the default value.
etc/NEWS: Mention the change of the default value.
* frames.texi (Frames and Windows): Move section and rename to
Windows and Frames in windows.texi.
* windows.texi (Windows): Restructure.
(Basic Windows): Rewrite. Explain live and internal windows and
normalization functions.
(Windows and Frames): Move section here from frames.texi.
Describe subwindows, window combinations, window tree, and
corresponding functions including window-list here.
(Window Sizes): Rename section from Size of Window and move it
up in chapter. Describe total and body sizes and the
corresponding functions. Explain new semantics of
window-min-height/-width.
(Resizing Windows): Move section up in chapter. Describe new
resize functions.
(Splitting Windows): Describe new behavior of split-window,
split-window-above-each-other and split-window-side-by-side.
Provide examples. Describe window-nest and window-splits
options.
(Deleting Windows): Minor rewrite.
(Selecting Windows): Minor rewrite. Describe
frame-selected-window and set-frame-selected-window here.
(Cyclic Window Ordering): Minor rewrite. Describe
window-list-1.
(Buffers and Windows): Rewrite. Explain a window's previous and
next buffers and the corresponding functions.
* elisp.texi (Top): Update node listings for frames and windows
sections.
gnus.texi (Archived Messages): Note the default (bug#9552).
message.el (message-indent-citation): Really make sure there's a newline at the end.
nnimap.el (nnimap-parse-flags): Make regexp less prone to overflows. Fix suggested by John Wiegley.
pop3.el (pop3-open-server): Fix +OK end-of-command regexp.
gnus-art.el (gnus-treat-hide-citation): Add doc.
message.el (message-default-send-rename-function): Break out into its own function.
ecomplete.el (ecomplete-display-matches): Revert patch since it doesn't work under XEmacs.
nnimap.el (nnimap-map-port): New function to connect to 993 instead of "imaps" to word around Windows problems.
(nnimap-open-connection-1): Use it.
message.el (message-indent-citation): Revert last change which made `F' not work.
release 8.3.
(Preface): Updated support information.
(From Bill Wohler): Reset text to original version. As a historical
quote, the tense should be correct in the time that it was written.
gnus.texi: Remove mentions of `recent', which are now obsolete.
(Interactive): Document `quiet'.
nnimap.el: Redo the charset handling. Let Gnus encode the names, as it does with all other backends, but decode the names immediately after getting them.
gnus-group.el (gnus-group-name-charset): Always return `utf-7' when decoding nnimap groups.
gnus.el (gnus-variable-list): Don't save `gnus-format-specs' in the newsrc file. It doesn't seem like an important optimisation any more.
nnimap.el (nnimap-transform-headers): Fix regexp to be less prone to overflows.
gnus.el (gnus-article-mark-lists): Remove `recent'.
(gnus-interactive-exit): Extend to `quiet'.
gnus-sum.el (gnus-offer-save-summaries): Use it.
gnus-art.el (gnus-treat-hide-citation-maybe): Add more doc to the string.
plstore.el (plstore--get-buffer): Silence compiler warnings by renaming function arguments from `this'.
gnus-sum.el (gnus-newsgroup-recent): Removed.
gnus-spec.el (gnus-lrm-string-p): `bidi-string-mark-left-to-right' has been renamed.
(gnus-lrm-string-p): Include RLM and PDF, too.
gnus-int.el (gnus-open-server): Make the "denied" message clearer (bug#9225).
etc/NEWS: Document the new command and the alias for mail-insert-file.
lisp/mail/sendmail.el (mml-to-mime, mml-attach-file)
(mm-default-file-encoding): Remove autoload forms, they are
replaced with autoload cookies in mml.el and mm-encode.el.
(mail-add-attachment): New command.
(mail-mode-map): Add a menu-bar item for mail-add-attachment.
(mail-mode): Mention mail-insert-file and mail-add-attachment in
the doc string.
(mml-to-mime, mml-attach-file, mm-default-file-encoding): Declare.
lisp/gnus/mm-encode.el (mm-default-file-encoding): Add autoload cookie.
lisp/gnus/mml.el (mml-to-mime, mml-attach-file): Add autoload cookies.
doc/emacs/sending.texi (Mail Misc): Document mail-add-attachment.
* doc/lispref/display.texi (Basic Faces): New node. Document new faces.
* doc/lispref/modes.texi (Major Mode Conventions): Move some text there.
(Mode Help): Remove major-mode var, duplicated in Major Modes.
* doc/emacs/modes.texi (Choosing Modes): auto-mode-case-fold is now t.
* doc/lispref/modes.texi (Basic Major Modes): New node. Callers updated.
(Major Modes): Document fundamental-mode and major-mode.
(Major Mode Basics): Node deleted; text moved to Major Modes.
(Derived Modes): Document derived-mode-p.
* doc/emacs/misc.texi (emacsclient Options): Document server-port.
* doc/lispref/display.texi (Progress): Document spinner functionality.
* doc/lispref/frames.texi (Layout Parameters): The defaults for the
menu-bar-lines and tool-bar-lines parameters depend on the mode.
* doc/lispref/objects.texi (Symbol Type): Document ## print representation.
* doc/lispref/os.texi (Killing Emacs): Note that kill-emacs can be called by
operating system signals. Refer to save-buffers-kill-terminal
instead of save-buffers-kill-emacs.
* doc/emacs/package.texi: New file, documenting the package manager.
* doc/emacs/emacs.texi: Include it.
* doc/emacs/help.texi (Help Summary): Add describe-package.
* doc/emacs/display.texi (Narrowing): Move into display chapter.
* doc/emacs/picture-xtra.texi (Picture Mode): Group with Editing Binary
Files section. Convert from chapter into section.
* doc/emacs/text.texi (Two-Column): Move into Text chapter.
src/xdisp.c (compute_display_string_pos): Return 2 in DISP_PROP when
the display spec is of the form `(space ...)'.
(handle_display_spec): Return the value returned by
handle_single_display_spec, not just 1 or zero.
(handle_single_display_spec): If the display spec is of the form
`(space ...)', and specifies display in the text area, return 2
rather than 1.
src/dispextern.h (struct bidi_it): Rename the disp_prop_p member
into disp_prop; all users changed.
src/bidi.c (bidi_fetch_char): If compute_display_string_pos returns
DISP_PROP = 2, substitute the u+2029 PARAGRAPH SEPARATOR character
for the text covered by the display property.
lisp/buff-menu.el (Buffer-menu-buffer+size): Remove calls to
bidi-string-mark-left-to-right; they are unnecessary now.
doc/lispref/display.texi (Specified Space): Mention that `space' specs
influence bidi reordering.
(Bidirectional Display): Explain how to use `(space . PROPS)' for
separating fields with bidirectional content.
src/xdisp.c (Fcurrent_bidi_paragraph_direction): For unibyte
buffers, return left-to-right.
doc/lispref/display.texi (Bidirectional Display): Document return value in
buffers that are not bidi-reordered for display, and in unibyte
buffers.
src/bidi.c (bidi_get_type): Abort if we get zero as the bidi type of
a character.
admin/unidata/unidata-gen.el (unidata-prop-alist): Update the default
values of bidi-class according to DerivedBidiClass.txt from the
latest UCD.
lisp/international/uni-bidi.el: Regenerated.
doc/lispref/nonascii.texi (Character Properties): Document the values for
unassigned codepoints.
doc/lispref/nonascii.texi (Character Properties): Document use of
`bidi-class' and `mirroring' properties as part of reordering.
Provide cross-references to "Bidirectional Display".
doc/lispref/display.texi (Bidirectional Display): Document the pitfalls of
concatenating strings with bidirectional content, with possible
solutions. Document string-mark-left-to-right. Mention paragraph
direction in modes that inherit from prog-mode. Document use of
`bidi-class' and `mirroring' properties as part of reordering.
etc/NEWS: Mark string-mark-left-to-right as documented.
doc/lispref/searching.texi (Regexp Backslash): Document how to display
existing categories. Mention the possibility of adding
categories, and add an xref to where this is described. Add an
index entry.
doc/lispref/syntax.texi (Categories): Add an example of defining a new
category and category table.
* doc/emacs/dired.texi (Operating on Files): Rewrite according to the fact
that `dired-do-chmod' doesn't use the `chmod' program anymore.
* lisp/faces.el (list-faces-display): Remove extra angle bracket
from `help-mode-map'.
* lisp/info.el (Info-history-toc-nodes): Doc fix.
* lisp/longlines.el (longlines-mode): Doc fix.
* src/editfns.c (Fformat_time_string): Doc fix, add tag `usage:'
to show the arg `TIME' instead of `TIMEVAL'.
src/buffer.c (init_buffer_once, syms_of_buffer): Set
bidi-display-reordering to t by default.
doc/emacs/mule.texi (Bidirectional Editing): Document the fact that
bidi-display-reordering is t by default.
lispref/display.texi (Bidirectional Display): Document the fact that
bidi-display-reordering is t by default.
Fix bugs #7616, #8133, #8867.
src/xdisp.c (compute_display_string_pos)
(compute_display_string_end): Accept additional argument STRING.
(init_iterator, reseat_1): Initialize bidi_it->string.s to NULL.
(reseat_to_string): Initialize bidi_it->string.s and
bidi_it->string.schars.
(Fcurrent_bidi_paragraph_direction): Initialize itb.string.s to
NULL (avoids a crash in bidi_paragraph_init). Initialize
itb.string.lstring.
(init_iterator): Call bidi_init_it only of a valid
buffer position was specified. Initialize paragraph_embedding to
L2R.
(reseat_to_string): Initialize the bidi iterator.
(display_string): If we need to ignore text properties of
LISP_STRING, set IT->stop_charpos to IT->end_charpos. (The
original value of -1 will not work with bidi.)
(compute_display_string_pos): First arg is now struct
`text_pos *'; all callers changed. Support display properties on
Lisp strings.
(compute_display_string_end): Support display properties on Lisp
strings.
(init_iterator, reseat_1, reseat_to_string): Initialize the
string.bufpos member to 0 (zero, for compatibility with IT_CHARPOS
when iterating on a string not from display properties).
(compute_display_string_pos, compute_display_string_end): Fix
calculation of the object to scan. Fixes an error when using
arrow keys.
(next_element_from_buffer): Don't abort when IT_CHARPOS is before
base_level_stop; instead, set base_level_stop to BEGV. Fixes
crashes in vertical-motion.
(next_element_from_buffer): Improve commentary for when
the iterator is before prev_stop.
(init_iterator): Initialize bidi_p from the default value of
bidi-display-reordering, not from buffer-local value. Use the
buffer-local value only if initializing for buffer iteration.
(handle_invisible_prop): Support invisible properties on strings
that are being bidi-reordered.
(set_iterator_to_next): Support bidi reordering of C strings and
Lisp strings.
(next_element_from_string): Support bidi reordering of Lisp
strings.
(handle_stop_backwards): Support Lisp strings as well.
(display_string): Support display of R2L glyph rows. Use
IT_STRING_CHARPOS when displaying from a Lisp string.
(init_iterator): Don't initialize it->bidi_p for strings
here.
(reseat_to_string): Initialize it->bidi_p for strings here.
(next_element_from_string, next_element_from_c_string)
(next_element_from_buffer): Add xassert's for correspondence
between IT's object being iterated and it->bidi_it.string
structure.
(face_before_or_after_it_pos): Support bidi iteration.
(next_element_from_c_string): Handle the case of the first string
character that is not the first one in the visual order.
(get_visually_first_element): New function, refactored from common
parts of next_element_from_buffer, next_element_from_string, and
next_element_from_c_string.
(tool_bar_lines_needed, redisplay_tool_bar)
(display_menu_bar): Force left-to-right direction. Add a FIXME
comment for making that be controlled by a user option.
(push_it, pop_it): Save and restore the state of the
bidi iterator. Save and restore the bidi_p flag.
(pop_it): Iterate out of display property for string iteration as
well.
(iterate_out_of_display_property): Support iteration over strings.
(handle_single_display_spec): Set up it->bidi_it for iteration
over a display string, and call bidi_init_it.
(handle_single_display_spec, next_overlay_string)
(get_overlay_strings_1, push_display_prop): Set up the bidi
iterator for displaying display or overlay strings.
(forward_to_next_line_start): Don't use the shortcut if
bidi-iterating.
(back_to_previous_visible_line_start): If handle_display_prop
pushed the iterator stack, restore the internal state of the bidi
iterator by calling bidi_pop_it same number of times.
(reseat_at_next_visible_line_start): If ON_NEWLINE_P is non-zero,
and we are bidi-iterating, don't decrement the iterator position;
instead, set the first_elt flag in the bidi iterator, to produce
the same effect.
(reseat_1): Remove redundant setting of string_from_display_prop_p.
(push_display_prop): xassert that we are iterating a buffer.
(push_it, pop_it): Save and restore paragraph_embedding member.
(handle_single_display_spec, next_overlay_string)
(get_overlay_strings_1, reseat_1, reseat_to_string)
(push_display_prop): Set up the `unibyte' member of bidi_it.string
correctly. Don't assume unibyte strings are not bidi-reordered.
(compute_display_string_pos)
(compute_display_string_end): Fix handling the case of C string.
(push_it, pop_it): Save and restore from_disp_prop_p.
(handle_single_display_spec, push_display_prop): Set the
from_disp_prop_p flag.
(get_overlay_strings_1): Reset the from_disp_prop_p flag.
(pop_it): Call iterate_out_of_display_property only if we are
popping after iteration over a string that came from a display
property. Fix a typo in popping stretch info. Add an assertion
for verifying that the iterator position is in sync with the bidi
iterator.
(handle_single_display_spec, get_overlay_strings_1)
(push_display_prop): Fix initialization of paragraph direction for
string when that of the parent object is not yet determined.
(reseat_1): Call bidi_init_it to resync the bidi
iterator with IT's position. (Bug#7616)
(find_row_edges): If ROW->start.pos gives position
smaller than min_pos, use it as ROW->minpos. (Bug#7616)
(handle_stop, back_to_previous_visible_line_start, reseat_1):
Reset the from_disp_prop_p flag.
(SAVE_IT, RESTORE_IT): New macros.
(pos_visible_p, face_before_or_after_it_pos)
(back_to_previous_visible_line_start)
(move_it_in_display_line_to, move_it_in_display_line)
(move_it_to, move_it_vertically_backward, move_it_by_lines)
(try_scrolling, redisplay_window, display_line): Use them when
saving a temporary copy of the iterator and restoring it back.
(back_to_previous_visible_line_start, reseat_1)
(init_iterator): Empty the bidi cache "stack".
(move_it_in_display_line_to): If iterator ended up at
EOL, but we never saw any buffer positions smaller than
to_charpos, return MOVE_POS_MATCH_OR_ZV. Fixes vertical cursor
motion in bidi-reordered lines.
(move_it_in_display_line_to): Record prev_method and prev_pos
immediately before the call to set_iterator_to_next. Fixes cursor
motion in bidi-reordered lines with stretch glyphs and strings
displayed in margins. (Bug#8133) (Bug#8867)
Return MOVE_POS_MATCH_OR_ZV only if iterator position is past
TO_CHARPOS.
(pos_visible_p): Support positions in bidi-reordered lines. Save
and restore bidi cache.
src/bidi.c (bidi_level_of_next_char): clen should be EMACS_NT, not int.
(bidi_paragraph_info): Delete unused struct.
(bidi_cache_idx, bidi_cache_last_idx): Declare EMACS_INT.
(bidi_cache_start): New variable.
(bidi_cache_reset): Reset bidi_cache_idx to bidi_cache_start, not
to zero.
(bidi_cache_fetch_state, bidi_cache_search)
(bidi_cache_find_level_change, bidi_cache_iterator_state)
(bidi_cache_find, bidi_peek_at_next_level)
(bidi_level_of_next_char, bidi_find_other_level_edge)
(bidi_move_to_visually_next): Compare cache index with
bidi_cache_start rather than with zero.
(bidi_fetch_char): Accept new argument STRING; all callers
changed. Support iteration over a string. Support strings with
display properties. Support unibyte strings. Fix the type of
`len' according to what STRING_CHAR_AND_LENGTH expects.
(bidi_paragraph_init, bidi_resolve_explicit_1)
(bidi_resolve_explicit, bidi_resolve_weak)
(bidi_level_of_next_char, bidi_move_to_visually_next): Support
iteration over a string.
(bidi_set_sor_type, bidi_resolve_explicit_1)
(bidi_resolve_explicit, bidi_type_of_next_char): ignore_bn_limit
can now be zero (for strings); special values 0 and -1 were
changed to -1 and -2, respectively.
(bidi_char_at_pos): New function.
(bidi_paragraph_init, bidi_resolve_explicit, bidi_resolve_weak):
Call it instead of FETCH_MULTIBYTE_CHAR.
(bidi_move_to_visually_next): Abort if charpos or bytepos were not
initialized to valid values.
(bidi_init_it): Don't initialize charpos and bytepos with invalid
values.
(bidi_level_of_next_char): Allow the sentinel "position" to pass
the test for valid cached positions. Fix the logic for looking up
the sentinel state in the cache. GCPRO the Lisp string we are
iterating.
(bidi_push_it, bidi_pop_it): New functions.
(bidi_initialize): Initialize the bidi cache start stack pointer.
(bidi_cache_ensure_space): New function, refactored from part of
bidi_cache_iterator_state. Don't assume the required size is just
one BIDI_CACHE_CHUNK away.
(bidi_cache_start_stack, bidi_push_it): Use IT_STACK_SIZE.
(bidi_count_bytes, bidi_char_at_pos): New functions.
(bidi_cache_search): Don't assume bidi_cache_last_idx is
always valid if bidi_cache_idx is valid.
(bidi_cache_find_level_change): xassert that bidi_cache_last_idx
is valid if it's going to be used.
(bidi_shelve_cache, bidi_unshelve_cache): New functions.
(bidi_cache_fetch_state, bidi_cache_search)
(bidi_cache_find_level_change, bidi_cache_ensure_space)
(bidi_cache_iterator_state, bidi_cache_find)
(bidi_find_other_level_edge, bidi_cache_start_stack): All
variables related to cache indices are now EMACS_INT.
src/dispextern.h (struct bidi_string_data): New structure.
(struct bidi_it): New member `string'. Make flag members be 1-bit
fields, and put them last in the struct.
(compute_display_string_pos, compute_display_string_end): Update
prototypes.
(bidi_push_it, bidi_pop_it): Add prototypes.
(struct iterator_stack_entry): New members bidi_p,
paragraph_embedding, and from_disp_prop_p.
(struct it): Member bidi_p is now a bit field 1 bit wide.
(bidi_shelve_cache, bidi_unshelve_cache): Declare
prototypes.
src/.gdbinit (xvectype, xvector, xcompiled, xchartable, xboolvector)
(xpr, xfont, xbacktrace): Use "header.size" when accessing vectors
and vector-like objects.
src/dispnew.c (buffer_posn_from_coords): Save and restore the bidi
cache around display iteration.
src/window.c (Fwindow_end, window_scroll_pixel_based)
(displayed_window_lines, Frecenter): Save and restore the bidi
cache around display iteration.
lisp/buff-menu.el (Buffer-menu-buffer+size): Accept an additional
argument LRM; if non-nil, append an invisible LRM character to the
buffer name.
(list-buffers-noselect): Call Buffer-menu-buffer+size with the
last argument non-nil, when formatting buffer names.
(Buffer-menu-mode, list-buffers-noselect): Force left-to-right
paragraph direction.
doc/lispref/display.texi (Other Display Specs): Document that `left-fringe'
and `right-fringe' display specifications are of the "replacing"
kind.
* doc/emacs/frames.texi: Move Cut and Paste node and subnodes into
killing.texi, except Mouse Commands and Word and Line Mouse.
* doc/emacs/killing.texi (Killing, Deletion and Killing, Killing by Lines)
(Other Kill Commands, Kill Options): Copyedits.
(Deletion and Killing, Kill Ring): Kill/yank now use clipboard.
(Yanking): Move yank-excluded properties discussion here.
(Cut and Paste): Move from frames.texi. Update subnodes to
describe x-select-enable-clipboard case.
and out of the Customizations chapter.
* doc/emacs/modes.texi: Rename from major.texi.
(Modes): New node. Make Major Modes and Minor Modes subsections
of this. All callers changed.
* doc/emacs/custom.texi (Minor Modes): Move to modes.texi.