This file is indexed.

/usr/lib/s9e.help is in scheme9 2013.11.26-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
 ____  ____   ____  ____  __  _____  ____  ____
/ ___)/ __ \ |  __)| __ \(  )(_   _)/    \| __ \           By Nils M Holm, 2012
\___ \\__  / |  __)|    /|  |  | | /  /  /|    /           In the Public Domain
(____/(___/  |____)|___/ |__|  |_| \____/ |_|\_\
                                                           [^L][q] closes help
----- Cursor Motion --------  ----- Files -----------
    [^P]       Previous       [^L][a]  Save as         ----- Buffers ----------
[^B][^N][F] Backw./Next/Forw. [^L][e]  Edit file       [^L][k]  Kill buffers
 [^A] [^E]  Beg./End of line  [^L][r]  Read to region  [^L][o]  Open buffer
 [^X] [^W]  Prev./Next word   [^L][s]  Save buffer     [^L][v]  View buffers
 [^T] [^V]  Prev./Next page   [^L][w]  Write region    [^Q]     Rotate buffers
 [^L][b]    Bottom of file    [^L][q]  Close/quit    
 [^L][t]    Top of file       [^L][y]  Sync buffers    ----- Search -----------
 [^L][g]    Go to line        [^L][z]  Save+exit       [^L][l]  Locate text
                                                       [^L][n]  Locate next
----- Insert / Delete ------  ----- Miscellanea -----  [^L][x]  Exchange
[^S]  Begin/end/clear region   [TAB]   Auto-complete
[^D]  Delete region/char      [^L][^L] Refresh screen  ----- Scheme -----------  
[^Y]  Insert region           [^L][i]  Indent region   [^Z][c]  Compile buffer
[^O]  Copy region             [^L][f]  Run filter      [^Z][e]  Evaluate expr.
[^H]  Del. region/char left   [^L][p]  Properties      [^Z][f]  Format region
[^K]  Del. to eol / line       [^U]    Undo commands   [^Z][p]  Pretty-print
[^Z][^Z]  Mark expression      [^R]    Redo commands   [^Z][s]  Scheme REPL
-------------------------------------------------------------------------------

::::: THE STATUS LINE :::::::::::::::::::::::::::::::::::::::::::::::::::::::::

        The bottom line contains various information about the current buffer:

        +-------------------------------------------------+
        |   aRmr  L:line/total C:column  [buffer name]    |
        +-------------------------------------------------+

        The flag characters on the left indicate "a": auto-load, "R": region
        (a region is currently marked), "m": modified, and "r": read-only.

::::: INSERTING AND DELETING TEXT :::::::::::::::::::::::::::::::::::::::::::::

Mark a Region
        To mark a region of text, move the cursor to one end of the region,
        press [^S] ([control] + [s]), move to the other end and press [^S]
        again. Pressing [^S] a third time will unmark the region.
        The second [^S] can be omitted, and the desired operation can be
        performed directly instead.
        
        The [^Z][^Z] command marks the innermost parenthesized expression
        around the cursor.

Delete Text
        When a region is marked, pressing [^D] or [Backspace] will delete
        the region. With no region marked, [^D] will delete the character
        to the right and [Backspace] the character to the left. Deleting a
        region will automatically copy it to the copy buffer. The [DEL]
        key, if present, can be used instead of [^D].
        
        Pressing [^K] will delete all text up to end of the current line.
        When the cursor is already at the end of the current line, it will
        remove the entire line.

Insert Text
        Pressing [^Y] will insert the content of the copy buffer at the
        cursor location and mark it. [INS] can be used instead of [^Y].
        [^O] is short for [^D][^Y].

Auto-Completion
        Pressing the [TAB] at the end of a word will attempt to match the
        partial word to the left and replace it with one of the words
        contained in the file "$HOME/.s9fes/symbols".

        The S9SYMBOLS program from the S9fES distribution can be used to
        create a "symbols" file containing all Scheme and S9fES keywords.
        
        When [TAB] is pressed after a blank character or at the beginning of
        a line, enough blanks will be inserted to move the cursor to the next
        "tab stop" (every 8'th column).
        
::::: SEARCHING AND REPLACING TEXT ::::::::::::::::::::::::::::::::::::::::::::

Searching
        Pressing [^L][l] ([^L] and then [l]) will prompt for a string to be
        searched in the current buffer. The string will be searched in the
        area between the current location and the end of the file. When a
        match is found, [^N] (or [Down Arrow]) will move to the next match
        and [^P] (or [Up Arrow]) will move to the previous match. Pressing
        any other key will return to edit mode.

        Pressing [^L][n] will locate the next occurrence of a previous match
        without entering search mode.

Manual Text Exchange
        The [^L][x] command will prompt for some old text to be searched for
        and some new text to replace the old text. When a match is found,
        S9E will present the following options:

        CR = replace  Pressing [CR] ([ENTER]) will replace the match found
                      and keep searching;
        space = skip  [Space] will not replace the match and keep searching;
        q = quit      [q] will not replace the match and stop;
        l = last      [l] will replace the match and top
        a = all       [a] will replace all subsequent matches without any
                      further interaction with the user.

Automatic Text Exchange
        When a region is marked when the [^L][x] command is started, then
        all occurrences inside of the region will be replaced without any
        interaction.

::::: LOADING, SAVING, AND EXITING ::::::::::::::::::::::::::::::::::::::::::::

        [^L][e] prompts for a file name, loads it into the current buffer,
                and associates the buffer with the new file. When the
                current buffer is modified, a warning will print. 
        
        [^L][s] is the principal "save" command. It saves the text in the
                current buffer and prompts for a name when the buffer is
                anonymous.

        [^L][a] ("save as") saves the buffer under a different name.

        [^L][y] synchronizes (saves) all buffers.
        
        [^L][q] quits without saving any buffers. A warning will display,
                if there are any unsaved buffers.

        [^L][z] saves the current buffer and exits.

        [^L][k] kills all buffers and exits. All unsaved texts in all
                buffers will be lost. Use with care!

::::: PROCESSING REGIONS ::::::::::::::::::::::::::::::::::::::::::::::::::::::

        [^L][r] reads a file and inserts its content at the cursor location.
                The inserted region will be marked.

        [^L][w] writes the marked region to a file.

        [^L][f] sends a region to an external program (a filter) and then
                replaces the region with the output of the filter.

        [^L][i] enters indent mode. In this mode, the marked region can be
                indented by pressing [^F] (or [Right Arrow]) and outdented
                with [^B] (or [Left Arrow]). Any other key returns to edit
                mode.

::::: MULTIPLE BUFFERS ::::::::::::::::::::::::::::::::::::::::::::::::::::::::

        [^L][o] opens an empty buffer and switches to it. Use [^L][e] to
                load a file into the buffer.

        [^L][q] closes the current buffer. When the buffer is modified, a
                warning will display. When the buffer being closed is the
                only buffer, S9E will exit.

        [^Q]    "rotates" the buffers, i.e. switches to the next buffer in
                the list of buffers, starting over when reaching the end.

        [^L][v] lists all buffers, their lengths, and their attributes.
                Navigation keys can be used to move through the buffer.
                Pressing [CR] / [ENTER] will switch to the currently marked
                buffer, pressing [q] will exit without switching. 

::::: UNDO AND REDO :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

        [^U] This command will successively undo all changes to the current
             buffer up to the point where the buffer was created. This is
             what is called "unlimited undo" in tech speak.

        [^R] This command will re-apply changes that have been undone
             immediately before. Like "undo", "redo" is theoretically
             unlimited, but applying a change manually (not via "undo" or
             "redo") will flush the redo buffer immediately, so [^R] works
             only as long as no new changes are applied.

::::: SCHEME INTERFACE ::::::::::::::::::::::::::::::::::::::::::::::::::::::::

        [^Z][s] start Scheme REPL. This command starts a Scheme process and
                connects it to a special buffer called the "REPL buffer".
                All output generates by the Scheme system will be appended to
                that buffer. The [^Z][s] command also switches to the REPL
                buffer. When the REPL is already active, the command simply
                switches to the existing REPL.

        [^Z][c] compile the current buffer. All lines in the current buffer
                will be send to the Scheme REPL. Output received from the
                compiler, if any, will be sent to the REPL buffer.

        [^Z][e] evaluate expression (also [^J]). The innermost parenthesized
                expression will be marked and sent to the REPL. The result
                will be appended to the REPL buffer.
                
                When there are buffers with the "auto-load" property set
                (see "properties", below), these buffers will be sent to the
                REPL before the expression to evaluate.

        [^Z][f] format expression.
        [^Z][p] pretty-print expression. Both of these commands pretty-print
                the marked region. The difference between these commands is
                that [^Z][f] formats regions as lists (data) and [^Z][p]
                formats regions as Scheme programs.

::::: PROPERTIES ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

        Properties control the behavior of the editor.

        [^L][p] invokes the property editor. The editor prompts for a
                property to modify, parses the command entered and exits.
                When an empty command is entered, it opens a buffer that
                lists all properties and their current settings.

                Normal navigation works in the property buffer. In addition,
                [CR] / [ENTER] will pass the current property to the prompt,
                and [q] will return to edit mode.

        The following properties exist. Each property is either a string, a
        number, or a flag. Entering the name of a flag will set the flag,
        entering no<flag> or no-<flag> (where <flag> is the name of the flag)
        will clear the flag. For instance, entering no-auto-indent (or noai)
        will clear the "auto-indent" flag.
        
        Other properties are changed by entering their name, an equal sign,
        and the new value, e.g.: "rt=10" or "sc=foo -q". No quotes may be
        used to delimit string properties.
        
        "Global" properties affect all buffers, "local" ones affect only the
        current buffer.
        
        auto-indent (ai) global flag
                When set, pressing [CR] (or [ENTER]) will insert leading
                blanks to a new line to make it start in the same column as
                the preceding line. When the cursor is in the blank space
                indenting the current line, the new line will only be
                indented up to the cursor position.

        auto-load (al) local flag
                Buffers with the "auto-load" flag set will be automatically
                re-compiled (i.e. sent to the REPL) whenever an expression
                is evaluated with the [^Z][e] or [^J] command.

                The first buffer opened by S9E has the auto-load flag set by
                default. All subsequently opened buffers have it cleared.

        color-text   (ct) global string
        color-region (cr) global string
        color-status (cs) global string
        color-info   (ci) global string
        color-error  (ce) global string
        color-paren  (cp) global string
                These properties specify the colors to be used in the
                corresponding parts of the editor. Valid color values are
                black, blue, green, cyan, red, magenta, yellow, gray, and
                white. White and gray denote the same color. Colors are
                specified as "foreground/background", e.g. "green/black"
                would mean green letters on black background.

        error-bell (eb) global flag
                When activated, an audible bell will ring when a motion
                command would move the cursor outside of the buffer or when
                an error message displays.

        help-reminder (hr) global flag
                Display a brief reminder of the principal command key ([^L])
                in the status line. This text will reduce the length of the
                buffer name, which is also displayed in the status line.

        load-timeout (lt) global number
                This is the number of seconds to wait before reporting an
                error ("run time limit exceeded") when compiling/loading
                buffers with the [^Z][c] command or via the auto-load flag.

        read-only (ro) local flag
                A buffer with this flag set cannot be saved or modified. This
                will happen automatically when
                - the "-r" command line option is passed to the editor script;
                - the 'read-only option is passed to the S9E procedure;
                - an unwritable file is loaded to a buffer.

        repl-command (rc) global string
                This string contains the command that will start the Scheme
                REPL in the background. When available, the command should
                include an option that makes the Scheme system "silent",
                otherwise prompts and informational messages emitted by the
                Scheme system will appear in the REPL buffer.

        repl-init (ri) global string
                The content of this string will be sent to the Scheme system
                immediately after starting it. It can be used, for example,
                to set options that cannot be specified on the command line.
                When the init command is more complex, write them to a file
                and insert a corresponding "load" command into the repl-init
                string.

        repl-timeout (rt) global number
                This is the number of seconds to wait before reporting an
                error ("run time limit exceeded") when evaluating an
                expression with the [^Z][e] or [^J] command.

        sense-case (sc) global flag
                When set, the search ([^L][l], [^L][n]) and exchange
                ([^L][x]) commands will distinguish between upper and lower
                case letters. Otherwise, upper and lower case letters will
                be considered to be equal.

        show-match (sm) global flag
                When set, the editor will highlight matching parentheses and
                brackets when moving the cursor onto either of them.

::::: CONFIGURATION FILE ::::::::::::::::::::::::::::::::::::::::::::::::::::::

        When a file named "$HOME/.s9fes/s9e-config" exists, property
        commands will be read from that file when S9E starts. The
        following lines would set up the default options:

                auto-indent
                no-auto-load
                color-text=white/blue
                color-region=white/red
                color-status=blue/cyan
                color-info=white/green
                color-error=black/yellow
                color-paren=blue/yellow
                error-bell
                help-reminder
                load-timeout=10
                no-read-only
                repl-command=s9 -q
                repl-init=
                repl-timeout=5
                no-sense-case
                show-match

::::: USAGE :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

        A typical S9E session looks like this:
       
        1) The first buffer holds the Scheme program to edit.
       
        2) The REPL buffer ([^Z][s]) is used to test the program in the
           first buffer.

        3) When an expression in the REPL buffer is evaluated ([^J], the
           first buffer is automatically re-loaded, because it has the
           "auto-load" flag set.

        4) Additional definitions can be added to the Scheme process by
           opening new buffers ([^L][o]), loading code into them ([^L][e]),
           and compiling them ([^Z][c]) or setting their "auto-load" flags
           ([^L][p]al[ENTER]).

        So editing of code is primarily done in an auto-loading buffer,
        while testing is done in the REPL buffer.

::::: CAVEATS :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

        - Tabs are expanded to spaces when loading a file.

        - Files in DOS format (CR,LF separators) are currently unsupported.

        - Multiple buffers with the "auto-load" flag set will be loaded in
          no specific order.

-------- End of S9E help file -------------------------------------------------