aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Fußenegger <mfussenegger@users.noreply.github.com>2024-01-02 14:32:43 +0100
committerGitHub <noreply@github.com>2024-01-02 14:32:43 +0100
commit5dc0bdfe98b59bb03226167ed541d17cc5af30b1 (patch)
tree36ceb3a65edcd02763eff73b6f1a456e5df811eb
parent2bf68df289de12510d472f362482e5bde253cb41 (diff)
downloadrneovim-5dc0bdfe98b59bb03226167ed541d17cc5af30b1.tar.gz
rneovim-5dc0bdfe98b59bb03226167ed541d17cc5af30b1.tar.bz2
rneovim-5dc0bdfe98b59bb03226167ed541d17cc5af30b1.zip
docs(glob): add glob module (#26853)
-rw-r--r--runtime/doc/lua.txt27
-rw-r--r--runtime/lua/vim/glob.lua18
-rwxr-xr-xscripts/gen_vimdoc.py3
3 files changed, 40 insertions, 8 deletions
diff --git a/runtime/doc/lua.txt b/runtime/doc/lua.txt
index 7e0ad5f4c3..a8d36d7062 100644
--- a/runtime/doc/lua.txt
+++ b/runtime/doc/lua.txt
@@ -2991,6 +2991,33 @@ vim.fs.parents({start}) *vim.fs.parents()*
==============================================================================
+Lua module: vim.glob *vim.glob*
+
+vim.glob.to_lpeg({pattern}) *vim.glob.to_lpeg()*
+ Parses a raw glob into an |lua-lpeg| pattern.
+
+ This uses glob semantics from LSP 3.17.0: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#pattern
+
+ Glob patterns can have the following syntax:
+ • `*` to match one or more characters in a path segment
+ • `?` to match on one character in a path segment
+ • `**` to match any number of path segments, including none
+ • `{}` to group conditions (e.g. `*.{ts,js}` matches TypeScript and
+ JavaScript files)
+ • `[]` to declare a range of characters to match in a path segment (e.g.,
+ `example.[0-9]` to match on `example.0`, `example.1`, …)
+ • `[!...]` to negate a range of characters to match in a path segment
+ (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not
+ `example.0`)
+
+ Parameters: ~
+ • {pattern} (string) The raw glob pattern
+
+ Return: ~
+ vim.lpeg.Pattern pattern An |lua-lpeg| representation of the pattern
+
+
+==============================================================================
Lua module: vim.secure *vim.secure*
vim.secure.read({path}) *vim.secure.read()*
diff --git a/runtime/lua/vim/glob.lua b/runtime/lua/vim/glob.lua
index 731179d727..49d6f555da 100644
--- a/runtime/lua/vim/glob.lua
+++ b/runtime/lua/vim/glob.lua
@@ -2,18 +2,20 @@ local lpeg = vim.lpeg
local M = {}
---- Parses a raw glob into an |lpeg| pattern.
+--- Parses a raw glob into an |lua-lpeg| pattern.
---
--- This uses glob semantics from LSP 3.17.0: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#pattern
+---
--- Glob patterns can have the following syntax:
---- `*` to match one or more characters in a path segment
---- `?` to match on one character in a path segment
---- `**` to match any number of path segments, including none
---- `{}` to group conditions (e.g. `**​/*.{ts,js}` matches all TypeScript and JavaScript files)
---- `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
---- `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)
+--- - `*` to match one or more characters in a path segment
+--- - `?` to match on one character in a path segment
+--- - `**` to match any number of path segments, including none
+--- - `{}` to group conditions (e.g. `*.{ts,js}` matches TypeScript and JavaScript files)
+--- - `[]` to declare a range of characters to match in a path segment (e.g., `example.[0-9]` to match on `example.0`, `example.1`, …)
+--- - `[!...]` to negate a range of characters to match in a path segment (e.g., `example.[!0-9]` to match on `example.a`, `example.b`, but not `example.0`)
+---
---@param pattern string The raw glob pattern
----@return vim.lpeg.Pattern pattern An |lpeg| representation of the pattern
+---@return vim.lpeg.Pattern pattern An |lua-lpeg| representation of the pattern
function M.to_lpeg(pattern)
local l = lpeg
diff --git a/scripts/gen_vimdoc.py b/scripts/gen_vimdoc.py
index 8ed88cb8f5..b51bd5fbf5 100755
--- a/scripts/gen_vimdoc.py
+++ b/scripts/gen_vimdoc.py
@@ -164,6 +164,7 @@ CONFIG = {
'filetype.lua',
'keymap.lua',
'fs.lua',
+ 'glob.lua',
'secure.lua',
'version.lua',
'iter.lua',
@@ -187,6 +188,7 @@ CONFIG = {
'runtime/lua/vim/_inspector.lua',
'runtime/lua/vim/snippet.lua',
'runtime/lua/vim/text.lua',
+ 'runtime/lua/vim/glob.lua',
'runtime/lua/vim/_meta/builtin.lua',
'runtime/lua/vim/_meta/diff.lua',
'runtime/lua/vim/_meta/mpack.lua',
@@ -251,6 +253,7 @@ CONFIG = {
'spell': 'vim.spell',
'snippet': 'vim.snippet',
'text': 'vim.text',
+ 'glob': 'vim.glob',
},
'append_only': [
'shared.lua',