annotate runtime/doc/arabic.txt @ 34074:1629cc65d78d v9.1.0006

patch 9.1.0006: is*() and to*() function may be unsafe Commit: https://github.com/vim/vim/commit/184f71cc6868a240dc872ed2852542bbc1d43e28 Author: Keith Thompson <Keith.S.Thompson@gmail.com> Date: Thu Jan 4 21:19:04 2024 +0100 patch 9.1.0006: is*() and to*() function may be unsafe Problem: is*() and to*() function may be unsafe Solution: Add SAFE_* macros and start using those instead (Keith Thompson) Use SAFE_() macros for is*() and to*() functions The standard is*() and to*() functions declared in <ctype.h> have undefined behavior for negative arguments other than EOF. If plain char is signed, passing an unchecked value from argv for from user input to one of these functions has undefined behavior. Solution: Add SAFE_*() macros that cast the argument to unsigned char. Most implementations behave sanely for negative arguments, and most character values in practice are non-negative, but it's still best to avoid undefined behavior. The change from #13347 has been omitted, as this has already been separately fixed in commit ac709e2fc0db6d31abb7da96f743c40956b60c3a (v9.0.2054) fixes: #13332 closes: #13347 Signed-off-by: Keith Thompson <Keith.S.Thompson@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Thu, 04 Jan 2024 21:30:04 +0100
parents 4635e43f2c6f
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
34057
4635e43f2c6f patch 9.1.0000: Vim 9.1 release
Christian Brabandt <cb@256bit.org>
parents: 29314
diff changeset
1 *arabic.txt* For Vim version 9.1. Last change: 2021 Jun 22
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 VIM REFERENCE MANUAL by Nadim Shaikli
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 Arabic Language support (options & mappings) for Vim *Arabic*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 *E800*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 In order to use right-to-left and Arabic mapping support, it is
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
12 necessary to compile Vim with the |+arabic| feature.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 These functions have been created by Nadim Shaikli <nadim-at-arabeyes.org>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
16 It is best to view this file with these settings within Vim's GUI: >
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 :set encoding=utf-8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 :set arabicshape
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 Introduction
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 ------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 Arabic is a rather demanding language in which a number of special
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 features are required. Characters are right-to-left oriented and
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
26 ought to appear as such on the screen (i.e. from right to left).
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 Arabic also requires shaping of its characters, meaning the same
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 character has a different visual form based on its relative location
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
29 within a word (initial, medial, final or stand-alone). Arabic also
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30 requires two different forms of combining and the ability, in
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 certain instances, to either superimpose up to two characters on top
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 of another (composing) or the actual substitution of two characters
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 into one (combining). Lastly, to display Arabic properly one will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 require not only ISO-8859-6 (U+0600-U+06FF) fonts, but will also
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35 require Presentation Form-B (U+FE70-U+FEFF) fonts both of which are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 subsets within a so-called ISO-10646-1 font.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 The commands, prompts and help files are not in Arabic, therefore
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 the user interface remains the standard Vi interface.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 Highlights
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 ----------
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
44 o Editing left-to-right files as in the original Vim hasn't changed.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
45
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
46 o Viewing and editing files in right-to-left windows. File
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
47 orientation is per window, so it is possible to view the same
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48 file in right-to-left and left-to-right modes, simultaneously.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
49
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
50 o No special terminal with right-to-left capabilities is required.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 The right-to-left changes are completely hardware independent.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 Only Arabic fonts are necessary.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
54 o Compatible with the original Vim. Almost all features work in
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 right-to-left mode (there are liable to be bugs).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 o Changing keyboard mapping and reverse insert modes using a single
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58 command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60 o Toggling complete Arabic support via a single command.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
62 o While in Arabic mode, numbers are entered from left to right. Upon
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 entering a none number character, that character will be inserted
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 just into the left of the last number.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 o Arabic keymapping on the command line in reverse insert mode.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
68 o Proper Bidirectional functionality is possible given Vim is
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 started within a Bidi capable terminal emulator.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
70
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
71
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
72 Arabic Fonts *arabicfonts*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
73 ------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
74
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
75 Vim requires monospaced fonts of which there are many out there.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 Arabic requires ISO-8859-6 as well as Presentation Form-B fonts
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 (without Form-B, Arabic will _NOT_ be usable). It is highly
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78 recommended that users search for so-called 'ISO-10646-1' fonts.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 Do an Internet search or check www.arabeyes.org for further
21499
3a1ed539ae2a Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
80 info on where to obtain the necessary Arabic fonts.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 Font Installation
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 -----------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 o Installation of fonts for X Window systems (Unix/Linux)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
87
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
88 Depending on your system, copy your_ARABIC_FONT file into a
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
89 directory of your choice. Change to the directory containing
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
90 the Arabic fonts and execute the following commands:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
91
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
92 % mkfontdir
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 % xset +fp path_name_of_arabic_fonts_directory
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 Usage
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 -----
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
98 Prior to the actual usage of Arabic within Vim, a number of settings
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 need to be accounted for and invoked.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 o Setting the Arabic fonts
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
103 + For Vim GUI set the 'guifont' to your_ARABIC_FONT. This is done
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
104 by entering the following command in the Vim window.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106 :set guifont=your_ARABIC_FONT
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 NOTE: the string 'your_ARABIC_FONT' is used to denote a complete
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
109 font name akin to that used in Linux/Unix systems.
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
110 (e.g. -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso10646-1)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 You can append the 'guifont' set command to your .vimrc file
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 in order to get the same above noted results. In other words,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 you can include ':set guifont=your_ARABIC_FONT' to your .vimrc
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115 file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
117 + Under the X Window environment, you can also start Vim with
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 '-fn your_ARABIC_FONT' option.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 o Setting the appropriate character Encoding
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121 To enable the correct Arabic encoding the following command needs
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
122 to be appended,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 :set encoding=utf-8
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
125 <
21499
3a1ed539ae2a Update runtime files.
Bram Moolenaar <Bram@vim.org>
parents: 18879
diff changeset
126 to your .vimrc file (entering the command manually into your Vim
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127 window is highly discouraged). In short, include ':set
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128 encoding=utf-8' to your .vimrc file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130 Attempts to use Arabic without UTF-8 will result the following
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 warning message,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 *W17* >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 Arabic requires UTF-8, do ':set encoding=utf-8'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136 o Enable Arabic settings [short-cut]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
137
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
138 In order to simplify and streamline things, you can either invoke
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
139 Vim with the command-line option,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
140
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
141 % vim -A my_utf8_arabic_file ...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
142
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
143 or enable 'arabic' via the following command within Vim
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
144 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
145 :set arabic
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
146 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
147 The two above noted possible invocations are the preferred manner
2642
840c3cadb842 Updated runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2577
diff changeset
148 in which users are instructed to proceed. Barring an enabled 'termbidi'
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
149 setting, both command options:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
150
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
151 1. set the appropriate keymap
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
152 2. enable the deletion of a single combined pair character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
153 3. enable rightleft mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
154 4. enable rightleftcmd mode (affecting the command-line)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
155 5. enable arabicshape mode (do visual character alterations)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
156
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
157 You may also append the command to your .vimrc file and simply
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
158 include ':set arabic' to it.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
159
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
160 You are also capable of disabling Arabic support via
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
161 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
162 :set noarabic
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
163 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
164 which resets everything that the command had enabled without touching
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
165 the global settings as they could affect other possible open buffers.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
166 In short the 'noarabic' command,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
167
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
168 1. resets to the alternate keymap
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
169 2. disables the deletion of a single combined pair character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
170 3. disables rightleft mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
171
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
172 NOTE: the 'arabic' command takes into consideration 'termbidi' for
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
173 possible external bi-directional (bidi) support from the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
174 terminal ("mlterm" for instance offers such support).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
175 'termbidi', if available, is superior to rightleft support
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
176 and its support is preferred due to its level of offerings.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
177 'arabic' when 'termbidi' is enabled only sets the keymap.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
178
25056
43593a5d873f Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 21499
diff changeset
179 For vertical window isolation while setting 'termbidi' an LTR
43593a5d873f Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 21499
diff changeset
180 vertical separator like "l" or "𝖨" may be used. It may also be
43593a5d873f Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 21499
diff changeset
181 hidden by changing its color to the foreground color: >
43593a5d873f Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 21499
diff changeset
182 :set fillchars=vert:l
43593a5d873f Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 21499
diff changeset
183 :hi VertSplit ctermbg=White
43593a5d873f Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 21499
diff changeset
184 < Note that this is a workaround, not a proper solution.
43593a5d873f Update runtime files
Bram Moolenaar <Bram@vim.org>
parents: 21499
diff changeset
185
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
186 If, on the other hand, you'd like to be verbose and explicit and
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
187 are opting not to use the 'arabic' short-cut command, here's what
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
188 is needed (i.e. if you use ':set arabic' you can skip this section) -
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
189
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
190 + Arabic Keymapping Activation
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
191
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
192 To activate the Arabic keymap (i.e. to remap your English/Latin
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
193 keyboard to look-n-feel like a standard Arabic one), set the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
194 'keymap' command to "arabic". This is done by entering
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
195 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
196 :set keymap=arabic
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
197 <
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
198 in your Vim window. You can also append the 'keymap' set command to
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
199 your .vimrc file. In other words, you can include ':set keymap=arabic'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
200 to your .vimrc file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
201
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
202 To turn toggle (or switch) your keymapping between Arabic and the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
203 default mapping (English), it is advised that users use the 'CTRL-^'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
204 key press while in insert (or add/replace) mode. The command-line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
205 will display your current mapping by displaying an "Arabic" string
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
206 next to your insertion mode (e.g. -- INSERT Arabic --) indicating
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
207 your current keymap.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
208
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
209 + Arabic deletion of a combined pair character
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
210
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
211 By default Vim has the 'delcombine' option disabled. This option
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
212 allows the deletion of ALEF in a LAM_ALEF (LAA) combined character
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
213 and still retain the LAM (i.e. it reverts to treating the combined
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
214 character as its natural two characters form -- this also pertains
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
215 to harakat and their combined forms). You can enable this option
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
216 by entering
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
217 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
218 :set delcombine
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
219 <
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
220 in our Vim window. You can also append the 'delcombine' set command
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
221 to your .vimrc file. In other words, you can include ':set delcombine'
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
222 to your .vimrc file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
223
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
224 + Arabic right-to-left Mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
225
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
226 By default Vim starts in Left-to-right mode. 'rightleft' is the
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
227 command that allows one to alter a window's orientation - that can
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
228 be accomplished via,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
229
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
230 - Toggling between left-to-right and right-to-left modes is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
231 accomplished through ':set rightleft' and ':set norightleft'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
232
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
233 - While in Left-to-right mode, enter ':set rl' in the command line
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
234 ('rl' is the abbreviation for rightleft).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
235
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
236 - Put the ':set rl' line in your '.vimrc' file to start Vim in
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
237 right-to-left mode permanently.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
238
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
239 + Arabic right-to-left command-line Mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
240
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
241 For certain commands the editing can be done in right-to-left mode.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
242 Currently this is only applicable to search commands.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
243
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
244 This is controlled with the 'rightleftcmd' option. The default is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
245 "search", which means that windows in which 'rightleft' is set will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
246 edit search commands in right-left mode. To disable this behavior,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
247 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
248 :set rightleftcmd=
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
249 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
250 To enable right-left editing of search commands again,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
251 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
252 :set rightleftcmd&
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
253 <
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
254 + Arabic Shaping Mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
255
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
256 To activate the required visual characters alterations (shaping,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
257 composing, combining) which the Arabic language requires, enable
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
258 the 'arabicshape' command. This is done by entering
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
259 >
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
260 :set arabicshape
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
261 <
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
262 in our Vim window. You can also append the 'arabicshape' set
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
263 command to your .vimrc file. In other words, you can include
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
264 ':set arabicshape' to your .vimrc file.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
265
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
266
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
267 Keymap/Keyboard *arabickeymap*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
268 ---------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
269
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
270 The character/letter encoding used in Vim is the standard UTF-8.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
271 It is widely discouraged that any other encoding be used or even
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
272 attempted.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
273
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
274 Note: UTF-8 is an all encompassing encoding and as such is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
275 the only supported (and encouraged) encoding with
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
276 regard to Arabic (all other proprietary encodings
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
277 should be discouraged and frowned upon).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
278
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
279 o Keyboard
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
280
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
281 + CTRL-^ in insert/replace mode toggles between Arabic/Latin mode
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
282
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
283 + Keyboard mapping is based on the Microsoft's Arabic keymap (the
2409
0ca06a92adfb Add support for horizontal scroll wheel. (Bjorn Winckler)
Bram Moolenaar <bram@vim.org>
parents: 2345
diff changeset
284 de facto standard in the Arab world):
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
285
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
286 +---------------------------------------------------------------------+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
287 |! |@ |# |$ |% |^ |& |* |( |) |_ |+ || |~ ّ |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
288 |1 ١ |2 ٢ |3 ٣ |4 ٤ |5 ٥ |6 ٦ |7 ٧ |8 ٨ |9 ٩ |0 ٠ |- |= |\ |` ذ |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
289 +---------------------------------------------------------------------+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
290 |Q َ |W ً |E ُ |R ٌ |T لإ |Y إ |U ` |I ÷ |O x |P ؛ |{ < |} > |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
291 |q ض |w ص |e ث |r ق |t ف |y غ |u ع |i ه |o خ |p ح |[ ج |] د |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
292 +-----------------------------------------------------------+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
293 |A ِ |S ٍ |D [ |F ] |G لأ |H أ |J ـ |K ، |L / |: |" |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
294 |a ش |s س |d ي |f ب |g ل |h ا |j ت |k ن |l م |; ك |' ط |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
295 +------------------------------------------------------+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
296 |Z ~ |X ْ |C { |V } |B لآ |N آ |M ' |< , |> . |? ؟ |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
297 |z ئ |x ء |c ؤ |v ر |b لا |n ى |m ة |, و |. ز |/ ظ |
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
298 +-------------------------------------------------+
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300 Restrictions
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301 ------------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302
11473
bd6ff5246c71 Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 10198
diff changeset
303 o Vim in its GUI form does not currently support Bi-directionality
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
304 (i.e. the ability to see both Arabic and Latin intermixed within
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
305 the same line).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
306
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
307
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
308 Known Bugs
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
309 ----------
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
310
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
311 There is one known minor bug,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
312
237
73354c21f1e4 updated for version 7.0066
vimboss
parents: 7
diff changeset
313 1. If you insert a haraka (e.g. Fatha (U+064E)) after a LAM (U+0644)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
314 and then insert an ALEF (U+0627), the appropriate combining will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
315 not happen due to the sandwiched haraka resulting in something
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
316 that will NOT be displayed correctly.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
317
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
318 WORK-AROUND: Don't include harakats between LAM and ALEF combos.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
319 In general, don't anticipate to see correct visual
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
320 representation with regard to harakats and LAM+ALEF
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
321 combined characters (even those entered after both
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
322 characters). The problem noted is strictly a visual
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
323 one, meaning saving such a file will contain all the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
324 appropriate info/encodings - nothing is lost.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
325
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
326 No other bugs are known to exist.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
327
14421
2f7e67dd088c Update runtime files.
Christian Brabandt <cb@256bit.org>
parents: 13963
diff changeset
328 vim:tw=78:ts=8:noet:ft=help:norl: