aboutsummaryrefslogtreecommitdiff
path: root/common/home/mosder/.config/nvim
diff options
context:
space:
mode:
authorMosder <xmosder12@gmail.com>2026-07-06 21:59:14 +0200
committerMosder <xmosder12@gmail.com>2026-07-06 21:59:14 +0200
commit014051aefcba235975c7441418261b0120dfed3a (patch)
treed6da5515514a8053f4bcd1e108e77e60bdcfea40 /common/home/mosder/.config/nvim
parent8b0546c644051cf872b301f18966eeaa64df812a (diff)
added support for motions inside/around subword (i.e. word in snake_case / camelCase / etc.)
Diffstat (limited to 'common/home/mosder/.config/nvim')
-rw-r--r--common/home/mosder/.config/nvim/init.lua36
1 files changed, 36 insertions, 0 deletions
diff --git a/common/home/mosder/.config/nvim/init.lua b/common/home/mosder/.config/nvim/init.lua
index 61afa8c..296b9b1 100644
--- a/common/home/mosder/.config/nvim/init.lua
+++ b/common/home/mosder/.config/nvim/init.lua
@@ -336,6 +336,42 @@ do
inside_next = 'ii',
},
n_lines = 500,
+ custom_textobjects = {
+ -- snake_case, camelCase, PascalCase, etc; all capitalizations
+ -- courtesy of https://github.com/bvngee
+ -- `is` works fine `as` doesn't - cba to change this
+ s = {
+ -- Lua 5.1 character classes and the undocumented frontier pattern:
+ -- https://www.lua.org/manual/5.1/manual.html#5.4.1
+ -- http://lua-users.org/wiki/FrontierPattern
+ -- note: when I say "letter" I technically mean "letter or digit"
+ {
+ -- Matches a single uppercase letter followed by 1+ lowercase letters.
+ -- This covers:
+ -- - PascalCaseWords (or the latter part of camelCaseWords)
+ '%u[%l%d]+%f[^%l%d]', -- An uppercase letter, 1+ lowercase letters, to end of lowercase letters
+
+ -- Matches lowercase letters up until not lowercase letter.
+ -- This covers:
+ -- - start of camelCaseWords (just the `camel`)
+ -- - snake_case_words in lowercase
+ -- - regular lowercase words
+ '%f[^%s%p][%l%d]+%f[^%l%d]', -- after whitespace/punctuation, 1+ lowercase letters, to end of lowercase letters
+ '^[%l%d]+%f[^%l%d]', -- after beginning of line, 1+ lowercase letters, to end of lowercase letters
+
+ -- Matches uppercase or lowercase letters up until not letters.
+ -- This covers:
+ -- - SNAKE_CASE_WORDS in uppercase
+ -- - Snake_Case_Words in titlecase
+ -- - regular UPPERCASE words
+ -- (it must be both uppercase and lowercase otherwise it will
+ -- match just the first letter of PascalCaseWords)
+ '%f[^%s%p][%a%d]+%f[^%a%d]', -- after whitespace/punctuation, 1+ letters, to end of letters
+ '^[%a%d]+%f[^%a%d]', -- after beginning of line, 1+ letters, to end of letters
+ },
+ '^().*()$',
+ },
+ },
}
-- Add/delete/replace surroundings (brackets, quotes, etc.)