view nextstep/ChangeLog @ 107648:babfb0a156a1

Initial support for bidirectional editing. Makefile.in (obj): Include bidi.o. (bidi.o): New target. makefile.w32-in (OBJ1): Add $(BLD)/bidi.$(O). ($(BLD)/bidi.$(O)): New target. bidi.c: New file. buffer.h (struct buffer): New members bidi_display_reordering and bidi_paragraph_direction. buffer.c (init_buffer_once): Initialize bidi_display_reordering and bidi_paragraph_direction. (syms_of_buffer): Declare Lisp variables bidi-display-reordering and bidi-paragraph-direction. (Fbuffer_swap_text): Swap the values of bidi_display_reordering and bidi_paragraph_direction. dispextern.h (BIDI_MAXLEVEL, BIDI_AT_BASE_LEVEL): New macros. (bidi_type_t, bidi_dir_t): New types. (bidi_saved_info, bidi_stack, bidi_it): New structures. (struct it): New members bidi_p, bidi_it, paragraph_embedding, prev_stop, base_level_stop, and eol_pos. (bidi_init_it, bidi_get_next_char_visually): New prototypes. (IT_STACK_SIZE): Enlarge to 5. (struct glyph_row): New member reversed_p. <string_buffer_position>: Update prototype. (PRODUCE_GLYPHS): Set the reversed_p flag in the iterator's glyph_row if bidi_it.paragraph_dir == R2L. (struct glyph): New members resolved_level and bidi_type. dispnew.c (direct_output_forward_char): Give up if we need bidi processing or buffer's direction is right-to-left. (prepare_desired_row): Preserve the reversed_p flag. (row_equal_p): Compare the reversed_p attributes as well. xdisp.c (init_iterator): Initialize it->bidi_p. Call bidi_init_it and set it->paragraph_embedding from the current buffer's value of bidi_paragraph_direction. (reseat_1): Initialize bidi_it.first_elt. (set_iterator_to_next, next_element_from_buffer): Use the value of paragraph_embedding to determine the paragraph direction. (set_iterator_to_next): Under bidi reordering, call bidi_get_next_char_visually. Call bidi_paragraph_init if the new_paragraph flag is set in the bidi iterator. (next_element_from_buffer): If bidi_it.first_elt is set, initialize paragraph direction and find the first character to display in the visual order. If reseated to a middle of a line, prime the bidi iterator starting at the line's beginning. Handle the situation where we overstepped stop_charpos due to non-linearity of the bidi iteration. Likewise for when we back up beyond the previous stop_charpos. When moving across stop_charpos, record it in prev_stop. (display_line): Set row->end and it->start for the next row to the next character in logical order. Always extend reversed_p rows to the end of line, even if they end at ZV. Copy the reversed_p flag to the next glyph row. Keep calling set_cursor_from_row for bidi-reordered rows even if we already have a possible candidate for cursor position. Set row_end after all the row's glyphs have been produced, by looping over the glyphs. Record the position after EOL in it->eol_pos, and use it to set end_pos of the last row produced for a continued line. <Qright_to_left, Qleft_to_right>: New variables. (syms_of_xdisp): Initialize and staticpro them. (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. (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. (append_glyph, append_composite_glyph) (produce_image_glyph, append_stretch_glyph): Set the resolved_level and bidi_type members of each glyph. (append_glyph): If the glyph row is reversed, prepend the glyph rather than appending it. (handle_stop_backwards): New function. (reseat_1, pop_it, push_it): Set prev_stop and base_level_stop. (reseat): call handle_stop_backwards to recompute prev_stop and base_level_stop for the new position. (handle_invisible_prop): Under bidi iteration, skip invisible text using bidi_get_next_char_visually. If we are `reseat'ed, init the paragraph direction. Update IT->prev_stop after skipping invisible text. (move_it_in_display_line_to): New variables prev_method and prev_pos. Compare for strict equality in BUFFER_POS_REACHED_P. (try_cursor_movement): Examine all the candidate rows that occlude point, to return the best match. If rows are bidi-reordered and point moved backwards, back up to the row that is not a continuation line, and start looking for a suitable row from there. term.c (append_glyph): Reverse glyphs by pre-pending them, rather than appending, if the glyph_row's reversed_p flag is set. Set the resolved_level and bidi_type members of each glyph. .gdbinit (pbiditype): New command. (pgx): Use it to display bidi level and type of the glyph. (pitx): Display some bidi information about the iterator. (prowlims, pmtxrows): New commands. files.el: Make bidi-display-reordering safe variable for boolean values. mule.texi (International): Mention support of bidirectional editing. (Bidirectional Editing): New section. HELLO: Reorder Arabic and Hebrew into logical order, and insert RLM before the opening paren, to make the display more reasonable. Add setting for bidi-display-reordering in the local variables section. NEWS: Mention initial support for bidirectional editing.
author Eli Zaretskii <eliz@gnu.org>
date Tue, 30 Mar 2010 05:13:07 -0400
parents b4d27afff1bf
children 973b5bc5fcfe
line wrap: on
line source

