Use Notepad++ from Cygwin without having the shell wait for an exit code

bashcygwin;notepad

I'm running Cygwin and would like to use Notepad++ as the main shell editor, kind of like what I have on my Mac, where I can type mate whatever to open up an instance of TextMate. In my ~/.bashrc file in Cygwin I have the following alias and environment variable set:

export EDITOR="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"
alias np="/cygdrive/c/Program\ Files/Notepad++/notepad++.exe"

It mostly works: when I type np whatever or when a Cygwin program calls for $EDITOR, Notepad++ opens.

However, the shell waits until Notepad++ is closed and won't allow any input until then. This may be specific to bash, but how can I open Notepad++ from Cygwin and tell the shell to not wait for an exit code to continue? Adding a & to the end of the alias command doesn't work correctly—it just opens an untitled file and warns filename: command not found instead of opening the file.

Thanks!

Best Answer

You could try a bash function to pass the arguments before the ampersand:

np ()
{
    /cygdrive/c/Program\ Files/Notepad++/notepad++.exe $* &
}

BUT the bigger issue may be the whole idea of not waiting until Notepad++ exits. Shell commands which use $EDITOR typically are designed to wait until the editor sends back an indication that the editing has completed. This usually means that the editor has exited (e.g. with vi or nano).

Emacs has a way to set your EDITOR to emacsclient and then when you're done editing, you hit a magical keystroke (C-x #) to indicate that editing is complete. If Notepad++ had something similar for cygwin users, I can see how this would work.

Another alternative is to use plain, boring, simple Notepad as your EDITOR and reserve Notepad++ for heavy use (I got the idea from this blog post)

Related Question