mlang pushed a commit to branch externals/chess in repository elpa. commit 933ef4d46b638409c31ced405ef3f0049203368c Author: Mario Lang <ml...@delysid.org> Date: Fri Jun 6 11:26:39 2014 +0200
doc/chess.texi: Steal parts of Shell mode documentation to explain comint-based chess-ics-mode. --- chess.info | 317 +++++++++++++++++++++++++++++++++++++++++++++++++++----- doc/chess.texi | 293 ++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 566 insertions(+), 44 deletions(-) diff --git a/chess.info b/chess.info index 7d480da..26b91d1 100644 --- a/chess.info +++ b/chess.info @@ -1497,7 +1497,7 @@ File: chess.info, Node: Internet Chess Servers, Next: Concept Index, Prev: En 5 Internet Chess Servers ************************ -Based on the services provided above, there is also a speical mode for +Based on the services provided above, there is also a special mode for communication with Internet Chess Servers. On an Internet Chess Server you can seek to play against other human @@ -1521,11 +1521,13 @@ variable: * Menu: * Connecting to a server:: +* Chess ICS Mode:: +* Command History:: * Seeking an opponent for a new game:: * The sought game display:: -File: chess.info, Node: Connecting to a server, Next: Seeking an opponent for a new game, Prev: Internet Chess Servers, Up: Internet Chess Servers +File: chess.info, Node: Connecting to a server, Next: Chess ICS Mode, Prev: Internet Chess Servers, Up: Internet Chess Servers 5.1 Connecting to a server ========================== @@ -1536,15 +1538,217 @@ To open a new connection to an Internet Chess Server, use: password-or-filename helper &rest helper-args Connect to an Internet Chess Server. - Internet Chess Server support is a derivative of Comint mode, a -general-purpose mode for communicating with interactive subprocesses. A -history of previously entered commands at the ICS prompt is available -with 'M-p' and 'M-n'. See COMINT-MODE-MAP. + +File: chess.info, Node: Chess ICS Mode, Next: Command History, Prev: Connecting to a server, Up: Internet Chess Servers + +5.2 Chess ICS Mode +================== + +The major mode for ICS buffers is Chess ICS mode. Many of its special +commands are bound to the 'C-c' prefix. Here is a list of ICS mode +commands: + +'<RET>' + Send the current line as input to the server ('comint-send-input'). + Any prompt at the beginning of the line is omitted. If point is at + the end of buffer, this is like submitting the command line in an + ordinary interactive shell. However, you can also invoke <RET> + elsewhere in the ICS buffer to submit the current line as input. + +'C-d' + Either delete a character or send EOF (End Of File) + ('comint-delchar-or-maybe-eof'). Typed at the end of the ICS + buffer, this sends EOF to the server and terminates the connection. + Typed at any other position in the buffer, this deletes a character + as usual. + +'C-c C-a' + Move to the beginning of the line, but after the prompt if any + ('comint-bol-or-process-mark'). If you repeat this command twice + in a row, the second time it moves back to the process mark, which + is the beginning of the input that you have not yet sent to the + server. (Normally that is the same place--the end of the prompt on + this line--but after 'C-c <SPC>' the process mark may be in a + previous line.) + +'C-c <SPC>' + Accumulate multiple lines of input, then send them together + ('comint-accumulate'). This command inserts a newline before + point, but does not send the preceding text as input to the + server--at least, not yet. Both lines, the one before this newline + and the one after, will be sent together (along with the newline + that separates them), when you type <RET>. + +'C-c C-u' + Kill all text pending at end of buffer to be sent as input + ('comint-kill-input'). If point is not at end of buffer, this only + kills the part of this text that precedes point. + +'C-c C-w' + Kill a word before point ('backward-kill-word'). + +'C-c C-o' + Delete the last batch of output from an ICS server command + ('comint-delete-output'). This is useful if a server command spews + out lots of output that just gets in the way. + +'C-c C-s' + Write the last batch of output from an ICS server command to a file + ('comint-write-output'). With a prefix argument, the file is + appended to instead. Any prompt at the end of the output is not + written. + +'C-c C-r' +'C-M-l' + Scroll to display the beginning of the last batch of output at the + top of the window; also move the cursor there + ('comint-show-output'). + +'C-c C-e' + Scroll to put the end of the buffer at the bottom of the window + ('comint-show-maximum-output'). + +'M-x comint-truncate-buffer' + This command truncates the ICS buffer to a certain maximum number + of lines, specified by the variable 'comint-buffer-maximum-size'. + Here's how to do this automatically each time you get output from + the server: + + (add-hook 'comint-output-filter-functions + 'comint-truncate-buffer) + + ICS mode is a derivative of Comint mode, a general-purpose mode for +communicating with interactive subprocesses. Most of the features of +ICS mode actually come from Comint mode, as you can see from the command +names listed above. + + +File: chess.info, Node: Command History, Next: Seeking an opponent for a new game, Prev: Chess ICS Mode, Up: Internet Chess Servers + +5.3 ICS Command History +======================= + +ICS buffers support two ways of repeating earlier commands. You can use +keys like those used for the minibuffer history; these work much as they +do in the minibuffer, inserting text from prior commands while point +remains always at the end of the buffer. You can move through the +buffer to previous inputs in their original place, then resubmit them or +copy them to the end. + +* Menu: + +* Ring: ICS Ring. Fetching commands from the history list. +* Shell History Copying:: -File: chess.info, Node: Seeking an opponent for a new game, Next: The sought game display, Prev: Connecting to a server, Up: Internet Chess Servers +File: chess.info, Node: ICS Ring, Next: Shell History Copying, Prev: Command History, Up: Command History + +5.3.1 ICS History Ring +---------------------- -5.2 Seeking an opponent for a new game +'M-p' +'C-<UP>' + Fetch the next earlier old ICS command. + +'M-n' +'C-<DOWN>' + Fetch the next later old ICS command. + +'M-r' + Begin an incremental regexp search of old ICS commands. + +'C-c C-x' + Fetch the next subsequent command from the history. + +'C-c .' + Fetch one argument from an old ICS command. + +'C-c C-l' + Display the buffer's history of ICS commands in another window + ('comint-dynamic-list-input-ring'). + + ICS buffers provide a history of previously entered commands. To +reuse commands from the history, use the editing commands 'M-p', 'M-n', +'M-r' and 'M-s'. These work just like the minibuffer history commands +(*note (emacs)Minibuffer History::), except that they operate within the +ICS buffer rather than the minibuffer. + + 'M-p' fetches an earlier ICS command to the end of the ICS buffer. +Successive use of 'M-p' fetches successively earlier commands, each +replacing any text that was already present as potential input. 'M-n' +does likewise except that it finds successively more recent ICS commands +from the buffer. 'C-<UP>' works like 'M-p', and 'C-<DOWN>' like 'M-n'. + + The history search command 'M-r' begins an incremental regular +expression search of previous ICS commands. After typing 'M-r', start +typing the desired string or regular expression; the last matching ICS +command will be displayed in the current line. Incremental search +commands have their usual effects--for instance, 'C-s' and 'C-r' search +forward and backward for the next match (*note (emacs)Incremental +Search::). When you find the desired input, type <RET> to terminate the +search. This puts the input in the command line. Any partial input you +were composing before navigating the history list is restored when you +go to the beginning or end of the history ring. + + Often it is useful to reexecute several successive ICS commands that +were previously executed in sequence. To do this, first find and +reexecute the first command of the sequence. Then type 'C-c C-x'; that +will fetch the following command--the one that follows the command you +just repeated. Then type <RET> to reexecute this command. You can +reexecute several successive commands by typing 'C-c C-x <RET>' over and +over. + + The command 'C-c .' ('comint-input-previous-argument') copies an +individual argument from a previous command, like '<ESC> .' in Bash. +The simplest use copies the last argument from the previous ICS command. +With a prefix argument N, it copies the Nth argument instead. Repeating +'C-c .' copies from an earlier ICS command instead, always using the +same value of N (don't give a prefix argument when you repeat the 'C-c +.' command). + + These commands get the text of previous ICS commands from a special +history list, not from the ICS buffer itself. Thus, editing the ICS +buffer, or even killing large parts of it, does not affect the history +that these commands access. + + +File: chess.info, Node: Shell History Copying, Prev: ICS Ring, Up: Command History + +5.3.2 Shell History Copying +--------------------------- + +'C-c C-p' + Move point to the previous prompt ('comint-previous-prompt'). + +'C-c C-n' + Move point to the following prompt ('comint-next-prompt'). + +'C-c <RET>' + Copy the input command at point, inserting the copy at the end of + the buffer ('comint-copy-old-input'). This is useful if you move + point back to a previous command. After you copy the command, you + can submit the copy as input with <RET>. If you wish, you can edit + the copy before resubmitting it. If you use this command on an + output line, it copies that line to the end of the buffer. + +'Mouse-2' + If 'comint-use-prompt-regexp' is 'nil' (the default), copy the old + input command that you click on, inserting the copy at the end of + the buffer ('comint-insert-input'). If 'comint-use-prompt-regexp' + is non-'nil', or if the click is not over old input, just yank as + usual. + + Moving to a previous input and then copying it with 'C-c <RET>' or +'Mouse-2' produces the same results--the same buffer contents--that you +would get by using 'M-p' enough times to fetch that previous input from +the history list. However, 'C-c <RET>' copies the text from the buffer, +which can be different from what is in the history list if you edit the +input text in the buffer after it has been sent. + + +File: chess.info, Node: Seeking an opponent for a new game, Next: The sought game display, Prev: Command History, Up: Internet Chess Servers + +5.4 Seeking an opponent for a new game ====================================== After you connected to a server, one of the first things you will want @@ -1552,10 +1756,18 @@ to do is find an oponent for a new game. You can use the ICS command "seek" to announce your availability for a chess game to interested people. + For example: + + fics% seek 10 10 rated + + This will announce your availability to play a rated game with 10 +minutes initial time-control for each player, and 10 seconds added for +every move made. + File: chess.info, Node: The sought game display, Prev: Seeking an opponent for a new game, Up: Internet Chess Servers -5.3 The sought game display +5.5 The sought game display =========================== There is a special mode for displaying games sought by other users on an @@ -1588,7 +1800,11 @@ Concept Index [index ] * Menu: -* library: The chess.el library. (line 6) +* Chess ICS mode: Chess ICS Mode. (line 6) +* Comint mode: Chess ICS Mode. (line 79) +* library: The chess.el library. (line 6) +* mode, Comint: Chess ICS Mode. (line 79) +* mode, ICS: Chess ICS Mode. (line 6) File: chess.info, Node: Function and Variable Index, Next: Key Index, Prev: Concept Index, Up: Top @@ -1599,6 +1815,7 @@ Function and Variable Index [index ] * Menu: +* backward-kill-word: Chess ICS Mode. (line 47) * chess-ai-best-move: AI. (line 24) * chess-ai-depth: AI. (line 13) * chess-ai-quiescence-depth: AI. (line 16) @@ -1771,6 +1988,29 @@ Function and Variable Index * chess-var-seq: Variation positions. (line 12) * chess-var-side-to-move: Variation positions. (line 15) * chess-var-to-algebraic: Varation plies. (line 12) +* comint-accumulate: Chess ICS Mode. (line 34) +* comint-bol-or-process-mark: Chess ICS Mode. (line 25) +* comint-buffer-maximum-size: Chess ICS Mode. (line 71) +* comint-copy-old-input: Shell History Copying. + (line 12) +* comint-delchar-or-maybe-eof: Chess ICS Mode. (line 18) +* comint-delete-output: Chess ICS Mode. (line 50) +* comint-dynamic-list-input-ring: ICS Ring. (line 24) +* comint-get-next-from-history: ICS Ring. (line 18) +* comint-history-isearch-backward-regexp: ICS Ring. (line 14) +* comint-input-previous-argument: ICS Ring. (line 21) +* comint-kill-input: Chess ICS Mode. (line 42) +* comint-next-input: ICS Ring. (line 10) +* comint-next-prompt: Shell History Copying. + (line 9) +* comint-previous-input: ICS Ring. (line 6) +* comint-previous-prompt: Shell History Copying. + (line 6) +* comint-send-input: Chess ICS Mode. (line 11) +* comint-show-maximum-output: Chess ICS Mode. (line 67) +* comint-show-output: Chess ICS Mode. (line 62) +* comint-truncate-buffer: Chess ICS Mode. (line 71) +* comint-write-output: Chess ICS Mode. (line 55) File: chess.info, Node: Key Index, Prev: Function and Variable Index, Up: Top @@ -1781,18 +2021,37 @@ Key Index [index ] * Menu: -* 'C-u M-x chess RET ai RET': AI. (line 10) -* 'C-u M-x chess RET crafty RET': Crafty. (line 17) -* 'C-u M-x chess RET fruit RET': Fruit. (line 20) -* 'C-u M-x chess RET glaurung RET': Glaurung. (line 14) -* 'C-u M-x chess RET gnuchess RET': GNU Chess. (line 18) -* 'C-u M-x chess RET phalanx RET': Phalanx. (line 14) -* 'C-u M-x chess RET sjeng RET': Sjeng. (line 16) -* 'C-u M-x chess RET stockfish RET': Stockfish. (line 17) -* 'M-n': Connecting to a server. - (line 12) -* 'M-p': Connecting to a server. +* C-c . (Shell mode): ICS Ring. (line 21) +* C-c C-a: Chess ICS Mode. (line 25) +* C-c C-e: Chess ICS Mode. (line 67) +* C-c C-l (Shell mode): ICS Ring. (line 24) +* C-c C-n: Shell History Copying. + (line 9) +* C-c C-o: Chess ICS Mode. (line 50) +* C-c C-p: Shell History Copying. + (line 6) +* C-c C-r: Chess ICS Mode. (line 62) +* C-c C-s: Chess ICS Mode. (line 55) +* C-c C-u: Chess ICS Mode. (line 42) +* C-c C-w: Chess ICS Mode. (line 47) +* C-c C-x: ICS Ring. (line 18) +* C-c RET: Shell History Copying. (line 12) +* C-c SPC: Chess ICS Mode. (line 34) +* C-d: Chess ICS Mode. (line 18) +* C-M-l: Chess ICS Mode. (line 62) +* C-u M-x chess RET ai RET: AI. (line 10) +* C-u M-x chess RET crafty RET: Crafty. (line 17) +* C-u M-x chess RET fruit RET: Fruit. (line 20) +* C-u M-x chess RET glaurung RET: Glaurung. (line 14) +* C-u M-x chess RET gnuchess RET: GNU Chess. (line 18) +* C-u M-x chess RET phalanx RET: Phalanx. (line 14) +* C-u M-x chess RET sjeng RET: Sjeng. (line 16) +* C-u M-x chess RET stockfish RET: Stockfish. (line 17) +* M-n: ICS Ring. (line 10) +* M-p: ICS Ring. (line 6) +* M-r: ICS Ring. (line 14) +* RET: Chess ICS Mode. (line 11) * 'RET': The sought game display. (line 24) @@ -1860,11 +2119,15 @@ Node: Phalanx53148 Node: Sjeng53730 Node: Stockfish54419 Node: Internet Chess Servers55184 -Node: Connecting to a server56271 -Node: Seeking an opponent for a new game56947 -Node: The sought game display57399 -Node: Concept Index58377 -Node: Function and Variable Index58620 -Node: Key Index71455 +Node: Connecting to a server56310 +Node: Chess ICS Mode56711 +Node: Command History60119 +Node: ICS Ring60794 +Node: Shell History Copying63855 +Node: Seeking an opponent for a new game65305 +Node: The sought game display65954 +Node: Concept Index66932 +Node: Function and Variable Index67467 +Node: Key Index82027 End Tag Table diff --git a/doc/chess.texi b/doc/chess.texi index 5b15a9c..13ffd4d 100644 --- a/doc/chess.texi +++ b/doc/chess.texi @@ -1579,7 +1579,7 @@ The @dfn{AI} engine module defines a pure Emacs Lisp implementation of an opponent. Contrary to all other engine modules mentioned later on, it does not require any external programs to be installed. -@kindex @kbd{C-u M-x chess RET ai RET} +@kindex C-u M-x chess RET ai RET To explicitly select this engine as an opponent, use @kbd{C-u M-x chess @key{RET} ai @key{RET}}. @@ -1616,7 +1616,7 @@ the @code{chess-crafty} engine module will automatically detect it. If Crafty is installed in a non-standard location, variable @code{chess-crafty-path} can be set to point to the executable. -@kindex @kbd{C-u M-x chess RET crafty RET} +@kindex C-u M-x chess RET crafty RET If you have multiple engines installed you can explicitly select to play against Crafty by invoking @kbd{C-u M-x chess @key{RET} crafty @key{RET}}. @@ -1638,7 +1638,7 @@ the @code{chess-fruit} engine module will automatically detect it. If Fruit is installed in a non-standard location, variable @code{chess-fruit-path} can be set to point to the executable. -@kindex @kbd{C-u M-x chess RET fruit RET} +@kindex C-u M-x chess RET fruit RET If you have multiple engines installed you can explicitly select to play against Fruit by invoking @kbd{C-u M-x chess @key{RET} fruit @key{RET}}. @@ -1654,7 +1654,7 @@ the @code{chess-glaurung} engine module will automatically detect it. If Glaurung is installed in a non-standard location, variable @code{chess-glaurung-path} can be set to point to the executable. -@kindex @kbd{C-u M-x chess RET glaurung RET} +@kindex C-u M-x chess RET glaurung RET If you have multiple engines installed you can explicitly select to play against Glaurung by invoking @kbd{C-u M-x chess @key{RET} glaurung @key{RET}}. @@ -1674,7 +1674,7 @@ the @code{chess-gnuchess} engine module will automatically detect it. If GNU Chess is installed in a non-standard location, variable @code{chess-gnuchess-path} can be set to point to the executable. -@kindex @kbd{C-u M-x chess RET gnuchess RET} +@kindex C-u M-x chess RET gnuchess RET If you have multiple engines installed you can explicitly select to play against GNU Chess by invoking . @@ -1690,7 +1690,7 @@ the @code{chess-phalanx} engine module will automatically detect it. If Phalanx is installed in a non-standard location, variable @code{chess-phalanx-path} can be set to point to the executable. -@kindex @kbd{C-u M-x chess RET phalanx RET} +@kindex C-u M-x chess RET phalanx RET If you have multiple engines installed you can explicitly select to play against Phalanx by invoking @kbd{C-u M-x chess @key{RET} phalanx @key{RET}}. @@ -1708,7 +1708,7 @@ the @code{chess-sjeng} engine module will automatically detect it. If Sjeng is installed in a non-standard location, variable @code{chess-sjeng-path} can be set to point to the executable. -@kindex @kbd{C-u M-x chess RET sjeng RET} +@kindex C-u M-x chess RET sjeng RET If you have multiple engines installed you can explicitly select to play against Sjeng by invoking @kbd{C-u M-x chess @key{RET} sjeng @key{RET}}. @@ -1728,14 +1728,14 @@ the @code{chess-stockfish} engine module will automatically detect it. If Stockfish is installed in a non-standard location, variable @code{chess-stockfish-path} can be set to point to the executable. -@kindex @kbd{C-u M-x chess RET stockfish RET} +@kindex C-u M-x chess RET stockfish RET If you have multiple engines installed you can explicitly select to play against Stockfish by invoking @kbd{C-u M-x chess @key{RET} stockfish @key{RET}}. @node Internet Chess Servers, Concept Index, Engines, Top @chapter Internet Chess Servers -Based on the services provided above, there is also a speical mode +Based on the services provided above, there is also a special mode for communication with Internet Chess Servers. On an Internet Chess Server you can seek to play against other @@ -1759,11 +1759,13 @@ are currently supported. @menu * Connecting to a server:: +* Chess ICS Mode:: +* Command History:: * Seeking an opponent for a new game:: * The sought game display:: @end menu -@node Connecting to a server, Seeking an opponent for a new game, Internet Chess Servers, Internet Chess Servers +@node Connecting to a server, Chess ICS Mode, Internet Chess Servers, Internet Chess Servers @section Connecting to a server To open a new connection to an Internet Chess Server, use: @@ -1774,14 +1776,261 @@ To open a new connection to an Internet Chess Server, use: Connect to an Internet Chess Server. @end defun -@kindex @kbd{M-p} -@kindex @kbd{M-n} -Internet Chess Server support is a derivative of Comint mode, -a general-purpose mode for communicating with interactive subprocesses. -A history of previously entered commands at the ICS prompt is -available with @kbd{M-p} and @kbd{M-n}. See @var{comint-mode-map}. +@node Chess ICS Mode, Command History, Connecting to a server, Internet Chess Servers +@section Chess ICS Mode +@cindex Chess ICS mode +@cindex mode, ICS + + The major mode for ICS buffers is Chess ICS mode. Many of its special +commands are bound to the @kbd{C-c} prefix. Here is a list of ICS mode +commands: + +@table @kbd +@item @key{RET} +@kindex RET +@findex comint-send-input +Send the current line as input to the server +(@code{comint-send-input}). Any prompt at the beginning of the +line is omitted. If point is at the end of +buffer, this is like submitting the command line in an ordinary +interactive shell. However, you can also invoke @key{RET} elsewhere +in the ICS buffer to submit the current line as input. + +@item C-d +@kindex C-d +@findex comint-delchar-or-maybe-eof +Either delete a character or send @acronym{EOF, End Of File} +(@code{comint-delchar-or-maybe-eof}). Typed at the end of the ICS +buffer, this sends @acronym{EOF} to the server and terminates the +connection. Typed at any other +position in the buffer, this deletes a character as usual. + +@item C-c C-a +@kindex C-c C-a +@findex comint-bol-or-process-mark +Move to the beginning of the line, but after the prompt if any +(@code{comint-bol-or-process-mark}). If you repeat this command twice +in a row, the second time it moves back to the process mark, which is +the beginning of the input that you have not yet sent to the server. +(Normally that is the same place---the end of the prompt on this +line---but after @kbd{C-c @key{SPC}} the process mark may be in a +previous line.) + +@item C-c @key{SPC} +@kindex C-c SPC +@findex comint-accumulate +Accumulate multiple lines of input, then send them together +(@code{comint-accumulate}). This +command inserts a newline before point, but does not send the preceding +text as input to the server---at least, not yet. Both lines, the one +before this newline and the one after, will be sent together (along with +the newline that separates them), when you type @key{RET}. + +@item C-c C-u +@kindex C-c C-u +@findex comint-kill-input +Kill all text pending at end of buffer to be sent as input +(@code{comint-kill-input}). If point is not at end of buffer, +this only kills the part of this text that precedes point. + +@item C-c C-w +@kindex C-c C-w +@findex backward-kill-word +Kill a word before point (@code{backward-kill-word}). + +@item C-c C-o +@kindex C-c C-o +@findex comint-delete-output +Delete the last batch of output from an ICS server command +(@code{comint-delete-output}). This is useful if a server command spews +out lots of output that just gets in the way. + +@item C-c C-s +@kindex C-c C-s +@findex comint-write-output +Write the last batch of output from an ICS server command to a file +(@code{comint-write-output}). With a prefix argument, the file is +appended to instead. Any prompt at the end of the output is not +written. + +@item C-c C-r +@itemx C-M-l +@kindex C-c C-r +@kindex C-M-l +@findex comint-show-output +Scroll to display the beginning of the last batch of output at the top +of the window; also move the cursor there (@code{comint-show-output}). + +@item C-c C-e +@kindex C-c C-e +@findex comint-show-maximum-output +Scroll to put the end of the buffer at the bottom of the window +(@code{comint-show-maximum-output}). + +@item M-x comint-truncate-buffer +@findex comint-truncate-buffer +@vindex comint-buffer-maximum-size +This command truncates the ICS buffer to a certain maximum number of +lines, specified by the variable @code{comint-buffer-maximum-size}. +Here's how to do this automatically each time you get output from the +server: + +@example +(add-hook 'comint-output-filter-functions + 'comint-truncate-buffer) +@end example +@end table + +@cindex Comint mode +@cindex mode, Comint + ICS mode is a derivative of Comint mode, a general-purpose mode for +communicating with interactive subprocesses. Most of the features of +ICS mode actually come from Comint mode, as you can see from the +command names listed above. + +@node Command History, Seeking an opponent for a new game, Chess ICS Mode, Internet Chess Servers +@section ICS Command History + + ICS buffers support two ways of repeating earlier commands. You +can use keys like those used for the minibuffer history; these work +much as they do in the minibuffer, inserting text from prior commands +while point remains always at the end of the buffer. You can move +through the buffer to previous inputs in their original place, then +resubmit them or copy them to the end. -@node Seeking an opponent for a new game, The sought game display, Connecting to a server, Internet Chess Servers +@menu +* Ring: ICS Ring. Fetching commands from the history list. +* Shell History Copying:: +@end menu + +@node ICS Ring, Shell History Copying, Command History, Command History +@subsection ICS History Ring + +@table @kbd +@findex comint-previous-input +@kindex M-p +@item M-p +@itemx C-@key{UP} +Fetch the next earlier old ICS command. + +@kindex M-n +@findex comint-next-input +@item M-n +@itemx C-@key{DOWN} +Fetch the next later old ICS command. + +@kindex M-r +@findex comint-history-isearch-backward-regexp +@item M-r +Begin an incremental regexp search of old ICS commands. + +@item C-c C-x +@kindex C-c C-x +@findex comint-get-next-from-history +Fetch the next subsequent command from the history. + +@item C-c . +@kindex C-c . @r{(Shell mode)} +@findex comint-input-previous-argument +Fetch one argument from an old ICS command. + +@item C-c C-l +@kindex C-c C-l @r{(Shell mode)} +@findex comint-dynamic-list-input-ring +Display the buffer's history of ICS commands in another window +(@code{comint-dynamic-list-input-ring}). +@end table + + ICS buffers provide a history of previously entered +commands. To reuse commands from the history, use the editing +commands @kbd{M-p}, @kbd{M-n}, @kbd{M-r} and @kbd{M-s}. These work +just like the minibuffer history commands (@pxref{Minibuffer +History, , , emacs}), except that they operate within the ICS buffer rather +than the minibuffer. + + @kbd{M-p} fetches an earlier ICS command to the end of the ICS +buffer. Successive use of @kbd{M-p} fetches successively earlier +commands, each replacing any text that was already present as +potential input. @kbd{M-n} does likewise except that it finds +successively more recent ICS commands from the buffer. +@kbd{C-@key{UP}} works like @kbd{M-p}, and @kbd{C-@key{DOWN}} like +@kbd{M-n}. + + The history search command @kbd{M-r} begins an incremental regular +expression search of previous ICS commands. After typing @kbd{M-r}, +start typing the desired string or regular expression; the last +matching ICS command will be displayed in the current line. +Incremental search commands have their usual effects---for instance, +@kbd{C-s} and @kbd{C-r} search forward and backward for the next match +(@pxref{Incremental Search, , , emacs}). When you find the desired input, type +@key{RET} to terminate the search. This puts the input in the command +line. Any partial input you were composing before navigating the +history list is restored when you go to the beginning or end of the +history ring. + + Often it is useful to reexecute several successive ICS commands that +were previously executed in sequence. To do this, first find and +reexecute the first command of the sequence. Then type @kbd{C-c C-x}; +that will fetch the following command---the one that follows the command +you just repeated. Then type @key{RET} to reexecute this command. You +can reexecute several successive commands by typing @kbd{C-c C-x +@key{RET}} over and over. + + The command @kbd{C-c .}@: (@code{comint-input-previous-argument}) +copies an individual argument from a previous command, like +@kbd{@key{ESC} .} in Bash. The simplest use copies the last argument from the +previous ICS command. With a prefix argument @var{n}, it copies the +@var{n}th argument instead. Repeating @kbd{C-c .} copies from an +earlier ICS command instead, always using the same value of @var{n} +(don't give a prefix argument when you repeat the @kbd{C-c .} +command). + + These commands get the text of previous ICS commands from a special +history list, not from the ICS buffer itself. Thus, editing the ICS +buffer, or even killing large parts of it, does not affect the history +that these commands access. + +@node Shell History Copying, , ICS Ring, Command History +@subsection Shell History Copying + +@table @kbd +@kindex C-c C-p +@findex comint-previous-prompt +@item C-c C-p +Move point to the previous prompt (@code{comint-previous-prompt}). + +@kindex C-c C-n +@findex comint-next-prompt +@item C-c C-n +Move point to the following prompt (@code{comint-next-prompt}). + +@kindex C-c RET +@findex comint-copy-old-input +@item C-c @key{RET} +Copy the input command at point, inserting the copy at the end of the +buffer (@code{comint-copy-old-input}). This is useful if you move +point back to a previous command. After you copy the command, you can +submit the copy as input with @key{RET}. If you wish, you can edit +the copy before resubmitting it. If you use this command on an output +line, it copies that line to the end of the buffer. + +@item Mouse-2 +If @code{comint-use-prompt-regexp} is @code{nil} (the default), copy +the old input command that you click on, inserting the copy at the end +of the buffer (@code{comint-insert-input}). If +@code{comint-use-prompt-regexp} is non-@code{nil}, or if the click is +not over old input, just yank as usual. +@end table + + Moving to a previous input and then copying it with @kbd{C-c +@key{RET}} or @kbd{Mouse-2} produces the same results---the same +buffer contents---that you would get by using @kbd{M-p} enough times +to fetch that previous input from the history list. However, @kbd{C-c +@key{RET}} copies the text from the buffer, which can be different +from what is in the history list if you edit the input text in the +buffer after it has been sent. + +@node Seeking an opponent for a new game, The sought game display, Command History, Internet Chess Servers @section Seeking an opponent for a new game After you connected to a server, one of the first things you will @@ -1789,6 +2038,16 @@ want to do is find an oponent for a new game. You can use the ICS command "seek" to announce your availability for a chess game to interested people. +For example: + +@example +fics% seek 10 10 rated +@end example + +This will announce your availability to play a rated game with 10 minutes +initial time-control for each player, and 10 seconds added +for every move made. + @node The sought game display, , Seeking an opponent for a new game, Internet Chess Servers @section The sought game display