mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
feat(message): avoid spam on failed os_msg
also de-dupe the code
This commit is contained in:
parent
f43de742e8
commit
e8ab218716
@ -3003,31 +3003,36 @@ static int do_more_prompt(int typed_char)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(MSWIN)
|
#if defined(MSWIN)
|
||||||
void os_errmsg(char *str)
|
/// Headless (no UI) error message handler.
|
||||||
|
static void do_msg(char *str, bool errmsg)
|
||||||
{
|
{
|
||||||
|
static bool did_err = false;
|
||||||
assert(str != NULL);
|
assert(str != NULL);
|
||||||
wchar_t *utf16str;
|
wchar_t *utf16str;
|
||||||
int r = utf8_to_utf16(str, -1, &utf16str);
|
int r = utf8_to_utf16(str, -1, &utf16str);
|
||||||
if (r != 0) {
|
if (r != 0 && !did_err) {
|
||||||
|
did_err = true;
|
||||||
fprintf(stderr, "utf8_to_utf16 failed: %d", r);
|
fprintf(stderr, "utf8_to_utf16 failed: %d", r);
|
||||||
} else {
|
ELOG("utf8_to_utf16 failed: %d", r);
|
||||||
fwprintf(stderr, L"%ls", utf16str);
|
} else if (r == 0) {
|
||||||
|
if (errmsg) {
|
||||||
|
fwprintf(stderr, L"%ls", utf16str);
|
||||||
|
} else {
|
||||||
|
wprintf(L"%ls", utf16str);
|
||||||
|
}
|
||||||
xfree(utf16str);
|
xfree(utf16str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Give a message. To be used when the UI is not initialized yet.
|
void os_errmsg(char *str)
|
||||||
|
{
|
||||||
|
do_msg(str, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Headless (no UI) message handler.
|
||||||
void os_msg(char *str)
|
void os_msg(char *str)
|
||||||
{
|
{
|
||||||
assert(str != NULL);
|
do_msg(str, false);
|
||||||
wchar_t *utf16str;
|
|
||||||
int r = utf8_to_utf16(str, -1, &utf16str);
|
|
||||||
if (r != 0) {
|
|
||||||
fprintf(stderr, "utf8_to_utf16 failed: %d", r);
|
|
||||||
} else {
|
|
||||||
wprintf(L"%ls", utf16str);
|
|
||||||
xfree(utf16str);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#endif // MSWIN
|
#endif // MSWIN
|
||||||
|
|
||||||
|
@ -245,12 +245,10 @@ enum { FOLD_TEXT_LEN = 51, }; //!< buffer size for get_foldtext()
|
|||||||
/// plus six following composing characters of three bytes each.
|
/// plus six following composing characters of three bytes each.
|
||||||
#define MB_MAXBYTES 21
|
#define MB_MAXBYTES 21
|
||||||
|
|
||||||
// This has to go after the include of proto.h, as proto/gui.pro declares
|
|
||||||
// functions of these names. The declarations would break if the defines had
|
|
||||||
// been seen at that stage. But it must be before globals.h, where error_ga
|
|
||||||
// is declared.
|
|
||||||
#ifndef MSWIN
|
#ifndef MSWIN
|
||||||
|
/// Headless (no UI) error message handler.
|
||||||
# define os_errmsg(str) fprintf(stderr, "%s", (str))
|
# define os_errmsg(str) fprintf(stderr, "%s", (str))
|
||||||
|
/// Headless (no UI) message handler.
|
||||||
# define os_msg(str) printf("%s", (str))
|
# define os_msg(str) printf("%s", (str))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user