# NEdit Frequently Asked Questions

2001/10/01
Florian Xhumari
Florian.Xhumari@free.fr NEdit FAQ

NEdit is a popular GUI-style text editor for Unix and VMS systems. These are answers to the most frequently asked questions to discuss@nedit.org. This information is also available from:

> ftp://ftp.nedit.org/pub/<current>/FAQ,

and from the NEdit web page at:

> http://nedit.org.

The FAQ is available for download in a variety of formats.

- HTML pages: faq.tar.gz or faq.zip.
- Plain text: faq.txt.
- XML source: faq.xml as well as its DTD faq.dtd.

# About the NEdit FAQ

This FAQ is written in XML and translated to HTML using an XSL stylesheet. The XML source is processed using James Clark's XSLT processor XT and XML parser XP.

The XSL stylesheet used to generate the HTML version is here.

The text version is generated in three steps: first, an XSL stylesheet is used to generate a simple HTML. Then, a second XSL stylesheet transforms the HTML into plain text. An awk script then performs the word wrapping.

For any questions about or contributions to the FAQ, please send a mail to the maintainers.

# Where to get information

Where can I get information about NEdit?

The NEdit web page is at:

> http://nedit.org

and it is mirrored in Australia at:

> http://www.au.nedit.org/

The primary ftp site for NEdit is:

> ftp://ftp.nedit.org/pub

which has a mirror in The Netherlands:

> ftp://ftp.nl.nedit.org/pub/mirror/NEdit

The NEdit ftp site has executables for most Unix and VMS systems, sources, documentation, and contributed software.

The first and easiest place to look for help with NEdit is the NEdit Help menu. The bottom item in the menu (Problems/Bugs) has answers to the most commonly asked questions about NEdit, which are not duplicated here. Also check the platform specific information in the README file packaged in the NEdit distribution kits.

If you have a problem that you really can't figure out, send mail to discuss@nedit.org, and see if anyone else might be having the same trouble. The nedit developers also subscribe to this list, and hopefully someone will be able to answer your question. If you are a Silicon Graphics user and NEdit came bundled on your system, you can also contact SGI's technical support.

Are there any mailing lists for NEdit users?

There are two separate mailing lists for nedit users, and one for developers. Users may post to the developer mailing list to report bugs and communicate with the nedit developers.

The lists are:

- discuss@nedit.org: general discussion, questions and answers among nedit users and developers.
- develop@nedit.org: communication among and with nedit developers. Developers should also subscribe to the discuss list.
- announce@nedit.org: a low-volume mailing list for announcing new versions.

Please note that only subscribers can send mail to the list.

The nedit developers subscribe to both discuss@nedit.org and develop@nedit.org, either of which may be used for reporting bugs. If you're not sure, or you think the report might be of interest to the general nedit user community, send the report to discuss@nedit.org. If it's something obvious and boring, like we misspelled "anemometer" in the on-line help, send it to develop@nedit.org.

Please do not cross post to both lists!

In order to subscribe to a list, send mail to majordomo@nedit.org with one or more of the following in the body of the message:

        subscribe announce
        subscribe discuss
        subscribe develop

To unsubscribe do the same with the keyword unsubscribe.

        unsubscribe announce
        unsubscribe discuss
        unsubscribe develop

After subscribing, you will receive copies of all of the email submitted to the lists. You may submit mail to the discussion list by sending it to the appropriate list: discuss@nedit.org, develop@nedit.org or announce@nedit.org.

The archives of the old mailing lists (nedit_discuss@fnal_gov and nedit_announce@fnal.gov) can be found on egroups.com:

> - http://www.egroups.com/group/nedit_discuss/
> - http://www.egroups.com/group/nedit_announce/

For more information about the mailing lists, refer to the mailing lists section in the NEdit site.

Where can I get binaries / executables for machines other than those available at NEdit site?

In past versions, we separated "supported" and "unsupported" executables and divided them between the binary and contrib directories. With more supported systems, you're less likely to find executables in the contrib directory, but it's worth a peek, anyhow. If you can't find anything appropriate, you can try asking in a usenet news group appropriate to your system. Other places to try are, the discuss@nedit.org mailing list, or news:comp.windows.x.apps or news:comp.editors.

What can I contribute?

If you use and enjoy NEdit, and feel like giving something back to the NEdit user community, contact develop@nedit.org. If you have ported NEdit to a new machine, written a useful set of macros, or would like to contribute to an ongoing development project, we'd love to hear from you.

# Diagnosing and reporting problems

How do I report problems I've encountered using NEdit ?