2010-03-10  Chong Yidong  <cyd@stupidchicken.com>

	* Branch for 23.2.

2010-01-11  Glenn Morris  <rgm@gnu.org>

	* Cocoa/Emacs.base/Contents/Info.plist:
	* Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:
	* GNUstep/Emacs.base/Resources/Info-gnustep.plist:
	Set copyright year to 2010.

2009-09-23  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* README: Note GNUstep support is now Startup 0.23 or later.

2009-09-18  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* README: Note OS X support is now 10.4 or later.

2009-06-21  Chong Yidong  <cyd@stupidchicken.com>

	* Branch for 23.1.

2009-06-05  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* Cocoa/Emacs.xcodeproj/project.pbxproj: Drop deployment target
	and zerolink, remove shell script dependencies (let makefiles
	handle), adjust paths.

2009-05-17  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* Cocoa/Emacs.xcodeproj/project.pbxproj: Update and redo targets
	to utilize Makefiles for assembly portions of the build.
	* INSTALL: Describe the Xcode project.

2009-05-06  Travis Jeffery  <t.jeffery@utoronto.ca>  (tiny change)

	* Cocoa/Emacs.base/Contents/Info.plist: Add editor role for
	.markdown, .mkdn.

2009-03-14  David Reitter  <david.reitter@gmail.com>

	* Cocoa/Emacs.base/Contents/Resources/preferences.nib/classes.nib:
	* Cocoa/Emacs.base/Contents/Resources/preferences.nib/info.nib:
	* Cocoa/Emacs.base/Contents/Resources/preferences.nib/keyedobjects.nib:
	* GNUstep/Emacs.base/Resources/preferences.gorm/data.classes:
	* GNUstep/Emacs.base/Resources/preferences.gorm/data.info:
	* GNUstep/Emacs.base/Resources/preferences.gorm/objects.gorm:
	Remove files.

2009-02-01  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* Cocoa/Emacs.base/Contents/Resources/preferences.nib: Remove
	cursor blink slider, add confirm quit checkbox.

2009-01-05  Glenn Morris  <rgm@gnu.org>

	* Cocoa/Emacs.base/Contents/Info.plist:
	* Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:
	* GNUstep/Emacs.base/Resources/Info-gnustep.plist:
	Update copyright for 2009.

2008-10-23  Glenn Morris  <rgm@gnu.org>

	* Cocoa/Emacs.base/Contents/Info.plist:
	* Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:
	Fix copyright strings.

2008-10-22  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* Cocoa/Emacs.base/Contents/Info.plist
	* Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings
	* GNUstep/Emacs.base/Resources/Emacs.desktop
	* GNUstep/Emacs.base/Resources/Info-gnustep.plist: Replace 9.0 version
	numbers with 23.0.60-involving strings.

2008-10-08  Yavor Doganov  <yavor@gnu.org>  (tiny change)

	* GNUstep/Emacs.base/Resources/Info-gnustep.plist:
	Add missing semicolons to make it a valid dictionary.

2008-08-20  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* GNUstep/Emacs.base/Resources/Info-gnustep.plist: Update URLs.
	* GNUstep/Emacs.base/Resources/emacs.tiff: Update to copy of:
	../../../Cocoa/Emacs.base/Contents/Resources/Emacs.icns 64 size.

2008-07-27  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* DEV-NOTES: New file.

