{
    "mode": "info",
    "parameter": "jed",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/info/jed/json",
    "generated": "2026-11-12T09:33:18Z",
    "sections": {
        "File: jed.info,  Node: Top,  Next: Introduction,  Up: (dir)": {
            "content": "Note!!! This document is nolonger maintained.  See jed/doc/*.txt\nfor more current documentation.\n\nCopyright (C) 1992, 1993 John E. Davis\n\n* Menu:\n\n* Introduction::\n* Installing JED::\n* Startup Files::\n* Starting JED::\n* Emulating Other Editors::  Emacs, EDT, and Wordstar emulation\n* File Types and Sizes::\n* Backup and Autosave Files::\n* Status line and Windows::\n* MiniBuffer::\n* Basic Editing::\n* Modes::\n* Keyboard Macros::\n* Shells and Shell Commands::\n* Getting Help::\n* Editing Binary Files::\n* Dired::  Using JED to maintain directories\n* Mail::\n* Customization::\n* Eight Bit Clean Issues::\n* Miscellaneous::\n",
            "subsections": []
        },
        "File: jed.info,  Node: Introduction,  Next: Installing JED,  Prev: Top,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Introduction",
                    "content": "This document presents some basic information that users should know\nin order to use JED effectively.  Any questions, comments, or bug\nreports, should be emailed to the author. Please be sure to include the\nversion number.  To be notified of future releases of JED, email to the\naddress below and your email address will be placed on the announcement\nlist.  The email address is:\n\njed@jedsoft.org  (internet)\ndavis@ohstpy (BITNET)\n"
                }
            ]
        },
        "File: jed.info,  Node: Installing JED,  Next: Startup Files,  Prev: Introduction,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Installing JED",
                    "content": "Building JED from its sources requires the use of a C compiler that\nunderstands function prototypes.  JED has been successfully built with\n`cc' on the ULTRIX, VMS, and IRIX operating systems.  In addition, it\nhas been created using `gcc' under SunOS and Borland's BCC 3.0 for the\nPC.\n\nDetailed installation instructions are in separate, operating system\ndependent files.  They are:\n\nUNIX:   install.unx\nVMS:   install.vms\nIBMPC:   install.pc\n\nWhen JED starts up, it will first try to load a site initialization\nfile called `site.sl'.  Site specific commands are placed here.  Most\nlikely, `site.sl' will define some functions, default hooks, etc..."
                }
            ]
        },
        "What goes in it is left to the discretion of the user or system": {
            "content": "manager. See the file `site.sl' for examples.\n\nIf you intend to use characters with ASCII codes greater than 127,\nit is important to read the section on \"Eight Bit Clean Issues\" in\norder to install JED in an 8 bit clean manner.\n\nWhen loading `site.sl' as well as other `S-Lang' files (the user's\npersonal initialization file, `.jedrc' or `jed.rc', is a special case,\nsee below), JED searches all directories specified by the environment\nvariable `JEDLIBRARY', and if the file is not found, JED will look for\nit in the default directory. The environment variable `JEDLIBRARY' is\na comma separated list of directories.  Here are some examples of\nsetting this variable for different systems:\n\nVMS:   define/job JEDLIBRARY  dev$lib:[jedfiles]\nUNIX:   setenv JEDLIBRARY '/usr/local/lib/jed,~/jed'\nIBMPC:   set JEDLIBRARY = c:\\editors\\jed\\lib\n\nYou will probably want to put define `JEDLIBRARY' in your login\nstartup file, e.g., `autoexec.bat', `login.com', or `.cshrc'.\n\nJED versions 0.92 and later allow the value of `JEDLIBRARY' to be\nspecified at compile time an it may only be necessary to define\n`JEDLIBRARY' as an environment variable to override its pre-compiled\nvalue.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Startup Files,  Next: Starting JED,  Prev: Installing JED,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Startup Files",
                    "content": "Once JED has loaded the startup file `site.sl', it will try to load\nthe user's personal initialization file.  It first looks in the\ndirectory pointed to by the environment variable `JEDHOME'. If that\nfails, it then searches the `HOME' directory and upon failure simply\nloads the one supplied in `JEDLIBRARY'.\n\nThe name of the user initialization file varies according to the\noperating system.  On Unix systems this file must be called `.jedrc'\nwhile on VMS and MSDOS, it goes by the name `jed.rc'.  For VMS systems,\nthe `HOME' directory corresponds to the `SYS$LOGIN' logical name while\nfor the other two systems, it corresponds to the `HOME' environment\nvariable.\n\nThe purpose of this file is to allow an individual user to taylor\nJED to his or her personal taste.  Most likely, this will involve\nchoosing an initial set of keybindings, setting some variables, and so\non.\n"
                }
            ]
        },
        "File: jed.info,  Node: Starting JED,  Next: Emulating Other Editors,  Prev: Startup Files,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Starting JED",
                    "content": "Normally, JED is started as\n\njed FILENAME\nor\njed FILELIST.\nHowever, JED also takes the following switches:\n\n`-batch'\nrun JED in batch mode.  This is a non-interactive mode.\n\n`-n'\ndo not load `jed.rc' (`.jedrc') file.\n\n`-g N'\ngoto line N in buffer\n\n`-l FILE'\nload FILE as `S-Lang' code.\n\n`-f FUNCTION'\nexecute S-Lang function named FUNCTION\n\n`-s STRING'\nsearch forward for STRING\n\n`-2'\nsplit window\n\n`-i FILE'\ninsert FILE into current buffer.\n\nFor example, the command line:\njed slang.c -g 1012 -s error -2 file.c -f eob\n\nwill start up JED, read in the file `slang.c', goto line 1012 of\n`slang.c' and start searching for the string `error', split the window,\nread in `file.c' and goto the end of the file.\n\nIf the `-batch' parameter is used, it must be the first parameter.\nSimilarly, if `-n' is used, it must also be the first parameter unless\nused with the `-batch' parameter in which case it must the second.  JED\nshould only be run in batch mode when non-interactive operation is\ndesired.  For example, JED is distributed with a file, `mkdoc.sl', that\ncontains S-Lang code to produce a help file for functions and\nvariables.  In fact, the help file `jedfuns.hlp' was created by\nentering\n\njed -batch -n -l mkdoc.sl\n\nat the command line.\n\nNow suppose that you want to read in a file with the name of one of\nthe switches, say `-2'.  How can this be done?  The answer depends upon\nthe operating system.  For unix, instead of `jed -2', use `jed ./-2';\nfor VMS, use `jed []-2'.  The case for MSDOS is similar to unix except\nthat one must use the backslash.\n\nIt is possible to completely change JED's command line syntax\nthrough the use of the user defined function `commandlinehook'. In\nfact, the behavior described above is dictated by the value of\n`commandlinehook' as distributed in `site.sl'.  See the section on\nhooks for details.\n"
                }
            ]
        },
        "File: jed.info,  Node: Emulating Other Editors,  Next: File Types and Sizes,  Prev: Starting JED,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Emulating Other Editors",
                    "content": "JED's ability to create new functions using the S-Lang programming\nlanguage as well as allowing the user to choose key bindings, makes the\nemulation of other editors possible.  Currently, JED provides\nreasonable emulation of the Emacs, EDT, and Wordstar editors.\n\n* Menu:\n\n* Emacs Emulation::\n* EDT Emulation::\n* Wordstar Emulation::\n"
                }
            ]
        },
        "File: jed.info,  Node: Emacs Emulation,  Next: EDT Emulation,  Prev: Emulating Other Editors,  Up: Emulating Other Editors": {
            "content": "Emacs Emulation is provided by the S-Lang code in `emacs.sl'. The\nbasic functionality of Emacs is emulated; most Emacs users should have\nno problem with JED.  To enable Emacs emulation in JED, make sure that\nthe line\n\n\"emacs.sl\"  evalfile pop\n\nis in your `jed.rc' (`.jedrc') startup file.  JED is distributed with\nthis line already present in the default `jed.rc' file.\n",
            "subsections": []
        },
        "File: jed.info,  Node: EDT Emulation,  Next: Wordstar Emulation,  Prev: Emacs Emulation,  Up: Emulating Other Editors": {
            "content": "For EDT emulation, `edt.sl' must be loaded.  This is accomplished by\nensuring that the line\n\n\"edt.sl\"     evalfile pop\n\nis in present in the `jed.rc' (`.jedrc') Startup File.  JED is\ndistributed with EDT emulation enabled on VMS and Unix systems but the\nabove line is commented out in the `jed.rc' file on MSDOS systems.\n\nThis emulation provides a near identical emulation of the EDT keypad\nkey commands.  In addition, the smaller keypad on the newer DEC\nterminals is also setup.  It is possible to have both EDT and Emacs\nemulation at the same time.  The only restriction is that `emacs.sl'\nmust be loaded before `edt.sl' is loaded.\n\nOne minor difference between JED's EDT emulation and the real EDT\nconcerns the key.  EDT normally binds this to move the cursor to the\nbeginning of the line.  However, JED uses it as a help key.",
            "subsections": []
        },
        "Nevertheless, it is possible to rebind it.  See the section on": {
            "content": "rebinding keys as well as the file `edt.sl' for hints.  Alternatively,\nsimply put\n\"^H\" unsetkey \"bol\" \"^H\" setkey\nin the `jed.rc' startup file after `edt.sl' is loaded.  Keep in mind\nthat the key will no longer function as a help key if this is done.\n\nEDT emulation for PCs only work with the enhanced keyboard.  When\n`edt.sl' is loaded, a variable `NUMLOCKISGOLD' is set which instructs\nJED to interpret the numlock key on the square numeric keypad to\nfunction as the EDT GOLD key.  In fact, this keypad should behave\nexactly like the keypad on VTxxx terminals.  The only other problem\nthat remains concerns the + key on the PC keypad.  This key occupies\ntwo VTxxx key positions, the minus and the comma (delete word and\ncharacter) keys.  Thus a decision had to be made about which key to\nemulate.  I chose the + key to return the characters `\u001b O l' which JED\nmaps to the delete character function.  This may be changed to the\ndelete word function if you prefer.  See the file `edt.sl' for details.\n\nThe GOLD-GOLD key combination toggles the keypad between application\nand numeric states.  On the PC, this is not possible. Instead, the PC\nF1 key has been instructed to perform this task.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Wordstar Emulation,  Prev: EDT Emulation,  Up: Emulating Other Editors": {
            "content": "`wordstar.sl' contains the S-Lang code for JED's Wordstar emulation.\nAdding the line\n\"wordstar.sl\"     evalfile   pop\nto your `jed.rc' (`.jedrc') startup file will enable JED's Wordstar\nemulation.\n",
            "subsections": []
        },
        "File: jed.info,  Node: File Types and Sizes,  Next: Backup and Autosave Files,  Prev: Emulating Other Editors,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "File Types and Sizes",
                    "content": "JED is primarily a text editor; however, it can also edit binary\nfiles (see the section on editing binary files).  As a result, JED may\nedit lines of arbitrary length (actually this depends upon the size of\nan integer).  It is capable of editing arbitrarily large buffers as\nlong as there is enough memory for the buffer as well as the overhead\ninvolved.  This editor employs a linked list representation; hence, the\noverhead can be quite high.\n"
                }
            ]
        },
        "File: jed.info,  Node: Backup and Autosave Files,  Next: Status line and Windows,  Prev: File Types and Sizes,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Backup and Autosave Files",
                    "content": "On UNIX and MSDOS systems, JED creates backup files by appending a\n`~' character to the filename.  The VMS operating system handles backup\nfiles itself.  JED periodically autosaves its buffers.  On UNIX and\nMSDOS, autosave files are prefixed with the pound sign `#'.  On VMS,\nthey are prefixed with `$'.  The autosave interval may be changed by\nsetting the variable MAXHITS to the desired value. The default is 300\n\"hits\" on the buffer. A \"hit\" is defined as a key which MAY change the\nstate of the buffer. Cursor movement keys do not cause hits on the\nbuffer.\n\nLike many of JED's features, the names of autosave and backup files\ncan be controlled by the user.  The file `site.sl' defines two\nfunctions, `makebackupfilename', and `makeautosavefilename' that\ngenerate the file names described in the previous paragraph.  Like all\nS-Lang functions, these functions may be overloaded and replaced with\ndifferent ones.  See also information about `findfilehook' in the\nsection on hooks.\n\nOn UNIX systems, JED catches most signals and tries to autosave its\nbuffers in the event of a crash or if the user accidently disconnects\nfrom the system (`SIGHUP').\n\nIf an autosave file exists and you is desire to recover data from the\nautosave file, use the function `recoverfile'.  Whenever JED finds a\nfile, it checks to see if an autosave file exists as well as the file's\ndate.  If the dates are such that the autosave file is more recent JED\nwill display a message in the minibuffer alerting the user of this fact\nand that the function `recoverfile' should be considered.\n"
                }
            ]
        },
        "File: jed.info,  Node: Status line and Windows,  Next: MiniBuffer,  Prev: Backup and Autosave Files,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Status line and Windows",
                    "content": "JED supports multiple windows.  Each window may contain the same\nbuffer or different buffers.  A status line is displayed immediately\nbelow each window.  The status line contains information such as the\nJED version number, the buffer name, \"mode\", etc.  Please beware of the\nfollowing indicators:\n\n`'\nbuffer has been modified since last save\n\n`%%'\nbuffer is read only\n\n`m'\nmark set indicator.  This means a region is being defined\n\n`d'\nfile changed on disk indicator.  This indicates that the\nfile associated with the buffer is newer than the buffer itself.\n\n`s'\nspot pushed indicator\n\n`+'\nundo is enabled for the buffer\n\n`[Macro]'\na macro is being defined.\n\n`[Narrow]'\nbuffer is narrowed to a region of LINES.\n"
                }
            ]
        },
        "File: jed.info,  Node: MiniBuffer,  Next: Basic Editing,  Prev: Status line and Windows,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "MiniBuffer",
                    "content": "The MiniBuffer consists of a single line located at the bottom of the\nscreen. Much of the dialog between the user and JED takes place in this\nbuffer.  For example, when you search for a string, JED will prompt you\nfor the string in the MiniBuffer.\n\nThe MiniBuffer also provides a direct link to the S-Lang\ninterpreter. To access the interpreter, press \u0018 ESC and the `S-Lang>'\nprompt will appear in the MiniBuffer.  Enter any valid S-Lang\nexpression for evaluation by the interpreter.\n\nIt is possible to to recall data previously entered into the"
                }
            ]
        },
        "MiniBuffer by using the up and down arrow keys.  This makes it possible": {
            "content": "to use and edit previous expressions in a convenient and efficient\nmanner.\n\n* Menu:\n\n* Command Line Completion::\n* File Names::\n* Buffer Name and File Name Completion::\n",
            "subsections": []
        },
        "File: jed.info,  Node: Command Line Completion,  Next: File Names,  Up: MiniBuffer": {
            "content": "The JED editor has several hundred built-in functions as well as\nmany more written in the S-Lang extension language.  Many of these\nfunctions are bound to keys and many are not.  It is simply\nunreasonable to require the user to remember if a function is bound to\na key or not and, if it is, to remember the key to which it is bound.",
            "subsections": []
        },
        "This is especially true of those functions that are bound but rarely": {
            "content": "used.  More often than not, one simply forgets the exact name or\nspelling of a function and requires a little help.  For this reason,\nJED supports command line completion in the minibuffer.  This function,\ncalled `emacsescapex', is bound to the key `ESC X'.  This is one\nbinding that must be remembered!\n\nAs an example, suppose that you are editing several buffers and you\nwish to insert the contents of one buffer into the the current buffer.\nThe function that does this is called `insertbuffer' and has no\ndefault keybinding.  Pressing `ESC X' produces the prompt `M-x'.  This\nprompt, borrowed from the Emacs editor, simply means that `ESC X' was\npressed.  Now type `in' and hit the space bar or the TAB key.  In this\ncontext (completion context) the space bar and the TAB will expand the\nstring in the MiniBuffer up until it is nolonger unique.  In this case,\n`insertfile' and `insertbuffer' are only two functions that start\nwith `in'.  Hence, `in' will expand to `insert' at which point it\nbecomes necessary to enter more information to uniquely specify the\ndesired function.  However, in a completion context, the space bar also\nhas a special property that enables the user to cycle among the\npossible completions.  For this example, hitting the space bar twice\nconsecutively will produce the string `insertfile' and hitting it\nagain produces the desired string `insertbuffer'.\n\nThe role of the space bar in completion is a point where Emacs and\nJED differ. Emacs will pop up a buffer of possible completions but JED\nexpects the user to press the space bar to cycle among them.  Both have\nthere pros and cons.  Frequently, one sees messages on the Usenet\nnewsgroup `gnu.emacs.help' from Emacs users asking for the kind of\ncompletion JED employs.\n",
            "subsections": []
        },
        "File: jed.info,  Node: File Names,  Next: Buffer Name and File Name Completion,  Prev: Command Line Completion,  Up: MiniBuffer": {
            "content": "JED takes every file name and \"expands it\" according to a set of\nrules which vary according to the Operating System.  For concreteness,\nconsider JED running under MSDOS.  Suppose the user reads a new file\ninto the editor via the `findfile' command which emacs binds to \u0018 \u0006.\nThen the following might be displayed in the minibuffer:\n\nFind File: C:\\JED\\SLANG\\\n\nHere JED is prompting for a file name in the directory \\JED\\SLANG on\ndisk C:. However, suppose the user wants to get the file\nC:\\JED\\SRC\\VIDEO.C. Then the following responses produce equivalent\nfilenames when JED expands them internally:\n\nFind File: C:\\JED\\src\\video.c\nFind File: C:\\JED\\SLANG\\..\\src\\video.c\nFind File: C:\\JED\\SLANG\\../src/video.c\n\nNote that the on MSDOS systems, JED replaces the `/' with a `\\' and\nthat case is not important.  Now suppose you wish to get the file\nVIDEO.C from disk A:.  The following are also valid:\n\nFind File: A:\\video.c\nFind File: A:video.c\nFind File: C:\\JED\\SLANG\\a:\\video.c\n\nIn the last case, JED is smart enough to figure out what is really\nmeant.  Although the above examples are for MSDOS systems, the rules\nalso apply to unix and VMS systems as well.  The only change is the\nfile name syntax. For example, on VMS\n\nsys$manager:[misc]dev$user:[davis.jed]vms.c\ndev$user:[davis.jed]vms.c\n\nbecome equivalent filenames upon expansion.  For unix, the following are\nequivalent:\n\n/user1/users/davis/jed/unix.c\n/usr/local/src//user1/users/davis/jed/unix.c\n/usr/local/src/~/jed/unix.c\n\nNote the last example: the tilde character `~' always expands into\nthe users `HOME' directory, in this case to `/user1/users/davis'.\n\nWhen JED writes a buffer out to a file, it usually prompts for a\nfile name in the minibuffer displaying the directory associated with\nthe current buffer.  At this point a name can be appended to the\ndirectory string to form a valid file name or the user may simply hit\nthe RET key.  If the latter alternative is chosen, JED simply writes\nthe buffer to the file already associated with the buffer.  Once the\nbuffer is written to a file, the buffer becomes attached to that file.\n\n* Menu:\n\n* Buffer Name and File Name Completion::\n",
            "subsections": []
        },
        "File: jed.info,  Node: Buffer Name and File Name Completion,  Prev: File Names,  Up: MiniBuffer": {
            "content": "When JED prompts for a file name or a buffer name, the space bar and\nthe TAB keys are special.  Hitting the TAB key will complete the name\nthat is currently in the minibuffer up until it is no longer unique.",
            "subsections": []
        },
        "At that point, you can either enter more characters to complete the": {
            "content": "name or hit the space bar to cycle among the possible completions.  The\nspacebar must be pressed at least twice to cycle among the completions.\n\nOn MSDOS and VMS, it is possible to use wildcard characters in the\nfile name for completion purposes.  For example, entering `*.c' and\nhitting the space bar will cycle among file names matching `*.c'.\nUnfortunately, this feature is not available on unix systems.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Basic Editing,  Next: Modes,  Prev: MiniBuffer,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Basic Editing",
                    "content": "Editing with JED is pretty easy-- most keys simply insert themselves."
                }
            ]
        },
        "Movement around the buffer is usually done using the arrow keys or page": {
            "content": "up and page down keys.  If `edt.sl' is loaded, the keypads on VTxxx\nterminals function as well.  Here, only the highlights are touched upon\n(cut/paste operations are not considered \"highlights\"). In the\nfollowing, any character prefixed by the `^' character denotes a",
            "subsections": []
        },
        "Control character.  On keyboards without an explicit Escape key,": {
            "content": "Control-[ will most likely generate and Escape character.  The\nfollowing list of useful keybindings assumes that `emacs.sl' has been\nloaded.\n\n`File: jed.info,  Node: Modes,  Next: Keyboard Macros,  Prev: Basic Editing,  Up: Top\n",
            "subsections": [
                {
                    "name": "Modes",
                    "content": "Jed supports two internal modes as well as user defined modes.  The\ntwo internal modes consist of a \"C\" mode for C Language programming and\na \"Wrap\" mode for ordinary text editing.  Examples of user defined\nmodes are Fortran mode and DCL mode.\n\nOnline documentation is provided for nearly every mode JED defines.\nFor help on the current mode, press `ESC X' and enter `describemode'.\nA window will appear with a short description of the special features\nof the mode as well as a description of the variables affecting the\nmode.\n\n* Menu:\n\n* Wrap Mode::\n* Smart Quotes::\n* C Mode::\n* Fortran Mode::\n"
                }
            ]
        },
        "File: jed.info,  Node: Wrap Mode,  Next: Smart Quotes,  Up: Modes": {
            "content": "In this mode, text is wrapped at the column given by the `WRAP'\nvariable. The default is 78.  The text does not wrap until the cursor\ngoes beyond the wrap column and a space is inserted.\n\n* Menu:\n\n* Formatting paragraphs::\n",
            "subsections": []
        },
        "File: jed.info,  Node: Formatting paragraphs,  Up: Wrap Mode": {
            "content": "",
            "subsections": []
        },
        "Formatting paragraphs": {
            "content": ".....................\n\nParagraph delimiters are: blank lines, lines that begin with either a\npercent character, `%', or a backslash character `\\'.  This definition\nis ideally suited for editing (La)TeX documents. However, it is\npossible for the user to change this definition.  See the the discussion\nof the hook, `isparagraphseparator', in the section on hooks for\nexplicit details on how to do this.\n\nThe paragraph is formatted according to the indentation of the\ncurrent line.  If the current line is indented, the paragraph will be\ngiven the same indentation.  The default binding for this function is\n`ESC q'.\n\nIn addition, a paragraph may be \"narrowed\" by the `narrowparagraph'\nfunction which is bound to ESC N by default.  This differs from the\nordinary `formatparagraph' function described above in that the right\nmargin is reduced by an amount equal to the indentation of the current\nline. For example:\nThis paragraph is the result of using the\nfunction ``narrowparagraph''.  Note how the\nright margin is less here than in the above\nparagraph.\n\nFinally, if either of these functions is called from the keyboard\nwith a prefix argument, the paragraph will be justified as well.  For\nexample, pressing `ESC 1 ESC N' on the previous paragraph yields:\nThis paragraph  is  the  result   of   using  the\nfunction   ``narrowparagraph''.    Note  how the\nright margin   is less here  than  in   the above\nparagraph.\n\nSee the discussion of `formatparagraphhook' in the section on hooks\nfor details on how this is implemented.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Smart Quotes,  Next: C Mode,  Prev: Wrap Mode,  Up: Modes": {
            "content": "You have probably noticed that many key words in this document are\nquoted in double quotes like \"this is double quoted\" and `this is\nsingle quoted'.  By default, the double quote key (\") and single quote\nkey (') are bound to the function `textsmartquote'.  With this\nbinding and in wrap mode, the single quote key inserts a single quote\nwith the \"proper\" orientation and the double quote key inserts two\nsingle quotes of the \"proper\" direction.  To turn this off, rebind the\nkeys to `selfinsertcmd'.  Some modes already do this (e.g., EDT).\n\nThis brings up the question: if the double quote key is bound to\n`textsmartquote' then how does one insert the character (\")?  The most\ncommon way is to use the `quotedinsert' function which, by default, is\nbound to the single backquote (``') key.  This is the same mechanism\nthat is used to insert control characters.  The other method is to use\nthe fact that if the preceding character is a backslash, `\\', the\ncharacter simply self inserts.  Again, this is ideal for writing TeX\ndocuments.\n",
            "subsections": []
        },
        "File: jed.info,  Node: C Mode,  Next: Fortran Mode,  Prev: Smart Quotes,  Up: Modes": {
            "content": "C Mode facilitates the editing of C files.  Much of the latter part\nof the development of the JED editor was done using this mode.  This\nmode may be customized by a judicious choice of the variables CINDENT\nand CBRACE as well as the bindings of the curly brace keys { and }.",
            "subsections": []
        },
        "Experiment to find what you like or write your own using the S-Lang": {
            "content": "interface.\n\nBy default, the RET key is bound to the function\n`newlineandindent'. This does what its name suggests: inserts a\nnewline and indents.  Again, some modes may rebind this key.  In\naddition, the keys {, }, and TAB are also special in this mode.  The\nTAB key indents the current line and the { and } keys insert themselves\nand reindent.  If you do not like any of these bindings, simply rebind\nthe offending one to `selfinsertcmd'.\n\nFinally, the key sequence ESC ; is bound to a function called\n`cmakecomment'.  This function makes and and indents a C comment to\nthe column specified by the value of the variable `CCommentColumn'.\nIf a comment is already present on the line, it is indented.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Fortran Mode,  Prev: C Mode,  Up: Modes": {
            "content": "Fortran Mode is written entirely in S-Lang and is designed to\nfacilitate the writing of Fortran programs.  It features automatic\nindentation of Fortran code as well as automatic placement of Fortran\nstatement Labels.\n\nIn this mode, the keys 0-9 are bound to a function `forelebel'\nwhich does the following:\n\n1. Inserts the calling character (0-9) into the buffer.\n\n2. If the character is preceded by only other digit characters, it\nassumes the character is for a label and moves it to the\nappropriate position.\n\n3. Reindents the line.\n\nThis function is very similar to the one Emacs uses for labels.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Keyboard Macros,  Next: Shells and Shell Commands,  Prev: Modes,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Keyboard Macros",
                    "content": "JED is able to record a series of keystrokes from the terminal and\nreplay them.  The saved series of keystrokes is known as a keyboard\nmacro.  To begin a keyboard macro, simply enter the begin keyboard\nmacro key sequence which is bound to ^X( if `emacs.sl' is loaded.  To\nstop recording the keystrokes, enter ^X).  Then to \"execute\" the macro,\npress ^Xe.  Please note that it is illegal to execute a macro while\ndefining one and doing so generates an error.  A macro can be aborted at\nanytime by pressing the \u0007 key.\n\nOne nice feature JED includes is the \"macroquery\" function.  That\nis, while defining a macro, the key sequence `\u0018 q' will cause JED to\nissue the prompt `Enter String:' in the minibuffer.  Any string that is\nentered will be inserted into the buffer and the process of defining the\nmacro continues. Every time the macro is executed, JED will prompt for\na NEW string to be inserted.\n\nAny time an error is generated, the process of defining the macro is\naborted as well as execution of the macro.  This is very useful and may\nbe exploited often.  For example, suppose you want to trim excess\nwhitespace from the end of ALL lines in a buffer.  Let us also suppose\nthat the number of lines in the buffer is less than 32000.  Then\nconsider the following keystrokes:\n\n`\u0018 ('\n; begin macro\n\n`\u0005'\n; goto end of line\n\n`ESC \\'\n; trim whitespace\n\n`DOWN'\n; go down one line\n\n`\u0018 )'\n; end macro\n"
                }
            ]
        },
        "Now the macro has been defined.  So move to the top of the buffer and": {
            "content": "execute it 32000 times:\n\n`ESC <'            ; top of buffer\n`ESC 3 2 0 0 0'    ; repeat next command 32000 times\n`\u0018 e'             ; execute macro\n\nIf the buffer has less than 32000 lines, the end of the buffer will\nbe reached and an error will be generated aborting the execution of the\nmacro.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Shells and Shell Commands,  Next: Getting Help,  Prev: Keyboard Macros,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Shells and Shell Commands",
                    "content": "The default binding to execute a shell command and pump the output\nto a buffer is `ESC !'.  JED will prompt for a command line and spawn a\nsubprocess for its execution.\n\nStrictly speaking, JED does not support interactive subprocesses.\nHowever, JED includes S-Lang code that \"emulates\" such a subprocess.\nIt may invoked by typing `shell' at the `M-x' minibuffer prompt.  A\nwindow will be created with a buffer named `*shell*' attached to it."
                }
            ]
        },
        "Any text entered at the system dependent shell prompt will be executed": {
            "content": "in a subprocess and the result stuffed back in the shell buffer. Don't\ntry to execute any commands which try to take over the keyboard or the\nscreen or something undesirable may happen.  Examples of types of\nstupid commands are spawning other editors, logging in to remote\nsystems, et cetera.  Even `chdir' is stupid since its effect is not\npermanent.  That is,\n\n> cd ..\n> dir\n\nwill not do what might naively be expected.  That is, the two commands\nabove are not equivalent to the single command `dir ..'.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Getting Help,  Next: Editing Binary Files,  Prev: Shells and Shell Commands,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Getting Help",
                    "content": "JED's help functions are bound to by default.  For example,  C'\nwill show what function a key carries out,  i' will run JED's info\nreader,  f' will give help on a particular S-Lang function, etc..."
                }
            ]
        },
        "However, some modes may use the key for something else.  For example,": {
            "content": "if EDT mode is in effect, then may be bound to `bol' which causes the\ncursor to move to the beginning of the line. See the section on EDT for\nmore information.\n\nIf JED is properly installed, this entire document is accessable\nfrom within the editor using JED's info reader.   i' will load\n`infomode' allowing the user to browse the document as well as other\n\"info\" documents.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Editing Binary Files,  Next: Dired,  Prev: Getting Help,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Editing Binary Files",
                    "content": "JED may edit binary files as long as the proper precautions are\ntaken. On IBMPC systems, this involves calling the S-Lang function\n`setfiletranslation' with an integer argument.  If the argument is 0,\nfiles are opened as text files; otherwise, they are opened in binary\nmode.  There is no need to call this function for other systems.\nHowever, beware of the user variable `ADDNEWLINE' which if non zero, a\nnewline character will be appended to the file if the last character is\nnot a newline character.  If you are going to edit binary files, it is\nprobably a good idea to set this variable to zero.\n"
                }
            ]
        },
        "File: jed.info,  Node: Dired,  Next: Mail,  Prev: Editing Binary Files,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Dired-- the Directory editor",
                    "content": "In addition to editing files, JED is also able to rename and delete\nthem as well.  JED's Dired mode allows one to do just this is a simple\nand safe manner.\n\nTo run dired, simply press `ESC X' and enter `dired' at the prompt.\nJED will load `dired.sl' and prompt for a directory name.  Once the\ndirectory is given, JED will display a list files in the directory in a\nbuffer named `*dired*'.  One may use normal buffer movemment commands to\nmove around this.   To delete one or more files, use the `d' key\nto \"tag\" the files.  This in itself does not delete them; rather, it\nsimply marks them for deleting.  A capital `D' will appear in the left\nmargin to indicate that a file has been tagged.  Simply hit the u key to\nuntag a file.  The delete key will also untag the previously tagged\nfile.\n\nTo actually delete the tagged files, press the `x' key.  This action\ncauses JED to display a list of the tagged files in a separate window\nand prompt the user for confirmation.  Only when the proper\nconfirmation is given, will the file be deleted.\n\nRenaming a file is just as simple.  Simply move to the line containg\nthe name of the file that you wish to rename and hit the `r' key.  JED\nwill prompt for a filename or a directory name.  If a directory is\ngiven, the file will be moved to the new directory but will keep the\nname.  However, for the operation to succeed, the file must be one the\nsame file system.  To rename tagged files to a different directory\nresiding on the same file system, use the `m' key.  This has the effect\nof moving the tagged file out of the current directory to the new one.\n\nOne may also use the f key to read the file indicated by the cursor\nposition into a buffer for editing.  If the file is a directory, the\ndirectory will be used for dired operations. In addition, one may also\nuse the v to simply \"view\" a file.\n\nFinally, the `g' key will re-read the current directory and the `h'\nand `?' keys provide some help.\n"
                }
            ]
        },
        "File: jed.info,  Node: Mail,  Next: Customization,  Prev: Dired,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Mail",
                    "content": "This section applies to Unix and VMS systems only.  On these\nsystems, it is possible to compose and send mail directly using JED.\nThis assumes that the Unix system has `/usr/ucb/mail'.  It is trivial\nto modify `mail.sl' to support another Unix mailer.  For VMS, JED uses\nthe callable mail interface present on VMS versions 5.0 and later.\n\nThe default binding for the mail is \u0018 m.  Alternatively, one may\npress `ESC X' and enter `mail' at the `M-x' prompt.  The mail function\nwill cause a window to open with a buffer called `*mail*' which\ncontains the three lines:\n\nTo:\nSubject:\n---text follows this line---\n"
                }
            ]
        },
        "Simply enter the email address of the person that you want to send the": {
            "content": "mail to on the line containing `To:' and put the subject of the message\non the next line labeled `Subject:'.  The text that you wish to mail\nfollows the line labeled `---text follows this line---' which is used\nby JED as a marker. After you have composed the mail message, press\n`ESC X' and enter `send' at the `M-x' prompt.  For example, the\nfollowing is an email requesting to be put on the JED mailing list:\n\nTo: jed@jedsoft.org\nSubject: jed mailing list\n---text follows this line---\nHi,\n\nPlease add me to the JED mailing list so that I may be notified\nof upcoming releases of JED.\n\n--Maria\n\nFor VMS systems, the above example will probably fail because an\ninternet address has been used for the example.  For systems using a\nTCP/IP package, it may be necessary to change\n`jed@jedsoft.org' to something like\n`smtp%\"jed@jedsoft.org\"'.\n\nThe mail function looks for a user defined hook called `mailhook'\nand execute it if it exists.  This hook may be used to bind certain\nkeys in the keymap associated with the `*mail*' buffer.  For example,\n\n( \"^C\"  localunsetkey \"send\" \"^C^C\" localsetkey ) mailhook\n\ndefines the key `' in the mail keymap to perform the `send' function.\nOther possibilities include binding a key sequence, say ^C^W, to a\nfunction that inserts the contents of a signature file.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Customization,  Next: Eight Bit Clean Issues,  Prev: Mail,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Customization",
                    "content": "To extend JED, it is necessary to become familiar with the S-Lang\nprogramming language.  S-Lang not a standalone programming language\nlike C, Pascal, etc... Rather it is meant to be embedded into a C\nprogram. The S-Lang programming language itself provides only\narithmetic, looping, and branching constructs.  In addition, it defines\na few other other primitive operations on its data structures.  It is\nup to the application to define other built-in operations tailored to\nthe application.  That is what has been done for the JED editor.  See\nthe document `slang.txt' for S-Lang basics as well as the JED"
                }
            ]
        },
        "Programmer's Manual for functions JED has added to the language.  In": {
            "content": "any case, look at the `*.sl' files for explicit examples.\n\nFor the most part, the average user will simply want to rebind some\nkeys and change some variables (e.g., tab width).  Here I discuss\nsetting keys and the predefined global variables.\n\n* Menu:\n\n* Setting Keys::\n* Predefined Variables::\n* Hooks::\n* S-Lang Programming Hints (Debugging)::\n",
            "subsections": []
        },
        "File: jed.info,  Node: Setting Keys,  Next: Predefined Variables,  Up: Customization": {
            "content": "Defining a key to invoke a certain function is accomplished using the\n`setkey' function. This function takes two arguments: the function to be\nexecuted and the key binding.  For example, suppose that you want to\nbind the key  to cause the cursor to go to the beginning of the current\nline.  The JED function that causes this is `bol'  (See the JED",
            "subsections": []
        },
        "Programmer's Manual for a complete list of functions).  Putting the": {
            "content": "line:\n\n\"bol\"   \"^A\"   setkey\n\nin the startup file `jed.rc' (`.jedrc') file will perform the binding.\nHere `^A' consists of the two characters `^' and `A' which JED will\ninterpret as the single character `Ctrl-A'.  For more examples, see\neither of the S-Lang files `emacs.sl' or `edt.sl'.\n\nIn addition to being able to define keys to execute functions, it is\nalso possible to define a key to directly insert a string of\ncharacters.  For example, suppose that you want to define a key to\ninsert the string `int main(int argc, char argv)' whenever you press\nthe key `ESC m'.  This may be accomplished as follows:\n\n\" int main(int argc, char argv)\"   \"\\em\"  setkey\n\nNotice two things.  First of all, the key sequence `ESC m' has been\nwritten as `\"\\em\"' where `\\e' will be interpreted by JED as ESC. The\nother salient feature is that the first argument to `setkey', the\n\"function\" argument, begins with a space.  This tells JED that it is\nnot be be interpreted as the name of a function; rather, the characters\nfollowing the space are to be inserted into the buffer.  Omitting the\nspace character would cause JED to to execute a function called `int\nmain(int argc, char argv)' which would fail and generate an error.\n\nFinally, it is possible to define a key to execute a series of\nkeystrokes similar to a keyboard macro.  This is done by prefixing the\n\"function\" name with the `@' character.  This instructs JED to\ninterpret the characters following the `@' character as characters\nentered from the keyboard and execute any function that they are bound\nto.  For example, consider the following key definition which will\ngenerate a C language comment to comment out the the current line of\ntext.  In C, this may be achieved by inserting symbol `\"/*\"' at the\nbeginning of the line and inserting `\"*/\"' at the end of the line.\nHence, the sequence is clear (Emacs keybindings):\n\n1.    Goto the beginning of the line:  or decimal `\"\\001\"'.\n\n2.    Insert `\"/*\"'.\n\n3.    Goto end of the line: \u0005 or decimal `\"\\005\"'\n\n4.    Insert `\"*/\"'.\n\nTo bind this sequence of steps to the key sequence `ESC ;', simply\nuse\n\n\n\"@\\001/*\\005*/\"   \"\\e;\"   setkey\n\nAgain, the prefix `@' lets JED know that the remaining characters\nwill carry out the functions they are currently bound to. Also pay\nparticular attention to the way  and \u0005 have been written.  Do not\nattempt to use the ^ to represet \"control\".  It does not have the same\nmeaning in the first argument to the `setkey' function as it does in\nthe second argument.  To have control characters in the first argument,\nyou must enter them as `\\xyz' where xyz is a three digit decimal number\ncoinciding with the ASCII value of the character.  In this notation,\nthe ESC character could have been written as `\\027'.  See the S-Lang\nProgrammer's Reference Manual for further discussion of this notation.\n\nThe `setkey' function sets a key in the `global' keymap from which\nall others are derived.  It is also possible to use the function\n`localsetkey' which operates only upon the current keymap which may or\nmay not be the `global' map.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Predefined Variables,  Next: Hooks,  Prev: Setting Keys,  Up: Customization": {
            "content": "JED includes some predefined variables which the user may change.  By\nconvention, predefined variables are in uppercase.  The variables which\neffect all modes include:\n\n`BLINK'\n(1) if non-zero, blink matching parenthesis.\n\n`TABDEFAULT'\n(8) sets default tab setting for newly created buffers        to\nspecified number of columns.\n\n`TAB'\nValue of tab setting for current buffer.\n\n`ADDNEWLINE'\n(1) adds newline to end of file if needed when writing it out to\nthe             disk.\n\n`METACHAR'\n(-1) prefix for chars with high bit set (see section on eight bit\nclean issues for details)\n\n`DISPLAYEIGHTBIT'\nsee section on eight bit clean issues.\n\n`COLOR'\n(23) IBMPC background color (see `jed.rc' for meaning)\n\n`LINENUMBERS'\n(0) if 1, show current line number on status line\n\n`WANTEOB'\n(0) if 1, [EOB] denotes end of buffer.\n\n`TERMCANNOTINSERT'\n(0) if 1, do not put the terminal in insert mode when writing to\nthe        screen.\n\n`IGNOREBEEP'\n(0) do not beep the terminal when signalling errors\n",
            "subsections": []
        },
        "In addition to the above, there are variables which affect only certain": {
            "content": "modes.  See the section on modes for details.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Hooks,  Next: S-Lang Programming Hints (Debugging),  Prev: Predefined Variables,  Up: Customization": {
            "content": "A hook is a user defined function that JED calls under certain\nconditions which allow the user to modify default actions.  For\nexample, when JED starts up it looks for the existence of a user\ndefined function `commandlinehook'.  If this function exists, JED\ncalls the function.  What the function does is completely arbitrary and\nis left to the discretion of the user.  The startup file, `site.sl',\ndefines such a function which reads in the files listed on the command\nline.  It is also this function which loads the `jed.rc' startup file.\nUnlike the other hooks, this one must be present in the file `site.sl'\nsince it is the only file loaded before calling the hook.\n\nAfter the startup files are loaded, JED calls the hook\n`jedstartuphook' immediately before entering the main editor loop.",
            "subsections": []
        },
        "This hook is useful to modify certain data structures which may not": {
            "content": "have existed when the startup files were loaded.\n\nIn addition to the above hooks, JED currently also looks for:\n\n`suspendhook'\nfunction to be executed before suspending\n\n`resumehook'\nfunction that gets carried out after suspension\n\n`exithook'\ngets executed before exiting JED\n\n`modehook'\nsets buffer mode based on filename extension\n\n`findfilehook'\ncalled before file is read into a buffer.  It currently\nchecks for presence of autosave file and warns user if \t it\nis more recent than file.\n\nSee `site.sl' for explicit examples of the above hooks.\n\nAnother useful hook is `isparagraphseparator'.  This hook is called\nwhen JED searches for the beginning or end of a paragraph.  This search\nis performed by all paragraph formatting functions as well as the\nforward and backward paragraph movement commands. As JED performs the\nsearch, it moves from one line to another testing the line to see if it\nseparates a paragraph.  The function of the hook is to make this\ndecision and return zero if the line does not separate paragraphs or\nreturn one if it does. The default value of this hook may be written in\nS-Lang as\n\n( bol\n\"\\\\\" lookingat {1 return} if\n\"%\"  lookingat {1 return} if\nskipwhite eolp\n) isparagraphseparator\n\nA related hook called after a paragraph is formatted is\n`formatparagraphhook'.  This hook is only called if either\n`formatparagraph' or `narrowparagraph' is called with a prefix digit\nargument.  For example, `formatparagraph' is bound to `ESC q'.  Simply\npressing this key sequence will call `formatparagraph' but\n`formatparagraphhook' will not be called.  However, pressing `ESC 1'\nfollowed by `ESC q' will result in a call to `formatparagraphhook'.",
            "subsections": []
        },
        "Currently, this hook simply justifies the paragraph.  That is, it fills": {
            "content": "each line in the paragraph such that the the line ends at the right\nmargin, which is defined by the `WRAP' variable.\n",
            "subsections": []
        },
        "File: jed.info,  Node: S-Lang Programming Hints (Debugging),  Prev: Hooks,  Up: Customization": {
            "content": "This section assumes some knowledge about S-Lang and is designed to\nexplain how to debug S-Lang routines quickly.  For information about\nS-Lang, read `slang.txt'.\n\nThere are two ways of loading a file of S-Lang code into JED.  The\nmost common way is through the function `evalfile'.  If an error occurs\nwhile loading a file, JED will give some indication of where the problem\nlies by displaying the line number and the offending bit of S-Lang code\nin the minibuffer.  In practice though, this can be quite inefficient.\nThe `evalfile' function is primarily designed to load debugged and\ntested S-Lang code.\n\nThe best way to develop and test S-Lang code with JED is to use the\nfunction `evalbuffer'.  Simply load the piece of code into JED as an\nordinary file, press `ESC X' and enter the function `evalbuffer'  If\nthe piece of code in the buffer has any syntax errors, JED will put the\ncursor on the error.  This is the best way to spot compile time errors\nsuch as syntax errors.  However, this will not catch runtime errors.\n\nWhen a runtime error occurs, JED will put the cursor on the top level\nfunction where the original call was made and NOT the actual location\nof the function.  To aid in determining where an error occurs, JED can\nbe made to give a symbolic traceback.  As the S-Lang runtime stack\nunwinds, S-Lang will simply print the name of function at that\nparticular level.  If the function includes local variables, their\nvalues will be dumped as well.  Hence, it is easy to quickly narrow the\nlocation of an error down to function where the error occurs.  By\ndefault, the traceback is disabled.  The traceback is enabled by\nsetting the S-Lang variable `traceback' to a non-zero value.  It is\nsimpliest to just press `\u0018 ESC' and enter `1 =traceback' at the JED\nprompt.  This is one of those times where one needs access to the\n`S-Lang>' prompt and not the `M-x' prompt.  For example, consider the\nfollowing piece of code:\n\n( {}  forever ) funtwo  ;; loops forever\n( funtwo ) funone      ;; calls funtwo-- never returns\n\nSimply enter the above into an empty JED `*scratch*' buffer, then\npress `\u0018 ESC' and enter `1 =traceback evalbuffer funone'.  This will\nturn on tracebacks, evaluate the buffer and call the function\n`funone'.  JED will then be put into an infinite loop which can only\nbe stopped by pressing the abort character which by default is \u0007.",
            "subsections": []
        },
        "Doing so, will produce the traceback messages": {
            "content": "S-Lang Traceback: funtwo\nS-Lang Traceback: funone\n\nin addition to the error message `User Break!'.  Of course, this\ntechnique only narrows down the source of an error to a particular\nfunction. To proceed further, it may necessary to put \"print\"\nstatements at suitable places in the function.  There are several ways\nto do this:\n\n1. Use the `insert' function to insert the contents of a variable\ninto the current buffer.\n\n2. Use the `error' function to abort the function and display the\nvalue of a variable in the minibuffer.\n\n3. Use the `message' function to display the value of a variable in\nthe minibuffer.  Unlike `error', the `message' function does not\nabort the execution of the function.\n\nSince each of these functions require a string argument, it is\nusually best to call the `string' function first for the conversion\nfollowed by the output function.  This has to be done anyway if it is\ndesired to get the contents of an integer variable.  Although the\nsecond approach is prehaps the most useful in practice, it is somtimes\nappropriate to use a combination of these techniques.\n\nFinally, to print the entire stack, one can use the `printstack'\nfunction.  This function dumps the S-Lang runtime stack into the\n`*traceback*' buffer.\n\nSince S-Lang is an interpreted language, judicious application of\nthe above techniques should lead very quickly to the source of any\nerrors.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Eight Bit Clean Issues,  Next: Miscellaneous,  Prev: Customization,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Eight Bit Clean Issues",
                    "content": "* Menu:\n\n* Displaying Characters with the High Bit Set::\n* Inputting Characters with the High Bit Set::\n* Upper Case - Lower Case Conversions::\n"
                }
            ]
        },
        "File: jed.info,  Node: Displaying Characters with the High Bit Set,  Next: Inputting Characters with the High Bit Set,  Up: Eight Bit Clean Issues": {
            "content": "There are several issues to consider here. The most important issue\nis how to get JED to display 8 bit characters in a \"clean\" way.  By\n\"clean\" I mean any character with the high bit set is sent to the\ndisplay device as is.  This is achieved by putting the line:\n\n1 =DISPLAYEIGHTBIT\n\nin the `jed.rc' (`.jedrc') startup file.  European systems might want\nto put this in the file `site.sl' for all users.  The default is 1 so\nunless its value has been changed, this step may not be necessary.\n\nThere is another issue. Suppose you want to display 8 bit characters\nwith extended Ascii codes greater than or equal to some value, say 160.\nThis is done by putting `160 =DISPLAYEIGHTBIT'.  I believe that ISO",
            "subsections": []
        },
        "Latin character sets assume this.  This is the default value for Unix": {
            "content": "and VMS systems.  See also the file `iso-latin.sl'.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Inputting Characters with the High Bit Set,  Next: Upper Case - Lower Case Conversions,  Prev: Displaying Characters with the High Bit Set,  Up: Eight Bit Clean Issues": {
            "content": "Inputting a character into JED with the high bit set is another\nissue.  How JED interprets this is controlled by the variable\n`METACHAR'.  Specifically what happens is this: When JED reads a\ncharacter from the input device with the high bit set, it:\n\n1. Checks the value of `METACHAR'.  If this value is -1, JED simply\ninserts the character into the buffer.\n\n2. For any other value of `METACHAR' in the range 0 to 255, JED\nreturns two 7-bit characters.  The first character returned is\n`METACHAR' itself.  The next character returned is the original\ncharacter but with the high bit stripped.\n\nThe default value of `METACHAR' is -1 which means that when JED sees a\ncharacter with the high bit set, JED leaves it as is.  Please note that\na character with the high bit set  cannot be the prefix character of a\nkeymap. It can be a part of the keymap but not the prefix.\n\nSome systems only handle 7-bit character sequences and as a result,\nJED will only see 7-bit characters.  JED is still able to insert any\ncharacter in the range 0-255 on a 7-bit system.  This is done through\nthe use of the `quotedinsert' function which, by default, is bound to\nthe backquote key `.  If the `quotedinsert' function is called with a\ndigit argument (repeat argument), the character with the value of the\nargument is inserted into the buffer.  Operationally, one hits ESC,\nenters the extended Ascii code and hits the backquote key.  For\nexample, to insert character 255 into the buffer, simply press the\nfollowing five keys: `ESC 2 5 5 `'.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Upper Case - Lower Case Conversions,  Prev: Inputting Characters with the High Bit Set,  Up: Eight Bit Clean Issues": {
            "content": "The above discussion centers around input and output of characters\nwith the high bit set.  How JED treats them internally is another issue\nand new questions arise.  For example, what is the uppercase equivalent\nof a character with ASCII code 231?  This may vary from language to\nlanguage.  Some languages even have characters whose uppercase\nequivalent correspond to multiple characters.  For JED, the following\nassumptions have been made:\n\n1.    Each character is only 8 bits.\n\n2.    Each character has a unique uppercase equivalent.\n\n3.    Each character has a unique lowercase equivalent.\n\nIt would be nice if a fourth assumption could be made:\n\n4. The value of the lowercase of a character is greater than or\nequal to its uppercase counterpart.\n",
            "subsections": []
        },
        "However, apparently this is not possible since most IBMPC character sets": {
            "content": "violate this assumption.  Hence, JED does not assume it.  Suppose X is\nthe upper case value of some character and suppose Y is its lower case\nvalue.  Then to make JED aware of this fact and use it it case\nconversions, it may be necessary to put a statement of the form:\n\nX Y definecase\n\nin the startup file.  For example, suppose 211 is the uppercase of 244.\nThen, the line `211 244 definecase' will make JED use this fact in\noperations involving the case of a character.\n\nThis has already been done for the ISO Latin 1 character set. See\nthe file `iso-latin.sl' for details. For MSDOS, this will not work.\nInstead use the files `dos437.sl' and `dos850.sl'.  By default, JED's\ninternal lookup tables are initialized to the ISO Latin set for Unix\nand VMS systems and to the DOS 437 code page for the IBMPC.  To change\nthe defaults, it is only necessary to load the appropriate file. For\nexample, to load `dos850.sl' definitions, put\n\n\"dos850.sl\" evalfile pop\n\nin the startup file (e.g., `site.sl').  In addition to\nuppercase/lowercase information, these files also contain word\ndefinitions, i.e., which characters constitute a \"word\".\n",
            "subsections": []
        },
        "File: jed.info,  Node: Miscellaneous,  Prev: Eight Bit Clean Issues,  Up: Top": {
            "content": "",
            "subsections": [
                {
                    "name": "Miscellaneous",
                    "content": "* Menu:\n\n* Abort Character::\n* Input Translation::\n* Display Sizes::\n"
                }
            ]
        },
        "File: jed.info,  Node: Abort Character,  Next: Input Translation,  Up: Miscellaneous": {
            "content": "The abort character (\u0007 by default) is special and should not be\nrebound.  On the IBMPC, the keyboard interrupt 0x09 is hooked and a quit\ncondition is signaled when it is pressed.  For this reason, it should\nnot be used in any keybindings. A similar statement holds for the other\nsystems.\n\nThis character may be changed using the function `setabortchar'",
            "subsections": []
        },
        "Using this function affects all keymaps.  For example, putting the line": {
            "content": "30 setabortchar\n\nin your `jed.rc' file will change the abort character from its current\nvalue to 30 which is Control-^.\n",
            "subsections": []
        },
        "File: jed.info,  Node: Input Translation,  Next: Display Sizes,  Prev: Abort Character,  Up: Miscellaneous": {
            "content": "By using the function `mapinput' the user is able to remap\ncharacters input from the terminal before JED's keymap routines have a\nchance to act upon them.  This is useful when it is difficult to get\nJED to see certain characters.  For example, consider the \u0013 character.",
            "subsections": []
        },
        "This character is especially notorious because many systems use it and": {
            "content": "\u0011 for flow control.  Nevertheless Emacs uses \u0013 for searching.  Short\nof rebinding all keys which involve a \u0013 how does one work with\nfunctions that are bound to key sequences using \u0013?  This is where\n`mapinput' comes into play.  The `mapinput' function requires two\ninteger arguments which define how a given ascii character is to be\nmapped.  Suppose that you wish to substitute \u001c for \u0013 everywhere.  The\nline\n\n28  19  mapinput\n\nwill do the trick.  Here 28 is the ascii character of \u001c and 19 is the\nascii character for the \u0013.\n\nAs another example, consider the case where the backspace key sends\nout a instead of the DEL character (?).\n\n8  127 mapinput\n\nwill map the (8) to the delete character (127).\n",
            "subsections": []
        },
        "File: jed.info,  Node: Display Sizes,  Prev: Input Translation,  Up: Miscellaneous": {
            "content": "On VMS and unix systems, the screen size may be changed to either 80\nor 132 columns by using the functions `w80' and `w132' respectively.\nSimply enter the appropriate function name at the `M-x' prompt in the\nminibuffer.  The default binding for access to the minibuffer is `ESC\nX'.  Most window systems, e.g., DECWindows, allow the window size to be\nchanged.  When this is done, JED should automatically adapt to the new\nsize.\n\nOn the PC, at this time the screen size cannot be changed while JED\nis running.  Instead it is necessary to exit JED first then set the\ndisplay size and rerun JED.\n\n",
            "subsections": []
        }
    },
    "flags": [],
    "examples": [],
    "see_also": []
}