diff options
-rw-r--r-- | runtime/autoload/dist/ft.vim | 2 | ||||
-rw-r--r-- | runtime/filetype.vim | 10 | ||||
-rw-r--r-- | runtime/lua/vim/filetype.lua | 8 | ||||
-rw-r--r-- | runtime/lua/vim/filetype/detect.lua | 2 | ||||
-rw-r--r-- | runtime/lua/vim/lsp/handlers.lua | 1 | ||||
-rw-r--r-- | runtime/lua/vim/lsp/protocol.lua | 1 | ||||
-rwxr-xr-x | src/nvim/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/nvim/mbyte.c | 88 | ||||
-rw-r--r-- | src/nvim/testdir/test_filetype.vim | 26 |
9 files changed, 83 insertions, 56 deletions
diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index 9e30ae1f51..a2f485dd67 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -519,7 +519,7 @@ func dist#ft#FTinc() " headers so assume POV-Ray elseif lines =~ '^\s*\%({\|(\*\)' || lines =~? s:ft_pascal_keywords setf pascal - elseif lines =~# '\<\%(require\|inherit\)\>' || lines =~# '\w\+ = ' + elseif lines =~# '\<\%(require\|inherit\)\>' || lines =~# '[A-Z][A-Za-z0-9_:${}]*\s\+\%(??\|[?:+]\)\?= ' setf bitbake else call dist#ft#FTasmsyntax() diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 5a5937a209..fbb4b9f6aa 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -860,9 +860,13 @@ au BufNewFile,BufRead *.hb setf hb " Httest au BufNewFile,BufRead *.htt,*.htb setf httest -" i3 (and sway) -au BufNewFile,BufRead */i3/config,*/sway/config setf i3config -au BufNewFile,BufRead */.i3/config,*/.sway/config setf i3config +" i3 +au BufNewFile,BufRead */i3/config setf i3config +au BufNewFile,BufRead */.i3/config setf i3config + +" sway +au BufNewFile,BufRead */sway/config setf swayconfig +au BufNewFile,BufRead */.sway/config setf swayconfig " Icon au BufNewFile,BufRead *.icn setf icon diff --git a/runtime/lua/vim/filetype.lua b/runtime/lua/vim/filetype.lua index 10eff6598c..9c59442caf 100644 --- a/runtime/lua/vim/filetype.lua +++ b/runtime/lua/vim/filetype.lua @@ -1384,10 +1384,6 @@ local filename = { ['/etc/host.conf'] = 'hostconf', ['/etc/hosts.allow'] = 'hostsaccess', ['/etc/hosts.deny'] = 'hostsaccess', - ['/i3/config'] = 'i3config', - ['/sway/config'] = 'i3config', - ['/.sway/config'] = 'i3config', - ['/.i3/config'] = 'i3config', ['/.icewm/menu'] = 'icemenu', ['.indent.pro'] = 'indent', indentrc = 'indent', @@ -1835,9 +1831,7 @@ local pattern = { ['.*/etc/hosts%.allow'] = 'hostsaccess', ['.*%.html%.m4'] = 'htmlm4', ['.*/%.i3/config'] = 'i3config', - ['.*/sway/config'] = 'i3config', ['.*/i3/config'] = 'i3config', - ['.*/%.sway/config'] = 'i3config', ['.*/%.icewm/menu'] = 'icemenu', ['.*/etc/initng/.*/.*%.i'] = 'initng', ['JAM.*%..*'] = starsetf('jam'), @@ -2076,6 +2070,8 @@ local pattern = { end, ['.*/etc/sudoers'] = 'sudoers', ['svn%-commit.*%.tmp'] = 'svn', + ['.*/sway/config'] = 'swayconfig', + ['.*/%.sway/config'] = 'swayconfig', ['.*%.swift%.gyb'] = 'swiftgyb', ['.*%.[Ss][Yy][Ss]'] = function(path, bufnr) return require('vim.filetype.detect').sys(bufnr) diff --git a/runtime/lua/vim/filetype/detect.lua b/runtime/lua/vim/filetype/detect.lua index 8c10517687..14f076717f 100644 --- a/runtime/lua/vim/filetype/detect.lua +++ b/runtime/lua/vim/filetype/detect.lua @@ -554,7 +554,7 @@ function M.inc(bufnr) -- headers so assume POV-Ray elseif findany(lines, { '^%s{', '^%s%(%*' }) or matchregex(lines, pascal_keywords) then return 'pascal' - elseif findany(lines, { '^%s*inherit ', '^%s*require ', '^%s*%w+%s+= ' }) then + elseif findany(lines, { '^%s*inherit ', '^%s*require ', '^%s*%u[%w_:${}]*%s+%??[?:+]?= ' }) then return 'bitbake' else local syntax = M.asm_syntax(bufnr) diff --git a/runtime/lua/vim/lsp/handlers.lua b/runtime/lua/vim/lsp/handlers.lua index cfc35f0b51..1e6ac8dddf 100644 --- a/runtime/lua/vim/lsp/handlers.lua +++ b/runtime/lua/vim/lsp/handlers.lua @@ -257,6 +257,7 @@ end) --see: https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_rename M['textDocument/rename'] = function(_, result, ctx, _) if not result then + vim.notify("Language server couldn't provide rename result", vim.log.levels.INFO) return end local client = vim.lsp.get_client_by_id(ctx.client_id) diff --git a/runtime/lua/vim/lsp/protocol.lua b/runtime/lua/vim/lsp/protocol.lua index 6ecb9959d5..27da60b4ae 100644 --- a/runtime/lua/vim/lsp/protocol.lua +++ b/runtime/lua/vim/lsp/protocol.lua @@ -759,6 +759,7 @@ function protocol.make_client_capabilities() }, hierarchicalWorkspaceSymbolSupport = true, }, + configuration = true, workspaceFolders = true, applyEdit = true, workspaceEdit = { diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt index 2f286273ca..0798432255 100755 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -159,7 +159,6 @@ list(REMOVE_ITEM NVIM_SOURCES ${to_remove}) # Legacy files that do not yet pass -Wconversion. set(CONV_SOURCES lua/treesitter.c - mbyte.c regexp.c screen.c spell.c diff --git a/src/nvim/mbyte.c b/src/nvim/mbyte.c index a9792cf1b9..cf4ac27d1a 100644 --- a/src/nvim/mbyte.c +++ b/src/nvim/mbyte.c @@ -551,7 +551,7 @@ size_t mb_string2cells(const char *str) size_t clen = 0; for (const char_u *p = (char_u *)str; *p != NUL; p += utfc_ptr2len((char *)p)) { - clen += utf_ptr2cells((char *)p); + clen += (size_t)utf_ptr2cells((char *)p); } return clen; @@ -569,8 +569,8 @@ size_t mb_string2cells_len(const char *str, size_t size) size_t clen = 0; for (const char_u *p = (char_u *)str; *p != NUL && p < (char_u *)str + size; - p += utfc_ptr2len_len(p, size + (p - (char_u *)str))) { - clen += utf_ptr2cells((char *)p); + p += utfc_ptr2len_len(p, (int)size + (int)(p - (char_u *)str))) { + clen += (size_t)utf_ptr2cells((char *)p); } return clen; @@ -994,37 +994,37 @@ int utf_char2len(const int c) int utf_char2bytes(const int c, char *const buf) { if (c < 0x80) { // 7 bits - buf[0] = c; + buf[0] = (char)c; return 1; } else if (c < 0x800) { // 11 bits - buf[0] = 0xc0 + ((unsigned)c >> 6); - buf[1] = 0x80 + (c & 0x3f); + buf[0] = (char)(0xc0 + ((unsigned)c >> 6)); + buf[1] = (char)(0x80 + ((unsigned)c & 0x3f)); return 2; } else if (c < 0x10000) { // 16 bits - buf[0] = 0xe0 + ((unsigned)c >> 12); - buf[1] = 0x80 + (((unsigned)c >> 6) & 0x3f); - buf[2] = 0x80 + (c & 0x3f); + buf[0] = (char)(0xe0 + ((unsigned)c >> 12)); + buf[1] = (char)(0x80 + (((unsigned)c >> 6) & 0x3f)); + buf[2] = (char)(0x80 + ((unsigned)c & 0x3f)); return 3; } else if (c < 0x200000) { // 21 bits - buf[0] = 0xf0 + ((unsigned)c >> 18); - buf[1] = 0x80 + (((unsigned)c >> 12) & 0x3f); - buf[2] = 0x80 + (((unsigned)c >> 6) & 0x3f); - buf[3] = 0x80 + (c & 0x3f); + buf[0] = (char)(0xf0 + ((unsigned)c >> 18)); + buf[1] = (char)(0x80 + (((unsigned)c >> 12) & 0x3f)); + buf[2] = (char)(0x80 + (((unsigned)c >> 6) & 0x3f)); + buf[3] = (char)(0x80 + ((unsigned)c & 0x3f)); return 4; } else if (c < 0x4000000) { // 26 bits - buf[0] = 0xf8 + ((unsigned)c >> 24); - buf[1] = 0x80 + (((unsigned)c >> 18) & 0x3f); - buf[2] = 0x80 + (((unsigned)c >> 12) & 0x3f); - buf[3] = 0x80 + (((unsigned)c >> 6) & 0x3f); - buf[4] = 0x80 + (c & 0x3f); + buf[0] = (char)(0xf8 + ((unsigned)c >> 24)); + buf[1] = (char)(0x80 + (((unsigned)c >> 18) & 0x3f)); + buf[2] = (char)(0x80 + (((unsigned)c >> 12) & 0x3f)); + buf[3] = (char)(0x80 + (((unsigned)c >> 6) & 0x3f)); + buf[4] = (char)(0x80 + ((unsigned)c & 0x3f)); return 5; } else { // 31 bits - buf[0] = 0xfc + ((unsigned)c >> 30); - buf[1] = 0x80 + (((unsigned)c >> 24) & 0x3f); - buf[2] = 0x80 + (((unsigned)c >> 18) & 0x3f); - buf[3] = 0x80 + (((unsigned)c >> 12) & 0x3f); - buf[4] = 0x80 + (((unsigned)c >> 6) & 0x3f); - buf[5] = 0x80 + (c & 0x3f); + buf[0] = (char)(0xfc + ((unsigned)c >> 30)); + buf[1] = (char)(0x80 + (((unsigned)c >> 24) & 0x3f)); + buf[2] = (char)(0x80 + (((unsigned)c >> 18) & 0x3f)); + buf[3] = (char)(0x80 + (((unsigned)c >> 12) & 0x3f)); + buf[4] = (char)(0x80 + (((unsigned)c >> 6) & 0x3f)); + buf[5] = (char)(0x80 + ((unsigned)c & 0x3f)); return 6; } } @@ -1251,7 +1251,7 @@ int mb_toupper(int a) #if defined(__STDC_ISO_10646__) // If towupper() is available and handles Unicode, use it. if (!(cmp_flags & CMP_INTERNAL)) { - return towupper(a); + return (int)towupper((wint_t)a); } #endif @@ -1282,7 +1282,7 @@ int mb_tolower(int a) #if defined(__STDC_ISO_10646__) // If towlower() is available and handles Unicode, use it. if (!(cmp_flags & CMP_INTERNAL)) { - return towlower(a); + return (int)towlower((wint_t)a); } #endif @@ -1347,10 +1347,10 @@ static int utf_strnicmp(const char_u *s1, const char_u *s2, size_t n1, size_t n2 // to fold just one character to determine the result of comparison. if (c1 != -1 && c2 == -1) { - n1 = utf_char2bytes(utf_fold(c1), (char *)buffer); + n1 = (size_t)utf_char2bytes(utf_fold(c1), (char *)buffer); s1 = (char_u *)buffer; } else if (c2 != -1 && c1 == -1) { - n2 = utf_char2bytes(utf_fold(c2), (char *)buffer); + n2 = (size_t)utf_char2bytes(utf_fold(c2), (char *)buffer); s2 = (char_u *)buffer; } @@ -1487,7 +1487,7 @@ void mb_utflen(const char_u *s, size_t len, size_t *codepoints, size_t *codeunit size_t count = 0, extra = 0; size_t clen; for (size_t i = 0; i < len && s[i] != NUL; i += clen) { - clen = utf_ptr2len_len(s + i, len - i); + clen = (size_t)utf_ptr2len_len(s + i, (int)(len - i)); // NB: gets the byte value of invalid sequence bytes. // we only care whether the char fits in the BMP or not int c = (clen > 1) ? utf_ptr2char((char *)s + i) : s[i]; @@ -1509,7 +1509,7 @@ ssize_t mb_utf_index_to_bytes(const char_u *s, size_t len, size_t index, bool us return 0; } for (i = 0; i < len && s[i] != NUL; i += clen) { - clen = utf_ptr2len_len(s + i, len - i); + clen = (size_t)utf_ptr2len_len(s + i, (int)(len - i)); // NB: gets the byte value of invalid sequence bytes. // we only care whether the char fits in the BMP or not int c = (clen > 1) ? utf_ptr2char((char *)s + i) : s[i]; @@ -1518,7 +1518,7 @@ ssize_t mb_utf_index_to_bytes(const char_u *s, size_t len, size_t index, bool us count++; } if (count >= index) { - return i + clen; + return (ssize_t)(i + clen); } } return -1; @@ -2165,7 +2165,7 @@ char_u *enc_canonize(char_u *enc) FUNC_ATTR_NONNULL_RET if (*s == '_') { *p++ = '-'; } else { - *p++ = TOLOWER_ASC(*s); + *p++ = (char_u)TOLOWER_ASC(*s); } } *p = NUL; @@ -2269,8 +2269,8 @@ char_u *enc_locale(void) && !isalnum((int)p[4]) && p[4] != '-' && p[-3] == '_') { // Copy "XY.EUC" to "euc-XY" to buf[10]. memmove(buf, "euc-", 4); - buf[4] = (ASCII_ISALNUM(p[-2]) ? TOLOWER_ASC(p[-2]) : 0); - buf[5] = (ASCII_ISALNUM(p[-1]) ? TOLOWER_ASC(p[-1]) : 0); + buf[4] = (char)(ASCII_ISALNUM(p[-2]) ? TOLOWER_ASC(p[-2]) : 0); + buf[5] = (char)(ASCII_ISALNUM(p[-1]) ? TOLOWER_ASC(p[-1]) : 0); buf[6] = NUL; } else { s = p + 1; @@ -2282,7 +2282,7 @@ enc_locale_copy_enc: if (s[i] == '_' || s[i] == '-') { buf[i] = '-'; } else if (ASCII_ISALNUM((uint8_t)s[i])) { - buf[i] = TOLOWER_ASC(s[i]); + buf[i] = (char)TOLOWER_ASC(s[i]); } else { break; } @@ -2406,14 +2406,14 @@ static char_u *iconv_string(const vimconv_T *const vcp, char_u *str, size_t slen } l = utfc_ptr2len_len((const char_u *)from, (int)fromlen); from += l; - fromlen -= l; + fromlen -= (size_t)l; } else if (ICONV_ERRNO != ICONV_E2BIG) { // conversion failed XFREE_CLEAR(result); break; } // Not enough room or skipping illegal sequence. - done = to - (char *)result; + done = (size_t)(to - (char *)result); } if (resultlenp != NULL && result != NULL) { @@ -2550,10 +2550,10 @@ char_u *string_convert_ext(const vimconv_T *const vcp, char_u *ptr, size_t *lenp for (size_t i = 0; i < len; ++i) { c = ptr[i]; if (c < 0x80) { - *d++ = c; + *d++ = (char_u)c; } else { - *d++ = 0xc0 + ((unsigned)c >> 6); - *d++ = 0x80 + (c & 0x3f); + *d++ = (char_u)(0xc0 + (char_u)((unsigned)c >> 6)); + *d++ = (char_u)(0x80 + (c & 0x3f)); } } *d = NUL; @@ -2597,8 +2597,8 @@ char_u *string_convert_ext(const vimconv_T *const vcp, char_u *ptr, size_t *lenp case CONV_TO_LATIN9: // utf-8 to latin9 conversion retval = xmalloc(len + 1); d = retval; - for (size_t i = 0; i < len; ++i) { - l = utf_ptr2len_len(ptr + i, len - i); + for (size_t i = 0; i < len; i++) { + l = utf_ptr2len_len(ptr + i, (int)(len - i)); if (l == 0) { *d++ = NUL; } else if (l == 1) { @@ -2648,7 +2648,7 @@ char_u *string_convert_ext(const vimconv_T *const vcp, char_u *ptr, size_t *lenp } if (!utf_iscomposing(c)) { // skip composing chars if (c < 0x100) { - *d++ = c; + *d++ = (char_u)c; } else if (vcp->vc_fail) { xfree(retval); return NULL; @@ -2659,7 +2659,7 @@ char_u *string_convert_ext(const vimconv_T *const vcp, char_u *ptr, size_t *lenp } } } - i += l - 1; + i += (size_t)l - 1; } } *d = NUL; diff --git a/src/nvim/testdir/test_filetype.vim b/src/nvim/testdir/test_filetype.vim index 53f8d4f3ef..eedad15e9e 100644 --- a/src/nvim/testdir/test_filetype.vim +++ b/src/nvim/testdir/test_filetype.vim @@ -534,6 +534,7 @@ let s:filename_checks = { \ 'svelte': ['file.svelte'], \ 'svg': ['file.svg'], \ 'svn': ['svn-commitfile.tmp', 'svn-commit-file.tmp', 'svn-commit.tmp'], + \ 'swayconfig': ['/home/user/.sway/config', '/home/user/.config/sway/config', '/etc/sway/config', '/etc/xdg/sway/config'], \ 'swift': ['file.swift'], \ 'swiftgyb': ['file.swift.gyb'], \ 'sysctl': ['/etc/sysctl.conf', '/etc/sysctl.d/file.conf', 'any/etc/sysctl.conf', 'any/etc/sysctl.d/file.conf'], @@ -1861,6 +1862,31 @@ func Test_inc_file() call assert_equal('bitbake', &filetype) bwipe! + call writefile(['S = "${WORKDIR}"'], 'Xfile.inc') + split Xfile.inc + call assert_equal('bitbake', &filetype) + bwipe! + + call writefile(['DEPENDS:append = " somedep"'], 'Xfile.inc') + split Xfile.inc + call assert_equal('bitbake', &filetype) + bwipe! + + call writefile(['MACHINE ??= "qemu"'], 'Xfile.inc') + split Xfile.inc + call assert_equal('bitbake', &filetype) + bwipe! + + call writefile(['PROVIDES := "test"'], 'Xfile.inc') + split Xfile.inc + call assert_equal('bitbake', &filetype) + bwipe! + + call writefile(['RDEPENDS_${PN} += "bar"'], 'Xfile.inc') + split Xfile.inc + call assert_equal('bitbake', &filetype) + bwipe! + " asm call writefile(['asmsyntax=bar'], 'Xfile.inc') split Xfile.inc |