aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2025-02-05 23:09:29 +0000
committerJosh Rahm <joshuarahm@gmail.com>2025-02-05 23:09:29 +0000
commitd5f194ce780c95821a855aca3c19426576d28ae0 (patch)
treed45f461b19f9118ad2bb1f440a7a08973ad18832 /src/nvim/os
parentc5d770d311841ea5230426cc4c868e8db27300a8 (diff)
parent44740e561fc93afe3ebecfd3618bda2d2abeafb0 (diff)
downloadrneovim-rahm.tar.gz
rneovim-rahm.tar.bz2
rneovim-rahm.zip
Merge remote-tracking branch 'upstream/master' into mix_20240309HEADrahm
Diffstat (limited to 'src/nvim/os')
-rw-r--r--src/nvim/os/env.c3
-rw-r--r--src/nvim/os/fileio.c7
-rw-r--r--src/nvim/os/fs.c6
-rw-r--r--src/nvim/os/input.c4
-rw-r--r--src/nvim/os/nvim.rc2
-rw-r--r--src/nvim/os/pty_proc_unix.c1
-rw-r--r--src/nvim/os/shell.c22
-rw-r--r--src/nvim/os/signal.c3
8 files changed, 26 insertions, 22 deletions
diff --git a/src/nvim/os/env.c b/src/nvim/os/env.c
index ccf6c9554a..3126881266 100644
--- a/src/nvim/os/env.c
+++ b/src/nvim/os/env.c
@@ -15,7 +15,6 @@
#include "nvim/cmdexpand.h"
#include "nvim/cmdexpand_defs.h"
#include "nvim/eval.h"
-#include "nvim/gettext_defs.h"
#include "nvim/globals.h"
#include "nvim/log.h"
#include "nvim/macros_defs.h"
@@ -581,7 +580,7 @@ void expand_env(char *src, char *dst, int dstlen)
/// @param esc Escape spaces in expanded variables
/// @param one `srcp` is a single filename
/// @param prefix Start again after this (can be NULL)
-void expand_env_esc(char *restrict srcp, char *restrict dst, int dstlen, bool esc, bool one,
+void expand_env_esc(const char *restrict srcp, char *restrict dst, int dstlen, bool esc, bool one,
char *prefix)
FUNC_ATTR_NONNULL_ARG(1, 2)
{
diff --git a/src/nvim/os/fileio.c b/src/nvim/os/fileio.c
index 1981d0dfd4..1b202fdc59 100644
--- a/src/nvim/os/fileio.c
+++ b/src/nvim/os/fileio.c
@@ -8,16 +8,13 @@
#include <fcntl.h>
#include <stdbool.h>
#include <stddef.h>
-#include <stdint.h>
+#include <string.h>
#include <uv.h>
#include "auto/config.h"
-#include "nvim/gettext_defs.h"
-#include "nvim/globals.h"
#include "nvim/log.h"
#include "nvim/macros_defs.h"
#include "nvim/memory.h"
-#include "nvim/message.h"
#include "nvim/os/fileio.h"
#include "nvim/os/fs.h"
#include "nvim/os/os_defs.h"
@@ -28,7 +25,7 @@
#endif
#ifdef INCLUDE_GENERATED_DECLARATIONS
-# include "os/fileio.c.generated.h"
+# include "os/fileio.c.generated.h" // IWYU pragma: keep
#endif
/// Open file
diff --git a/src/nvim/os/fs.c b/src/nvim/os/fs.c
index d0da37b8e7..451994241d 100644
--- a/src/nvim/os/fs.c
+++ b/src/nvim/os/fs.c
@@ -370,8 +370,8 @@ static bool is_executable_in_path(const char *name, char **abspath)
char *path = xstrdup(path_env);
#endif
- size_t buf_len = strlen(name) + strlen(path) + 2;
- char *buf = xmalloc(buf_len);
+ const size_t bufsize = strlen(name) + strlen(path) + 2;
+ char *buf = xmalloc(bufsize);
// Walk through all entries in $PATH to check if "name" exists there and
// is an executable file.
@@ -382,7 +382,7 @@ static bool is_executable_in_path(const char *name, char **abspath)
// Combine the $PATH segment with `name`.
xmemcpyz(buf, p, (size_t)(e - p));
- (void)append_path(buf, name, buf_len);
+ (void)append_path(buf, name, bufsize);
#ifdef MSWIN
if (is_executable_ext(buf, abspath)) {
diff --git a/src/nvim/os/input.c b/src/nvim/os/input.c
index 2d17581bac..3259fb500b 100644
--- a/src/nvim/os/input.c
+++ b/src/nvim/os/input.c
@@ -1,4 +1,5 @@
#include <assert.h>
+#include <limits.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
@@ -13,7 +14,6 @@
#include "nvim/event/loop.h"
#include "nvim/event/multiqueue.h"
#include "nvim/event/rstream.h"
-#include "nvim/event/stream.h"
#include "nvim/getchar.h"
#include "nvim/gettext_defs.h"
#include "nvim/globals.h"
@@ -29,6 +29,7 @@
#include "nvim/profile.h"
#include "nvim/state.h"
#include "nvim/state_defs.h"
+#include "nvim/types_defs.h"
#define READ_BUFFER_SIZE 0xfff
#define INPUT_BUFFER_SIZE ((READ_BUFFER_SIZE * 4) + MAX_KEY_CODE_LEN)
@@ -402,6 +403,7 @@ static unsigned handle_mouse_event(const char **ptr, uint8_t *buf, unsigned bufs
if (type != KS_EXTRA
|| !((mouse_code >= KE_LEFTMOUSE && mouse_code <= KE_RIGHTRELEASE)
+ || (mouse_code >= KE_X1MOUSE && mouse_code <= KE_X2RELEASE)
|| (mouse_code >= KE_MOUSEDOWN && mouse_code <= KE_MOUSERIGHT)
|| mouse_code == KE_MOUSEMOVE)) {
return bufsize;
diff --git a/src/nvim/os/nvim.rc b/src/nvim/os/nvim.rc
new file mode 100644
index 0000000000..e838c93c16
--- /dev/null
+++ b/src/nvim/os/nvim.rc
@@ -0,0 +1,2 @@
+#include "winuser.h"
+2 RT_MANIFEST nvim.manifest
diff --git a/src/nvim/os/pty_proc_unix.c b/src/nvim/os/pty_proc_unix.c
index 3bca065d2d..10a464bbc3 100644
--- a/src/nvim/os/pty_proc_unix.c
+++ b/src/nvim/os/pty_proc_unix.c
@@ -30,6 +30,7 @@
#endif
#include "auto/config.h"
+#include "klib/kvec.h"
#include "nvim/eval/typval.h"
#include "nvim/event/defs.h"
#include "nvim/event/loop.h"
diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c
index 81b75dc4d3..d60d0b3e55 100644
--- a/src/nvim/os/shell.c
+++ b/src/nvim/os/shell.c
@@ -700,6 +700,7 @@ int os_call_shell(char *cmd, int opts, char *extra_args)
}
if (!emsg_silent && exitcode != 0 && !(opts & kShellOptSilent)) {
+ msg_ext_set_kind("shell_ret");
msg_puts(_("\nshell returned "));
msg_outnum(exitcode);
msg_putchar('\n');
@@ -1067,7 +1068,7 @@ static void out_data_ring(const char *output, size_t size)
}
if (output == NULL && size == SIZE_MAX) { // Print mode
- out_data_append_to_screen(last_skipped, &last_skipped_len, true);
+ out_data_append_to_screen(last_skipped, &last_skipped_len, STDOUT_FILENO, true);
return;
}
@@ -1095,14 +1096,15 @@ static void out_data_ring(const char *output, size_t size)
/// @param output Data to append to screen lines.
/// @param count Size of data.
/// @param eof If true, there will be no more data output.
-static void out_data_append_to_screen(const char *output, size_t *count, bool eof)
+static void out_data_append_to_screen(const char *output, size_t *count, int fd, bool eof)
FUNC_ATTR_NONNULL_ALL
{
const char *p = output;
const char *end = output + *count;
+ msg_ext_set_kind(fd == STDERR_FILENO ? "shell_err" : "shell_out");
while (p < end) {
if (*p == '\n' || *p == '\r' || *p == TAB || *p == BELL) {
- msg_putchar_hl((uint8_t)(*p), 0);
+ msg_putchar_hl((uint8_t)(*p), fd == STDERR_FILENO ? HLF_E : 0);
p++;
} else {
// Note: this is not 100% precise:
@@ -1118,7 +1120,7 @@ static void out_data_append_to_screen(const char *output, size_t *count, bool eo
goto end;
}
- msg_outtrans_len(p, i, 0, false);
+ msg_outtrans_len(p, i, fd == STDERR_FILENO ? HLF_E : 0, false);
p += i;
}
}
@@ -1133,7 +1135,7 @@ static size_t out_data_cb(RStream *stream, const char *ptr, size_t count, void *
// Save the skipped output. If it is the final chunk, we display it later.
out_data_ring(ptr, count);
} else if (count > 0) {
- out_data_append_to_screen(ptr, &count, eof);
+ out_data_append_to_screen(ptr, &count, stream->s.fd, eof);
}
return count;
@@ -1206,10 +1208,11 @@ static void read_input(StringBuilder *buf)
size_t len = 0;
linenr_T lnum = curbuf->b_op_start.lnum;
char *lp = ml_get(lnum);
+ size_t lplen = (size_t)ml_get_len(lnum);
while (true) {
- size_t l = strlen(lp + written);
- if (l == 0) {
+ lplen -= written;
+ if (lplen == 0) {
len = 0;
} else if (lp[written] == NL) {
// NL -> NUL translation
@@ -1217,11 +1220,11 @@ static void read_input(StringBuilder *buf)
kv_push(*buf, NUL);
} else {
char *s = vim_strchr(lp + written, NL);
- len = s == NULL ? l : (size_t)(s - (lp + written));
+ len = s == NULL ? lplen : (size_t)(s - (lp + written));
kv_concat_len(*buf, lp + written, len);
}
- if (len == l) {
+ if (len == lplen) {
// Finished a line, add a NL, unless this line should not have one.
if (lnum != curbuf->b_op_end.lnum
|| (!curbuf->b_p_bin && curbuf->b_p_fixeol)
@@ -1234,6 +1237,7 @@ static void read_input(StringBuilder *buf)
break;
}
lp = ml_get(lnum);
+ lplen = (size_t)ml_get_len(lnum);
written = 0;
} else if (len > 0) {
written += len;
diff --git a/src/nvim/os/signal.c b/src/nvim/os/signal.c
index ecedf144e5..98d13fc9d1 100644
--- a/src/nvim/os/signal.c
+++ b/src/nvim/os/signal.c
@@ -187,8 +187,7 @@ static void on_signal(SignalWatcher *handle, int signum, void *data)
switch (signum) {
#ifdef SIGPWR
case SIGPWR:
- // Signal of a power failure(eg batteries low), flush the swap files to
- // be safe
+ // Signal of a power failure (eg batteries low), flush the swap files to be safe
ml_sync_all(false, false, true);
break;
#endif