merge appease-lintian change from pax/mksh repos
[alioth/jupp.git] / HINTS
1 This documentation should go elsewhere, but I haven't gotten around to it
2 yet.
3
4 GCC
5 ---
6
7 Using -fomit-frame-pointer may miscompile code at least in gcc 3.4.6, see
8 http://article.gmane.org/gmane.os.miros.cvs/11607 for details.
9
10 Disable the following warnings; the code doesn't cope with it:
11 -Wno-pointer-sign
12 -Wno-unused-parameter
13 -Wno-missing-field-initializers
14 -Wno-old-style-definition -Wno-strict-prototypes
15 -Wno-cast-qual
16 -Wno-missing-prototypes -Wno-missing-declarations
17
18 Additionally, -Wstrict-overflow bitches around if you enable it.
19 This needs verification and possibly fixes.
20
21 UTF-8
22 -----
23
24 Do note that the joerc files must be written using the 8-bit encoding
25 (probably ISO-8859-1), not UTF-8. Syntax files, on the other hand,
26 absolutely must be written in UTF-8 since jupp29.
27
28 JOE now handles two classes of character sets: UTF-8 and byte coded (like
29 ISO-8859-1).  It can not yet handle other major classes such as UTF-16 or
30 GB2312. There are other restrictions: character sets must use LF (0x0A) or
31 CR-LF (0x0D - 0x0A) as line terminators, space must be 0x20 and tab must be
32 0x09. Basically, the files must be UNIX or MS-DOS compatible text files.
33
34 This means EBCDIC will not work properly (but you would need to handle fixed
35 record length lines anyway) and character sets which use CR terminated lines
36 (MACs) will not yet work.
37
38 The terminal and the file can have different encodings.  JOE will translate
39 between the two.  Currently, one of the two must be UTF-8 for translation to
40 work.
41
42 The character set for the terminal and the default character set assumed for
43 files is determined by the 'LC_ALL' environment variable (and if that's not
44 set, LC_CTYPE and LANG are also checked).
45
46 For example, if LC_ALL is set to:
47
48         de_DE
49
50 Then the character set will be ISO-8859-1.
51
52 If LC_ALL is set to:
53
54         de_DE.UTF-8
55
56 The character set will UTF-8.
57
58 Hit ^T E to change the coding for the file.  Hit <tab> <tab> at this prompt
59 to get a list of available codings.  There are a number of built-in
60 character sets, plus you can install character sets in the ~/.jupp/charmaps
61 and /usr/local/etc/joe/charmaps directories.
62
63 Check: /usr/share/i18n/charmaps for example character set files.  Only
64 byte oriented character sets will work.  Also, the file should not be
65 gzipped (all of the charmap file in /usr/share/i18n/charmaps on my computer
66 were compressed).  The parser is very bad, so basically the file has to look
67 exactly like the example one in /usr/local/etc/joe/charmaps.
68
69 You can hit ^K <space> to see the current character set.
70
71 You can hit ` x to enter a Unicode character if the file coding is UTF-8.
72
73 Programming
74 -----------
75
76         Try ^K , and ^K .  These keys select the current block (based on
77 indentation) and shift it left or right by the -istep and -indentc.
78
79 Selecting blocks
80 ----------------
81
82         The "classic" way is to hit ^K B at the beginning and ^K K at the
83 end.  These set pointers called markb and markk.  Once these are set you
84 can jump to markb with ^[ b and jump to markk with ^[ k.
85
86         New way no.1: hit Ctrl-space to start selecting, move the cursor,
87 then hit Ctrl-space to complete the block.  Hit Ctrl-space in the block to
88 cancel it.  Hit Ctrl-space outside of the block to start selecting a new
89 one.  This uses the "toggle_marking" function.  Also any block command will
90 complete the block. (joe flavour only)
91
92         New way no.2: hit Ctrl-rtarw to start selecting rightward.  Each
93 time you hit Ctrl-rtarw, the block is extended one more to the right.  This
94 uses a simple macro: "begin_marking,rtarw,toggle_marking".  Unfortunately,
95 there is no standard way to get the keysequence given by the terminal
96 emulator when you hit Ctrl-rtarw.  Instead you have to determine this
97 sequence yourself and enter it directly in the joerc file.  Some examples
98 are given for xterm and gnome-terminal.  Hit ` rtarw to have the sequence
99 shown on your screen.  Note that Putty uses ^[ ^[ [ C which will not appear
100 with ` rtarw (also ^[ ^[ is set book mark, so you need to unbind it to do
101 this in Putty). (joe flavour only)
102
103         Also you can hit Ctrl-delete to cut and Ctrl-insert to paste if the
104 sequence for these keys are known. (joe flavour only)
105
106         New way No.3: press down shift, then move the cursor with the
107 arrow keys or, optionally with ctrl, the Home and End keys; release the
108 shift key when done and remember that the cursor indicator on screen is
109 not part of the selection. (all flavours)
110
111         Also, you can pass "-keymap cua" on the command line to change
112 the key bindings for ^Z (Undo), ^X (Cut), ^C (Copy), ^V (Paste) as in
113 contemporary GUI editors. (joe, rjoe, jstar, jupp flavours only)
114
115         Using Picture mode and Rectangle mode may help with that.
116
117 Hex edit mode
118 -------------
119
120 When this mode is selected (either put -hex on the command line, or look for
121 "Hex edit mode" after hitting ^T), the buffer is displayed as a hex dump,
122 but all of the editing commands operate the same way.  It is most useful to
123 select overtype mode in conjunction with hex dump (hit ^T T).  Then typing
124 will not insert.
125
126 - To enter the hex byte 0xF8 type ` x F 8
127
128 - You can use ^KC to copy a block as usual.  If overtype mode is selected,
129   the block will overwrite the destination data without changing the size of
130   the file.  Otherwise it inserts. 
131
132 - Hit ESC x byte <Enter>, to jump to a particular byte offset.  Hex values
133   can be entered into this prompt like this: 0x2000.
134
135 - Search, incremental search, and search & replace all operate as usual.
136
137 ___________________________________________________________________
138 $MirOS: contrib/code/jupp/HINTS,v 1.10 2017/01/11 22:04:31 tg Exp $