12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028 |
- *netbeans.txt* For Vim version 9.0. Last change: 2022 Apr 03
- VIM REFERENCE MANUAL by Gordon Prieur et al.
- *netbeans* *NetBeans* *netbeans-support*
- Vim NetBeans Protocol: a socket interface for Vim integration into an IDE.
- 1. Introduction |netbeans-intro|
- 2. Integration features |netbeans-integration|
- 3. Configuring Vim for NetBeans |netbeans-configure|
- 4. Error Messages |netbeans-messages|
- 5. Running Vim 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 Vim |netbeans-preparation|
- 10.4. Obtaining the External Editor Module |obtaining-exted|
- 10.5. Setting up NetBeans to run with Vim |netbeans-setup|
- {only available when compiled with the |+netbeans_intg| feature}
- ==============================================================================
- 1. Introduction *netbeans-intro*
- The NetBeans interface was initially developed to integrate Vim 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 Vim.
- The NetBeans protocol of Vim 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 Vim 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 Vim:
- - Eclim, http://eclim.org/
- VimIntegration, description of various projects doing Vim Integration:
- http://www.freehackers.org/VimIntegration
- Projects using the NetBeans protocol of Vim are or were:
- - Agide, an IDE for the AAP project, written in Python (now replaced by
- |:Termdebug|): http://www.a-a-p.org
- - Clewn, a gdb integration into Vim, written in C:
- http://clewn.sourceforge.net/
- - Pyclewn, a gdb integration into Vim, written in Python:
- http://pyclewn.sourceforge.net/
- - VimWrapper, library to easy Vim integration into IDE:
- http://www.freehackers.org/VimWrapper
- Outdated projects (links don't work):
- - VimPlugin, integration of Vim inside Eclipse:
- http://vimplugin.sourceforge.net/wiki/pmwiki.php
- - PIDA, IDE written in Python integrating Vim:
- http://pida.co.uk/
- Check the specific project pages to see how to use Vim with these projects.
- An alternative is to use a channel, see |channel|.
- In the rest of this help page, we will use the term "Vim Controller" to
- describe the program controlling Vim 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
- http://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 Vim allows to get information from Vim or to
- ask Vim 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 Vim or for evaluating functions in Vim, you must
- use the |clientserver| interface.
- ==============================================================================
- 3. Configuring Vim for NetBeans *netbeans-configure*
- For more help about installing Vim, please read |usr_90.txt| in the Vim 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 Vim running in a terminal and
- by gvim 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 Vim 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
- http://cgit.freedesktop.org/xorg/lib/libXpm. 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 http://iamphet.nm.ru/misc/
- (for MS Visual C++) or http://gnuwin32.sourceforge.net (for MinGW).
- Enable debugging:
- -----------------
- To enable debugging of Vim 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 Vim 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
- Vim Controller are not possible.
- *E657*
- Partial writes disallowed
- Partial writes for buffers that were opened from the
- Vim Controller are not allowed.
- *E658*
- Connection lost for this buffer
- The Vim Controller has become confused about the state of
- this file. Rather than risk data corruption, it has severed
- the connection for this file. Vim will take over
- responsibility for saving changes to this file and the
- Vim Controller will no longer know of these changes.
- *E744*
- Read-only file
- Vim 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 Vim does this.
- So Vim does not allow modifications to files when run
- in NetBeans mode.
- ==============================================================================
- 5. Running Vim in NetBeans mode *netbeans-run*
- There are two different ways to run Vim in NetBeans mode:
- + an IDE may start Vim with the |-nb| command line argument
- + NetBeans can be started from within Vim with the |:nbstart| command
- Vim 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 Vim, 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 Vim Controller is responsible for deleting the
- file afterwards.
- {hostname} is the name of the machine where Vim 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_VIM_PASSWORD" is used or "changeme".
- Vim 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 Vim Controller and Vim 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,
- see http://www.a-a-p.org) 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 Vim is idle, waiting for user input.
- When Vim is run in non-interactive mode, for example when running an automated
- test case that sources a Vim script, the idle loop may not be called often
- enough. In that case, insert |:sleep| commands in the Vim 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 Vim'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 Vim 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
- Vim 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 gVim.
- When color is a name, this color is defined both for Vim
- running in a color terminal and for gVim.
- 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 Vim Controller to tell Vim 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 Vim 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 Vim 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 Vim Controller to tell Vim 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 Vim 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 Vim 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 Vim Controller functions, not
- by Vim.
- 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 Vim 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 Vim Controller for processing. This lets regular IDE
- hotkeys be used from Vim.
- 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 Vim. 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 Vim 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 Vim 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 Vim: ":confirm qall".
- If there are no changed files or the user does not cancel the
- operation Vim 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 Vim 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 Vim 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 Vim 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 Vim Controller that Vim 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 Vim 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 Vim 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. Vim
- 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* *E649* *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 Vim 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 Vim Controller.
- This command can also be used to pass any text to the
- Vim Controller. It is used by Pyclewn, for example,
- to build the complete set of gdb commands as Vim 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 Vim 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 .gvimrc 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 Vim protocol, you must first compile Vim with debugging support
- and NetBeans debugging support. See |netbeans-configure| for instructions
- about Vim compiling and how to enable debug support.
- When running Vim, set the following environment variables:
- export SPRO_GVIM_DEBUG=netbeans.log
- export SPRO_GVIM_DLEVEL=0xffffffff
- Vim 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\\vimWrapper\\vimWrapper2\\pyvimwrapper\\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\\vimWrapper\\vimWrapper2\\pyvimwrapper\\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 gvim (or xemacs :-). See http://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
- http://cpp.netbeans.org 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*
- Vim 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 vim, 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 vim
- should always have the latest key bindings, even when NetBeans changes them.
- 10.3. Preparing NetBeans for Vim *netbeans-preparation*
- In order for NetBeans to work with vim, 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 http://externaleditor.netbeans.org for other availability options.
- To download the External Editor sources via CVS and build your own module,
- see http://externaleditor.netbeans.org and http://www.netbeans.org.
- Unfortunately, this is not a trivial procedure.
- 10.5. Setting up NetBeans to run with Vim *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 gvim 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 "Vim". In the Expert tab make sure the "Vim Command" is correct.
- You should be careful if you change the "Vim 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 gvim
- can be found by your $PATH then the Vim Command can start with "gvim". If
- you don't want gvim searched from your $PATH then hard code in the full
- Unix path name. At this point you should get a gvim for any source file
- you open in NetBeans.
- If some files come up in gvim 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.
- vim:tw=78:ts=8:noet:ft=help:norl:
|