/* cnames.c - array of names to functions + help * Copyright (C) 1988-2018 Sean MacLennan * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this project; see the file COPYING. If not, write to * the Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. */ #include "z.h" /** @addtogroup zedit * @{ */ /* For now it is a char. May be expanded later. */ #define AN '+' /* Arg Normal */ #define AI '-' /* Arg Ignored */ #ifdef NO_HELP /* Saves about 21k */ #define C(str) #else #define C(str) str #endif struct cnames Cnames[] = { {"abort", ZABORT, AI, C("Aborts the current command. This is the only way to exit " "Universal and String Arguments. It will also abort C-X and Meta " "prefixes.") }, {"again", ZAGAIN, AN, C("Causes the last search to be executed again. If no search " "commands have been executed, a search command is executed.") }, {"append-kill", ZAPPEND_KILL, AI, C("Sets the delete flag. The next delete command will append to the " "kill buffer.") }, {"arg", ZARG, 0, C("Many of the commands accept a Universal Argument to cause the " "command to repeat or to modify the meaning of the command in some " "way. It reads decimal digits and displays them in the PAW. The " "first non-digit is processed as a command. The digits cannot be " "deleted since Delete is a valid command that accepts a Universal " "Argument. If a mistake is made, use the Abort Command.") }, {"beginning-of-buffer", ZBEGINNING_OF_BUFFER, AI, C("Moves the Point to the beginning of the current buffer.") }, {"beginning-of-line", ZBEGINNING_OF_LINE, AN, C("Moves the Point to the beginning of the line or to the beginning " "of the previous line.") }, {"c-indent", ZC_INDENT, AN, C("Causes Newline characters to auto-indent to the current tab " "level. If a Newline is hit after an open brace ({), the next line " "is indented an extra tab stop. Bound to Newline in C mode.") }, {"c-insert", ZC_INSERT, AI, C("Tries to perform brace matching. When a close brace (}) is " "entered, searches for a previous unmatched open brace ({). If it " "finds one, tries to put the close brace in the same column as the " "column of the first non-whitespace character in the matched " "line. If no match is found, beeps. Bound to close brace in C " "mode. If bound to a character other than a close brace, performs " "a Character Insert.") }, {"calc", ZCALC, AI, C("This is a very simple integer calculator. It handles addition, " "subtraction, multiplication, and division between " "octal/decimal/hexadecimal numbers. If a number begins with a '0x' " "it is assumed to be hexadecimal, if it begins with a '0' it is " "assumed to be octal, all others are assumed to be decimal. The " "output is displayed in decimal with hexadecimal in brackets " "'()'. Spaces and tabs are allowed but are not necessary between " "the numbers and their operators.") }, {"capitalize-word", ZCAPITALIZE_WORD, AN, C("Converts the first letter of the current word to uppercase and " "the rest of the characters in the word to lowercase. The Point " "is left at the end of the word.") }, {"center", ZCENTER, AN, C("Centers the current line on the screen. It uses fill-width to " "define the right margin.") }, {"cmd-to-buffer", ZCMD_TO_BUFFER, AI, C("Prompts for a command and then executes the command in the " "shell. The output is put in the " SHELLBUFF " buffer. Any " "previous contents of the " SHELLBUFF " buffer are deleted.") }, {"copy-region", ZCOPY_REGION, AI, C("Copies the region to the kill buffer. The kill buffer is " "overwritten unless the the delete flag is set. See Append Kill " "command.") }, {"copy-word", ZCOPY_WORD, AI, C("Copies the word the Point is on to the kill buffer. The kill " "buffer is overwritten unless the the delete flag is set. In the " "PAW, the Copy Word command takes the word the Point was on in the " "previously active window and inserts it into the PAW.") }, {"count", ZCOUNT, AI, C("Count the number of lines, words, and characters in the buffer. If " "the mark is set counts only the region.") }, {"ctrl-x", ZCTRL_X, 0, C("Command prefix.") }, {"delete-blanks", ZDELETE_BLANKS, 0, C("Delete all the blank lines around the Point. With a Universal Argument " "all blanks lines in the file are deleted. The lines are NOT put in the " "Kill Buffer.") }, {"delete-buffer", ZDELETE_BUFFER, 0, C("Deletes the current buffer and goes to a previous buffer. There " "must always be at least one buffer. If the buffer has been " "modified, Zedit asks to save it before deleting it. A Universal " "Argument prompts for the buffer to delete.") }, {"delete-char", ZDELETE_CHAR, AN, C("Deletes the character at the Point and leaves the Point on the " "next character in the buffer. The character is not put in the " "Kill Buffer.") }, {"delete-line", ZDELETE_LINE, AN, C("Deletes the entire line, including the Newline, no matter where " "the Point is in the line. The Point is left at the start of the " "next line. The deleted line is put in the Kill Buffer.") }, {"delete-previous-char", ZDELETE_PREVIOUS_CHAR, AN, C("Deletes the character before the Point and leaves the Point in " "the same place. The character is not put in the Kill Buffer.") }, {"delete-previous-word", ZDELETE_PREVIOUS_WORD, AN, C("Deletes the word to the left of the Point. The character the " "Point is on is not deleted. The word is put in the Kill Buffer.") }, {"delete-region", ZDELETE_REGION, AI, C("Deletes the characters in the region. The deleted characters are " "put in the Kill Buffer based on the delete flag.") }, {"delete-to-eol", ZDELETE_TO_EOL, AN, C("Deletes the characters from the Point to the end of the line. If " "the Point is at the end of a line, the Newline character is " "deleted and the next line is joined to the end of the current " "line. The characters deleted are put in the Kill Buffer.") }, {"delete-word", ZDELETE_WORD, AN, C("Deletes the word to the right of and including the Point. The " "word is put in the Kill Buffer.") }, {"dos2unix", ZDOS2UNIX, 0, C("Convert a DOS file (CR in the modeline) to a normal unix file." "The conversion only takes place if the file is written.\n" "A Universal Argument causes the CR state of the buffer to be flipped.") }, {"empty-buffer", ZEMPTY_BUFFER, AI, C("Deletes the entire contents of the current buffer.") }, {"end-of-buffer", ZEND_OF_BUFFER, AI, C("Moves the Point to the end of the buffer.") }, {"end-of-line", ZEND_OF_LINE, AN, C("Moves the Point to the end of the current line or to the end of " "the next line if already at the end of the current line.") }, {"exit", ZEXIT, 0, C("Exits from the editor. It asks to save all modified buffers. A " "bang (!) saves all remaining buffers. A Universal Argument causes " "all modified buffers to be saved without prompting.") }, {"fill-check", ZFILL_CHECK, 0, C("Checks if the current column is past the FillWidth column. If it " "is, the words past or on the FillWidth column are wrapped. This " "gives some word processing capability to the editor. Normally " "bound to the space bar and Newline only in Text Mode.") }, {"fill-paragraph", ZFILL_PARAGRAPH, 0, C("Uses the FillWidth to reformat the paragraph the Point is in. " "This is useful if editing has messed up the right margin. A " "Universal Argument reformats the rest of the buffer. When " "reformatting the entire buffer, hitting a character will " "abort the reformat. Not allowed in program mode buffers.") }, {"find-file", ZFIND_FILE, AN, C("Prompts for a path name. If a buffer already exists with this " "path name, that buffer is switched to. If no buffer is matched, " "a new buffer is created and the file read into it. " "Supports file name completion.") }, {"goto-line", ZGOTO_LINE, 0, C("Moves the point to the start of a given line. If there is a " "Universal Argument, uses the argument, else prompts for the line " "number. If the line is past the end of the buffer, the " "Point is left at the end of the buffer.") }, {"grep", ZGREP, 0, C("Prompts for the completion of a grep command and then performs " "the grep command in the " SHELLBUFF " buffer. Use next-error " "to go through the grep output.") }, {"grow-window", ZGROW_WINDOW, AN, C("Makes the active window one line bigger, and therefore the " "inactive window one line smaller. A window cannot be less than " "three (3) lines. If there is only one window, this command has no " "effect.") }, {"help", ZHELP, AI, C("Interface to help functions. Mimics the emacs C-H command prefix.") }, {"help-apropos", ZHELP_APROPOS, AI, C("Asks for a string and then searches through all the functions and " "returns the functions that have the string in them.") }, {"help-function", ZHELP_FUNCTION, AI, C("Displays help on any of the Zedit functions. Prompts for the " "function with full completion. After the name is an optional set " "of flags. Currently they are (+-P). A + means a Universal Arg " "causes the command to repeat. A - means a Universal Arg is " "ignored. A P means the command works in the PAW. If the command " "has any key bindings, these are also displayed.") }, {"help-key", ZHELP_KEY, AI, C("Prompts for a key and displays the current command bound to the " "key in the PAW. Handles C-X and M- prefixes.") }, {"help-variable", ZHELP_VARIABLE, AI, C("Displays help on any of the configurable variables. Prompts for " "the variable with full completion. The current value of the " "variable is also displayed.") }, {"incremental-search", ZINCREMENTAL_SEARCH, AN, C("Searches for the string after every character is entered in the " "PAW. The delete-previous-character command can be used to delete " "a character and 'back up' the search. The Newline character " "terminates the search. The Abort command terminates the search " "and places the Point back where it was. Any other commands " "terminates the search and performs that command.") }, {"indent", ZINDENT, AN, C("Indents the marked region.") }, {"insert", ZINSERT, AN, C("Normally bound to all the printable characters.") }, {"insert-overwrite", ZINSERT_OVERWRITE, AI, C("Toggles the current buffer's minor mode between insert " "and overwrite modes.") }, {"join", ZJOIN, AN, C("Joins two lines. Performs the following Zedit commands: End of " "Line, Delete Newline, Trim Whitespace, Insert space.") }, {"kill", ZKILL, AI, #ifndef DOPIPES "Note: Disabled in this version of Zedit.\n\n" #else C("Kills the current make. The command must wait for the make to die " "before it can continue.") #endif }, {"life", ZLIFE, 0, C("Plays the Game of Life.") }, {"list-buffers", ZLIST_BUFFERS, AI, C("Displays a list of the current buffers on the display.") }, {"lowercase-region", ZLOWERCASE_REGION, AI, C("Converts the Region to lowercase. Not allowed in program mode " "buffers.") }, {"lowercase-word", ZLOWERCASE_WORD, AN, C("Converts the current word starting at the Point to lowercase. It " "leaves the Point at the end of the word.") }, {"make", ZMAKE, 0, C("This command performs the command specified in the Make variable " "and puts the output in the " SHELLBUFF " buffer. The command is " "usually 'make' and is used in conjunction with the next-error " "command. A Universal Argument prompts for the command to execute.") }, {"mark-paragraph", ZMARK_PARAGRAPH, AN, C("Sets the Mark to the start of the current paragraph and moves the " "Point to the start of the next paragraph.") }, {"meta", ZMETA, 0, C("Command prefix.") }, {"meta-x", ZMETA_X, 0, C("Prompts for a command to execute. Unbound commands may be " "executed in this manner. Supports command completion. A '?' will " "show all the possible matches. A Universal Argument is passed on " "to the selected command.") }, {"mode", ZMODE, AN, C("Change the mode of the current buffer. Prompts (with command " "completion) for the mode to change to.") }, {"newline", ZNEWLINE, AN, C("The command normally bound to the Enter or Return key. In " "overwrite mode, a NL goes to start of next line. In insert mode, " "its just inserted.") }, {"next-bookmark", ZNEXT_BOOKMARK, AN, C("Moves the Point to the last bookmark set in the bookmark ring. " "The bookmark moved to is displayed in the echo window. A " "Universal Argument in the range 1 to 10 corresponding to a set " "bookmark will go to the bookmark.") }, {"next-buffer", ZNEXT_BUFFER, AN, C("Switches to the next buffer in the buffer list. At the end of the " "list, it switches to the first buffer in the list, i.e. treats " "the list like a ring.") }, {"next-char", ZNEXT_CHAR, AN, C("Moves the Point forward one character. If the Point is at the end " "of a line, it is moved to the start of the next line.") }, {"next-error", ZNEXT_ERROR, AN, C("Used after a make or grep command to search for error messages, " "or grep output, " "in the " SHELLBUFF " buffer. If an error is found, the " "Mark in the " SHELLBUFF " buffer is placed at the start of the " "error message. The file containing the error is loaded into a " "buffer using the Find File command and the Point is placed at " "the error line.") }, {"next-line", ZNEXT_LINE, AN, C("Moves the Point up one line in the buffer. It tries to maintain " "the same column position. If the line is to short the, Point " "will be placed at the end of the line. Consecutive Previous/Next " "Line or Page commands try to maintain the original column " "position.") }, {"next-page", ZNEXT_PAGE, AN, C("Moves the Point down one page and tries to center the Point line " "in the display. It tries to maintain the same column position. " "If the line is to short the, Point will be the placed at the " "end of the line. Consecutive Previous/Next Line or Page commands " "try to maintain the original column position.") }, {"next-paragraph", ZNEXT_PARAGRAPH, AN, C("Moves the Point to the start of the next paragraph.") }, {"next-window", ZNEXT_WINDOW, AN, C("Goes to the next window on the screen. The windows are treated as " "a circular list.") }, {"next-word", ZNEXT_WORD, AN, C("Moves the Point to the start of the next word.") }, {"notimpl", ZNOTIMPL, AI, C("Used to unbind a key. This is bound to all the unbound keys.") }, {"one-window", ZONE_WINDOW, AI, C("Makes the active window a full screen window.") }, {"open-line", ZOPEN_LINE, AN, C("Inserts a Newline at the Point but leaves the Point in front of " "the Newline. It is the same as typing a Newline and then a " "Previous Character command.") }, {"other-next-page", ZOTHER_NEXT_PAGE, AN, C("Performs a Next Page command in the bottom window or the top " "window if you are in the bottom window. It leaves the Point " "where it is in the active window. If there is only one window, " "this command is the same as next-page.") }, {"other-previous-page", ZOTHER_PREVIOUS_PAGE, AN, C("Performs a Previous Page command in the bottom window or the top " "window if you are in the bottom window. It leaves the Point where " "it is in the active window. If there is only one window, it " "performs a previous-page.") }, {"out-to", ZOUT_TO, 0, C("This command moves the Point to an absolute column position. " "If the line is shorter than the specified column, it is padded " "with tabs and spaces to the specified column. The command takes " "either a Universal Argument or prompts for the column to go to.") }, {"position", ZPOSITION, AI, C("Displays the current Point position as a line, column, and byte " "offset in the echo window. Also displays the length of the " "buffer.") }, {"previous-char", ZPREVIOUS_CHAR, AN, C("Moves the Point back one character. If the Point is at the start " "of the line, it is moved to the end of the previous line.") }, {"previous-line", ZPREVIOUS_LINE, AN, C("Moves the Point up one line in the buffer. It tries to maintain " "the same column position. If the line is to short, the Point " "will be placed at the end of the line. Consecutive Previous/Next " "Line or Page commands try to maintain the original column " "position.") }, {"previous-page", ZPREVIOUS_PAGE, AN, C("Moves the Point up one page and tries to center the Point line in " "the display. It tries to maintain the same column position. If " "the line is to short, the Point will be placed at the end of the " "line. Consecutive Previous/Next Line or Page commands try to " "maintain the original column position.") }, {"previous-paragraph", ZPREVIOUS_PARAGRAPH, AN, C("Moves the Point to the start of the paragraph or to the start of " "the previous paragraph.") }, {"previous-word", ZPREVIOUS_WORD, AN, C("Moves the Point back to the start of a word or to the start of " "the previous word.") }, {"py-indent", ZPY_INDENT, AN, C("Causes Newline characters to auto-indent to the current tab " "level. Bound to Newline in PY mode.") }, {"query-replace", ZQUERY_REPLACE, 0, C("Prompts for a search string and a replacement string and searches " "from the current Point looking for matches of the search string. " "If it finds a match, it moves the Point to the match and waits " "for one of the following input characters:\n\n" " , Replace current match and confirm.\n" " space Replace current match and continue.\n" " y Replace current match and continue.\n" " . Replace and exit.\n" " ! Global replace.\n" " ^ Goto previous match.\n" " Abort Exit without replacing current match.\n" " Others Continue without replacing current match.\n" "\n" "The Point is left at the position it was in before the Query " "Replace. If the mode Exact is set, the search will be case " "sensitive. A Universal Argument causes the replacement to be " "done globally in all the buffers.") }, {"quote", ZQUOTE, AN, C("The Quote command is used to insert a character into a buffer or " "String Argument that would normally be a command. The next " "character after the Quote command is taken literally and inserted " " into the buffer.") }, {"re-replace", ZRE_REPLACE, 0, C("Works like the Query Replace command except that the search " "string is a regular expression. The replacement string is a " "literal with two exceptions. An '&' character causes the matched " "string to be placed in the buffer. The escape character '\' can " "be used to turn off this special meaning of '&'. Note that '\\' " "is required to put a real '\' in the buffer. For each match, a " "prompt is made for the action to perform. See Query Replace for " "a list of valid actions. A Universal Argument causes the " "replacement to be done globally in all the buffers.") }, {"re-search", ZRE_SEARCH, AN, C("Asks for a regular expression search string and searches from the " "Point forward for a match in the buffer. If a match is found, the " "Point is moved to the start of the match. If the string is not " "found, then 'Not Found' is displayed in the echo window and the " "Point is left where it was. The search string is saved and " "subsequent search and replace commands will default to this " "string. If the mode Exact is set, the search will be case " "sensitive.") }, {"read-file", ZREAD_FILE, 0, C("Prompts for a path name, with file name completion, and inserts " "the file into the current buffer before the Point. If there is a " "Universal Argument, the current buffer is deleted, first asking " "to save the file if it is modified, before reading in the new " "file. The buffers file name is not changed, any writes will be to " "the old file name.") }, {"redisplay", ZREDISPLAY, AN, C("Repaints the entire screen.") }, {"replace", ZREPLACE, 0, C("Prompts for a search string and a replacement string and searches " "from the current Point looking for matches of the search " "string. If it finds a match, it replaces the string and " "continues. The Point is left at the position it was in before the " "Query Replace. If the mode Exact is set, the search will be case " "sensitive. A Universal Argument causes the replacement to be done " "globally in all the buffers.") }, {"reverse-search", ZREVERSE_SEARCH, AN, C("Prompts for a search string and searches from the Point backward " "for a match in the buffer. If a match is found, the Point is " "moved to the start of the match. If the string is not found, " "then 'Not Found' is displayed in the echo window and the Point " "is not moved. The search string is saved and subsequent search " "and replace commands will default to the last search string. If " "the mode Exact is set, the search will be case sensitive.") }, {"revert-file", ZREVERT_FILE, AN, C("Rereads the current file. If the file has changed, asks to " "overwrite changes. A Universal Argument causes multiple " "rereads. Mimics the vi 'e' command.") }, {"save-all-files", ZSAVE_ALL_FILES, 0, C("Saves all modified buffers. A Universal Argument causes ALL files " "to be saved, modified or not.") }, {"save-and-exit", ZSAVE_AND_EXIT, 0, C("An attempt to mimic the vi ZZ command. Does a save file on the " "current buffer and then exits. A universal argument will save all " "files.") }, {"save-file", ZSAVE_FILE, AI, C("Saves the current buffer to its file. If the current buffer has " "no path name, a path name is prompted for (with file name " "completion).") }, {"search", ZSEARCH, AN, C("Prompts for a search string and searches from the Point forward " "for a match in the buffer. If a match is found, the Point is " "moved to the start of the match. If the string is not found, " "then 'Not Found' is displayed in the echo window and the Point " "is not moved. The search string is saved and subsequent search " "or replace commands will default to the last search string. If " "the mode Exact is set, the search will be case sensitive.") }, {"set-bookmark", ZSET_BOOKMARK, AI, C("Places an invisible 'bookmark' at the Point. There are 16 " "bookmarks placed in a ring. The bookmark set is displayed in the " "PAW.") }, {"set-mark", ZSET_MARK, AI, C("Sets the Mark at the Point.") }, {"set-variable", ZSET_VARIABLE, 0, C("Allows any of the configurable variables to be set. Command " "completion is supported. Prompts for the variable, then prompts " "for the new setting. A Universal Argument causes numeric or flag " "variables to be set to Arg, string variables ignore the Universal " "Argument.") }, {"setenv", ZSETENV, AN, C("Performs a 'setenv' command on an environment variable. The " "variable will keep the setting during the the Zedit session.") }, {"sh-indent", ZSH_INDENT, AN, C("Causes Newline characters to auto-indent to the current tab " "level. Also handles the 'if', 'while', 'fi', and 'done' " "keywords. Bound to Newline in SH mode.") }, {"show-config", ZSHOW_CONFIG, AI, C("Show the current settings of all the Zedit variables in a " "buffer. The buffer is suitable for use as a .config.z file and " "can be saved to a file using Write File.") }, {"size-window", ZSIZE_WINDOW, 0, C("Sets the window to Universal Argument lines.") }, {"spell-word", ZSPELL_WORD, 0, #if !SPELL "Note: Disabled in this version of Zedit.\n\n" #endif C("Check the spelling of the word at the point. Give hints about " "possible correct spellings.") }, {"split-window", ZSPLIT_WINDOW, AN, C("Splits the current window into two windows. The same buffer is " "displayed in both windows and the bottom window is made active.") }, {"stats", ZSTATS, AI, C("Displays some simple stats about Zedit.") }, {"swap-chars", ZSWAP_CHARS, AN, C("Swaps the character before the Point with the character at the " "Point. It leaves the Point after the second character. Successive " "commands will 'drag' the character that was before the Point " "towards the end of the line. If the Point was at the end of a " "line, the two characters before the Point are transposed. If " "the Point is at the beginning of the buffer, the character at " "the Point and the character after the Point are transposed.") }, {"swap-mark", ZSWAP_MARK, AI, C("The Mark goes to the current position of the Point and the Point " "is set where the Mark was.") }, {"swap-words", ZSWAP_WORDS, AN, C("Swaps the words before and after the Point. The Point is left " "after the second word. Successive commands will 'drag' the word " "before the Point towards the end of the line. If the Point is at " "the end of a line, the last word on the line is transposed with " "the first word on the next line. The command does nothing at the " "end of the buffer. If the Point is in the middle of a word, the " "two halves of the word are transposed.") }, {"switch-to-buffer", ZSWITCH_TO_BUFFER, AI, C("Prompts for a buffer name to switch to with command completion. " "The previous buffer is stored and displayed as a default. This " "allows quick switching between two buffers. The Again command can " "be used to scroll through the buffer list.") }, {"tab", ZTAB, AN, C("Handles the tab key.") }, {"tag", ZTAG, 0, C("The tag command asks for a function and looks for the function " "in a tagfile. If there is no tagfile specified, then it will " "prompt for a tagfile. A Universal Argument always prompts for " "a tagfile.\n\nOnly supports etags style tagfiles.") }, {"tag-word", ZTAG_WORD, 0, C("Like the tag command but uses the word at the point for the " "search tag.") }, {"toggle-case", ZTOGGLE_CASE, AI, C("Switches the current buffers minor mode between case sensitive " "and case insensitive for searches and replacements.") }, {"trim-white-space", ZTRIM_WHITE_SPACE, AI, C("Removes all spaces and tabs on both sides of the Point. The Point " "is left on the character that is to the right of the deleted " "text. The deleted characters are not put in the Kill Buffer.") }, {"undent", ZUNDENT, AN, C("Removes Universal Argument tabs from the start of every line in " "the region.") }, {"undo", ZUNDO, AN, #if !UNDO "Note: Disabled in this version of Zedit.\n\n" #endif C("EXPERIMENTAL: Undo the previous edit. There is a list of undos.") }, {"unmodify", ZUNMODIFY, AI, C("Turns off the modified flag for the current buffer. Does not " "change the buffer itself.") }, {"uppercase-region", ZUPPERCASE_REGION, AI, C("Convert the Region to uppercase. Not allowed in program mode " "buffers.") }, {"uppercase-word", ZUPPERCASE_WORD, AN, C("Converts the current word starting at the Point to uppercase. It " "leaves the Point at the end of the word.") }, {"word-search", ZWORD_SEARCH, AN, C("Search for the word at the point.") }, {"write-file", ZWRITE_FILE, AI, C("Prompts for a path name and writes out the current buffer to this " "file name. Supports file name completion. It changes the path " "name of the current buffer to the new path name.") }, {"yank", ZYANK, AN, C("Inserts the characters from the Kill Buffer before the Point. The " "characters are inserted, even in overwrite mode.") }, {"zap-to-char", ZZAP_TO_CHAR, AN, C("Waits for a character and moves the Point to that character. The Mark " "is set where the Point was. Unlike the Emacs zap-to-char does not " "actually delete the text.") }, }; /* @} */