From 8040efeec8070eba5d0689117b6e4719fa544b70 Mon Sep 17 00:00:00 2001 From: edyfox Date: Tue, 6 Jan 2009 16:18:09 +0000 Subject: [PATCH] Patch 7.2.079 Problem: "killed" netbeans events are not handled correctly. Solution: A "killed" netbeans event is sent when the buffer is deleted or wiped out (in this case, the netbeans annotations in this buffer have been removed). A user can still remove a sign with the command ":sign unplace" and this does not trigger a "killed" event. (Xavier de Gaye) Files: runtime/doc/netbeans.txt, src/buffer.c, src/globals.h, src/netbeans.c, src/proto/netbeans.pro git-svn-id: https://vim.svn.sourceforge.net/svnroot/vim/branches/vim7.2@1315 2a77ed30-b011-0410-a7ad-c7884a0aa172 --- runtime/doc/netbeans.txt | 8 +++++--- src/buffer.c | 14 ++++---------- src/globals.h | 1 - src/netbeans.c | 30 ++++++------------------------ src/proto/netbeans.pro | 2 +- src/version.c | 2 ++ 6 files changed, 18 insertions(+), 39 deletions(-) diff --git a/runtime/doc/netbeans.txt b/runtime/doc/netbeans.txt index 57bc6dec..b7e93136 100644 --- a/runtime/doc/netbeans.txt +++ b/runtime/doc/netbeans.txt @@ -1,4 +1,4 @@ -*netbeans.txt* For Vim version 7.2. Last change: 2008 Jun 28 +*netbeans.txt* For Vim version 7.2. Last change: 2009 Jan 06 VIM REFERENCE MANUAL by Gordon Prieur et al. @@ -722,8 +722,10 @@ keyAtPos keyName lnum/col of the cursor. New in version 2.1. -killed A file was closed by the user. Only for files that have been - assigned a number by the IDE. +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 diff --git a/src/buffer.c b/src/buffer.c index e08cdbe6..b510bf96 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -437,10 +437,6 @@ close_buffer(win, buf, action) return; #endif -#ifdef FEAT_NETBEANS_INTG - if (usingNetbeans) - netbeans_file_closed(buf); -#endif /* Change directories when the 'acd' option is set. */ DO_AUTOCHDIR @@ -639,6 +635,10 @@ free_buffer_stuff(buf, free_options) #ifdef FEAT_SIGNS buf_delete_signs(buf); /* delete any signs */ #endif +#ifdef FEAT_NETBEANS_INTG + if (usingNetbeans) + netbeans_file_killed(buf); +#endif #ifdef FEAT_LOCALMAP map_clear_int(buf, MAP_ALL_MODES, TRUE, FALSE); /* clear local mappings */ map_clear_int(buf, MAP_ALL_MODES, TRUE, TRUE); /* clear local abbrevs */ @@ -815,9 +815,6 @@ do_bufdel(command, arg, addr_count, start_bnr, end_bnr, forceit) int bnr; /* buffer number */ char_u *p; -#ifdef FEAT_NETBEANS_INTG - netbeansCloseFile = 1; -#endif if (addr_count == 0) { (void)do_buffer(command, DOBUF_CURRENT, FORWARD, 0, forceit); @@ -912,9 +909,6 @@ do_bufdel(command, arg, addr_count, start_bnr, end_bnr, forceit) } } -#ifdef FEAT_NETBEANS_INTG - netbeansCloseFile = 0; -#endif return errormsg; } diff --git a/src/globals.h b/src/globals.h index e26a3179..2125f4a1 100644 --- a/src/globals.h +++ b/src/globals.h @@ -1340,7 +1340,6 @@ EXTERN garray_T error_ga #ifdef FEAT_NETBEANS_INTG EXTERN char *netbeansArg INIT(= NULL); /* the -nb[:host:port:passwd] arg */ -EXTERN int netbeansCloseFile INIT(= 0); /* send killed if != 0 */ EXTERN int netbeansFireChanges INIT(= 1); /* send buffer changes if != 0 */ EXTERN int netbeansForcedQuit INIT(= 0);/* don't write modified files */ EXTERN int netbeansReadFile INIT(= 1); /* OK to read from disk if != 0 */ diff --git a/src/netbeans.c b/src/netbeans.c index 67301767..5fc42f21 100644 --- a/src/netbeans.c +++ b/src/netbeans.c @@ -2921,44 +2921,26 @@ netbeans_file_opened(buf_T *bufp) } /* - * Tell netbeans a file was closed. + * Tell netbeans that a file was deleted or wiped out. */ void -netbeans_file_closed(buf_T *bufp) +netbeans_file_killed(buf_T *bufp) { int bufno = nb_getbufno(bufp); nbbuf_T *nbbuf = nb_get_buf(bufno); char buffer[2*MAXPATHL]; - if (!haveConnection || bufno < 0) + if (!haveConnection || bufno == -1) return; - if (!netbeansCloseFile) - { - nbdebug(("Ignoring file_closed for %s. File was closed from IDE\n", - bufp->b_ffname)); - return; - } - - nbdebug(("netbeans_file_closed:\n")); - nbdebug((" Closing bufno: %d", bufno)); - if (curbuf != NULL && curbuf != bufp) - { - nbdebug((" Curbuf bufno: %d\n", nb_getbufno(curbuf))); - } - else if (curbuf == bufp) - { - nbdebug((" curbuf == bufp\n")); - } - - if (bufno <= 0) - return; + nbdebug(("netbeans_file_killed:\n")); + nbdebug((" Killing bufno: %d", bufno)); sprintf(buffer, "%d:killed=%d\n", bufno, r_cmdno); nbdebug(("EVT: %s", buffer)); - nb_send(buffer, "netbeans_file_closed"); + nb_send(buffer, "netbeans_file_killed"); if (nbbuf != NULL) nbbuf->bufp = NULL; diff --git a/src/proto/netbeans.pro b/src/proto/netbeans.pro index eeb9f1b3..bb1a1b52 100644 --- a/src/proto/netbeans.pro +++ b/src/proto/netbeans.pro @@ -11,7 +11,7 @@ void netbeans_send_disconnect __ARGS((void)); void netbeans_frame_moved __ARGS((int new_x, int new_y)); void netbeans_file_activated __ARGS((buf_T *bufp)); void netbeans_file_opened __ARGS((buf_T *bufp)); -void netbeans_file_closed __ARGS((buf_T *bufp)); +void netbeans_file_killed __ARGS((buf_T *bufp)); void netbeans_inserted __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen)); void netbeans_removed __ARGS((buf_T *bufp, linenr_T linenr, colnr_T col, long len)); void netbeans_unmodified __ARGS((buf_T *bufp)); diff --git a/src/version.c b/src/version.c index d6d660e0..3949b9a1 100644 --- a/src/version.c +++ b/src/version.c @@ -677,6 +677,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 79, +/**/ 78, /**/ 77, -- 2.11.4.GIT