diff options
Diffstat (limited to 'src/nvim')
-rwxr-xr-x | src/nvim/CMakeLists.txt | 9 | ||||
-rw-r--r-- | src/nvim/buffer.c | 2 | ||||
-rw-r--r-- | src/nvim/buffer_defs.h | 19 | ||||
-rw-r--r-- | src/nvim/lua/stdlib.c | 4 | ||||
-rw-r--r-- | src/nvim/mbyte.c | 17 | ||||
-rw-r--r-- | src/nvim/ops.c | 2 | ||||
-rw-r--r-- | src/nvim/window.c | 11 |
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) { |