Eli Zaretskii [Fri, 1 Jan 2010 11:45:36 +0000 (06:45 -0500)]
Retrospective commit from 2009-10-24.
Continue working on set_cursor_from_row.
Cleanup of resolved_level and bidi_type members of struct glyph.
xdisp.c (set_cursor_from_row): Fix off-by-one error when
skipping over non-character glyphs at end of a reversed row.
dispextern.h (struct glyph): The `resolved_level' member needs
only 5 bits, not 6. The `bidi_type' member needs only 3 bits.
(bidi_type_t): Rearrange so that types that can appear in the
resolved type are at the beginning and have values less than 8.
Eli Zaretskii [Fri, 1 Jan 2010 11:39:56 +0000 (06:39 -0500)]
Retrospective commit from 2009-10-17.
Continue working on display of R2L glyph rows. Reverse glyphs in
term.c:append_glyph rather than in extend_face_to_end_of_line.
Fix bidi iteration near BEGV and ZV.
dispextern.h (struct glyph): New members resolved_level and
bidi_type.
xdisp.c (append_glyph, append_composite_glyph)
(produce_image_glyph, append_stretch_glyph): Set them.
term.c (append_glyph): Ditto.
xdisp.c (display_line, next_element_from_buffer): Set the glyph
row's reversed_p flag if the paragraph base direction is odd.
(extend_face_to_end_of_line): Don't reverse the glyphs here.
term.c (append_glyph): Reverse glyphs here.
bidi.c (bidi_get_next_char_visually): Don't exit early when at ZV.
(bidi_paragraph_init): Don't step over a newline if at BEGV.
(bidi_paragraph_init): Handle empty buffers.
Eli Zaretskii [Fri, 1 Jan 2010 11:35:03 +0000 (06:35 -0500)]
Retrospective commit from 2009-10-10.
Continue working on set_cursor_from_row.
Disable redisplay optimizations that interfere with R2L glyph rows.
Misc cleanups in bidi.c.
xdisp.c (set_cursor_from_row): Skip over glyphs near end of row
with integer OBJECT even if their CHARPOS is zero.
bidi.c (bidi_cache_iterator_state): Don't cache NEW_PARAGRAPH.
Abort if someone tries to add a cached state whose position is not
the immediate successor to that of the last cached state.
(bidi_paragraph_init): Don't bail out too early after a reseat.
xdisp.c (text_outside_line_unchanged_p, try_window_id): Disable
optimizations if we are reordering bidirectional text and the
paragraph direction can be affected by the change.
Eli Zaretskii [Fri, 1 Jan 2010 11:27:51 +0000 (06:27 -0500)]
Retrospective commit from 2009-10-08.
Finish up working on paragraph's base direction.
Start working on display of right-to-left glyph rows.
Rewrite set_cursor_from_row to support bidi.
xdisp.c (string_buffer_position_lim): New function.
(string_buffer_position): Most of code moved to
string_buffer_position_lim. Last argument and return value are
now EMACS_INT; all callers changed.
(set_cursor_from_row): Rewritten to support bidirectional text and
reversed glyph rows.
dispextern.h <string_buffer_position>: Update prototype.
bidi.c (bidi_paragraph_init): Fix initialization of POS.
dispextern.h (struct glyph_row): New member reversed_p.
buffer.c (syms_of_buffer): Remove DEFVAR_LISP_NOPRO for
default-direction-reversed, default-bidi-display-reordering, and
default-paragraph-direction.
Eli Zaretskii [Fri, 1 Jan 2010 11:22:52 +0000 (06:22 -0500)]
Retrospective commit from 2009-10-05.
Continue working on paragraph base direction.
Support per-buffer default paragraph direction.
buffer.h (struct buffer): New member paragraph_direction.
buffer.c (init_buffer_once): Initialize it.
(syms_of_buffer): Declare Lisp variables
default-paragraph-direction and paragraph-direction.
dispextern.h (struct it): New member paragraph_embedding.
xdisp.c (init_iterator): Initialize it from the buffer's value
of paragraph-direction.
<Qright_to_left, Qleft_to_right>: New variables.
(syms_of_xdisp): Initialize and staticpro them.
(set_iterator_to_next, next_element_from_buffer): Use the value of
paragraph_embedding to determine the paragraph direction.
bidi.c (bidi_line_init): Fix second argument to
bidi_set_sor_type.
(bidi_init_it): Initialize paragraph_dir to NEUTRAL_DIR.
(bidi_get_next_char_visually): Record the last character of the
separator in separator_limit, not the character after that.
(bidi_find_paragraph_start): Accept character and byte positions
instead of the whole iterator stricture. All callers changed.
Eli Zaretskii [Fri, 1 Jan 2010 11:17:13 +0000 (06:17 -0500)]
Retrospective commit from 2009-10-04.
Continue working on determining paragraph's base direction.
bidi.c (bidi_at_paragraph_end): Check for paragraph-start if
paragraph-separate failed to match. Return the length of the
matched separator.
(bidi_line_init): New function.
(bidi_paragraph_init): Use bidi_line_init. Do nothing if in the
middle of a paragraph-separate sequence. Don't override existing
paragraph direction if no strong characters found in this
paragraph. Set separator_limit according to what
bidi_at_paragraph_end returns. Reset new_paragraph flag when a
new paragraph is found.
(bidi_init_it): Reset separator_limit.
dispextern.h (struct bidi_it): New member separator_limit.
bidi.c (bidi_find_paragraph_start): Return the byte position of
the paragraph beginning.
xdisp.c (set_iterator_to_next): Call bidi_paragraph_init if the
new_paragraph flag is set in the bidi iterator.
bidi.c (bidi_at_paragraph_end, bidi_find_paragraph_start): Use
the buffer-local value of paragraph-start and paragraph-separate.
Eli Zaretskii [Fri, 1 Jan 2010 11:06:48 +0000 (06:06 -0500)]
Retrospective commit from 2009-10-03.
Detect paragraph start and paragraph separators (part of determining
paragraph base direction).
(The commit of window.h belongs to the original changes by Kenichi Handa,
it was forgotten earlier.)
bidi.c (bidi_set_paragraph_end): Don't set the new_paragraph
flag in the iterator.
(bidi_init_it): Set the new_paragraph flag.
(bidi_at_paragraph_end): Arguments are now character and byte
position of the next character. All callers changed.
(bidi_resolve_explicit): Don't call bidi_at_paragraph_end, and
don't behave as if at paragraph end if it returns true.
(bidi_get_next_char_visually): Don't call bidi_paragraph_init if
new_paragraph flag is set. Set new_paragraph flag when at end of
a paragraph.
<fallback_paragraph_start_re, fallback_paragraph_separate_re>: New
variables.
<Qparagraph_start, Qparagraph_separate>: New variables.
(bidi_initialize): Initialize and staticpro them.
dispextern.h <struct bidi_it>: New element paragraph_dir. Make
positional elements EMACS_INT.
bidi.c <bidi_overriding_paragraph_direction>: Delete.
Eli Zaretskii [Fri, 1 Jan 2010 11:01:34 +0000 (06:01 -0500)]
Retrospective commit from 2009-09-27.
Support character mirroring.
Support iteration that starts in the middle of a line.
Misc cleanups.
xdisp.c (next_element_from_buffer): If called not at line
beginning, start bidi iteration from line beginning.
bidi.c (bidi_paragraph_init): Use
bidi_overriding_paragraph_direction instead of a literal zero.
(bidi_initialize): Fix some character types, per Unicode 5.x.
(bidi_get_type): Abort if called with invalid character code.
dispextern.h: Add prototype of bidi_mirror_char.
xdisp.c (get_next_display_element): Mirror characters whose
resolved type is STRONG_R.
Eli Zaretskii [Fri, 1 Jan 2010 10:57:17 +0000 (05:57 -0500)]
Retrospective commit from 2009-09-26.
Continued working on initialization.
Started working on paragraph direction initialization.
bidi.c (bidi_paragraph_init): Don't set bidi_it->ch_len. Abort
if called not at beginning of a new paragraph.
(bidi_get_next_char_visually): Prepare and use a sentinel iterator
state when first_elt flag is set.
dispextern.h (struct bidi_it): New struct member first_elt.
bidi.c (bidi_init_it): Initialize bidi_it->first_elt.
(bidi_copy_it): Don't copy the first_elt flag.
xdisp.c (reseat_1): Initialize bidi_it.first_elt. Move bidi
scan start code from here...
(next_element_from_buffer): ...to here. Use bidi_it.first_elt flag.
Eli Zaretskii [Thu, 31 Dec 2009 21:20:15 +0000 (16:20 -0500)]
Retrospective commit from 2009-09-19.
Begin work on bidi initialization and other cleanup.
Remove all STANDALONE code from bidi.c.
xdisp.c (init_iterator): Call bidi_init_it. Set
bidi_it->bytepos if buffer position specified.
(reseat_1): Don't call bidi_init_it. Call bidi_paragraph_init
instead. Move back to preceding character before the call to
bidi_get_next_char_visually.
bidi.c: Remove all STANDALONE parts.
(bidi_init_it): Init bidi_it->charpos and bidi_it->bytepos to -1.
Don't call bidi_paragraph_init. Change arguments.
(bidi_paragraph_init): Remove code for negative pos.
dispextern.h <bidi_it>: Rename orig_type to type_after_w1 and
pristine_type to orig_type.
Eli Zaretskii [Thu, 31 Dec 2009 21:14:26 +0000 (16:14 -0500)]
Retrospective commit from 2009-09-12.
Undo changes from 2009-09-11. Set row->end and row->start in
xdisp.c:display_line.
dispnew.c (direct_output_for_insert): Give up if we are
reordering bidirectional text.
dispextern.h (IT_STACK_SIZE): Enlarge to 5.
xdisp.c (display_line): Set row->end and it->start for the next
row to the next character in logical order. If we are reordering
bidi text, push and pop the iterator before and after momentarily
iterating in logical order.
Eli Zaretskii [Thu, 31 Dec 2009 21:09:28 +0000 (16:09 -0500)]
Retrospective commit from 2009-08-12.
An (unsuccessful) attempt to solve the issue with row->start and row->end.
xdisp.c (set_iterator_to_next, reseat, reseat_1)
(reseat_at_next_visible_line_start): Accept additional argument
force_logical_p; all callers changed. If force_logical_p is
non-zero, force iteration in buffer's logical order even in bidi
buffers.
dispnew.c (direct_output_for_insert): Call set_iterator_to_next
with additional argument zero.
dispextern.h (set_iterator_to_next): Now accepts an additional
argument.
Eli Zaretskii [Thu, 31 Dec 2009 20:49:08 +0000 (15:49 -0500)]
Retrospective commit from 2009-08-22.
Staticpro bidi_char_table, add type checking where bidi type is assigned.
bidi.c (bidi_initialize): staticpro bidi_char_table.
(bidi_check_type): New function.
(bidi_cache_iterator_state, bidi_remember_char)
(bidi_resolve_explicit_1, bidi_resolve_explicit)
(bidi_resolve_weak, bidi_resolve_neutral)
(bidi_level_of_next_char): Use it to validate the bidi type
assigned to the iterator.
Nick Roberts [Wed, 30 Dec 2009 02:22:45 +0000 (15:22 +1300)]
Show working revision correctly for mercurial.
* vc-hg.el (vc-hg-working-revision): Use hg parent instead of
hg log as suggested by Alex Harsanyi <alexharsanyi@gmail.com>,
Nick Roberts [Tue, 29 Dec 2009 07:15:34 +0000 (20:15 +1300)]
This changeset reverts GDB Graphical Interface to use annotations. It incorporates features added
(and never released) on the EMACS_23_1_RC branch. Namely reverse debugging and the display of STL
collections as watch expressions.
The long term aim is to move to GDB/MI, so these changes will be re-instated at some time in the future.
At the moment, however, there are issues with gdb-mi.el that have not yet
Dan Nicolaescu [Tue, 29 Dec 2009 06:46:08 +0000 (22:46 -0800)]
Make vc-dir work on subdirectories of the bzr root.
* vc-bzr.el (vc-bzr-after-dir-status): Add new argument. Return
file names relative to it.
(vc-bzr-dir-status, vc-bzr-dir-status-files): Pass the bzr root
relative directory to vc-bzr-after-dir-status.
Tassilo Horn [Mon, 28 Dec 2009 19:34:10 +0000 (20:34 +0100)]
* font-lock.el (font-lock-refresh-defaults): New function, which
can be used to let font-lock react to external changes in
variables like font-lock-defaults and keywords.
See http://thread.gmane.org/gmane.emacs.devel/118777/focus=118802
Kevin Ryde [Sat, 26 Dec 2009 22:02:26 +0000 (22:02 +0000)]
* man.el
(Man-bgproc-sentinel): When "-k foo" produces no output show error
"no matches" rather than "Can't find manpage", as the latter reads
like -k was interpreted as a page name, which is not so. (My
bug#5431.)
Kevin Ryde [Sat, 26 Dec 2009 22:00:47 +0000 (22:00 +0000)]
(Man-bgproc-sentinel): When "-k foo" produces no output show error
"no matches" rather than "Can't find manpage", as the latter reads
like -k was interpreted as a page name, which is not so. (My
bug#5431.)
Kevin Ryde [Sat, 26 Dec 2009 21:30:00 +0000 (21:30 +0000)]
* man.el (man): Revise docstring a bit to show -a and -l as
examples. Add -k description since support for it has otherwise
been a secret. (Further to bug#3717.)
Kenichi Handa [Fri, 25 Dec 2009 02:45:47 +0000 (02:45 +0000)]
(devanagari-composable-pattern): Fixed to
handle ZWNJ and ZWJ. Use it in composition-function-table for
Devanagari.
(malayalam-composable-pattern): Fix previous change.
Kenichi Handa [Fri, 25 Dec 2009 02:43:36 +0000 (02:43 +0000)]
(composition_reseat_it): Don't make a composition
spanning over point.
(CHAR_COMPOSABLE_P): Treat U+200C (ZWNJ) and U+200D (ZWJ) as
composable characters.
(composition_adjust_point): New arg NEW_PT. Callers changed.
Kenichi Handa [Fri, 25 Dec 2009 02:41:59 +0000 (02:41 +0000)]
(command_loop_1): Force redisplay if the last point
was within a composition.
(adjust_point_for_property): Don't adjust point for automatic
composition when called after buffer modification.
Eli Zaretskii [Sat, 19 Dec 2009 14:16:47 +0000 (14:16 +0000)]
(pitx): Don't use enum names, use their values. Remove reference to
non-existing value GET_FROM_COMPOSITION.
(pgx): Don't use enum names, use their values.
(pitmethod): New helper command.
(pitx): Use it to display iteration method.
(pgrowit): New command.
Eli Zaretskii [Sat, 19 Dec 2009 11:25:34 +0000 (11:25 +0000)]
Update dependencies in Makefile.in.
(alloc.o): Depend on termhooks.h.
(atimer.o): Depend on blockinput.h.
(buffer.o): Depend on indent.h, keyboard.h, coding.h, keymap.h, and frame.h.
(callint.o): Depend on systime.h, coding.h, and composite.h.
(callproc.o): Depend on buffer.h.
(casefiddle.o): Don't depend on charset.h.
(casetab.o): Depend on character.h.
(ccl.o): Depend on composite.h.
(chartab.o): Depend on ccl.h.
(cm.o): Depend on dispextern.h.
(cmds.o): Depend on systime.h, coding.h, frame.h, and composite.h.
(coding.o): Don't depend on $(INTERVALS_H).
(composite.o): Don't depend on dispextern.h explicitly (it's in
$(INTERVALS_H)). Depend on ccl.h.
(data.o): Depend on systime.h, coding.h, composite.h, dispextern.h, font.h,
and ccl.h.
(dired.o): Depend on composite.h.
(dispnew.o): Depend on coding.h. Don't depend explicitly on
composite.h (it's in $(INTERVALS_H)).
(doc.o): Depend on systime.h, coding.h, and composite.h.
(editfns.o): Don't depend explicitly on dispextern.h.
(emacs.o): Depend on frame.h and coding.h.
(eval.o): Depend on coding.h, composite.h, and xterm.h.
(fileio.o): Depend on frame.h and commands.h. Don't depend
explicitly on dispextern.h.
(filelock.o): Don't depend on epaths.h and charset.h. Depend on composite.h.
(fns.o): Don't depend on termhooks.h.
(font.o): Depend on buffer.h, composite.h, fontset.h, and xterm.h.
(fontset.o): Depend on blockinput.h, atimer.h, systime.h, coding.h,
$(INTERVALS_H), window.h, xterm.h.
(frame.o): Depend on coding.h, composite.h, termhooks.h, and ccl.h.
(fringe.o): Depend on blockinput.h, atimer.h, and systime.h.
(ftfont.o): Depend on blockinput.h, atimer.h, systime.h, coding.h,
fontset.h, ccl.h, and ftfont.h.
(ftxfont.o): Depend on atimer.h, systime.h, fontset.h, and ccl.h.
(gtkutil.o): Depend on dispextern.h and composite.h.
(image.o): Depend on epaths.h, character.h, coding.h, composite.h,
termhooks.h, and ccl.h.
(indent.o): Depend on systime.h, coding.h, and $(INTERVALS_H).
(intervals.o): Depend on systime.h and coding.h.
(keyboard.o): Depend on composite.h and coding.h.
(keymap.o): Depend on coding.h and frame.h.
(lread.o): Depend on systime.h, frame.h, blockinput.h, and atimer.h.
(macros.o): Depend on systime.h, coding.h, and composite.h.
(menu.o): Depend on systime.h, coding.h, composite.h, window.h, and atimer.h.
(minibuf.o): Depend on systime.h and coding.h. Don't depend on
dispextern.h explicitly.
(print.o): Depend on termhooks.h, coding.h, and ccl.h. Don't
depend explicitly on dispextern.h and composite.h.
(process.o): Depend on character.h, xgselect.h, and sysselect.h.
(regex.o): Don't depend on charset.h.
(scroll.o): Depend on systime.h, coding.h, composite.h, and window.h.
(search.o): Don't depend explicitly on composite.h.
(sound.o): Depend on atimer.h and systime.h.
(syntax.o): Don't depend explicitly on composite.h.
(sysdep.o): Depend on coding.h and composite.h.
(term.o): Depend on xterm.h and buffer.h.
(terminal.o): Depend on dispextern.h, composite.h, and systime.h.
(textprop.o): Don't depend on dispextern.h explicitly.
(undo.o): Depend on dispextern.h.
(window.o): Depend on coding.h and termhooks.h. Don't depend on
dispextern.h and composite.h explicitly.
(xdisp.o): Depend on ccl.h.
(xfaces.o): Depend on coding.h and ccl.h.
(xfns.o): Depend on $(INTERVALS_H) and ccl.h.
(xfont.o): Depend on atimer.h, systime.h, fontset.h, and ccl.h.
(xftfont.o): Depend on atimer.h, systime.h, fontset.h, ccl.h, and ftfont.h.
(xgselect.o): New dependency.
(xmenu.o): Depend on composite.h, keymap.h, and sysselect.h.
(xselect.o): Depend on keyboard.h, coding.h, and composite.h.
(xsettings.o): Depend on dispextern.h, keyboard.h, systime.h,
coding.h, composite.h, blockinput.h, atimer.h, and termopts.h.
(xsmfns.o): Depend on frame.h and dispextern.h.
(xterm.o): Depend on intervals.h, keymap.h, xgselect.h, and sysselect.h.
Michael Albinus [Thu, 17 Dec 2009 13:18:03 +0000 (13:18 +0000)]
* files.el (file-expand-wildcards): In case of remote files, check
only local file name part for wildcards. Provide feature 'files
and subfeature 'remote-wildcards. (Bug#5198)
* net/tramp.el (tramp-handle-file-remote-p): Expand file name only
if there is already an established connection.
(tramp-advice-file-expand-wildcards): Remove it.
* net/tramp-compat.el (top): Autoload `tramp-handle-file-remote-p'.
(tramp-advice-file-expand-wildcards): Moved from tramp.el.
Activate advice for older GNU Emacs versions. (Bug#5237)
Juri Linkov [Wed, 16 Dec 2009 09:52:42 +0000 (09:52 +0000)]
Revert to old 23.1 logic of using the file at the mark as default.
* dired-aux.el (dired-diff): Use the file at the mark as default
if it's not the same as the current file, and the target dir is
the current dir or the mark is active. Add the current file
as the arg of `dired-dwim-target-defaults'. Use the default file
in the prompt. (Bug#5225)
Michael Albinus [Tue, 15 Dec 2009 21:11:39 +0000 (21:11 +0000)]
* net/tramp.el (tramp-echo-mark-marker-length): New defconst.
(tramp-echo-mark, tramp-echoed-echo-mark-regexp): Use it.
(tramp-check-for-regexp): Check also, when an echoing shell stops
to echo sent commands.