diff options
| author | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-04 12:41:27 +0300 |
|---|---|---|
| committer | Mehmet Samet Duman <yongdohyun@projecttick.org> | 2026-04-04 12:41:27 +0300 |
| commit | 4f2d36194b4f299aa7509d815c07121039ea833b (patch) | |
| tree | f3ded014bad3a4c76ff6a22b8726ebaab68c3d13 /mnv/runtime/doc/netbeans.txt | |
| parent | 5b578e70c314723a3cde5c9bfc2be0bf1dadc93b (diff) | |
| download | Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.tar.gz Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.zip | |
NOISSUE change uvim folder name to mnv
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'mnv/runtime/doc/netbeans.txt')
| -rw-r--r-- | mnv/runtime/doc/netbeans.txt | 1033 |
1 files changed, 1033 insertions, 0 deletions
diff --git a/mnv/runtime/doc/netbeans.txt b/mnv/runtime/doc/netbeans.txt new file mode 100644 index 0000000000..694f1c3615 --- /dev/null +++ b/mnv/runtime/doc/netbeans.txt @@ -0,0 +1,1033 @@ +*netbeans.txt* For MNV version 10.0. Last change: 2026 Feb 14 + + + MNV REFERENCE MANUAL by Gordon Prieur et al. + + + *netbeans* *NetBeans* *netbeans-support* + +MNV NetBeans Protocol: a socket interface for MNV integration into an IDE. + +1. Introduction |netbeans-intro| +2. Integration features |netbeans-integration| +3. Configuring MNV for NetBeans |netbeans-configure| +4. Error Messages |netbeans-messages| +5. Running MNV in NetBeans mode |netbeans-run| +6. NetBeans protocol |netbeans-protocol| +7. NetBeans commands |netbeans-commands| +8. Known problems |netbeans-problems| +9. Debugging NetBeans protocol |netbeans-debugging| +10. NetBeans External Editor + 10.1. Downloading NetBeans |netbeans-download| + 10.2. NetBeans Key Bindings |netbeans-keybindings| + 10.3. Preparing NetBeans for MNV |netbeans-preparation| + 10.4. Obtaining the External Editor Module |obtaining-exted| + 10.5. Setting up NetBeans to run with MNV |netbeans-setup| + +{only available when compiled with the |+netbeans_intg| feature} + +============================================================================== +1. Introduction *netbeans-intro* + +The NetBeans interface was initially developed to integrate MNV into the +NetBeans Java IDE, using the external editor plugin. This NetBeans plugin no +longer exists for recent versions of NetBeans but the protocol was developed +in such a way that any IDE can use it to integrate MNV. + +The NetBeans protocol of MNV is a text based communication protocol, over a +classical TCP socket. There is no dependency on Java or NetBeans. Any +language or environment providing a socket interface can control MNV using +this protocol. There are existing implementations in C, C++, Python and Java. +The name NetBeans is kept today for historical reasons. + +Active project using the NetBeans protocol of MNV: +- Eclim, (dead link) eclim.org/ + +MNVIntegration, description of various projects doing MNV Integration: + (dead link) www.freehackers.org/MNVIntegration + +Projects using the NetBeans protocol of MNV are or were: +- Agide, an IDE for the AAP project, written in Python (now replaced by + |:Termdebug|): http://www.a-a-p.org (link now dead) +- Clewn, a gdb integration into MNV, written in C: + http://clewn.sourceforge.net/ +- Pyclewn, a gdb integration into MNV, written in Python: + http://pyclewn.sourceforge.net/ +- MNVWrapper, library to easy MNV integration into IDE: + (dead link) freehackers.org/MNVWrapper +Outdated projects (links don't work): +- MNVPlugin, integration of MNV inside Eclipse: + http://mnvplugin.sourceforge.net/wiki/pmwiki.php +- PIDA, IDE written in Python integrating MNV: + http://pida.co.uk/ + +Check the specific project pages to see how to use MNV with these projects. + +An alternative is to use a channel, see |channel|. + +In the rest of this help page, we will use the term "MNV Controller" to +describe the program controlling MNV through the NetBeans socket interface. + + +About the NetBeans IDE ~ + +NetBeans is an open source Integrated Development Environment developed +jointly by Sun Microsystems, Inc. and the netbeans.org developer community. +Initially just a Java IDE, NetBeans has had C, C++, and Fortran support added +in recent releases. + +For more information visit the main NetBeans web site http://www.netbeans.org. +The External Editor is now, unfortunately, declared obsolete. See (link seems +dead): externaleditor.netbeans.org. + +Sun Microsystems, Inc. also ships NetBeans under the name Sun ONE Studio. +Visit http://www.sun.com for more information regarding the Sun ONE Studio +product line. + +Current releases of NetBeans provide full support for Java and limited support +for C, C++, and Fortran. Current releases of Sun ONE Studio provide full +support for Java, C, C++, and Fortran. + +============================================================================== +2. Integration features *netbeans-integration* + +The NetBeans socket interface of MNV allows to get information from MNV or to +ask MNV to perform specific actions: +- get information about buffer: buffer name, cursor position, buffer content, + etc. +- be notified when buffers are open or closed +- be notified of how the buffer content is modified +- load and save files +- modify the buffer content +- installing special key bindings +- raise the window, control the window geometry + +For sending key strokes to MNV or for evaluating functions in MNV, you must +use the |clientserver| interface. + + +============================================================================== +3. Configuring MNV for NetBeans *netbeans-configure* + +For more help about installing MNV, please read |usr_90.txt| in the MNV User +Manual. + + +On Unix: +-------- + +When running configure without arguments the NetBeans interface should be +included. That is, if the configure check to find out if your system supports +the required features succeeds. + +In case you do not want the NetBeans interface you can disable it by +uncommenting a line with "--disable-netbeans" in the Makefile. + +Currently the NetBeans interface is supported by MNV running in a terminal and +by gmnv when it is run with one of the following GUIs: GTK, GNOME, Windows +and Motif. + + *netbeans-xpm* +If Motif support is required the user must supply XPM libraries. +The XPM library is required to show images within MNV with Motif. +Without it the toolbar and signs will be disabled. + +The XPM library is provided by Arnaud Le Hors of the French National Institute +for Research in Computer Science and Control. It can be downloaded from +https://ftp.nluug.nl/ftp/windowing/X/contrib/libraries/. The current release, +as of this writing, is xpm-3.4k-solaris.tgz, which is a gzip'ed tar file. If +you create the directory /usr/local/xpm and untar the file there you can use +the uncommented lines in the Makefile without changing them. If you use +another xpm directory you will need to change the XPM_DIR in src/Makefile. + + +On MS-Windows: +-------------- + +The Win32 support is now in beta stage. + +To use XPM signs on Win32 (e.g. when using with NetBeans) you can compile +XPM by yourself or use precompiled libraries from (link seems dead): +iamphet.nm.ru/misc/ (for MS Visual C++) or +http://gnuwin32.sourceforge.net (for MinGW). + +Enable debugging: +----------------- + +To enable debugging of MNV and of the NetBeans protocol, the "NBDEBUG" macro +needs to be defined. Search in the Makefile of the platform you are using for +"NBDEBUG" to see what line needs to be uncommented. This effectively adds +"-DNBDEBUG" to the compile command. Also see |netbeans-debugging| + +============================================================================== +4. Error Messages *netbeans-messages* + +These error messages are specific to NetBeans socket protocol: + + *E463* +Region is guarded, cannot modify + The MNV Controller has defined guarded areas in the text, + which you cannot change. Also sets the current buffer, if + necessary. + + *E532* +The defineAnnoType highlighting color name is too long + The maximum length of the "fg" or "bg" color argument in the + defineAnnoType command is 32 characters. + New in version 2.5. + + *E656* +Writes of unmodified buffers forbidden + Writes of unmodified buffers that were opened from the + MNV Controller are not possible. + + *E657* +Partial writes disallowed + Partial writes for buffers that were opened from the + MNV Controller are not allowed. + + *E658* +Connection lost for this buffer + The MNV Controller has become confused about the state of + this file. Rather than risk data corruption, it has severed + the connection for this file. MNV will take over + responsibility for saving changes to this file and the + MNV Controller will no longer know of these changes. + + *E744* +Read-only file + MNV normally allows changes to a read-only file and only + enforces the read-only rule if you try to write the file. + However, NetBeans does not let you make changes to a file + which is read-only and becomes confused if MNV does this. + So MNV does not allow modifications to files when run + in NetBeans mode. + +============================================================================== +5. Running MNV in NetBeans mode *netbeans-run* + +There are two different ways to run MNV in NetBeans mode: + + + an IDE may start MNV with the |-nb| command line argument + + NetBeans can be started from within MNV with the |:nbstart| command + +MNV uses a 3 second timeout on trying to make the connection. + + *netbeans-parameters* +Three forms can be used to setup the NetBeans connection parameters. +When started from the command line, the |-nb| command line argument may be: + + -nb={fname} from a file + -nb:{hostname}:{addr}:{password} directly + -nb from a file or environment + +When started from within MNV, the |:nbstart| optional argument may be: + + ={fname} from a file + :{hostname}:{addr}:{password} directly + <MISSING ARGUMENT> from a file or environment + + *E660* *E668* +When NetBeans is started from the command line, for security reasons, the best +method is to write the information in a file readable only by the user. The +name of the file can be passed with the "-nb={fname}" argument or, when "-nb" +is used without a parameter, the environment variable "__NETBEANS_CONINFO". +The file must contain these three lines, in any order: + + host={hostname} + port={addr} + auth={password} + +Other lines are ignored. The MNV Controller is responsible for deleting the +file afterwards. + +{hostname} is the name of the machine where MNV Controller is running. When +omitted the environment variable "__NETBEANS_HOST" is used or the default +"localhost". + +{addr} is the port number for the NetBeans interface. When omitted the +environment variable "__NETBEANS_SOCKET" is used or the default 3219. + +{password} is the password for connecting to NetBeans. When omitted the +environment variable "__NETBEANS_MNV_PASSWORD" is used or "changeme". + +MNV will initiate a socket connection (client side) to the specified host and +port upon startup. The password will be sent with the AUTH event when the +connection has been established. + + +============================================================================== +6. NetBeans protocol *netbeans-protocol* + +The communication between the MNV Controller and MNV uses plain text +messages. This protocol was first designed to work with the external editor +module of NetBeans. Later it was extended to work with Agide (A-A-P GUI IDE, +formerly http://www.a-a-p.org, link now dead) and then with other IDE. +The extensions are marked with "version 2.1". + +Version 2.2 of the protocol has several minor changes which should only affect +NetBeans users (ie, not Agide users). However, a bug was fixed which could +cause confusion. The netbeans_saved() function sent a "save" protocol +command. In protocol version 2.1 and earlier this was incorrectly interpreted +as a notification that a write had taken place. In reality, it told NetBeans +to save the file so multiple writes were being done. This caused various +problems and has been fixed in 2.2. To decrease the likelihood of this +confusion happening again, netbeans_saved() has been renamed to +netbeans_save_buffer(). + +We are now at version 2.5. For the differences between 2.4 and 2.5 search for +"2.5" below. + +The messages are currently sent over a socket. Since the messages are in +plain UTF-8 text this protocol could also be used with any other communication +mechanism. + +Netbeans messages are processed when MNV is idle, waiting for user input. +When MNV is run in non-interactive mode, for example when running an automated +test case that sources a MNV script, the idle loop may not be called often +enough. In that case, insert |:sleep| commands in the MNV script. The |:sleep| +command does invoke Netbeans messages processing. + +6.1 Kinds of messages |nb-messages| +6.2 Terms |nb-terms| +6.3 Commands |nb-commands| +6.4 Functions and Replies |nb-functions| +6.5 Events |nb-events| +6.6 Special messages |nb-special| +6.7 Protocol errors |nb-protocol_errors| + + +6.1 Kinds of messages *nb-messages* + +There are four kinds of messages: + +kind direction comment ~ +Command IDE -> editor no reply necessary +Function IDE -> editor editor must send back a reply +Reply editor -> IDE only in response to a Function +Event editor -> IDE no reply necessary + +The messages are sent as a single line with a terminating newline character. +Arguments are separated by a single space. The first item of the message +depends on the kind of message: + +kind first item example ~ +Command bufID:name!seqno 11:showBalloon!123 "text" +Function bufID:name/seqno 11:getLength/123 +Reply seqno 123 5000 +Event bufID:name=seqno 11:keyCommand=123 "S-F2" + + + +6.2 Terms *nb-terms* + +bufID Buffer number. A message may be either for a specific buffer + or generic. Generic messages use a bufID of zero. NOTE: this + buffer ID is assigned by the IDE, it is not MNV's buffer + number. The bufID must be a sequentially rising number, + starting at one. When the 'switchbuf' option is set to + "usetab" and the "bufID" buffer is not found in the current + tab page, the netbeans commands and functions that set this + buffer as the current buffer will jump to the first open + window that contains this buffer in other tab pages instead of + replacing the buffer in the current window. + +seqno The IDE uses a sequence number for Commands and Functions. A + Reply must use the sequence number of the Function that it is + associated with. A zero sequence number can be used for + Events (the seqno of the last received Command or Function can + also be used). + +string Argument in double quotes. Text is in UTF-8 encoding. This + means ASCII is passed as-is. Special characters are + represented with a backslash: + \" double quote + \n newline + \r carriage-return + \t tab (optional, also works literally) + \\ backslash + NUL bytes are not allowed! + +boolean Argument with two possible values: + T true + F false + +number Argument with a decimal number. + +color Argument with either a decimal number, "none" (without the + quotes) or the name of a color (without the quotes) defined + both in the color list in |highlight-ctermfg| and in the color + list in |gui-colors|. + New in version 2.5. + +offset A number argument that indicates a byte position in a buffer. + The first byte has offset zero. Line breaks are counted for + how they appear in the file (CR/LF counts for two bytes). + Note that a multibyte character is counted for the number of + bytes it takes. + +lnum/col Argument with a line number and column number position. The + line number starts with one, the column is the byte position, + starting with zero. Note that a multibyte character counts + for several columns. + +pathname String argument: file name with full path. + + +6.3 Commands *nb-commands* + +actionMenuItem Not implemented. + +actionSensitivity + Not implemented. + +addAnno serNum typeNum off len + Place an annotation in this buffer. + Arguments: + serNum number serial number of this placed + annotation, used to be able to remove + it + typeNum number sequence number of the annotation + defined with defineAnnoType for this + buffer + off number offset where annotation is to be + placed + len number not used + In version 2.1 "lnum/col" can be used instead of "off". + +balloonResult text + Not implemented. + +close Close the buffer. This leaves us without current buffer, very + dangerous to use! + +create Creates a buffer without a name. Replaces the current buffer + (it's hidden when it was changed). + The MNV Controller should use this as the first command for a + file that is being opened. The sequence of commands could be: + create + setCaretListener (ignored) + setModified (no effect) + setContentType (ignored) + startDocumentListen + setTitle + setFullName + +defineAnnoType typeNum typeName tooltip glyphFile fg bg + Define a type of annotation for this buffer. + Arguments: + typeNum number sequence number (not really used) + typeName string name that identifies this annotation + tooltip string not used + glyphFile string name of icon file + fg color foreground color for line highlighting + bg color background color for line highlighting + MNV will define a sign for the annotation. + When color is a number, this is the "#rrggbb" Red, Green and + Blue values of the color (see |gui-colors|) and the + highlighting is only defined for gMNV. + When color is a name, this color is defined both for MNV + running in a color terminal and for gMNV. + When both "fg" and "bg" are "none" no line highlighting is + used (new in version 2.1). + When "glyphFile" is empty, no text sign is used (new in + version 2.1). + When "glyphFile" is one or two characters long, a text sign is + defined (new in version 2.1). + Note: the annotations will be defined in sequence, and the + sequence number is later used with addAnno. + +editFile pathname + Set the name for the buffer and edit the file "pathname", a + string argument. + Normal way for the IDE to tell the editor to edit a file. + + You must set a bufId different of 0 with this command to + assign a bufId to the buffer. It will trigger an event + fileOpened with a bufId of 0 but the buffer has been assigned. + + If the IDE is going to pass the file text to the editor use + these commands instead: + setFullName + insert + initDone + New in version 2.1. + +enableBalloonEval + Not implemented. + +endAtomic End an atomic operation. The changes between "startAtomic" + and "endAtomic" can be undone as one operation. But it's not + implemented yet. Redraw when necessary. + +guard off len + Mark an area in the buffer as guarded. This means it cannot + be edited. "off" and "len" are numbers and specify the text + to be guarded. + +initDone Mark the buffer as ready for use. Implicitly makes the buffer + the current buffer. Fires the BufReadPost autocommand event. + +insertDone starteol readonly + Sent by MNV Controller to tell MNV an initial file insert is + done. This triggers a read message being printed. If + "starteol" is "F" then the last line doesn't have a EOL. If + "readonly" is "T" then the file is marked as readonly. Prior + to version 2.3, no read messages were displayed after opening + a file. New in version 2.3. + +moveAnnoToFront serNum + Not implemented. + +netbeansBuffer isNetbeansBuffer + If "isNetbeansBuffer" is "T" then this buffer is "owned" by + NetBeans. + New in version 2.2. + +putBufferNumber pathname + Associate a buffer number with the MNV buffer by the name + "pathname", a string argument. To be used when the editor + reported editing another file to the IDE and the IDE needs to + tell the editor what buffer number it will use for this file. + Also marks the buffer as initialized. + New in version 2.1. + +raise Bring the editor to the foreground. + Only when MNV is run with a GUI. + New in version 2.1. + +removeAnno serNum + Remove a previously placed annotation for this buffer. + "serNum" is the same number used in addAnno. + +save Save the buffer when it was modified. The other side of the + interface is expected to write the buffer and invoke + "setModified" to reset the "changed" flag of the buffer. + The writing is skipped when one of these conditions is true: + - 'write' is not set + - the buffer is read-only + - the buffer does not have a file name + - 'buftype' disallows writing + New in version 2.2. + +saveDone + Sent by MNV Controller to tell MNV a save is done. This + triggers a save message being printed. Prior to version 2.3, + no save messages were displayed after a save. + New in version 2.3. + +setAsUser Not implemented. + +setBufferNumber pathname + Associate a buffer number with MNV buffer by the name + "pathname". To be used when the editor reported editing + another file to the IDE and the IDE needs to tell the editor + what buffer number it will use for this file. + Has the side effect of making the buffer the current buffer. + See "putBufferNumber" for a more useful command. + +setContentType + Not implemented. + +setDot off Make the buffer the current buffer and set the cursor at the + specified position. If the buffer is open in another window + than make that window the current window. + If there are folds they are opened to make the cursor line + visible. + In version 2.1 "lnum/col" can be used instead of "off". + +setExitDelay seconds + Set the delay for exiting to "seconds", a number. + This delay is used to give the IDE a chance to handle things + before really exiting. The default delay is two seconds. + New in version 2.1. + Obsolete in version 2.3. + +setFullName pathname + Set the file name to be used for a buffer to "pathname", a + string argument. + Used when the IDE wants to edit a file under control of the + IDE. This makes the buffer the current buffer, but does not + read the file. "insert" commands will be used next to set the + contents. + +setLocAndSize Not implemented. + +setMark Not implemented. + +setModified modified + When the boolean argument "modified" is "T" mark the buffer as + modified, when it is "F" mark it as unmodified. + +setModtime time + Update a buffers modification time after the file has been + saved directly by the MNV Controller. + New in version 2.3. + +setReadOnly readonly + When the boolean argument "readonly" is "T" for True, mark the + buffer as readonly, when it is "F" for False, mark it as not + readonly. Implemented in version 2.3. + +setStyle Not implemented. + +setTitle name + Set the title for the buffer to "name", a string argument. + The title is only used for the MNV Controller functions, not + by MNV. + +setVisible visible + When the boolean argument "visible" is "T", goto the buffer. + The "F" argument does nothing. + +showBalloon text + Show a balloon (popup window) at the mouse pointer position, + containing "text", a string argument. The balloon should + disappear when the mouse is moved more than a few pixels. + Only when MNV is run with a GUI. + New in version 2.1. + +specialKeys + Map a set of keys (mostly function keys) to be passed back + to the MNV Controller for processing. This lets regular IDE + hotkeys be used from MNV. + Implemented in version 2.3. + +startAtomic Begin an atomic operation. The screen will not be updated + until "endAtomic" is given. + +startCaretListen + Not implemented. + +startDocumentListen + Mark the buffer to report changes to the IDE with the + "insert" and "remove" events. The default is to report + changes. + +stopCaretListen + Not implemented. + +stopDocumentListen + Mark the buffer to stop reporting changes to the IDE. + Opposite of startDocumentListen. + NOTE: if "netbeansBuffer" was used to mark this buffer as a + NetBeans buffer, then the buffer is deleted in MNV. This is + for compatibility with Sun Studio 10. + +unguard off len + Opposite of "guard", remove guarding for a text area. + Also sets the current buffer, if necessary. + +version Not implemented. + + +6.4 Functions and Replies *nb-functions* + +getDot Not implemented. + +getCursor Return the current buffer and cursor position. + The reply is: + seqno bufID lnum col off + seqno = sequence number of the function + bufID = buffer ID of the current buffer (if this is unknown -1 + is used) + lnum = line number of the cursor (first line is one) + col = column number of the cursor (in bytes, zero based) + off = offset of the cursor in the buffer (in bytes) + New in version 2.1. + +getLength Return the length of the buffer in bytes. + Reply example for a buffer with 5000 bytes: + 123 5000 + TODO: explain use of partial line. + +getMark Not implemented. + +getAnno serNum + Return the line number of the annotation in the buffer. + Argument: + serNum serial number of this placed + annotation + The reply is: + 123 lnum line number of the annotation + 123 0 invalid annotation serial number + New in version 2.4. + +getModified When a buffer is specified: Return zero if the buffer does not + have changes, one if it does have changes. + When no buffer is specified (buffer number zero): Return the + number of buffers with changes. When the result is zero it's + safe to tell MNV to exit. + New in version 2.1. + +getText Return the contents of the buffer as a string. + Reply example for a buffer with two lines + 123 "first line\nsecond line\n" + NOTE: docs indicate an offset and length argument, but this is + not implemented. + +insert off text + Insert "text" before position "off". "text" is a string + argument, "off" a number. + "text" should have a "\n" (newline) at the end of each line. + Or "\r\n" when 'fileformat' is "dos". When using "insert" in + an empty buffer MNV will set 'fileformat' accordingly. + When "off" points to the start of a line the text is inserted + above this line. Thus when "off" is zero lines are inserted + before the first line. + When "off" points after the start of a line, possibly on the + NUL at the end of a line, the first line of text is appended + to this line. Further lines come below it. + Possible replies: + 123 no problem + 123 !message failed + Note that the message in the reply is not quoted. + Also sets the current buffer, if necessary. + Does not move the cursor to the changed text. + Resets undo information. + +remove off length + Delete "length" bytes of text at position "off". Both + arguments are numbers. + Possible replies: + 123 no problem + 123 !message failed + Note that the message in the reply is not quoted. + Also sets the current buffer, if necessary. + +saveAndExit Perform the equivalent of closing MNV: ":confirm qall". + If there are no changed files or the user does not cancel the + operation MNV exits and no result is sent back. The IDE can + consider closing the connection as a successful result. + If the user cancels the operation the number of modified + buffers that remains is returned and MNV does not exit. + New in version 2.1. + + +6.5 Events *nb-events* + +balloonEval off len type + The mouse pointer rests on text for a short while. When "len" + is zero, there is no selection and the pointer is at position + "off". When "len" is non-zero the text from position "off" to + "off" + "len" is selected. + Only sent after "enableBalloonEval" was used for this buffer. + "type" is not yet defined. + Not implemented yet. + +balloonText text + Used when 'ballooneval' is set and the mouse pointer rests on + some text for a moment. "text" is a string, the text under + the mouse pointer. + Only when MNV is run with a GUI. + New in version 2.1. + +buttonRelease button lnum col + Report which button was pressed and the location of the cursor + at the time of the release. Only for buffers that are owned + by the MNV Controller. This event is not sent if the button + was released while the mouse was in the status line or in a + separator line. If col is less than 1 the button release was + in the sign area. + New in version 2.2. + +disconnect + Tell the MNV Controller that MNV is exiting and not to try and + read or write more commands. + New in version 2.3. + +fileClosed Not implemented. + +fileModified Not implemented. + +fileOpened pathname open modified + A file was opened by the user. + Arguments: + pathname string name of the file + open boolean always "T" + modified boolean always "F" + +geometry cols rows x y + Report the size and position of the editor window. + Arguments: + cols number number of text columns + rows number number of text rows + x number pixel position on screen + y number pixel position on screen + Only works for Motif. + +insert off text + Text "text" has been inserted in MNV at position "off". + Only fired when enabled, see "startDocumentListen". + +invokeAction Not implemented. + +keyCommand keyName + Reports a special key being pressed with name "keyName", which + is a string. + Supported key names: + F1 function key 1 + F2 function key 2 + ... + F12 function key 12 + + ' ' space (without the quotes) + ! exclamation mark + ... any other ASCII printable character + ~ tilde + + X any unrecognized key + + The key may be prepended by "C", "S" and/or "M" for Control, + Shift and Meta (Alt) modifiers. If there is a modifier a dash + is used to separate it from the key name. For example: + "C-F2". + ASCII characters are new in version 2.1. + +keyAtPos keyName lnum/col + Like "keyCommand" and also report the line number and column + of the cursor. + New in version 2.1. + +killed A file was deleted or wiped out by the user and the buffer + annotations have been removed. The bufID number for this + buffer has become invalid. Only for files that have been + assigned a bufID number by the IDE. + +newDotAndMark off off + Reports the position of the cursor being at "off" bytes into + the buffer. Only sent just before a "keyCommand" event. + +quit Not implemented. + +remove off len + Text was deleted in MNV at position "off" with byte length + "len". + Only fired when enabled, see "startDocumentListen". + +revert Not implemented. + +save The buffer has been saved and is now unmodified. + Only fired when enabled, see "startDocumentListen". + +startupDone The editor has finished its startup work and is ready for + editing files. + New in version 2.1. + +unmodified The buffer is now unmodified. + Only fired when enabled, see "startDocumentListen". + +version vers Report the version of the interface implementation. MNV + reports "2.4" (including the quotes). + + +6.6 Special messages *nb-special* + +These messages do not follow the style of the messages above. They are +terminated by a newline character. + +ACCEPT Not used. + +AUTH password editor -> IDE: First message that the editor sends to the IDE. + Must contain the password for the socket server, as specified + with the |-nb| argument. No quotes are used! + +DISCONNECT IDE -> editor: break the connection. The editor will exit. + The IDE must only send this message when there are no unsaved + changes! + +DETACH IDE -> editor: break the connection without exiting the + editor. Used when the IDE exits without bringing down the + editor as well. + New in version 2.1. + +REJECT Not used. + + +6.7 Protocol errors *nb-protocol_errors* + +These errors occur when a message violates the protocol: +*E627* *E628* *E629* *E632* *E633* *E634* *E635* *E636* +*E637* *E638* *E639* *E640* *E641* *E642* *E643* *E644* *E645* *E646* +*E647* *E648* *E650* *E651* *E652* + + +============================================================================== +7. NetBeans commands *netbeans-commands* + + *:nbstart* *E511* *E838* +:nbs[tart] {connection} Start a new Netbeans session with {connection} as the + socket connection parameters. The format of + {connection} is described in |netbeans-parameters|. + At any time, one may check if the netbeans socket is + connected by running the command: + ':echo has("netbeans_enabled")' + + *:nbclose* +:nbc[lose] Close the current NetBeans session. Remove all placed + signs. + + *:nbkey* +:nb[key] {key} Pass the {key} to the MNV Controller for processing. + When a hot-key has been installed with the specialKeys + command, this command can be used to generate a hotkey + message to the MNV Controller. + This command can also be used to pass any text to the + MNV Controller. It is used by Pyclewn, for example, + to build the complete set of gdb commands as MNV user + commands. + The events newDotAndMark, keyCommand and keyAtPos are + generated (in this order). + + +============================================================================== +8. Known problems *netbeans-problems* + +NUL bytes are not possible. For editor -> IDE they will appear as NL +characters. For IDE -> editor they cannot be inserted. + +A NetBeans session may be initiated with MNV running in a terminal, and +continued later in a GUI environment after running the |:gui| command. In this +case, the highlighting defined for the NetBeans annotations may be cleared +when the ":gui" command sources .gmnvrc and this file loads a colorscheme +that runs the command ":highlight clear". +New in version 2.5. + + +============================================================================== +9. Debugging NetBeans protocol *netbeans-debugging* + +To debug the MNV protocol, you must first compile MNV with debugging support +and NetBeans debugging support. See |netbeans-configure| for instructions +about MNV compiling and how to enable debug support. + +When running MNV, set the following environment variables: + + export SPRO_GMNV_DEBUG=netbeans.log + export SPRO_GMNV_DLEVEL=0xffffffff + +MNV will then log all the incoming and outgoing messages of the NetBeans +protocol to the file netbeans.log . + +The content of netbeans.log after a session looks like this: +Tue May 20 17:19:27 2008 +EVT: 0:startupDone=0 +CMD 1: (1) create +CMD 2: (1) setTitle "testfile1.txt" +CMD 3: (1) setFullName "testfile1.txt" +EVT(suppressed): 1:remove=3 0 -1 +EVT: 1:fileOpened=0 "d:\\work\\mnvWrapper\\mnvWrapper2\\pymnvwrapper\\tests\\testfile1.txt" T F +CMD 4: (1) initDone +FUN 5: (0) getCursor +REP 5: 1 1 0 0 +CMD 6: (2) create +CMD 7: (2) setTitle "testfile2.txt" +CMD 8: (2) setFullName "testfile2.txt" +EVT(suppressed): 2:remove=8 0 -1 +EVT: 2:fileOpened=0 "d:\\work\\mnvWrapper\\mnvWrapper2\\pymnvwrapper\\tests\\testfile2.txt" T F +CMD 9: (2) initDone + + +============================================================================== +10. NetBeans External Editor + +NOTE: This information is obsolete! Only relevant if you are using an old +version of NetBeans. + + +10.1. Downloading NetBeans *netbeans-download* + +The NetBeans IDE is available for download from netbeans.org. You can +download a released version, download sources, or use CVS to download the +current source tree. If you choose to download sources, follow directions +from netbeans.org on building NetBeans. + +Depending on the version of NetBeans you download, you may need to do further +work to get the required External Editor module. This is the module which +lets NetBeans work with gmnv (or xemacs :-). See (dead link) +externaleditor.netbeans.org +for details on downloading this module if your NetBeans release does not have +it. + +For C, C++, and Fortran support you will also need the cpp module. See +cpp.netbeans.org (link seems dead) for information regarding this +module. + +You can also download Sun ONE Studio from Sun Microsystems, Inc for a 30 day +free trial. See http://www.sun.com for further details. + + +10.2. NetBeans Key Bindings *netbeans-keybindings* + +MNV understands a number of key bindings that execute NetBeans commands. +These are typically all the Function key combinations. To execute a NetBeans +command, the user must press the Pause key followed by a NetBeans key binding. +For example, in order to compile a Java file, the NetBeans key binding is +"F9". So, while in mnv, press "Pause F9" to compile a java file. To toggle a +breakpoint at the current line, press "Pause Shift F8". + +The Pause key is Function key 21. If you don't have a working Pause key and +want to use F8 instead, use: > + + :map <F8> <F21> + +The External Editor module dynamically reads the NetBeans key bindings so mnv +should always have the latest key bindings, even when NetBeans changes them. + + +10.3. Preparing NetBeans for MNV *netbeans-preparation* + +In order for NetBeans to work with mnv, the NetBeans External Editor module +must be loaded and enabled. If you have a Sun ONE Studio Enterprise Edition +then this module should be loaded and enabled. If you have a NetBeans release +you may need to find another way of obtaining this open source module. + +You can check if you have this module by opening the Tools->Options dialog +and drilling down to the "Modules" list (IDE Configuration->System->Modules). +If your Modules list has an entry for "External Editor" you must make sure +it is enabled (the "Enabled" property should have the value "True"). If your +Modules list has no External Editor see the next section on |obtaining-exted|. + + +10.4. Obtaining the External Editor Module *obtaining-exted* + +There are 2 ways of obtaining the External Editor module. The easiest way +is to use the NetBeans Update Center to download and install the module. +Unfortunately, some versions do not have this module in their update +center. If you cannot download via the update center you will need to +download sources and build the module. I will try and get the module +available from the NetBeans Update Center so building will be unnecessary. +Also check (dead link) externaleditor.netbeans.org +for other availability options. + +To download the External Editor sources via CVS and build your own module, +see (dead link) externaleditor.netbeans.org and http://www.netbeans.org. +Unfortunately, this is not a trivial procedure. + + +10.5. Setting up NetBeans to run with MNV *netbeans-setup* + +Assuming you have loaded and enabled the NetBeans External Editor module +as described in |netbeans-preparation| all you need to do is verify that +the gmnv command line is properly configured for your environment. + +Open the Tools->Options dialog and open the Editing category. Select the +External Editor. The right hand pane should contain a Properties tab and +an Expert tab. In the Properties tab make sure the "Editor Type" is set +to "MNV". In the Expert tab make sure the "MNV Command" is correct. + +You should be careful if you change the "MNV Command". There are command +line options there which must be there for the connection to be properly +set up. You can change the command name but that's about it. If your gmnv +can be found by your $PATH then the MNV Command can start with "gmnv". If +you don't want gmnv searched from your $PATH then hard code in the full +Unix path name. At this point you should get a gmnv for any source file +you open in NetBeans. + +If some files come up in gmnv and others (with different file suffixes) come +up in the default NetBeans editor you should verify the MIME type in the +Expert tab MIME Type property. NetBeans is MIME oriented and the External +Editor will only open MIME types specified in this property. + + + mnv:tw=78:ts=8:noet:ft=help:norl: |
