view src/nbdebug.h @ 11416:32aed0993813 v8.0.0592

patch 8.0.0592: if a job writes to a buffer screen is not updated commit https://github.com/vim/vim/commit/29ae377ea7039874337bc79ace9ab2b37b9056e5 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Apr 30 19:39:39 2017 +0200 patch 8.0.0592: if a job writes to a buffer screen is not updated Problem: If a job writes to a buffer and the user is typing a command, the screen isn't updated. When a message is displayed the changed buffer may cause it to be cleared. (Ramel Eshed) Solution: Update the screen and then the command line if the screen didn't scroll. Avoid inserting screen lines, as it clears any message. Update the status line when the buffer changed.
author Christian Brabandt <cb@256bit.org>
date Sun, 30 Apr 2017 19:45:03 +0200
parents 4aead6a9b7a9
children c7ba5fed403c
line wrap: on
line source

/* vi:set ts=8 sw=8 noet:
 *
 * VIM - Vi IMproved	by Bram Moolenaar
 *			Visual Workshop integration by Gordon Prieur
 *
 * Do ":help uganda"  in Vim to read copying and usage conditions.
 * Do ":help credits" in Vim to see a list of people who contributed.
 */


#ifndef NBDEBUG_H
#define NBDEBUG_H

#ifdef NBDEBUG

#ifndef ASSERT
#define ASSERT(c) \
    if (!(c)) { \
	fprintf(stderr, "Assertion failed: line %d, file %s\n", \
		__LINE__, __FILE__); \
	fflush(stderr); \
	abort(); \
    }
#endif

#define nbdebug(a) nbdbg a

#define NB_TRACE		0x00000001
#define NB_TRACE_VERBOSE	0x00000002
#define NB_TRACE_COLONCMD	0x00000004
#define NB_PRINT		0x00000008
#define NB_DEBUG_ALL		0xffffffff

#define NBDLEVEL(flags)		(nb_debug != NULL && (nb_dlevel & (flags)))

#define NBDEBUG_TRACE	1

typedef enum {
		WT_ENV = 1,		/* look for env var if set */
		WT_WAIT,		/* look for ~/.gvimwait if set */
		WT_STOP			/* look for ~/.gvimstop if set */
} WtWait;


void		 nbdbg(char *, ...);

void nbdebug_wait(u_int wait_flags, char *wait_var, u_int wait_secs);
void nbdebug_log_init(char *log_var, char *level_var);

extern FILE	*nb_debug;
extern u_int	 nb_dlevel;		/* nb_debug verbosity level */

# else		/* not NBDEBUG */

#ifndef ASSERT
# define ASSERT(c)
#endif

/*
 * The following 3 stubs are needed because a macro cannot be used because of
 * the variable number of arguments.
 */

void
nbdbg(
	char		*fmt,
	...)
{
}

#endif /* NBDEBUG */
#endif /* NBDEBUG_H */