Mercurial > emacs
annotate src/keymap.h @ 107998:531d454c3a99
Implement GUI display of R2L lines, fix TTY display of R2L lines.
xdisp.c [HAVE_WINDOW_SYSTEM]: Add prototype for
append_stretch_glyph.
(set_cursor_from_row) <cursor_x>: Remove unused variable. Fix
off-by-one error in computing x at end of text in the row.
(append_stretch_glyph): In reversed row, prepend the glyph rather
than append it. Set resolved_level and bidi_type of the glyph.
(extend_face_to_end_of_line): If the row is reversed, prepend a
stretch glyph whose width is such that the rightmost glyph will be
drawn at the right margin of the window. Fix off-by-one error on
TTY frames in testing whether a line needs face extension. Fix
face extension at ZV. If this is the last glyph row, use
DEFAULT_FACE_ID, to avoid painting the rest of the window with the
region face.
(set_cursor_from_row, display_line): Use
MATRIX_ROW_CONTINUATION_LINE_P instead of testing value of
row->continuation_lines_width.
(next_element_from_buffer): Don't call bidi_paragraph_init if we
are at ZV. Fixes a crash when reseated to ZV by
try_window_reusing_current_matrix.
(display_and_set_cursor, erase_phys_cursor): Handle negative HPOS,
which happens with R2L glyph rows. Fixes a crash when inserting a
character at end of an R2L line.
(set_cursor_from_row): Don't be fooled by truncated rows: don't
treat them as having zero-width characters. Improve comments.
Don't reverse pos_before and pos_after for reversed glyph rows.
Set cursor.x to negative value when the cursor might be on the
left fringe.
(IT_OVERFLOW_NEWLINE_INTO_FRINGE): For R2L lines, consider the
left fringe, not the right one.
(notice_overwritten_cursor, draw_phys_cursor_glyph)
(erase_phys_cursor): For reversed cursor_row, support cursor on
the left fringe.
fringe.c (update_window_fringes): For R2L rows, swap the bitmaps
of continuation indicators on the fringes.
(draw_fringe_bitmap): For reversed glyph rows, allow cursor on the
left fringe.
w32term.c (w32_draw_window_cursor): For reversed glyph rows,
draw cursor on the left fringe.
xterm.c (x_draw_window_cursor): For reversed glyph rows, draw
cursor on the left fringe.
dispnew.c (update_text_area): Handle reversed desired rows when
the cursor is on the left fringe.
(set_window_cursor_after_update): Limit cursor's hpos by -1 from
below, not by 0, for when the cursor is on the left fringe.
xdisp.c (unproduce_glyphs): New function.
(display_line): Use it when produced glyphs are discarded from R2L
glyph rows.
(append_composite_glyph): In R2L rows, prepend the glyph rather
than appending it.
term.c (append_composite_glyph): In R2L rows, prepend the glyph
rather than append it. Set up the resolved_level and bidi_type
attributes of the appended glyph.
(produce_special_glyphs): Mirror the backslash continuation
character in R2L lines.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Tue, 20 Apr 2010 16:31:28 +0300 |
parents | 1d1d5d9bd884 |
children | e16f43875a48 376148b31b5e |
rev | line source |
---|---|
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
1 /* Functions to manipulate keymaps. |
68651
3bd95f4f2941
Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents:
64770
diff
changeset
|
2 Copyright (C) 2001, 2002, 2003, 2004, 2005, |
106815 | 3 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. |
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
4 |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
5 This file is part of GNU Emacs. |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
6 |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94005
diff
changeset
|
7 GNU Emacs is free software: you can redistribute it and/or modify |
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
8 it under the terms of the GNU General Public License as published by |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94005
diff
changeset
|
9 the Free Software Foundation, either version 3 of the License, or |
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94005
diff
changeset
|
10 (at your option) any later version. |
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
11 |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
12 GNU Emacs is distributed in the hope that it will be useful, |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
13 but WITHOUT ANY WARRANTY; without even the implied warranty of |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
15 GNU General Public License for more details. |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
16 |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
17 You should have received a copy of the GNU General Public License |
94994
29adfc9354e7
Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents:
94005
diff
changeset
|
18 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ |
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
19 |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
20 #ifndef KEYMAP_H |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
21 #define KEYMAP_H |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
22 |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
23 #define KEYMAPP(m) (!NILP (get_keymap (m, 0, 0))) |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
24 extern Lisp_Object Qkeymap, Qmenu_bar; |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
25 extern Lisp_Object current_global_map; |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
26 EXFUN (Fmake_sparse_keymap, 1); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
27 EXFUN (Fkeymap_prompt, 1); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
28 EXFUN (Fdefine_key, 3); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
29 EXFUN (Flookup_key, 3); |
76885
fcaf9518268a
(Fcommand_remapping): New optional argument.
Chong Yidong <cyd@stupidchicken.com>
parents:
75348
diff
changeset
|
30 EXFUN (Fcommand_remapping, 3); |
72889
25c755416160
* NEWS: explain new behavior and arguments of `key-binding' and
David Kastrup <dak@gnu.org>
parents:
68651
diff
changeset
|
31 EXFUN (Fkey_binding, 4); |
54926
9d9ed20a61d2
(Fkey_description): Fix prototype.
Kim F. Storm <storm@cua.dk>
parents:
52401
diff
changeset
|
32 EXFUN (Fkey_description, 2); |
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
33 EXFUN (Fsingle_key_description, 2); |
43153
d6162a8dc872
(Fkey_binding, Fwhere_is_internal): Update prototype.
Kim F. Storm <storm@cua.dk>
parents:
41292
diff
changeset
|
34 EXFUN (Fwhere_is_internal, 5); |
81609
7e640eac2dcb
* keymaps.texi (Active Keymaps): Document new POSITION argument of
David Kastrup <dak@gnu.org>
parents:
76885
diff
changeset
|
35 EXFUN (Fcurrent_active_maps, 2); |
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
36 extern Lisp_Object access_keymap P_ ((Lisp_Object, Lisp_Object, int, int, int)); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
37 extern Lisp_Object get_keyelt P_ ((Lisp_Object, int)); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
38 extern Lisp_Object get_keymap P_ ((Lisp_Object, int, int)); |
83420
521d3f18b3d1
Reimplement terminal parameters in C; clean up term.c, create terminal.c.
Karoly Lorentey <lorentey@elte.hu>
parents:
64770
diff
changeset
|
39 EXFUN (Fset_keymap_parent, 2); |
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
40 extern void describe_map_tree P_ ((Lisp_Object, int, Lisp_Object, Lisp_Object, |
60068
3e2faa2a85ed
(describe_map_tree): Change decl.
Richard M. Stallman <rms@gnu.org>
parents:
54926
diff
changeset
|
41 char *, int, int, int, int)); |
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
42 extern int current_minor_maps P_ ((Lisp_Object **, Lisp_Object **)); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
43 extern void initial_define_key P_ ((Lisp_Object, int, char *)); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
44 extern void initial_define_lispy_key P_ ((Lisp_Object, char *, char *)); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
45 extern void syms_of_keymap P_ ((void)); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
46 extern void keys_of_keymap P_ ((void)); |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
47 |
50797
5b0873c0b734
(map_keymap_function_t): New type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49757
diff
changeset
|
48 typedef void (*map_keymap_function_t) |
81791
98732c4676bc
(map_keymap_function_t): More informative prototype.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
81609
diff
changeset
|
49 P_ ((Lisp_Object key, Lisp_Object val, Lisp_Object args, void* data)); |
50797
5b0873c0b734
(map_keymap_function_t): New type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
49757
diff
changeset
|
50 extern void map_keymap P_ ((Lisp_Object map, map_keymap_function_t fun, Lisp_Object largs, void* cargs, int autoload)); |
94005
d3bf833831d6
* keymap.h (map_keymap_canonical): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
51 extern void map_keymap_canonical (Lisp_Object map, |
d3bf833831d6
* keymap.h (map_keymap_canonical): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
52 map_keymap_function_t fun, |
d3bf833831d6
* keymap.h (map_keymap_canonical): Declare.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
87649
diff
changeset
|
53 Lisp_Object args, void *data); |
39691
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
54 |
27fe3d5767ed
New file. Extracted from lisp.h.
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
diff
changeset
|
55 #endif |
52401 | 56 |
57 /* arch-tag: 7400d5a1-ef0b-43d0-b366-f4d678bf3ba2 | |
58 (do not change this comment) */ |