aboutsummaryrefslogtreecommitdiff
path: root/src/nvim
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim')
-rwxr-xr-xsrc/nvim/CMakeLists.txt9
-rw-r--r--src/nvim/buffer.c2
-rw-r--r--src/nvim/buffer_defs.h19
-rw-r--r--src/nvim/lua/stdlib.c4
-rw-r--r--src/nvim/mbyte.c17
-rw-r--r--src/nvim/ops.c2
-rw-r--r--src/nvim/window.c11
7 files changed, 35 insertions, 29 deletions
diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt
index f302f25ad6..017883a913 100755
--- a/src/nvim/CMakeLists.txt
+++ b/src/nvim/CMakeLists.txt
@@ -778,9 +778,16 @@ add_glob_targets(
FLAGS -c "${PROJECT_SOURCE_DIR}/src/uncrustify.cfg" -q --check
FILES ${LINT_NVIM_SOURCES}
)
-
add_dependencies(lintuncrustify uncrustify-version)
+add_custom_target(formatc
+ COMMAND ${CMAKE_COMMAND}
+ -D FORMAT_PRG=${UNCRUSTIFY_PRG}
+ -D LANG=c
+ -P ${PROJECT_SOURCE_DIR}/cmake/Format.cmake
+ WORKING_DIRECTORY ${PROJECT_SOURCE_DIR})
+add_dependencies(formatc uncrustify-version)
+
add_custom_target(
lintcfull
COMMAND
diff --git a/src/nvim/buffer.c b/src/nvim/buffer.c
index 328a72476a..6dd71e92a6 100644
--- a/src/nvim/buffer.c
+++ b/src/nvim/buffer.c
@@ -3288,7 +3288,7 @@ void maketitle(void)
len = (int)STRLEN(buf_p);
if (len > 100) {
len -= 100;
- len += mb_tail_off(buf_p, buf_p + len) + 1;
+ len += utf_cp_tail_off(buf_p, buf_p + len) + 1;
buf_p += len;
}
STRCPY(icon_str, buf_p);
diff --git a/src/nvim/buffer_defs.h b/src/nvim/buffer_defs.h
index aeba3acbc3..3ef5ea7e02 100644
--- a/src/nvim/buffer_defs.h
+++ b/src/nvim/buffer_defs.h
@@ -947,16 +947,15 @@ struct diffblock_S {
typedef struct tabpage_S tabpage_T;
struct tabpage_S {
handle_T handle;
- tabpage_T *tp_next; ///< next tabpage or NULL
- frame_T *tp_topframe; ///< topframe for the windows
- win_T *tp_curwin; ///< current window in this Tab page
- win_T *tp_prevwin; ///< previous window in this Tab page
- win_T *tp_firstwin; ///< first window in this Tab page
- win_T *tp_lastwin; ///< last window in this Tab page
- long tp_old_Rows; ///< Rows when Tab page was left
- long tp_old_Columns; ///< Columns when Tab page was left
- long tp_ch_used; ///< value of 'cmdheight' when frame size
- ///< was set
+ tabpage_T *tp_next; ///< next tabpage or NULL
+ frame_T *tp_topframe; ///< topframe for the windows
+ win_T *tp_curwin; ///< current window in this Tab page
+ win_T *tp_prevwin; ///< previous window in this Tab page
+ win_T *tp_firstwin; ///< first window in this Tab page
+ win_T *tp_lastwin; ///< last window in this Tab page
+ long tp_old_Rows_avail; ///< ROWS_AVAIL when Tab page was left
+ long tp_old_Columns; ///< Columns when Tab page was left
+ long tp_ch_used; ///< value of 'cmdheight' when frame size was set
diff_T *tp_first_diff;
buf_T *(tp_diffbuf[DB_COUNT]);
diff --git a/src/nvim/lua/stdlib.c b/src/nvim/lua/stdlib.c
index 8fde85b163..6ba0056f48 100644
--- a/src/nvim/lua/stdlib.c
+++ b/src/nvim/lua/stdlib.c
@@ -232,7 +232,7 @@ static int nlua_str_utf_start(lua_State *const lstate) FUNC_ATTR_NONNULL_ALL
if (offset < 0 || offset > (intptr_t)s1_len) {
return luaL_error(lstate, "index out of range");
}
- int head_offset = mb_head_off((char_u *)s1, (char_u *)s1 + offset - 1);
+ int head_offset = utf_cp_head_off((char_u *)s1, (char_u *)s1 + offset - 1);
lua_pushinteger(lstate, head_offset);
return 1;
}
@@ -252,7 +252,7 @@ static int nlua_str_utf_end(lua_State *const lstate) FUNC_ATTR_NONNULL_ALL
if (offset < 0 || offset > (intptr_t)s1_len) {
return luaL_error(lstate, "index out of range");
}
- int tail_offset = mb_tail_off(s1, s1 + offset - 1);
+ int tail_offset = utf_cp_tail_off(s1, s1 + offset - 1);
lua_pushinteger(lstate, tail_offset);
return 1;
}
diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c
index cf4ac27d1a..223b4d6845 100644
--- a/src/nvim/mbyte.c
+++ b/src/nvim/mbyte.c
@@ -1837,10 +1837,10 @@ int mb_off_next(const char_u *base, const char_u *p)
return i;
}
-/// Return the offset from "p" to the last byte of the character it points
-/// into. Can start anywhere in a stream of bytes.
-/// Composing characters are not included.
-int mb_tail_off(const char *base, const char *p_in)
+/// Return the offset from `p_in` to the last byte of the codepoint it points
+/// to. Can start anywhere in a stream of bytes.
+/// Note: Counts individual codepoints of composed characters separately.
+int utf_cp_tail_off(const char *base, const char *p_in)
{
const uint8_t *p = (uint8_t *)p_in;
int i;
@@ -1866,15 +1866,16 @@ int mb_tail_off(const char *base, const char *p_in)
return i;
}
-/// Return the offset from "p" to the first byte of the character it points
-/// into. Can start anywhere in a stream of bytes.
-/// Unlike utf_head_off() this doesn't include composing characters and returns a negative value.
+/// Return the offset from "p" to the first byte of the codepoint it points
+/// to. Can start anywhere in a stream of bytes.
+/// Note: Unlike `utf_head_off`, this counts individual codepoints of composed characters
+/// separately and returns a negative offset.
///
/// @param[in] base Pointer to start of string
/// @param[in] p Pointer to byte for which to return the offset to the previous codepoint
//
/// @return 0 if invalid sequence, else offset to previous codepoint
-int mb_head_off(const char_u *base, const char_u *p)
+int utf_cp_head_off(const char_u *base, const char_u *p)
{
int i;
int j;
diff --git a/src/nvim/ops.c b/src/nvim/ops.c
index 0bcc5ecd0e..660902b10b 100644
--- a/src/nvim/ops.c
+++ b/src/nvim/ops.c
@@ -1828,7 +1828,7 @@ static void mb_adjust_opend(oparg_T *oap)
{
if (oap->inclusive) {
char *p = (char *)ml_get(oap->end.lnum);
- oap->end.col += mb_tail_off(p, p + oap->end.col);
+ oap->end.col += utf_cp_tail_off(p, p + oap->end.col);
}
}
diff --git a/src/nvim/window.c b/src/nvim/window.c
index e820be626c..c7f038850e 100644
--- a/src/nvim/window.c
+++ b/src/nvim/window.c
@@ -4293,7 +4293,7 @@ static int leave_tabpage(buf_T *new_curbuf, bool trigger_leave_autocmds)
tp->tp_prevwin = prevwin;
tp->tp_firstwin = firstwin;
tp->tp_lastwin = lastwin;
- tp->tp_old_Rows = Rows;
+ tp->tp_old_Rows_avail = ROWS_AVAIL;
tp->tp_old_Columns = Columns;
firstwin = NULL;
lastwin = NULL;
@@ -4333,10 +4333,7 @@ static void enter_tabpage(tabpage_T *tp, buf_T *old_curbuf, bool trigger_enter_a
const int row = win_comp_pos(); // recompute w_winrow for all windows
diff_need_scrollbind = true;
- // The tabpage line may have appeared or disappeared, may need to resize
- // the frames for that. When the Vim window was resized need to update
- // frame sizes too. Use the stored value of p_ch, so that it can be
- // different for each tab page.
+ // Use the stored value of p_ch, so that it can be different for each tab page.
if (p_ch != curtab->tp_ch_used) {
clear_cmdline = true;
}
@@ -4349,7 +4346,9 @@ static void enter_tabpage(tabpage_T *tp, buf_T *old_curbuf, bool trigger_enter_a
clear_cmdline = true;
}
- if (curtab->tp_old_Rows != Rows || (old_off != firstwin->w_winrow)) {
+ // The tabpage line may have appeared or disappeared, may need to resize the frames for that.
+ // When the Vim window was resized or ROWS_AVAIL changed need to update frame sizes too.
+ if (curtab->tp_old_Rows_avail != ROWS_AVAIL || (old_off != firstwin->w_winrow)) {
win_new_screen_rows();
}
if (curtab->tp_old_Columns != Columns && starting == 0) {