Skip to content

Commit 8c46413

Browse files
authored
[vim] Improve iskeyword for LLVM IR (#117905)
This patch sets the 'iskeyword' variable to characters found in LLVM IR identifiers. Keywords are used in many places in vim, most notably being treated as word boundaries for commands like 'w' and '*'. The aim with this is to improve the navigability and editability of LLVM IR files as now one is able to: skip over entire identifiers with motions (e.g., `w/e/b`); yank/delete whole identifiers (e.g., `diw`); highlight/search for the identifier under the cursor (`*`), etc. More complicated LLVM identifiers including quotation marks are not supported. The 'iskeyword' variable is just a list of characters, not a regex, and including quotation marks and all the characters permitted in quoted identifiers would expand the scope to almost everything and become less usable. These types of identifiers are rare by comparison. Note that this does change how words are considered across the entire LLVM IR file, so including strings, comments, names, etc. Given that the majority of editing/navigating LLVM IR is working with and across values, this is arguably a worthwhile trade-off.
1 parent 12ca72b commit 8c46413

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

llvm/utils/vim/ftplugin/llvm.vim

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,11 @@ setlocal softtabstop=2 shiftwidth=2
1111
setlocal expandtab
1212
setlocal comments+=:;
1313
setlocal commentstring=;\ %s
14+
" We treat sequences of the following characters as forming 'keywords', with
15+
" the aim of easing movement around LLVM identifiers:
16+
" * identifier prefixes: '%' and '@' (@-@)
17+
" * all characters where isalpha() returns TRUE (@)
18+
" * the digits 0-9 (48-57)
19+
" * other characters that may form identifiers: '_', '.', '-', '$'
20+
" Comment this out to restore the default behaviour
21+
setlocal iskeyword=%,@-@,@,48-57,_,.,-,$

0 commit comments

Comments
 (0)