1 =========================================
2 Nirvana Editor (NEdit) Help Documentation
3 =========================================
5 NEdit release of Aug 31, 2002 August 31, 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 `*?'
1643 * IP address (not robust).
1644 (?:\d{1,3}(?:\.\d{1,3}){3})
1646 * Two character US Postal state abbreviations (includes territories).
1650 (?:http://)?www\.\S+
1652 * Case insensitive double words across line breaks.
1653 (?i(?n<(\S+)\s+\1>))
1655 * Upper case words with possible punctuation.
1658 ======================
1659 MACRO/SHELL EXTENSIONS
1660 ======================
1662 --------------------------
1663 SHELL COMMANDS AND FILTERS
1664 --------------------------
1666 The Shell menu (Unix versions only) allows you to execute Unix shell
1667 commands from within NEdit. You can add items to the menu to extend NEdit's
1668 command set or to incorporate custom automatic editing features using shell
1669 commands or editing languages like awk and sed. To add items to the menu,
1670 select Preferences -> Default Settings Customize Menus -> Shell Menu. NEdit
1671 comes pre-configured with a few useful Unix commands like spell and sort,
1672 but we encourage you to add your own custom extensions.
1674 Filter Selection... prompts you for a Unix command to use to process the
1675 currently selected text. The output from this command replaces the contents
1678 Execute Command... prompts you for a Unix command and replaces the current
1679 selection with the output of the command. If there is no selection, it
1680 deposits the output at the current insertion point. In the Shell Command
1681 field, the % character expands to the name (including directory path), and
1682 the # character expands to the current line number of the file in the
1683 window. To include a % or # character in the command, use %% or ##,
1686 Execute Command Line uses the position of the cursor in the window to
1687 indicate a line to execute as a shell command line. The cursor may be
1688 positioned anywhere on the line. This command allows you to use an NEdit
1689 window as an editable command window for saving output and saving commands
1690 for re-execution. Note that the same character expansions described above in
1691 Execute Command also occur with this command.
1693 The X resource called nedit.shell (See "Customizing NEdit") determines which
1694 Unix shell is used to execute commands. The default value for this resource
1701 Selecting Learn Keystrokes from the Macro menu puts NEdit in learn mode. In
1702 learn mode, keystrokes and menu commands are recorded, to be played back
1703 later, using the Replay Keystrokes command, or pasted into a macro in the
1704 Macro Commands dialog of the Default Settings menu in Preferences.
1706 Note that only keyboard and menu commands are recorded, not mouse clicks or
1707 mouse movements since these have no absolute point of reference, such as
1708 cursor or selection position. When you do a mouse-based operation in learn
1709 mode, NEdit will beep (repeatedly) to remind you that the operation was not
1712 Learn mode is also the quickest and easiest method for writing macros. The
1713 dialog for creating macro commands contains a button labeled "Paste Learn /
1714 Replay Macro", which will deposit the last sequence learned into the body of
1718 REPEATING ACTIONS AND LEARN/REPLAY SEQUENCES
1720 You can repeat the last (keyboard-based) command, or learn/replay sequence
1721 with the Repeat... command in the Macro menu. To repeat an action, first do
1722 the action (that is, insert a character, do a search, move the cursor), then
1723 select Repeat..., decide how or how many times you want it repeated, and
1724 click OK. For example, to move down 30 lines through a file, you could type:
1725 <Down Arrow> Ctrl+, 29 <Return>. To repeat a learn/replay sequence, first
1726 learn it, then select Repeat..., click on Learn/Replay and how you want it
1727 repeated, then click OK.
1729 If the commands you are repeating advance the cursor through the file, you
1730 can also repeat them within a range of characters, or from the current
1731 cursor position to the end of the file. To iterate over a range of
1732 characters, use the primary selection (drag the left mouse button over the
1733 text) to mark the range you want to operate on, and select "In Selection" in
1736 When using In "Selection" or "To End" with a learned sequence, try to do
1737 cursor movement as the last step in the sequence, since testing of the
1738 cursor position is only done at the end of the sequence execution. If you do
1739 cursor movement first, for example searching for a particular word then
1740 doing a modification, the position of the cursor won't be checked until the
1741 sequence has potentially gone far beyond the end of your desired range.
1743 It's easy for a repeated command to get out of hand, and you can easily
1744 generate an infinite loop by using range iteration on a command which
1745 doesn't progress. To cancel a repeating command in progress, type Ctrl+.
1746 (period), or select Cancel Macro from the Macro menu.
1752 Macros can be called from Macro menu commands, window background menu
1753 commands, within the smart-indent framework, from the autoload macro file
1754 and from the command line. Macro menu and window background menu commands
1755 are defined under Preferences -> Default Settings -> Customize Menus. Help
1756 on creating items in these menus can be found in the section, Help ->
1757 Customizing -> Preferences.
1759 The autoload macro file is a file of macro commands and definitions which
1760 NEdit will automatically execute when it is first started. Its location is
1761 dependent on your environment:
1763 * The default place for the file is '$HOME/.nedit/autoload.nm',
1764 * if the variable $NEDIT_HOME is set in your environment it is located at
1765 '$NEDIT_HOME/autoload.nm',
1766 * if you are using old-style run control files (i.e. $HOME/.nedit is a
1767 regular file) it is located in '$HOME/.neditmacro'.
1769 (For VMS, the file is in '$NEDIT_HOME/autoload.nm' if $NEDIT_HOME is set, in
1770 'SYS$LOGIN:.neditmacro' otherwise.)
1772 NEdit's macro language is a simple interpreter with integer arithmetic,
1773 dynamic strings, and C-style looping constructs (very similar to the
1774 procedural portion of the Unix awk program). From the macro language, you
1775 can call the same action routines which are bound to keyboard keys and menu
1776 items, as well additional subroutines for accessing and manipulating editor
1777 data, which are specific to the macro language (these are listed in the
1778 sections titled "Macro Subroutines", and "Action_Routines_").
1783 An NEdit macro language program consists of a list of statements, each
1784 terminated by a newline. Groups of statements which are executed together
1785 conditionally, such as the body of a loop, are surrounded by curly braces
1788 Blank lines and comments are also allowed. Comments begin with a "#" and end
1789 with a newline, and can appear either on a line by themselves, or at the end
1792 Statements which are too long to fit on a single line may be split across
1793 several lines, by placing a backslash "\" character at the end of each line
1799 The NEdit macro language recognizes only three data types, dynamic character
1800 strings, integer values and associative arrays. In general strings and
1801 integers can be used interchangeably. If a string represents an integer
1802 value, it can be used as an integer. Integers can be compared and
1803 concatenated with strings. Arrays may contain integers, strings, or arrays.
1804 Arrays are stored key/value pairs. Keys are always stored as strings.
1809 Integers are non-fractional numbers in the range of -2147483647 to
1810 2147483647. Integer constants must be in decimal. For example:
1816 Character String Constants
1818 Character string constants are enclosed in double quotes. For example:
1821 dialog("Hi there!", "Dismiss")
1823 Strings may also include C-language style escape sequences:
1825 \\ Backslash \t Tab \f Form feed
1826 \" Double quote \b Backspace \a Alert
1827 \n Newline \r Carriage return \v Vertical tab
1829 For example, to send output to the terminal from which NEdit was started, a
1830 newline character is necessary because, like printf, t_print requires
1831 explicit newlines, and also buffers its output on a per-line basis:
1833 t_print("a = " a "\n")
1838 Variable names must begin either with a letter (local variables), or a $
1839 (global variables). Beyond the first character, variables may also contain
1840 numbers and underscores `_'. Variables are called in to existence just by
1841 setting them (no explicit declarations are necessary).
1843 Local variables are limited in scope to the subroutine (or menu item
1844 definition) in which they appear. Global variables are accessible from all
1845 routines, and their values persist beyond the call which created them, until
1851 NEdit has a number of permanently defined variables, which are used to
1852 access global editor information and information about the the window in
1853 which the macro is executing. These are listed along with the built in
1854 functions in the section titled "Macro Subroutines".
1857 FUNCTIONS AND SUBROUTINES
1859 The syntax of a function or subroutine call is:
1861 function_name(arg1, arg2, ...)
1863 where arg1, arg2, etc. represent up to 9 argument values which are passed to
1864 the routine being called. A function or subroutine call can be on a line by
1865 itself, as above, or if it returns a value, can be invoked within a
1866 character or numeric expression:
1868 a = fn1(b, c) + fn2(d)
1869 dialog("fn3 says: " fn3())
1871 Arguments are passed by value. This means that you can not return values via
1872 the argument list, only through the function value or indirectly through
1873 agreed-upon global variables.
1878 NEdit has a wide range of built in functions which can be called from the
1879 macro language. These routines are divided into two classes, macro-language
1880 functions, and editor action routines. Editor action routines are more
1881 flexible, in that they may be called either from the macro language, or
1882 bound directly to keys via translation tables. They are also limited,
1883 however, in that they can not return values. Macro language routines can
1884 return values, but can not be bound to keys in translation tables.
1886 Nearly all of the built-in subroutines operate on an implied window, which
1887 is initially the window from which the macro was started. To manipulate the
1888 contents of other windows, use the focus_window subroutine to change the
1889 focus to the ones you wish to modify. focus_window can also be used to
1890 iterate over all of the currently open windows, using the special keyword
1891 names, "last" and "next".
1893 For backwards compatibility, hyphenated action routine names are allowed,
1894 and most of the existing action routines names which contain underscores
1895 have an equivalent version containing hyphens ('-') instead of underscores.
1896 Use of these names is discouraged. The macro parser resolves the ambiguity
1897 between '-' as the subtraction/negation operator, and - as part of an action
1898 routine name by assuming subtraction unless the symbol specifically matches
1899 an action routine name.
1902 User Defined Functions
1904 Users can define their own macro subroutines, using the define keyword:
1906 define subroutine_name {
1907 < body of subroutine >
1910 Macro definitions can not appear within other definitions, or within macro
1911 menu item definitions (usually they are found in the autoload macro file).
1913 The arguments with which a user-defined subroutine or function was invoked,
1914 are presented as $1, $2, ... , $9. The number of arguments can be read from
1917 To return a value from a subroutine, and/or to exit from the subroutine
1918 before the end of the subroutine body, use the return statement:
1920 return <value to return>
1923 OPERATORS AND EXPRESSIONS
1925 Operators have the same meaning and precedence that they do in C, except for
1926 ^, which raises a number to a power (y^x means y to the x power), rather
1927 than bitwise exclusive OR. The table below lists operators in decreasing
1928 order of precedence.
1930 Operators Associativity
1936 > >= < <= == != left to right
1941 (concatenation) left to right
1942 = += -= *= /= %=, &= |= right to left
1944 The order in which operands are evaluated in an expression is undefined,
1945 except for && and ||, which like C, evaluate operands left to right, but
1946 stop when further evaluation would no longer change the result.
1951 The numeric operators supported by the NEdit macro language are listed
1955 - subtraction or negation
1963 Increment (++) and decrement (--) operators can also be appended or
1964 prepended to variables within an expression. Prepended increment/decrement
1965 operators act before the variable is evaluated. Appended increment/decrement
1966 operators act after the variable is evaluated.
1969 Logical and Comparison Operators
1971 Logical operations produce a result of 0 (for false) or 1 (for true). In a
1972 logical operation, any non-zero value is recognized to mean true. The
1973 logical and comparison operators allowed in the NEdit macro language are
1983 == equal (integers and/or strings)
1984 != not equal (integers and/or strings)
1987 Character String Operators
1989 The "operator" for concatenating two strings is the absence of an operator.
1990 Adjoining character strings with no operator in between means concatenation:
1993 t_print("the value of a is: " a)
1995 Comparison between character strings is done with the == and != operators,
1996 (as with integers). There are a number of useful built-in routines for
1997 working with character strings, which are listed in the section called
1998 "Macro Subroutines".
2001 Arrays and Array Operators
2003 Arrays may contain either strings, integers, or other arrays. Arrays are
2004 associative, which means that they relate two pieces of information, the key
2005 and the value. The key is always a string; if you use an integer it is
2006 converted to a string.
2008 To determine if a given key is in an array, use the 'in' keyword.
2013 If the left side of the in keyword is an array, the result is true if every
2014 key in the left array is in the right array. Array values are not compared.
2016 To iterate through all the keys of an array use the 'for' looping construct.
2017 Keys are not guaranteed in any particular order:
2022 Elements can be removed from an array using the delete command:
2024 delete x[3] # deletes element with key 3
2025 delete x[] # deletes all elements
2027 The number of elements in an array can be determined by referencing the
2028 array with no indices:
2030 dialog("array x has " x[] " elements", "OK")
2032 Arrays can be combined with some operators. All the following operators only
2033 compare the keys of the arrays.
2035 result = x + y (Merge arrays)
2037 The 'result' is a new array containing keys from both x and y. If duplicates
2038 are present values from y are used.
2040 result = x - y (Remove keys)
2042 The 'result' is a new array containing all keys from x that are not in y.
2044 result = x & y (Common keys)
2046 The 'result' is a new array containing all keys which are in both x and y.
2047 The values from y are used.
2049 result = x | y (Unique keys)
2051 The 'result' is a new array containing keys which exist in either x or y,
2054 When duplicate keys are encountered using the + and & operators, the values
2055 from the array on the right side of the operators are used for the result.
2056 All of the above operators are array only, meaning both the left and right
2057 sides of the operator must be arrays. The results are also arrays.
2059 Array keys can also contain multiple dimensions:
2061 x[1, 1, 1] = "string"
2063 These are used in the expected way, e.g.:
2065 for (i = 1; i < 3; i++)
2067 for (j = 1; j < 3; j++)
2073 gives the following array:
2080 Internally all indices are part of one string, separated by the string
2081 $sub_sep (ASCII 0x18). The first key in the above example is in fact
2085 If you need to extract one of the keys, you can use split(), using $sub_sep
2088 You can also check for the existence of multi-dimensional array by looking
2089 for $sub_sep in the key.
2091 Last, you need $sub_sep if you want to use the 'in' keyword.
2093 if ((1,2) in myArray)
2098 if (("1" $sub_sep "2") in myArray)
2104 LOOPING AND CONDITIONALS
2106 NEdit supports looping constructs: for and while, and conditional
2107 statements: if and else, with essentially the same syntax as C:
2109 for (<init>, ...; <condition>; <increment>, ...) <body>
2111 while (<condition>) <body>
2113 if (<condition>) <body>
2115 if (<condition>) <body> else <body>
2117 <body>, as in C, can be a single statement, or a list of statements enclosed
2118 in curly braces ({}). <condition> is an expression which must evaluate to
2119 true for the statements in <body> to be executed. for loops may also contain
2120 initialization statements, <init>, executed once at the beginning of the
2121 loop, and increment/decrement statements (or any arbitrary statement), which
2122 are executed at the end of the loop, before the condition is evaluated
2127 for (i=0; i<100; i++)
2130 for (i=0, j=20; i<20; i++, j--) {
2146 Loops may contain break and continue statements. A break statement causes an
2147 exit from the innermost loop, a continue statement transfers control to the
2157 These variables are read-only and can not be changed.
2160 Index of the current pane.
2163 Contains the current preference for auto indent. Can be "off", "on" or
2167 Equals the ID of the currently displayed calltip, or 0 if no calltip is
2171 Position of the cursor in the current window.
2174 Column number of the cursor position in the current window.
2177 Width of the current pane in pixels.
2180 If tab emulation is turned on in the Tabs... dialog of the Preferences menu,
2181 value is the distance between emulated tab stops. If tab emulation is turned
2185 An array with no elements. This can be used to initialize an array to an
2189 Current newline format that the file will be saved with. Can be "unix",
2190 "dos" or "macintosh".
2193 Name of the file being edited in the current window, stripped of directory
2197 Directory component of file being edited in the current window.
2200 Contains the current plain text font name.
2203 Contains the current bold text font name.
2205 $font_name_bold_italic
2206 Contains the current bold-italic text font name.
2209 Contains the current italic text font name.
2212 Whether syntax highlighting is turned on.
2215 Contains 1 if incremental auto saving is on, otherwise 0.
2217 $incremental_search_line
2218 Has a value of 1 if the preference is selected to always show the
2219 incremental search line, otherwise 0.
2222 Name of language mode set in the current window.
2225 Line number of the cursor position in the current window.
2228 True if the file has been locked by the user.
2231 Has a value of 1 if original file is kept in a backup file on save,
2235 The maximum font width of all the active styles. Syntax highlighting styles
2236 are only considered if syntax highlighting is turned on.
2239 The minimum font width of all the active styles. Syntax highlighting styles
2240 are only considered if syntax highlighting is turned on.
2243 True if the file in the current window has been modified and the
2244 modifications have not yet been saved.
2247 The number of lines visible in the currently active pane.
2250 The number of panes in the current window.
2253 True if in Overtype mode.
2256 True if the file is read only.
2258 $selection_start, $selection_end
2259 Beginning and ending positions of the primary selection in the current
2260 window, or -1 if there is no text selected in the current window.
2262 $selection_left, $selection_right
2263 Left and right character offsets of the rectangular (primary) selection in
2264 the current window, or -1 if there is no selection or it is not rectangular.
2267 Name of the current NEdit server.
2270 Whether line numbers are shown next to the text.
2273 Contains the current preference for showing matching pairs, such as "[]" and
2274 "{}" pairs. Can be "off", "delimiter", or "range".
2277 Whether pair matching should use syntax information, if available.
2280 Has a value of 1 if the statistics line is shown, otherwise 0.
2283 Contains the value of the array sub-script separation string.
2286 The distance between tab stops for a hardware tab character, as set in the
2287 Tabs... dialog of the Preferences menu.
2290 The length of the text in the current window.
2293 The line number of the top line of the currently active pane.
2296 Whether the user is allowing the NEdit to insert tab characters to maintain
2297 spacing in tab emulation and rectangular dragging operations. (The setting
2298 of the "Use tab characters in padding and emulated tabs" button in the
2299 Tabs... dialog of the Preferences menu.)
2302 The right margin in the current window for text wrapping and filling.
2305 The current wrap text mode. Values are "none", "auto" or "continuous".
2308 BUILT-IN SUBROUTINES
2310 append_file( string, filename )
2311 Appends a string to a named file. Returns 1 on successful write, or 0 if
2317 calltip( "text_or_key" [, mode [, pos]] )
2318 Pops up a calltip. <pos> is an optional position in the buffer where the tip
2319 will be displayed. The upper-left corner of the calltip will appear below
2320 where the cursor would appear if it were at this position. <mode> is one of
2321 "tipText" (default), "tipKey", or "tagKey". "tipText" displays the text
2322 as-is, "tagKey" uses it as the key to look up a tag, then converts the tag
2323 to a calltip, and "tipKey uses it as the key to look up a calltip, then
2324 falls back to a tag if that fails. You'll usually use "tipKey" or "tipText".
2325 Returns the ID of the calltip if it was found and/or displayed correctly, 0
2328 clipboard_to_string()
2329 Returns the contents of the clipboard as a macro string. Returns empty
2332 dialog( message, btn_1_label, btn_2_label, ... )
2333 Pop up a dialog for querying and presenting information to the user. First
2334 argument is a string to show in the message area of the dialog. Up to eight
2335 additional optional arguments represent labels for buttons to appear along
2336 the bottom of the dialog. Returns the number of the button pressed (the
2337 first button is number 1), or 0 if the user closed the dialog via the window
2340 focus_window( window_name )
2341 Sets the window on which subsequent macro commands operate. window_name can
2342 be either a fully qualified file name, or one of "last" for the last window
2343 created, or "next" for the next window in the chain from the currently
2344 focused window (the first window being the one returned from calling
2345 focus_window("last"). Returns the name of the newly-focused window, or an
2346 empty string if the requested window was not found.
2348 get_character( position )
2349 Returns the single character at the position indicated by the first argument
2350 to the routine from the current window.
2352 get_range( start, end )
2353 Returns the text between a starting and ending position from the current
2357 Returns a string containing the text currently selected by the primary
2358 selection either from the current window (no keyword), or from anywhere on
2359 the screen (keyword "any").
2362 Gets the value of an environment variable.
2364 kill_calltip( [calltip_ID] )
2365 Kills any calltip that is being displayed in the window in which the macro
2366 is running. If there is no displayed calltip this does nothing. If a calltip
2367 ID is supplied then the calltip is killed only if its ID is calltip_ID.
2370 Returns the length of a string
2372 list_dialog( message, text, btn_1_label, btn_2_label, ... )
2373 Pop up a dialog for prompting the user to choose a line from the given text
2374 string. The first argument is a message string to be used as a title for the
2375 fixed text describing the list. The second string provides the list data:
2376 this is a text string in which list entries are separated by newline
2377 characters. Up to seven additional optional arguments represent labels for
2378 buttons to appear along the bottom of the dialog. Returns the line of text
2379 selected by the user as the function value (without any newline separator)
2380 or the empty string if none was selected, and number of the button pressed
2381 (the first button is number 1), in $list_dialog_button. If the user closes
2382 the dialog via the window close box, the function returns the empty string,
2383 and $list_dialog_button returns 0.
2386 Returns the maximum value of all of its arguments
2389 Returns the minimum value of all of its arguments
2391 read_file( filename )
2392 Reads the contents of a text file into a string. On success, returns 1 in
2393 $read_status, and the contents of the file as a string in the subroutine
2394 return value. On failure, returns the empty string "" and an 0 $read_status.
2396 replace_in_string( string, search_for, replace_with [, type, "copy"] )
2397 Replaces all occurrences of a search string in a string with a replacement
2398 string. Arguments are 1: string to search in, 2: string to search for, 3:
2399 replacement string. There are two optional arguments. One is a search type,
2400 either "literal", "case", "word", "caseWord", "regex", or "regexNoCase". The
2401 default search type is "literal". If the optional "copy" argument is
2402 specified, a copy of the input string is returned when no replacements were
2403 performed. By default an empty string ("") will be returned in this case.
2404 Returns a new string with all of the replacements done.
2406 replace_range( start, end, string )
2407 Replaces all of the text in the current window between two positions.
2409 replace_selection( string )
2410 Replaces the primary-selection selected text in the current window.
2412 replace_substring( string, start, end, replace_with )
2413 Replacing a substring between two positions in a string within another
2416 search( search_for, start [, search_type, wrap, direction] )
2417 Searches silently in a window without dialogs, beeps, or changes to the
2418 selection. Arguments are: 1: string to search for, 2: starting position.
2419 Optional arguments may include the strings: "wrap" to make the search wrap
2420 around the beginning or end of the string, "backward" or "forward" to change
2421 the search direction ("forward" is the default), "literal", "case", "word",
2422 "caseWord", "regex", or "regexNoCase" to change the search type (default is
2423 "literal"). Returns the starting position of the match, or -1 if nothing
2424 matched. Also returns the ending position of the match in $search_end.
2426 search_string( string, search_for, start [, search_type, direction] )
2428 Built-in macro subroutine for searching a string. Arguments are 1: string to
2429 search in, 2: string to search for, 3: starting position. Optional arguments
2430 may include the strings: "wrap" to make the search wrap around the beginning
2431 or end of the string, "backward" or "forward" to change the search direction
2432 ("forward" is the default), "literal", "case", "word", "caseWord", "regex",
2433 or "regexNoCase" to change the search type (default is "literal"). Returns
2434 the starting position of the match, or -1 if nothing matched. Also returns
2435 the ending position of the match in $search_end.
2437 select( start, end )
2438 Selects (with the primary selection) text in the current buffer between a
2439 starting and ending position.
2441 select_rectangle( start, end, left, right )
2442 Selects a rectangular area of text between a starting and ending position,
2443 and confined horizontally to characters displayed between positions "left",
2446 set_cursor_pos( position )
2447 Set the cursor position for the current window.
2449 shell_command( command, input_string )
2450 Executes a shell command, feeding it input from input_string. On completion,
2451 output from the command is returned as the function value, and the command's
2452 exit status is returned in the global variable $shell_cmd_status.
2454 split(string, separation_string [, search_type])
2455 Splits a string using the separator specified. Optionally the search_type
2456 argument can specify how the separation_string is interpreted. The default
2457 is "literal". The returned value is an array with keys beginning at 0.
2459 string_dialog( message, btn_1_label, btn_2_label, ... )
2460 Pops up a dialog prompting the user to enter information. The first argument
2461 is a string to show in the message area of the dialog. Up to nine additional
2462 optional arguments represent labels for buttons to appear along the bottom
2463 of the dialog. Returns the string entered by the user as the function value,
2464 and number of the button pressed (the first button is number 1), in
2465 $string_dialog_button. If the user closes the dialog via the window close
2466 box, the function returns the empty string, and $string_dialog_button
2469 string_compare(string1, string2 [, consider-case])
2470 Compare two strings and return 0 if they are equal, -1 if string1 is less
2471 than string2 or 1 if string1 is greater than string2. The values for the
2472 optional consider-case argument is either "case" or "nocase". The default is
2473 to do a case sensitive comparison.
2475 string_to_clipboard( string )
2476 Copy the contents of a macro string to the clipboard.
2478 substring( string, start, end )
2479 Returns the portion of a string between a starting and ending position.
2481 t_print( string1, string2, ... )
2482 Writes strings to the terminal (stdout) from which NEdit was started.
2485 Return an all lower-case version of string.
2488 Return an all upper-case version of string.
2490 write_file( string, filename )
2491 Writes a string (parameter 1) to a file named in parameter 2. Returns 1 on
2492 successful write, or 0 if unsuccessful.
2498 All of the editing capabilities of NEdit are represented as a special type
2499 of subroutine, called an action routine, which can be invoked from both
2500 macros and translation table entries (see "Key Binding" in the Customizing
2501 section of the Help menu).
2504 ACTIONS REPRESENTING MENU COMMANDS
2506 File Menu Search Menu
2507 ----------------------- -------------------------
2509 open() find_dialog()
2510 open_dialog() find_again()
2511 open_selected() find_selection()
2513 save() replace_dialog()
2514 save_as() replace_all()
2515 save_as_dialog() replace_in_selection()
2516 revert_to_saved() replace_again()
2517 include_file() goto_line_number()
2518 include_file_dialog() goto_line_number_dialog()
2519 load_macro_file() goto_selected()
2520 load_macro_file_dialog() mark()
2521 load_tags_file() mark_dialog()
2522 load_tags_file_dialog() goto_mark()
2523 unload_tags_file() goto_mark_dialog()
2524 print() goto_matching()
2525 print_selection() select_to_matching()
2526 exit() find_definition()
2528 Edit Menu Shell Menu
2529 ----------------------- -------------------------
2530 undo() filter_selection_dialog()
2531 redo() filter_selection()
2532 delete() execute_command()
2533 select_all() execute_command_dialog()
2534 shift_left() execute_command_line()
2535 shift_left_by_tab() shell_menu_command()
2537 shift_right_by_tab() Macro Menu
2538 uppercase() -------------------------
2539 lowercase() macro_menu_command()
2540 fill_paragraph() repeat_macro()
2541 control_code_dialog() repeat_dialog()
2544 -------------------------
2548 An action representing a menu command is named the same as its corresponding
2549 menu item except that all punctuation is removed, all letters are changed to
2550 lower case, and spaces are replaced with underscores. To present a dialog to
2551 ask the user for input, use the actions with the `_dialog` suffix. Actions
2552 without the `_dialog` suffix take the information from the routine's
2553 arguments (see below).
2556 MENU ACTION ROUTINE ARGUMENTS
2558 Arguments are text strings enclosed in quotes. Below are the menu action
2559 routines which take arguments. Optional arguments are enclosed in [].
2561 close( ["prompt" | "save" | "nosave"] )
2563 execute_command( shell-command )
2565 filter_selection( shell-command )
2567 find( search-string [, search-direction] [, search-type]
2570 find_again( [search-direction] [, search-wrap] )
2572 find_definition( [tag-name] )
2574 find_dialog( [search-direction] [, search-type]
2577 find_selection( [search-direction] [, search-wrap]
2578 [, non-regex-search-type] )
2580 goto_line_number( [line-number] )
2582 goto_mark( mark-letter )
2584 include_file( filename )
2586 load_tags_file( filename )
2588 macro_menu_command( macro-menu-item-name )
2594 replace( search-string, replace-string,
2595 [, search-direction] [, search-type] [, search-wrap] )
2597 replace_again( [search-direction] [, search-wrap] )
2599 replace_dialog( [search-direction] [, search-type]
2602 replace_in_selection( search-string,
2603 replace-string [, search-type] )
2607 shell_menu_command( shell-menu-item-name )
2609 unload_tags_file( filename )
2611 ----------- Some notes on argument types above -----------
2613 filename Path names are relative to the directory from
2614 which NEdit was started. Shell interpreted
2615 wildcards and `~' are not expanded.
2617 keep-dialog Either "keep" or "nokeep".
2619 mark-letter The mark command limits users to single
2620 letters. Inside of macros, numeric marks are
2621 allowed, which won't interfere with marks set
2624 macro-menu-item-name
2625 Name of the command exactly as specified in
2626 the Macro Menu dialogs.
2628 non-regex-search-type
2629 Either "literal", "case", "word", or
2633 Either "forward" or "backward".
2635 search-type Either "literal", "case", "word",
2636 "caseWord", "regex", or "regexNoCase".
2638 search-wrap Either "wrap" or "nowrap".
2640 shell-menu-item-name
2641 Name of the command exactly as specified in
2642 the Shell Menu dialogs.
2645 WINDOW PREFERENCES ACTIONS
2647 set_auto_indent( "off" | "on" | "smart" )
2648 Set auto indent mode for the current window.
2650 set_em_tab_dist( em-tab-distance )
2651 Set the emulated tab size. An em-tab-distance value of 0 or -1 translates to
2652 no emulated tabs. Em-tab-distance must be smaller than 1000.
2654 set_fonts( font-name, italic-font-name, bold-font-name, bold-italic-font-name )
2655 Set all the fonts used for the current window.
2657 set_highlight_syntax( [0 | 1] )
2658 Set syntax highlighting mode for the current window. A value of 0 turns it
2659 off and a value of 1 turns it on. If no parameters are supplied the option
2662 set_incremental_backup( [0 | 1] )
2663 Set incremental backup mode for the current window. A value of 0 turns it
2664 off and a value of 1 turns it on. If no parameters are supplied the option
2667 set_incremental_search_line( [0 | 1] )
2668 Show or hide the incremental search line for the current window. A value of
2669 0 turns it off and a value of 1 turns it on. If no parameters are supplied
2670 the option is toggled.
2672 set_language_mode( language-mode )
2673 Set the language mode for the current window. If the language mode is "" or
2674 unrecognized, it will be set to Plain.
2676 set_locked( [0 | 1] )
2677 This only affects the locked status of a file, not it's read-only status.
2678 Permissions are NOT changed. A value of 0 turns it off and a value of 1
2679 turns it on. If no parameters are supplied the option is toggled.
2681 set_make_backup_copy( [0 | 1] )
2682 Set whether backup copies are made during saves for the current window. A
2683 value of 0 turns it off and a value of 1 turns it on. If no parameters are
2684 supplied the option is toggled.
2686 set_overtype_mode( [0 | 1] )
2687 Set overtype mode for the current window. A value of 0 turns it off and a
2688 value of 1 turns it on. If no parameters are supplied the option is toggled.
2690 set_show_line_numbers( [0 | 1] )
2691 Show or hide line numbers for the current window. A value of 0 turns it off
2692 and a value of 1 turns it on. If no parameters are supplied the option is
2695 set_show_matching( "off" | "delimiter" | "range" )
2696 Set show matching (...) mode for the current window.
2698 set_match_syntax_based( [0 | 1] )
2699 Set whether matching should be syntax based for the current window.
2701 set_statistics_line( [0 | 1] )
2702 Show or hide the statistics line for the current window. A value of 0 turns
2703 it off and a value of 1 turns it on. If no parameters are supplied the
2706 set_tab_dist( tab-distance )
2707 Set the size of hardware tab spacing. Tab-distance must must be a value
2708 greater than 0 and no greater than 20.
2710 set_use_tabs( [0 | 1] )
2711 Set whether tabs are used for the current window. A value of 0 turns it off
2712 and a value of 1 turns it on. If no parameters are supplied the option is
2715 set_wrap_margin( wrap-width )
2716 Set the wrap width for text wrapping of the current window. A value of 0
2717 means to wrap at window width.
2719 set_wrap_text( "none" | "auto" | "continuous" )
2720 Set wrap text mode for the current window.
2723 KEYBOARD-ONLY ACTIONS
2725 In addition to the arguments listed in the call descriptions below, any
2726 routine involving cursor movement can take the argument "extend", meaning,
2727 adjust the primary selection to the new cursor position. Routines which take
2728 the "extend" argument as well as mouse dragging operations for both primary
2729 and secondary selections can take the optional keyword "rect", meaning, make
2730 the selection rectangular. Any routine that accepts the "scrollbar" argument
2731 will move the display but not the cursor or selection. Routines that accept
2732 the "nobell" argument will fail silently without beeping, when that argument
2735 backward_character( ["nobell"] )
2736 Moves the cursor one character to the left.
2738 backward_paragraph(["nobell"] )
2739 Moves the cursor to the beginning of the paragraph, or if the cursor is
2740 already at the beginning of a paragraph, moves the cursor to the beginning
2741 of the previous paragraph. Paragraphs are defined as regions of text
2742 delimited by one or more blank lines.
2744 backward_word( ["nobell"] )
2745 Moves the cursor to the beginning of a word, or, if the cursor is already at
2746 the beginning of a word, moves the cursor to the beginning of the previous
2747 word. Word delimiters are user-settable, and defined by the X resource
2750 beginning_of_file( ["scrollbar"] )
2751 Moves the cursor to the beginning of the file.
2753 beginning_of_line( ["absolute"] )
2754 Moves the cursor to the beginning of the line. If "absolute" is given,
2755 always moves to the absolute beginning of line, regardless of the text
2758 beginning_of_selection()
2759 Moves the cursor to the beginning of the selection without disturbing the
2763 Copies the current selection to the clipboard.
2766 Copies the primary selection to the cursor.
2769 If a secondary selection exists, copies the secondary selection to the
2770 cursor. If no secondary selection exists, copies the primary selection to
2771 the pointer location.
2773 copy_to_or_end_drag()
2774 Completes either a secondary selection operation, or a primary drag. If the
2775 user is dragging the mouse to adjust a secondary selection, the selection is
2776 copied and either inserted at the cursor location, or, if pending-delete is
2777 on and a primary selection exists in the window, replaces the primary
2778 selection. If the user is dragging a block of text (primary selection),
2779 completes the drag operation and leaves the text at it's current location.
2782 Deletes the text in the primary selection and places it in the clipboard.
2785 Copies the primary selection to the cursor and deletes it at its original
2789 Deletes the contents of the primary selection.
2791 delete_next_character( ["nobell"] )
2792 If a primary selection exists, deletes its contents. Otherwise, deletes the
2793 character following the cursor.
2795 delete_previous_character( ["nobell"] )
2796 If a primary selection exists, deletes its contents. Otherwise, deletes the
2797 character before the cursor.
2799 delete_next_word( ["nobell"] )
2800 If a primary selection exists, deletes its contents. Otherwise, deletes the
2801 word following the cursor.
2803 delete_previous_word( ["nobell"] )
2804 If a primary selection exists, deletes its contents. Otherwise, deletes the
2805 word before the cursor.
2807 delete_to_start_of_line( ["nobell", "wrap"] )
2808 If a primary selection exists, deletes its contents. Otherwise, deletes the
2809 characters between the cursor and the start of the line. If "wrap" is given,
2810 deletes to the previous wrap point or beginning of line, whichever is
2813 delete_to_end_of_line( ["nobell", "absolute"] )
2814 If a primary selection exists, deletes its contents. Otherwise, deletes the
2815 characters between the cursor and the end of the line. If "absolute" is
2816 given, always deletes to the absolute end of line, regardless of the text
2820 De-selects the primary selection.
2822 end_of_file( ["scrollbar"] )
2823 Moves the cursor to the end of the file.
2825 end_of_line( ["absolute"] )
2826 Moves the cursor to the end of the line. If "absolute" is given, always
2827 moves to the absolute end of line, regardless of the text wrapping mode.
2830 Moves the cursor to the end of the selection without disturbing the
2833 exchange( ["nobell"] )
2834 Exchange the primary and secondary selections.
2837 Attached mouse-movement events to begin a selection between the cursor and
2838 the mouse, or extend the primary selection to the mouse position.
2841 Completes a primary drag-selection operation.
2844 Begins a selection between the cursor and the mouse. A drag-selection
2845 operation can be started with either extend_start or grab_focus.
2847 focus_pane( [relative-pane] | [positive-index] | [negative-index] )
2848 Move the focus to the requested pane. Arguments can be specified in the form
2849 of a relative-pane ("first", "last", "next", "previous"), a positive-index
2850 (numbers greater than 0, 1 is the same as "first") or a negative-index
2851 (numbers less than 0, -1 is the same as "last").
2854 Moves the cursor one character to the right.
2856 forward_paragraph( ["nobell"] )
2857 Moves the cursor to the beginning of the next paragraph. Paragraphs are
2858 defined as regions of text delimited by one or more blank lines.
2860 forward_word( ["tail"] ["nobell"] )
2861 Moves the cursor to the beginning of the next word. Word delimiters are
2862 user-settable, and defined by the X resource wordDelimiters. If the "tail"
2863 argument is supplied the cursor will be moved to the end of the current word
2864 or the end of the next word, if the cursor is between words.
2867 Moves the cursor to the mouse pointer location, and prepares for a possible
2868 drag-selection operation (bound to extend_adjust), or multi-click operation
2869 (a further grab_focus action). If a second invocation of grab focus follows
2870 immediately, it selects a whole word, or a third, a whole line.
2872 insert_string( "string" )
2873 If pending delete is on and the cursor is inside the selection, replaces the
2874 selection with "string". Otherwise, inserts "string" at the cursor location.
2876 key_select( "direction" [,"nobell"] )
2877 Moves the cursor one character in "direction" ("left", "right", "up", or
2878 "down") and extends the selection. Same as
2879 forward/backward-character("extend"), or process-up/down("extend"), for
2880 compatibility with previous versions.
2883 Moves the cursor to the pointer location without disturbing the selection.
2884 (This is an unusual way of working. We left it in for compatibility with
2885 previous versions, but if you actually use this capability, please send us
2886 some mail, otherwise it is likely to disappear in the future.
2889 If a secondary selection exists, deletes the contents of the secondary
2890 selection and inserts it at the cursor, or if pending-delete is on and there
2891 is a primary selection, replaces the primary selection. If no secondary
2892 selection exists, moves the primary selection to the pointer location,
2893 deleting it from its original position.
2895 move_to_or_end_drag()
2896 Completes either a secondary selection operation, or a primary drag. If the
2897 user is dragging the mouse to adjust a secondary selection, the selection is
2898 deleted and either inserted at the cursor location, or, if pending-delete is
2899 on and a primary selection exists in the window, replaces the primary
2900 selection. If the user is dragging a block of text (primary selection),
2901 completes the drag operation and deletes the text from it's current
2905 Inserts a newline character. If Auto Indent is on, lines up the indentation
2906 of the cursor with the current line.
2908 newline_and_indent()
2909 Inserts a newline character and lines up the indentation of the cursor with
2910 the current line, regardless of the setting of Auto Indent.
2913 Inserts a newline character, without automatic indentation, regardless of
2914 the setting of Auto Indent.
2916 next_page( ["stutter"] ["column"] ["scrollbar"] ["nobell"] )
2917 Moves the cursor and scroll forward one page. The parameter "stutter" moves
2918 the cursor to the bottom of the display, unless it is already there,
2919 otherwise it will page down. The parameter "column" will maintain the
2920 preferred column while moving the cursor.
2922 page_left( ["scrollbar"] ["nobell"] )
2923 Move the cursor and scroll left one page.
2925 page_right( ["scrollbar"] ["nobell"] )
2926 Move the cursor and scroll right one page.
2929 Insert the contents of the clipboard at the cursor, or if pending delete is
2930 on, replace the primary selection with the contents of the clipboard.
2932 previous_page( ["stutter"] ["column"] ["scrollbar"] ["nobell"] )
2933 Moves the cursor and scroll backward one page. The parameter "stutter" moves
2934 the cursor to the top of the display, unless it is already there, otherwise
2935 it will page up. The parameter "column" will maintain the preferred column
2936 while moving the cursor.
2939 Same as secondary_or_drag_start for compatibility with previous versions.
2942 Cancels the current extend_adjust, secondary_adjust, or
2943 secondary_or_drag_adjust in progress.
2945 process_down( ["nobell", "absolute"] )
2946 Moves the cursor down one line. If "absolute" is given, always moves to the
2947 next line in the text buffer, regardless of wrapping.
2950 Same as newline for compatibility with previous versions.
2952 process_shift_down( ["nobell", "absolute"] )
2953 Same as process_down("extend") for compatibility with previous versions.
2955 process_shift_up( ["nobell", "absolute"] )
2956 Same as process_up("extend") for compatibility with previous versions.
2959 If tab emulation is turned on, inserts an emulated tab, otherwise inserts a
2962 process_up( ["nobell", "absolute"] )
2963 Moves the cursor up one line. If "absolute" is given, always moves to the
2964 previous line in the text buffer, regardless of wrapping.
2966 raise_window([relative-window] | [positive-index] | [negative-index])
2967 Raise the current focused window to the front if no argument is supplied.
2968 Arguments can be specified in the form of a relative-window ("first",
2969 "last", "next", "previous"), a positive-index (numbers greater than 0, 1 is
2970 the same as "last") or a negative-index (numbers less than 0, -1 is the same
2974 Scroll the display down (towards the end of the file) by nLines.
2976 scroll_left( nPixels )
2977 Scroll the display left by nPixels.
2979 scroll_right( nPixels )
2980 Scroll the display right by nPixels.
2983 Scroll the display up (towards the beginning of the file) by nLines.
2985 scroll_to_line( lineNum )
2986 Scroll to position line number lineNum at the top of the pane. The first
2987 line of a file is line 1.
2990 Attached mouse-movement events to extend the secondary selection to the
2993 secondary_or_drag_adjust()
2994 Attached mouse-movement events to extend the secondary selection, or
2995 reposition the primary text being dragged. Takes two optional arguments,
2996 "copy", and "overlay". "copy" leaves a copy of the dragged text at the site
2997 at which the drag began. "overlay" does the drag in overlay mode, meaning
2998 the dragged text is laid on top of the existing text, obscuring and
2999 ultimately deleting it when the drag is complete.
3001 secondary_or_drag_start()
3002 To be attached to a mouse down event. Begins drag selecting a secondary
3003 selection, or dragging the contents of the primary selection, depending on
3004 whether the mouse is pressed inside of an existing primary selection.
3007 To be attached to a mouse down event. Begin drag selecting a secondary
3011 Select the entire file.
3014 To be attached to a key-press event, inserts the character equivalent of the
3026 NEdit can be customized many different ways. The most important
3027 user-settable options are presented in the Preferences menu, including all
3028 options that users might need to change during an editing session. Options
3029 set in the Default Settings sub-menu of the Preferences menu can be
3030 preserved between sessions by selecting Save Defaults, which writes the
3031 changes to the preferences file. See the section titled "Preferences" for
3034 User defined commands can be added to NEdit's Shell, Macro, and window
3035 background menus. Dialogs for creating items in these menus can be found
3036 under Customize Menus in the Default Settings sub menu of the Preferences
3039 For users who depend on NEdit every day and want to tune every excruciating
3040 detail, there are also X resources for tuning a vast number of such details,
3041 down to the color of each individual button. See the section "X Resources"
3042 for more information, as well as a list of selected resources.
3044 The most common reason customizing your X resources for NEdit, however, is
3045 key binding. While limited key binding can be done through Preferences
3046 settings (Preferences -> Default Settings -> Customize Menus), you can
3047 really only add keys this way, and each key must have a corresponding menu
3048 item. Any significant changes to key binding should be made via the
3049 Translations resource and menu accelerator resources. The sections titled
3050 "Key Binding" and "X Resources" have more information.
3056 The Preferences menu allows you to set options for both the current editing
3057 window, and default values for newly created windows and future NEdit
3058 sessions. Options in the Preferences menu itself (not in the Default
3059 Settings sub-menu) take effect immediately and refer to the current window
3060 only. Options in the Default Settings sub-menu provide initial settings for
3061 future windows created using the New or Open commands; options affecting all
3062 windows are also set here. Preferences set in the Default Settings sub-menu
3063 can be saved in a file that is automatically read by NEdit at startup time,
3064 by selecting Save Defaults.
3070 Menu of initial settings for future windows. Generally the same as the
3071 options in the main part of the menu, but apply as defaults for future
3072 windows created during this NEdit session. These settings can be saved using
3073 the Save Defaults command below, to be loaded automatically each time NEdit
3077 Save the default options as set under Default Settings for future NEdit
3081 Show the full file name, line number, and length of the file being edited.
3083 Incremental Search Line
3084 Keep the incremental search bar (Search -> Find Incremental) permanently
3085 displayed at the top of the window.
3088 Display line numbers to the right of the text.
3091 Tells NEdit what language (if any) to assume, for selecting
3092 language-specific features such as highlight patterns and smart indent
3093 macros, and setting language specific preferences like word delimiters, tab
3094 emulation, and auto-indent. See Features for Programming -> Programming with
3095 NEdit for more information.
3098 Setting Auto Indent "on" maintains a running indent (pressing the Return key
3099 will line up the cursor with the indent level of the previous line). If
3100 smart indent macros are available for the current language mode, smart
3101 indent can be selected and NEdit will attempt to guess proper language
3102 indentation for each new line. See Help -> Features for Programming ->
3103 Automatic Indent for more information.
3106 Choose between two styles of automatic wrapping or none. Auto Newline wrap,
3107 wraps text at word boundaries when the cursor reaches the right margin, by
3108 replacing the space or tab at the last word boundary with a newline
3109 character. Continuous Wrap wraps long lines which extend past the right
3110 margin. Continuous Wrap mode is typically used to produce files where
3111 newlines are omitted within paragraphs, to make text filling automatic (a
3112 kind of poor-man's word processor). Text of this style is common on Macs and
3113 PCs but is not necessarily supported very well under Unix (except in
3114 programs which deal with e-mail, for which it is often the format of
3118 Set margin for Auto Newline Wrap, Continuous Wrap, and Fill Paragraph. Lines
3119 may, be wrapped at the right margin of the window, or the margin can be set
3120 at a specific column.
3123 Set the tab distance (number of characters between tab stops) for tab
3124 characters, and control tab emulation and use of tab characters in padding
3128 Change the font(s) used to display text (fonts for menus and dialogs must be
3129 set using X resources for the text area of the window). See below for more
3133 If NEdit recognizes the language being edited, and highlighting patterns are
3134 available for that language, use fonts and colors to enhance viewing of the
3135 file. (See Help -> Features for Programming -> Syntax Highlighting for more
3139 On Save, write a backup copy of the file as it existed before the Save
3140 command with the extension .bck (Unix only).
3143 Periodically make a backup copy of the file being edited under the name
3144 `~filename` on Unix or `_filename` on VMS (see Crash Recovery).
3147 Momentarily highlight matching parenthesis, brackets, and braces, or the
3148 range between them, when one of these characters is typed, or when the
3149 insertion cursor is positioned after it. Delimiter only highlights the
3150 matching delimiter, while Range highlights the whole range of text between
3151 the matching delimiters.
3153 Optionally, the matching can make use of syntax information if syntax
3154 highlighting is enabled. Alternatively, the matching is purely character
3155 based. In general, syntax based matching results in fewer false matches.
3158 In overtype mode, new characters entered replace the characters in front of
3159 the insertion cursor, rather than being inserted before them.
3162 Lock the file against accidental modification. This temporarily prevents the
3163 file from being modified in this NEdit session. Note that this is different
3164 from setting the file protection.
3167 PREFERENCES -> DEFAULT SETTINGS MENU
3169 Options in the Preferences -> Default Settings menu have the same meaning as
3170 those in the top-level Preferences menu, except that they apply to future
3171 NEdit windows and future NEdit sessions if saved with the Save Defaults
3172 command. Additional options which appear in this menu are:
3175 Define language recognition information (for determining language mode from
3176 file name or content) and set language specific preferences.
3179 How to react to multiple tags for the same name. Tags are described in the
3180 section: Features for Programmers -> Finding Declarations (ctags). In Show
3181 All mode, all matching tags are displayed in a dialog. In Smart mode, if one
3182 of the matching tags is in the current window, that tag is chosen, without
3183 displaying the dialog.
3186 Add/remove items from the Shell, Macro, and window background menus (see
3189 Customize Window Title
3190 Opens a dialog where the information to be displayed in the windows's title
3191 field can be defined and tested. The dialog contains a Help button,
3192 providing further information about the options available.
3195 Options for controlling the behavior of Find and Replace commands:
3197 Verbose - Presents search results in dialog form, asks before wrapping a
3198 search back around the beginning (or end) of the file (unless Beep On Search
3201 Wrap Around - Search and Replace operations wrap around the beginning (or
3204 Beep On Search Wrap - Beep when Search and Replace operations wrap around
3205 the beginning (or end) of the file (only if Wrap Around is turned on).
3207 Keep Dialogs Up - Don't pop down Replace and Find boxes after searching.
3209 Default Search Style - Initial setting for search type in Find and Replace
3212 Default Replace Scope - [THIS OPTION IS ONLY PRESENT WHEN NEDIT WAS COMPILED
3214 -DREPLACE_SCOPE FLAG TO SELECT AN ALTERNATIVE REPLACE DIALOG LAYOUT.]
3216 Initial setting for the scope in the Replace/Find dialog, when a selection
3217 exists. It can be either "In Window", "In Selection", or "Smart". "Smart"
3218 results in "In Window" if the size of the selection is smaller than 1 line,
3219 and to "In Selection" otherwise.
3222 Program and configure enhanced text display for new or supported languages
3223 (See Features for Programming -> Syntax Highlighting).
3225 Append Line Feed on Save
3226 Some UNIX tools expect that files end with a line feed. If this option is
3227 activated, NEdit will append one if required.
3229 Sort Open Prev. Menu
3230 Option to order the File -> Open Previous menu alphabetically, versus in
3231 order of last access.
3233 Popups Under Pointer
3234 Display pop-up dialogs centered on the current mouse position, as opposed to
3235 centered on the parent window. This generally speeds interaction, and is
3236 essential for users who users who set their window managers so keyboard
3237 focus follows the mouse.
3239 Modification Warnings
3240 Pop up a warning dialog when files get changed external to NEdit.
3243 Ask before exiting when two or more files are open in an NEdit session.
3246 Default size for new windows.
3251 The font used to display text in NEdit is set under Preferences -> Text Font
3252 (for the current window), or Preferences -> Default Settings Text Font (for
3253 future windows). These dialogs also allow you to set fonts for syntax
3254 highlighting. If you don't intend to use syntax highlighting, you can ignore
3255 most of the dialog, and just set the field labeled Primary Font.
3257 Unless you are absolutely certain about the types of files that you will be
3258 editing with NEdit, you should choose a fixed-spacing font. Many, if not
3259 most, plain-text files are written expecting to be viewed with fixed
3260 character spacing, and will look wrong with proportional spacing. NEdit's
3261 filling, wrapping, and rectangular operations will also work strangely if
3262 you choose a proportional font.
3264 Note that in the font browser (the dialog brought up by the Browse...
3265 button), the subset of fonts which are shown is narrowed depending on the
3266 characteristics already selected. It is therefore important to know that you
3267 can unselect characteristics from the lists by clicking on the selected
3268 items a second time.
3270 Fonts for syntax highlighting should ideally match the primary font in both
3271 height and spacing. A mismatch in spacing will result in similar distortions
3272 as choosing a proportional font: column alignment will sometimes look wrong,
3273 and rectangular operations, wrapping, and filling will behave strangely. A
3274 mismatch in height will cause windows to re-size themselves slightly when
3275 syntax highlighting is turned on or off, and increase the inter- line
3276 spacing of the text. Unfortunately, on some systems it is hard to find sets
3277 of fonts which match exactly in height.
3282 You can add or change items in the Shell, Macro, and window background menus
3283 under Preferences -> Default Settings -> Customize Menus. When you choose
3284 one of these, you will see a dialog with a list of the current
3285 user-configurable items from the menu on the left. To change an existing
3286 item, select it from the list, and its properties will appear in the
3287 remaining fields of the dialog, where you may change them. Selecting the
3288 item "New" from the list allows you to enter new items in the menu.
3290 Hopefully most of the characteristics are self explanatory, but here are a
3293 Accelerator keys are keyboard shortcuts which appear on the right hand side
3294 of the menus, and allow you avoid pulling down the menu and activate the
3295 command with a single keystroke. Enter accelerators by typing the keys
3296 exactly as you would to activate the command.
3298 Mnemonics are a single letter which should be part of the menu item name,
3299 which allow users to traverse and activate menu items by typing keys when
3300 the menu is pulled down.
3302 In the Shell Command field of the Shell Commands dialog, the % character
3303 expands to the name (including directory path) of the file in the window. To
3304 include a % character in the command, use %%.
3306 The Menu Entry field can contain special characters for constructing
3307 hierarchical sub-menus, and for making items which appear only in certain
3308 language modes. The right angle bracket character ">" creates a sub-menu.
3309 The name of the item itself should be the last element of the path formed
3310 from successive sub-menu names joined with ">". Menu panes are called in to
3311 existence simply by naming them as part of a Menu Entry name. To put several
3312 items in the same sub-menu, repeat the same hierarchical sequence for each.
3313 For example, in the Macro Commands dialog, two items with menu entries:
3314 a>b>c and a>b>d would create a single sub menu under the macro menu called
3315 "a", which would contain a single sub-menu, b, holding the actual items, c
3323 To qualify a menu entry with a language mode, simply add an at-sign "@" at
3324 the end of the menu command, followed (no space) by a language mode name. To
3325 make a menu item which appears in several language modes, append additional
3326 @s and language mode names. For example, an item with the menu entry:
3328 Make C Prototypes@C@C++
3330 would appear only in C and C++ language modes, and:
3332 Make Class Template@C++
3334 would appear only in C++ mode.
3336 Menu items with no qualification appear in all language modes.
3338 If a menu item is followed by the single language qualification "@*", that
3339 item will appear only if there are no applicable language-specific items of
3340 the same name in the same submenu. For example, if you have the following
3341 three entries in the same menu:
3343 Make Prototypes@C@C++
3344 Make Prototypes@Java
3347 The first will be available when the language mode is C or C++, the second
3348 when the language mode is Java, and for all other language modes (including
3349 the "Plain" non-language mode). If the entry:
3353 also exists, this will always appear, meaning that the menu will always have
3354 two "Make Prototypes" entries, whatever the language mode.
3357 THE NEDIT PREFERENCES FILE
3359 The NEdit saved preferences file is an X resource file, and its contents can
3360 be moved into another X resource file (see X Resources). One reason for
3361 doing so would be to attach server specific preferences, such as a default
3362 font to a particular X server. Another reason for moving preferences into
3363 the X resource file would be to keep preferences menu options and resource
3364 settable options together in one place. Though the files are the same
3365 format, additional resources should not be added to the preference file
3366 since NEdit modifies this file by overwriting it completely. Note also that
3367 the contents of the preference file take precedence over the values of X
3368 resources. Using Save Defaults after moving the contents of your preference
3369 file to your .Xdefaults file will re-create the preference file, interfering
3370 with the options that you have moved. The location of NEdit's preferences
3371 file depends on your environment:
3373 * The default place for the file is '$HOME/.nedit/nedit.rc',
3374 * if the variable $NEDIT_HOME is set in your environment it is located at
3375 '$NEDIT_HOME/nedit.rc',
3376 * you may also use old-style run control files; in this case, the
3377 preferences are stored in $HOME/.nedit.
3379 (For VMS, the file is in '$NEDIT_HOME/nedit.rc' if $NEDIT_HOME is set, in
3380 'SYS$LOGIN:.nedit' otherwise.)
3383 SHARING CUSTOMIZATIONS WITH OTHER NEDIT USERS
3385 If you have written macro or shell menu commands, highlight patterns, or
3386 smart-indent macros that you want to share with other NEdit users, you can
3387 make a file which they can load into their NEdit environment.
3389 To load such a file, start NEdit with the command:
3391 nedit -import <file>
3393 In the new NEdit session, verify that the imported patterns or macros do
3394 what you want, then select Preferences -> Save Defaults. Saving incorporates
3395 the changes into the nedit preferences file, so the next time you run NEdit,
3396 you will not have to import the distribution file.
3398 Loading a customization file is automated, but creating one is not. To
3399 produce a file to be imported by other users, you must make a copy of your
3400 own NEdit configuration file, and edit it, by hand, to remove everything but
3401 the few items of interest to the recipient. Leave only the individual
3402 resource(s), and within those resources, only the particular macro, pattern,
3403 style, etc, that you wish to exchange.
3405 For example, to share a highlighting pattern set, you would include the
3406 patterns, any new styles you added, and language mode information only if
3407 the patterns are intended to support a new language rather than updating an
3408 existing one. For example:
3410 nedit.highlightPatterns:\
3412 Comment:"#":"$"::Comment::\n\
3413 Loop Header:"^[ \\t]*loop:":::Loop::\n\
3415 nedit.languageModes: My Language:.my::::::
3416 nedit.styles: Loop:blue:Bold
3418 Resources are in the format of X resource files, but the format of text
3419 within multiple-item resources like highlight patterns, language modes,
3420 macros, styles, etc., are private to NEdit. Each resource is a string which
3421 ends at the first newline character not escaped with \, so you must be
3422 careful about how you treat ends of lines. While you can generally just cut
3423 and paste indented sections, if something which was originally in the middle
3424 of a resource string is now at the end, you must remove the \ line
3425 continuation character(s) so it will not join the next line into the
3426 resource. Conversely, if something which was originally at the end of a
3427 resource is now in the middle, you'll have to add continuation character(s)
3428 to make sure that the resource string is properly continued from beginning
3429 to end, and possibly newline character(s) (\n) to make sure that it is
3430 properly separated from the next item.
3436 NEdit has additional options to those provided in the Preferences menu which
3437 are set using X resources. Like most other X programs, NEdit can be
3438 customized to vastly unnecessary proportions, from initial window positions
3439 down to the font and shadow colors of each individual button (A complete
3440 discussion of how to do this is left to books on the X Windows System). Key
3441 binding (see "Key Binding" is one of the most useful of these resource
3444 X resources are usually specified in a file called .Xdefaults or .Xresources
3445 in your home directory (on VMS this is sys$login:decw$xdefaults.dat). On
3446 some systems, this file is read and its information attached to the X server
3447 (your screen) when you start X. On other systems, the .Xdefaults file is
3448 read each time you run an X program. When X resource values are attached to
3449 the X server, changes to the resource file are not available to application
3450 programs until you either run the xrdb program with the appropriate file as
3451 input, or re-start the X server.
3454 SELECTED X RESOURCE NAMES
3456 The following are selected NEdit resource names and default values for NEdit
3457 options not settable via the Preferences menu (for preference resource
3458 names, see your NEdit preference file):
3460 nedit.tagFile: (not defined)
3462 This can be the name of a file, or multiple files separated by a colon (:)
3463 character, of the type produced by Exuberant Ctags or the Unix ctags
3464 command, which NEdit will load at startup time (see ctag support ). The tag
3465 file provides a database from which NEdit can automatically open files
3466 containing the definition of a particular subroutine or data type.
3468 nedit.alwaysCheckRelativeTagsSpecs: True
3470 When this resource is set to True, and there are tag files specified (with
3471 the nedit.tagFile resource, see above) as relative paths, NEdit will
3472 evaluate these tag value paths whenever a file is opened. All accessible tag
3473 files will be loaded at this time. When this resource value is False,
3474 relative path tag specifications will only be evaluated at NEdit startup
3477 nedit.shell: /bin/csh
3479 (Unix systems only) The Unix shell (command interpreter) to use for
3480 executing commands from the Shell menu
3482 nedit.wordDelimiters: .,/\\`'!@#%^&*()-=+{}[]":;<>?
3484 The characters, in addition to blanks and tabs, which mark the boundaries
3485 between words for the move-by-word (Ctrl+Arrow) and select-word (double
3486 click) commands. Note that this default value may be overridden by the
3487 setting in Preferences -> Default Settings -> Language Modes....
3489 nedit.remapDeleteKey: False
3491 Setting this resource to True forcibly maps the delete key to backspace.
3492 This can be helpful on systems where the bindings have become tangled, and
3493 in environments which mix systems with PC style keyboards and systems with
3494 DEC and Macintosh keyboards. Theoretically, these bindings should be made
3495 using the standard X/Motif mechanisms, outside of NEdit. In practice, some
3496 environments where users access several different systems remotely, can be
3497 very hard to configure. If you've given up and are using a backspace key
3498 halfway off the keyboard because you can't figure out the bindings, set this
3501 nedit.typingHidesPointer: False
3503 Setting this resource to True causes the mouse pointer to be hidden when you
3504 type in the text area. As soon as the mouse pointer is moved, it will
3505 reappear. This is useful to stop the mouse pointer from obscuring text.
3507 nedit.overrideDefaultVirtualKeyBindings: Auto
3509 Motif uses a virtual key binding mechanism that shares the bindings between
3510 different Motif applications. When a first Motif application is started, it
3511 installs some default virtual key bindings and any other Motif application
3512 that runs afterwards, simply reuses them. Obviously, if the first
3513 application installs an invalid set, all others applications may have
3516 In the past, NEdit has been the victim of invalid bindings installed by
3517 other applications several times. Through this resource, NEdit can be
3518 instructed to ignore the bindings installed by other applications, and use
3519 its own private bindings. By default, NEdit tries to detect invalid bindings
3520 and ignore them automatically (Auto). Optionally, NEdit can be told to
3521 always keep the installed bindings (Never), or to always override them
3524 nedit.stdOpenDialog: False
3526 Setting this resource to True restores the standard Motif style of Open
3527 dialog. NEdit file open dialogs are missing a text field at the bottom of
3528 the dialog, where the file name can be entered as a string. The field is
3529 removed in NEdit to encourage users to type file names in the list, a
3530 non-standard, but much faster method for finding files.
3532 nedit.bgMenuButton: ~Shift~Ctrl~Meta~Alt<Btn3Down>
3534 Specification for mouse button / key combination to post the background menu
3535 (in the form of an X translation table event specification). The event
3536 specification should be as specific as possible, since it will override less
3537 specific translation table entries.
3539 nedit.maxPrevOpenFiles: 30
3541 Number of files listed in the Open Previous sub-menu of the File menu.
3542 Setting this to zero disables the Open Previous menu item and maintenance of
3543 the NEdit file history file.
3545 nedit.printCommand: (system specific)
3547 Command used by the print dialog to print a file, such as, lp, lpr, etc..
3548 The command must be capable of accepting input via stdin (standard input).
3550 nedit.printCopiesOption: (system specific)
3552 Option name used to specify multiple copies to the print command. If the
3553 option should be separated from its argument by a space, leave a trailing
3554 space. If blank, no "Number of Copies" item will appear in the print dialog.
3556 nedit.printQueueOption: (system specific)
3558 Option name used to specify a print queue to the print command. If the
3559 option should be separated from its argument by a space, leave a trailing
3560 space. If blank, no "Queue" item will appear in the print dialog.
3562 nedit.printNameOption: (system specific)
3564 Option name used to specify a job name to the print command. If the option
3565 should be separated from its argument by a space, leave a trailing space. If
3566 blank, no job or file name will be attached to the print job or banner page.
3568 nedit.printHostOption: (system specific)
3570 Option name used to specify a host name to the print command. If the option
3571 should be separated from its argument by a space, leave a trailing space. If
3572 blank, no "Host" item will appear in the print dialog.
3574 nedit.printDefaultQueue: (system specific)
3576 The name of the default print queue. Used only to display in the print
3577 dialog, and has no effect on printing.
3579 nedit.visualID: Best
3581 If your screen supports multiple visuals (color mapping models), this
3582 resource allows you to manually choose among them. The default value of
3583 "Best" chooses the deepest (most colors) visual available. Since NEdit does
3584 not depend on the specific characteristics of any given color model, Best
3585 probably IS the best choice for everyone, and the only reason for setting
3586 this resource would be to patch around some kind of X server problem. The
3587 resource may also be set to "Default", which chooses the screen's default
3588 visual (often a color-mapped, PseudoColor, visual for compatibility with
3589 older X applications). It may also be set to a numeric visual-id value (use
3590 xdpyinfo to see the list of visuals supported by your display), or a visual
3591 class name: PseudoColor, DirectColor, TrueColor, etc..
3593 nedit.installColormap: False
3595 Force the installation of a private colormap. If you have a humble 8-bit
3596 color display, and netscape is hogging all of the color cells, you may want
3597 to try turning this on. On most systems, this will result in colors flashing
3598 wildly when you switch between NEdit and other applications. But a few
3599 systems (SGI) have hardware support for multiple simultaneous colormaps, and
3600 applications with installed colormaps are well behaved.
3602 nedit.findReplaceUsesSelection: False
3604 Controls if the Find and Replace dialogs are automatically loaded with the
3605 contents of the primary selection.
3607 nedit.stickyCaseSenseButton: True
3609 Controls if the "Case Sensitive" buttons in the Find and Replace dialogs and
3610 the incremental search bar maintain a separate state for literal and regular
3611 expression searches. Moreover, when set to True, by default literal searches
3612 are case insensitive and regular expression searches are case sensitive.
3613 When set to False, the "Case Sensitive" buttons are independent of the
3614 "Regular Expression" toggle.
3616 nedit.printDefaultHost: (system specific)
3618 The node name of the default print host. Used only to display in the print
3619 dialog, and has no effect on printing.
3621 nedit.multiClickTime: (system specific)
3623 Maximum time in milliseconds allowed between mouse clicks within double and
3624 triple click actions.
3626 nedit*scrollBarPlacement: BOTTOM_LEFT
3628 How scroll bars are placed in NEdit windows, as well as various lists and
3629 text fields in the program. Other choices are: BOTTOM_RIGHT, TOP_LEFT, or
3632 nedit*text.autoWrapPastedText: False
3634 When Auto Newline Wrap is turned on, apply automatic wrapping (which
3635 normally only applies to typed text) to pasted text as well.
3637 nedit*text.foreground: black
3639 Foreground color of the text editing area of the NEdit window.
3641 nedit*text.background: white
3643 Background color of the text editing area of the NEdit window.
3645 nedit*text.selectForeground: black
3647 Foreground (text) color for selections in the text editing area of the NEdit
3650 nedit*text.selectBackground: gray80
3652 Color for selections in the text editing area of the NEdit window.
3654 nedit*text.highlightForeground: white
3656 Foreground (text) color for highlights (parenthesis flashing) in the text
3657 editing area of the NEdit window.
3659 nedit*text.highlightBackground: red
3661 Color for highlights (parenthesis flashing) in the text editing area of the
3664 nedit*text.cursorForeground: black
3666 Color for text cursor in the text editing area of the NEdit window.
3668 nedit*text.lineNumForeground: gray47
3670 Color for displaying line numbers in the NEdit window.
3672 nedit*text.heavyCursor: False
3674 For monitors with poor resolution or users who have difficulty seeing the
3675 cursor, makes the cursor in the text editing area of the window heavier and
3678 nedit*text.cursorVPadding: 0
3680 Number of lines to keep the cursor away from the top or bottom line of the
3681 window. Keyboard operations that would cause the cursor to get closer than
3682 this distance cause the window to scroll up or down instead, except at the
3683 beginning of the file. Mouse operations are not affected.
3685 nedit*text.blinkRate: 500
3687 Blink rate of the text insertion cursor in milliseconds. Set to zero to stop
3690 nedit*text.Translations:
3692 Modifies key bindings (see below).
3694 nedit*foreground: black
3696 Default foreground color for menus, dialogs, scroll bars, etc..
3698 nedit*background: #b3b3b3
3700 Default background color for menus, dialogs, scroll bars, etc..
3702 nedit*fontList: helvetica medium 12 points
3704 Default font for menus, dialogs, scroll bars, etc..
3706 nedit.helpFont: helvetica medium 12 points
3708 Font used for displaying online help.
3710 nedit.boldHelpFont: helvetica bold 12 points
3712 Bold font for online help.
3714 nedit.italicHelpFont: helvetica italic 12 points
3716 Italic font for online help.
3718 nedit.fixedHelpFont: courier medium 12 points
3720 Fixed font for online help.
3722 nedit.boldFixedHelpFont: courier bold 12 points
3724 Fixed bold for online help.
3726 nedit.italicFixedHelpFont: courier italic 12 points
3728 Fixed italic font for online help.
3730 nedit.h1HelpFont: helvetica bold 14 points
3732 Font for level-1 titles in help text.
3734 nedit.h2HelpFont: helvetica bold italic 12 points
3736 Font for level-2 titles in help text.
3738 nedit.h3HelpFont: courier bold 12 points
3740 Font for level-3 titles in help text.
3742 nedit.helpLinkFont: helvetica medium 12 points
3744 Font for hyperlinks in the help text
3746 nedit.helpLinkColor: #009900
3748 Color for hyperlinks in the help text
3752 Whether the nc program should automatically start an NEdit server (without
3753 prompting the user) if an appropriate server is not found.
3755 nc.serverCommand: nedit -server
3757 Command used by the nc program to start an NEdit server.
3759 and other characteristics):
3760 The following are Selected widget names (to which you may append
3761 .background, .foreground, .fontList, etc., to change colors, fonts
3765 Statistics line and incremental search bar. To get consistent results across
3766 the entire stats line and the incremental search bar, use '*' rather than
3767 '.' to separate the resource name. For example, to set the foreground color
3768 of both components use:
3769 nedit*statsAreaForm*foreground
3771 nedit*statsAreaForm.foreground
3775 Top-of-window menu-bar.
3777 nedit*textHorScrollBar
3779 Horizontal scroll bar.
3781 nedit*textVertScrollBar
3783 Vertical scroll bar.
3793 There are several ways to change key bindings in NEdit. The easiest way to
3794 add a new key binding in NEdit is to define a macro in Preferences ->
3795 Default Settings -> Customize Menus -> Macro Menu. However, if you want to
3796 change existing bindings or add a significant number of new key bindings you
3797 will need to do so via X resources.
3799 Before reading this section, you must understand how to set X resources (see
3800 the help section "X Resources"). Since setting X resources is tricky, it is
3801 also helpful when working on key-binding, to set some easier-to-verify
3802 resource at the same time, as a simple check that the NEdit program is
3803 actually seeing your changes. The appres program is also very helpful in
3804 checking that the resource settings that you make, actually reach the
3805 program for which they are intended in the correct form.
3808 KEY BINDING IN GENERAL
3810 Keyboard commands are associated with editor action routines through two
3811 separate mechanisms in NEdit. Commands which appear in pull-down menus have
3812 individual resources designating a keyboard equivalent to the menu command,
3813 called an accelerator key. Commands which do not have an associated menu
3814 item are bound to keys via the X toolkit translation mechanism. The methods
3815 for changing these two kinds of bindings are quite different.
3818 KEY BINDING VIA TRANSLATIONS
3820 The most general way to bind actions to keys in NEdit is to use the
3821 translation table associated with the text widget. To add a binding to Alt+Y
3822 to insert the string "Hi!", for example, add lines similar to the following
3823 to your X resource file:
3825 NEdit*text.Translations: #override \n\
3826 Alt<Key>y: insert_string("Hi!") \n
3828 The Help topic "Action Routines" lists the actions available to be bound.
3830 Translation tables map key and mouse presses, window operations, and other
3831 kinds of events, to actions. The syntax for translation tables is simplified
3832 here, so you may need to refer to a book on the X window system for more
3833 detailed information.
3835 Note that accelerator resources (discussed below) override translations, and
3836 that most Ctrl+letter and Alt+letter combinations are already bound to an
3837 accelerator key. To use one of these combinations from a translation table,
3838 therefore, you must first un-bind the original menu accelerator.
3840 A resource for changing a translation table consists of a keyword;
3841 #override, #augment, or #replace; followed by lines (separated by newline
3842 characters) pairing events with actions. Events begin with modifiers, like
3843 Ctrl, Shift, or Alt, followed by the event type in <>. BtnDown, Btn1Down,
3844 Btn2Down, Btn1Up, Key, KeyUp are valid event types. For key presses, the
3845 event type is followed by the name of the key. You can specify a combination
3846 of events, such as a sequence of key presses, by separating them with
3847 commas. The other half of the event/action pair is a set of actions. These
3848 are separated from the event specification by a colon and from each other by
3849 spaces. Actions are names followed by parentheses, optionally containing one
3850 or more parameters separated by comas.
3853 CHANGING MENU ACCELERATOR KEYS
3855 The menu shortcut keys shown at the right of NEdit menu items can also be
3856 changed via X resources. Each menu item has two resources associated with
3857 it, accelerator, the event to trigger the menu item; and acceleratorText,
3858 the string shown in the menu. The form of the accelerator resource is the
3859 same as events for translation table entries discussed above, though
3860 multiple keys and other subtleties are not allowed. The resource name for a
3861 menu is the title in lower case, followed by "Menu", the resource name of
3862 menu item is the name in lower case, run together, with words separated by
3863 caps, and all punctuation removed. For example, to change Cut to Ctrl+X, you
3864 would add the following to your .Xdefaults file:
3866 nedit*editMenu.cut.accelerator: Ctrl<Key>x
3867 nedit*editMenu.cut.acceleratorText: Ctrl+X
3869 Accelerator keys with optional shift key modifiers, like Find..., have an
3870 additional accelerator resource with Shift appended to the name. For
3873 nedit*searchMenu.find.acceleratorText: [Shift]Alt+F
3874 nedit*searchMenu.find.accelerator: Alt<Key>f
3875 nedit*searchMenu.findShift.accelerator: Shift Alt<Key>f
3877 ---------------------
3878 HIGHLIGHTING PATTERNS
3879 ---------------------
3882 WRITING SYNTAX HIGHLIGHTING PATTERNS
3884 Patterns are the mechanism by which language syntax highlighting is
3885 implemented in NEdit (see Syntax Highlighting under the heading of Features
3886 for Programming). To create syntax highlighting patterns for a new language,
3887 or to modify existing patterns, select "Recognition Patterns" from "Syntax
3888 Highlighting" sub-section of the "Default Settings" sub-menu of the
3891 First, a word of caution. As with regular expression matching in general, it
3892 is quite possible to write patterns which are so inefficient that they
3893 essentially lock up the editor as they recursively re-examine the entire
3894 contents of the file thousands of times. With the multiplicity of patterns,
3895 the possibility of a lock-up is significantly increased in syntax
3896 highlighting. When working on highlighting patterns, be sure to save your
3899 NEdit's syntax highlighting is unusual in that it works in real-time (as you
3900 type), and yet is completely programmable using standard regular expression
3901 notation. Other syntax highlighting editors usually fall either into the
3902 category of fully programmable but unable to keep up in real-time, or
3903 real-time but limited programmability. The additional burden that NEdit
3904 places on pattern writers in order to achieve this speed/flexibility mix, is
3905 to force them to state self-imposed limitations on the amount of context
3906 that patterns may examine when re-parsing after a change. While the "Pattern
3907 Context Requirements" heading is near the end of this section, it is not
3908 optional, and must be understood before making any any serious effort at
3911 In its simplest form, a highlight pattern consists of a regular expression
3912 to match, along with a style representing the font an color for displaying
3913 any text which matches that expression. To bold the word, "highlight",
3914 wherever it appears the text, the regular expression simply would be the
3915 word "highlight". The style (selected from the menu under the heading of
3916 "Highlight Style") determines how the text will be drawn. To bold the text,
3917 either select an existing style, such as "Keyword", which bolds text, or
3918 create a new style and select it under Highlight Style.
3920 The full range of regular expression capabilities can be applied in such a
3921 pattern, with the single caveat that the expression must conclusively match
3922 or not match, within the pre-defined context distance (as discussed below
3923 under Pattern Context Requirements).
3925 To match longer ranges of text, particularly any constructs which exceed the
3926 requested context, you must use a pattern which highlights text between a
3927 starting and ending regular expression match. To do so, select "Highlight
3928 text between starting and ending REs" under "Matching", and enter both a
3929 starting and ending regular expression. For example, to highlight everything
3930 between double quotes, you would enter a double quote character in both the
3931 starting and ending regular expression fields. Patterns with both a
3932 beginning and ending expression span all characters between the two
3933 expressions, including newlines.
3935 Again, the limitation for automatic parsing to operate properly is that both
3936 expressions must match within the context distance stated for the pattern
3939 With the ability to span large distances, comes the responsibility to
3940 recover when things go wrong. Remember that syntax highlighting is called
3941 upon to parse incorrect or incomplete syntax as often as correct syntax. To
3942 stop a pattern short of matching its end expression, you can specify an
3943 error expression, which stops the pattern from gobbling up more than it
3944 should. For example, if the text between double quotes shouldn't contain
3945 newlines, the error expression might be "$". As with both starting and
3946 ending expressions, error expressions must also match within the requested
3950 Coloring Sub-Expressions
3952 It is also possible to color areas of text within a regular expression
3953 match. A pattern of this type associates a style with sub-expressions
3954 references of the parent pattern (as used in regular expression substitution
3955 patterns, see the NEdit Help menu item on Regular Expressions).
3956 Sub-expressions of both the starting and ending patterns may be colored. For
3957 example, if the parent pattern has a starting expression "\<", and end
3958 expression "\>", (for highlighting all of the text contained within angle
3959 brackets), a sub-pattern using "&" in both the starting and ending
3960 expression fields could color the brackets differently from the intervening
3961 text. A quick shortcut to typing in pattern names in the Parent Pattern
3962 field is to use the middle mouse button to drag them from the Patterns list.
3965 Hierarchical Patterns
3967 A hierarchical sub-pattern, is identical to a top level pattern, but is
3968 invoked only between the beginning and ending expression matches of its
3969 parent pattern. Like the sub-expression coloring patterns discussed above,
3970 it is associated with a parent pattern using the Parent Pattern field in the
3971 pattern specification. Pattern names can be dragged from the pattern list
3972 with the middle mouse button to the Parent Pattern field.
3974 After the start expression of the parent pattern matches, the syntax
3975 highlighting parser searches for either the parent's end pattern or a
3976 matching sub-pattern. When a sub-pattern matches, control is not returned to
3977 the parent pattern until the entire sub-pattern has been parsed, regardless
3978 of whether the parent's end pattern appears in the text matched by the
3981 The most common use for this capability is for coloring sub-structure of
3982 language constructs (smaller patterns embedded in larger patterns).
3983 Hierarchical patterns can also simplify parsing by having sub-patterns
3984 "hide" special syntax from parent patterns, such as special escape sequences
3985 or internal comments.
3987 There is no depth limit in nesting hierarchical sub-patterns, but beyond the
3988 third level of nesting, automatic re-parsing will sometimes have to re-parse
3989 more than the requested context distance to guarantee a correct parse (which
3990 can slow down the maximum rate at which the user can type if large sections
3991 of text are matched only by deeply nested patterns).
3993 While this is obviously not a complete hierarchical language parser it is
3994 still useful in many text coloring situations. As a pattern writer, your
3995 goal is not to completely cover the language syntax, but to generate
3996 colorings that are useful to the programmer. Simpler patterns are usually
3997 more efficient and also more robust when applied to incorrect code.
4000 Deferred (Pass-2) Parsing
4002 NEdit does pattern matching for syntax highlighting in two passes. The first
4003 pass is applied to the entire file when syntax highlighting is first turned
4004 on, and to new ranges of text when they are initially read or pasted in. The
4005 second pass is applied only as needed when text is exposed (scrolled in to
4008 If you have a particularly complex set of patterns, and parsing is beginning
4009 to add a noticeable delay to opening files or operations which change large
4010 regions of text, you can defer some of that parsing from startup time, to
4011 when it is actually needed for viewing the text. Deferred parsing can only
4012 be used with single expression patterns, or begin/end patterns which match
4013 entirely within the requested context distance. To defer the parsing of a
4014 pattern to when the text is exposed, click on the Pass-2 pattern type button
4015 in the highlight patterns dialog.
4017 Sometimes a pattern can't be deferred, not because of context requirements,
4018 but because it must run concurrently with pass-1 (non-deferred) patterns. If
4019 they didn't run concurrently, a pass-1 pattern might incorrectly match some
4020 of the characters which would normally be hidden inside of a sequence
4021 matched by the deferred pattern. For example, C has character constants
4022 enclosed in single quotes. These typically do not cross line boundaries,
4023 meaning they can be parsed entirely within the context distance of the C
4024 pattern set and should be good candidates for deferred parsing. However,
4025 they can't be deferred because they can contain sequences of characters
4026 which can trigger pass-one patterns. Specifically, the sequence, '\"',
4027 contains a double quote character, which would be matched by the string
4028 pattern and interpreted as introducing a string.
4031 Pattern Context Requirements
4033 The context requirements of a pattern set state how much additional text
4034 around any change must be examined to guarantee that the patterns will match
4035 what they are intended to match. Context requirements are a promise by NEdit
4036 to the pattern writer, that the regular expressions in his/her patterns will
4037 be matched against at least <line context> lines and <character context>
4038 characters, around any modified text. Combining line and character
4039 requirements guarantee that both will be met.
4041 Automatic re-parsing happens on EVERY KEYSTROKE, so the amount of context
4042 which must be examined is very critical to typing efficiency. The more
4043 complicated your patterns, the more critical the context becomes. To cover
4044 all of the keywords in a typical language, without affecting the maximum
4045 rate at which users can enter text, you may be limited to just a few lines
4046 and/or a few hundred characters of context.
4048 The default context distance is 1 line, with no minimum character
4049 requirement. There are several benefits to sticking with this default. One
4050 is simply that it is easy to understand and to comply with. Regular
4051 expression notation is designed around single line matching. To span lines
4052 in a regular expression, you must explicitly mention the newline character
4053 "\n", and matches which are restricted to a single line are virtually immune
4054 to lock-ups. Also, if you can code your patterns to work within a single
4055 line of context, without an additional character-range context requirement,
4056 the parser can take advantage the fact that patterns don't cross line
4057 boundaries, and nearly double its efficiency over a one-line and 1-character
4058 context requirement. (In a single line context, you are allowed to match
4059 newlines, but only as the first and/or last character.)
4065 Smart indent macros can be written for any language, but are usually more
4066 difficult to write than highlighting patterns. A good place to start, of
4067 course, is to look at the existing macros for C and C++.
4069 Smart indent macros for a language mode consist of standard NEdit macro
4070 language code attached to any or all of the following three activation
4071 conditions: 1) When smart indent is first turned on for a text window
4072 containing code of the language, 2) When a newline is typed and smart indent
4073 is expected, 3) after any character is typed. To attach macro code to any of
4074 these code "hooks", enter it in the appropriate section in the Preferences
4075 -> Default Settings -> Auto Indent -> Program Smart Indent dialog.
4077 Typically most of the code should go in the initialization section, because
4078 that is the appropriate place for subroutine definitions, and smart indent
4079 macros are complicated enough that you are not likely to want to write them
4080 as one monolithic run of code. You may also put code in the Common/Shared
4081 Initialization section (accessible through the button in the upper left
4082 corner of the dialog). Unfortunately, since the C/C++ macros also reside in
4083 the common/shared section, when you add code there, you run some risk of
4084 missing out on future upgrades to these macros, because your changes will
4085 override the built-in defaults.
4087 The newline macro is invoked after the user types a newline, but before the
4088 newline is entered in the buffer. It takes a single argument ($1) which is
4089 the position at which the newline will be inserted. It must return the
4090 number of characters of indentation the line should have, or -1. A return
4091 value of -1 means to do a standard auto-indent. You must supply a newline
4092 macro, but the code: "return -1" (auto-indent), or "return 0" (no indent) is
4095 The type-in macro takes two arguments. $1 is the insert position, and $2 is
4096 the character just inserted, and does not return a value. You can do just
4097 about anything here, but keep in mind that this macro is executed for every
4098 keystroke typed, so if you try to get too fancy, you may degrade
4105 nedit [-read] [-create] [-line n | +n] [-server]
4106 [-do command] [-tags file] [-tabs n] [-wrap]
4107 [-nowrap] [-autowrap] [-autoindent] [-noautoindent]
4108 [-autosave] [-noautosave] [-rows n] [-columns n]
4109 [-font font] [-lm languagemode] [-geometry geometry]
4110 [-iconic] [-noiconic] [-display [host]:server[.screen]
4111 [-xrm resourcestring] [-svrname name] [-import file]
4112 [-background color] [-foreground color] [-V|-version]
4116 Open the file Read Only regardless of the actual file protection.
4119 Don't warn about file creation when a file doesn't exist.
4125 Designate this session as an NEdit server, for processing commands from the
4126 nc program. nc can be used to interface NEdit to code development
4127 environments, mailers, etc., or just as a quick way to open files from the
4128 shell command line without starting a new NEdit session.
4131 Execute an NEdit macro or action. On each file following the -do argument on
4132 the command line. -do is particularly useful from the nc program, where nc
4133 -do can remotely execute commands in an NEdit -server session.
4136 Load a file of directions for finding definitions of program subroutines and
4137 data objects. The file must be of the format gen- erated by Exuberant Ctags,
4138 or the standard Unix ctags command.
4141 Set tab stops every n characters.
4144 Wrap long lines at the right edge of the window rather than continuing them
4145 past it. (Continuous Wrap mode)
4147 -autowrap, -noautowrap
4148 Wrap long lines when the cursor reaches the right edge of the window by
4149 inserting newlines at word boundaries. (Auto Newline Wrap mode)
4151 -autoindent, -noautoindent
4152 Maintain a running indent.
4154 -autosave, -noautosave
4155 Maintain a backup copy of the file being edited under the name '~filename'.
4158 Default height in characters for an editing window.
4161 Default width in characters for an editing window.
4163 -font font (or -fn font)
4164 Font for text being edited (Font for menus and dialogs can be set with -xrm
4168 Initial language mode used for editing succeeding files.
4170 -geometry geometry (or -g geometry)
4171 The initial size and/or location of editor windows. The argument geometry
4174 [<width>x<height>][+|-][<xoffset>[+|-]<yoffset>]
4176 where <width> and <height> are the desired width and height of the window,
4177 and <xoffset> and <yoffset> are the distance from the edge of the screen to
4178 the window, + for top or left, - for bottom or right. -geometry can be
4179 specified for individual files on the command line.
4182 Initial window state for succeeding files.
4184 -display [host]:server[.screen]
4185 The name of the X server to use. host specifies the machine, server
4186 specifies the display server number, and screen specifies the screen number.
4187 host or screen can be omitted and default to the local machine, and screen
4190 -background color (or -bg color)
4191 Background color. (background color for text can be set separately with -xrm
4192 "nedit*text.background: color").
4194 -foreground color (or -fg color)
4195 Foreground color. (foreground color for text can be set separately with -xrm
4196 "nedit*text.foreground: color").
4199 Set the value of an X resource to override a default value (see "Customizing
4203 When starting NEdit in server mode, name the server, such that it responds
4204 to requests only when nc is given a corresponding -svrname argument. By
4205 naming servers, you can run several simultaneously, and direct files and
4206 commands specifically to any one.
4209 Loads an additional preferences file on top of the existing defaults saved
4210 in your preferences file. To incorporate macros, language modes, and
4211 highlight patterns and styles written by other users, run NEdit with -import
4212 <file>, then re-save your preference file with Preferences -> Save Defaults.
4215 Prints out the NEdit version information. The -V option is synonymous.
4218 Treats all subsequent arguments as file names, even if they start with a
4219 dash. This is so NEdit can access files that begin with the dash character.
4226 NEdit can be operated on its own, or as a two-part client/server
4227 application. Client/server mode is useful for integrating NEdit with
4228 software development environments, mailers, and other programs; or just as a
4229 quick way to open files from the shell command line without starting a new
4232 To run NEdit in server mode, type:
4236 NEdit can also be started in server mode via the Nedit Client (nc) program
4237 when no servers are available.
4239 The nc program, which is distributed along with NEdit, sends commands to an
4240 nedit server to open files, select lines, or execute editor actions. It
4241 accepts a limited set of the nedit command line options: -read, -create,
4242 -line (or +n), -do, and a list of file names. Listing a file on the nc
4243 command line means, open it if it is not already open and bring the window
4244 to the front. -read and -create affect only newly opened files, but -line
4245 and -do can also be used on files which are already open (See "NEdit Command
4246 Line" for more information).
4248 In typical Unix style, arguments affect the files which follow them on the
4249 command line, for example:
4251 incorrect: nc file.c -line 25
4252 correct: nc -line 25 file.c
4254 -read, -create, and -line affect all of the files which follow them on the
4255 command line. The -do macro is executed only once, on the next file on the
4256 line. -do without a file following it on the command line, executes the
4257 macro on the first available window (presumably when you give a -do command
4258 without a corresponding file or window, you intend it to do something
4259 independent of the window in which it happens to execute).
4261 nc also accepts one command line option of its own, -noask (or -ask), which
4262 instructs it whether to automatically start a server if one is not
4263 available. This is also settable via the X resource, nc.autoStart (See "X
4264 Resources" section).
4266 Sometimes it is useful to have more than one NEdit server running, for
4267 example to keep mail and programming work separate. The option, -svrname, to
4268 both nedit and nc, allows you to start, and communicate with, separate named
4269 servers. A named server responds only to requests with the corresponding
4270 -svrname argument. If you use ClearCase and are within a ClearCase view, the
4271 server name will default to the name of the view (based on the value of the
4272 CLEARCASE_ROOT environment variable).
4274 Communication between nc and nedit is through the X display. So as long as X
4275 windows is set up and working properly, nc will work properly as well. nc
4276 uses the DISPLAY environment variable, the machine name and your user name
4277 to find the appropriate server, meaning, if you have several machines
4278 sharing a common file system, nc will not be able to find a server that is
4279 running on a machine with a different host name, even though it may be
4280 perfectly appropriate for editing a given file.
4282 The command which nc uses to start an nedit server is settable via the X
4283 resource nc.serverCommand, by default, "nedit -server".
4289 If a system crash, network failure, X server crash, or program error should
4290 happen while you are editing a file, you can still recover most of your
4291 work. NEdit maintains a backup file which it updates periodically (every 8
4292 editing operations or 80 characters typed). This file has the same name as
4293 the file that you are editing, but with the character `~' (tilde) on Unix or
4294 `_' (underscore) on VMS prefixed to the name. To recover a file after a
4295 crash, simply rename the file to remove the tilde or underscore character,
4296 replacing the older version of the file. (Because several of the Unix shells
4297 consider the tilde to be a special character, you may have to prefix the
4298 character with a `\' (backslash) when you move or delete an NEdit backup
4301 Example, to recover the file called "help.c" on Unix type the command:
4305 A minor caveat, is that if the file you were editing was in MS DOS format,
4306 the backup file will be in Unix format, and you will need to open the backup
4307 file in NEdit and change the file format back to MS DOS via the Save As...
4308 dialog (or use the Unix unix2dos command outside of NEdit).
4314 NEdit release of Aug 31, 2002
4317 NEdit was written by Mark Edel, Joy Kyriakopulos, Christopher Conrad, Jim
4318 Clark, Arnulfo Zepeda-Navratil, Suresh Ravoor, Tony Balinski, Max Vohlken,
4319 Yunliang Yu, Donna Reid, Arne Førlie, Eddy De Greef, Steve LoBasso,
4320 Alexander Mai, Scott Tringali, Thorsten Haude, and Steve Haehn.
4322 The regular expression matching routines used in NEdit are adapted (with
4323 permission) from original code written by Henry Spencer at the University of
4326 Syntax highlighting patterns and smart indent macros were contributed by:
4327 Simon T. MacDonald, Maurice Leysens, Matt Majka, Alfred Smeenk, Alain
4328 Fargues, Christopher Conrad, Scott Markinson, Konrad Bernloehr, Ivan Herman,
4329 Patrice Venant, Christian Denat, Philippe Couton, Max Vohlken, Markus
4330 Schwarzenberg, Himanshu Gohel, Steven C. Kapp, Michael Turomsha, John
4331 Fieber, Chris Ross, Nathaniel Gray, Joachim Lous, Mike Duigou, Seak
4332 Teng-Fong, Joor Loohuis, Mark Jones, and Niek van den Berg.
4334 NEdit sources, executables, additional documentation, and contributed
4335 software are available from the NEdit web site at http://www.nedit.org.
4337 This program is free software; you can redistribute it and/or modify it
4338 under the terms of the GNU General Public License as published by the Free
4339 Software Foundation; either version 2 of the License, or (at your option)
4342 This program is distributed in the hope that it will be useful, but WITHOUT
4343 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
4344 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License in the
4345 Help section "Distribution Policy" for more details.
4351 GNU GENERAL PUBLIC LICENSE
4353 Version 2, June 1991
4355 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave,
4356 Cambridge, MA 02139, USA. Everyone is permitted to copy and distribute
4357 verbatim copies of this license document, but changing it is not allowed.
4361 The licenses for most software are designed to take away your freedom to
4362 share and change it. By contrast, the GNU General Public License is intended
4363 to guarantee your freedom to share and change free software--to make sure
4364 the software is free for all its users. This General Public License applies
4365 to most of the Free Software Foundation's software and to any other program
4366 whose authors commit to using it. (Some other Free Software Foundation
4367 software is covered by the GNU Library General Public License instead.) You
4368 can apply it to your programs, too.
4370 When we speak of free software, we are referring to freedom, not price. Our
4371 General Public Licenses are designed to make sure that you have the freedom
4372 to distribute copies of free software (and charge for this service if you
4373 wish), that you receive source code or can get it if you want it, that you
4374 can change the software or use pieces of it in new free programs; and that
4375 you know you can do these things.
4377 To protect your rights, we need to make restrictions that forbid anyone to
4378 deny you these rights or to ask you to surrender the rights. These
4379 restrictions translate to certain responsibilities for you if you distribute
4380 copies of the software, or if you modify it.
4382 For example, if you distribute copies of such a program, whether gratis or
4383 for a fee, you must give the recipients all the rights that you have. You
4384 must make sure that they, too, receive or can get the source code. And you
4385 must show them these terms so they know their rights.
4387 We protect your rights with two steps: (1) copyright the software, and (2)
4388 offer you this license which gives you legal permission to copy, distribute
4389 and/or modify the software.
4391 Also, for each author's protection and ours, we want to make certain that
4392 everyone understands that there is no warranty for this free software. If
4393 the software is modified by someone else and passed on, we want its
4394 recipients to know that what they have is not the original, so that any
4395 problems introduced by others will not reflect on the original authors'
4398 Finally, any free program is threatened constantly by software patents. We
4399 wish to avoid the danger that redistributors of a free program will
4400 individually obtain patent licenses, in effect making the program
4401 proprietary. To prevent this, we have made it clear that any patent must be
4402 licensed for everyone's free use or not licensed at all.
4404 The precise terms and conditions for copying, distribution and modification
4407 GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION
4410 0. This License applies to any program or other work which contains a notice
4411 placed by the copyright holder saying it may be distributed under the terms
4412 of this General Public License. The "Program", below, refers to any such
4413 program or work, and a "work based on the Program" means either the Program
4414 or any derivative work under copyright law: that is to say, a work
4415 containing the Program or a portion of it, either verbatim or with
4416 modifications and/or translated into another language. (Hereinafter,
4417 translation is included without limitation in the term "modification".) Each
4418 licensee is addressed as "you".
4420 Activities other than copying, distribution and modification are not covered
4421 by this License; they are outside its scope. The act of running the Program
4422 is not restricted, and the output from the Program is covered only if its
4423 contents constitute a work based on the Program (independent of having been
4424 made by running the Program). Whether that is true depends on what the
4427 1. You may copy and distribute verbatim copies of the Program's source code
4428 as you receive it, in any medium, provided that you conspicuously and
4429 appropriately publish on each copy an appropriate copyright notice and
4430 disclaimer of warranty; keep intact all the notices that refer to this
4431 License and to the absence of any warranty; and give any other recipients of
4432 the Program a copy of this License along with the Program.
4434 You may charge a fee for the physical act of transferring a copy, and you
4435 may at your option offer warranty protection in exchange for a fee.
4437 2. You may modify your copy or copies of the Program or any portion of it,
4438 thus forming a work based on the Program, and copy and distribute such
4439 modifications or work under the terms of Section 1 above, provided that you
4440 also meet all of these conditions:
4442 a) You must cause the modified files to carry prominent notices stating that
4443 you changed the files and the date of any change.
4445 b) You must cause any work that you distribute or publish, that in whole or
4446 in part contains or is derived from the Program or any part thereof, to be
4447 licensed as a whole at no charge to all third parties under the terms of
4450 c) If the modified program normally reads commands interactively when run,
4451 you must cause it, when started running for such interactive use in the most
4452 ordinary way, to print or display an announcement including an appropriate
4453 copyright notice and a notice that there is no warranty (or else, saying
4454 that you provide a warranty) and that users may redistribute the program
4455 under these conditions, and telling the user how to view a copy of this
4456 License. (Exception: if the Program itself is interactive but does not
4457 normally print such an announcement, your work based on the Program is not
4458 required to print an announcement.)
4460 These requirements apply to the modified work as a whole. If identifiable
4461 sections of that work are not derived from the Program, and can be
4462 reasonably considered independent and separate works in themselves, then
4463 this License, and its terms, do not apply to those sections when you
4464 distribute them as separate works. But when you distribute the same sections
4465 as part of a whole which is a work based on the Program, the distribution of
4466 the whole must be on the terms of this License, whose permissions for other
4467 licensees extend to the entire whole, and thus to each and every part
4468 regardless of who wrote it.
4470 Thus, it is not the intent of this section to claim rights or contest your
4471 rights to work written entirely by you; rather, the intent is to exercise
4472 the right to control the distribution of derivative or collective works
4473 based on the Program.
4475 In addition, mere aggregation of another work not based on the Program with
4476 the Program (or with a work based on the Program) on a volume of a storage
4477 or distribution medium does not bring the other work under the scope of this
4480 3. You may copy and distribute the Program (or a work based on it, under
4481 Section 2) in object code or executable form under the terms of Sections 1
4482 and 2 above provided that you also do one of the following:
4484 a) Accompany it with the complete corresponding machine-readable source
4485 code, which must be distributed under the terms of Sections 1 and 2 above on
4486 a medium customarily used for software interchange; or,
4488 b) Accompany it with a written offer, valid for at least three years, to
4489 give any third party, for a charge no more than your cost of physically
4490 performing source distribution, a complete machine-readable copy of the
4491 corresponding source code, to be distributed under the terms of Sections 1
4492 and 2 above on a medium customarily used for software interchange; or,
4494 c) Accompany it with the information you received as to the offer to
4495 distribute corresponding source code. (This alternative is allowed only for
4496 noncommercial distribution and only if you received the program in object
4497 code or executable form with such an offer, in accord with Subsection b
4500 The source code for a work means the preferred form of the work for making
4501 modifications to it. For an executable work, complete source code means all
4502 the source code for all modules it contains, plus any associated interface
4503 definition files, plus the scripts used to control compilation and
4504 installation of the executable. However, as a special exception, the source
4505 code distributed need not include anything that is normally distributed (in
4506 either source or binary form) with the major components (compiler, kernel,
4507 and so on) of the operating system on which the executable runs, unless that
4508 component itself accompanies the executable.
4510 If distribution of executable or object code is made by offering access to
4511 copy from a designated place, then offering equivalent access to copy the
4512 source code from the same place counts as distribution of the source code,
4513 even though third parties are not compelled to copy the source along with
4516 4. You may not copy, modify, sublicense, or distribute the Program except as
4517 expressly provided under this License. Any attempt otherwise to copy,
4518 modify, sublicense or distribute the Program is void, and will automatically
4519 terminate your rights under this License. However, parties who have received
4520 copies, or rights, from you under this License will not have their licenses
4521 terminated so long as such parties remain in full compliance.
4523 5. You are not required to accept this License, since you have not signed
4524 it. However, nothing else grants you permission to modify or distribute the
4525 Program or its derivative works. These actions are prohibited by law if you
4526 do not accept this License. Therefore, by modifying or distributing the
4527 Program (or any work based on the Program), you indicate your acceptance of
4528 this License to do so, and all its terms and conditions for copying,
4529 distributing or modifying the Program or works based on it.
4531 6. Each time you redistribute the Program (or any work based on the
4532 Program), the recipient automatically receives a license from the original
4533 licensor to copy, distribute or modify the Program subject to these terms
4534 and conditions. You may not impose any further restrictions on the
4535 recipients' exercise of the rights granted herein. You are not responsible
4536 for enforcing compliance by third parties to this License.
4538 7. If, as a consequence of a court judgment or allegation of patent
4539 infringement or for any other reason (not limited to patent issues),
4540 conditions are imposed on you (whether by court order, agreement or
4541 otherwise) that contradict the conditions of this License, they do not
4542 excuse you from the conditions of this License. If you cannot distribute so
4543 as to satisfy simultaneously your obligations under this License and any
4544 other pertinent obligations, then as a consequence you may not distribute
4545 the Program at all. For example, if a patent license would not permit
4546 royalty-free redistribution of the Program by all those who receive copies
4547 directly or indirectly through you, then the only way you could satisfy both
4548 it and this License would be to refrain entirely from distribution of the
4551 If any portion of this section is held invalid or unenforceable under any
4552 particular circumstance, the balance of the section is intended to apply and
4553 the section as a whole is intended to apply in other circumstances.
4555 It is not the purpose of this section to induce you to infringe any patents
4556 or other property right claims or to contest validity of any such claims;
4557 this section has the sole purpose of protecting the integrity of the free
4558 software distribution system, which is implemented by public license
4559 practices. Many people have made generous contributions to the wide range of
4560 software distributed through that system in reliance on consistent
4561 application of that system; it is up to the author/donor to decide if he or
4562 she is willing to distribute software through any other system and a
4563 licensee cannot impose that choice.
4565 This section is intended to make thoroughly clear what is believed to be a
4566 consequence of the rest of this License.
4568 8. If the distribution and/or use of the Program is restricted in certain
4569 countries either by patents or by copyrighted interfaces, the original
4570 copyright holder who places the Program under this License may add an
4571 explicit geographical distribution limitation excluding those countries, so
4572 that distribution is permitted only in or among countries not thus excluded.
4573 In such case, this License incorporates the limitation as if written in the
4574 body of this License.
4576 9. The Free Software Foundation may publish revised and/or new versions of
4577 the General Public License from time to time. Such new versions will be
4578 similar in spirit to the present version, but may differ in detail to
4579 address new problems or concerns.
4581 Each version is given a distinguishing version number. If the Program
4582 specifies a version number of this License which applies to it and "any
4583 later version", you have the option of following the terms and conditions
4584 either of that version or of any later version published by the Free
4585 Software Foundation. If the Program does not specify a version number of
4586 this License, you may choose any version ever published by the Free Software
4589 10. If you wish to incorporate parts of the Program into other free programs
4590 whose distribution conditions are different, write to the author to ask for
4591 permission. For software which is copyrighted by the Free Software
4592 Foundation, write to the Free Software Foundation; we sometimes make
4593 exceptions for this. Our decision will be guided by the two goals of
4594 preserving the free status of all derivatives of our free software and of
4595 promoting the sharing and reuse of software generally.
4599 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR
4600 THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
4601 OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
4602 PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
4603 OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
4604 MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO
4605 THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM
4606 PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
4609 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
4610 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
4611 REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
4612 INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
4613 OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO
4614 LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR
4615 THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
4616 PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
4617 POSSIBILITY OF SUCH DAMAGES.
4619 END OF TERMS AND CONDITIONS
4625 There are two separate mailing lists for nedit users, and one for
4626 developers. Users may post to the developer mailing list to report defects
4627 and communicate with the nedit developers. Remember that nedit is entirely a
4628 volunteer effort, so please ask questions first to the discussion list, and
4629 do your share to answer other users questions as well.
4633 General discussion, questions and answers among NEdit users and developers.
4637 A low-volume mailing list for announcing new versions.
4641 Communication among and with NEdit developers. Developers should also
4642 subscribe to the discuss list.
4644 To subscribe, send mail to <majordomo@nedit.org> with one or more of the
4645 following in the body of the message:
4656 SOLUTIONS TO COMMON PROBLEMS
4658 For a much more comprehensive list of common problems and solutions, see the
4659 NEdit FAQ. The latest version of the FAQ can always be found on the NEdit
4662 http://www.nedit.org.
4664 P: No files are shown in the "Files" list in the Open... dialog.
4666 S: When you use the "Filter" field, include the file specification or a
4667 complete directory specification, including the trailing "/" on Unix. (See
4668 Help in the Open... dialog).
4670 P: Find Again and Replace Again don't continue in the same direction as the
4671 original Find or Replace.
4673 S: Find Again and Replace Again don't use the direction of the original
4674 search. The Shift key controls the direction: Ctrl+G means forward,
4675 Shift+Ctrl+G means backward.
4677 P: Preferences specified in the Preferences menu don't seem to get saved
4678 when I select Save Defaults.
4680 S: NEdit has two kinds of preferences: 1) per-window preferences, in the
4681 Preferences menu, and 2) default settings for preferences in newly created
4682 windows, in the Default Settings sub-menu of the Preferences menu.
4683 Per-window preferences are not saved by Save Defaults, only Default
4686 P: Columns and indentation don't line up.
4688 S: NEdit is using a proportional width font. Set the font to a fixed style
4689 (see Preferences menu).
4691 P: NEdit performs poorly on very large files.
4693 S: Turn off Incremental Backup. With Incremental Backup on, NEdit
4694 periodically writes a full copy of the file to disk.
4696 P: Commands added to the Shell Commands menu (Unix only) don't output
4697 anything until they are finished executing.
4699 S: If the command output is directed to a dialog, or the input is from a
4700 selection, output is collected together and held until the command
4701 completes. De-select both of the options and the output will be shown
4702 incrementally as the command executes.
4704 P: Dialogs don't automatically get keyboard focus when they pop up.
4706 S: Most X Window managers allow you to choose between two categories of
4707 keyboard focus models: pointer focus, and explicit focus. Pointer focus
4708 means that as you move the mouse around the screen, the window under the
4709 mouse automatically gets the keyboard focus. NEdit users who use this focus
4710 model should set "Popups Under Pointer" in the Default Settings sub menu of
4711 the preferences menu in NEdit. Users with the explicit focus model, in some
4712 cases, may have problems with certain dialogs, such as Find and Replace. In
4713 MWM this is caused by the mwm resource startupKeyFocus being set to False
4714 (generally a bad choice for explicit focus users). NCDwm users should use
4715 the focus model "click" instead of "explicit", again, unless you have set it
4716 that way to correct specific problems, this is the appropriate setting for
4717 most explicit focus users.
4719 P: The Backspace key doesn't work, or deletes forward rather than backward.
4721 S: While this is an X/Motif binding problem, and should be solved outside of
4722 NEdit in the Motif virtual binding layer (or possibly xmodmap or
4723 translations), NEdit provides an out. If you set the resource:
4724 nedit.remapDeleteKey to True, NEdit will forcibly map the delete key to
4725 backspace. The default setting of this resource recently changed, so users
4726 who have been depending on this remapping will now have to set it explicitly
4727 (or fix their bindings).
4729 P: NEdit crashes when I try to paste text in to a text field in a dialog
4730 (like Find or Replace) on my SunOS system.
4732 S: On many SunOS systems, you have to set up an nls directory before various
4733 inter-client communication features of Motif will function properly. There
4734 are instructions in README.sun in /pub/v5_0_2/individual/README.sun on
4735 ftp.nedit.org, as well as a tar file containing a complete nls directory:
4736 ftp://ftp.nedit.org/pub/v5_0_2/nls.tar. README.sun contains directions for
4737 setting up an nls directory, which is required by Motif for handling copy
4738 and paste to Motif text fields.
4743 Below is the list of known defects which affect NEdit. The defects your copy
4744 of NEdit will exhibit depend on which system you are running and with which
4745 Motif libraries it was built. Note that there are now Motif 1.2 and/or 2.0
4746 libraries available on ALL supported platforms, and as you can see below
4747 there are far fewer defects in Motif 1.2, so it is in your best interest to
4748 upgrade your system.
4754 Operations between rectangular selections on overlapping lines do nothing.
4757 None. These operations are very complicated and rarely used.
4760 Cut and Paste menu items fail, or possibly crash, for very large
4761 (multi-megabyte) selections.
4764 Use selection copy (middle mouse button click) for transferring larger
4765 quantities of data. Cut and Paste save the copied text in server memory,
4766 which is usually limited.
4771 Submit bugs through the web at:
4773 http://sf.net/tracker/?func=add&group_id=11005&atid=111005
4775 Please include the first few lines from Help > Version, which identifes
4776 NEdit's version and other system attributes important for diagnosing your
4779 The NEdit developers subscribe to both discuss@nedit.org and
4780 develop@nedit.org, either of which may be used for reporting defects. If
4781 you're not sure, or you think the report might be of interest to the general
4782 NEdit user community, send the report to discuss@nedit.org. If it's
4783 something obvious and boring, like we misspelled "anemometer" in the on-line
4784 help, send it to develop@nedit.org. If you don't want to subscribe to the
4785 Mailing Lists, please add a note to your mail about cc'ing you on responses.