2008-07-22  Seiji Zenitani  <zenitani@mac.com>

	* Cocoa/Emacs.base/Contents/Info.plist: Import document icon settings
	and minor configurations from Carbon port.
	* Cocoa/Emacs.base/Contents/PkgInfo: Change CFBundleSignature to 'EMAx'.
	* Cocoa/Emacs.base/Contents/Resources/document.icns: New file:
	copied from Carbon port.

2008-07-21  Chong Yidong  <cyd@stupidchicken.com>

	* README: Consolidate credits.  Copyedits.

2008-07-19  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* FOR-RELEASE: Updates.

2008-07-19  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* Cocoa/Emacs.base/Contents/Resources/Emacs.icns: Update with latest
	from mac/Emacs.app/Contents/Resources.

2008-07-17  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* README.txt:
	* compile: Remove.
	* README:
	* INSTALL: New files.
	* FOR-RELEASE: Updated.

2008-07-15  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* Cocoa/Emacs.base/Contents/Resources/Credits.html: Change URL from
	sf.net to GNU.org.

2008-07-15  Adrian Robert  <Adrian.B.Robert@gmail.com>

	* FOR-RELEASE: Remove historical info.

2008-07-15  Adrian Robert  <Adrian.B.Robert@gmail.com>

	New directory with support files to support NeXTstep window system.

	* AUTHORS: New file: contributor information for NS port.
	* ChangeLog.nextstep: New file: changelog info to be added to
	various directories on merge.
	* ChangeLog: New file: recent history of the NS port itself.
	* Cocoa: New directory: support files for building .app
	package on OS X systems.
	* Cocoa/Emacs.base:
	* Cocoa/Emacs.base/Contents: New directories.
	* Cocoa/Emacs.base/Contents/Info.plist:
	* Cocoa/Emacs.base/Contents/PkgInfo: New files.
	* Cocoa/Emacs.base/Contents/Resources: New directory.
	* Cocoa/Emacs.base/Contents/Resources/Credits.html: New file:
	About popup support.
	* Cocoa/Emacs.base/Contents/Resources/Emacs.icns: New file:
	copied from Carbon port.
	* Cocoa/Emacs.base/Contents/Resources/English.lproj: New directory.
	* Cocoa/Emacs.base/Contents/Resources/English.lproj/InfoPlist.strings:
	New file.
	* Cocoa/Emacs.base/Contents/Resources/preferences.nib: New directory.
	* Cocoa/Emacs.base/Contents/Resources/preferences.nib/classes.nib:
	* Cocoa/Emacs.base/Contents/Resources/preferences.nib/info.nib:
	* Cocoa/Emacs.base/Contents/Resources/preferences.nib/keyedobjects.nib:
	New files.
	* Cocoa/Emacs.xcodeproj: New directory: build support.
	* Cocoa/Emacs.xcodeproj/project.pbxproj: New file.
	* GNUstep: New directory: support files for building .app
	package on GNUstep systems.
	* GNUstep/Emacs.base/Resources: New directory.
	* GNUstep/Emacs.base/Resources/Emacs.desktop:
	* GNUstep/Emacs.base/Resources/Info-gnustep.plist:
	* GNUstep/Emacs.base/Resources/emacs.tiff: New files.
	* GNUstep/Emacs.base/Resources/preferences.gorm: New directory.
	* GNUstep/Emacs.base/Resources/preferences.gorm/data.classes:
	* GNUstep/Emacs.base/Resources/preferences.gorm/data.info:
	* GNUstep/Emacs.base/Resources/preferences.gorm/objects.gorm: New files.
	* compile: New file: utility script for building Emacs.app.
	* FOR-RELEASE: New file: release tasks specific to NeXTstep port.
	* README.txt: New file: descriptive info for NeXTstep port.

;; Local Variables:
;; coding: utf-8
;; add-log-time-zone-rule: t
;; End:

    Copyright (C) 2008, 2009, 2010  Free Software Foundation, Inc.

  This file is part of GNU Emacs.

  GNU Emacs is free software: you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

  GNU Emacs is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  GNU General Public License for more details.

  You should have received a copy of the GNU General Public License
  along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.

;; arch-tag: 963ee08e-8e76-485f-9cfb-65a4333a073c