1 =========================================
2 Nirvana Editor (NEdit) Help Documentation
3 =========================================
5 NEdit 5.4DEV August 9, 2002
7 NEdit is a standard GUI (Graphical User Interface) style text editor for
8 programs and plain-text files. Users of Macintosh and MS Windows based text
9 editors should find NEdit a familiar and comfortable environment. NEdit
10 provides all of the standard menu, dialog, editing, and mouse support, as
11 well as all of the standard shortcuts to which the users of modern GUI based
12 environments are accustomed. For users of older style Unix editors, welcome
13 to the world of mouse-based editing!
15 NEdit is freely distributed under the terms of the Gnu General Public
22 NEdit is a single stand-alone executable file which can be installed by
23 simply copying the appropriate executable "nedit" for your system. Both
24 sources and executables are available from http://www.nedit.org. The
25 optional "nc" (NEdit Client) program is also available for users who want to
26 run nedit in client/server mode.
32 Help sections of interest to new users are listed under the "Basic
33 Operation" heading in the top-level Help menu:
36 * Finding and Replacing Text
40 * Shifting and Filling
42 Programmers should also read the introductory section under the "Features
43 for Programming" section:
45 Programming with NEdit
47 If you get into trouble, the Undo command in the Edit menu can reverse any
48 modifications that you make. NEdit does not change the file you are editing
49 until you tell it to Save.
52 EDITING AN EXISTING FILE
54 To open an existing file, choose Open... from the file menu. Select the file
55 that you want to open in the pop-up dialog that appears and click on OK. You
56 may open any number of files at the same time. Each file will appear in its
57 own editor window. Using Open... rather than re-typing the NEdit command and
58 running additional copies of NEdit, will give you quick access to all of the
59 files you have open via the Windows menu, and ensure that you don't
60 accidentally open the same file twice. NEdit has no "main" window. It
61 remains running as long as at least one editor window is open.
66 If you already have an empty (Untitled) window displayed, just begin typing
67 in the window. To create a new Untitled window, choose New from the File
68 menu. To give the file a name and save its contents to the disk, choose Save
69 or Save As... from the File menu.
74 NEdit maintains periodic backups of the file you are editing so that you can
75 recover the file in the event of a problem such as a system crash, network
76 failure, or X server crash. These files are saved under the name `~filename`
77 (on Unix) or `_filename` (on VMS), where filename is the name of the file
78 you were editing. If an NEdit process is killed, some of these backup files
79 may remain in your directory. (To remove one of these files on Unix, you may
80 have to prefix the `~' (tilde) character with a (backslash) to prevent the
81 shell from interpreting it as a special character.)
86 As you become more familiar with NEdit, substitute the control and function
87 keys shown on the right side of the menus for pulling down menus with the
90 Dialogs are also streamlined so you can enter information quickly and
91 without using the mouse*. To move the keyboard focus around a dialog, use
92 the tab and arrow keys. One of the buttons in a dialog is usually drawn with
93 a thick, indented, outline. This button can be activated by pressing Return
94 or Enter. The Cancel or Dismiss button can be activated by pressing escape.
95 For example, to replace the string "thing" with "things" type:
97 <ctrl-r>thing<tab>things<return>
99 To open a file named "whole_earth.c", type:
103 (how much of the filename you need to type depends on the other files in the
104 directory). See the section called "Keyboard Shortcuts" for more details.
106 * Users who have set their keyboard focus mode to "pointer" should set
107 "Popups Under Pointer" in the Default Settings menu to avoid the additional
108 step of moving the mouse into the dialog.
118 NEdit has two general types of selections, primary (highlighted text), and
119 secondary (underlined text). Selections can cover either a simple range of
120 text between two points in the file, or they can cover a rectangular area of
121 the file. Rectangular selections are only useful with non-proportional
122 (fixed spacing) fonts.
124 To select text for copying, deleting, or replacing, press the left mouse
125 button with the pointer at one end of the text you want to select, and drag
126 it to the other end. The text will become highlighted. To select a whole
127 word, double click (click twice quickly in succession). Double clicking and
128 then dragging the mouse will select a number of words. Similarly, you can
129 select a whole line or a number of lines by triple clicking or triple
130 clicking and dragging. Quadruple clicking selects the whole file. After
131 releasing the mouse button, you can still adjust a selection by holding down
132 the shift key and dragging on either end of the selection. To delete the
133 selected text, press delete or backspace. To replace it, begin typing.
135 To select a rectangle or column of text, hold the Ctrl key while dragging
136 the mouse. Rectangular selections can be used in any context that normal
137 selections can be used, including cutting and pasting, filling, shifting,
138 dragging, and searching. Operations on rectangular selections automatically
139 fill in tabs and spaces to maintain alignment of text within and to the
140 right of the selection. Note that the interpretation of rectangular
141 selections by Fill Paragraph is slightly different from that of other
142 commands, the section titled "Shifting and Filling" has details.
144 The middle mouse button can be used to make an additional selection (called
145 the secondary selection). As soon as the button is released, the contents of
146 this selection will be copied to the insert position of the window where the
147 mouse was last clicked (the destination window). This position is marked by
148 a caret shaped cursor when the mouse is outside of the destination window.
149 If there is a (primary) selection, adjacent to the cursor in the window, the
150 new text will replace the selected text. Holding the shift key while making
151 the secondary selection will move the text, deleting it at the site of the
152 secondary selection, rather than copying it.
154 Selected text can also be dragged to a new location in the file using the
155 middle mouse button. Holding the shift key while dragging the text will copy
156 the selected text, leaving the original text in place. Holding the control
157 key will drag the text in overlay mode.
159 Normally, dragging moves text by removing it from the selected position at
160 the start of the drag, and inserting it at a new position relative to to the
161 mouse. Dragging a block of text over existing characters, displaces the
162 characters to the end of the selection. In overlay mode, characters which
163 are occluded by blocks of text being dragged are simply removed. When
164 dragging non-rectangular selections, overlay mode also converts the
165 selection to rectangular form, allowing it to be dragged outside of the
166 bounds of the existing text.
168 The section "Using the Mouse" sumarizes the mouse commands for making
169 primary and secondary selections. Primary selections can also be made via
170 keyboard commands, see "Keyboard Shortcuts".
172 --------------------------
173 FINDING AND REPLACING TEXT
174 --------------------------
176 The Search menu contains a number of commands for finding and replacing
179 The Find... and Replace... commands present dialogs for entering text for
180 searching and replacing. These dialogs also allow you to choose whether you
181 want the search to be sensitive to upper and lower case, or whether to use
182 the standard Unix pattern matching characters (regular expressions).
183 Searches begin at the current text insertion position.
185 Find Again and Replace Again repeat the last find or replace command without
186 prompting for search strings. To selectively replace text, use the two
187 commands in combination: Find Again, then Replace Again if the highlighted
188 string should be replaced, or Find Again again to go to the next string.
190 Find Selection searches for the text contained in the current primary
191 selection (see Selecting Text). The selected text does not have to be in the
192 current editor window, it may even be in another program. For example, if
193 the word dog appears somewhere in a window on your screen, and you want to
194 find it in the file you are editing, select the word dog by dragging the
195 mouse across it, switch to your NEdit window and choose Find Selection from
198 Find Incremental is yet another variation on searching, where every
199 character typed triggers a new search. Incremental searching is generally
200 the quickest way to find something in a file, because it gives you the
201 immediate feedback of seeing how your search is progressing, so you never
202 need to type more than the minimally sufficient search string to reach your
208 Holding down the shift key while choosing any of the search or replace
209 commands from the menu (or using the keyboard shortcut), will search in the
210 reverse direction. Users who have set the search direction using the buttons
211 in the search dialog, may find it a bit confusing that Find Again and
212 Replace Again don't continue in the same direction as the original search
213 (for experienced users, consistency of the direction implied by the shift
214 key is more important).
217 SELECTIVE REPLACEMENT
219 To replace only some occurrences of a string within a file, choose
220 Replace... from the Search menu, enter the string to search for and the
221 string to substitute, and finish by pressing the Find button. When the first
222 occurrence is highlighted, use either Replace Again (^T) to replace it, or
223 Find Again (^G) to move to the next occurrence without replacing it, and
224 continue in such a manner through all occurrences of interest.
226 To replace all occurrences of a string within some range of text, select the
227 range (see Selecting Text), choose Replace... from the Search menu, type the
228 string to search for and the string to substitute, and press the "R. in
229 Selection" button in the dialog. Note that selecting text in the Replace...
230 dialog will unselect the text in the window.
236 The easiest way to copy and move text around in your file or between
237 windows, is to use the clipboard, an imaginary area that temporarily stores
238 text and data. The Cut command removes the selected text (see Selecting
239 Text) from your file and places it in the clipboard. Once text is in the
240 clipboard, the Paste command will copy it to the insert position in the
241 current window. For example, to move some text from one place to another,
242 select it by dragging the mouse over it, choose Cut to remove it, click the
243 pointer to move the insert point where you want the text inserted, then
244 choose Paste to insert it. Copy copies text to the clipboard without
245 deleting it from your file. You can also use the clipboard to transfer text
246 to and from other Motif programs and X programs which make proper use of the
249 There are many other methods for copying and moving text within NEdit
250 windows and between NEdit and other programs. The most common such method is
251 clicking the middle mouse button to copy the primary selection (to the
252 clicked position). Copying the selection by clicking the middle mouse button
253 in many cases is the only way to transfer data to and from many X programs.
254 Holding the Shift key while clicking the middle mouse button moves the text,
255 deleting it from its original position, rather than copying it. Other
256 methods for transferring text include secondary selections, primary
257 selection dragging, keyboard-based selection copying, and drag and drop.
258 These are described in detail in the sections: "Selecting Text",
259 "Using_the_Mouse_", and "Keyboard Shortcuts".
265 Mouse-based editing is what NEdit is all about, and learning to use the more
266 advanced features like secondary selections and primary selection dragging
267 will be well worth your while.
269 If you don't have time to learn everything, you can get by adequately with
270 just the left mouse button: Clicking the left button moves the cursor.
271 Dragging with the left button makes a selection. Holding the shift key while
272 clicking extends the existing selection, or begins a selection between the
273 cursor and the mouse. Double or triple clicking selects a whole word or a
276 This section will make more sense if you also read the section called,
277 "Selecting Text", which explains the terminology of selections, that is,
278 what is meant by primary, secondary, rectangular, etc.
281 BUTTON AND MODIFIER KEY SUMMARY
283 General meaning of mouse buttons and modifier keys:
288 Button 1 (left) Cursor position and primary selection
290 Button 2 (middle) Secondary selections, and dragging and
291 copying the primary selection
293 Button 3 (right) Quick-access programmable menu and pan
299 Shift On primary selections, (left mouse button):
300 Extends selection to the mouse pointer
301 On secondary and copy operations, (middle):
302 Toggles between move and copy
304 Ctrl Makes selection rectangular or insertion
307 Alt* (on release) Exchange primary and secondary
313 The left mouse button is used to position the cursor and to make primary
316 Click Moves the cursor
318 Double Click Selects a whole word
320 Triple Click Selects a whole line
322 Quad Click Selects the whole file
324 Shift Click Adjusts (extends or shrinks) the
325 selection, or if there is no existing
326 selection, begins a new selection
327 between the cursor and the mouse.
329 Ctrl+Shift+ Adjusts (extends or shrinks) the
330 Click selection rectangularly.
332 Drag Selects text between where the mouse
333 was pressed and where it was released.
335 Ctrl+Drag Selects rectangle between where the
336 mouse was pressed and where it was
342 The right mouse button posts a programmable menu for frequently used
345 Click/Drag Pops up the background menu (programmed
346 from Preferences -> Default Settings ->
347 Customize Menus -> Window Background).
349 Ctrl+Drag Pan scrolling. Scrolls the window
350 both vertically and horizontally, as if
351 you had grabbed it with your mouse.
356 The middle mouse button is for making secondary selections, and copying and
357 dragging the primary selection.
359 Click Copies the primary selection to the
362 Shift+Click Moves the primary selection to the
363 clicked position, deleting it from its
366 Drag 1) Outside of the primary selection:
367 Begins a secondary selection.
368 2) Inside of the primary selection:
369 Moves the selection by dragging.
371 Ctrl+Drag 1) Outside of the primary selection:
372 Begins a rectangular secondary
374 2) Inside of the primary selection:
375 Drags the selection in overlay
378 When the mouse button is released after creating a secondary selection:
380 No Modifiers If there is a primary selection,
381 replaces it with the secondary
382 selection. Otherwise, inserts the
383 secondary selection at the cursor
386 Shift Move the secondary selection, deleting
387 it from its original position. If
388 there is a primary selection, the move
389 will replace the primary selection
390 with the secondary selection.
391 Otherwise, moves the secondary
392 selection to to the cursor position.
394 Alt* Exchange the primary and secondary
397 While moving the primary selection by dragging with the middle mouse button:
399 Shift Leaves a copy of the original
400 selection in place rather than
401 removing it or blanking the area.
403 Ctrl Changes from insert mode to overlay
406 Escape Cancels drag in progress.
408 Overlay Mode: Normally, dragging moves text by removing it from the selected
409 position at the start of the drag, and inserting it at a new position
410 relative to to the mouse. When you drag a block of text over existing
411 characters, the existing characters are displaced to the end of the
412 selection. In overlay mode, characters which are occluded by blocks of text
413 being dragged are simply removed. When dragging non-rectangular selections,
414 overlay mode also converts the selection to rectangular form, allowing it to
415 be dragged outside of the bounds of the existing text.
417 Mouse buttons 4 and 5 are usually represented by a mouse wheel nowadays.
418 They are used to scroll up or down in the text window.
420 * The Alt key may be labeled Meta or Compose-Character on some keyboards.
421 Some window managers, including default configurations of mwm, bind
422 combinations of the Alt key and mouse buttons to window manager operations.
423 In NEdit, Alt is only used on button release, so regardless of the window
424 manager bindings for Alt-modified mouse buttons, you can still do the
425 corresponding NEdit operation by using the Alt key AFTER the initial mouse
426 press, so that Alt is held while you release the mouse button. If you find
427 this difficult or annoying, you can re-configure most window managers to
428 skip this binding, or you can re-configure NEdit to use a different key
435 Most of the keyboard shortcuts in NEdit are shown on the right hand sides of
436 the pull-down menus. However, there are more which are not as obvious. These
437 include; dialog button shortcuts; menu and dialog mnemonics; labeled
438 keyboard keys, such as the arrows, page-up, page-down, and home; and
439 optional Shift modifiers on accelerator keys, like [Shift]Ctrl+F.
444 Pressing the key combinations shown on the right of the menu items is a
445 shortcut for selecting the menu item with the mouse. Some items have the
446 shift key enclosed in brackets, such as [Shift]Ctrl+F. This indicates that
447 the shift key is optional. In search commands, including the shift key
448 reverses the direction of the search. In Shift commands, it makes the
449 command shift the selected text by a whole tab stop rather than by single
455 Pressing the Alt key in combination with one of the underlined characters in
456 the menu bar pulls down that menu. Once the menu is pulled down, typing the
457 underlined characters in a menu item (without the Alt key) activates that
458 item. With a menu pulled down, you can also use the arrow keys to select
459 menu items, and the Space or Enter keys to activate them.
462 KEYBOARD SHORTCUTS WITHIN DIALOGS
464 One button in a dialog is usually marked with a thick indented outline.
465 Pressing the Return or Enter key activates this button.
467 All dialogs have either a Cancel or Dismiss button. This button can be
468 activated by pressing the Escape (or Esc) key.
470 Pressing the tab key moves the keyboard focus to the next item in a dialog.
471 Within an associated group of buttons, the arrow keys move the focus among
472 the buttons. Shift+Tab moves backward through the items.
474 Most items in dialogs have an underline under one character in their name.
475 Pressing the Alt key along with this character, activates a button as if you
476 had pressed it with the mouse, or moves the keyboard focus to the associated
479 You can select items from a list by using the arrow keys to move the
480 selection and space to select.
482 In file selection dialogs, you can type the beginning characters of the file
483 name or directory in the list to select files
486 LABELED FUNCTION KEYS
488 The labeled function keys on standard workstation and PC keyboards, like the
489 arrows, and page-up and page-down, are active in NEdit, though not shown in
492 Holding down the control key while pressing a named key extends the scope of
493 the action that it performs. For example, Home normally moves the insert
494 cursor the beginning of a line. Ctrl+Home moves it to the beginning of the
495 file. Backspace deletes one character, Ctrl+Backspace deletes one word.
497 Holding down the shift key while pressing a named key begins or extends a
498 selection. Combining the shift and control keys combines their actions. For
499 example, to select a word without using the mouse, position the cursor at
500 the beginning of the word and press Ctrl+Shift+RightArrow. The Alt key
501 modifies selection commands to make the selection rectangular.
503 Under X and Motif, there are several levels of translation between keyboard
504 keys and the actions they perform in a program. The "Customizing NEdit", and
505 "X Resources" sections of the Help menu have more information on this
506 subject. Because of all of this configurability, and since keyboards and
507 standards for the meaning of some keys vary from machine to machine, the
508 mappings may be changed from the defaults listed below.
511 MODIFIER KEYS (IN GENERAL)
513 Ctrl Extends the scope of the action that the key
514 would otherwise perform. For example, Home
515 normally moves the insert cursor to the beginning
516 of a line. Ctrl+Home moves it to the beginning of
517 the file. Backspace deletes one character, Ctrl+
518 Backspace deletes one word.
520 Shift Extends the selection to the cursor position. If
521 there's no selection, begins one between the old
522 and new cursor positions.
524 Alt When modifying a selection, makes the selection
527 (For the effects of modifier keys on mouse button presses, see the section
528 titled "Using the Mouse")
533 Escape Cancels operation in progress: menu
534 selection, drag, selection, etc. Also
535 equivalent to cancel button in dialogs.
537 Backspace Delete the character before the cursor
539 Ctrl+BS Delete the word before the cursor
543 Left Move the cursor to the left one character
545 Ctrl+Left Move the cursor backward one word
546 (Word delimiters are settable, see
547 "Customizing NEdit", and "X_Resources_")
549 Right Move the cursor to the right one character
551 Ctrl+Right Move the cursor forward one word
553 Up Move the cursor up one line
555 Ctrl+Up Move the cursor up one paragraph.
556 (Paragraphs are delimited by blank lines)
558 Down Move the cursor down one line.
560 Ctrl+Down Move the cursor down one paragraph.
562 Ctrl+Return Return with automatic indent, regardless
563 of the setting of Auto Indent.
565 Shift+Return Return without automatic indent,
566 regardless of the setting of Auto Indent.
568 Ctrl+Tab Insert an ASCII tab character, without
569 processing emulated tabs.
571 Alt+Ctrl+<c> Insert the control-code equivalent of
574 Ctrl+/ Select everything (same as Select
579 Ctrl+U Delete to start of line
584 Ctrl+Insert Copy the primary selection to the
585 clipboard (same as Copy menu item or ^C)
586 for compatibility with Motif standard key
589 Insert Copy the primary selection to the cursor
592 Delete Delete the character before the cursor.
593 (Can be configured to delete the character
594 after the cursor, see "Customizing NEdit",
597 Ctrl+Delete Delete to end of line.
599 Shift+Delete Cut, remove the currently selected text
600 and place it in the clipboard. (same as
601 Cut menu item or ^X) for compatibility
602 with Motif standard key binding
604 Delete Cut the primary selection to the cursor
607 Home Move the cursor to the beginning of the
610 Ctrl+Home Move the cursor to the beginning of the
613 End Move the cursor to the end of the line
615 Ctrl+End Move the cursor to the end of the file
617 PageUp Scroll and move the cursor up by one page.
619 Ctrl+PageUp Scroll and move the cursor left by one
621 PageDown Scroll and move the cursor down by one
624 Ctrl+PageDown Scroll and move the cursor right by one
627 F10 Make the menu bar active for keyboard
628 input (Arrow Keys, Return, Escape,
634 On machines with different styles of keyboards, generally, text editing
635 actions are properly matched to the labeled keys, such as Remove,
636 Next-screen, etc.. If you prefer different key bindings, see the section
637 titled "Key Binding" under the Customizing heading in the Help menu.
644 SHIFT LEFT, SHIFT RIGHT
646 While shifting blocks of text is most important for programmers (See
647 Features for Programming), it is also useful for other tasks, such as
648 creating indented paragraphs.
650 To shift a block of text one tab stop to the right, select the text, then
651 choose Shift Right from the Edit menu. Note that the accelerator keys for
652 these menu items are Ctrl+9 and Ctrl+0, which correspond to the right and
653 left parenthesis on most keyboards. Remember them as adjusting the text in
654 the direction pointed to by the parenthesis character. Holding the Shift key
655 while selecting either Shift Left or Shift Right will shift the text by one
658 It is also possible to shift blocks of text by selecting the text
659 rectangularly, and dragging it left or right (and up or down as well). Using
660 a rectangular selection also causes tabs within the selection to be
661 recalculated and substituted, such that the non-whitespace characters remain
662 stationary with respect to the selection.
667 Text filling using the Fill Paragraph command in the Edit menu is one of the
668 most important concepts in NEdit. And it will be well worth your while to
669 understand how to use it properly.
671 In plain text files, unlike word-processor files, there is no way to tell
672 which lines are continuations of other lines, and which lines are meant to
673 be separate, because there is no distinction in meaning between newline
674 characters which separate lines in a paragraph, and ones which separate
675 paragraphs from other text. This makes it impossible for a text editor like
676 NEdit to tell parts of the text which belong together as a paragraph from
677 carefully arranged individual lines.
679 In continuous wrap mode (Preferences -> Wrap -> Continuous), lines
680 automatically wrap and unwrap themselves to line up properly at the right
681 margin. In this mode, you simply omit the newlines within paragraphs and let
682 NEdit make the line breaks as needed. Unfortunately, continuous wrap mode is
683 not appropriate in the majority of situations, because files with extremely
684 long lines are not common under Unix and may not be compatible with all
685 tools, and because you can't achieve effects like indented sections,
686 columns, or program comments, and still take advantage of the automatic
689 Without continuous wrapping, paragraph filling is not entirely automatic.
690 Auto-Newline wrapping keeps paragraphs lined up as you type, but once
691 entered, NEdit can no longer distinguish newlines which join wrapped text,
692 and newlines which must be preserved. Therefore, editing in the middle of a
693 paragraph will often leave the right margin messy and uneven.
695 Since NEdit can't act automatically to keep your text lined up, you need to
696 tell it explicitly where to operate, and that is what Fill Paragraph is for.
697 It arranges lines to fill the space between two margins, wrapping the lines
698 neatly at word boundaries. Normally, the left margin for filling is inferred
699 from the text being filled. The first line of each paragraph is considered
700 special, and its left indentation is maintained separately from the
701 remaining lines (for leading indents, bullet points, numbered paragraphs,
702 etc.). Otherwise, the left margin is determined by the furthest left
703 non-whitespace character. The right margin is either the Wrap Margin, set in
704 the preferences menu (by default, the right edge of the window), or can also
705 be chosen on the fly by using a rectangular selection (see below).
707 There are three ways to use Fill Paragraph. The simplest is, while you are
708 typing text, and there is no selection, simply select Fill Paragraph (or
709 type Ctrl+J), and NEdit will arrange the text in the paragraph adjacent to
710 the cursor. A paragraph, in this case, means an area of text delimited by
713 The second way to use Fill Paragraph is with a selection. If you select a
714 range of text and then chose Fill Paragraph, all of the text in the
715 selection will be filled. Again, continuous text between blank lines is
716 interpreted as paragraphs and filled individually, respecting leading
717 indents and blank lines.
719 The third, and most versatile, way to use Fill Paragraph is with a
720 rectangular selection. Fill Paragraph treats rectangular selections
721 differently from other commands. Instead of simply filling the text inside
722 the rectangular selection, NEdit interprets the right edge of the selection
723 as the requested wrap margin. Text to the left of the selection is not
724 disturbed (the usual interpretation of a rectangular selection), but text to
725 the right of the selection is included in the operation and is pulled in to
726 the selected region. This method enables you to fill text to an arbitrary
727 right margin, without going back and forth to the wrap-margin dialog, as
728 well as to exclude text to the left of the selection such as comment bars or
735 While plain-text is probably the simplest and most interchangeable file
736 format in the computer world, there is still variation in what plain-text
737 means from system to system. Plain-text files can differ in character set,
738 line termination, and wrapping.
740 While character set differences are the most obvious and pose the most
741 challenge to portability, they affect NEdit only indirectly via the same
742 font and localization mechanisms common to all X applications. If your
743 system is set up properly, you will probably never see character-set related
744 problems in NEdit. NEdit can not display Unicode text files, or any
745 multi-byte character set.
747 The primary difference between an MS DOS format file and a Unix format file,
748 is how the lines are terminated. Unix uses a single newline character. MS
749 DOS uses a carriage-return and a newline. NEdit can read and write both file
750 formats, but internally, it uses the single character Unix standard. NEdit
751 auto-detects MS DOS format files based on the line termination at the start
752 of the file. Files are judged to be DOS format if all of the first five line
753 terminators, within a maximum range, are DOS-style. To change the format in
754 which NEdit writes a file from DOS to Unix or visa versa, use the Save As...
755 command and check or un-check the MS DOS Format button.
757 Wrapping within text files can vary among individual users, as well as from
758 system to system. Both Windows and MacOS make frequent use of plain text
759 files with no implicit right margin. In these files, wrapping is determined
760 by the tool which displays them. Files of this style also exist on Unix
761 systems, despite the fact that they are not supported by all Unix utilities.
762 To display this kind of file properly in NEdit, you have to select the wrap
763 style called Continuous. Wrapping modes are discussed in the sections:
764 Customizing -> Preferences, and Basic Operation -> Shifting and Filling.
766 The last and most minute of format differences is the terminating newline.
767 Some Unix compilers and utilities require a final terminating newline on all
768 files they read and fail in various ways on files which do not have it. Vi
769 and approximately half of Unix editors enforce the terminating newline on
770 all files that they write; Emacs does not enforce this rule. Users are
771 divided on which is best. NEdit makes the final terminating newline optional
772 (Preferences -> Default Settings -> Append Line Feed on Save).
774 ========================
775 FEATURES FOR PROGRAMMING
776 ========================
778 ----------------------
779 PROGRAMMING WITH NEDIT
780 ----------------------
782 Though general in appearance, NEdit has many features intended specifically
783 for programmers. Major programming-related topics are listed in separate
784 sections under the heading: "Features for Programming": Syntax Highlighting,
785 Tabs/Emulated Tabs, Finding_Declarations_(ctags)_, Calltips_, and Auto/Smart
786 Indent. Minor topics related to programming are discussed below:
791 When NEdit initially reads a file, it attempts to determine whether the file
792 is in one of the computer languages that it knows about. Knowing what
793 language a file is written in allows NEdit to assign highlight patterns and
794 smart indent macros, and to set language specific preferences like word
795 delimiters, tab emulation, and auto-indent. Language mode can be recognized
796 from both the file name and from the first 200 characters of content.
797 Language mode recognition and language-specific preferences are configured
798 in: Preferences -> Default Settings -> Language Modes....
800 You can set the language mode manually for a window, by selecting it from
801 the menu: Preferences -> Language Modes.
806 To find a particular line in a source file by line number, choose Goto Line
807 #... from the Search menu. You can also directly select the line number text
808 in the compiler message in the terminal emulator window (xterm, decterm,
809 winterm, etc.) where you ran the compiler, and choose Goto Selected from the
812 To find out the line number of a particular line in your file, turn on
813 Statistics Line in the Preferences menu and position the insertion point
814 anywhere on the line. The statistics line continuously updates the line
815 number of the line containing the cursor.
820 To help you inspect nested parentheses, brackets, braces, quotes, and other
821 characters, NEdit has both an automatic parenthesis matching mode, and a
822 Goto Matching command. Automatic parenthesis matching is activated when you
823 type, or move the insertion cursor after a parenthesis, bracket, or brace.
824 It momentarily highlights either the opposite character ('Delimiter') or the
825 entire expression ('Range') when the opposite character is visible in the
826 window. To find a matching character anywhere in the file, select it or
827 position the cursor after it, and choose Goto Matching from the Search menu.
828 If the character matches itself, such as a quote or slash, select the first
829 character of the pair. NEdit will match {, (, [, <, ", ', `, /, and \.
830 Holding the Shift key while typing the accelerator key (Shift+Ctrl+M, by
831 default), will select all of the text between the matching characters.
833 When syntax highlighting is enabled, the matching routines can optionally
834 make use of the syntax information for improved accuracy. In that case, a
835 brace inside a highlighted string will not match a brace inside a comment,
839 OPENING INCLUDED FILES
841 The Open Selected command in the File menu understands the C preprocessor's
842 #include syntax, so selecting an #include line and invoking Open Selected
843 will generally find the file referred to, unless doing so depends on the
844 settings of compiler switches or other information not available to NEdit.
847 INTERFACE TO PROGRAMMING TOOLS
849 Integrated software development environments such as SGI's CaseVision and
850 Centerline Software's Code Center, can be interfaced directly with NEdit via
851 the client server interface. These tools allow you to click directly on
852 compiler and runtime error messages and request NEdit to open files, and
853 select lines of interest. The easiest method is usually to use the tool's
854 interface for character-based editors like vi, to invoke nc, but
855 programmatic interfaces can also be derived using the source code for nc.
857 There are also some simple compile/review, grep, ctree, and ctags browsers
858 available in the NEdit contrib directory on ftp.nedit.org.
865 CHANGING THE TAB DISTANCE
867 Tabs are important for programming in languages which use indentation to
868 show nesting, as short-hand for producing white-space for leading indents.
869 As a programmer, you have to decide how to use indentation, and how or
870 whether tab characters map to your indentation scheme.
872 Ideally, tab characters map directly to the amount of indent that you use to
873 distinguish nesting levels in your code. Unfortunately, the Unix standard
874 for interpretation of tab characters is eight characters (probably dating
875 back to mechanical capabilities of the original teletype), which is usually
876 too coarse for a single indent.
878 Most text editors, NEdit included, allow you to change the interpretation of
879 the tab character, and many programmers take advantage of this, and set
880 their tabs to 3 or 4 characters to match their programming style. In NEdit
881 you set the hardware tab distance in Preferences -> Tabs... for the current
882 window, or Preferences -> Default Settings -> Tabs... (general), or
883 Preferences -> Default Settings -> Language Modes... (language-specific) to
884 change the defaults for future windows.
886 Changing the meaning of the tab character makes programming much easier
887 while you're in the editor, but can cause you headaches outside of the
888 editor, because there is no way to pass along the tab setting as part of a
889 plain-text file. All of the other tools which display, print, and otherwise
890 process your source code have to be made aware of how the tabs are set, and
891 must be able to handle the change. Non-standard tabs can also confuse other
892 programmers, or make editing your code difficult for them if their text
893 editors don't support changes in tab distance.
898 An alternative to changing the interpretation of the tab character is tab
899 emulation. In the Tabs... dialog(s), turning on Emulated Tabs causes the Tab
900 key to insert the correct number of spaces and/or tabs to bring the cursor
901 the next emulated tab stop, as if tabs were set at the emulated tab distance
902 rather than the hardware tab distance. Backspacing immediately after
903 entering an emulated tab will delete the fictitious tab as a unit, but as
904 soon as you move the cursor away from the spot, NEdit will forget that the
905 collection of spaces and tabs is a tab, and will treat it as separate
906 characters. To enter a real tab character with "Emulate Tabs" turned on, use
909 It is also possible to tell NEdit not to insert ANY tab characters at all in
910 the course of processing emulated tabs, and in shifting and rectangular
911 insertion/deletion operations, for programmers who worry about the
912 misinterpretation of tab characters on other systems.
918 Programmers who use structured languages usually require some form of
919 automatic indent, so that they don't have to continually re-type the
920 sequences of tabs and/or spaces needed to maintain lengthy running indents.
921 Version 5.0 of NEdit is the first release of NEdit to offer "smart" indent,
922 at least experimentally, in addition to the traditional automatic indent
923 which simply lines up the cursor position with the previous line.
928 Smart Indent in this release must still be considered somewhat experimental.
929 Smart indent macros are only available by default for C and C++, and while
930 these can easily be configured for different default indentation distances,
931 they may not conform to everyone's exact C programming style. Smart indent
932 is programmed in terms of macros in the NEdit macro language which can be
933 entered in: Preferences -> Default Settings -> Indent -> Program Smart
934 Indent. Hooks are provided for intervening at the point that a newline is
935 entered, either via the user pressing the Enter key, or through
936 auto-wrapping; and for arbitrary type-in to act on specific characters
939 To type a newline character without invoking smart-indent when operating in
940 smart-indent mode, hold the Ctrl key while pressing the Return or Enter key.
945 With Indent set to Auto (the default), NEdit keeps a running indent. When
946 you press the Return or Enter key, spaces and tabs are inserted to line up
947 the insert point under the start of the previous line. Ctrl+Return in
948 auto-indent mode acts like a normal Return, With auto-indent turned off,
949 Ctrl+Return does indentation.
952 BLOCK INDENTATION ADJUSTMENT
954 The Shift Left and Shift Right commands as well as rectangular dragging can
955 be used to adjust the indentation for several lines at once. To shift a
956 block of text one character to the right, select the text, then choose Shift
957 Right from the Edit menu. Note that the accelerator keys for these menu
958 items are Ctrl+9 and Ctrl+0, which correspond to the right and left
959 parenthesis on most keyboards. Remember them as adjusting the text in the
960 direction pointed to by the parenthesis character. Holding the Shift key
961 while selecting either Shift Left or Shift Right will shift the text by one
962 tab stop (or by one emulated tab stop if tab emulation is turned on). The
963 help section "Shifting and Filling" under "Basic Operation" has details.
969 Syntax Highlighting means using colors and fonts to help distinguish
970 language elements in programming languages and other types of structured
971 files. Programmers use syntax highlighting to understand code faster and
972 better, and to spot many kinds of syntax errors more quickly.
974 To use syntax highlighting in NEdit, select Highlight Syntax in the
975 Preferences menu. If NEdit recognizes the computer language that you are
976 using, and highlighting rules (patterns) are available for that language, it
977 will highlight your text, and maintain the highlighting, automatically, as
980 If NEdit doesn't correctly recognize the type of the file you are editing,
981 you can manually select a language mode from Language Modes in the
982 Preferences menu. You can also program the method that NEdit uses to
983 recognize language modes in Preferences -> Default Settings -> Language
986 If no highlighting patterns are available for the language that you want to
987 use, you can create new patterns relatively quickly. The Help section
988 "Highlighting Patterns" under "Customizing", has details.
990 If you are satisfied with what NEdit is highlighting, but would like it to
991 use different colors or fonts, you can change these by selecting Preferences
992 -> Default Settings -> Syntax Highlighting -> Text Drawing Styles.
993 Highlighting patterns are connected with font and color information through
994 a common set of styles so that colorings defined for one language will be
995 similar across others, and patterns within the same language which are meant
996 to appear identical can be changed in the same place. To understand which
997 styles are used to highlight the language you are interested in, you may
998 need to look at "Highlighting Patterns" section, as well.
1000 Syntax highlighting is CPU intensive, and under some circumstances can
1001 affect NEdit's responsiveness. If you have a particularly slow system, or
1002 work with very large files, you may not want to use it all of the time.
1003 Syntax highlighting introduces two kinds of delays. The first is an initial
1004 parsing delay, proportional to the size of the file. This delay is also
1005 incurred when pasting large sections of text, filtering text through shell
1006 commands, and other circumstances involving changes to large amounts of
1007 text. The second kind of delay happens when text which has not previously
1008 been visible is scrolled in to view. Depending on your system, and the
1009 highlight patterns you are using, this may or may not be noticeable. A
1010 typing delay is also possible, but unlikely if you are only using the
1013 ----------------------------
1014 FINDING DECLARATIONS (CTAGS)
1015 ----------------------------
1017 NEdit can process tags files generated using the Unix ctags command or the
1018 Exuberant Ctags program. Ctags creates index files correlating names of
1019 functions and declarations with their locations in C, Fortran, or Pascal
1020 source code files. (See the ctags manual page for more information). Ctags
1021 produces a file called "tags" which can be loaded by NEdit. NEdit can manage
1022 any number of tags files simultaneously. Tag collisions are handled with a
1023 popup menu to let the user decide which tag to use. In 'Smart' mode NEdit
1024 will automatically choose the desired tag based on the scope of the file or
1025 module. Once loaded, the information in the tags file enables NEdit to go
1026 directly to the declaration of a highlighted function or data structure name
1027 with a single command. To load a tags file, select "Load Tags File" from the
1028 File menu and choose a tags file to load, or specify the name of the tags
1029 file on the NEdit command line:
1033 NEdit can also be set to load a tags file automatically when it starts up.
1034 Setting the X resource nedit.tagFile to the name of a tag file tells NEdit
1035 to look for that file at startup time (see "Customizing NEdit"). The file
1036 name can be either a complete path name, in which case NEdit will always
1037 load the same tags file, or a file name without a path or with a relative
1038 path, in which case NEdit will load it starting from the current directory.
1039 The second option allows you to have different tags files for different
1040 projects, each automatically loaded depending on the directory you're in
1041 when you start NEdit. Setting the name to "tags" is an obvious choice since
1042 this is the name that ctags uses. NEdit normally evaluates relative path tag
1043 file specifications every time a file is opened. All accessible tag files
1044 are loaded at this time. To disable the automatic loading of tag files
1045 specified as relative paths, set the X resource
1046 nedit.alwaysCheckRelativeTagsSpecs to False.
1048 To unload a tags file, select "Un-load Tags File" from the File menu and
1049 choose from the list of tags files. NEdit will keep track of tags file
1050 updates by checking the timestamp on the files, and automatically update the
1053 To find the definition of a function or data structure once a tags file is
1054 loaded, select the name anywhere it appears in your program (see "Selecting
1055 Text") and choose "Find Definition" from the Search menu.
1061 Calltips are little yellow boxes that pop up to remind you what the
1062 arguments and return type of a function are. More generally, they're a UI
1063 mechanism to present a small amount of crucial information in a prominent
1064 location. To display a calltip, select some text and choose "Show Calltip"
1065 from the Search menu.
1067 Calltips get their information from one of two places -- either a tags file
1068 (see "Finding Declarations (ctags)") or a calltips file. First, any loaded
1069 calltips files are searched for a definition, and if nothing is found then
1070 the tags database is searched. If a tag is found that matches the hilighted
1071 text then a calltip is displayed with the first few lines of the definition
1072 -- usually enough to show you what the arguments of a function are.
1074 You can load a calltips file by using choosing "Load Calltips File" from the
1075 File menu. You can unload a calltips file by selecting it from the "Unload
1076 Calltips File" submenu of the File menu. You can also choose one or more
1077 default calltips files to be loaded for each language mode using the
1078 "Default calltips file(s)" field of the Language Modes dialog.
1080 The calltips file format is very simple. calltips files are organized in
1081 blocks separated by blank lines. The first line of the block is the key,
1082 which is the word that is matched when a calltip is requested. The rest of
1083 the block is displayed as the calltip.
1085 Almost any text at all can appear in a calltip key or a calltip. There are
1086 no special characters that need to be escaped. The only issues to note are
1087 that trailing whitespace is ignored, and you cannot have a blank line inside
1088 a calltip. (Use a single period instead -- it'll be nearly invisible.) You
1089 should also avoid calltip keys that begin and end with '*' characters, since
1090 those are used to mark special blocks.
1092 There are five special block types--comment, include, language, alias, and
1093 version--which are distinguished by their first lines, "* comment *", "*
1094 include *", "* language *", "* alias *", and "* version *" respectively
1097 Comment blocks are ignored when reading calltips files.
1099 Include blocks specify additional calltips files to load, one per line. The
1100 ~ character can be used for your $HOME directory, but other shell shortcuts
1101 like * and ? can't be used. Include blocks allow you to make a calltips file
1102 for your project that includes, say, the calltips files for C, Motif, and
1105 Language blocks specify which language mode the calltips should be used
1106 with. When a calltip is requested it won't match tips from languages other
1107 than the current language mode. Language blocks only affect the tips listed
1110 Alias blocks allow a calltip to have multiple keys. The first line of the
1111 block is the key for the calltip to be displayed, and the rest of the lines
1112 are additional keys, one per line, that should also show the calltip.
1114 Version blocks are ignored for the time being.
1116 You can use calltips in your own macros using the calltip() and
1117 kill_calltip() macro subroutines and the $calltip_ID macro variable. See the
1118 Macro Subroutines section for details.
1124 -------------------------------
1125 BASIC REGULAR EXPRESSION SYNTAX
1126 -------------------------------
1128 Regular expressions (regex's) are useful as a way to match inexact sequences
1129 of characters. They can be used in the `Find...' and `Replace...' search
1130 dialogs and are at the core of Color Syntax Highlighting patterns. To
1131 specify a regular expression in a search dialog, simply click on the
1132 `Regular Expression' radio button in the dialog.
1134 A regex is a specification of a pattern to be matched in the searched text.
1135 This pattern consists of a sequence of tokens, each being able to match a
1136 single character or a sequence of characters in the text, or assert that a
1137 specific position within the text has been reached (the latter is called an
1138 anchor.) Tokens (also called atoms) can be modified by adding one of a
1139 number of special quantifier tokens immediately after the token. A
1140 quantifier token specifies how many times the previous token must be matched
1143 Tokens can be grouped together using one of a number of grouping constructs,
1144 the most common being plain parentheses. Tokens that are grouped in this way
1145 are also collectively considered to be a regex atom, since this new larger
1146 atom may also be modified by a quantifier.
1148 A regex can also be organized into a list of alternatives by separating each
1149 alternative with pipe characters, `|'. This is called alternation. A match
1150 will be attempted for each alternative listed, in the order specified, until
1151 a match results or the list of alternatives is exhausted (see Alternation
1157 If a dot (`.') appears in a regex, it means to match any character exactly
1158 once. By default, dot will not match a newline character, but this behavior
1159 can be changed (see help topic Parenthetical Constructs, under the heading,
1165 A character class, or range, matches exactly one character of text, but the
1166 candidates for matching are limited to those specified by the class. Classes
1167 come in two flavors as described below:
1169 [...] Regular class, match only characters listed.
1170 [^...] Negated class, match only characters NOT listed.
1172 As with the dot token, by default negated character classes do not match
1173 newline, but can be made to do so.
1175 The characters that are considered special within a class specification are
1176 different than the rest of regex syntax as follows. If the first character
1177 in a class is the `]' character (second character if the first character is
1178 `^') it is a literal character and part of the class character set. This
1179 also applies if the first or last character is `-'. Outside of these rules,
1180 two characters separated by `-' form a character range which includes all
1181 the characters between the two characters as well. For example, `[^f-j]' is
1182 the same as `[^fghij]' and means to match any character that is not `f',
1183 `g', `h', `i', or `j'.
1188 Anchors are assertions that you are at a very specific position within the
1189 search text. NEdit regular expressions support the following anchor tokens:
1193 < Left word boundary
1194 > Right word boundary
1195 \B Not a word boundary
1197 Note that the \B token ensures that the left and right characters are both
1198 delimiter characters, or that both left and right characters are
1199 non-delimiter characters. Currently word anchors check only one character,
1200 e.g. the left word anchor `<' only asserts that the left character is a word
1201 delimiter character. Similarly the right word anchor checks the right
1207 Quantifiers specify how many times the previous regular expression atom may
1208 be matched in the search text. Some quantifiers can produce a large
1209 performance penalty, and can in some instances completely lock up NEdit. To
1210 prevent this, avoid nested quantifiers, especially those of the maximal
1211 matching type (see below.)
1213 The following quantifiers are maximal matching, or "greedy", in that they
1214 match as much text as possible.
1216 * Match zero or more
1220 The following quantifiers are minimal matching, or "lazy", in that they
1221 match as little text as possible.
1223 *? Match zero or more
1224 +? Match one or more
1225 ?? Match zero or one
1227 One final quantifier is the counting quantifier, or brace quantifier. It
1228 takes the following basic form:
1230 {min,max} Match from `min' to `max' times the
1231 previous regular expression atom.
1233 If `min' is omitted, it is assumed to be zero. If `max' is omitted, it is
1234 assumed to be infinity. Whether specified or assumed, `min' must be less
1235 than or equal to `max'. Note that both `min' and `max' are limited to 65535.
1236 If both are omitted, then the construct is the same as `*'. Note that `{,}'
1237 and `{}' are both valid brace constructs. A single number appearing without
1238 a comma, e.g. `{3}' is short for the `{min,min}' construct, or to match
1239 exactly `min' number of times.
1241 The quantifiers `{1}' and `{1,1}' are accepted by the syntax, but are
1242 optimized away since they mean to match exactly once, which is redundant
1243 information. Also, for efficiency, certain combinations of `min' and `max'
1244 are converted to either `*', `+', or `?' as follows:
1250 Note that {0} and {0,0} are meaningless and will generate an error message
1251 at regular expression compile time.
1253 Brace quantifiers can also be "lazy". For example {2,5}? would try to match
1254 2 times if possible, and will only match 3, 4, or 5 times if that is what is
1255 necessary to achieve an overall match.
1260 A series of alternative patterns to match can be specified by separating
1261 them with vertical pipes, `|'. An example of alternation would be
1262 `a|be|sea'. This will match `a', or `be', or `sea'. Each alternative can be
1263 an arbitrarily complex regular expression. The alternatives are attempted in
1264 the order specified. An empty alternative can be specified if desired, e.g.
1265 `a|b|'. Since an empty alternative can match nothingness (the empty string),
1266 this guarantees that the expression will match.
1271 Comments are of the form `(?#<comment text>)' and can be inserted anywhere
1272 and have no effect on the execution of the regular expression. They can be
1273 handy for documenting very complex regular expressions. Note that a comment
1274 begins with `(?#' and ends at the first occurrence of an ending parenthesis,
1275 or the end of the regular expression... period. Comments do not recognize
1276 any escape sequences.
1283 ESCAPING METACHARACTERS
1285 In a regular expression (regex), most ordinary characters match themselves.
1286 For example, `ab%' would match anywhere `a' followed by `b' followed by `%'
1287 appeared in the text. Other characters don't match themselves, but are
1288 metacharacters. For example, backslash is a special metacharacter which
1289 'escapes' or changes the meaning of the character following it. Thus, to
1290 match a literal backslash would require a regular expression to have two
1291 backslashes in sequence. NEdit provides the following escape sequences so
1292 that metacharacters that are used by the regex syntax can be specified as
1293 ordinary characters.
1295 \( \) \- \[ \] \< \> \{ \}
1296 \. \| \^ \$ \* \+ \? \& \\
1299 SPECIAL CONTROL CHARACTERS
1301 There are some special characters that are difficult or impossible to type.
1302 Many of these characters can be constructed as a sort of metacharacter or
1303 sequence by preceding a literal character with a backslash. NEdit recognizes
1304 the following special character sequences:
1308 \e ASCII escape character (***)
1309 \f form feed (new page)
1315 *** For environments that use the EBCDIC character set,
1316 when compiling NEdit set the EBCDIC_CHARSET compiler
1317 symbol to get the EBCDIC equivalent escape
1321 OCTAL AND HEX ESCAPE SEQUENCES
1323 Any ASCII (or EBCDIC) character, except null, can be specified by using
1324 either an octal escape or a hexadecimal escape, each beginning with \0 or \x
1325 (or \X), respectively. For example, \052 and \X2A both specify the `*'
1326 character. Escapes for null (\00 or \x0) are not valid and will generate an
1327 error message. Also, any escape that exceeds \0377 or \xFF will either cause
1328 an error or have any additional character(s) interpreted literally. For
1329 example, \0777 will be interpreted as \077 (a `?' character) followed by `7'
1330 since \0777 is greater than \0377.
1332 An invalid digit will also end an octal or hexadecimal escape. For example,
1333 \091 will cause an error since `9' is not within an octal escape's range of
1334 allowable digits (0-7) and truncation before the `9' yields \0 which is
1338 SHORTCUT ESCAPE SEQUENCES
1340 NEdit defines some escape sequences that are handy shortcuts for commonly
1341 used character classes.
1344 \l letters a-z, A-Z, and locale dependent letters
1345 \s whitespace \t, \r, \v, \f, and space
1346 \w word characters letters, digits, and underscore, `_'
1348 \D, \L, \S, and \W are the same as the lowercase versions except that the
1349 resulting character class is negated. For example, \d is equivalent to
1350 `[0-9]', while \D is equivalent to `[^0-9]'.
1352 These escape sequences can also be used within a character class. For
1353 example, `[\l_]' is the same as `[a-zA-Z_]', extended with possible locale
1354 dependent letters. The escape sequences for special characters, and octal
1355 and hexadecimal escapes are also valid within a class.
1358 WORD DELIMITER TOKENS
1360 Although not strictly a character class, the following escape sequences
1361 behave similarly to character classes:
1363 \y Word delimiter character
1364 \Y Not a word delimiter character
1366 The `\y' token matches any single character that is one of the characters
1367 that NEdit recognizes as a word delimiter character, while the `\Y' token
1368 matches any character that is NOT a word delimiter character. Word delimiter
1369 characters are dynamic in nature, meaning that the user can change them
1370 through preference settings. For this reason, they must be handled
1371 differently by the regular expression engine. As a consequence of this, `\y'
1372 and `\Y' can not be used within a character class specification.
1374 ------------------------
1375 PARENTHETICAL CONSTRUCTS
1376 ------------------------
1379 CAPTURING PARENTHESES
1381 Capturing Parentheses are of the form `(<regex>)' and can be used to group
1382 arbitrarily complex regular expressions. Parentheses can be nested, but the
1383 total number of parentheses, nested or otherwise, is limited to 50 pairs.
1384 The text that is matched by the regular expression between a matched set of
1385 parentheses is captured and available for text substitutions and
1386 backreferences (see below.) Capturing parentheses carry a fairly high
1387 overhead both in terms of memory used and execution speed, especially if
1388 quantified by `*' or `+'.
1391 NON-CAPTURING PARENTHESES
1393 Non-Capturing Parentheses are of the form `(?:<regex>)' and facilitate
1394 grouping only and do not incur the overhead of normal capturing parentheses.
1395 They should not be counted when determining numbers for capturing
1396 parentheses which are used with backreferences and substitutions. Because of
1397 the limit on the number of capturing parentheses allowed in a regex, it is
1398 advisable to use non-capturing parentheses when possible.
1403 Positive look-ahead constructs are of the form `(?=<regex>)' and implement a
1404 zero width assertion of the enclosed regular expression. In other words, a
1405 match of the regular expression contained in the positive look-ahead
1406 construct is attempted. If it succeeds, control is passed to the next
1407 regular expression atom, but the text that was consumed by the positive
1408 look-ahead is first unmatched (backtracked) to the place in the text where
1409 the positive look-ahead was first encountered.
1411 One application of positive look-ahead is the manual implementation of a
1412 first character discrimination optimization. You can include a positive
1413 look-ahead that contains a character class which lists every character that
1414 the following (potentially complex) regular expression could possibly start
1415 with. This will quickly filter out match attempts that can not possibly
1421 Negative look-ahead takes the form `(?!<regex>)' and is exactly the same as
1422 positive look-ahead except that the enclosed regular expression must NOT
1423 match. This can be particularly useful when you have an expression that is
1424 general, and you want to exclude some special cases. Simply precede the
1425 general expression with a negative look-ahead that covers the special cases
1426 that need to be filtered out.
1429 POSITIVE LOOK-BEHIND
1431 Positive look-behind constructs are of the form `(?<=<regex>)' and implement
1432 a zero width assertion of the enclosed regular expression in front of the
1433 current matching position. It is similar to a positive look-ahead assertion,
1434 except for the fact the the match is attempted on the text preceeding the
1435 current position, possibly even in front of the start of the matching range
1436 of the entire regular expression.
1438 A restriction on look-behind expressions is the fact that the expression
1439 must match a string of a bounded size. In other words, `*', `+', and `{n,}'
1440 quantifiers are not allowed inside the look-behind expression. Moreover,
1441 matching performance is sensitive to the difference between the upper and
1442 lower bound on the matching size. The smaller the difference, the better the
1443 performance. This is especially important for regular expressions used in
1446 Another (minor) restriction is the fact that look-ahead patterns, nor any
1447 construct that requires look-ahead information (such as word boundaries) are
1448 supported at the end of a look-behind pattern (no error is raised, but
1449 matching behaviour is unspecified). It is always possible to place these
1450 look-ahead patterns immediately after the look-behind pattern, where they
1451 will work as expected.
1453 Positive look-behind has similar applications as positive look-ahead.
1456 NEGATIVE LOOK-BEHIND
1458 Negative look-behind takes the form `(?<!<regex>)' and is exactly the same
1459 as positive look-behind except that the enclosed regular expression must NOT
1460 match. The same restrictions apply.
1462 Note however, that performance is even more sensitive to the distance
1463 between the size boundaries: a negative look-behind must not match for any
1464 possible size, so the matching engine must check every size.
1469 There are two parenthetical constructs that control case sensitivity:
1471 (?i<regex>) Case insensitive; `AbcD' and `aBCd' are
1474 (?I<regex>) Case sensitive; `AbcD' and `aBCd' are
1477 Regular expressions are case sensitive by default, that is, `(?I<regex>)' is
1478 assumed. All regular expression token types respond appropriately to case
1479 insensitivity including character classes and backreferences. There is some
1480 extra overhead involved when case insensitivity is in effect, but only to
1481 the extent of converting each character compared to lower case.
1486 NEdit regular expressions by default handle the matching of newlines in a
1487 way that should seem natural for most editing tasks. There are situations,
1488 however, that require finer control over how newlines are matched by some
1489 regular expression tokens.
1491 By default, NEdit regular expressions will NOT match a newline character for
1492 the following regex tokens: dot (`.'); a negated character class (`[^...]');
1493 and the following shortcuts for character classes:
1495 `\d', `\D', `\l', `\L', `\s', `\S', `\w', `\W', `\Y'
1497 The matching of newlines can be controlled for the `.' token, negated
1498 character classes, and the `\s' and `\S' shortcuts by using one of the
1499 following parenthetical constructs:
1501 (?n<regex>) `.', `[^...]', `\s', `\S' match newlines
1503 (?N<regex>) `.', `[^...]', `\s', `\S' don't match
1506 `(?N<regex>)' is the default behavior.
1509 NOTES ON NEW PARENTHETICAL CONSTRUCTS
1511 Except for plain parentheses, none of the parenthetical constructs capture
1512 text. If that is desired, the construct must be wrapped with capturing
1513 parentheses, e.g. `((?i<regex))'.
1515 All parenthetical constructs can be nested as deeply as desired, except for
1516 capturing parentheses which have a limit of 50 sets of parentheses,
1517 regardless of nesting level.
1522 Backreferences allow you to match text captured by a set of capturing
1523 parenthesis at some later position in your regular expression. A
1524 backreference is specified using a single backslash followed by a single
1525 digit from 1 to 9 (example: \3). Backreferences have similar syntax to
1526 substitutions (see below), but are different from substitutions in that they
1527 appear within the regular expression, not the substitution string. The
1528 number specified with a backreference identifies which set of text capturing
1529 parentheses the backreference is associated with. The text that was most
1530 recently captured by these parentheses is used by the backreference to
1531 attempt a match. As with substitutions, open parentheses are counted from
1532 left to right beginning with 1. So the backreference `\3' will try to match
1533 another occurrence of the text most recently matched by the third set of
1534 capturing parentheses. As an example, the regular expression `(\d)\1' could
1535 match `22', `33', or `00', but wouldn't match `19' or `01'.
1537 A backreference must be associated with a parenthetical expression that is
1538 complete. The expression `(\w(\1))' contains an invalid backreference since
1539 the first set of parentheses are not complete at the point where the
1540 backreference appears.
1545 Substitution strings are used to replace text matched by a set of capturing
1546 parentheses. The substitution string is mostly interpreted as ordinary text
1549 The escape sequences described above for special characters, and octal and
1550 hexadecimal escapes are treated the same way by a substitution string. When
1551 the substitution string contains the `&' character, NEdit will substitute
1552 the entire string that was matched by the `Find...' operation. Any of the
1553 first nine sub-expressions of the match string can also be inserted into the
1554 replacement string. This is done by inserting a `\' followed by a digit from
1555 1 to 9 that represents the string matched by a parenthesized expression
1556 within the regular expression. These expressions are numbered left-to-right
1557 in order of their opening parentheses.
1559 The capitalization of text inserted by `&' or `\1', `\2', ... `\9' can be
1560 altered by preceding them with `\U', `\u', `\L', or `\l'. `\u' and `\l'
1561 change only the first character of the inserted entity, while `\U' and `\L'
1562 change the entire entity to upper or lower case, respectively.
1571 Regular expression substitution can be used to program automatic editing
1572 operations. For example, the following are search and replace strings to
1573 find occurrences of the `C' language subroutine `get_x', reverse the first
1574 and second parameters, add a third parameter of NULL, and change the name to
1577 Search string: `get_x *\( *([^ ,]*), *([^\)]*)\)'
1578 Replace string: `new_get_x(\2, \1, NULL)'
1583 If a regular expression could match two different parts of the text, it will
1584 match the one which begins earliest. If both begin in the same place but
1585 match different lengths, or match the same length in different ways, life
1586 gets messier, as follows.
1588 In general, the possibilities in a list of alternatives are considered in
1589 left-to-right order. The possibilities for `*', `+', and `?' are considered
1590 longest-first, nested constructs are considered from the outermost in, and
1591 concatenated constructs are considered leftmost-first. The match that will
1592 be chosen is the one that uses the earliest possibility in the first choice
1593 that has to be made. If there is more than one choice, the next will be made
1594 in the same manner (earliest possibility) subject to the decision on the
1595 first choice. And so forth.
1597 For example, `(ab|a)b*c' could match `abc' in one of two ways. The first
1598 choice is between `ab' and `a'; since `ab' is earlier, and does lead to a
1599 successful overall match, it is chosen. Since the `b' is already spoken for,
1600 the `b*' must match its last possibility, the empty string, since it must
1601 respect the earlier choice.
1603 In the particular case where no `|'s are present and there is only one `*',
1604 `+', or `?', the net effect is that the longest possible match will be
1605 chosen. So `ab*', presented with `xabbbby', will match `abbbb'. Note that if
1606 `ab*' is tried against `xabyabbbz', it will match `ab' just after `x', due
1607 to the begins-earliest rule. (In effect, the decision on where to start the
1608 match is the first choice to be made, hence subsequent choices must respect
1609 it even if this leads them to less-preferred alternatives.)
1614 An excellent book on the care and feeding of regular expressions is
1616 "Mastering Regular Expressions"
1617 Jeffrey E. F. Friedl
1618 (c) 1997, O'Reilly & Associates
1621 ---------------------------
1622 EXAMPLE REGULAR EXPRESSIONS
1623 ---------------------------
1625 The following are regular expression examples which will match:
1633 * Whitespace on a line.
1636 * Whitespace across lines.
1639 * Whitespace that spans at least two lines. Note minimal matching `*?' quantifier.
1642 * IP address (not robust).
1643 (?:\d{1,3}(?:\.\d{1,3}){3})
1645 * Two character US Postal state abbreviations (includes territories).
1649 (?:http://)?www\.\S+
1651 * Case insensitive double words across line breaks.
1652 (?i(?n<(\S+)\s+\1>))
1654 * Upper case words with possible punctuation.
1657 ======================
1658 MACRO/SHELL EXTENSIONS
1659 ======================
1661 --------------------------
1662 SHELL COMMANDS AND FILTERS
1663 --------------------------
1665 The Shell menu (Unix versions only) allows you to execute Unix shell
1666 commands from within NEdit. You can add items to the menu to extend NEdit's
1667 command set or to incorporate custom automatic editing features using shell
1668 commands or editing languages like awk and sed. To add items to the menu,
1669 select Preferences -> Default Settings Customize Menus -> Shell Menu. NEdit
1670 comes pre-configured with a few useful Unix commands like spell and sort,
1671 but we encourage you to add your own custom extensions.
1673 Filter Selection... prompts you for a Unix command to use to process the
1674 currently selected text. The output from this command replaces the contents
1677 Execute Command... prompts you for a Unix command and replaces the current
1678 selection with the output of the command. If there is no selection, it
1679 deposits the output at the current insertion point. In the Shell Command
1680 field, the % character expands to the name (including directory path), and
1681 the # character expands to the current line number of the file in the
1682 window. To include a % or # character in the command, use %% or ##,
1685 Execute Command Line uses the position of the cursor in the window to
1686 indicate a line to execute as a shell command line. The cursor may be
1687 positioned anywhere on the line. This command allows you to use an NEdit
1688 window as an editable command window for saving output and saving commands
1689 for re-execution. Note that the same character expansions described above in
1690 Execute Command also occur with this command.
1692 The X resource called nedit.shell (See "Customizing NEdit") determines which
1693 Unix shell is used to execute commands. The default value for this resource
1700 Selecting Learn Keystrokes from the Macro menu puts NEdit in learn mode. In
1701 learn mode, keystrokes and menu commands are recorded, to be played back
1702 later, using the Replay Keystrokes command, or pasted into a macro in the
1703 Macro Commands dialog of the Default Settings menu in Preferences.
1705 Note that only keyboard and menu commands are recorded, not mouse clicks or
1706 mouse movements since these have no absolute point of reference, such as
1707 cursor or selection position. When you do a mouse-based operation in learn
1708 mode, NEdit will beep (repeatedly) to remind you that the operation was not
1711 Learn mode is also the quickest and easiest method for writing macros. The
1712 dialog for creating macro commands contains a button labeled "Paste Learn /
1713 Replay Macro", which will deposit the last sequence learned into the body of
1717 REPEATING ACTIONS AND LEARN/REPLAY SEQUENCES
1719 You can repeat the last (keyboard-based) command, or learn/replay sequence
1720 with the Repeat... command in the Macro menu. To repeat an action, first do
1721 the action (that is, insert a character, do a search, move the cursor), then
1722 select Repeat..., decide how or how many times you want it repeated, and
1723 click OK. For example, to move down 30 lines through a file, you could type:
1724 <Down Arrow> Ctrl+, 29 <Return>. To repeat a learn/replay sequence, first
1725 learn it, then select Repeat..., click on Learn/Replay and how you want it
1726 repeated, then click OK.
1728 If the commands you are repeating advance the cursor through the file, you
1729 can also repeat them within a range of characters, or from the current
1730 cursor position to the end of the file. To iterate over a range of
1731 characters, use the primary selection (drag the left mouse button over the
1732 text) to mark the range you want to operate on, and select "In Selection" in
1735 When using In "Selection" or "To End" with a learned sequence, try to do
1736 cursor movement as the last step in the sequence, since testing of the
1737 cursor position is only done at the end of the sequence execution. If you do
1738 cursor movement first, for example searching for a particular word then
1739 doing a modification, the position of the cursor won't be checked until the
1740 sequence has potentially gone far beyond the end of your desired range.
1742 It's easy for a repeated command to get out of hand, and you can easily
1743 generate an infinite loop by using range iteration on a command which
1744 doesn't progress. To cancel a repeating command in progress, type Ctrl+.
1745 (period), or select Cancel Macro from the Macro menu.
1751 Macros can be called from Macro menu commands, window background menu
1752 commands, within the smart-indent framework, from the autoload macro file
1753 and from the command line. Macro menu and window background menu commands
1754 are defined under Preferences -> Default Settings -> Customize Menus. Help
1755 on creating items in these menus can be found in the section, Help ->
1756 Customizing -> Preferences.
1758 The autoload macro file is a file of macro commands and definitions which
1759 NEdit will automatically execute when it is first started. Its location is
1760 dependent on your environment:
1761 * The default place for the file is '$HOME/.nedit/autoload.nm',
1762 * if the variable $NEDIT_HOME is set in your environment it is located at
1763 '$NEDIT_HOME/autoload.nm',
1764 * if you are using old-style run control files (i.e. $HOME/.nedit is a regular
1765 file) it is located in $HOME/.neditmacro'.
1766 (For VMS, the file is in '$NEDIT_HOME/autoload.nm' if $NEDIT_HOME is set, in
1767 'SYS$LOGIN:.neditmacro' otherwise.)
1769 NEdit's macro language is a simple interpreter with integer arithmetic,
1770 dynamic strings, and C-style looping constructs (very similar to the
1771 procedural portion of the Unix awk program). From the macro language, you
1772 can call the same action routines which are bound to keyboard keys and menu
1773 items, as well additional subroutines for accessing and manipulating editor
1774 data, which are specific to the macro language (these are listed in the
1775 sections titled "Macro Subroutines", and "Action_Routines_").
1780 An NEdit macro language program consists of a list of statements, each
1781 terminated by a newline. Groups of statements which are executed together
1782 conditionally, such as the body of a loop, are surrounded by curly braces
1785 Blank lines and comments are also allowed. Comments begin with a "#" and end
1786 with a newline, and can appear either on a line by themselves, or at the end
1789 Statements which are too long to fit on a single line may be split across
1790 several lines, by placing a backslash "\" character at the end of each line
1796 The NEdit macro language recognizes only three data types, dynamic character
1797 strings, integer values and associative arrays. In general strings and
1798 integers can be used interchangeably. If a string represents an integer
1799 value, it can be used as an integer. Integers can be compared and
1800 concatenated with strings. Arrays may contain integers, strings, or arrays.
1801 Arrays are stored key/value pairs. Keys are always stored as strings.
1806 Integers are non-fractional numbers in the range of -2147483647 to
1807 2147483647. Integer constants must be in decimal. For example:
1813 Character String Constants
1815 Character string constants are enclosed in double quotes. For example:
1818 dialog("Hi there!", "Dismiss")
1820 Strings may also include C-language style escape sequences:
1822 \\ Backslash \t Tab \f Form feed
1823 \" Double quote \b Backspace \a Alert
1824 \n Newline \r Carriage return \v Vertical tab
1826 For example, to send output to the terminal from which NEdit was started, a
1827 newline character is necessary because, like printf, t_print requires
1828 explicit newlines, and also buffers its output on a per-line basis:
1830 t_print("a = " a "\n")
1835 Variable names must begin either with a letter (local variables), or a $
1836 (global variables). Beyond the first character, variables may also contain
1837 numbers and underscores `_'. Variables are called in to existence just by
1838 setting them (no explicit declarations are necessary).
1840 Local variables are limited in scope to the subroutine (or menu item
1841 definition) in which they appear. Global variables are accessible from all
1842 routines, and their values persist beyond the call which created them, until
1848 NEdit has a number of permanently defined variables, which are used to
1849 access global editor information and information about the the window in
1850 which the macro is executing. These are listed along with the built in
1851 functions in the section titled "Macro Subroutines".
1854 FUNCTIONS AND SUBROUTINES
1856 The syntax of a function or subroutine call is:
1858 function_name(arg1, arg2, ...)
1860 where arg1, arg2, etc. represent up to 9 argument values which are passed to
1861 the routine being called. A function or subroutine call can be on a line by
1862 itself, as above, or if it returns a value, can be invoked within a
1863 character or numeric expression:
1865 a = fn1(b, c) + fn2(d)
1866 dialog("fn3 says: " fn3())
1868 Arguments are passed by value. This means that you can not return values via
1869 the argument list, only through the function value or indirectly through
1870 agreed-upon global variables.
1875 NEdit has a wide range of built in functions which can be called from the
1876 macro language. These routines are divided into two classes, macro-language
1877 functions, and editor action routines. Editor action routines are more
1878 flexible, in that they may be called either from the macro language, or
1879 bound directly to keys via translation tables. They are also limited,
1880 however, in that they can not return values. Macro language routines can
1881 return values, but can not be bound to keys in translation tables.
1883 Nearly all of the built-in subroutines operate on an implied window, which
1884 is initially the window from which the macro was started. To manipulate the
1885 contents of other windows, use the focus_window subroutine to change the
1886 focus to the ones you wish to modify. focus_window can also be used to
1887 iterate over all of the currently open windows, using the special keyword
1888 names, "last" and "next".
1890 For backwards compatibility, hyphenated action routine names are allowed,
1891 and most of the existing action routines names which contain underscores
1892 have an equivalent version containing hyphens ('-') instead of underscores.
1893 Use of these names is discouraged. The macro parser resolves the ambiguity
1894 between '-' as the subtraction/negation operator, and - as part of an action
1895 routine name by assuming subtraction unless the symbol specifically matches
1896 an action routine name.
1899 User Defined Functions
1901 Users can define their own macro subroutines, using the define keyword:
1903 define subroutine_name {
1904 < body of subroutine >
1907 Macro definitions can not appear within other definitions, or within macro
1908 menu item definitions (usually they are found in the autoload macro file).
1910 The arguments with which a user-defined subroutine or function was invoked,
1911 are presented as $1, $2, ... , $9. The number of arguments can be read from
1914 To return a value from a subroutine, and/or to exit from the subroutine
1915 before the end of the subroutine body, use the return statement:
1917 return <value to return>
1920 OPERATORS AND EXPRESSIONS
1922 Operators have the same meaning and precedence that they do in C, except for
1923 ^, which raises a number to a power (y^x means y to the x power), rather
1924 than bitwise exclusive OR. The table below lists operators in decreasing
1925 order of precedence.
1927 Operators Associativity
1933 > >= < <= == != left to right
1938 (concatenation) left to right
1939 = += -= *= /= %=, &= |= right to left
1941 The order in which operands are evaluated in an expression is undefined,
1942 except for && and ||, which like C, evaluate operands left to right, but
1943 stop when further evaluation would no longer change the result.
1948 The numeric operators supported by the NEdit macro language are listed
1952 - subtraction or negation
1960 Increment (++) and decrement (--) operators can also be appended or
1961 prepended to variables within an expression. Prepended increment/decrement
1962 operators act before the variable is evaluated. Appended increment/decrement
1963 operators act after the variable is evaluated.
1966 Logical and Comparison Operators
1968 Logical operations produce a result of 0 (for false) or 1 (for true). In a
1969 logical operation, any non-zero value is recognized to mean true. The
1970 logical and comparison operators allowed in the NEdit macro language are
1980 == equal (integers and/or strings)
1981 != not equal (integers and/or strings)
1984 Character String Operators
1986 The "operator" for concatenating two strings is the absence of an operator.
1987 Adjoining character strings with no operator in between means concatenation:
1990 t_print("the value of a is: " a)
1992 Comparison between character strings is done with the == and != operators,
1993 (as with integers). There are a number of useful built-in routines for
1994 working with character strings, which are listed in the section called
1995 "Macro Subroutines".
1998 Arrays and Array Operators
2000 Arrays may contain either strings, integers, or other arrays. Arrays are
2001 associative, which means that they relate two pieces of information, the key
2002 and the value. The key is always a string; if you use an integer it is
2003 converted to a string.
2005 To determine if a given key is in an array, use the 'in' keyword.
2010 If the left side of the in keyword is an array, the result is true if every
2011 key in the left array is in the right array. Array values are not compared.
2013 To iterate through all the keys of an array use the 'for' looping construct.
2014 Keys are not guaranteed in any particular order:
2019 Elements can be removed from an array using the delete command:
2021 delete x[3] # deletes element with key 3
2022 delete x[] # deletes all elements
2024 The number of elements in an array can be determined by referencing the
2025 array with no indices:
2027 dialog("array x has " x[] " elements", "OK")
2029 Arrays can be combined with some operators. All the following operators only
2030 compare the keys of the arrays.
2032 result = x + y (Merge arrays)
2034 The 'result' is a new array containing keys from both x and y. If duplicates
2035 are present values from y are used.
2037 result = x - y (Remove keys)
2039 The 'result' is a new array containing all keys from x that are not in y.
2041 result = x & y (Common keys)
2043 The 'result' is a new array containing all keys which are in both x and y.
2044 The values from y are used.
2046 result = x | y (Unique keys)
2048 The 'result' is a new array containing keys which exist in either x or y,
2051 When duplicate keys are encountered using the + and & operators, the values
2052 from the array on the right side of the operators are used for the result.
2053 All of the above operators are array only, meaning both the left and right
2054 sides of the operator must be arrays. The results are also arrays.
2056 Array keys can also contain multiple dimensions:
2058 x[1, 1, 1] = "string"
2060 These are used in the expected way, e.g.:
2062 for (i = 1; i < 3; i++)
2064 for (j = 1; j < 3; j++)
2070 gives the following array:
2077 Internally all indices are part of one string, separated by the string
2078 $sub_sep (ASCII 0x18). The first key in the above example is in fact
2082 If you need to extract one of the keys, you can use split(), using $sub_sep
2085 You can also check for the existence of multi-dimensional array by looking
2086 for $sub_sep in the key.
2088 Last, you need $sub_sep if you want to use the 'in' keyword.
2090 if ((1,2) in myArray)
2095 if (("1" $sub_sep "2") in myArray)
2101 LOOPING AND CONDITIONALS
2103 NEdit supports looping constructs: for and while, and conditional
2104 statements: if and else, with essentially the same syntax as C:
2106 for (<init>, ...; <condition>; <increment>, ...) <body>
2108 while (<condition>) <body>
2110 if (<condition>) <body>
2112 if (<condition>) <body> else <body>
2114 <body>, as in C, can be a single statement, or a list of statements enclosed
2115 in curly braces ({}). <condition> is an expression which must evaluate to
2116 true for the statements in <body> to be executed. for loops may also contain
2117 initialization statements, <init>, executed once at the beginning of the
2118 loop, and increment/decrement statements (or any arbitrary statement), which
2119 are executed at the end of the loop, before the condition is evaluated
2124 for (i=0; i<100; i++)
2127 for (i=0, j=20; i<20; i++, j--) {
2143 Loops may contain break and continue statements. A break statement causes an
2144 exit from the innermost loop, a continue statement transfers control to the
2154 These variables are read-only and can not be changed.
2157 Index of the current pane.
2160 Contains the current preference for auto indent. Can be "off", "on" or
2164 Equals the ID of the currently displayed calltip, or 0 if no calltip is
2168 Position of the cursor in the current window.
2171 Column number of the cursor position in the current window.
2174 Width of the current pane in pixels.
2177 If tab emulation is turned on in the Tabs... dialog of the Preferences menu,
2178 value is the distance between emulated tab stops. If tab emulation is turned
2182 An array with no elements. This can be used to initialize an array to an
2186 Current newline format that the file will be saved with. Can be "unix",
2187 "dos" or "macintosh".
2190 Name of the file being edited in the current window, stripped of directory
2194 Directory component of file being edited in the current window.
2197 Contains the current plain text font name.
2200 Contains the current bold text font name.
2202 $font_name_bold_italic
2203 Contains the current bold-italic text font name.
2206 Contains the current italic text font name.
2209 Whether syntax highlighting is turned on.
2212 Contains 1 if incremental auto saving is on, otherwise 0.
2214 $incremental_search_line
2215 Has a value of 1 if the preference is selected to always show the
2216 incremental search line, otherwise 0.
2219 Name of language mode set in the current window.
2222 Line number of the cursor position in the current window.
2225 True if the file has been locked by the user.
2228 Has a value of 1 if original file is kept in a backup file on save,
2232 The maximum font width of all the active styles. Syntax highlighting styles
2233 are only considered if syntax highlighting is turned on.
2236 The minimum font width of all the active styles. Syntax highlighting styles
2237 are only considered if syntax highlighting is turned on.
2240 True if the file in the current window has been modified and the
2241 modifications have not yet been saved.
2244 The number of lines visible in the currently active pane.
2247 The number of panes in the current window.
2250 True if in Overtype mode.
2253 True if the file is read only.
2255 $selection_start, $selection_end
2256 Beginning and ending positions of the primary selection in the current
2257 window, or -1 if there is no text selected in the current window.
2259 $selection_left, $selection_right
2260 Left and right character offsets of the rectangular (primary) selection in
2261 the current window, or -1 if there is no selection or it is not rectangular.
2264 Name of the current NEdit server.
2267 Whether line numbers are shown next to the text.
2270 Contains the current preference for showing matching pairs, such as "[]" and
2271 "{}" pairs. Can be "off", "delimiter", or "range".
2274 Whether pair matching should use syntax information, if available.
2277 Has a value of 1 if the statistics line is shown, otherwise 0.
2280 Contains the value of the array sub-script separation string.
2283 The distance between tab stops for a hardware tab character, as set in the
2284 Tabs... dialog of the Preferences menu.
2287 The length of the text in the current window.
2290 The line number of the top line of the currently active pane.
2293 Whether the user is allowing the NEdit to insert tab characters to maintain
2294 spacing in tab emulation and rectangular dragging operations. (The setting
2295 of the "Use tab characters in padding and emulated tabs" button in the
2296 Tabs... dialog of the Preferences menu.)
2299 The right margin in the current window for text wrapping and filling.
2302 The current wrap text mode. Values are "none", "auto" or "continuous".
2305 BUILT-IN SUBROUTINES
2307 append_file( string, filename )
2308 Appends a string to a named file. Returns 1 on successful write, or 0 if
2314 calltip( "text_or_key" [, mode [, pos]] )
2315 Pops up a calltip. <pos> is an optional position in the buffer where the tip
2316 will be displayed. The upper-left corner of the calltip will appear below
2317 where the cursor would appear if it were at this position. <mode> is one of
2318 "tipText" (default), "tipKey", or "tagKey". "tipText" displays the text
2319 as-is, "tagKey" uses it as the key to look up a tag, then converts the tag
2320 to a calltip, and "tipKey uses it as the key to look up a calltip, then
2321 falls back to a tag if that fails. You'll usually use "tipKey" or "tipText".
2322 Returns the ID of the calltip if it was found and/or displayed correctly, 0
2325 clipboard_to_string()
2326 Returns the contents of the clipboard as a macro string. Returns empty
2329 dialog( message, btn_1_label, btn_2_label, ... )
2330 Pop up a dialog for querying and presenting information to the user. First
2331 argument is a string to show in the message area of the dialog. Up to eight
2332 additional optional arguments represent labels for buttons to appear along
2333 the bottom of the dialog. Returns the number of the button pressed (the
2334 first button is number 1), or 0 if the user closed the dialog via the window
2337 focus_window( window_name )
2338 Sets the window on which subsequent macro commands operate. window_name can
2339 be either a fully qualified file name, or one of "last" for the last window
2340 created, or "next" for the next window in the chain from the currently
2341 focused window (the first window being the one returned from calling
2342 focus_window("last"). Returns the name of the newly-focused window, or an
2343 empty string if the requested window was not found.
2345 get_character( position )
2346 Returns the single character at the position indicated by the first argument
2347 to the routine from the current window.
2349 get_range( start, end )
2350 Returns the text between a starting and ending position from the current
2354 Returns a string containing the text currently selected by the primary
2355 selection either from the current window (no keyword), or from anywhere on
2356 the screen (keyword "any").
2359 Gets the value of an environment variable.
2361 kill_calltip( [calltip_ID] )
2362 Kills any calltip that is being displayed in the window in which the macro
2363 is running. If there is no displayed calltip this does nothing. If a calltip
2364 ID is supplied then the calltip is killed only if its ID is calltip_ID.
2367 Returns the length of a string
2369 list_dialog( message, text, btn_1_label, btn_2_label, ... )
2370 Pop up a dialog for prompting the user to choose a line from the given text
2371 string. The first argument is a message string to be used as a title for the
2372 fixed text describing the list. The second string provides the list data:
2373 this is a text string in which list entries are separated by newline
2374 characters. Up to seven additional optional arguments represent labels for
2375 buttons to appear along the bottom of the dialog. Returns the line of text
2376 selected by the user as the function value (without any newline separator)
2377 or the empty string if none was selected, and number of the button pressed
2378 (the first button is number 1), in $list_dialog_button. If the user closes
2379 the dialog via the window close box, the function returns the empty string,
2380 and $list_dialog_button returns 0.
2383 Returns the maximum value of all of its arguments
2386 Returns the minimum value of all of its arguments
2388 read_file( filename )
2389 Reads the contents of a text file into a string. On success, returns 1 in
2390 $read_status, and the contents of the file as a string in the subroutine
2391 return value. On failure, returns the empty string "" and an 0 $read_status.
2393 replace_in_string( string, search_for, replace_with [, type, "copy"] )
2394 Replaces all occurrences of a search string in a string with a replacement
2395 string. Arguments are 1: string to search in, 2: string to search for, 3:
2396 replacement string. There are two optional arguments. One is a search type,
2397 either "literal", "case", "word", "caseWord", "regex", or "regexNoCase". The
2398 default search type is "literal". If the optional "copy" argument is
2399 specified, a copy of the input string is returned when no replacements were
2400 performed. By default an empty string ("") will be returned in this case.
2401 Returns a new string with all of the replacements done.
2403 replace_range( start, end, string )
2404 Replaces all of the text in the current window between two positions.
2406 replace_selection( string )
2407 Replaces the primary-selection selected text in the current window.
2409 replace_substring( string, start, end, replace_with )
2410 Replacing a substring between two positions in a string within another
2413 search( search_for, start [, search_type, wrap, direction] )
2414 Searches silently in a window without dialogs, beeps, or changes to the
2415 selection. Arguments are: 1: string to search for, 2: starting position.
2416 Optional arguments may include the strings: "wrap" to make the search wrap
2417 around the beginning or end of the string, "backward" or "forward" to change
2418 the search direction ("forward" is the default), "literal", "case", "word",
2419 "caseWord", "regex", or "regexNoCase" to change the search type (default is
2420 "literal"). Returns the starting position of the match, or -1 if nothing
2421 matched. Also returns the ending position of the match in $search_end.
2423 search_string( string, search_for, start [, search_type, direction] )
2425 Built-in macro subroutine for searching a string. Arguments are 1: string to
2426 search in, 2: string to search for, 3: starting position. Optional arguments
2427 may include the strings: "wrap" to make the search wrap around the beginning
2428 or end of the string, "backward" or "forward" to change the search direction
2429 ("forward" is the default), "literal", "case", "word", "caseWord", "regex",
2430 or "regexNoCase" to change the search type (default is "literal"). Returns
2431 the starting position of the match, or -1 if nothing matched. Also returns
2432 the ending position of the match in $search_end.
2434 select( start, end )
2435 Selects (with the primary selection) text in the current buffer between a
2436 starting and ending position.
2438 select_rectangle( start, end, left, right )
2439 Selects a rectangular area of text between a starting and ending position,
2440 and confined horizontally to characters displayed between positions "left",
2443 set_cursor_pos( position )
2444 Set the cursor position for the current window.
2446 shell_command( command, input_string )
2447 Executes a shell command, feeding it input from input_string. On completion,
2448 output from the command is returned as the function value, and the command's
2449 exit status is returned in the global variable $shell_cmd_status.
2451 split(string, separation_string [, search_type])
2452 Splits a string using the separator specified. Optionally the search_type
2453 argument can specify how the separation_string is interpreted. The default
2454 is "literal". The returned value is an array with keys beginning at 0.
2456 string_dialog( message, btn_1_label, btn_2_label, ... )
2457 Pops up a dialog prompting the user to enter information. The first argument
2458 is a string to show in the message area of the dialog. Up to nine additional
2459 optional arguments represent labels for buttons to appear along the bottom
2460 of the dialog. Returns the string entered by the user as the function value,
2461 and number of the button pressed (the first button is number 1), in
2462 $string_dialog_button. If the user closes the dialog via the window close
2463 box, the function returns the empty string, and $string_dialog_button
2466 string_compare(string1, string2 [, consider-case])
2467 Compare two strings and return 0 if they are equal, -1 if string1 is less
2468 than string2 or 1 if string1 is greater than string2. The values for the
2469 optional consider-case argument is either "case" or "nocase". The default is
2470 to do a case sensitive comparison.
2472 string_to_clipboard( string )
2473 Copy the contents of a macro string to the clipboard.
2475 substring( string, start, end )
2476 Returns the portion of a string between a starting and ending position.
2478 t_print( string1, string2, ... )
2479 Writes strings to the terminal (stdout) from which NEdit was started.
2482 Return an all lower-case version of string.
2485 Return an all upper-case version of string.
2487 write_file( string, filename )
2488 Writes a string (parameter 1) to a file named in parameter 2. Returns 1 on
2489 successful write, or 0 if unsuccessful.
2495 All of the editing capabilities of NEdit are represented as a special type
2496 of subroutine, called an action routine, which can be invoked from both
2497 macros and translation table entries (see "Key Binding" in the Customizing
2498 section of the Help menu).
2501 ACTIONS REPRESENTING MENU COMMANDS
2503 File Menu Search Menu
2504 ----------------------- -------------------------
2506 open() find_dialog()
2507 open_dialog() find_again()
2508 open_selected() find_selection()
2510 save() replace_dialog()
2511 save_as() replace_all()
2512 save_as_dialog() replace_in_selection()
2513 revert_to_saved() replace_again()
2514 include_file() goto_line_number()
2515 include_file_dialog() goto_line_number_dialog()
2516 load_macro_file() goto_selected()
2517 load_macro_file_dialog() mark()
2518 load_tags_file() mark_dialog()
2519 load_tags_file_dialog() goto_mark()
2520 unload_tags_file() goto_mark_dialog()
2521 print() goto_matching()
2522 print_selection() select_to_matching()
2523 exit() find_definition()
2525 Edit Menu Shell Menu
2526 ----------------------- -------------------------
2527 undo() filter_selection_dialog()
2528 redo() filter_selection()
2529 delete() execute_command()
2530 select_all() execute_command_dialog()
2531 shift_left() execute_command_line()
2532 shift_left_by_tab() shell_menu_command()
2534 shift_right_by_tab() Macro Menu
2535 uppercase() -------------------------
2536 lowercase() macro_menu_command()
2537 fill_paragraph() repeat_macro()
2538 control_code_dialog() repeat_dialog()
2541 -------------------------
2545 An action representing a menu command is named the same as its corresponding
2546 menu item except that all punctuation is removed, all letters are changed to
2547 lower case, and spaces are replaced with underscores. To present a dialog to
2548 ask the user for input, use the actions with the `_dialog` suffix. Actions
2549 without the `_dialog` suffix take the information from the routine's
2550 arguments (see below).
2553 MENU ACTION ROUTINE ARGUMENTS
2555 Arguments are text strings enclosed in quotes. Below are the menu action
2556 routines which take arguments. Optional arguments are enclosed in [].
2558 close( ["prompt" | "save" | "nosave"] )
2560 execute_command( shell-command )
2562 filter_selection( shell-command )
2564 find( search-string [, search-direction] [, search-type]
2567 find_again( [search-direction] [, search-wrap] )
2569 find_definition( [tag-name] )
2571 find_dialog( [search-direction] [, search-type]
2574 find_selection( [search-direction] [, search-wrap]
2575 [, non-regex-search-type] )
2577 goto_line_number( [line-number] )
2579 goto_mark( mark-letter )
2581 include_file( filename )
2583 load_tags_file( filename )
2585 macro_menu_command( macro-menu-item-name )
2591 replace( search-string, replace-string,
2592 [, search-direction] [, search-type] [, search-wrap] )
2594 replace_again( [search-direction] [, search-wrap] )
2596 replace_dialog( [search-direction] [, search-type]
2599 replace_in_selection( search-string,
2600 replace-string [, search-type] )
2604 shell_menu_command( shell-menu-item-name )
2606 unload_tags_file( filename )
2608 ----------- Some notes on argument types above -----------
2610 filename Path names are relative to the directory from
2611 which NEdit was started. Shell interpreted
2612 wildcards and `~' are not expanded.
2614 keep-dialog Either "keep" or "nokeep".
2616 mark-letter The mark command limits users to single
2617 letters. Inside of macros, numeric marks are
2618 allowed, which won't interfere with marks set
2621 macro-menu-item-name
2622 Name of the command exactly as specified in
2623 the Macro Menu dialogs.
2625 non-regex-search-type
2626 Either "literal", "case", "word", or
2630 Either "forward" or "backward".
2632 search-type Either "literal", "case", "word",
2633 "caseWord", "regex", or "regexNoCase".
2635 search-wrap Either "wrap" or "nowrap".
2637 shell-menu-item-name
2638 Name of the command exactly as specified in
2639 the Shell Menu dialogs.
2642 WINDOW PREFERENCES ACTIONS
2644 set_auto_indent( "off" | "on" | "smart" )
2645 Set auto indent mode for the current window.
2647 set_em_tab_dist( em-tab-distance )
2648 Set the emulated tab size. An em-tab-distance value of 0 or -1 translates to
2649 no emulated tabs. Em-tab-distance must be smaller than 1000.
2651 set_fonts( font-name, italic-font-name, bold-font-name, bold-italic-font-name )
2652 Set all the fonts used for the current window.
2654 set_highlight_syntax( [0 | 1] )
2655 Set syntax highlighting mode for the current window. A value of 0 turns it
2656 off and a value of 1 turns it on. If no parameters are supplied the option
2659 set_incremental_backup( [0 | 1] )
2660 Set incremental backup mode for the current window. A value of 0 turns it
2661 off and a value of 1 turns it on. If no parameters are supplied the option
2664 set_incremental_search_line( [0 | 1] )
2665 Show or hide the incremental search line for the current window. A value of
2666 0 turns it off and a value of 1 turns it on. If no parameters are supplied
2667 the option is toggled.
2669 set_language_mode( language-mode )
2670 Set the language mode for the current window. If the language mode is "" or
2671 unrecognized, it will be set to Plain.
2673 set_locked( [0 | 1] )
2674 This only affects the locked status of a file, not it's read-only status.
2675 Permissions are NOT changed. A value of 0 turns it off and a value of 1
2676 turns it on. If no parameters are supplied the option is toggled.
2678 set_make_backup_copy( [0 | 1] )
2679 Set whether backup copies are made during saves for the current window. A
2680 value of 0 turns it off and a value of 1 turns it on. If no parameters are
2681 supplied the option is toggled.
2683 set_overtype_mode( [0 | 1] )
2684 Set overtype mode for the current window. A value of 0 turns it off and a
2685 value of 1 turns it on. If no parameters are supplied the option is toggled.
2687 set_show_line_numbers( [0 | 1] )
2688 Show or hide line numbers for the current window. A value of 0 turns it off
2689 and a value of 1 turns it on. If no parameters are supplied the option is
2692 set_show_matching( "off" | "delimiter" | "range" )
2693 Set show matching (...) mode for the current window.
2695 set_match_syntax_based( [0 | 1] )
2696 Set whether matching should be syntax based for the current window.
2698 set_statistics_line( [0 | 1] )
2699 Show or hide the statistics line for the current window. A value of 0 turns
2700 it off and a value of 1 turns it on. If no parameters are supplied the
2703 set_tab_dist( tab-distance )
2704 Set the size of hardware tab spacing. Tab-distance must must be a value
2705 greater than 0 and no greater than 20.
2707 set_use_tabs( [0 | 1] )
2708 Set whether tabs are used for the current window. A value of 0 turns it off
2709 and a value of 1 turns it on. If no parameters are supplied the option is
2712 set_wrap_margin( wrap-width )
2713 Set the wrap width for text wrapping of the current window. A value of 0
2714 means to wrap at window width.
2716 set_wrap_text( "none" | "auto" | "continuous" )
2717 Set wrap text mode for the current window.
2720 KEYBOARD-ONLY ACTIONS
2722 In addition to the arguments listed in the call descriptions below, any
2723 routine involving cursor movement can take the argument "extend", meaning,
2724 adjust the primary selection to the new cursor position. Routines which take
2725 the "extend" argument as well as mouse dragging operations for both primary
2726 and secondary selections can take the optional keyword "rect", meaning, make
2727 the selection rectangular. Any routine that accepts the "scrollbar" argument
2728 will move the display but not the cursor or selection. Routines that accept
2729 the "nobell" argument will fail silently without beeping, when that argument
2732 backward_character( ["nobell"] )
2733 Moves the cursor one character to the left.
2735 backward_paragraph(["nobell"] )
2736 Moves the cursor to the beginning of the paragraph, or if the cursor is
2737 already at the beginning of a paragraph, moves the cursor to the beginning
2738 of the previous paragraph. Paragraphs are defined as regions of text
2739 delimited by one or more blank lines.
2741 backward_word( ["nobell"] )
2742 Moves the cursor to the beginning of a word, or, if the cursor is already at
2743 the beginning of a word, moves the cursor to the beginning of the previous
2744 word. Word delimiters are user-settable, and defined by the X resource
2747 beginning_of_file( ["scrollbar"] )
2748 Moves the cursor to the beginning of the file.
2751 Moves the cursor to the beginning of the line.
2753 beginning_of_selection()
2754 Moves the cursor to the beginning of the selection without disturbing the
2758 Copies the current selection to the clipboard.
2761 Copies the primary selection to the cursor.
2764 If a secondary selection exists, copies the secondary selection to the
2765 cursor. If no secondary selection exists, copies the primary selection to
2766 the pointer location.
2768 copy_to_or_end_drag()
2769 Completes either a secondary selection operation, or a primary drag. If the
2770 user is dragging the mouse to adjust a secondary selection, the selection is
2771 copied and either inserted at the cursor location, or, if pending-delete is
2772 on and a primary selection exists in the window, replaces the primary
2773 selection. If the user is dragging a block of text (primary selection),
2774 completes the drag operation and leaves the text at it's current location.
2777 Deletes the text in the primary selection and places it in the clipboard.
2780 Copies the primary selection to the cursor and deletes it at its original
2784 Deletes the contents of the primary selection.
2786 delete_next_character( ["nobell"] )
2787 If a primary selection exists, deletes its contents. Otherwise, deletes the
2788 character following the cursor.
2790 delete_previous_character( ["nobell"] )
2791 If a primary selection exists, deletes its contents. Otherwise, deletes the
2792 character before the cursor.
2794 delete_next_word( ["nobell"] )
2795 If a primary selection exists, deletes its contents. Otherwise, deletes the
2796 word following the cursor.
2798 delete_previous_word( ["nobell"] )
2799 If a primary selection exists, deletes its contents. Otherwise, deletes the
2800 word before the cursor.
2802 delete_to_start_of_line( ["nobell"] )
2803 If a primary selection exists, deletes its contents. Otherwise, deletes the
2804 characters between the cursor and the start of the line.
2806 delete_to_end_of_line( ["nobell"] )
2807 If a primary selection exists, deletes its contents. Otherwise, deletes the
2808 characters between the cursor and the end of the line.
2811 De-selects the primary selection.
2813 end_of_file( ["scrollbar"] )
2814 Moves the cursor to the end of the file.
2817 Moves the cursor to the end of the line.
2820 Moves the cursor to the end of the selection without disturbing the
2823 exchange( ["nobell"] )
2824 Exchange the primary and secondary selections.
2827 Attached mouse-movement events to begin a selection between the cursor and
2828 the mouse, or extend the primary selection to the mouse position.
2831 Completes a primary drag-selection operation.
2834 Begins a selection between the cursor and the mouse. A drag-selection
2835 operation can be started with either extend_start or grab_focus.
2837 focus_pane( [relative-pane] | [positive-index] | [negative-index] )
2838 Move the focus to the requested pane. Arguments can be specified in the form
2839 of a relative-pane ("first", "last", "next", "previous"), a positive-index
2840 (numbers greater than 0, 1 is the same as "first") or a negative-index
2841 (numbers less than 0, -1 is the same as "last").
2844 Moves the cursor one character to the right.
2846 forward_paragraph( ["nobell"] )
2847 Moves the cursor to the beginning of the next paragraph. Paragraphs are
2848 defined as regions of text delimited by one or more blank lines.
2850 forward_word( ["tail"] ["nobell"] )
2851 Moves the cursor to the beginning of the next word. Word delimiters are
2852 user-settable, and defined by the X resource wordDelimiters. If the "tail"
2853 argument is supplied the cursor will be moved to the end of the current word
2854 or the end of the next word, if the cursor is between words.
2857 Moves the cursor to the mouse pointer location, and prepares for a possible
2858 drag-selection operation (bound to extend_adjust), or multi-click operation
2859 (a further grab_focus action). If a second invocation of grab focus follows
2860 immediately, it selects a whole word, or a third, a whole line.
2862 insert_string( "string" )
2863 If pending delete is on and the cursor is inside the selection, replaces the
2864 selection with "string". Otherwise, inserts "string" at the cursor location.
2866 key_select( "direction" [,"nobell"] )
2867 Moves the cursor one character in "direction" ("left", "right", "up", or
2868 "down") and extends the selection. Same as
2869 forward/backward-character("extend"), or process-up/down("extend"), for
2870 compatibility with previous versions.
2873 Moves the cursor to the pointer location without disturbing the selection.
2874 (This is an unusual way of working. We left it in for compatibility with
2875 previous versions, but if you actually use this capability, please send us
2876 some mail, otherwise it is likely to disappear in the future.
2879 If a secondary selection exists, deletes the contents of the secondary
2880 selection and inserts it at the cursor, or if pending-delete is on and there
2881 is a primary selection, replaces the primary selection. If no secondary
2882 selection exists, moves the primary selection to the pointer location,
2883 deleting it from its original position.
2885 move_to_or_end_drag()
2886 Completes either a secondary selection operation, or a primary drag. If the
2887 user is dragging the mouse to adjust a secondary selection, the selection is
2888 deleted and either inserted at the cursor location, or, if pending-delete is
2889 on and a primary selection exists in the window, replaces the primary
2890 selection. If the user is dragging a block of text (primary selection),
2891 completes the drag operation and deletes the text from it's current
2895 Inserts a newline character. If Auto Indent is on, lines up the indentation
2896 of the cursor with the current line.
2898 newline_and_indent()
2899 Inserts a newline character and lines up the indentation of the cursor with
2900 the current line, regardless of the setting of Auto Indent.
2903 Inserts a newline character, without automatic indentation, regardless of
2904 the setting of Auto Indent.
2906 next_page( ["stutter"] ["column"] ["scrollbar"] ["nobell"] )
2907 Moves the cursor and scroll forward one page. The parameter "stutter" moves
2908 the cursor to the bottom of the display, unless it is already there,
2909 otherwise it will page down. The parameter "column" will maintain the
2910 preferred column while moving the cursor.
2912 page_left( ["scrollbar"] ["nobell"] )
2913 Move the cursor and scroll left one page.
2915 page_right( ["scrollbar"] ["nobell"] )
2916 Move the cursor and scroll right one page.
2919 Insert the contents of the clipboard at the cursor, or if pending delete is
2920 on, replace the primary selection with the contents of the clipboard.
2922 previous_page( ["stutter"] ["column"] ["scrollbar"] ["nobell"] )
2923 Moves the cursor and scroll backward one page. The parameter "stutter" moves
2924 the cursor to the top of the display, unless it is already there, otherwise
2925 it will page up. The parameter "column" will maintain the preferred column
2926 while moving the cursor.
2929 Same as secondary_or_drag_start for compatibility with previous versions.
2932 Cancels the current extend_adjust, secondary_adjust, or
2933 secondary_or_drag_adjust in progress.
2935 process_down( ["nobell"] )
2936 Moves the cursor down one line.
2939 Same as newline for compatibility with previous versions.
2941 process_shift_down( ["nobell"] )
2942 Same as process_down("extend") for compatibility with previous versions.
2944 process_shift_up( ["nobell"] )
2945 Same as process_up("extend") for compatibility with previous versions.
2948 If tab emulation is turned on, inserts an emulated tab, otherwise inserts a
2951 process_up( ["nobell"] )
2952 Moves the cursor up one line.
2954 raise_window([relative-window] | [positive-index] | [negative-index])
2955 Raise the current focused window to the front if no argument is supplied.
2956 Arguments can be specified in the form of a relative-window ("first",
2957 "last", "next", "previous"), a positive-index (numbers greater than 0, 1 is
2958 the same as "last") or a negative-index (numbers less than 0, -1 is the same
2962 Scroll the display down (towards the end of the file) by nLines.
2964 scroll_left( nPixels )
2965 Scroll the display left by nPixels.
2967 scroll_right( nPixels )
2968 Scroll the display right by nPixels.
2971 Scroll the display up (towards the beginning of the file) by nLines.
2973 scroll_to_line( lineNum )
2974 Scroll to position line number lineNum at the top of the pane. The first
2975 line of a file is line 1.
2978 Attached mouse-movement events to extend the secondary selection to the
2981 secondary_or_drag_adjust()
2982 Attached mouse-movement events to extend the secondary selection, or
2983 reposition the primary text being dragged. Takes two optional arguments,
2984 "copy", and "overlay". "copy" leaves a copy of the dragged text at the site
2985 at which the drag began. "overlay" does the drag in overlay mode, meaning
2986 the dragged text is laid on top of the existing text, obscuring and
2987 ultimately deleting it when the drag is complete.
2989 secondary_or_drag_start()
2990 To be attached to a mouse down event. Begins drag selecting a secondary
2991 selection, or dragging the contents of the primary selection, depending on
2992 whether the mouse is pressed inside of an existing primary selection.
2995 To be attached to a mouse down event. Begin drag selecting a secondary
2999 Select the entire file.
3002 To be attached to a key-press event, inserts the character equivalent of the
3014 NEdit can be customized many different ways. The most important
3015 user-settable options are presented in the Preferences menu, including all
3016 options that users might need to change during an editing session. Options
3017 set in the Default Settings sub-menu of the Preferences menu can be
3018 preserved between sessions by selecting Save Defaults, which writes the
3019 changes to the preferences file. See the section titled "Preferences" for
3022 User defined commands can be added to NEdit's Shell, Macro, and window
3023 background menus. Dialogs for creating items in these menus can be found
3024 under Customize Menus in the Default Settings sub menu of the Preferences
3027 For users who depend on NEdit every day and want to tune every excruciating
3028 detail, there are also X resources for tuning a vast number of such details,
3029 down to the color of each individual button. See the section "X Resources"
3030 for more information, as well as a list of selected resources.
3032 The most common reason customizing your X resources for NEdit, however, is
3033 key binding. While limited key binding can be done through Preferences
3034 settings (Preferences -> Default Settings -> Customize Menus), you can
3035 really only add keys this way, and each key must have a corresponding menu
3036 item. Any significant changes to key binding should be made via the
3037 Translations resource and menu accelerator resources. The sections titled
3038 "Key Binding" and "X Resources" have more information.
3044 The Preferences menu allows you to set options for both the current editing
3045 window, and default values for newly created windows and future NEdit
3046 sessions. Options in the Preferences menu itself (not in the Default
3047 Settings sub-menu) take effect immediately and refer to the current window
3048 only. Options in the Default Settings sub-menu provide initial settings for
3049 future windows created using the New or Open commands; options affecting all
3050 windows are also set here. Preferences set in the Default Settings sub-menu
3051 can be saved in a file that is automatically read by NEdit at startup time,
3052 by selecting Save Defaults.
3058 Menu of initial settings for future windows. Generally the same as the
3059 options in the main part of the menu, but apply as defaults for future
3060 windows created during this NEdit session. These settings can be saved using
3061 the Save Defaults command below, to be loaded automatically each time NEdit
3065 Save the default options as set under Default Settings for future NEdit
3069 Show the full file name, line number, and length of the file being edited.
3071 Incremental Search Line
3072 Keep the incremental search bar (Search -> Find Incremental) permanently
3073 displayed at the top of the window.
3076 Display line numbers to the right of the text.
3079 Tells NEdit what language (if any) to assume, for selecting
3080 language-specific features such as highlight patterns and smart indent
3081 macros, and setting language specific preferences like word delimiters, tab
3082 emulation, and auto-indent. See Features for Programming -> Programming with
3083 NEdit for more information.
3086 Setting Auto Indent "on" maintains a running indent (pressing the Return key
3087 will line up the cursor with the indent level of the previous line). If
3088 smart indent macros are available for the current language mode, smart
3089 indent can be selected and NEdit will attempt to guess proper language
3090 indentation for each new line. See Help -> Features for Programming ->
3091 Automatic Indent for more information.
3094 Choose between two styles of automatic wrapping or none. Auto Newline wrap,
3095 wraps text at word boundaries when the cursor reaches the right margin, by
3096 replacing the space or tab at the last word boundary with a newline
3097 character. Continuous Wrap wraps long lines which extend past the right
3098 margin. Continuous Wrap mode is typically used to produce files where
3099 newlines are omitted within paragraphs, to make text filling automatic (a
3100 kind of poor-man's word processor). Text of this style is common on Macs and
3101 PCs but is not necessarily supported very well under Unix (except in
3102 programs which deal with e-mail, for which it is often the format of
3106 Set margin for Auto Newline Wrap, Continuous Wrap, and Fill Paragraph. Lines
3107 may, be wrapped at the right margin of the window, or the margin can be set
3108 at a specific column.
3111 Set the tab distance (number of characters between tab stops) for tab
3112 characters, and control tab emulation and use of tab characters in padding
3116 Change the font(s) used to display text (fonts for menus and dialogs must be
3117 set using X resources for the text area of the window). See below for more
3121 If NEdit recognizes the language being edited, and highlighting patterns are
3122 available for that language, use fonts and colors to enhance viewing of the
3123 file. (See Help -> Features for Programming -> Syntax Highlighting for more
3127 On Save, write a backup copy of the file as it existed before the Save
3128 command with the extension .bck (Unix only).
3131 Periodically make a backup copy of the file being edited under the name
3132 `~filename` on Unix or `_filename` on VMS (see Crash Recovery).
3135 Momentarily highlight matching parenthesis, brackets, and braces, or the
3136 range between them, when one of these characters is typed, or when the
3137 insertion cursor is positioned after it. Delimiter only highlights the
3138 matching delimiter, while Range highlights the whole range of text between
3139 the matching delimiters.
3141 Optionally, the matching can make use of syntax information if syntax
3142 highlighting is enabled. Alternatively, the matching is purely character
3143 based. In general, syntax based matching results in fewer false matches.
3146 In overtype mode, new characters entered replace the characters in front of
3147 the insertion cursor, rather than being inserted before them.
3150 Lock the file against accidental modification. This temporarily prevents the
3151 file from being modified in this NEdit session. Note that this is different
3152 from setting the file protection.
3155 PREFERENCES -> DEFAULT SETTINGS MENU
3157 Options in the Preferences -> Default Settings menu have the same meaning as
3158 those in the top-level Preferences menu, except that they apply to future
3159 NEdit windows and future NEdit sessions if saved with the Save Defaults
3160 command. Additional options which appear in this menu are:
3163 Define language recognition information (for determining language mode from
3164 file name or content) and set language specific preferences.
3167 How to react to multiple tags for the same name. Tags are described in the
3168 section: Features for Programmers -> Finding Declarations (ctags). In Show
3169 All mode, all matching tags are displayed in a dialog. In Smart mode, if one
3170 of the matching tags is in the current window, that tag is chosen, without
3171 displaying the dialog.
3174 Add/remove items from the Shell, Macro, and window background menus (see
3177 Customize Window Title
3178 Opens a dialog where the information to be displayed in the windows's title
3179 field can be defined and tested. The dialog contains a Help button,
3180 providing further information about the options available.
3183 Options for controlling the behavior of Find and Replace commands:
3185 Verbose - Presents search results in dialog form, asks before wrapping a
3186 search back around the beginning (or end) of the file (unless Beep On Search
3189 Wrap Around - Search and Replace operations wrap around the beginning (or
3192 Beep On Search Wrap - Beep when Search and Replace operations wrap around
3193 the beginning (or end) of the file (only if Wrap Around is turned on).
3195 Keep Dialogs Up - Don't pop down Replace and Find boxes after searching.
3197 Default Search Style - Initial setting for search type in Find and Replace
3200 Default Replace Scope - [THIS OPTION IS ONLY PRESENT WHEN NEDIT WAS COMPILED
3202 -DREPLACE_SCOPE FLAG TO SELECT AN ALTERNATIVE REPLACE DIALOG LAYOUT.]
3204 Initial setting for the scope in the Replace/Find dialog, when a selection
3205 exists. It can be either "In Window", "In Selection", or "Smart". "Smart"
3206 results in "In Window" if the size of the selection is smaller than 1 line,
3207 and to "In Selection" otherwise.
3210 Program and configure enhanced text display for new or supported languages
3211 (See Features for Programming -> Syntax Highlighting).
3213 Append Line Feed on Save
3214 Some UNIX tools expect that files end with a line feed. If this option is
3215 activated, NEdit will append one if required.
3217 Sort Open Prev. Menu
3218 Option to order the File -> Open Previous menu alphabetically, versus in
3219 order of last access.
3221 Popups Under Pointer
3222 Display pop-up dialogs centered on the current mouse position, as opposed to
3223 centered on the parent window. This generally speeds interaction, and is
3224 essential for users who users who set their window managers so keyboard
3225 focus follows the mouse.
3227 Modification Warnings
3228 Pop up a warning dialog when files get changed external to NEdit.
3231 Ask before exiting when two or more files are open in an NEdit session.
3234 Default size for new windows.
3239 The font used to display text in NEdit is set under Preferences -> Text Font
3240 (for the current window), or Preferences -> Default Settings Text Font (for
3241 future windows). These dialogs also allow you to set fonts for syntax
3242 highlighting. If you don't intend to use syntax highlighting, you can ignore
3243 most of the dialog, and just set the field labeled Primary Font.
3245 Unless you are absolutely certain about the types of files that you will be
3246 editing with NEdit, you should choose a fixed-spacing font. Many, if not
3247 most, plain-text files are written expecting to be viewed with fixed
3248 character spacing, and will look wrong with proportional spacing. NEdit's
3249 filling, wrapping, and rectangular operations will also work strangely if
3250 you choose a proportional font.
3252 Note that in the font browser (the dialog brought up by the Browse...
3253 button), the subset of fonts which are shown is narrowed depending on the
3254 characteristics already selected. It is therefore important to know that you
3255 can unselect characteristics from the lists by clicking on the selected
3256 items a second time.
3258 Fonts for syntax highlighting should ideally match the primary font in both
3259 height and spacing. A mismatch in spacing will result in similar distortions
3260 as choosing a proportional font: column alignment will sometimes look wrong,
3261 and rectangular operations, wrapping, and filling will behave strangely. A
3262 mismatch in height will cause windows to re-size themselves slightly when
3263 syntax highlighting is turned on or off, and increase the inter- line
3264 spacing of the text. Unfortunately, on some systems it is hard to find sets
3265 of fonts which match exactly in height.
3270 You can add or change items in the Shell, Macro, and window background menus
3271 under Preferences -> Default Settings -> Customize Menus. When you choose
3272 one of these, you will see a dialog with a list of the current
3273 user-configurable items from the menu on the left. To change an existing
3274 item, select it from the list, and its properties will appear in the
3275 remaining fields of the dialog, where you may change them. Selecting the
3276 item "New" from the list allows you to enter new items in the menu.
3278 Hopefully most of the characteristics are self explanatory, but here are a
3281 Accelerator keys are keyboard shortcuts which appear on the right hand side
3282 of the menus, and allow you avoid pulling down the menu and activate the
3283 command with a single keystroke. Enter accelerators by typing the keys
3284 exactly as you would to activate the command.
3286 Mnemonics are a single letter which should be part of the menu item name,
3287 which allow users to traverse and activate menu items by typing keys when
3288 the menu is pulled down.
3290 In the Shell Command field of the Shell Commands dialog, the % character
3291 expands to the name (including directory path) of the file in the window. To
3292 include a % character in the command, use %%.
3294 The Menu Entry field can contain special characters for constructing
3295 hierarchical sub-menus, and for making items which appear only in certain
3296 language modes. The right angle bracket character ">" creates a sub-menu.
3297 The name of the item itself should be the last element of the path formed
3298 from successive sub-menu names joined with ">". Menu panes are called in to
3299 existence simply by naming them as part of a Menu Entry name. To put several
3300 items in the same sub-menu, repeat the same hierarchical sequence for each.
3301 For example, in the Macro Commands dialog, two items with menu entries:
3302 a>b>c and a>b>d would create a single sub menu under the macro menu called
3303 "a", which would contain a single sub-menu, b, holding the actual items, c
3311 To qualify a menu entry with a language mode, simply add an at-sign "@" at
3312 the end of the menu command, followed (no space) by a language mode name. To
3313 make a menu item which appears in several language modes, append additional
3314 @s and language mode names. For example, an item with the menu entry:
3316 Make C Prototypes@C@C++
3318 would appear only in C and C++ language modes, and:
3320 Make Class Template@C++
3322 would appear only in C++ mode.
3324 Menu items with no qualification appear in all language modes.
3326 If a menu item is followed by the single language qualification "@*", that
3327 item will appear only if there are no applicable language-specific items of
3328 the same name in the same submenu. For example, if you have the following
3329 three entries in the same menu:
3331 Make Prototypes@C@C++
3332 Make Prototypes@Java
3335 The first will be available when the language mode is C or C++, the second
3336 when the language mode is Java, and for all other language modes (including
3337 the "Plain" non-language mode). If the entry:
3341 also exists, this will always appear, meaning that the menu will always have
3342 two "Make Prototypes" entries, whatever the language mode.
3345 THE NEDIT PREFERENCES FILE
3347 The NEdit saved preferences file is an X resource file, and its contents can
3348 be moved into another X resource file (see X Resources). One reason for
3349 doing so would be to attach server specific preferences, such as a default
3350 font to a particular X server. Another reason for moving preferences into
3351 the X resource file would be to keep preferences menu options and resource
3352 settable options together in one place. Though the files are the same
3353 format, additional resources should not be added to the preference file
3354 since NEdit modifies this file by overwriting it completely. Note also that
3355 the contents of the preference file take precedence over the values of X
3356 resources. Using Save Defaults after moving the contents of your preference
3357 file to your .Xdefaults file will re-create the preference file, interfering
3358 with the options that you have moved. The location of NEdit's preferences
3359 file depends on your environment:
3360 * The default place for the file is '$HOME/.nedit/nedit.rc',
3361 * if the variable $NEDIT_HOME is set in your environment it is located at
3362 '$NEDIT_HOME/nedit.rc',
3363 * you may also use old-style run control files; in this case, the preferences
3364 are stored in $HOME/.nedit.
3365 (For VMS, the file is in '$NEDIT_HOME/nedit.rc' if $NEDIT_HOME is set, in
3366 'SYS$LOGIN:.nedit' otherwise.)
3369 SHARING CUSTOMIZATIONS WITH OTHER NEDIT USERS
3371 If you have written macro or shell menu commands, highlight patterns, or
3372 smart-indent macros that you want to share with other NEdit users, you can
3373 make a file which they can load into their NEdit environment.
3375 To load such a file, start NEdit with the command:
3377 nedit -import <file>
3379 In the new NEdit session, verify that the imported patterns or macros do
3380 what you want, then select Preferences -> Save Defaults. Saving incorporates
3381 the changes into the nedit preferences file, so the next time you run NEdit,
3382 you will not have to import the distribution file.
3384 Loading a customization file is automated, but creating one is not. To
3385 produce a file to be imported by other users, you must make a copy of your
3386 own NEdit configuration file, and edit it, by hand, to remove everything but
3387 the few items of interest to the recipient. Leave only the individual
3388 resource(s), and within those resources, only the particular macro, pattern,
3389 style, etc, that you wish to exchange.
3391 For example, to share a highlighting pattern set, you would include the
3392 patterns, any new styles you added, and language mode information only if
3393 the patterns are intended to support a new language rather than updating an
3394 existing one. For example:
3396 nedit.highlightPatterns:\
3398 Comment:"#":"$"::Comment::\n\
3399 Loop Header:"^[ \\t]*loop:":::Loop::\n\
3401 nedit.languageModes: My Language:.my::::::
3402 nedit.styles: Loop:blue:Bold
3404 Resources are in the format of X resource files, but the format of text
3405 within multiple-item resources like highlight patterns, language modes,
3406 macros, styles, etc., are private to NEdit. Each resource is a string which
3407 ends at the first newline character not escaped with \, so you must be
3408 careful about how you treat ends of lines. While you can generally just cut
3409 and paste indented sections, if something which was originally in the middle
3410 of a resource string is now at the end, you must remove the \ line
3411 continuation character(s) so it will not join the next line into the
3412 resource. Conversely, if something which was originally at the end of a
3413 resource is now in the middle, you'll have to add continuation character(s)
3414 to make sure that the resource string is properly continued from beginning
3415 to end, and possibly newline character(s) (\n) to make sure that it is
3416 properly separated from the next item.
3422 NEdit has additional options to those provided in the Preferences menu which
3423 are set using X resources. Like most other X programs, NEdit can be
3424 customized to vastly unnecessary proportions, from initial window positions
3425 down to the font and shadow colors of each individual button (A complete
3426 discussion of how to do this is left to books on the X Windows System). Key
3427 binding (see "Key Binding" is one of the most useful of these resource
3430 X resources are usually specified in a file called .Xdefaults or .Xresources
3431 in your home directory (on VMS this is sys$login:decw$xdefaults.dat). On
3432 some systems, this file is read and its information attached to the X server
3433 (your screen) when you start X. On other systems, the .Xdefaults file is
3434 read each time you run an X program. When X resource values are attached to
3435 the X server, changes to the resource file are not available to application
3436 programs until you either run the xrdb program with the appropriate file as
3437 input, or re-start the X server.
3440 SELECTED X RESOURCE NAMES
3442 The following are selected NEdit resource names and default values for NEdit
3443 options not settable via the Preferences menu (for preference resource
3444 names, see your NEdit preference file):
3446 nedit.tagFile: (not defined)
3448 This can be the name of a file, or multiple files separated by a colon (:)
3449 character, of the type produced by Exuberant Ctags or the Unix ctags
3450 command, which NEdit will load at startup time (see ctag support ). The tag
3451 file provides a database from which NEdit can automatically open files
3452 containing the definition of a particular subroutine or data type.
3454 nedit.alwaysCheckRelativeTagsSpecs: True
3456 When this resource is set to True, and there are tag files specified (with
3457 the nedit.tagFile resource, see above) as relative paths, NEdit will
3458 evaluate these tag value paths whenever a file is opened. All accessible tag
3459 files will be loaded at this time. When this resource value is False,
3460 relative path tag specifications will only be evaluated at NEdit startup
3463 nedit.shell: /bin/csh
3465 (Unix systems only) The Unix shell (command interpreter) to use for
3466 executing commands from the Shell menu
3468 nedit.wordDelimiters: .,/\\`'!@#%^&*()-=+{}[]":;<>?
3470 The characters, in addition to blanks and tabs, which mark the boundaries
3471 between words for the move-by-word (Ctrl+Arrow) and select-word (double
3472 click) commands. Note that this default value may be overridden by the
3473 setting in Preferences -> Default Settings -> Language Modes....
3475 nedit.remapDeleteKey: False
3477 Setting this resource to True forcibly maps the delete key to backspace.
3478 This can be helpful on systems where the bindings have become tangled, and
3479 in environments which mix systems with PC style keyboards and systems with
3480 DEC and Macintosh keyboards. Theoretically, these bindings should be made
3481 using the standard X/Motif mechanisms, outside of NEdit. In practice, some
3482 environments where users access several different systems remotely, can be
3483 very hard to configure. If you've given up and are using a backspace key
3484 halfway off the keyboard because you can't figure out the bindings, set this
3487 nedit.typingHidesPointer: False
3489 Setting this resource to True causes the mouse pointer to be hidden when you
3490 type in the text area. As soon as the mouse pointer is moved, it will
3491 reappear. This is useful to stop the mouse pointer from obscuring text.
3493 nedit.overrideDefaultVirtualKeyBindings: Auto
3495 Motif uses a virtual key binding mechanism that shares the bindings between
3496 different Motif applications. When a first Motif application is started, it
3497 installs some default virtual key bindings and any other Motif application
3498 that runs afterwards, simply reuses them. Obviously, if the first
3499 application installs an invalid set, all others applications may have
3502 In the past, NEdit has been the victim of invalid bindings installed by
3503 other applications several times. Through this resource, NEdit can be
3504 instructed to ignore the bindings installed by other applications, and use
3505 its own private bindings. By default, NEdit tries to detect invalid bindings
3506 and ignore them automatically (Auto). Optionally, NEdit can be told to
3507 always keep the installed bindings (Never), or to always override them
3510 nedit.stdOpenDialog: False
3512 Setting this resource to True restores the standard Motif style of Open
3513 dialog. NEdit file open dialogs are missing a text field at the bottom of
3514 the dialog, where the file name can be entered as a string. The field is
3515 removed in NEdit to encourage users to type file names in the list, a
3516 non-standard, but much faster method for finding files.
3518 nedit.bgMenuButton: ~Shift~Ctrl~Meta~Alt<Btn3Down>
3520 Specification for mouse button / key combination to post the background menu
3521 (in the form of an X translation table event specification). The event
3522 specification should be as specific as possible, since it will override less
3523 specific translation table entries.
3525 nedit.maxPrevOpenFiles: 30
3527 Number of files listed in the Open Previous sub-menu of the File menu.
3528 Setting this to zero disables the Open Previous menu item and maintenance of
3529 the NEdit file history file.
3531 nedit.printCommand: (system specific)
3533 Command used by the print dialog to print a file, such as, lp, lpr, etc..
3534 The command must be capable of accepting input via stdin (standard input).
3536 nedit.printCopiesOption: (system specific)
3538 Option name used to specify multiple copies to the print command. If the
3539 option should be separated from its argument by a space, leave a trailing
3540 space. If blank, no "Number of Copies" item will appear in the print dialog.
3542 nedit.printQueueOption: (system specific)
3544 Option name used to specify a print queue to the print command. If the
3545 option should be separated from its argument by a space, leave a trailing
3546 space. If blank, no "Queue" item will appear in the print dialog.
3548 nedit.printNameOption: (system specific)
3550 Option name used to specify a job name to the print command. If the option
3551 should be separated from its argument by a space, leave a trailing space. If
3552 blank, no job or file name will be attached to the print job or banner page.
3554 nedit.printHostOption: (system specific)
3556 Option name used to specify a host name to the print command. If the option
3557 should be separated from its argument by a space, leave a trailing space. If
3558 blank, no "Host" item will appear in the print dialog.
3560 nedit.printDefaultQueue: (system specific)
3562 The name of the default print queue. Used only to display in the print
3563 dialog, and has no effect on printing.
3565 nedit.visualID: Best
3567 If your screen supports multiple visuals (color mapping models), this
3568 resource allows you to manually choose among them. The default value of
3569 "Best" chooses the deepest (most colors) visual available. Since NEdit does
3570 not depend on the specific characteristics of any given color model, Best
3571 probably IS the best choice for everyone, and the only reason for setting
3572 this resource would be to patch around some kind of X server problem. The
3573 resource may also be set to "Default", which chooses the screen's default
3574 visual (often a color-mapped, PseudoColor, visual for compatibility with
3575 older X applications). It may also be set to a numeric visual-id value (use
3576 xdpyinfo to see the list of visuals supported by your display), or a visual
3577 class name: PseudoColor, DirectColor, TrueColor, etc..
3579 nedit.installColormap: False
3581 Force the installation of a private colormap. If you have a humble 8-bit
3582 color display, and netscape is hogging all of the color cells, you may want
3583 to try turning this on. On most systems, this will result in colors flashing
3584 wildly when you switch between NEdit and other applications. But a few
3585 systems (SGI) have hardware support for multiple simultaneous colormaps, and
3586 applications with installed colormaps are well behaved.
3588 nedit.findReplaceUsesSelection: False
3590 Controls if the Find and Replace dialogs are automatically loaded with the
3591 contents of the primary selection.
3593 nedit.stickyCaseSenseButton: True
3595 Controls if the "Case Sensitive" buttons in the Find and Replace dialogs and
3596 the incremental search bar maintain a separate state for literal and regular
3597 expression searches. Moreover, when set to True, by default literal searches
3598 are case insensitive and regular expression searches are case sensitive.
3599 When set to False, the "Case Sensitive" buttons are independent of the
3600 "Regular Expression" toggle.
3602 nedit.printDefaultHost: (system specific)
3604 The node name of the default print host. Used only to display in the print
3605 dialog, and has no effect on printing.
3607 nedit.multiClickTime: (system specific)
3609 Maximum time in milliseconds allowed between mouse clicks within double and
3610 triple click actions.
3612 nedit*scrollBarPlacement: BOTTOM_LEFT
3614 How scroll bars are placed in NEdit windows, as well as various lists and
3615 text fields in the program. Other choices are: BOTTOM_RIGHT, TOP_LEFT, or
3618 nedit*text.autoWrapPastedText: False
3620 When Auto Newline Wrap is turned on, apply automatic wrapping (which
3621 normally only applies to typed text) to pasted text as well.
3623 nedit*text.heavyCursor: False
3625 For monitors with poor resolution or users who have difficulty seeing the
3626 cursor, makes the cursor in the text editing area of the window heavier and
3629 nedit*text.foreground: black
3631 Foreground color of the text editing area of the NEdit window.
3633 nedit*text.background: white
3635 Background color of the text editing area of the NEdit window.
3637 nedit*text.selectForeground: black
3639 Foreground (text) color for selections in the text editing area of the NEdit
3642 nedit*text.selectBackground: gray80
3644 Color for selections in the text editing area of the NEdit window.
3646 nedit*text.highlightForeground: white
3648 Foreground (text) color for highlights (parenthesis flashing) in the text
3649 editing area of the NEdit window.
3651 nedit*text.highlightBackground: red
3653 Color for highlights (parenthesis flashing) in the text editing area of the
3656 nedit*text.cursorForeground: black
3658 Color for text cursor in the text editing area of the NEdit window.
3660 nedit*text.lineNumForeground: gray47
3662 Color for displaying line numbers in the NEdit window.
3664 nedit*text.blinkRate: 500
3666 Blink rate of the text insertion cursor in milliseconds. Set to zero to stop
3669 nedit*text.Translations:
3671 Modifies key bindings (see below).
3673 nedit*foreground: black
3675 Default foreground color for menus, dialogs, scroll bars, etc..
3677 nedit*background: #b3b3b3
3679 Default background color for menus, dialogs, scroll bars, etc..
3681 nedit*fontList: helvetica medium 12 points
3683 Default font for menus, dialogs, scroll bars, etc..
3685 nedit.helpFont: helvetica medium 12 points
3687 Font used for displaying online help.
3689 nedit.boldHelpFont: helvetica bold 12 points
3691 Bold font for online help.
3693 nedit.italicHelpFont: helvetica italic 12 points
3695 Italic font for online help.
3697 nedit.fixedHelpFont: courier medium 12 points
3699 Fixed font for online help.
3701 nedit.boldFixedHelpFont: courier bold 12 points
3703 Fixed bold for online help.
3705 nedit.italicFixedHelpFont: courier italic 12 points
3707 Fixed italic font for online help.
3709 nedit.h1HelpFont: helvetica bold 14 points
3711 Font for level-1 titles in help text.
3713 nedit.h2HelpFont: helvetica bold italic 12 points
3715 Font for level-2 titles in help text.
3717 nedit.h3HelpFont: courier bold 12 points
3719 Font for level-3 titles in help text.
3721 nedit.helpLinkFont: helvetica medium 12 points
3723 Font for hyperlinks in the help text
3725 nedit.helpLinkColor: #009900
3727 Color for hyperlinks in the help text
3731 Whether the nc program should automatically start an NEdit server (without
3732 prompting the user) if an appropriate server is not found.
3734 nc.serverCommand: nedit -server
3736 Command used by the nc program to start an NEdit server.
3738 and other characteristics):
3739 The following are Selected widget names (to which you may append
3740 .background, .foreground, .fontList, etc., to change colors, fonts
3744 Statistics line and incremental search bar. To get consistent results across
3745 the entire stats line and the incremental search bar, use '*' rather than
3746 '.' to separate the resource name. For example, to set the foreground color
3747 of both components use:
3748 nedit*statsAreaForm*foreground
3750 nedit*statsAreaForm.foreground
3754 Top-of-window menu-bar.
3756 nedit*textHorScrollBar
3758 Horizontal scroll bar.
3760 nedit*textVertScrollBar
3762 Vertical scroll bar.
3772 There are several ways to change key bindings in NEdit. The easiest way to
3773 add a new key binding in NEdit is to define a macro in Preferences ->
3774 Default Settings -> Customize Menus -> Macro Menu. However, if you want to
3775 change existing bindings or add a significant number of new key bindings you
3776 will need to do so via X resources.
3778 Before reading this section, you must understand how to set X resources (see
3779 the help section "X Resources"). Since setting X resources is tricky, it is
3780 also helpful when working on key-binding, to set some easier-to-verify
3781 resource at the same time, as a simple check that the NEdit program is
3782 actually seeing your changes. The appres program is also very helpful in
3783 checking that the resource settings that you make, actually reach the
3784 program for which they are intended in the correct form.
3787 KEY BINDING IN GENERAL
3789 Keyboard commands are associated with editor action routines through two
3790 separate mechanisms in NEdit. Commands which appear in pull-down menus have
3791 individual resources designating a keyboard equivalent to the menu command,
3792 called an accelerator key. Commands which do not have an associated menu
3793 item are bound to keys via the X toolkit translation mechanism. The methods
3794 for changing these two kinds of bindings are quite different.
3797 KEY BINDING VIA TRANSLATIONS
3799 The most general way to bind actions to keys in NEdit is to use the
3800 translation table associated with the text widget. To add a binding to Alt+Y
3801 to insert the string "Hi!", for example, add lines similar to the following
3802 to your X resource file:
3804 NEdit*text.Translations: #override \n\
3805 Alt<Key>y: insert_string("Hi!") \n
3807 The Help topic "Action Routines" lists the actions available to be bound.
3809 Translation tables map key and mouse presses, window operations, and other
3810 kinds of events, to actions. The syntax for translation tables is simplified
3811 here, so you may need to refer to a book on the X window system for more
3812 detailed information.
3814 Note that accelerator resources (discussed below) override translations, and
3815 that most Ctrl+letter and Alt+letter combinations are already bound to an
3816 accelerator key. To use one of these combinations from a translation table,
3817 therefore, you must first un-bind the original menu accelerator.
3819 A resource for changing a translation table consists of a keyword;
3820 #override, #augment, or #replace; followed by lines (separated by newline
3821 characters) pairing events with actions. Events begin with modifiers, like
3822 Ctrl, Shift, or Alt, followed by the event type in <>. BtnDown, Btn1Down,
3823 Btn2Down, Btn1Up, Key, KeyUp are valid event types. For key presses, the
3824 event type is followed by the name of the key. You can specify a combination
3825 of events, such as a sequence of key presses, by separating them with
3826 commas. The other half of the event/action pair is a set of actions. These
3827 are separated from the event specification by a colon and from each other by
3828 spaces. Actions are names followed by parentheses, optionally containing one
3829 or more parameters separated by comas.
3832 CHANGING MENU ACCELERATOR KEYS
3834 The menu shortcut keys shown at the right of NEdit menu items can also be
3835 changed via X resources. Each menu item has two resources associated with
3836 it, accelerator, the event to trigger the menu item; and acceleratorText,
3837 the string shown in the menu. The form of the accelerator resource is the
3838 same as events for translation table entries discussed above, though
3839 multiple keys and other subtleties are not allowed. The resource name for a
3840 menu is the title in lower case, followed by "Menu", the resource name of
3841 menu item is the name in lower case, run together, with words separated by
3842 caps, and all punctuation removed. For example, to change Cut to Ctrl+X, you
3843 would add the following to your .Xdefaults file:
3845 nedit*editMenu.cut.accelerator: Ctrl<Key>x
3846 nedit*editMenu.cut.acceleratorText: Ctrl+X
3848 Accelerator keys with optional shift key modifiers, like Find..., have an
3849 additional accelerator resource with Shift appended to the name. For
3852 nedit*searchMenu.find.acceleratorText: [Shift]Alt+F
3853 nedit*searchMenu.find.accelerator: Alt<Key>f
3854 nedit*searchMenu.findShift.accelerator: Shift Alt<Key>f
3856 ---------------------
3857 HIGHLIGHTING PATTERNS
3858 ---------------------
3861 WRITING SYNTAX HIGHLIGHTING PATTERNS
3863 Patterns are the mechanism by which language syntax highlighting is
3864 implemented in NEdit (see Syntax Highlighting under the heading of Features
3865 for Programming). To create syntax highlighting patterns for a new language,
3866 or to modify existing patterns, select "Recognition Patterns" from "Syntax
3867 Highlighting" sub-section of the "Default Settings" sub-menu of the
3870 First, a word of caution. As with regular expression matching in general, it
3871 is quite possible to write patterns which are so inefficient that they
3872 essentially lock up the editor as they recursively re-examine the entire
3873 contents of the file thousands of times. With the multiplicity of patterns,
3874 the possibility of a lock-up is significantly increased in syntax
3875 highlighting. When working on highlighting patterns, be sure to save your
3878 NEdit's syntax highlighting is unusual in that it works in real-time (as you
3879 type), and yet is completely programmable using standard regular expression
3880 notation. Other syntax highlighting editors usually fall either into the
3881 category of fully programmable but unable to keep up in real-time, or
3882 real-time but limited programmability. The additional burden that NEdit
3883 places on pattern writers in order to achieve this speed/flexibility mix, is
3884 to force them to state self-imposed limitations on the amount of context
3885 that patterns may examine when re-parsing after a change. While the "Pattern
3886 Context Requirements" heading is near the end of this section, it is not
3887 optional, and must be understood before making any any serious effort at
3890 In its simplest form, a highlight pattern consists of a regular expression
3891 to match, along with a style representing the font an color for displaying
3892 any text which matches that expression. To bold the word, "highlight",
3893 wherever it appears the text, the regular expression simply would be the
3894 word "highlight". The style (selected from the menu under the heading of
3895 "Highlight Style") determines how the text will be drawn. To bold the text,
3896 either select an existing style, such as "Keyword", which bolds text, or
3897 create a new style and select it under Highlight Style.
3899 The full range of regular expression capabilities can be applied in such a
3900 pattern, with the single caveat that the expression must conclusively match
3901 or not match, within the pre-defined context distance (as discussed below
3902 under Pattern Context Requirements).
3904 To match longer ranges of text, particularly any constructs which exceed the
3905 requested context, you must use a pattern which highlights text between a
3906 starting and ending regular expression match. To do so, select "Highlight
3907 text between starting and ending REs" under "Matching", and enter both a
3908 starting and ending regular expression. For example, to highlight everything
3909 between double quotes, you would enter a double quote character in both the
3910 starting and ending regular expression fields. Patterns with both a
3911 beginning and ending expression span all characters between the two
3912 expressions, including newlines.
3914 Again, the limitation for automatic parsing to operate properly is that both
3915 expressions must match within the context distance stated for the pattern
3918 With the ability to span large distances, comes the responsibility to
3919 recover when things go wrong. Remember that syntax highlighting is called
3920 upon to parse incorrect or incomplete syntax as often as correct syntax. To
3921 stop a pattern short of matching its end expression, you can specify an
3922 error expression, which stops the pattern from gobbling up more than it
3923 should. For example, if the text between double quotes shouldn't contain
3924 newlines, the error expression might be "$". As with both starting and
3925 ending expressions, error expressions must also match within the requested
3929 Coloring Sub-Expressions
3931 It is also possible to color areas of text within a regular expression
3932 match. A pattern of this type associates a style with sub-expressions
3933 references of the parent pattern (as used in regular expression substitution
3934 patterns, see the NEdit Help menu item on Regular Expressions).
3935 Sub-expressions of both the starting and ending patterns may be colored. For
3936 example, if the parent pattern has a starting expression "\<", and end
3937 expression "\>", (for highlighting all of the text contained within angle
3938 brackets), a sub-pattern using "&" in both the starting and ending
3939 expression fields could color the brackets differently from the intervening
3940 text. A quick shortcut to typing in pattern names in the Parent Pattern
3941 field is to use the middle mouse button to drag them from the Patterns list.
3944 Hierarchical Patterns
3946 A hierarchical sub-pattern, is identical to a top level pattern, but is
3947 invoked only between the beginning and ending expression matches of its
3948 parent pattern. Like the sub-expression coloring patterns discussed above,
3949 it is associated with a parent pattern using the Parent Pattern field in the
3950 pattern specification. Pattern names can be dragged from the pattern list
3951 with the middle mouse button to the Parent Pattern field.
3953 After the start expression of the parent pattern matches, the syntax
3954 highlighting parser searches for either the parent's end pattern or a
3955 matching sub-pattern. When a sub-pattern matches, control is not returned to
3956 the parent pattern until the entire sub-pattern has been parsed, regardless
3957 of whether the parent's end pattern appears in the text matched by the
3960 The most common use for this capability is for coloring sub-structure of
3961 language constructs (smaller patterns embedded in larger patterns).
3962 Hierarchical patterns can also simplify parsing by having sub-patterns
3963 "hide" special syntax from parent patterns, such as special escape sequences
3964 or internal comments.
3966 There is no depth limit in nesting hierarchical sub-patterns, but beyond the
3967 third level of nesting, automatic re-parsing will sometimes have to re-parse
3968 more than the requested context distance to guarantee a correct parse (which
3969 can slow down the maximum rate at which the user can type if large sections
3970 of text are matched only by deeply nested patterns).
3972 While this is obviously not a complete hierarchical language parser it is
3973 still useful in many text coloring situations. As a pattern writer, your
3974 goal is not to completely cover the language syntax, but to generate
3975 colorings that are useful to the programmer. Simpler patterns are usually
3976 more efficient and also more robust when applied to incorrect code.
3979 Deferred (Pass-2) Parsing
3981 NEdit does pattern matching for syntax highlighting in two passes. The first
3982 pass is applied to the entire file when syntax highlighting is first turned
3983 on, and to new ranges of text when they are initially read or pasted in. The
3984 second pass is applied only as needed when text is exposed (scrolled in to
3987 If you have a particularly complex set of patterns, and parsing is beginning
3988 to add a noticeable delay to opening files or operations which change large
3989 regions of text, you can defer some of that parsing from startup time, to
3990 when it is actually needed for viewing the text. Deferred parsing can only
3991 be used with single expression patterns, or begin/end patterns which match
3992 entirely within the requested context distance. To defer the parsing of a
3993 pattern to when the text is exposed, click on the Pass-2 pattern type button
3994 in the highlight patterns dialog.
3996 Sometimes a pattern can't be deferred, not because of context requirements,
3997 but because it must run concurrently with pass-1 (non-deferred) patterns. If
3998 they didn't run concurrently, a pass-1 pattern might incorrectly match some
3999 of the characters which would normally be hidden inside of a sequence
4000 matched by the deferred pattern. For example, C has character constants
4001 enclosed in single quotes. These typically do not cross line boundaries,
4002 meaning they can be parsed entirely within the context distance of the C
4003 pattern set and should be good candidates for deferred parsing. However,
4004 they can't be deferred because they can contain sequences of characters
4005 which can trigger pass-one patterns. Specifically, the sequence, '\"',
4006 contains a double quote character, which would be matched by the string
4007 pattern and interpreted as introducing a string.
4010 Pattern Context Requirements
4012 The context requirements of a pattern set state how much additional text
4013 around any change must be examined to guarantee that the patterns will match
4014 what they are intended to match. Context requirements are a promise by NEdit
4015 to the pattern writer, that the regular expressions in his/her patterns will
4016 be matched against at least <line context> lines and <character context>
4017 characters, around any modified text. Combining line and character
4018 requirements guarantee that both will be met.
4020 Automatic re-parsing happens on EVERY KEYSTROKE, so the amount of context
4021 which must be examined is very critical to typing efficiency. The more
4022 complicated your patterns, the more critical the context becomes. To cover
4023 all of the keywords in a typical language, without affecting the maximum
4024 rate at which users can enter text, you may be limited to just a few lines
4025 and/or a few hundred characters of context.
4027 The default context distance is 1 line, with no minimum character
4028 requirement. There are several benefits to sticking with this default. One
4029 is simply that it is easy to understand and to comply with. Regular
4030 expression notation is designed around single line matching. To span lines
4031 in a regular expression, you must explicitly mention the newline character
4032 "\n", and matches which are restricted to a single line are virtually immune
4033 to lock-ups. Also, if you can code your patterns to work within a single
4034 line of context, without an additional character-range context requirement,
4035 the parser can take advantage the fact that patterns don't cross line
4036 boundaries, and nearly double its efficiency over a one-line and 1-character
4037 context requirement. (In a single line context, you are allowed to match
4038 newlines, but only as the first and/or last character.)
4044 Smart indent macros can be written for any language, but are usually more
4045 difficult to write than highlighting patterns. A good place to start, of
4046 course, is to look at the existing macros for C and C++.
4048 Smart indent macros for a language mode consist of standard NEdit macro
4049 language code attached to any or all of the following three activation
4050 conditions: 1) When smart indent is first turned on for a text window
4051 containing code of the language, 2) When a newline is typed and smart indent
4052 is expected, 3) after any character is typed. To attach macro code to any of
4053 these code "hooks", enter it in the appropriate section in the Preferences
4054 -> Default Settings -> Auto Indent -> Program Smart Indent dialog.
4056 Typically most of the code should go in the initialization section, because
4057 that is the appropriate place for subroutine definitions, and smart indent
4058 macros are complicated enough that you are not likely to want to write them
4059 as one monolithic run of code. You may also put code in the Common/Shared
4060 Initialization section (accessible through the button in the upper left
4061 corner of the dialog). Unfortunately, since the C/C++ macros also reside in
4062 the common/shared section, when you add code there, you run some risk of
4063 missing out on future upgrades to these macros, because your changes will
4064 override the built-in defaults.
4066 The newline macro is invoked after the user types a newline, but before the
4067 newline is entered in the buffer. It takes a single argument ($1) which is
4068 the position at which the newline will be inserted. It must return the
4069 number of characters of indentation the line should have, or -1. A return
4070 value of -1 means to do a standard auto-indent. You must supply a newline
4071 macro, but the code: "return -1" (auto-indent), or "return 0" (no indent) is
4074 The type-in macro takes two arguments. $1 is the insert position, and $2 is
4075 the character just inserted, and does not return a value. You can do just
4076 about anything here, but keep in mind that this macro is executed for every
4077 keystroke typed, so if you try to get too fancy, you may degrade
4084 nedit [-read] [-create] [-line n | +n] [-server]
4085 [-do command] [-tags file] [-tabs n] [-wrap]
4086 [-nowrap] [-autowrap] [-autoindent] [-noautoindent]
4087 [-autosave] [-noautosave] [-rows n] [-columns n]
4088 [-font font] [-lm languagemode] [-geometry geometry]
4089 [-iconic] [-noiconic] [-display [host]:server[.screen]
4090 [-xrm resourcestring] [-svrname name] [-import file]
4091 [-background color] [-foreground color] [-V|-version]
4095 Open the file Read Only regardless of the actual file protection.
4098 Don't warn about file creation when a file doesn't exist.
4104 Designate this session as an NEdit server, for processing commands from the
4105 nc program. nc can be used to interface NEdit to code development
4106 environments, mailers, etc., or just as a quick way to open files from the
4107 shell command line without starting a new NEdit session.
4110 Execute an NEdit macro or action. On each file following the -do argument on
4111 the command line. -do is particularly useful from the nc program, where nc
4112 -do can remotely execute commands in an NEdit -server session.
4115 Load a file of directions for finding definitions of program subroutines and
4116 data objects. The file must be of the format gen- erated by Exuberant Ctags,
4117 or the standard Unix ctags command.
4120 Set tab stops every n characters.
4123 Wrap long lines at the right edge of the window rather than continuing them
4124 past it. (Continuous Wrap mode)
4126 -autowrap, -noautowrap
4127 Wrap long lines when the cursor reaches the right edge of the window by
4128 inserting newlines at word boundaries. (Auto Newline Wrap mode)
4130 -autoindent, -noautoindent
4131 Maintain a running indent.
4133 -autosave, -noautosave
4134 Maintain a backup copy of the file being edited under the name '~filename'.
4137 Default height in characters for an editing window.
4140 Default width in characters for an editing window.
4142 -font font (or -fn font)
4143 Font for text being edited (Font for menus and dialogs can be set with -xrm
4147 Initial language mode used for editing succeeding files.
4149 -geometry geometry (or -g geometry)
4150 The initial size and/or location of editor windows. The argument geometry
4153 [<width>x<height>][+|-][<xoffset>[+|-]<yoffset>]
4155 where <width> and <height> are the desired width and height of the window,
4156 and <xoffset> and <yoffset> are the distance from the edge of the screen to
4157 the window, + for top or left, - for bottom or right. -geometry can be
4158 specified for individual files on the command line.
4161 Initial window state for succeeding files.
4163 -display [host]:server[.screen]
4164 The name of the X server to use. host specifies the machine, server
4165 specifies the display server number, and screen specifies the screen number.
4166 host or screen can be omitted and default to the local machine, and screen
4169 -background color (or -bg color)
4170 Background color. (background color for text can be set separately with -xrm
4171 "nedit*text.background: color").
4173 -foreground color (or -fg color)
4174 Foreground color. (foreground color for text can be set separately with -xrm
4175 "nedit*text.foreground: color").
4178 Set the value of an X resource to override a default value (see "Customizing
4182 When starting NEdit in server mode, name the server, such that it responds
4183 to requests only when nc is given a corresponding -svrname argument. By
4184 naming servers, you can run several simultaneously, and direct files and
4185 commands specifically to any one.
4188 Loads an additional preferences file on top of the existing defaults saved
4189 in your preferences file. To incorporate macros, language modes, and
4190 highlight patterns and styles written by other users, run NEdit with -import
4191 <file>, then re-save your preference file with Preferences -> Save Defaults.
4194 Prints out the NEdit version information. The -V option is synonymous.
4197 Treats all subsequent arguments as file names, even if they start with a
4198 dash. This is so NEdit can access files that begin with the dash character.
4205 NEdit can be operated on its own, or as a two-part client/server
4206 application. Client/server mode is useful for integrating NEdit with
4207 software development environments, mailers, and other programs; or just as a
4208 quick way to open files from the shell command line without starting a new
4211 To run NEdit in server mode, type:
4215 NEdit can also be started in server mode via the Nedit Client (nc) program
4216 when no servers are available.
4218 The nc program, which is distributed along with NEdit, sends commands to an
4219 nedit server to open files, select lines, or execute editor actions. It
4220 accepts a limited set of the nedit command line options: -read, -create,
4221 -line (or +n), -do, and a list of file names. Listing a file on the nc
4222 command line means, open it if it is not already open and bring the window
4223 to the front. -read and -create affect only newly opened files, but -line
4224 and -do can also be used on files which are already open (See "NEdit Command
4225 Line" for more information).
4227 In typical Unix style, arguments affect the files which follow them on the
4228 command line, for example:
4230 incorrect: nc file.c -line 25
4231 correct: nc -line 25 file.c
4233 -read, -create, and -line affect all of the files which follow them on the
4234 command line. The -do macro is executed only once, on the next file on the
4235 line. -do without a file following it on the command line, executes the
4236 macro on the first available window (presumably when you give a -do command
4237 without a corresponding file or window, you intend it to do something
4238 independent of the window in which it happens to execute).
4240 nc also accepts one command line option of its own, -noask (or -ask), which
4241 instructs it whether to automatically start a server if one is not
4242 available. This is also settable via the X resource, nc.autoStart (See "X
4243 Resources" section).
4245 Sometimes it is useful to have more than one NEdit server running, for
4246 example to keep mail and programming work separate. The option, -svrname, to
4247 both nedit and nc, allows you to start, and communicate with, separate named
4248 servers. A named server responds only to requests with the corresponding
4249 -svrname argument. If you use ClearCase and are within a ClearCase view, the
4250 server name will default to the name of the view (based on the value of the
4251 CLEARCASE_ROOT environment variable).
4253 Communication between nc and nedit is through the X display. So as long as X
4254 windows is set up and working properly, nc will work properly as well. nc
4255 uses the DISPLAY environment variable, the machine name and your user name
4256 to find the appropriate server, meaning, if you have several machines
4257 sharing a common file system, nc will not be able to find a server that is
4258 running on a machine with a different host name, even though it may be
4259 perfectly appropriate for editing a given file.
4261 The command which nc uses to start an nedit server is settable via the X
4262 resource nc.serverCommand, by default, "nedit -server".
4268 If a system crash, network failure, X server crash, or program error should
4269 happen while you are editing a file, you can still recover most of your
4270 work. NEdit maintains a backup file which it updates periodically (every 8
4271 editing operations or 80 characters typed). This file has the same name as
4272 the file that you are editing, but with the character `~' (tilde) on Unix or
4273 `_' (underscore) on VMS prefixed to the name. To recover a file after a
4274 crash, simply rename the file to remove the tilde or underscore character,
4275 replacing the older version of the file. (Because several of the Unix shells
4276 consider the tilde to be a special character, you may have to prefix the
4277 character with a `\' (backslash) when you move or delete an NEdit backup
4280 Example, to recover the file called "help.c" on Unix type the command:
4284 A minor caveat, is that if the file you were editing was in MS DOS format,
4285 the backup file will be in Unix format, and you will need to open the backup
4286 file in NEdit and change the file format back to MS DOS via the Save As...
4287 dialog (or use the Unix unix2dos command outside of NEdit).
4296 NEdit was written by Mark Edel, Joy Kyriakopulos, Christopher Conrad, Jim
4297 Clark, Arnulfo Zepeda-Navratil, Suresh Ravoor, Tony Balinski, Max Vohlken,
4298 Yunliang Yu, Donna Reid, Arne Førlie, Eddy De Greef, Steve LoBasso,
4299 Alexander Mai, Scott Tringali, Thorsten Haude, and Steve Haehn.
4301 The regular expression matching routines used in NEdit are adapted (with
4302 permission) from original code written by Henry Spencer at the University of
4305 Syntax highlighting patterns and smart indent macros were contributed by:
4306 Simon T. MacDonald, Maurice Leysens, Matt Majka, Alfred Smeenk, Alain
4307 Fargues, Christopher Conrad, Scott Markinson, Konrad Bernloehr, Ivan Herman,
4308 Patrice Venant, Christian Denat, Philippe Couton, Max Vohlken, Markus
4309 Schwarzenberg, Himanshu Gohel, Steven C. Kapp, Michael Turomsha, John
4310 Fieber, Chris Ross, Nathaniel Gray, Joachim Lous, Mike Duigou, Seak
4311 Teng-Fong, Joor Loohuis, Mark Jones, and Niek van den Berg.
4313 NEdit sources, executables, additional documentation, and contributed
4314 software are available from the NEdit web site at http://www.nedit.org.
4316 This program is free software; you can redistribute it and/or modify it
4317 under the terms of the GNU General Public License as published by the Free
4318 Software Foundation; either version 2 of the License, or (at your option)
4321 This program is distributed in the hope that it will be useful, but WITHOUT
4322 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4323 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the
4324 Help section "Distribution Policy" for more details.
4330 GNU GENERAL PUBLIC LICENSE
4332 Version 2, June 1991
4334 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
4335 Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
4336 verbatim copies of this license document, but changing it is not allowed.
4340 The licenses for most software are designed to take away your freedom to
4341 share and change it. By contrast, the GNU General Public License is intended
4342 to guarantee your freedom to share and change free software--to make sure
4343 the software is free for all its users. This General Public License applies
4344 to most of the Free Software Foundation's software and to any other program
4345 whose authors commit to using it. (Some other Free Software Foundation
4346 software is covered by the GNU Library General Public License instead.) You
4347 can apply it to your programs, too.
4349 When we speak of free software, we are referring to freedom, not price. Our
4350 General Public Licenses are designed to make sure that you have the freedom
4351 to distribute copies of free software (and charge for this service if you
4352 wish), that you receive source code or can get it if you want it, that you
4353 can change the software or use pieces of it in new free programs; and that
4354 you know you can do these things.
4356 To protect your rights, we need to make restrictions that forbid anyone to
4357 deny you these rights or to ask you to surrender the rights. These
4358 restrictions translate to certain responsibilities for you if you distribute
4359 copies of the software, or if you modify it.
4361 For example, if you distribute copies of such a program, whether gratis or
4362 for a fee, you must give the recipients all the rights that you have. You
4363 must make sure that they, too, receive or can get the source code. And you
4364 must show them these terms so they know their rights.
4366 We protect your rights with two steps: (1) copyright the software, and (2)
4367 offer you this license which gives you legal permission to copy, distribute
4368 and/or modify the software.
4370 Also, for each author's protection and ours, we want to make certain that
4371 everyone understands that there is no warranty for this free software. If
4372 the software is modified by someone else and passed on, we want its
4373 recipients to know that what they have is not the original, so that any
4374 problems introduced by others will not reflect on the original authors'
4377 Finally, any free program is threatened constantly by software patents. We
4378 wish to avoid the danger that redistributors of a free program will
4379 individually obtain patent licenses, in effect making the program
4380 proprietary. To prevent this, we have made it clear that any patent must be
4381 licensed for everyone's free use or not licensed at all.
4383 The precise terms and conditions for copying, distribution and modification
4386 GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION
4389 0. This License applies to any program or other work which contains a notice
4390 placed by the copyright holder saying it may be distributed under the terms
4391 of this General Public License. The "Program", below, refers to any such
4392 program or work, and a "work based on the Program" means either the Program
4393 or any derivative work under copyright law: that is to say, a work
4394 containing the Program or a portion of it, either verbatim or with
4395 modifications and/or translated into another language. (Hereinafter,
4396 translation is included without limitation in the term "modification".) Each
4397 licensee is addressed as "you".
4399 Activities other than copying, distribution and modification are not covered
4400 by this License; they are outside its scope. The act of running the Program
4401 is not restricted, and the output from the Program is covered only if its
4402 contents constitute a work based on the Program (independent of having been
4403 made by running the Program). Whether that is true depends on what the
4406 1. You may copy and distribute verbatim copies of the Program's source code
4407 as you receive it, in any medium, provided that you conspicuously and
4408 appropriately publish on each copy an appropriate copyright notice and
4409 disclaimer of warranty; keep intact all the notices that refer to this
4410 License and to the absence of any warranty; and give any other recipients of
4411 the Program a copy of this License along with the Program.
4413 You may charge a fee for the physical act of transferring a copy, and you
4414 may at your option offer warranty protection in exchange for a fee.
4416 2. You may modify your copy or copies of the Program or any portion of it,
4417 thus forming a work based on the Program, and copy and distribute such
4418 modifications or work under the terms of Section 1 above, provided that you
4419 also meet all of these conditions:
4421 a) You must cause the modified files to carry prominent notices stating that
4422 you changed the files and the date of any change.
4424 b) You must cause any work that you distribute or publish, that in whole or
4425 in part contains or is derived from the Program or any part thereof, to be
4426 licensed as a whole at no charge to all third parties under the terms of
4429 c) If the modified program normally reads commands interactively when run,
4430 you must cause it, when started running for such interactive use in the most
4431 ordinary way, to print or display an announcement including an appropriate
4432 copyright notice and a notice that there is no warranty (or else, saying
4433 that you provide a warranty) and that users may redistribute the program
4434 under these conditions, and telling the user how to view a copy of this
4435 License. (Exception: if the Program itself is interactive but does not
4436 normally print such an announcement, your work based on the Program is not
4437 required to print an announcement.)
4439 These requirements apply to the modified work as a whole. If identifiable
4440 sections of that work are not derived from the Program, and can be
4441 reasonably considered independent and separate works in themselves, then
4442 this License, and its terms, do not apply to those sections when you
4443 distribute them as separate works. But when you distribute the same sections
4444 as part of a whole which is a work based on the Program, the distribution of
4445 the whole must be on the terms of this License, whose permissions for other
4446 licensees extend to the entire whole, and thus to each and every part
4447 regardless of who wrote it.
4449 Thus, it is not the intent of this section to claim rights or contest your
4450 rights to work written entirely by you; rather, the intent is to exercise
4451 the right to control the distribution of derivative or collective works
4452 based on the Program.
4454 In addition, mere aggregation of another work not based on the Program with
4455 the Program (or with a work based on the Program) on a volume of a storage
4456 or distribution medium does not bring the other work under the scope of this
4459 3. You may copy and distribute the Program (or a work based on it, under
4460 Section 2) in object code or executable form under the terms of Sections 1
4461 and 2 above provided that you also do one of the following:
4463 a) Accompany it with the complete corresponding machine-readable source
4464 code, which must be distributed under the terms of Sections 1 and 2 above on
4465 a medium customarily used for software interchange; or,
4467 b) Accompany it with a written offer, valid for at least three years, to
4468 give any third party, for a charge no more than your cost of physically
4469 performing source distribution, a complete machine-readable copy of the
4470 corresponding source code, to be distributed under the terms of Sections 1
4471 and 2 above on a medium customarily used for software interchange; or,
4473 c) Accompany it with the information you received as to the offer to
4474 distribute corresponding source code. (This alternative is allowed only for
4475 noncommercial distribution and only if you received the program in object
4476 code or executable form with such an offer, in accord with Subsection b
4479 The source code for a work means the preferred form of the work for making
4480 modifications to it. For an executable work, complete source code means all
4481 the source code for all modules it contains, plus any associated interface
4482 definition files, plus the scripts used to control compilation and
4483 installation of the executable. However, as a special exception, the source
4484 code distributed need not include anything that is normally distributed (in
4485 either source or binary form) with the major components (compiler, kernel,
4486 and so on) of the operating system on which the executable runs, unless that
4487 component itself accompanies the executable.
4489 If distribution of executable or object code is made by offering access to
4490 copy from a designated place, then offering equivalent access to copy the
4491 source code from the same place counts as distribution of the source code,
4492 even though third parties are not compelled to copy the source along with
4495 4. You may not copy, modify, sublicense, or distribute the Program except as
4496 expressly provided under this License. Any attempt otherwise to copy,
4497 modify, sublicense or distribute the Program is void, and will automatically
4498 terminate your rights under this License. However, parties who have received
4499 copies, or rights, from you under this License will not have their licenses
4500 terminated so long as such parties remain in full compliance.
4502 5. You are not required to accept this License, since you have not signed
4503 it. However, nothing else grants you permission to modify or distribute the
4504 Program or its derivative works. These actions are prohibited by law if you
4505 do not accept this License. Therefore, by modifying or distributing the
4506 Program (or any work based on the Program), you indicate your acceptance of
4507 this License to do so, and all its terms and conditions for copying,
4508 distributing or modifying the Program or works based on it.
4510 6. Each time you redistribute the Program (or any work based on the
4511 Program), the recipient automatically receives a license from the original
4512 licensor to copy, distribute or modify the Program subject to these terms
4513 and conditions. You may not impose any further restrictions on the
4514 recipients' exercise of the rights granted herein. You are not responsible
4515 for enforcing compliance by third parties to this License.
4517 7. If, as a consequence of a court judgment or allegation of patent
4518 infringement or for any other reason (not limited to patent issues),
4519 conditions are imposed on you (whether by court order, agreement or
4520 otherwise) that contradict the conditions of this License, they do not
4521 excuse you from the conditions of this License. If you cannot distribute so
4522 as to satisfy simultaneously your obligations under this License and any
4523 other pertinent obligations, then as a consequence you may not distribute
4524 the Program at all. For example, if a patent license would not permit
4525 royalty-free redistribution of the Program by all those who receive copies
4526 directly or indirectly through you, then the only way you could satisfy both
4527 it and this License would be to refrain entirely from distribution of the
4530 If any portion of this section is held invalid or unenforceable under any
4531 particular circumstance, the balance of the section is intended to apply and
4532 the section as a whole is intended to apply in other circumstances.
4534 It is not the purpose of this section to induce you to infringe any patents
4535 or other property right claims or to contest validity of any such claims;
4536 this section has the sole purpose of protecting the integrity of the free
4537 software distribution system, which is implemented by public license
4538 practices. Many people have made generous contributions to the wide range of
4539 software distributed through that system in reliance on consistent
4540 application of that system; it is up to the author/donor to decide if he or
4541 she is willing to distribute software through any other system and a
4542 licensee cannot impose that choice.
4544 This section is intended to make thoroughly clear what is believed to be a
4545 consequence of the rest of this License.
4547 8. If the distribution and/or use of the Program is restricted in certain
4548 countries either by patents or by copyrighted interfaces, the original
4549 copyright holder who places the Program under this License may add an
4550 explicit geographical distribution limitation excluding those countries, so
4551 that distribution is permitted only in or among countries not thus excluded.
4552 In such case, this License incorporates the limitation as if written in the
4553 body of this License.
4555 9. The Free Software Foundation may publish revised and/or new versions of
4556 the General Public License from time to time. Such new versions will be
4557 similar in spirit to the present version, but may differ in detail to
4558 address new problems or concerns.
4560 Each version is given a distinguishing version number. If the Program
4561 specifies a version number of this License which applies to it and "any
4562 later version", you have the option of following the terms and conditions
4563 either of that version or of any later version published by the Free
4564 Software Foundation. If the Program does not specify a version number of
4565 this License, you may choose any version ever published by the Free Software
4568 10. If you wish to incorporate parts of the Program into other free programs
4569 whose distribution conditions are different, write to the author to ask for
4570 permission. For software which is copyrighted by the Free Software
4571 Foundation, write to the Free Software Foundation; we sometimes make
4572 exceptions for this. Our decision will be guided by the two goals of
4573 preserving the free status of all derivatives of our free software and of
4574 promoting the sharing and reuse of software generally.
4578 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
4579 THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
4580 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
4581 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
4582 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
4583 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO
4584 THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
4585 PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
4588 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
4589 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
4590 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
4591 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
4592 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
4593 LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
4594 THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
4595 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
4596 POSSIBILITY OF SUCH DAMAGES.
4598 END OF TERMS AND CONDITIONS
4604 There are two separate mailing lists for nedit users, and one for
4605 developers. Users may post to the developer mailing list to report defects
4606 and communicate with the nedit developers. Remember that nedit is entirely a
4607 volunteer effort, so please ask questions first to the discussion list, and
4608 do your share to answer other users questions as well.
4612 General discussion, questions and answers among NEdit users and developers.
4616 A low-volume mailing list for announcing new versions.
4620 Communication among and with NEdit developers. Developers should also
4621 subscribe to the discuss list.
4623 To subscribe, send mail to <majordomo@nedit.org> with one or more of the
4624 following in the body of the message:
4635 SOLUTIONS TO COMMON PROBLEMS
4637 For a much more comprehensive list of common problems and solutions, see the
4638 NEdit FAQ. The latest version of the FAQ can always be found on the NEdit
4641 http://www.nedit.org.
4643 P: No files are shown in the "Files" list in the Open... dialog.
4645 S: When you use the "Filter" field, include the file specification or a
4646 complete directory specification, including the trailing "/" on Unix. (See
4647 Help in the Open... dialog).
4649 P: Find Again and Replace Again don't continue in the same direction as the
4650 original Find or Replace.
4652 S: Find Again and Replace Again don't use the direction of the original
4653 search. The Shift key controls the direction: Ctrl+G means forward,
4654 Shift+Ctrl+G means backward.
4656 P: Preferences specified in the Preferences menu don't seem to get saved
4657 when I select Save Defaults.
4659 S: NEdit has two kinds of preferences: 1) per-window preferences, in the
4660 Preferences menu, and 2) default settings for preferences in newly created
4661 windows, in the Default Settings sub-menu of the Preferences menu.
4662 Per-window preferences are not saved by Save Defaults, only Default
4665 P: Columns and indentation don't line up.
4667 S: NEdit is using a proportional width font. Set the font to a fixed style
4668 (see Preferences menu).
4670 P: NEdit performs poorly on very large files.
4672 S: Turn off Incremental Backup. With Incremental Backup on, NEdit
4673 periodically writes a full copy of the file to disk.
4675 P: Commands added to the Shell Commands menu (Unix only) don't output
4676 anything until they are finished executing.
4678 S: If the command output is directed to a dialog, or the input is from a
4679 selection, output is collected together and held until the command
4680 completes. De-select both of the options and the output will be shown
4681 incrementally as the command executes.
4683 P: Dialogs don't automatically get keyboard focus when they pop up.
4685 S: Most X Window managers allow you to choose between two categories of
4686 keyboard focus models: pointer focus, and explicit focus. Pointer focus
4687 means that as you move the mouse around the screen, the window under the
4688 mouse automatically gets the keyboard focus. NEdit users who use this focus
4689 model should set "Popups Under Pointer" in the Default Settings sub menu of
4690 the preferences menu in NEdit. Users with the explicit focus model, in some
4691 cases, may have problems with certain dialogs, such as Find and Replace. In
4692 MWM this is caused by the mwm resource startupKeyFocus being set to False
4693 (generally a bad choice for explicit focus users). NCDwm users should use
4694 the focus model "click" instead of "explicit", again, unless you have set it
4695 that way to correct specific problems, this is the appropriate setting for
4696 most explicit focus users.
4698 P: The Backspace key doesn't work, or deletes forward rather than backward.
4700 S: While this is an X/Motif binding problem, and should be solved outside of
4701 NEdit in the Motif virtual binding layer (or possibly xmodmap or
4702 translations), NEdit provides an out. If you set the resource:
4703 nedit.remapDeleteKey to True, NEdit will forcibly map the delete key to
4704 backspace. The default setting of this resource recently changed, so users
4705 who have been depending on this remapping will now have to set it explicitly
4706 (or fix their bindings).
4708 P: NEdit crashes when I try to paste text in to a text field in a dialog
4709 (like Find or Replace) on my SunOS system.
4711 S: On many SunOS systems, you have to set up an nls directory before various
4712 inter-client communication features of Motif will function properly. There
4713 are instructions in README.sun in /pub/v5_0_2/individual/README.sun on
4714 ftp.nedit.org, as well as a tar file containing a complete nls directory:
4715 ftp://ftp.nedit.org/pub/v5_0_2/nls.tar. README.sun contains directions for
4716 setting up an nls directory, which is required by Motif for handling copy
4717 and paste to Motif text fields.
4722 Below is the list of known defects which affect NEdit. The defects your copy
4723 of NEdit will exhibit depend on which system you are running and with which
4724 Motif libraries it was built. Note that there are now Motif 1.2 and/or 2.0
4725 libraries available on ALL supported platforms, and as you can see below
4726 there are far fewer defects in Motif 1.2, so it is in your best interest to
4727 upgrade your system.
4733 Operations between rectangular selections on overlapping lines do nothing.
4736 None. These operations are very complicated and rarely used.
4739 Cut and Paste menu items fail, or possibly crash, for very large
4740 (multi-megabyte) selections.
4743 Use selection copy (middle mouse button click) for transferring larger
4744 quantities of data. Cut and Paste save the copied text in server memory,
4745 which is usually limited.
4750 Submit bugs through the web at:
4752 http://sf.net/tracker/?func=add&group_id=11005&atid=111005
4754 Please include the first few lines from Help > Version, which identifes
4755 NEdit's version and other system attributes important for diagnosing your
4758 The NEdit developers subscribe to both discuss@nedit.org and
4759 develop@nedit.org, either of which may be used for reporting defects. If
4760 you're not sure, or you think the report might be of interest to the general
4761 NEdit user community, send the report to discuss@nedit.org. If it's
4762 something obvious and boring, like we misspelled "anemometer" in the on-line
4763 help, send it to develop@nedit.org. If you don't want to subscribe to the
4764 Mailing Lists, please add a note to your mail about cc'ing you on responses.