/* netbeans.c */
void netbeans_parse_messages(void);
void netbeans_read(void);
int isNetbeansBuffer(buf_T *bufp);
int isNetbeansModified(buf_T *bufp);
void netbeans_end(void);
void ex_nbclose(exarg_T *eap);
void ex_nbkey(exarg_T *eap);
void ex_nbstart(exarg_T *eap);
void netbeans_beval_cb(BalloonEval *beval, int state);
int netbeans_active(void);
void netbeans_gui_register(void);
void netbeans_open(char *params, int doabort);
void netbeans_send_disconnect(void);
void netbeans_frame_moved(int new_x, int new_y);
void netbeans_file_activated(buf_T *bufp);
void netbeans_file_opened(buf_T *bufp);
void netbeans_file_killed(buf_T *bufp);
void netbeans_inserted(buf_T *bufp, linenr_T linenr, colnr_T col, char_u *txt, int newlen);
void netbeans_removed(buf_T *bufp, linenr_T linenr, colnr_T col, long len);
void netbeans_unmodified(buf_T *bufp);
void netbeans_button_release(int button);
int netbeans_keycommand(int key);
void netbeans_save_buffer(buf_T *bufp);
void netbeans_deleted_all_lines(buf_T *bufp);
int netbeans_is_guarded(linenr_T top, linenr_T bot);
void netbeans_draw_multisign_indicator(int row);
void netbeans_gutter_click(linenr_T lnum);
/* vim: set ft=c : */