If you have a problem which is not covered in the on-line help, in this FAQ, or in the README file specific to your system, you can report it to discuss@nedit.org (usage questions) or, develop@nedit.org (error reports). Note that these lists only allow members to post, and if you are not a member, your post will probably de delayed in reaching the list. Alternatively you can use the bug tracker on Sourceforge (http://sourceforge.net/projects/nedit/) to report bugs and make feature requests. Below are some suggestions for information you can provide to help in diagnosing your problem.

Because NEdit runs on a large number of different platforms and environments, many problems are platform-specific. It's always helpful to know what kind of system it's being run on. Sometimes, strange behavior can also be traced to the X server software or window manager, so you may want to include information on these as well.

The origin of the NEdit executable is often important, particularly, whether it came from the NEdit site (http://www.nedit.org), was built locally, or came from some other ftp server or freeware distribution CD. Despite the fact that Motif appears on almost all Unix platforms, the Motif libraries still vary from one machine to another. Be sure to mention whether you're using Lesstif or Motif. As of version 5.2 a summary with build information is present under 'Version' in the Help menu.

If you are having configuration or appearance problems, you should probably look at the output from the command:

       appres NEdit nedit

The `appres` command will show you the resources that NEdit actually sees when it runs, including "stray" resources intended for other programs but not properly qualified by the program name. It will also give you a final objective check as to whether resource settings that you have made are actually readable by NEdit.

# Building

When I build NEdit on my SunOS system, I get undefined symbols: _memmove, _atexit, _strerror.

When I build NEdit on my SunOS system, I get the fillowing undefined symbols:

    ld: Undefined symbol
       _memmove
       _atexit
       _strerror
    *** Error code 1
    make: Fatal error: Command failed for target `nedit'

Older versions of the gcc C runtime library were missing these functions. You can either upgrade gcc, or get sources for these functions from ftp://ftp.nedit.org/pub/contrib/misc (which someone else with your very same problem kindly contributed).

I'd like to build NEdit, but my system seems to be missing the Xm... include files and libXm.a

Xm means Motif, which is an important part of NEdit's GUI interface. Motif is standard on commercial Unix workstations, but not on free Unix platforms like Linux and FreeBSD. On these systems, you can now use LessTif, the GPL clone of Motif, or purchase a copy of Motif, which is usually relatively inexpensive, but not free. You can find a list of companies selling Motif for Linux at:

> http://www.cen.com/mw3/#providers

As of this writing LessTif is very close to being a fully reliable and complete replacement for Motif, so it's definitely worth trying before shelling out any money for a commercial copy. Also remember that in most cases, you don't really need Motif libraries to use NEdit. There are plenty of versions available pre-built with the Motif libraries linked in statically. If you can't find one for your system, ask around, and you may find that someone else has already built one for you. Motif licensing allows free distribution of statically linked binaries. Executables for NEdit are available from ftp://ftp.nedit.org/pub/<current-version>/executables.

When I build NEdit, I get the yacc error: conflicts: 36 shift/reduce

When I build NEdit, I get the yacc error:

      conflicts: 36 shift/reduce

That's normal. NEdit's macro language has a very conflicted grammar, but the conflicts all resolve themselves correctly. The conflicts stem from allowing awk-style no-operator concatenation of strings.

I built NEdit on my Linux system, and it's full of bugs. What a horrible editor!

Several of the Linux distributions began including LessTif (a free version of the Motif GUI library) before it was really ready for general use (particularly for something which needs to be as reliable as a text editor). If you have a version of Lesstif prior to 0.92.26, you have to upgrade it, before it will support NEdit reliably. To get the newest version, go to http://lesstif.org. Alternatively, you can get pre-built, statically linked, executables from ftp://ftp.nedit.org/pub/<current-version>/executables.

Thorsten Haude
While compiling NEdit on Linux, I get a warning about `tmpnam` being dangerous.

While compiling NEdit on Linux, I get the following warning:

        file.o: In function `PrintString':
        file.o(.text+0x17b7): the use of `tmpnam' is dangerous, better use `mkstemp'

Is NEdit insecure?

Not if you are using the glibc. The algorithm of mkstemp(3) consists of two parts: the first part is the one used in tmpnam(3) -- this is what NEdit accomplishes by calling tmpnam(3); the second part is done directly in NEdit.

Joor Loohuis
NEdit fails to build on Linux, with messages about `XpGetDocumentData'

NEdit fails to build on Linux, with messages

       undefined reference to `XpGetDocumentData'
       undefined reference to `XpGetPageDimensions'
       ...

Edit makefiles/Makefile.Linux, and add '-lXp' to the line starting with 'LIB', right before '-lXext'. At this time we are not sure whether libXp (the X print library) is installed on all Linux systems.

# Customization

I can't get the delete key to remap to a forward delete

I can't get the delete key to remap to a forward delete. I have re-bound it in my .Xdefaults file, and that doesn't help.

In your .Xdefaults file, add:

> nedit.remapDeleteKey: False

This is now the default, so you likely have an old resource file sitting around somewhere with this setting. When remapDeleteKey is True), NEdit forcibly maps the delete to backspace. This can be used when the X server and the client machine have different expectations about whether the key in the backspace position on the keyboard is a backspace key or a delete key. It also saves users in very heterogeneous environments from having to re-map keys on nearly every system they use just to be able to backspace.

My X resource settings don't work.

It's harder to explain how to specify X resources than you might expect, since how they are set is often configured by your local system manager. They are either automatically attached to the server (your screen) by an X startup or login script, or they are left unspecified, and read from the .Xdefaults file whenever you run an X application. If they are attached to the server, you should find out the "normal" method for setting them on your system. If it's not the .Xdefaults file, then it is usually a file called .Xresources (also in your home directory). To make a change, you have to either run xrdb, or re-invoke the startup script that originally attached them, usually by exiting and re-starting X, or logging out and back in to your X session.

Since setting resources is tricky, it's usually better to start with something simple, like:

> nedit*foreground:green

Then, once you have that working, try the more subtle or difficult ones. You can also use the appres command to find out what resources nedit actually sees (`appres NEdit nedit`).

I am setting some X defaults in my $HOME/.nedit file but some of them don't work.

The .nedit file holds the NEdit Preferences menu options and is automatically overwritten whenever you select "Save Defaults". You really shouldn't put X resource settings there. Also, as you may have discovered, resources other than Preferences resources don't always work from there.

How you set X resources depends on local system conventions. You usually put them in the .Xdefaults or .Xresources file in your home directory. You may also need to run xrdb to install them in the server. It depends on how your local system has been configured, so it's best to talk to the person who configured your system. If you're not sure whether your resources are set up correctly, the command:

        appres NEdit nedit

will tell you what settings NEdit will see when it runs.

If I install an "app-defaults" file for NEdit (empty too), all default shortcuts are reset

If I install an "app-defaults" file for NEdit (empty too), all default shortcuts are reset (only "Alt+B" and "Alt+Z" works). Without that file all works fine. Now, how can I customize nedit with this problem ? Or, how can I get a copy of all default shortcuts to add on my NEdit "app-defaults" file ?

NEdit uses the X fallback resources mechanism to provide default values for user-settable resources. When you provide a system-wide app- defaults file, it overrides the entire contents of the fallback resources, meaning all of the program defaults are lost, except for those which are also represented in the app-defaults file. To use an app-defaults file, therefore, you need to start from a complete one which provides all of the necessary default values. There is a complete app-defaults file in:

> ftp://ftp.nedit.org/pub/contrib/misc/nedit.app-defaults

We strongly discourage users from using system-wide app-defaults because once you install the file, you have to keep it up to date with every new release of the software. If you don't update it, users might not even notice the difference, but things will be increasingly wrong with each new release.

Where can I get the complete list of nedit resources?

The way X is designed, there are a LOT of user settable resources in NEdit, most of them quite useless. You can see them all using the editres tool, which is available on most Unix systems. A more useful subset are the application default resources, which you can look at either in the source code (near the beginning of nedit.c, in the variable called fallbackResources) or in the app-defaults file in:

> ftp://ftp.nedit.org/pub/contrib/misc/nedit.app-defaults

Can I use `ispell` with NEdit instead of the less capable Unix `spell` command?

`ispell` is actually the default spell checker for NEdit on Linux systems where `spell` is not available. On other systems, enter the following in the Shell Commands dialog:

      Command Input: Either
      Command Output: Same Window
      Output Replaces Input: ON
      Shell Command: cat>spellTmp; xterm -e ispell -x spellTmp; cat spellTmp; rm spellTmp

If you want to get fancy, the following puts the temporary file in the /tmp directory, and uses $$ (the process ID of the shell) in the file name so you don't have to worry about clashes between simultaneous ispell sessions:

      cat > /tmp/ispell.$$; xterm -title "Spell Check" -e
      ispell -S /tmp/ispell.$$; cat /tmp/ispell.$$; rm /tmp/ispell.$$

How can the display of hidden (eg .login) files in dialog boxes be suppressed

How can the display of hidden (eg .login) files in dialog boxes be suppressed? We use nedit with for teaching programming with very naive and inexperienced students. The display of these in dialogs such as the "Save as..." one encourages them to screw up important login stuff, state files etc.

It depends on the system you are running how easy this is to do. Under Motif 2.0, which I think is still only found on Linux and Free-BSD systems, it's a simple resource setting:

> nedit*XmFileSelectionBox.fileFilterStyle: FILTER_HIDDEN_FILES

On other systems, unfortunately, it's a rather difficult source code change, involving creating a replacement file searching procedure to be spliced in to the file selection box widget.

Why, in the 'open file' dialog, there is no text field where to type in the file name?

Most Motif applications allow you to type in the file name in a separate text field (as in the 'open file' dialog). Why doesn't NEdit? Can I make it do that?

Set the X resource nedit.stdOpenDialog to True. The field is disabled by default to get new users accustomed to typing the file name directly in to the list widget, which is not standard Motif behavior.

I would like to change NEdit's cursor from a bar to a block

I would like to change NEdit's cursor from a bar to a block. I seem to lose it sometimes in my text.

The block cursor in NEdit is used to indicate overstrike mode, but you can turn on a resource to make the cursor thicker:

> nedit*text.heavyCursor: true

The only way to get a permanent block cursor, though is to hack the source code. This shouldn't be too difficult, since the code for drawing a block cursor is already there.

I'd like to see more than 8 files in the file selection dialogs (Open, Save As, etc.)

I'd like to see more than 8 files in the file selection dialogs (Open, Save As, Include, etc.). I've tried to set the X-resources like nedit*XmList.visibleItemCount: 20, but this did not work.

The only effective way I've found to control the number of items in the highly temperamental Motif FileSelectionBox widget is through the height resource:

> nedit*FileSelect.height: 900

The X resource line above will make the file selection box 900 pixels tall.

I am trying to do key bindings such that, for example, Find is Alt+F rather than Ctrl+F, but this clashes with the find menu mnemonic

I am trying to do key bindings such that, for example, Find is Alt+F rather than Ctrl+F. However, this clashes with the find menu mnemonic. I realize that the menu mnemonics can be changed to any letter, but they are always bound to Alt-letter. I would like to just remove all menu mneumonics. Is there any way to do this in an .Xdefaults file?

You can turn mnemonics off by setting them to the ascii null character, for example:

> nedit*fileMenu.mnemonic: \0

I have a PC-style 2-button mouse and I would like to switch the 2nd and 3rd (emulated) mouse buttons

I have a PC-style 2-button mouse. Can I switch the 2nd and 3rd mouse buttons so the more important functions like secondary selection are on the right button instead of the middle (which is emulated by pressing 1+3 buttons simultaneously under Linux), like they were in version 4?

It's somewhat involved and hard to figure out from the documentation, but yes you can. You have to reverse the translation table bindings for mouse buttons 2 and 3, AND reset the bgMenuButton resource. The translation table bindings can either be found in the source file source/text.c, or by adding and activating a temporary translation to the text widget for dumping the translation table itself (XtDisplayTranslations()).

What it boils down to, though, is just add the following lines to your X resource file (.Xdefaults or .Xresources depending on your system):

      NEdit*text.Translations: #override \n\
         <Btn3Down>: secondary_or_drag_start()\n\
         Shift Ctrl Button3<MotionNotify>: \
             secondary_or_drag_adjust("rect", "copy", "overlay")\n\
         Shift Button3<MotionNotify>: secondary_or_drag_adjust("copy")\n\
         Ctrl Button3<MotionNotify>: secondary_or_drag_adjust("rect", "overlay")\n\
         Button3<MotionNotify>: secondary_or_drag_adjust()\n\
         Shift Ctrl<Btn3Up>: move_to_or_end_drag("copy", "overlay")\n\
         Shift <Btn3Up>: move_to_or_end_drag("copy")\n\
         Alt<Btn3Up>: exchange()\n\
         Meta<Btn3Up>: exchange()\n\
         Ctrl<Btn3Up>: copy_to_or_end_drag("overlay")\n\
         <Btn3Up>: copy_to_or_end_drag()\n\
         Ctrl~Meta~Alt<Btn2Down>: mouse_pan()\n\
         Ctrl~Meta~Alt Button2<MotionNotify>: mouse_pan()\n\
         <Btn2Up>: end_drag()
      nedit.bgMenuButton: ~Shift~Ctrl~Meta~Alt<Btn2Down>

How can I make a shell command prompt me for input?

I'd like to send mail directly from my nedit window, but there's no good way to make a shell command prompt me for input (for entering the recipient and subject).

Use a macro command instead to do the prompting:

      to = string_dialog("Send mail to: (enter name below, along with any\n" \
          "additional Unix Mail command parameters, -s for subject)", \
          "Send", "Cancel")
      if ($string_dialog_button == 2 || $string_dialog_button == 0)
          return
      if ($selection_start == -1)
          body = get_range(0, $text_length)
      else
          body = get_selection()
      cmdOutput = shell_command("Mail " to, body)
      if ($shell_cmd_status != 0)
          dialog("mail command returned failed exit status\n" cmdOutput)
      else if (cmdOutput != "")
          dialog(cmdOutput)

How I can set the foreground color for selected text when syntax highlighting is applied?

How I can set the foreground color for selected text to be always say grey1 even when syntax highlighting is applied?

There's no equivalent to the nedit*text.selectForeground resource when you turn on syntax highlighting. You just have to choose a selection color that is compatible with all of your highlighting colors.

# Features

Why NEdit does not support drag and drop?

I'm a little confused about what happend to drag and drop. I thought drag-N-drop was supported by the Motif library.

NEdit no longer uses the Motif text widget, so all of the functionality had to be duplicated in the new widget. Drag and drop between windows got left off due to time pressure of getting out the new release, but it will be back some day.

Why don't you integrate Max Vohlken's / Yunliang Yu's versions into the official release of NEdit

Many of their changes will eventually find their way in to the "official" version, but some will not. Max has really done quite a lot of stuff. I appreciate it, and I think it's kind of neat to have a "bleeding edge" version of NEdit around to try out new features.

I can't just apply Max's patches to our version and release it. Some of them break the VMS version, some interfere with existing commands that are important to other users, and some are just customizations that I don't particularly agree with. Mostly, I want to do a lot of testing to make sure the changes are safe on all platforms, and I just don't have time right now. (Mark Edel)

Update as of NEdit version 5.2RC1: The forthcoming NEdit version 5.2 contains several functionalities of Max's patches.

Is it possible to use NEdit on windows 95 or NT?

I really like nedit and it would be nice to use on windows 95 or NT instead of word or notepad. Is this possible?

There is an NT version of NEdit, available at http://nedit.org/download/win32.shtml. A mini-FAQ is also available.

Why aren't there pre-entered default values in text fields of dialogs?

A feature which is found in in some Macintosh and PC programs, which I like, is to provide pre-entered default values in text fields. For example, the find and replace dialogs could show the last search/replace string, or the currently selected text. These programs select the text, so simply typing in the field automatically replaces the default without any extra work from the user.

X has a strict convention that there can be only one selection at a time on the whole display. This means that some of the tricks used in PC and Macintosh programs don't work in X. On PCs and Macs, programs can fill in default values in text fields, and select the text that they have inserted such that If the user types over the selection, it will automatically be erased. Under X, there is a price to pay for making an automatic selection. The selection must be "stolen" from some other window, maybe some other program. If the user's intent was to paste a selection that existed before the dialog popped up, once the automatic selection is made, they are out of luck.

If NEdit automatically transferred the selection to the Find or Replace dialog, it would either have to steal the selection, or users would have to click or drag the mouse over the text to delete it before they could type anything different. Instead, NEdit has a "Find Selection" command, as well as various methods of pasting and copying the selection into dialog fields. It also allows you to recall of previous search strings in the Find and Replace dialogs via the up-arrow and down-arrow keys.

I would like to use (multiple fonts, special symbols) in my file, but NEdit seems to allow just one single font.

NEdit is a plain text editor, not a word processor. Plain text files have no font or formatting information contained in them, they are just a string of ascii characters. While you might find a font with limited symbols and greek letters, your troubles would just be beginning. You'd still have trouble getting the printer to agree and print out the characters as they appeared in NEdit. For anything involving font changes or special symbols, you need a word processor, such as Microsoft Word, or a text formatting program like LaTEX.

Auto-wrap doesn't work well

Auto-wrap doesn't work very well. When I type in the middle of a line, I can push the end of the line beyond the right margin, and when I delete, It doesn't keep the right edge of the text lined up.

You probably want continuous wrap mode (Preferences -> Wrap -> Continuous).

Because NEdit is not a word processor, it is stuck with the limits of the plain text format. In the default, auto-newline, wrapping mode, nedit does wrapping by inserting newline characters. Because there is only one newline character, NEdit can't distinguish a newline which can be "unwrapped" from one which the user intended to be permanent. While it might be possible for NEdit to temporarily make that distinction, for example while the cursor is on a particular line that the user is typing, ultimately, NEdit will have to forget this information, because there is no way to save it in the file. Users who work in auto-newline wrap mode tend to make liberal use of the Fill paragraph command.

In continuous wrapping mode, you can intentionally leave out the newlines within paragraphs, and lines will be wrapped as needed to fit within the page. When you edit in the middle of a paragraph, the text will be continuously adjusted. However, continuous wrap mode has it's limitations too. All paragraphs must be lined up against the right margin to take advantage of continuous wrapping, and Unix systems have limited support for files of that format. You may have trouble printing and viewing the files outside of NEdit.

NEdit scrolls too fast when I extend a selection by dragging the mouse outside of the window.

NEdit features proportional auto-scrolling, where the speed is controlled by how far your mouse is beyond the edge of the window. If you want it to scroll slower, bring the mouse back closer to the text.

Is there a special symbol that represents the selected text, usable in shell commands?

Is there a special symbol (as % for filename in the shell commands) that can be used to represent the text that is selected, which can then be used as an argument to a command? For instance, I want to feed the selection to a script so that it can be used as the expression to a 'grep' command. Is there any other way that I can accomplish this goal?

Below is an example from the NEdit discussion list (from David L. Paterline) of a "Find All" command implemented by using the selection as an argument to the grep command:

> I set up a command to list all lines in a file which contain the highlighted selection as follows, using the Preferences -> Shell Commands menu:

>             Menu Entry:           all <selection>
>             Command Input:        selection
>             Command Output:       new window
>             Save file before:     yes
>             Shell Command:        grep -n -- "`cat -`" %

> The `cat -` portion of the command echoes the selected text to the `grep -n` command, which lists the lines containing the selection with line numbers. The output of the command appears in a new window; I can then highlight a line number in the new window and use the Search -> Goto Selected menu in the original window to jump to the line in the original file.

How can I print highlighted text on my printer as it appears in NEdit.

In the current version, that's not possible, but there are external tools for highlighting, which are specifically designed for printing, including a2ps, enscript, and genscript.

# Server mode and nc

I want to use `nc` as an external editor from my mailer, but my mailer doesn't wait for the editor to finish

I use a mailer which can invoke an external editor, but if I use nc, the mailer process continues and assumes the editor has finished, when in fact it hasn't.

nc is actually finished communicating with the NEdit server when it returns. It's possible to create a shell command that invokes nc and then goes to sleep, and a second script to be run from the NEdit Shell menu, which looks for the sleeping process with a matching file name and kills it. Try the shell scripts in:

> ftp://ftp.nedit.org/pub/contrib/misc/nc_and_wait.tar

I started nedit as root, then tried later to edit a file as myself with `nc`; the file was opened in the root's nedit

I started nedit (via `nc`) as root, and then later tried to edit a file as myself with `nc`. I was very suprised to see that a new nedit wasn't started--rather, I was given the old nedit window, with root permissions. Isn't this a security hole?

Actually, NEdit does check who the user is. When you use the su command, however, several Unix variants return the original user name in response to the standard C library calls for getting a user name, rather than the name to which you have su'd. Starting with version 5.1, a different mechanism is used for getting this information, so you shouldn't see this problem any more.

In your case, my guess is that you used su to become root, then started an nedit server as root. On a system which returns the original user name, both the new server and the nc client program think the user name is your original user name, so the server accepts requests from both you as root and you as you.

The security of an nedit session, depends upon the security of your X server. Only those with access to your screen can send commands to an nedit server, but they can also send keystrokes to any nedit, or a shell window, etc... Anyhow, just upgrade to the latest NEdit version.

# Editing techniques

I'd like to select a large expanse of text without dragging all the way through it with the mouse.

Using the shift key with the left mouse button, you can select all of the text between the cursor (or an existing selection) and the mouse.

- Position the cursor at one end of the desired selection
- Use the scroll bar to make the other end visible
- Shift+Click with the left mouse button to select the text between the cursor and the mouse

Alternatively, using only keyboard navigation:

- Position the cursor at one end of the desired selection
- Type Alt-m and a letter to mark the position
- Use the keyboard to go to the other end of the desired selection
- Type Shift-Alt-g and the letter you used to mark the first end of the selection

How can I select the text between two marks?

- Go to the first mark (Goto Mark).
- Hold the shift key while selecting Goto Mark or Alt+Shift+G to select the text.

# Bugs

The keyboard shortcuts (accelerator keys) are not working when 'Caps' or 'Num Lock' are switched on.

The keyboard shortcuts (accelerator keys) are not working when 'Caps' or 'Num Lock' are switched on. Have I overlooked something obvious?

You haven't overlooked anything, it's a Motif design flaw. Netscape painfully works around this and the Alt/Meta key reversal on Sun workstations by internally re-implementing the Motif menu accelerator mechanism. NEdit will likely follow suit with the release of version 5.2.

Another possibility (writes Peter Daifuku of SGI):

> There's another answer which unfortunately isn't widespread as yet. For an X11R6.3 X server supporting the XKB extension, there is a mechanism to ignore the NumLock and CapsLock key as modifiers. The file /usr/lib/X11/xkb/X0-config.keyboard should contain the string IgnoreLockMods=NumLock+Lock . For systems with multiple displays, display 1 would be controlled by the file X1-config.keyboard, etc.

> On SGI systems, this mechanism is support on IRIX 6.2 with X server patch 1574 or later, on IRIX 6.3 and IRIX 6.4 and all later releases.

Sometimes NEdit inserts <dc3> instead of saving the file when I type ^S

Sometimes NEdit inserts <dc3> instead of saving the file when I type ^S. Other keyboard shortcuts (accelerator keys) don't work either.

You have probably NumLock or CapsLock ON. See the answer to this question.

Joor Loohuis
I use the numeric keypad really often, so I keep NumLock on. But NEdit shortcuts don't work when NumLock is on.

The bug is not in NEdit, but in Motif. This is fixed as of NEdit 5.2, but that might not help you much. Older versions have the same problem.

Here's how you tell X to interpret the keypad keys as numbers without turning NumLock on. Create a file .Xmodmap in your home directory, and put the following lines in it:

      keycode  79 = KP_7
      keycode  80 = KP_8
      keycode  81 = KP_9
      keycode  83 = KP_4
      keycode  84 = KP_5
      keycode  85 = KP_6
      keycode  87 = KP_1
      keycode  88 = KP_2
      keycode  89 = KP_3
      keycode  90 = KP_0
      keycode  91 = KP_Decimal

Then make sure the script that starts your X session parses this file with the command:

      xmodmap -merge ~/.Xmodmap

This script can be ~/.xinitrc (called by startx) or something like Xsession if you use xdm/kdm/gdm. Then again, it might be an entirely different script on some systems.

Then turn off numlock, and just continue using the keypad. The only thing is, you loose the alternate set of functions (cursor/home/pgdown/etc).

NEdit crashes I try to paste text in to a text field in a dialog (like Find or Replace) on my SunOS system.

On many SunOS systems, you have to set up an nls directory before various inter-client communication features of Motif will function properly. Before NEdit 4.0 this wasn't much of a problem, because users couldn't cut and paste at all, and Motif would sometimes print a warning about not finding an nls directory, so most users figured it out right away. But with 4.0, everything seems to be working fine, except when someone tries to move text in or out of a dialog field, then blamo.

There are instructions in README.sun in ftp://ftp.nedit.org/pub/<current-version<, as well as a tar file containg a complete nls directory: ftp://ftp.nedit.org/pub/<current-version</individual/README.sun

It contains directions for setting up an nls directory, which is required by Motif for handling copy and paste to Motif text fields.

NEdit crashes frequently, particularly on window closing.

There is an obsolete resource in Motif called defaultFontList, which does nothing but cause random crashing. I don't know why NEdit users keep popping up with this resource set, maybe it looks enticing when you look at widget resources with editres. Anyhow, setting it to anything, whether it be a valid font or just garbage, causes random crashing in both Motif 1.2 and 2.0, so just don't set it.

NEdit sometimes crashes when I execute a shell command menu item I just added.

Check the "Command Input" setting, in the Preferences->Shell Commands dialog for that menu item. If the shell command being executed does not take input, but "Command Input" is set to "selection" or "window", NEdit tries to write the input anyhow, and fails. Set "Command Input" to "none" to prevent this possibility. This is fixed in version 5.1 and later.

When NEdit starts up, I get errors like: Cannot allocate colormap entry for "#b3b3b3".

When NEdit starts up, I get errors:

       Cannot allocate colormap entry for "#b3b3b3"
       Cannot allocate colormap entry for "#e5e5e5"

Most X displays are set up to operate in a mode which allocates 8 bits of video memory per-pixel, and requires a color mapping table to translate pixel values to screen colors. With just 8 bits there are only 256 possible colors, and programs must either allocate and share these pixel values, or swap in their own colormap and make all other windows flash to strange colors while their window is focused. Some programs, Netscape in particular, are bad neighbors in this environment and snarf up every free entry in the shared colormap, such that every program that runs after them gets the errors you're asking about.

The solution is either to start Netscape last, after all other applications that you might want to run, or better, tell Netscape how many colors it is allowed to allocate. Fortunately, you can do this with a resource setting:

> Netscape*maxImageColors: 80

Sometimes when I use regular expression replacement inside of a rectangular selection, NEdit fails to match text.

Sometimes when I use regular expression replacement inside of a rectangular selection, NEdit fails to match text which does legally match the expression.

The problem with REs and rectangular selections is that matching is bounded by the rectangular selection, but text outside of the selection is still fed to the matching routines, so ^, $, don't refer to the edges of the selection, they still refer to the beginning and ending of the line, and some legal matches are excluded because they continue outside of the selection are thereby excluded, or are shadowed by matches which begin or end outside of the selection.

When ever I execute a nedit shell command (such as spell or wc) I get extra junk.

When ever I execute an nedit shell command (such as spell or wc) I get (extra junk, error messages, complaints from stty) inserted into my text, or an Information dialog with (extra junk, error messages, complaints from stty).

You probably have printing commands in your shell startup file (.cshrc, or equivalent). These should either be skipped in non-interactive mode, or moved to your .login file. You can often see the problem outside of nedit by typing:

        csh -c ls

Error messages from stty are a result of it being executed from a process which isn't attached to a terminal. You can safely move stty statements and most other interactive commands to your .login file (calling stty from a .cshrc file is redundant because the terminal device doesn't change for each sub-shell). If you can't remove interactive commands, you should skip around them in non-interactive shells, I think the usual method is to put them at the end, preceded by something like:

        if ($?prompt == 0) exit

The manual entry on csh has more information on this.

On a Solaris system, the right part of the 'file open' dialog is too narrow, I can't see the complete file names.

On a Solaris system, when trying to open a file within nedit, you get the listing of available file names. However, the sub-window (on the right) containing the file names (not directory names) sometimes is too narrow so that you can't see the filename part (i.e. /usr/people/rainer/sometextfile.txt shows up as /usr/people/rain or so). When resizing the dialog box, the filenames sub-window on the right doesn't become larger. I know I can use nedit.stdOpenDialog to type a filename, but that's annoying.

It's a bug in the shared Motif library. Depending on your system, the patch is one of ID# 103461-07, # 102226-19, or # 103186-21. If you can't patch your system, you can set the resource:

        nedit*XmFileSelectionBox.pathMode:  XmPATH_MODE_RELATIVE

This will stop the dialog from displaying the path component of file names. Another possible workaround is to use the nedit_sunos executable (from ftp://ftp.nedit.org/pub/), which is statically linked with a good Motif.

When I try to open a file from the "Open" dialog nothing appears in the "Filter" textfield

When I try to open a file from the "Open" dialog nothing appears in the "Filter" textfield. Instead, I get repeated message like:

        Name: Text
        Class: XmTextField
        Character '/' not supported in font.  Discarded.

In some versions of S.u.S.E. Linux, there's apparently something wrong with their builds of NEdit and other Motif apps. I've been told you can make nedit work by seting the environment variable LD_PRELOAD to /lib/libBrokenLocale.so.1 before launching it. You can also use the statically linked version of NEdit for Linux from ftp://ftp.nedit.org/pub/

NEdit seems to be running very slowly on my Solaris 2.6 system.

If you're running NEdit on a Solaris 2.6 system and experiencing performance problems (windows come up slowly), the patch for Sun's shared Motif library is ID# 105284-04. Installing the patch alone will improve the performance dramatically. The patch also enables a resource, *XmMenuReduceGrabs. Setting this to True will eliminate the delay completely.

I can't seem to enter accented characters on my system.

This should be working properly on most systems as of NEdit 5.1 or later. If it's not, try re-building NEdit with -DNO_XMIM. If it still doesn't work, send mail to develop@nedit.org

When I try to use nc to start an nedit server, I receive a message (filename): forward host lookup failed: ...

When I try to use nc to start an nedit server, for instance using

        nc (filename)

I receive the following error message:

       (filename): forward host lookup failed:
                   Host name lookup failure: Connection refused

There is another program called `nc` which is installed on some systems. In this case, `nc` is for `netcat`, some kind of network diagnostic tool. You can safely rename NEdit's `nc` to something else (we recommend ncl), or put it first in your path before `netcat`.

Whenever I try to open existing files by using menu, nedit crashes; but if I type `nedit filename` command, it works.

Whenever I try to open existing files by using menu, nedit crashes, and sometimes I get the following error message:

       X Error of failed request:  BadAlloc (insufficient resources for operation)
       Major opcode of failed request:  53 (X_CreatePixmap)

But if I type `nedit filename` command, it works. So how can I open file by using menu bar?

Several users have reported this problem. Most of them were using S.u.S.E. Linux . A few others had different distributions, but always European. The problem appears to be related to how Motif searches for named pixmaps and bitmaps. My guess is that on some systems, this search encounters a match with a bad pixmap file, or tries to load something which is not a pixmap at all. One solution was to set the environment variable XBMLANGPATH to a random directory. For example:

      XBMLANGPATH=.
      export XBMLANGPATH

The solution on S.u.S.E Linux systems was to remove an unnecessary line in the global /etc/profile (provided by S.u.S.E.):

      export XAPPLRESDIR=
          "$XAPPLRESDIR:/var/X11R6/app-defaults:/usr/X11R6/lib/X11/app-defaults"

Another user who had the problem reported that the root cause appeared to be insufficient read permissions on some xm_* (e.g. xm_warning) pixmaps in "/usr/X11R6/include/X11/bitmaps". (Could someone else confirm this?)

I want to be able to spawn a command from NEdit.

I want to be able to spawn a command from NEdit. By this I mean that I want to NEdit to launch another program without waiting for the program to return. At the moment I'd like to be able to launch `mctags`, but I also have a variety of other things I'd like to do. The shell command: `mctags &` continues to wait for mctags to finish, despite the "&". Is there any way to do what I want?

It's a bug/feature of NEdit that it considers a shell command process alive as long as any of it's file descriptors remain open. Forked processes generally copy and keep open the stdout and stderr descriptors from their parent process, so you have to add `>& /dev/null` to your shell command, so it reads:

        mctags >& /dev/null &

NEdit flashes or matches the wrong parenthesis, bracket, or brace if there is an intervening paren/bracket/brace quoted in between.

Until version 5.0, NEdit had no way of even knowing what language you were operating in when making the flash/match decision, so it simply counted opening and closing instances, disregarding language syntax context (strings, comments, etc.) completely. Now that the feature is more possible to implement, it may be included in a future version, but I'm not entirely sure how best to do it yet.

I'd like to edit a file which is about 50 Megabytes long, but I get errors.

I'd like to edit a file which is about 50 Megabytes long. Whenever I try to read this file, there was always a message as following:

        Error: Cannot perform realloc

How large a file you can edit with NEdit depends on how much swap space + RAM you have, since it loads your file into virtual memory and occasionally does a full copy of that memory space. NEdit can handle a 100MB file reasonably well if you increase your swap space, but I don't know how far beyond that it can go. To work with a 100MB file, you must have at least 200MB of virtual memory available. Many Unix systems can be set up to temporarily increase swap space by creating a temporary swap file.

We installed NEdit Version 5.0 recently, and the accelerators Ctrl-G (Find again) and Ctrl-L (Goto Line Number) are now missing

You have an out-of-date app-defaults file. We strongly recommend not using such files for this exact reason. When you use an app-defaults file, it replaces ALL of the program defaults. If you do install an app-defaults file, it is your responsibility to keep it up to date with each new release of the executable. Otherwise, as you have observed, certain features will degrade with each release, as the app-defaults file and the executable get further and further out of sync with eachother.

On our PCs we have Windows 3.1 and we run XVision as X-Server and we cannot mark with the mouse within NEdit.

On our PCs we have Windows 3.1 and we run XVision as X-Server. The problem that we have is, that we cannot mark with the mouse within NEdit.

When you click and hold the left mouse button and then move the mouse, you can see the mark-area flickering during the movement of the mouse. When stopping the movement nothing is highlighted and nothing is marked.

XVision is grabbing the selection immediately, as soon as it is made, not allowing applications to own it. This behavior is completely wrong, and I have no idea what they might have been thinking when they implemented it. It may be possible to turn it off, ask their technical support people if they're not already out of business.

My regular expression replacement got truncated!

My regular expression replacement got truncated! I wrote a regular expression to nest additional braces around blocks of code (replace {([^{}]|\n)*} with {\0}), which works for small blocks of text, but it fails on large ones, truncating the replacement at around 512 bytes.

A remnant of pre-regular-expression, pre-macro-language NEdit, is that replacement strings are limited to 511 bytes. This is high on the list to fix in a future upgrade.

NEdit is slow and pages continuously on my 8MB Linux system

On most Unix workstations, 8MB of RAM is actually insufficient to run X and Motif properly. Some Linux users get by with it and Linux itself seems to be quite memory efficient, but you really should have 12 or 16 if you're going to be using X much. NEdit would not be my first choice in editors on an 8MB system.

Some of the special keys on my keyboard don't do what I expect.

X systems are rife with this kind of problem because are just too many levels of re-settable bindings between the keyboard and the application program that reads it. Sun systems are the worst offenders, combining poor Motif support with a variety of strange keyboard arrangements.

To diagnose these problems, you have to look at all three levels of key binding that affect Motif programs.

At the bottom level are the modifier map and keymap table, where hardware key codes are bound to X keysyms. You can see the bindings on this level with the xmodmap program (see man xmodmap). A useful tool in debugging the xmodmap level is a program like xev, which can show you the keysyms it receives.

The next level up from that is the motif virtual binding level (see man VirtualBindings). You can (usually) view the bindings at this level by looking at the value of the root window property: _MOTIF_DEFAULT_BINDINGS, using the xprop -root command, however what you see is not necessarily what you'll get. The defaults for these bindings are determined by an unbelievably complicated process involving not just the application in question, but Motif applications which have run before it attached to the same server. This process is described in detail in the VirtualBindings manual page (which is often not available on systems where the bindings are messed up). While it's usually better to attack system configuration problems at the source, this one is so contorted that you're better off with a patch. Luckily, the default Motif virtual bindings can be overridden by an application resource called defaultVirtualBindings. If you think the problem is at the Motif virtual binding level, define a defaultVirtualBindings resource in your .Xresources or .Xdefaults file, using the example below as a template, replacing the keysym names (to the right of the colon) with the keysyms shown by xev when you press the desired key:

       !
       ! Motif Virtual Key Bindings
       !
       nedit*defaultVirtualBindings: \
            osfActivate     :               <Key>KP_Enter\n\
            osfCancel       :               <Key>Escape\n\
            osfHelp         :               <Key>Help\n\
            osfMenu         :               <Key>F4\n\
            osfMenuBar      :               <Key>F10\n\
            osfLeft         :               <Key>Left\n\
            osfUp           :               <Key>Up\n\
            osfRight        :               <Key>Right\n\
            osfDown         :               <Key>Down\n\
            osfBeginLine    :               <Key>Home\n\
            osfEndLine      :               <Key>End\n\
            osfPageUp       :               <Key>Prior\n\
            osfPageDown     :               <Key>Next\n\
            osfBackSpace    :               <Key>BackSpace\n\
            osfDelete       :               <Key>Delete\n\
            osfInsert       :               <Key>Insert\n\
            osfUndo         :               <Key>F14\n\
            osfAddMode      :Shift          <Key>F8\n\
            osfCopy         :               <Key>F16\n\
            osfCut          :               <Key>F20\n\
            osfPaste        :               <Key>F18\n

If NEdit is having binding problems, chances are that other Motif-based programs are also having trouble. Removing the "nedit" from the resource name above (just *defaultVirtualBindings), will apply it to the other Motif programs that you run as well.

The top level bindings in the key binding hierarchy, are the X toolkit translation tables (see the NEdit Help section called X Resources). To show the translations in use, you can add a binding which dumps the table itself:

        nedit*text.Translations: #override \
            Alt<Key>t: XtDisplayTranslations()\n

Typing Alt+T will then display the contents of the translation table to stdout (the terminal from which you started NEdit). If you have the NEdit source, you can also look at the default bindings in the module text.c.

Sometimes, even if you don't understand the problem, you can patch around it by supplying translations for the keysyms that NEdit actually sees, binding them to the action routines that you want activated when you press that key.

KP Enter does no longer executes the current line or selected text as a shell command. How can I get this behavior back?

It was considered dangerous to have a commonly used key potentially execute arbitrary shell commands unintentionally (think rm -Rf). Therefore the shortcut was changed to Ctrl+KP Enter.

In case you want the old binding back, you can add the following lines to your .Xdefaults or .Xresources file:

       nedit*shellMenu.executeCommandLine.accelerator: <Key>KP_Enter",
       nedit*shellMenu.executeCommandLine.acceleratorText: KP Enter",