mirror of
https://github.com/neovim/neovim.git
synced 2026-09-15 10:22:15 +00:00
Problem: Highlight group id is not propagated to the end of the message call
stack, where ext_messages are emitted.
Solution: Refactor message functions to pass along highlight group id
instead of attr id.
65 lines
1.9 KiB
C
65 lines
1.9 KiB
C
#pragma once
|
|
|
|
#include <errno.h>
|
|
#include <stdbool.h>
|
|
#include <stddef.h> // IWYU pragma: keep
|
|
|
|
#include "nvim/ex_cmds_defs.h" // IWYU pragma: keep
|
|
#include "nvim/grid_defs.h"
|
|
#include "nvim/macros_defs.h"
|
|
#include "nvim/message_defs.h" // IWYU pragma: keep
|
|
|
|
/// Types of dialogs passed to do_dialog().
|
|
enum {
|
|
VIM_GENERIC = 0,
|
|
VIM_ERROR = 1,
|
|
VIM_WARNING = 2,
|
|
VIM_INFO = 3,
|
|
VIM_QUESTION = 4,
|
|
VIM_LAST_TYPE = 4, ///< sentinel value
|
|
};
|
|
|
|
/// Return values for functions like vim_dialogyesno()
|
|
enum {
|
|
VIM_YES = 2,
|
|
VIM_NO = 3,
|
|
VIM_CANCEL = 4,
|
|
VIM_ALL = 5,
|
|
VIM_DISCARDALL = 6,
|
|
};
|
|
|
|
/// First message
|
|
extern MessageHistoryEntry *first_msg_hist;
|
|
/// Last message
|
|
extern MessageHistoryEntry *last_msg_hist;
|
|
|
|
EXTERN bool msg_ext_need_clear INIT( = false);
|
|
|
|
/// allocated grid for messages. Used when display+=msgsep is set, or
|
|
/// ext_multigrid is active. See also the description at msg_scroll_flush()
|
|
EXTERN ScreenGrid msg_grid INIT( = SCREEN_GRID_INIT);
|
|
EXTERN int msg_grid_pos INIT( = 0);
|
|
|
|
/// "adjusted" message grid. This grid accepts positions relative to
|
|
/// default_grid. Internally it will be translated to a position on msg_grid
|
|
/// relative to the start of the message area, or directly mapped to default_grid
|
|
/// for legacy (display-=msgsep) message scroll behavior.
|
|
/// TODO(bfredl): refactor "internal" message logic, msg_row etc
|
|
/// to use the correct positions already.
|
|
EXTERN ScreenGrid msg_grid_adj INIT( = SCREEN_GRID_INIT);
|
|
|
|
/// value of msg_scrolled at latest msg_scroll_flush.
|
|
EXTERN int msg_scrolled_at_flush INIT( = 0);
|
|
|
|
EXTERN int msg_grid_scroll_discount INIT( = 0);
|
|
|
|
EXTERN int msg_listdo_overwrite INIT( = 0);
|
|
|
|
#ifdef INCLUDE_GENERATED_DECLARATIONS
|
|
# include "message.h.generated.h"
|
|
#endif
|
|
|
|
// Prefer using semsg(), because perror() may send the output to the wrong
|
|
// destination and mess up the screen.
|
|
#define PERROR(msg) (void)semsg("%s: %s", (msg), strerror(errno))
|