Re: [RFC] Add a new getAnno function to the netbeans protocol

2006-11-11 Thread Xavier de Gaye

--- Bram Moolenaar [EMAIL PROTECTED] wrote:
 Xavier de Gaye wrote:

  During the compile-debug-edit development cycle, the signs placed in
  the Vim buffers by the IDE with the netbeans protocol can have their
  line numbers changed when the buffers are edited (a Vim sign sticks with
  the line it has been set upon, and moves with it).
 
  It would be nice to allow the IDE to query Vim for these updated line
  numbers, so that when the IDE restarts gdb after a new make and the IDE
  is capable of restoring the breakpoints set on a previous session, the
  breakpoints and their corresponding signs can be automatically set by
  the IDE to their new position.
 
  The netbeans function documentation can be:
 
  ===
  10.4 Functions and Replies  *nb-functions*
 
  getAnno serNum  Return the line number of the annotation in the buffer
  Arguments:
 serNum  serial number of this placed annotation
  The reply is:
  lnum = line number of the annotation
  ===
 
 
  The implementation can be based on the existing sign_list_placed()
  function in buffer.c. I can propose a patch if this request for change
  is acceptable.

 It makes sense.  The only alternative is to listen to insert and
 delete messages to keep track of the position, which probably requires
 keeping a copy of the text.


Problem:Retrieving from Vim the signs positions set by the IDE
after they have been moved in the buffer.
Solution:   Add the netbeans getAnno function for getting the new
signs positions after a file has been edited.
Files:  src/netbeans.c


The following patch uses the E652 and E653 error codes that are
documented in netbeans.tx, but not used yet.

The patch has been tested with clewn in debug mode.



Index: runtime/doc/netbeans.txt
===
*** runtime/doc/netbeans.txt(revision 179)
--- runtime/doc/netbeans.txt(working copy)
***
*** 1,4 
! *netbeans.txt*  For Vim version 7.0.  Last change: 2006 Mar 09


  VIM REFERENCE MANUALby Gordon Prieur
--- 1,4 
! *netbeans.txt*  For Vim version 7.0.  Last change: 2006 Nov 08


  VIM REFERENCE MANUALby Gordon Prieur
***
*** 605,610 
--- 605,619 

  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 may be:
+   123 lnumline number of the annotation
+   123 invalid annotation serial number
+   New in version 2.3.
+
  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


Index: src/netbeans.c
===
*** src/netbeans.c  (revision 179)
--- src/netbeans.c  (working copy)
***
*** 1271,1276 
--- 1271,1312 
nb_reply_text(cmdno, text);
  /* =*/
}
+   else if (streq((char *)cmd, getAnno))
+   {
+   int nilreply = 1;
+ #ifdef FEAT_SIGNS
+   int serNum;
+   long linenum;
+
+   if (buf == NULL || buf-bufp == NULL)
+   {
+   nbdebug((null bufp in getAnno));
+   EMSG(E652: null bufp in getAnno);
+   retval = FAIL;
+   }
+   else
+   {
+   cp = (char *)args;
+   serNum = strtol(cp, cp, 10);
+
+   linenum = (long)buf_findsign(buf-bufp, serNum);
+   if (linenum != 0)
+   {
+   nb_reply_nr(cmdno, linenum);
+   nilreply = 0;
+   }
+   else
+   {
+   nbdebug((invalid annotation number in getAnno));
+   EMSG(E653: invalid annotation number in getAnno);
+   retval = FAIL;
+   }
+   }
+ #endif
+   if (nilreply)
+   nb_reply_nil(cmdno);
+ /* =*/
+   }
else if (streq((char *)cmd, getLength))
{
long len = 0;



--
http://clewn.sourceforge.net   gdb support in Vim


[RFC] Add a new getAnno function to the netbeans protocol

2006-11-07 Thread Xavier de Gaye

During the compile-debug-edit development cycle, the signs placed in
the Vim buffers by the IDE with the netbeans protocol can have their
line numbers changed when the buffers are edited (a Vim sign sticks with
the line it has been set upon, and moves with it).

It would be nice to allow the IDE to query Vim for these updated line
numbers, so that when the IDE restarts gdb after a new make and the IDE
is capable of restoring the breakpoints set on a previous session, the
breakpoints and their corresponding signs can be automatically set by
the IDE to their new position.

The netbeans function documentation can be:

===
10.4 Functions and Replies  *nb-functions*

getAnno serNum  Return the line number of the annotation in the buffer
Arguments:
   serNum  serial number of this placed annotation
The reply is:
lnum = line number of the annotation
===


The implementation can be based on the existing sign_list_placed()
function in buffer.c. I can propose a patch if this request for change
is acceptable.

Xavier


--
http://clewn.sourceforge.net   gdb support in Vim


Re: [RFC] Add a new getAnno function to the netbeans protocol

2006-11-07 Thread Bram Moolenaar

Xavier de Gaye wrote:

 During the compile-debug-edit development cycle, the signs placed in
 the Vim buffers by the IDE with the netbeans protocol can have their
 line numbers changed when the buffers are edited (a Vim sign sticks with
 the line it has been set upon, and moves with it).
 
 It would be nice to allow the IDE to query Vim for these updated line
 numbers, so that when the IDE restarts gdb after a new make and the IDE
 is capable of restoring the breakpoints set on a previous session, the
 breakpoints and their corresponding signs can be automatically set by
 the IDE to their new position.
 
 The netbeans function documentation can be:
 
 ===
 10.4 Functions and Replies  *nb-functions*
 
 getAnno serNum  Return the line number of the annotation in the buffer
 Arguments:
serNum  serial number of this placed annotation
 The reply is:
 lnum = line number of the annotation
 ===
 
 
 The implementation can be based on the existing sign_list_placed()
 function in buffer.c. I can propose a patch if this request for change
 is acceptable.

It makes sense.  The only alternative is to listen to insert and
delete messages to keep track of the position, which probably requires
keeping a copy of the text.

-- 
If Microsoft would build a car...
... the oil, water temperature, and alternator warning lights would
all be replaced by a single General Protection Fault warning light.

 /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net   \\\
///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\download, build and distribute -- http://www.A-A-P.org///
 \\\help me help AIDS victims -- http://ICCF-Holland.org///