mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-01-23 07:20:04 +08:00
feat('neodev'): bundle neodev to lang#lua
layer
This commit is contained in:
parent
be6f16768d
commit
b65e484f18
@ -75,6 +75,7 @@ function! SpaceVim#layers#lang#lua#plugins() abort
|
||||
let plugins = []
|
||||
" Improved Lua 5.3 syntax and indentation support for Vim
|
||||
call add(plugins, [g:_spacevim_root_dir . 'bundle/vim-lua', {'on_ft' : 'lua'}])
|
||||
call add(plugins, [g:_spacevim_root_dir . 'bundle/neodev.nvim', {'merged' : 0}])
|
||||
return plugins
|
||||
endfunction
|
||||
|
||||
|
89
bundle/neodev.nvim/.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
89
bundle/neodev.nvim/.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@ -0,0 +1,89 @@
|
||||
name: Bug Report
|
||||
description: File a bug/issue
|
||||
title: "bug: "
|
||||
labels: [bug]
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
**Before** reporting an issue, make sure to read the [documentation](https://github.com/folke/neodev.nvim) and search [existing issues](https://github.com/folke/neodev.nvim/issues). Usage questions such as ***"How do I...?"*** belong in [Discussions](https://github.com/folke/neodev.nvim/discussions) and will be closed.
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Did you check docs and existing issues?
|
||||
description: Make sure you checked all of the below before submitting an issue
|
||||
options:
|
||||
- label: I have read all the neodev.nvim docs
|
||||
required: true
|
||||
- label: I have searched the existing issues of neodev.nvim
|
||||
required: true
|
||||
- label: I have searched the existing issues of plugins related to this issue
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: "Neovim version (nvim -v)"
|
||||
placeholder: "0.8.0 commit db1b0ee3b30f"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: "Operating system/version"
|
||||
placeholder: "MacOS 11.5"
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Describe the bug
|
||||
description: A clear and concise description of what the bug is. Please include any related errors you see in Neovim.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Steps To Reproduce
|
||||
description: Steps to reproduce the behavior.
|
||||
placeholder: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Expected Behavior
|
||||
description: A concise description of what you expected to happen.
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Repro
|
||||
description: Minimal `init.lua` to reproduce this issue. Save as `repro.lua` and run with `nvim -u repro.lua`
|
||||
value: |
|
||||
-- DO NOT change the paths and don't remove the colorscheme
|
||||
local root = vim.fn.fnamemodify("./.repro", ":p")
|
||||
|
||||
-- set stdpaths to use .repro
|
||||
for _, name in ipairs({ "config", "data", "state", "cache" }) do
|
||||
vim.env[("XDG_%s_HOME"):format(name:upper())] = root .. "/" .. name
|
||||
end
|
||||
|
||||
-- bootstrap lazy
|
||||
local lazypath = root .. "/plugins/lazy.nvim"
|
||||
if not vim.loop.fs_stat(lazypath) then
|
||||
vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", lazypath, })
|
||||
end
|
||||
vim.opt.runtimepath:prepend(lazypath)
|
||||
|
||||
-- install plugins
|
||||
local plugins = {
|
||||
"folke/tokyonight.nvim",
|
||||
"folke/neodev.nvim",
|
||||
-- add any other plugins here
|
||||
}
|
||||
require("lazy").setup(plugins, {
|
||||
root = root .. "/plugins",
|
||||
})
|
||||
|
||||
vim.cmd.colorscheme("tokyonight")
|
||||
-- add anything else here
|
||||
render: Lua
|
||||
validations:
|
||||
required: false
|
36
bundle/neodev.nvim/.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
36
bundle/neodev.nvim/.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
name: Feature Request
|
||||
description: Suggest a new feature
|
||||
title: "feature: "
|
||||
labels: [enhancement]
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Did you check the docs?
|
||||
description: Make sure you read all the docs before submitting a feature request
|
||||
options:
|
||||
- label: I have read all the neodev.nvim docs
|
||||
required: true
|
||||
- type: textarea
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: Is your feature request related to a problem? Please describe.
|
||||
description: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
- type: textarea
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: Describe the solution you'd like
|
||||
description: A clear and concise description of what you want to happen.
|
||||
- type: textarea
|
||||
validations:
|
||||
required: true
|
||||
attributes:
|
||||
label: Describe alternatives you've considered
|
||||
description: A clear and concise description of any alternative solutions or features you've considered.
|
||||
- type: textarea
|
||||
validations:
|
||||
required: false
|
||||
attributes:
|
||||
label: Additional context
|
||||
description: Add any other context or screenshots about the feature request here.
|
72
bundle/neodev.nvim/.github/workflows/ci.yml
vendored
Normal file
72
bundle/neodev.nvim/.github/workflows/ci.yml
vendored
Normal file
@ -0,0 +1,72 @@
|
||||
name: CI
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
strategy:
|
||||
matrix:
|
||||
# os: [ubuntu-latest, windows-latest]
|
||||
os: [ubuntu-latest]
|
||||
runs-on: ${{ matrix.os }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Install Neovim
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p /tmp/nvim
|
||||
wget -q https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage -O /tmp/nvim/nvim.appimage
|
||||
cd /tmp/nvim
|
||||
chmod a+x ./nvim.appimage
|
||||
./nvim.appimage --appimage-extract
|
||||
echo "/tmp/nvim/squashfs-root/usr/bin/" >> $GITHUB_PATH
|
||||
- name: Run Tests
|
||||
run: |
|
||||
nvim --version
|
||||
[ ! -d tests ] && exit 0
|
||||
nvim --headless -u tests/init.lua -c "PlenaryBustedDirectory tests/ {minimal_init = 'tests/init.lua', sequential = true}"
|
||||
docs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: tests
|
||||
if: ${{ github.ref == 'refs/heads/main' }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: panvimdoc
|
||||
uses: kdheepak/panvimdoc@main
|
||||
with:
|
||||
vimdoc: neodev.nvim
|
||||
version: "Neovim >= 0.8.0"
|
||||
demojify: true
|
||||
treesitter: true
|
||||
- name: Push changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: "chore(build): auto-generate vimdoc"
|
||||
commit_user_name: "github-actions[bot]"
|
||||
commit_user_email: "github-actions[bot]@users.noreply.github.com"
|
||||
commit_author: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
|
||||
release:
|
||||
name: release
|
||||
if: ${{ github.ref == 'refs/heads/main' }}
|
||||
needs:
|
||||
- docs
|
||||
- tests
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: google-github-actions/release-please-action@v3
|
||||
id: release
|
||||
with:
|
||||
release-type: simple
|
||||
package-name: neodev.nvim
|
||||
- uses: actions/checkout@v3
|
||||
- name: tag stable versions
|
||||
if: ${{ steps.release.outputs.release_created }}
|
||||
run: |
|
||||
git config user.name github-actions[bot]
|
||||
git config user.email github-actions[bot]@users.noreply.github.com
|
||||
git remote add gh-token "https://${{ secrets.GITHUB_TOKEN }}@github.com/google-github-actions/release-please-action.git"
|
||||
git tag -d stable || true
|
||||
git push origin :stable || true
|
||||
git tag -a stable -m "Last Stable Release"
|
||||
git push origin stable
|
70
bundle/neodev.nvim/.github/workflows/types.yml
vendored
Normal file
70
bundle/neodev.nvim/.github/workflows/types.yml
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
name: Types
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# Run this every hour
|
||||
- cron: "0 * * * *"
|
||||
|
||||
jobs:
|
||||
build-types-nightly:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Setup ./data
|
||||
run: mkdir ./data
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt-get -y install doxygen luajit python3-msgpack
|
||||
- name: Install Neovim
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p /tmp/nvim
|
||||
wget -q https://github.com/neovim/neovim/releases/download/nightly/nvim.appimage -O /tmp/nvim/nvim.appimage
|
||||
cd /tmp/nvim
|
||||
chmod a+x ./nvim.appimage
|
||||
./nvim.appimage --appimage-extract
|
||||
echo "/tmp/nvim/squashfs-root/usr/bin/" >> $GITHUB_PATH
|
||||
- name: Clone Neovim's repo and run gen_vimdoc.py
|
||||
run: |
|
||||
git clone --depth=1 https://github.com/neovim/neovim.git ./data/neovim
|
||||
cd ./data/neovim
|
||||
python3 ./scripts/gen_vimdoc.py
|
||||
- name: Generate new docs
|
||||
run: |
|
||||
nvim --version
|
||||
cp ./data/neovim/runtime/doc/*.mpack ./data/
|
||||
nvim -u NONE -E -R --headless --cmd "set rtp^=." --cmd "packloadall" --cmd "luafile lua/neodev/build/init.lua" --cmd q
|
||||
- name: Push changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: "chore: auto-generated types for Neovim nightly"
|
||||
commit_user_name: "github-actions[bot]"
|
||||
commit_user_email: "github-actions[bot]@users.noreply.github.com"
|
||||
commit_author: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
|
||||
build-types-stable:
|
||||
needs: build-types-nightly
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Pull Updates
|
||||
run: git pull
|
||||
- name: Install Neovim
|
||||
shell: bash
|
||||
run: |
|
||||
mkdir -p /tmp/nvim
|
||||
wget -q https://github.com/neovim/neovim/releases/download/stable/nvim.appimage -O /tmp/nvim/nvim.appimage
|
||||
cd /tmp/nvim
|
||||
chmod a+x ./nvim.appimage
|
||||
./nvim.appimage --appimage-extract
|
||||
echo "/tmp/nvim/squashfs-root/usr/bin/" >> $GITHUB_PATH
|
||||
- name: Generate new docs
|
||||
run: |
|
||||
nvim --version
|
||||
nvim -u NONE -E -R --headless --cmd "set rtp^=." --cmd "packloadall" --cmd "luafile lua/neodev/build/init.lua" --cmd q
|
||||
- name: Push changes
|
||||
uses: stefanzweifel/git-auto-commit-action@v4
|
||||
with:
|
||||
commit_message: "chore: auto-generated types for Neovim stable"
|
||||
commit_user_name: "github-actions[bot]"
|
||||
commit_user_email: "github-actions[bot]@users.noreply.github.com"
|
||||
commit_author: "github-actions[bot] <github-actions[bot]@users.noreply.github.com>"
|
8
bundle/neodev.nvim/.gitignore
vendored
Normal file
8
bundle/neodev.nvim/.gitignore
vendored
Normal file
@ -0,0 +1,8 @@
|
||||
tt.*
|
||||
.tests
|
||||
doc/tags
|
||||
debug
|
||||
.repro
|
||||
foo.*
|
||||
*.log
|
||||
data
|
18
bundle/neodev.nvim/.neoconf.json
vendored
Normal file
18
bundle/neodev.nvim/.neoconf.json
vendored
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"neodev": {
|
||||
"library": {
|
||||
"enabled": true,
|
||||
"plugins": ["neoconf.nvim", "nvim-lspconfig"]
|
||||
}
|
||||
},
|
||||
"neoconf": {
|
||||
"plugins": {
|
||||
"lua_ls": {
|
||||
"enabled": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"lspconfig": {
|
||||
"sumneko_lua": {}
|
||||
}
|
||||
}
|
11
bundle/neodev.nvim/BUILD.md
vendored
Normal file
11
bundle/neodev.nvim/BUILD.md
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
# Updating Lua API Docs
|
||||
|
||||
1. Clone the neovim repo somewhere on your system
|
||||
2. Run `./scripts/gen_vimdoc.py`
|
||||
3. Copy `neovim/runtime/doc/*.mpack` files to the **neodev.nvim** data directory
|
||||
4. Open the file `neodev.nvim/lua/build/api.lua` in Neovim
|
||||
5. Execute `:luafile %`
|
||||
6. You'll see a lot of annotations that might be changed due to your local
|
||||
system setup, so you can ignore those
|
||||
7. Check if the changes you intended are present
|
||||
8. Create a PR with your code changes, and **without** the new EmmyLua annotations
|
266
bundle/neodev.nvim/CHANGELOG.md
vendored
Normal file
266
bundle/neodev.nvim/CHANGELOG.md
vendored
Normal file
@ -0,0 +1,266 @@
|
||||
# Changelog
|
||||
|
||||
## [2.5.2](https://github.com/folke/neodev.nvim/compare/v2.5.1...v2.5.2) (2023-03-24)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* parameter type for vim.fn.getline() ([#144](https://github.com/folke/neodev.nvim/issues/144)) ([ab56354](https://github.com/folke/neodev.nvim/commit/ab56354e0e85c3c3f20f770c699fb0038ce7bf42))
|
||||
|
||||
## [2.5.1](https://github.com/folke/neodev.nvim/compare/v2.5.0...v2.5.1) (2023-03-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **lua_ls:** plugin name detection of symlinked plugins ([#140](https://github.com/folke/neodev.nvim/issues/140)) ([a60eaee](https://github.com/folke/neodev.nvim/commit/a60eaee19e0c3dcb7e54c64fe9bcfb71420a95c0))
|
||||
|
||||
## [2.5.0](https://github.com/folke/neodev.nvim/compare/v2.4.2...v2.5.0) (2023-03-10)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **luv:** use the luv addon instead of the deprecated 3rd party ([f06c113](https://github.com/folke/neodev.nvim/commit/f06c11344f76fadf2cd497b9490125dfc02946cb))
|
||||
|
||||
## [2.4.2](https://github.com/folke/neodev.nvim/compare/v2.4.1...v2.4.2) (2023-03-08)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* parameter types for searchpair and searchpairpos ([#130](https://github.com/folke/neodev.nvim/issues/130)) ([c87f69c](https://github.com/folke/neodev.nvim/commit/c87f69c856505ea778f6fd883a90397e55c8e59d))
|
||||
|
||||
## [2.4.1](https://github.com/folke/neodev.nvim/compare/v2.4.0...v2.4.1) (2023-02-28)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* parameter types for vim.wait and vim.fn.input ([#131](https://github.com/folke/neodev.nvim/issues/131)) ([55d3a74](https://github.com/folke/neodev.nvim/commit/55d3a747af136da527067e9fe59ad0bb938ecd50))
|
||||
|
||||
## [2.4.0](https://github.com/folke/neodev.nvim/compare/v2.3.0...v2.4.0) (2023-02-13)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* added lua_ls luv builtin library. Fixes [#127](https://github.com/folke/neodev.nvim/issues/127) ([8c32d8b](https://github.com/folke/neodev.nvim/commit/8c32d8b4e765de26b27b76f0072e7c12038cde52))
|
||||
|
||||
## [2.3.0](https://github.com/folke/neodev.nvim/compare/v2.2.1...v2.3.0) (2023-02-13)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **luv:** more luv types ([39bb79b](https://github.com/folke/neodev.nvim/commit/39bb79b688300b0b4672ec83c564d72749482116))
|
||||
|
||||
## [2.2.1](https://github.com/folke/neodev.nvim/compare/v2.2.0...v2.2.1) (2023-02-12)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* s/sumneko_lua/lua_ls/ ([#124](https://github.com/folke/neodev.nvim/issues/124)) ([307d0fb](https://github.com/folke/neodev.nvim/commit/307d0fbce02068eebdaa4ef7da279fdb1bfe6d8e))
|
||||
* sumneko_lua -> lua_ls ([5076ebb](https://github.com/folke/neodev.nvim/commit/5076ebbcbfd0e2164d91ff2073a6f21a561804df))
|
||||
|
||||
## [2.2.0](https://github.com/folke/neodev.nvim/compare/v2.1.0...v2.2.0) (2023-02-10)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* add more luv methods and types ([#122](https://github.com/folke/neodev.nvim/issues/122)) ([fc01efe](https://github.com/folke/neodev.nvim/commit/fc01efe11447a99808b06e362d95a296218fed68))
|
||||
|
||||
## [2.1.0](https://github.com/folke/neodev.nvim/compare/v2.0.1...v2.1.0) (2023-02-08)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* Add `treesitter.query` and `treesitter.language` to stable ([#119](https://github.com/folke/neodev.nvim/issues/119)) ([4b6ade9](https://github.com/folke/neodev.nvim/commit/4b6ade9bb879aad4d1b2e94e82c36957262ead53))
|
||||
* add class to vim.api and vim.loop ([e27c03b](https://github.com/folke/neodev.nvim/commit/e27c03b3e312c08e2d4aeed2a0f76199a9729529))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* handle cases where `vim.fn.stdpath("config")` does not exist. Fixes [#109](https://github.com/folke/neodev.nvim/issues/109) ([fc20483](https://github.com/folke/neodev.nvim/commit/fc20483383dac11b97df43c83db1bbbd35305172))
|
||||
* provide a class for vim.api ([#117](https://github.com/folke/neodev.nvim/issues/117)) ([9737bfc](https://github.com/folke/neodev.nvim/commit/9737bfc085cbb8879c19471a65b12fe9bd1ae878))
|
||||
* revert [#117](https://github.com/folke/neodev.nvim/issues/117) ([dd63031](https://github.com/folke/neodev.nvim/commit/dd630312eb978f554006a020554d64c197887644))
|
||||
* use integer for buffer, window, etc ([#116](https://github.com/folke/neodev.nvim/issues/116)) ([71e3e0c](https://github.com/folke/neodev.nvim/commit/71e3e0c2239593e29e06ecc725ba346e29d3186a))
|
||||
|
||||
## [2.0.1](https://github.com/folke/neodev.nvim/compare/v2.0.0...v2.0.1) (2023-01-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* ignore lua directory ([82c8586](https://github.com/folke/neodev.nvim/commit/82c85862e2aaa9c0b63f3176eb8dc513803f2865))
|
||||
* **lsp:** make sure everything works when lua root not found. Fixes [#108](https://github.com/folke/neodev.nvim/issues/108) ([31cba85](https://github.com/folke/neodev.nvim/commit/31cba8554a8e37ecf240fa2e242f0e43e72ae930))
|
||||
|
||||
## [2.0.0](https://github.com/folke/neodev.nvim/compare/v1.0.0...v2.0.0) (2023-01-11)
|
||||
|
||||
|
||||
### ⚠ BREAKING CHANGES
|
||||
|
||||
* `config.pathStrict` is now enabled by default. Needs sumneko >= 3.6.0. Much better performance
|
||||
|
||||
### Features
|
||||
|
||||
* **options:** allow setting an option to its type ([1569664](https://github.com/folke/neodev.nvim/commit/156966470d19a8b095f9ae620720be3fb85a3772))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* simplified and improved plugin/config detection ([a34a9e7](https://github.com/folke/neodev.nvim/commit/a34a9e7e775f1513466940c31285292b7b8375de))
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* `config.pathStrict` is now enabled by default. Needs sumneko >= 3.6.0. Much better performance ([5ff32d4](https://github.com/folke/neodev.nvim/commit/5ff32d4d50491f94667733362a52d0fe178e4714))
|
||||
|
||||
## 1.0.0 (2023-01-04)
|
||||
|
||||
|
||||
### ⚠ BREAKING CHANGES
|
||||
|
||||
* removed config.plugin_library in favor of config.override for easier customization
|
||||
* rewrite with easier setup and configuration. Backward compatible, but refer to the docs to use the optimized setup
|
||||
|
||||
### Features
|
||||
|
||||
* added [@meta](https://github.com/meta) to generated emmy-lua files ([97a3399](https://github.com/folke/neodev.nvim/commit/97a33996a1618bdc6647384fd605940c5adce743))
|
||||
* added [@see](https://github.com/see) for `seealso` from help docs ([1e8a2b4](https://github.com/folke/neodev.nvim/commit/1e8a2b4427a73cf3f0a51f42c52cc367e71f04f5))
|
||||
* added annotations for vim.filetype, vim.F, vim.fs, vim.health, vim.inspect ([2be3d3f](https://github.com/folke/neodev.nvim/commit/2be3d3ffc17609319090289561842a75dcbf5daf))
|
||||
* added config.runtime() for new vim.fn parser ([87adbea](https://github.com/folke/neodev.nvim/commit/87adbeafc4d2813447e6a75c8f209cb2d637b178))
|
||||
* added configuration option to set the runtime_path (slow). Fixes [#29](https://github.com/folke/neodev.nvim/issues/29) ([f7fecb7](https://github.com/folke/neodev.nvim/commit/f7fecb7deda6fe244b6a5b8edfca21128009baf5))
|
||||
* added docs for options and vim.fn functions ([4eb0e89](https://github.com/folke/neodev.nvim/commit/4eb0e894795251e5381c55ef87e7a0053ad0659c))
|
||||
* added function to check if a fiven fqname is a lua object ([3d1d469](https://github.com/folke/neodev.nvim/commit/3d1d4698a05be1099162812bf7893fb873f6a297))
|
||||
* added luv docs ([e38838a](https://github.com/folke/neodev.nvim/commit/e38838a558a5f80d6a9c8ad7d0044c884254463b))
|
||||
* added missing types ([76e7b48](https://github.com/folke/neodev.nvim/commit/76e7b48122a251b98057cc71823bdc50aa289016))
|
||||
* added option shortnames to vim.opt, o, go, bo, wo, opt_local, opt_global ([309eca5](https://github.com/folke/neodev.nvim/commit/309eca5584eba48d2b77f3668b3c5db3dee7e838))
|
||||
* added options ([9ec4a9c](https://github.com/folke/neodev.nvim/commit/9ec4a9c73b102163055d8d4e52edd833f9c22151))
|
||||
* added overrides for vim.fn.expand and vim.fn.sign_define. Fixes [#72](https://github.com/folke/neodev.nvim/issues/72) ([868db41](https://github.com/folke/neodev.nvim/commit/868db41830bae23c70b4ed044f64f60870bc8f37))
|
||||
* added overrides for vim.fn.glob ([43f51e9](https://github.com/folke/neodev.nvim/commit/43f51e9b86d1637644f0fbba5e1e11bef4341750))
|
||||
* added overrides for vim.loop.new_timer() ([d15370e](https://github.com/folke/neodev.nvim/commit/d15370ee520a169bf6224668ccca175489833948))
|
||||
* added possibility to define [@overload](https://github.com/overload) annotations ([a77f5db](https://github.com/folke/neodev.nvim/commit/a77f5dbfe2e972789c989e2f3909354b482705c0))
|
||||
* added possibility to override auto generated annotations ([9d6b75b](https://github.com/folke/neodev.nvim/commit/9d6b75ba119cf825fb92830188724e6f0f31e4ed))
|
||||
* added support for lazy.nvim ([6136979](https://github.com/folke/neodev.nvim/commit/61369790e4205b74f1667587b3dc5867716500eb))
|
||||
* added support for vim.opt methods. Fixes [#73](https://github.com/folke/neodev.nvim/issues/73) ([9e56a56](https://github.com/folke/neodev.nvim/commit/9e56a56301a297bf8d0c675349c101023a723c22))
|
||||
* added support for vimdoc code blocks ([6d8ce16](https://github.com/folke/neodev.nvim/commit/6d8ce1602a166c03695aaa976252bcb0fd49a7dc))
|
||||
* added types for vim.cmd.* ([9962a1d](https://github.com/folke/neodev.nvim/commit/9962a1dd0db41ab6745be2d9e4b3dc70d1aa188c))
|
||||
* added vim.diagnostic & vim.ui ([58796ba](https://github.com/folke/neodev.nvim/commit/58796ba3f0f7b3ab2197670998555f299cb3f471))
|
||||
* added vim.treesitter.highlighter ([5ca1178](https://github.com/folke/neodev.nvim/commit/5ca117883f37c64ee15f4d6a8ba8ca9a673bfffe))
|
||||
* added vim.treesitter.language ([8d2a950](https://github.com/folke/neodev.nvim/commit/8d2a950045450927d8f7652ef26548b28f3137c8))
|
||||
* added warnings on old-style setup ([17e73ce](https://github.com/folke/neodev.nvim/commit/17e73ce2f9616d5b967e9f3996f3c3b84912ef99))
|
||||
* added workspace support ([681c0fc](https://github.com/folke/neodev.nvim/commit/681c0fc46c49108ec4da9e190c7bfe0ec1393d83))
|
||||
* aded experimental option pathStrict. You need the latest sumneko nightly for this ([60f1ec9](https://github.com/folke/neodev.nvim/commit/60f1ec9d73c7f8fb5537050f38b8921698315e55))
|
||||
* allow config without using lspconfig. Fixes [#83](https://github.com/folke/neodev.nvim/issues/83) ([3b6b644](https://github.com/folke/neodev.nvim/commit/3b6b6442a036729d950f1b92924ac0f5827638ea))
|
||||
* better type infer ([6b9ae84](https://github.com/folke/neodev.nvim/commit/6b9ae848c4b804a9f9179abcc72ee38e824a2fd8))
|
||||
* debug log ([fdab800](https://github.com/folke/neodev.nvim/commit/fdab800ea2a9d4a62b67fe87109b937e6d85f5bf))
|
||||
* docs.fqn ([8f61232](https://github.com/folke/neodev.nvim/commit/8f61232f815e134efdf4cf06e1cd6342f4e369ab))
|
||||
* enable call snippets ([a267319](https://github.com/folke/neodev.nvim/commit/a26731909a6790ab80a4c7bc0c25b8d7402c35e9))
|
||||
* enable lua-dev by default for the Neovim runtime directory when needed ([0001b27](https://github.com/folke/neodev.nvim/commit/0001b27ddce0a1cc620d325577cba9f3b48f9cad))
|
||||
* fix indent of doc comments ([5abb32a](https://github.com/folke/neodev.nvim/commit/5abb32ab07a2e01726095dcc9bf224f874eeac69))
|
||||
* fixed detection of definitions for vim.keymap ([63bdf08](https://github.com/folke/neodev.nvim/commit/63bdf085b17ff55c938763ca1f6c346af119277c))
|
||||
* fixed option docs ([fb82dcc](https://github.com/folke/neodev.nvim/commit/fb82dcc58d7839a60a0da008049dc42c663bebae))
|
||||
* format code blocks as markdown ([e85a190](https://github.com/folke/neodev.nvim/commit/e85a19015ceb8498f6e80cb0094eb2dc45603bde))
|
||||
* full support of vim.go, wo, bo, o, opt, opt_local, opt_global ([261d29c](https://github.com/folke/neodev.nvim/commit/261d29c44328eb4b703e49ba4a6ae4e5297a96fc))
|
||||
* generated types for stable (Neovim 0.8.0) ([4366cad](https://github.com/folke/neodev.nvim/commit/4366cada45729a4224cbdf9b34f085b678c64796))
|
||||
* handle special Lua keywords ([142d456](https://github.com/folke/neodev.nvim/commit/142d456011e0a5df302e5cced535ecaa13be631a))
|
||||
* hidden option to make sumneko use a different neovim runtime for testing ([d55299f](https://github.com/folke/neodev.nvim/commit/d55299fea0655a416d94cb11badcd342ec54d7f4))
|
||||
* implemented optional parameters for lua api functions ([ee8e6af](https://github.com/folke/neodev.nvim/commit/ee8e6af506fc94763c59d336258de48b9f500988))
|
||||
* improved docs.functions ([c3a6a8c](https://github.com/folke/neodev.nvim/commit/c3a6a8c77af8dc04a064fe9b75d68bf3c56e4d4d))
|
||||
* improved vim.api and vim parsers ([60fce6d](https://github.com/folke/neodev.nvim/commit/60fce6dd0c60376f3a2d2253b314c6088ad067a9))
|
||||
* initial version ([26bd607](https://github.com/folke/neodev.nvim/commit/26bd607564940dc56575b792d799366a0da56c1f))
|
||||
* integrate with settings.nvim ([d95e691](https://github.com/folke/neodev.nvim/commit/d95e69166dbbef775140aecd02508db13c3606bb))
|
||||
* integration with neoconf.nvim ([77e8aec](https://github.com/folke/neodev.nvim/commit/77e8aec83549db4f575aa99cd8e2a88ac85db662))
|
||||
* keep original formatting when parsing docs ([6cf4af1](https://github.com/folke/neodev.nvim/commit/6cf4af1a026d63e676bddbdf8ad5b3fd726f1218))
|
||||
* lua-dev is now neodev ([b43d272](https://github.com/folke/neodev.nvim/commit/b43d2726829c0fe2d3950372e13177daaff14ea4))
|
||||
* lua-dev now properly sets up jsonls for .luarc.json, the sumneko local config files ([fb62007](https://github.com/folke/neodev.nvim/commit/fb620072c444404b2b55e9a0d8ba6d6f9e2dac69))
|
||||
* lua.txt doc parser ([0e7a16b](https://github.com/folke/neodev.nvim/commit/0e7a16b070c6be725573bc8cc2b0d69694cefc62))
|
||||
* merge defs of vim._editor in `vim` ([858bcd6](https://github.com/folke/neodev.nvim/commit/858bcd6840fa9578d14915f05fc15ca9b0959517))
|
||||
* merge in lspconfig options ([1f7ee38](https://github.com/folke/neodev.nvim/commit/1f7ee38d0f4e3972c3768e360979f5670aba2070))
|
||||
* more luv annotations ([b50621a](https://github.com/folke/neodev.nvim/commit/b50621a868004292372d91a03c88923b36659d99))
|
||||
* new options parser ([0c65251](https://github.com/folke/neodev.nvim/commit/0c65251ef6f93c795b6d44e339d97670a3500e8b))
|
||||
* new parser ([42e9c51](https://github.com/folke/neodev.nvim/commit/42e9c5126904d6715ece660224610f3a38e4b8d4))
|
||||
* new vim functions parser ([4d9ee97](https://github.com/folke/neodev.nvim/commit/4d9ee97048c6b541c363cc99dce24c3e77527631))
|
||||
* only load missing functions from mpack on nightly. hidden functions ([f0bf928](https://github.com/folke/neodev.nvim/commit/f0bf928719bf1b7eb0ee905e787c29e9a332e25f))
|
||||
* optionally supply a list of plugins to add to the workspace [#2](https://github.com/folke/neodev.nvim/issues/2) ([1fb6cc8](https://github.com/folke/neodev.nvim/commit/1fb6cc81ca98aab4d46ded1d39dcd29a44e48fcc))
|
||||
* parse luv return values from docs ([107b7d9](https://github.com/folke/neodev.nvim/commit/107b7d9413b8134a72ea838a624679f5a4e4fdf9))
|
||||
* proper typing for vim.g, vim.v, vim.b, vim.w and vim.t ([b16231e](https://github.com/folke/neodev.nvim/commit/b16231e7af55be112fcb867fd7b5eddf2993e9da))
|
||||
* properly configure runtime.path to make require work for plugins (slow). Fixes [#23](https://github.com/folke/neodev.nvim/issues/23) ([274f72b](https://github.com/folke/neodev.nvim/commit/274f72b6bc5c199f6d2d33956f9aa0603d4c3367))
|
||||
* properly parse optional params like (*opts) ([48cca93](https://github.com/folke/neodev.nvim/commit/48cca93b6d5da62db8da46c6d81b8fde2f4c8914))
|
||||
* removed config.plugin_library in favor of config.override for easier customization ([46a2eb0](https://github.com/folke/neodev.nvim/commit/46a2eb009062bef889dd05913f92c2c11a57b189))
|
||||
* replace code regions by markdown lua code blocks ([23df3f4](https://github.com/folke/neodev.nvim/commit/23df3f4f5403dbf24ccc1c8fc998db5298a0d377))
|
||||
* rewrite with easier setup and configuration. Backward compatible, but refer to the docs to use the optimized setup ([ae74bc9](https://github.com/folke/neodev.nvim/commit/ae74bc9987638da2e122aaaf155d6519f07e6197))
|
||||
* set correct default option ([e9e1da3](https://github.com/folke/neodev.nvim/commit/e9e1da34d8faa4843fd6d860bc12f552fe2e4a2a))
|
||||
* snippet option for setup ([#47](https://github.com/folke/neodev.nvim/issues/47)) ([8553f1c](https://github.com/folke/neodev.nvim/commit/8553f1c89aa53d2e9bb94b728bdf3ebd0abb625d))
|
||||
* types for nightly ([3e97b3e](https://github.com/folke/neodev.nvim/commit/3e97b3e87fae815863a6276e14af734102d28be8))
|
||||
* types for stable ([499bc32](https://github.com/folke/neodev.nvim/commit/499bc3286050ec5bf2332ee8c6cd726e10e75e6f))
|
||||
* updated all the docs for Neovim 0.6 ([1933c7e](https://github.com/folke/neodev.nvim/commit/1933c7e014e69484572b7fa1bf73bc51c42f10f4))
|
||||
* updated docs to 0.7 ([6063731](https://github.com/folke/neodev.nvim/commit/60637315d665652c59a6a4f99a82f2308d11dd8f))
|
||||
* updated emmy lua files ([5e6caa9](https://github.com/folke/neodev.nvim/commit/5e6caa92b83a07a516d481593344bed1e6eebd6a))
|
||||
* util.error ([c771c04](https://github.com/folke/neodev.nvim/commit/c771c040cb63cdbd2f01ae8698befb64011bbe93))
|
||||
* vim.fn functions ([b1e7776](https://github.com/folke/neodev.nvim/commit/b1e7776e4c7adeaa799002cb8ee25fecdc40f444))
|
||||
* vim.lua for nightly ([cae3dfa](https://github.com/folke/neodev.nvim/commit/cae3dfa0380c9a08a27c947f7de5ee719e087ff2))
|
||||
* vimdoc parser ([ac2a760](https://github.com/folke/neodev.nvim/commit/ac2a7601c8c5d2160512d74746286ea9f9580a09))
|
||||
* when param name is string, and unknown type, then use string ([ddb8162](https://github.com/folke/neodev.nvim/commit/ddb816294b62d7ab76ecbe0f26f2bfb8aef4a5e1))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* add correct neovim config directory when pathstrict ([d20c601](https://github.com/folke/neodev.nvim/commit/d20c601836c05039926cbfec0b895a3028af70af))
|
||||
* add lua directories to workspace.library ([563e365](https://github.com/folke/neodev.nvim/commit/563e365b96ea5848e950e216929c08c69d3f4dda))
|
||||
* add vim itself to globals ([2c9311b](https://github.com/folke/neodev.nvim/commit/2c9311b5e45b2ad71843e7e9d49ce31f59cca630))
|
||||
* added .luarc.jsonc validation also to jsonls ([8e2f046](https://github.com/folke/neodev.nvim/commit/8e2f04638f9cb6c297d16c4feef85a6f7615fafb))
|
||||
* added # for parameter docs ([3c7dfda](https://github.com/folke/neodev.nvim/commit/3c7dfda68549b6152bc0aa3c04f81a87ee9af9f9))
|
||||
* added support for builtin libraries and meta/3rd libraries ([8d47e3a](https://github.com/folke/neodev.nvim/commit/8d47e3a488eb8a05f6699036f98f8a9a7f41776b))
|
||||
* added vim.log.levels ([4331626](https://github.com/folke/neodev.nvim/commit/4331626b02f636433b504b9ab6a8c11fb9de4a24))
|
||||
* alias `buffer` type ([#103](https://github.com/folke/neodev.nvim/issues/103)) ([23b58ff](https://github.com/folke/neodev.nvim/commit/23b58ff4e486d32fe9740dcdec0084ee419e1522))
|
||||
* append on_new_config instead of replacing it ([cff0972](https://github.com/folke/neodev.nvim/commit/cff09720d23f84fa4ae46005857d7c5d7a1a4844))
|
||||
* append to existing workspace.library instead of replacing ([b4bc26d](https://github.com/folke/neodev.nvim/commit/b4bc26d91ab17b84e8f15926c18b0c0abea3b690))
|
||||
* better detection of nvim config and plugins where root-dir is incorrect ([d6212c1](https://github.com/folke/neodev.nvim/commit/d6212c1527bb5fb4dbb593318cd937ad2d4d6eee))
|
||||
* better method of finding typed directory [#6](https://github.com/folke/neodev.nvim/issues/6) ([2e1a816](https://github.com/folke/neodev.nvim/commit/2e1a81633bab27e2535d1ccf5f47dda0ba49b0ce))
|
||||
* better package path ([03a44ec](https://github.com/folke/neodev.nvim/commit/03a44ec6a54b0a025a633978e8541584a02e46d9))
|
||||
* broke require path completion again ([9da602d](https://github.com/folke/neodev.nvim/commit/9da602d023ca1af73ac2ea3813798592c904566d))
|
||||
* correctly process global_local options ([2815a2a](https://github.com/folke/neodev.nvim/commit/2815a2acb5a0cd9a11aaadb8256af15c7bf7d513))
|
||||
* docs ([7b96f30](https://github.com/folke/neodev.nvim/commit/7b96f30ca6af998b4e3caa9c3886539e3ae83384))
|
||||
* **docs:** update sumneko_lua setup example ([#67](https://github.com/folke/neodev.nvim/issues/67)) ([8b2b228](https://github.com/folke/neodev.nvim/commit/8b2b228673a88baa9267cb4a9ceb5862b5ee5df4))
|
||||
* don't add arena parameters to functions ([99ee7f2](https://github.com/folke/neodev.nvim/commit/99ee7f21e07f9979b8cf14f24ce24d49aca11494))
|
||||
* don't include lua docs in generated docs. They are correctly set up through `types/vim.lua` ([130b35e](https://github.com/folke/neodev.nvim/commit/130b35e0f671c5729d106a4fe113129cb979e4b1))
|
||||
* don't skip anything from shared, otherwise builtin lua function docs are missing like notify ([24d8cf9](https://github.com/folke/neodev.nvim/commit/24d8cf99ccdaf8ef370f3f2165538fa296cd8122))
|
||||
* dont add root_dir to workspace library. Fixes [#21](https://github.com/folke/neodev.nvim/issues/21) ([e958850](https://github.com/folke/neodev.nvim/commit/e9588503e68fa32ac08b83d9cb7e42ec31b8907d))
|
||||
* fixed lua-dev schema for settings.nvim ([d6900dc](https://github.com/folke/neodev.nvim/commit/d6900dc94a40a3215d1a8debdaaa3036c3df17e5))
|
||||
* fixed requiring files and require path ([3c18da8](https://github.com/folke/neodev.nvim/commit/3c18da83e7d4e4199857721301b9ec52bd99e487))
|
||||
* get all the lua docs for internal lua functions ([6b0d9b0](https://github.com/folke/neodev.nvim/commit/6b0d9b0559defd9840402610824aeb9339ef1319))
|
||||
* improved emmy lua annotations ([4f5a10f](https://github.com/folke/neodev.nvim/commit/4f5a10f192c1fc2b080afc852a85403b1296da8e))
|
||||
* indentation from docs ([a4e5103](https://github.com/folke/neodev.nvim/commit/a4e5103fd91e9db6d9ac924df3fff94eaca8402a))
|
||||
* line context ([fbcdd6d](https://github.com/folke/neodev.nvim/commit/fbcdd6da18c124aa0f36a5981302ff29cd644115))
|
||||
* **luv:** also parse sync return values ([7b495ec](https://github.com/folke/neodev.nvim/commit/7b495ec693ad0bd42268f12f678fdeffa2f62b98))
|
||||
* make options generation deterministic ([136ec0e](https://github.com/folke/neodev.nvim/commit/136ec0eceaef775147034e35c35ff80ad407b7da))
|
||||
* more markdown code blocks ([5b620d9](https://github.com/folke/neodev.nvim/commit/5b620d9059d28ff75aadb50b9a2be80ba0b88272))
|
||||
* more neodev renames ([d23076d](https://github.com/folke/neodev.nvim/commit/d23076d66ab87cf2d2feae7d5ff4f3cf4f0c754d))
|
||||
* move settings to lua-dev ([c62617e](https://github.com/folke/neodev.nvim/commit/c62617ee4f15e04e0e5a96f3a824a3a1c838df53))
|
||||
* mpack functions can have multiple docs ([2c2293c](https://github.com/folke/neodev.nvim/commit/2c2293cede37c19ca2cc8349fafaa8a7fe132f7d))
|
||||
* multi-line comments for parameters ([acfa55b](https://github.com/folke/neodev.nvim/commit/acfa55b291c83e6fa40a006ea824d92d624c11b6))
|
||||
* new settings.nvim API ([6477ca9](https://github.com/folke/neodev.nvim/commit/6477ca95d081e2b2397a993699c8ff643c632f85))
|
||||
* options now have proper types ([d9bd9b4](https://github.com/folke/neodev.nvim/commit/d9bd9b488e83939e746b8150f2b684e72bb1275e))
|
||||
* other way to prevent name change issues ([d3f7002](https://github.com/folke/neodev.nvim/commit/d3f70023d925b0c2e3084bb08a42aad3b2c2f027))
|
||||
* parse incorrect function signatures with missing {} ([7eb0f15](https://github.com/folke/neodev.nvim/commit/7eb0f15fe8eaef3c4204e12cd3a94e183dd8f843))
|
||||
* prepend "lua/" to package path ([b24f225](https://github.com/folke/neodev.nvim/commit/b24f22588eab04d604be7816cf5dfe09f96e7245))
|
||||
* remove duplication of lua/ ([#66](https://github.com/folke/neodev.nvim/issues/66)) ([ec50266](https://github.com/folke/neodev.nvim/commit/ec50266039f0e71178be8c1d22211f48af498efe))
|
||||
* remove root_dir from library. otherwise rename is broken ([b9b721a](https://github.com/folke/neodev.nvim/commit/b9b721a5bed76374ae7d96a6a211737954e241c7))
|
||||
* remove vimconfig from workspace library. not needed [#1](https://github.com/folke/neodev.nvim/issues/1) ([0faabb9](https://github.com/folke/neodev.nvim/commit/0faabb95aec5af07f4416a8adb3ff6a218f6a855))
|
||||
* replace `dict(something)` by `dict`, otherwise sumneko fails to render the hover ([4667d53](https://github.com/folke/neodev.nvim/commit/4667d535e7d811f5003bf57f786a0ce05ce6f516))
|
||||
* replace invalid param name characters ([e5a553c](https://github.com/folke/neodev.nvim/commit/e5a553c6ffd661ab6f42be3f6992baf42f452445))
|
||||
* resolve realpath of neovim config ([42eab7e](https://github.com/folke/neodev.nvim/commit/42eab7e0a7950f0322794a580ff10f56d1d15ee7))
|
||||
* set proper runtime.path for require completion ([7840b31](https://github.com/folke/neodev.nvim/commit/7840b31c020c04076dde9fb9e45a9f653320b3e4))
|
||||
* sort functions before writing ([72c4e61](https://github.com/folke/neodev.nvim/commit/72c4e61a6d69e9907c271893a0822142fda1facf))
|
||||
* sort vim.fn functions before writing file ([cc55fd1](https://github.com/folke/neodev.nvim/commit/cc55fd1b8aa7da0d8f75e2fa711095388fc54f0f))
|
||||
* sumneko library should be a list instead of a dict ([14004d2](https://github.com/folke/neodev.nvim/commit/14004d29ff2d408367b1e6757b0923e67e319325))
|
||||
* types for stable ([901660d](https://github.com/folke/neodev.nvim/commit/901660d70dfa98f1afe9304bf8e580125f591f12))
|
||||
* use correct key for special lsp library paths ([f879e53](https://github.com/folke/neodev.nvim/commit/f879e53f9d4efcc0035a3b395a66ac5794954c74))
|
||||
* use default values for vim.opt ([#87](https://github.com/folke/neodev.nvim/issues/87)) ([66b67cf](https://github.com/folke/neodev.nvim/commit/66b67cf8833a98f5e4f92821e4320be82f160916))
|
||||
* use existing library on settings.Lua.workspace ([cf3b028](https://github.com/folke/neodev.nvim/commit/cf3b028043e86e0e659568aede9d0c8273800b3e))
|
||||
* use lazy.plugins() ([c87f3c9](https://github.com/folke/neodev.nvim/commit/c87f3c9ffb256846e2a51f0292537073ca62d4d0))
|
||||
* workspace.library uses a map ([350b579](https://github.com/folke/neodev.nvim/commit/350b579498a7eeeab33f0ff6496e4fa1d807469a))
|
||||
|
||||
|
||||
### Performance Improvements
|
||||
|
||||
* add /lua to plugin directories ([6bf74db](https://github.com/folke/neodev.nvim/commit/6bf74dbe456711d410b905fb5fb4acb87fb4ce0c))
|
||||
* disable callSnippets for now. Too slow ([616b559](https://github.com/folke/neodev.nvim/commit/616b559dff0307adbe62606f806c2b568a6322d5))
|
||||
* disable legacy setup mechanism, but still show warning ([82423f5](https://github.com/folke/neodev.nvim/commit/82423f569d51c79733f5599fb11fb8df46b324d6))
|
||||
* dont use glob to find lua dirs. Check bufs instead. Fixes [#80](https://github.com/folke/neodev.nvim/issues/80) ([97ebf23](https://github.com/folke/neodev.nvim/commit/97ebf23c0d4f5a11f1d68a5abd468751b14980a1))
|
||||
* remove runtime path again. way too slow ([e151df6](https://github.com/folke/neodev.nvim/commit/e151df68973b3aca4c88f6d602f89574d7d32200))
|
201
bundle/neodev.nvim/LICENSE
vendored
Normal file
201
bundle/neodev.nvim/LICENSE
vendored
Normal file
@ -0,0 +1,201 @@
|
||||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright [yyyy] [name of copyright owner]
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
143
bundle/neodev.nvim/README.md
vendored
Normal file
143
bundle/neodev.nvim/README.md
vendored
Normal file
@ -0,0 +1,143 @@
|
||||
# 💻 neodev.nvim
|
||||
|
||||
Neovim setup for init.lua and plugin development with full signature help, docs and
|
||||
completion for the nvim lua API.
|
||||
|
||||
![image](https://user-images.githubusercontent.com/292349/201495543-ff532160-c8bd-4651-a16f-4fb682c9b945.png)
|
||||
|
||||
## ✨ Features
|
||||
|
||||
- Automatically configures **lua-language-server** for your **Neovim** config, **Neovim** runtime and plugin
|
||||
directories
|
||||
- [Annotations](https://github.com/LuaLS/lua-language-server/wiki/Annotations) for completion, hover and signatures of:
|
||||
- Vim functions
|
||||
- Neovim api functions
|
||||
- `vim.opt`
|
||||
- [vim.loop](https://github.com/luvit/luv)
|
||||
- properly configures the `require` path.
|
||||
- adds all plugins in `opt` and `start` to the workspace so you get completion
|
||||
for all installed plugins
|
||||
- properly configure the vim runtime
|
||||
|
||||
## ⚡️ Requirements
|
||||
|
||||
- Neovim >= 0.7.0
|
||||
- completion plugin like [nvim-cmp](https://github.com/hrsh7th/nvim-cmp)
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
Install the plugin with your preferred package manager:
|
||||
|
||||
### [lazy.nvim](https://github.com/folke/lazy.nvim)
|
||||
|
||||
```lua
|
||||
{ "folke/neodev.nvim", opts = {} }
|
||||
```
|
||||
|
||||
### [vim-plug](https://github.com/junegunn/vim-plug)
|
||||
|
||||
```vim
|
||||
Plug 'folke/neodev.nvim'
|
||||
```
|
||||
|
||||
## ⚙️ Configuration
|
||||
|
||||
**neodev** comes with the following defaults:
|
||||
|
||||
```lua
|
||||
{
|
||||
library = {
|
||||
enabled = true, -- when not enabled, neodev will not change any settings to the LSP server
|
||||
-- these settings will be used for your Neovim config directory
|
||||
runtime = true, -- runtime path
|
||||
types = true, -- full signature, docs and completion of vim.api, vim.treesitter, vim.lsp and others
|
||||
plugins = true, -- installed opt or start plugins in packpath
|
||||
-- you can also specify the list of plugins to make available as a workspace library
|
||||
-- plugins = { "nvim-treesitter", "plenary.nvim", "telescope.nvim" },
|
||||
},
|
||||
setup_jsonls = true, -- configures jsonls to provide completion for project specific .luarc.json files
|
||||
-- for your Neovim config directory, the config.library settings will be used as is
|
||||
-- for plugin directories (root_dirs having a /lua directory), config.library.plugins will be disabled
|
||||
-- for any other directory, config.library.enabled will be set to false
|
||||
override = function(root_dir, options) end,
|
||||
-- With lspconfig, Neodev will automatically setup your lua-language-server
|
||||
-- If you disable this, then you have to set {before_init=require("neodev.lsp").before_init}
|
||||
-- in your lsp start options
|
||||
lspconfig = true,
|
||||
-- much faster, but needs a recent built of lua-language-server
|
||||
-- needs lua-language-server >= 3.6.0
|
||||
pathStrict = true,
|
||||
}
|
||||
```
|
||||
|
||||
## 🚀 Setup
|
||||
|
||||
**neodev** will **ONLY** change the **lua_ls** settings for:
|
||||
|
||||
- your Neovim config directory
|
||||
- your Neovim runtime directory
|
||||
- any plugin directory (this is an lsp root_dir that contains a `/lua`
|
||||
directory)
|
||||
|
||||
For any other `root_dir`, **neodev** will **NOT** change any settings.
|
||||
|
||||
> **TIP** with [neoconf.nvim](https://github.com/folke/neoconf.nvim), you can easily set project local **Neodev** settings.
|
||||
> See the example [.neoconf.json](https://github.com/folke/neodev.nvim/blob/main/.neoconf.json) file in this repository
|
||||
|
||||
```lua
|
||||
-- IMPORTANT: make sure to setup neodev BEFORE lspconfig
|
||||
require("neodev").setup({
|
||||
-- add any options here, or leave empty to use the default settings
|
||||
})
|
||||
|
||||
-- then setup your lsp server as usual
|
||||
local lspconfig = require('lspconfig')
|
||||
|
||||
-- example to setup lua_ls and enable call snippets
|
||||
lspconfig.lua_ls.setup({
|
||||
settings = {
|
||||
Lua = {
|
||||
completion = {
|
||||
callSnippet = "Replace"
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>Example for setting up **neodev** that overrides the settings for `/etc/nixos`</summary>
|
||||
|
||||
```lua
|
||||
-- You can override the default detection using the override function
|
||||
-- EXAMPLE: If you want a certain directory to be configured differently, you can override its settings
|
||||
require("neodev").setup({
|
||||
override = function(root_dir, library)
|
||||
if require("neodev.util").has_file(root_dir, "/etc/nixos") then
|
||||
library.enabled = true
|
||||
library.plugins = true
|
||||
end
|
||||
end,
|
||||
})
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
It's possible to setup Neodev without lspconfig, by configuring the `before_init`
|
||||
of the options passed to `vim.lsp.start`.
|
||||
|
||||
<details>
|
||||
<summary>Example without lspconfig</summary>
|
||||
|
||||
```lua
|
||||
-- dont run neodev.setup
|
||||
vim.lsp.start({
|
||||
name = "lua-language-server",
|
||||
cmd = { "lua-language-server" },
|
||||
before_init = require("neodev.lsp").before_init,
|
||||
root_dir = vim.fn.getcwd(),
|
||||
settings = { Lua = {} },
|
||||
})
|
||||
```
|
||||
|
||||
</details>
|
163
bundle/neodev.nvim/doc/lua-dev.txt
vendored
Normal file
163
bundle/neodev.nvim/doc/lua-dev.txt
vendored
Normal file
@ -0,0 +1,163 @@
|
||||
*lua-dev.txt* For NVIM v0.5.0 Last change: 2022 October 14
|
||||
|
||||
==============================================================================
|
||||
Table of Contents *lua-dev-table-of-contents*
|
||||
|
||||
1. lua-dev |lua-dev-lua-dev|
|
||||
- Features |lua-dev-features|
|
||||
- Requirements |lua-dev-requirements|
|
||||
- Installation |lua-dev-installation|
|
||||
- Configuration |lua-dev-configuration|
|
||||
- Setup |lua-dev-setup|
|
||||
- How? |lua-dev-how?|
|
||||
|
||||
==============================================================================
|
||||
1. lua-dev *lua-dev-lua-dev*
|
||||
|
||||
Dev setup for init.lua and plugin development with full signature help, docs
|
||||
and completion for the nvim lua API.
|
||||
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/292349/118822916-6af02080-b86d-11eb-9990-942fe9b55541.png" title="fig:"/>
|
||||
<p class="caption">image</p>
|
||||
</div>
|
||||
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/292349/118823099-9115c080-b86d-11eb-9a68-521c6cb9905a.png" title="fig:"/>
|
||||
<p class="caption">image</p>
|
||||
</div>
|
||||
|
||||
FEATURES *lua-dev-features*
|
||||
|
||||
|
||||
- Automatically configures **lua-language-server** for your **Neovim** config, **Neovim** runtime and plugin
|
||||
directories
|
||||
- Annotations <https://github.com/sumneko/lua-language-server/wiki/Annotations> for completion, hover and signatures of:
|
||||
- Vim functions
|
||||
- Neovim api functions
|
||||
- `vim.opt`
|
||||
- vim.loop <https://github.com/luvit/luv>
|
||||
- properly configures the `require` path.
|
||||
- adds all plugins in `opt` and `start` to the workspace so you get completion
|
||||
for all installed plugins
|
||||
- properly configure the vim runtime
|
||||
|
||||
|
||||
REQUIREMENTS *lua-dev-requirements*
|
||||
|
||||
|
||||
- Neovim >= 0.7.0
|
||||
- completion plugin like nvim-cmp <https://github.com/hrsh7th/nvim-cmp>
|
||||
|
||||
|
||||
INSTALLATION *lua-dev-installation*
|
||||
|
||||
Install the plugin with your preferred package manager:
|
||||
|
||||
PACKER <HTTPS://GITHUB.COM/WBTHOMASON/PACKER.NVIM> ~
|
||||
|
||||
>
|
||||
use "folke/lua-dev.nvim"
|
||||
<
|
||||
|
||||
|
||||
VIM-PLUG <HTTPS://GITHUB.COM/JUNEGUNN/VIM-PLUG> ~
|
||||
|
||||
>
|
||||
Plug 'folke/lua-dev.nvim'
|
||||
<
|
||||
|
||||
|
||||
CONFIGURATION *lua-dev-configuration*
|
||||
|
||||
**lua-dev** comes with the following defaults:
|
||||
|
||||
>
|
||||
{
|
||||
library = {
|
||||
enabled = true, -- when not enabled, lua-dev will not change any settings to the LSP server
|
||||
-- these settings will be used for your Neovim config directory
|
||||
runtime = true, -- runtime path
|
||||
types = true, -- full signature, docs and completion of vim.api, vim.treesitter, vim.lsp and others
|
||||
plugins = true, -- installed opt or start plugins in packpath
|
||||
-- you can also specify the list of plugins to make available as a workspace library
|
||||
-- plugins = { "nvim-treesitter", "plenary.nvim", "telescope.nvim" },
|
||||
},
|
||||
setup_jsonls = true, -- configures jsonls to provide completion for project specific .luarc.json files
|
||||
-- for your Neovim config directory, the config.library settings will be used as is
|
||||
-- for plugin directories (root_dirs having a /lua directory), config.library.plugins will be disabled
|
||||
-- for any other directory, config.library.enabled will be set to false
|
||||
override = function(root_dir, options) end,
|
||||
|
||||
}
|
||||
<
|
||||
|
||||
|
||||
SETUP *lua-dev-setup*
|
||||
|
||||
**lua-dev** will **ONLY** change the **lua_ls** settings for:
|
||||
|
||||
|
||||
- your Neovim config directory
|
||||
- your Neovim runtime directory
|
||||
- any plugin directory (this is an lsp root_dir that contains a `/lua`
|
||||
directory)
|
||||
|
||||
|
||||
For any other `root_dir`, **lua-dev** will **NOT** change any settings.
|
||||
|
||||
>
|
||||
-- IMPORTANT: make sure to setup lua-dev BEFORE lspconfig
|
||||
require("lua-dev").setup({
|
||||
-- add any options here, or leave empty to use the default settings
|
||||
})
|
||||
|
||||
-- then setup your lsp server as usual
|
||||
local lspconfig = require('lspconfig')
|
||||
|
||||
-- example to setup sumneko and enable call snippets
|
||||
lspconfig.lua_ls.setup({
|
||||
settings = {
|
||||
Lua = {
|
||||
completion = {
|
||||
callSnippet = "Replace"
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
<
|
||||
|
||||
|
||||
Example for setting up **lua-dev** that overrides the settings for `/etc/nixos`
|
||||
|
||||
>
|
||||
-- You can override the default detection using the override function
|
||||
-- EXAMPLE: If you want a certain directory to be configured differently, you can override its settings
|
||||
require("lua-dev").setup({
|
||||
override = function(root_dir, library)
|
||||
if require("lua-dev.util").has_file(root_dir, "/etc/nixos") then
|
||||
library.enabled = true
|
||||
library.plugins = true
|
||||
end
|
||||
end,
|
||||
})
|
||||
<
|
||||
|
||||
|
||||
HOW? *lua-dev-how?*
|
||||
|
||||
**Neovim** includes a script
|
||||
<https://github.com/neovim/neovim/blob/master/scripts/gen_vimdoc.py> to
|
||||
generate the nvim docs. That script also creates message pack files containing
|
||||
all the API metadata in a structured way. Unfortunately these files are not
|
||||
packaged in the releases.
|
||||
|
||||
Using the message pack files, I converted all the API data to EmmyLua
|
||||
annotations
|
||||
<https://github.com/sumneko/lua-language-server/wiki/EmmyLua-Annotations> and
|
||||
make them available for the Sumneko LSP
|
||||
<https://github.com/sumneko/lua-language-server> as a workspace library.
|
||||
|
||||
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
166
bundle/neodev.nvim/doc/neodev.nvim.txt
vendored
Normal file
166
bundle/neodev.nvim/doc/neodev.nvim.txt
vendored
Normal file
@ -0,0 +1,166 @@
|
||||
*neodev.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 May 30
|
||||
|
||||
==============================================================================
|
||||
Table of Contents *neodev.nvim-table-of-contents*
|
||||
|
||||
1. neodev.nvim |neodev.nvim-neodev.nvim|
|
||||
- Features |neodev.nvim-neodev.nvim-features|
|
||||
- Requirements |neodev.nvim-neodev.nvim-requirements|
|
||||
- Installation |neodev.nvim-neodev.nvim-installation|
|
||||
- Configuration |neodev.nvim-neodev.nvim-configuration|
|
||||
- Setup |neodev.nvim-neodev.nvim-setup|
|
||||
|
||||
==============================================================================
|
||||
1. neodev.nvim *neodev.nvim-neodev.nvim*
|
||||
|
||||
Neovim setup for init.lua and plugin development with full signature help, docs
|
||||
and completion for the nvim lua API.
|
||||
|
||||
|
||||
FEATURES *neodev.nvim-neodev.nvim-features*
|
||||
|
||||
- Automatically configures **lua-language-server** for your **Neovim** config, **Neovim** runtime and plugin
|
||||
directories
|
||||
- Annotations <https://github.com/LuaLS/lua-language-server/wiki/Annotations> for completion, hover and signatures of:
|
||||
- Vim functions
|
||||
- Neovim api functions
|
||||
- `vim.opt`
|
||||
- vim.loop <https://github.com/luvit/luv>
|
||||
- properly configures the `require` path.
|
||||
- adds all plugins in `opt` and `start` to the workspace so you get completion
|
||||
for all installed plugins
|
||||
- properly configure the vim runtime
|
||||
|
||||
|
||||
REQUIREMENTS *neodev.nvim-neodev.nvim-requirements*
|
||||
|
||||
- Neovim >= 0.7.0
|
||||
- completion plugin like nvim-cmp <https://github.com/hrsh7th/nvim-cmp>
|
||||
|
||||
|
||||
INSTALLATION *neodev.nvim-neodev.nvim-installation*
|
||||
|
||||
Install the plugin with your preferred package manager:
|
||||
|
||||
|
||||
LAZY.NVIM ~
|
||||
|
||||
>lua
|
||||
{ "folke/neodev.nvim", opts = {} }
|
||||
<
|
||||
|
||||
|
||||
VIM-PLUG ~
|
||||
|
||||
>vim
|
||||
Plug 'folke/neodev.nvim'
|
||||
<
|
||||
|
||||
|
||||
CONFIGURATION *neodev.nvim-neodev.nvim-configuration*
|
||||
|
||||
**neodev** comes with the following defaults:
|
||||
|
||||
>lua
|
||||
{
|
||||
library = {
|
||||
enabled = true, -- when not enabled, neodev will not change any settings to the LSP server
|
||||
-- these settings will be used for your Neovim config directory
|
||||
runtime = true, -- runtime path
|
||||
types = true, -- full signature, docs and completion of vim.api, vim.treesitter, vim.lsp and others
|
||||
plugins = true, -- installed opt or start plugins in packpath
|
||||
-- you can also specify the list of plugins to make available as a workspace library
|
||||
-- plugins = { "nvim-treesitter", "plenary.nvim", "telescope.nvim" },
|
||||
},
|
||||
setup_jsonls = true, -- configures jsonls to provide completion for project specific .luarc.json files
|
||||
-- for your Neovim config directory, the config.library settings will be used as is
|
||||
-- for plugin directories (root_dirs having a /lua directory), config.library.plugins will be disabled
|
||||
-- for any other directory, config.library.enabled will be set to false
|
||||
override = function(root_dir, options) end,
|
||||
-- With lspconfig, Neodev will automatically setup your lua-language-server
|
||||
-- If you disable this, then you have to set {before_init=require("neodev.lsp").before_init}
|
||||
-- in your lsp start options
|
||||
lspconfig = true,
|
||||
-- much faster, but needs a recent built of lua-language-server
|
||||
-- needs lua-language-server >= 3.6.0
|
||||
pathStrict = true,
|
||||
}
|
||||
<
|
||||
|
||||
|
||||
SETUP *neodev.nvim-neodev.nvim-setup*
|
||||
|
||||
**neodev** will **ONLY** change the **lua_ls** settings for:
|
||||
|
||||
- your Neovim config directory
|
||||
- your Neovim runtime directory
|
||||
- any plugin directory (this is an lsp root_dir that contains a `/lua`
|
||||
directory)
|
||||
|
||||
For any other `root_dir`, **neodev** will **NOT** change any settings.
|
||||
|
||||
|
||||
**TIP** with neoconf.nvim <https://github.com/folke/neoconf.nvim>, you can
|
||||
easily set project local **Neodev** settings. See the example .neoconf.json
|
||||
<https://github.com/folke/neodev.nvim/blob/main/.neoconf.json> file in this
|
||||
repository
|
||||
>lua
|
||||
-- IMPORTANT: make sure to setup neodev BEFORE lspconfig
|
||||
require("neodev").setup({
|
||||
-- add any options here, or leave empty to use the default settings
|
||||
})
|
||||
|
||||
-- then setup your lsp server as usual
|
||||
local lspconfig = require('lspconfig')
|
||||
|
||||
-- example to setup lua_ls and enable call snippets
|
||||
lspconfig.lua_ls.setup({
|
||||
settings = {
|
||||
Lua = {
|
||||
completion = {
|
||||
callSnippet = "Replace"
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
<
|
||||
|
||||
Example for setting up **neodev** that overrides the settings for `/etc/nixos` ~
|
||||
|
||||
>lua
|
||||
-- You can override the default detection using the override function
|
||||
-- EXAMPLE: If you want a certain directory to be configured differently, you can override its settings
|
||||
require("neodev").setup({
|
||||
override = function(root_dir, library)
|
||||
if require("neodev.util").has_file(root_dir, "/etc/nixos") then
|
||||
library.enabled = true
|
||||
library.plugins = true
|
||||
end
|
||||
end,
|
||||
})
|
||||
<
|
||||
|
||||
It’s possible to setup Neodev without lspconfig, by configuring the
|
||||
`before_init` of the options passed to `vim.lsp.start`.
|
||||
|
||||
Example without lspconfig ~
|
||||
|
||||
>lua
|
||||
-- dont run neodev.setup
|
||||
vim.lsp.start({
|
||||
name = "lua-language-server",
|
||||
cmd = { "lua-language-server" },
|
||||
before_init = require("neodev.lsp").before_init,
|
||||
root_dir = vim.fn.getcwd(),
|
||||
settings = { Lua = {} },
|
||||
})
|
||||
<
|
||||
|
||||
==============================================================================
|
||||
2. Links *neodev.nvim-links*
|
||||
|
||||
1. *image*: https://user-images.githubusercontent.com/292349/201495543-ff532160-c8bd-4651-a16f-4fb682c9b945.png
|
||||
|
||||
Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>
|
||||
|
||||
vim:tw=78:ts=8:noet:ft=help:norl:
|
6
bundle/neodev.nvim/lua/lua-dev.lua
vendored
Normal file
6
bundle/neodev.nvim/lua/lua-dev.lua
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
vim.notify(
|
||||
"'lua-dev' was renamed to 'neodev'. Please update your config.",
|
||||
vim.log.levels.WARN,
|
||||
{ title = "neodev.nvim" }
|
||||
)
|
||||
return require("neodev")
|
57
bundle/neodev.nvim/lua/neodev/config.lua
vendored
Normal file
57
bundle/neodev.nvim/lua/neodev/config.lua
vendored
Normal file
@ -0,0 +1,57 @@
|
||||
local M = {}
|
||||
|
||||
--- @class LuaDevOptions
|
||||
M.defaults = {
|
||||
library = {
|
||||
enabled = true, -- when not enabled, neodev will not change any settings to the LSP server
|
||||
-- these settings will be used for your neovim config directory
|
||||
runtime = true, -- runtime path
|
||||
types = true, -- full signature, docs and completion of vim.api, vim.treesitter, vim.lsp and others
|
||||
---@type boolean|string[]
|
||||
plugins = true, -- installed opt or start plugins in packpath
|
||||
-- you can also specify the list of plugins to make available as a workspace library
|
||||
-- plugins = { "nvim-treesitter", "plenary.nvim", "telescope.nvim" },
|
||||
},
|
||||
setup_jsonls = true, -- configures jsonls to provide completion for .luarc.json files
|
||||
-- for your neovim config directory, the config.library settings will be used as is
|
||||
-- for plugin directories (root_dirs having a /lua directory), config.library.plugins will be disabled
|
||||
-- for any other directory, config.library.enabled will be set to false
|
||||
override = function(root_dir, options) end,
|
||||
-- With lspconfig, Neodev will automatically setup your lua-language-server
|
||||
-- If you disable this, then you have to set {before_init=require("neodev.lsp").before_init}
|
||||
-- in your lsp start options
|
||||
lspconfig = true,
|
||||
-- much faster, but needs a recent built of lua-language-server
|
||||
-- needs lua-language-server >= 3.6.0
|
||||
pathStrict = true,
|
||||
debug = false,
|
||||
}
|
||||
|
||||
--- @type LuaDevOptions
|
||||
M.options = {}
|
||||
|
||||
function M.setup(options)
|
||||
M.options = vim.tbl_deep_extend("force", {}, M.defaults, options or {})
|
||||
end
|
||||
|
||||
function M.types()
|
||||
return M.root("/types/" .. M.version())
|
||||
end
|
||||
|
||||
---@param root? string
|
||||
function M.root(root)
|
||||
local f = debug.getinfo(1, "S").source:sub(2)
|
||||
return vim.loop.fs_realpath(vim.fn.fnamemodify(f, ":h:h:h") .. "/" .. (root or ""))
|
||||
end
|
||||
|
||||
---@return "nightly" | "stable"
|
||||
function M.version()
|
||||
return vim.version().prerelease and "nightly" or "stable"
|
||||
end
|
||||
|
||||
---@return LuaDevOptions
|
||||
function M.merge(options)
|
||||
return vim.tbl_deep_extend("force", {}, M.options, options or {})
|
||||
end
|
||||
|
||||
return M
|
39
bundle/neodev.nvim/lua/neodev/init.lua
vendored
Normal file
39
bundle/neodev.nvim/lua/neodev/init.lua
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
local M = {}
|
||||
|
||||
local function neoconf(config)
|
||||
pcall(function()
|
||||
require("neoconf.plugins").register({
|
||||
on_schema = function(schema)
|
||||
schema:import("neodev", config.defaults)
|
||||
schema:set("neodev.library.plugins", {
|
||||
description = "true/false or an array of plugin names to enable",
|
||||
anyOf = {
|
||||
{ type = "boolean" },
|
||||
{ type = "array", items = { type = "string" } },
|
||||
},
|
||||
})
|
||||
end,
|
||||
})
|
||||
end)
|
||||
end
|
||||
|
||||
---@param opts? LuaDevOptions
|
||||
function M.setup(opts)
|
||||
local config = require("neodev.config")
|
||||
config.setup(opts)
|
||||
|
||||
if config.options.lspconfig then
|
||||
require("neodev.lsp").setup()
|
||||
end
|
||||
|
||||
neoconf(config)
|
||||
|
||||
-- leave this for now for backward compatibility
|
||||
return {
|
||||
settings = {
|
||||
legacy = true,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
return M
|
97
bundle/neodev.nvim/lua/neodev/lsp.lua
vendored
Normal file
97
bundle/neodev.nvim/lua/neodev/lsp.lua
vendored
Normal file
@ -0,0 +1,97 @@
|
||||
local util = require("neodev.util")
|
||||
|
||||
local M = {}
|
||||
|
||||
function M.setup()
|
||||
local opts = require("neodev.config").options
|
||||
|
||||
local lsputil = require("lspconfig.util")
|
||||
local hook = lsputil.add_hook_after
|
||||
lsputil.on_setup = hook(lsputil.on_setup, function(config)
|
||||
if opts.setup_jsonls and config.name == "jsonls" then
|
||||
M.setup_jsonls(config)
|
||||
end
|
||||
if config.name == "lua_ls" then
|
||||
config.on_new_config = hook(config.on_new_config, M.on_new_config)
|
||||
-- config.before_init = hook(config.before_init, M.before_init)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
function M.setup_jsonls(config)
|
||||
local schemas = config.settings.json and config.settings.json.schemas or {}
|
||||
table.insert(schemas, {
|
||||
name = "LuaLS Settings",
|
||||
url = "https://raw.githubusercontent.com/LuaLS/vscode-lua/master/setting/schema.json",
|
||||
fileMatch = { ".luarc.json", ".luarc.jsonc" },
|
||||
})
|
||||
config.settings = vim.tbl_deep_extend("force", config.settings, {
|
||||
json = {
|
||||
schemas = schemas,
|
||||
validate = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
function M.before_init(params, config)
|
||||
M.on_new_config(config, params.rootPath)
|
||||
end
|
||||
|
||||
function M.on_new_config(config, root_dir)
|
||||
-- don't do anything when old style setup was used
|
||||
if config.settings.legacy then
|
||||
util.warn(
|
||||
"You're using the old way of setting up neodev (previously lua-dev).\nPlease check the docs at https://github.com/folke/neodev.nvim#-setup"
|
||||
)
|
||||
return
|
||||
end
|
||||
|
||||
local lua_root = util.find_root()
|
||||
|
||||
local opts = require("neodev.config").merge()
|
||||
|
||||
opts.library.enabled = util.is_nvim_config()
|
||||
|
||||
if not opts.library.enabled and lua_root then
|
||||
opts.library.enabled = true
|
||||
opts.library.plugins = false
|
||||
end
|
||||
|
||||
pcall(function()
|
||||
opts = require("neoconf").get("neodev", opts, { file = root_dir })
|
||||
end)
|
||||
|
||||
pcall(opts.override, root_dir, opts.library)
|
||||
|
||||
local library = config.settings
|
||||
and config.settings.Lua
|
||||
and config.settings.Lua.workspace
|
||||
and config.settings.Lua.workspace.library
|
||||
or {}
|
||||
|
||||
local ignoreDir = config.settings
|
||||
and config.settings.Lua
|
||||
and config.settings.Lua.workspace
|
||||
and config.settings.Lua.workspace.ignoreDir
|
||||
or {}
|
||||
|
||||
if opts.library.enabled then
|
||||
config.settings =
|
||||
vim.tbl_deep_extend("force", config.settings or {}, require("neodev.luals").setup(opts, config.settings).settings)
|
||||
for _, lib in ipairs(library) do
|
||||
table.insert(config.settings.Lua.workspace.library, lib)
|
||||
end
|
||||
|
||||
if require("neodev.config").options.pathStrict and lua_root then
|
||||
table.insert(config.settings.Lua.workspace.library, lua_root)
|
||||
end
|
||||
|
||||
for _, dir in ipairs(ignoreDir) do
|
||||
table.insert(config.settings.Lua.workspace.ignoreDir, dir)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
110
bundle/neodev.nvim/lua/neodev/luals.lua
vendored
Normal file
110
bundle/neodev.nvim/lua/neodev/luals.lua
vendored
Normal file
@ -0,0 +1,110 @@
|
||||
local config = require("neodev.config")
|
||||
|
||||
local M = {}
|
||||
|
||||
---@param opts LuaDevOptions
|
||||
function M.library(opts)
|
||||
opts = config.merge(opts)
|
||||
local ret = {}
|
||||
|
||||
if opts.library.types then
|
||||
table.insert(ret, config.types())
|
||||
end
|
||||
|
||||
local function add(lib, filter)
|
||||
---@diagnostic disable-next-line: param-type-mismatch
|
||||
for _, p in ipairs(vim.fn.expand(lib .. "/lua", false, true)) do
|
||||
local plugin_name = vim.fn.fnamemodify(p, ":h:t")
|
||||
p = vim.loop.fs_realpath(p)
|
||||
if p and (not filter or filter[plugin_name]) then
|
||||
if config.options.pathStrict then
|
||||
table.insert(ret, p)
|
||||
else
|
||||
table.insert(ret, vim.fn.fnamemodify(p, ":h"))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if opts.library.runtime then
|
||||
add(type(opts.library.runtime) == "string" and opts.library.runtime or "$VIMRUNTIME")
|
||||
end
|
||||
|
||||
if opts.library.plugins then
|
||||
---@type table<string, boolean>
|
||||
local filter
|
||||
if type(opts.library.plugins) == "table" then
|
||||
filter = {}
|
||||
for _, p in pairs(opts.library.plugins) do
|
||||
filter[p] = true
|
||||
end
|
||||
end
|
||||
for _, site in pairs(vim.split(vim.o.packpath, ",")) do
|
||||
add(site .. "/pack/*/opt/*", filter)
|
||||
add(site .. "/pack/*/start/*", filter)
|
||||
end
|
||||
-- add support for lazy.nvim
|
||||
if package.loaded["lazy"] then
|
||||
for _, plugin in ipairs(require("lazy").plugins()) do
|
||||
add(plugin.dir, filter)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return ret
|
||||
end
|
||||
|
||||
---@param settings? lspconfig.settings.lua_ls
|
||||
function M.path(settings)
|
||||
if config.options.pathStrict then
|
||||
return { "?.lua", "?/init.lua" }
|
||||
end
|
||||
|
||||
settings = settings or {}
|
||||
local runtime = settings.Lua and settings.Lua.runtime or {}
|
||||
local meta = runtime.meta or "${version} ${language} ${encoding}"
|
||||
meta = meta:gsub("%${version}", runtime.version or "LuaJIT")
|
||||
meta = meta:gsub("%${language}", "en-us")
|
||||
meta = meta:gsub("%${encoding}", runtime.fileEncoding or "utf8")
|
||||
|
||||
return {
|
||||
-- paths for builtin libraries
|
||||
("meta/%s/?.lua"):format(meta),
|
||||
("meta/%s/?/init.lua"):format(meta),
|
||||
-- paths for meta/3rd libraries
|
||||
"library/?.lua",
|
||||
"library/?/init.lua",
|
||||
-- Neovim lua files, config and plugins
|
||||
"lua/?.lua",
|
||||
"lua/?/init.lua",
|
||||
}
|
||||
end
|
||||
|
||||
---@param opts? LuaDevOptions
|
||||
---@param settings? lspconfig.settings.lua_ls
|
||||
function M.setup(opts, settings)
|
||||
opts = config.merge(opts)
|
||||
return {
|
||||
---@type lspconfig.settings.lua_ls
|
||||
settings = {
|
||||
Lua = {
|
||||
runtime = {
|
||||
version = "LuaJIT",
|
||||
path = M.path(settings),
|
||||
pathStrict = config.options.pathStrict,
|
||||
},
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
completion = opts.snippet and { callSnippet = "Replace" } or nil,
|
||||
workspace = {
|
||||
-- Make the server aware of Neovim runtime files
|
||||
library = M.library(opts),
|
||||
-- when pathStrict=false, we need to add the other types to ignoreDir,
|
||||
-- otherwise they get indexed
|
||||
ignoreDir = { config.version() == "stable" and "types/nightly" or "types/stable", "lua" },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
return M
|
87
bundle/neodev.nvim/lua/neodev/util.lua
vendored
Normal file
87
bundle/neodev.nvim/lua/neodev/util.lua
vendored
Normal file
@ -0,0 +1,87 @@
|
||||
local config = require("neodev.config")
|
||||
|
||||
local M = {}
|
||||
|
||||
--- find the root directory that has /lua
|
||||
---@param path string?
|
||||
---@return string?
|
||||
function M.find_root(path)
|
||||
path = path or vim.api.nvim_buf_get_name(0)
|
||||
return vim.fs.find({ "lua" }, { path = path, upward = true, type = "directory" })[1]
|
||||
end
|
||||
|
||||
function M.fetch(url)
|
||||
local fd = io.popen(string.format("curl -s -k %q", url))
|
||||
if not fd then
|
||||
error(("Could not download %s"):format(url))
|
||||
end
|
||||
local ret = fd:read("*a")
|
||||
fd:close()
|
||||
return ret
|
||||
end
|
||||
|
||||
function M.is_nvim_config()
|
||||
local path = vim.loop.fs_realpath(vim.api.nvim_buf_get_name(0))
|
||||
if path then
|
||||
path = vim.fs.normalize(path)
|
||||
local config_root = vim.loop.fs_realpath(vim.fn.stdpath("config")) or vim.fn.stdpath("config")
|
||||
config_root = vim.fs.normalize(config_root)
|
||||
return path:find(config_root, 1, true) == 1
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function M.keys(tbl)
|
||||
local ret = vim.tbl_keys(tbl)
|
||||
table.sort(ret)
|
||||
return ret
|
||||
end
|
||||
|
||||
---@generic K
|
||||
---@generic V
|
||||
---@param tbl table<K, V>
|
||||
---@param fn fun(key: K, value: V)
|
||||
function M.for_each(tbl, fn)
|
||||
local keys = M.keys(tbl)
|
||||
for _, key in ipairs(keys) do
|
||||
fn(key, tbl[key])
|
||||
end
|
||||
end
|
||||
|
||||
---@param file string
|
||||
---@param flags? string
|
||||
---@return string
|
||||
function M.read_file(file, flags)
|
||||
local fd = io.open(file, "r" .. (flags or ""))
|
||||
if not fd then
|
||||
error(("Could not open file %s for reading"):format(file))
|
||||
end
|
||||
local data = fd:read("*a")
|
||||
fd:close()
|
||||
return data
|
||||
end
|
||||
|
||||
function M.write_file(file, data)
|
||||
local fd = io.open(file, "w+")
|
||||
if not fd then
|
||||
error(("Could not open file %s for writing"):format(file))
|
||||
end
|
||||
fd:write(data)
|
||||
fd:close()
|
||||
end
|
||||
|
||||
function M.debug(msg)
|
||||
if config.options.debug then
|
||||
M.error(msg)
|
||||
end
|
||||
end
|
||||
|
||||
function M.error(msg)
|
||||
vim.notify_once(msg, vim.log.levels.ERROR, { title = "neodev.nvim" })
|
||||
end
|
||||
|
||||
function M.warn(msg)
|
||||
vim.notify_once(msg, vim.log.levels.WARN, { title = "neodev.nvim" })
|
||||
end
|
||||
|
||||
return M
|
1
bundle/neodev.nvim/selene.toml
vendored
Normal file
1
bundle/neodev.nvim/selene.toml
vendored
Normal file
@ -0,0 +1 @@
|
||||
std="lua51+vim"
|
3
bundle/neodev.nvim/stylua.toml
vendored
Normal file
3
bundle/neodev.nvim/stylua.toml
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
indent_type = "Spaces"
|
||||
indent_width = 2
|
||||
column_width = 120
|
11
bundle/neodev.nvim/types/nightly/alias.lua
vendored
Normal file
11
bundle/neodev.nvim/types/nightly/alias.lua
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
---@meta
|
||||
|
||||
---@alias blob number
|
||||
---@alias buffer integer
|
||||
---@alias channel integer
|
||||
---@alias float number
|
||||
---@alias job number
|
||||
---@alias object any
|
||||
---@alias sends number
|
||||
---@alias tabpage integer
|
||||
---@alias window integer
|
3035
bundle/neodev.nvim/types/nightly/api.lua
vendored
Normal file
3035
bundle/neodev.nvim/types/nightly/api.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3080
bundle/neodev.nvim/types/nightly/cmd.lua
vendored
Normal file
3080
bundle/neodev.nvim/types/nightly/cmd.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
637
bundle/neodev.nvim/types/nightly/lpeg.lua
vendored
Normal file
637
bundle/neodev.nvim/types/nightly/lpeg.lua
vendored
Normal file
@ -0,0 +1,637 @@
|
||||
---@meta
|
||||
|
||||
---
|
||||
---@meta
|
||||
---The definitions are developed in this repository: https://github.com/LuaCATS/lpeg
|
||||
|
||||
---
|
||||
---This type definition is based on the [HTML documentation](http://www.inf.puc-rio.br/~roberto/lpeg/) of the LPeg library. A different HTML documentation can be found at http://stevedonovan.github.io/lua-stdlibs/modules/lpeg.html.
|
||||
---
|
||||
---*LPeg* is a new pattern-matching library for Lua,
|
||||
---based on
|
||||
---[Parsing Expression Grammars](https://bford.info/packrat/) (PEGs).
|
||||
---This text is a reference manual for the library.
|
||||
---For a more formal treatment of LPeg,
|
||||
---as well as some discussion about its implementation,
|
||||
---see
|
||||
---[A Text Pattern-Matching Tool based on Parsing Expression Grammars](http://www.inf.puc-rio.br/~roberto/docs/peg.pdf).
|
||||
---(You may also be interested in my
|
||||
---[talk about LPeg](https://vimeo.com/1485123)
|
||||
---given at the III Lua Workshop.)
|
||||
---
|
||||
---Following the Snobol tradition,
|
||||
---LPeg defines patterns as first-class objects.
|
||||
---That is, patterns are regular Lua values
|
||||
---(represented by userdata).
|
||||
---The library offers several functions to create
|
||||
---and compose patterns.
|
||||
---With the use of metamethods,
|
||||
---several of these functions are provided as infix or prefix
|
||||
---operators.
|
||||
---On the one hand,
|
||||
---the result is usually much more verbose than the typical
|
||||
---encoding of patterns using the so called
|
||||
---*regular expressions*
|
||||
---(which typically are not regular expressions in the formal sense).
|
||||
---On the other hand,
|
||||
---first-class patterns allow much better documentation
|
||||
---(as it is easy to comment the code,
|
||||
---to break complex definitions in smaller parts, etc.)
|
||||
---and are extensible,
|
||||
---as we can define new functions to create and compose patterns.
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
local lpeg = {}
|
||||
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
---@class Pattern
|
||||
---@operator add(Pattern): Pattern
|
||||
---@operator mul(Pattern): Pattern
|
||||
---@operator mul(Capture): Pattern
|
||||
---@operator div(string): Capture
|
||||
---@operator div(number): Capture
|
||||
---@operator div(table): Capture
|
||||
---@operator div(function): Capture
|
||||
---@operator pow(number): Pattern
|
||||
local Pattern = {}
|
||||
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
---@alias Capture Pattern
|
||||
---@operator add(Capture): Pattern
|
||||
---@operator mul(Capture): Pattern
|
||||
---@operator mul(Pattern): Pattern
|
||||
---@operator div(string): Capture
|
||||
---@operator div(number): Capture
|
||||
---@operator div(table): Capture
|
||||
---@operator div(function): Capture
|
||||
---@operator pow(number): Pattern
|
||||
|
||||
---
|
||||
---Match the given `pattern` against the `subject` string.
|
||||
---
|
||||
---If the match succeeds,
|
||||
---returns the index in the subject of the first character after the match,
|
||||
---or the captured values
|
||||
---(if the pattern captured any value).
|
||||
---
|
||||
---An optional numeric argument `init` makes the match
|
||||
---start at that position in the subject string.
|
||||
---As usual in Lua libraries,
|
||||
---a negative value counts from the end.
|
||||
---
|
||||
---Unlike typical pattern-matching functions,
|
||||
---`match` works only in anchored mode;
|
||||
---that is, it tries to match the pattern with a prefix of
|
||||
---the given subject string (at position `init`),
|
||||
---not with an arbitrary substring of the subject.
|
||||
---So, if we want to find a pattern anywhere in a string,
|
||||
---we must either write a loop in Lua or write a pattern that
|
||||
---matches anywhere.
|
||||
---This second approach is easy and quite efficient;
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local pattern = lpeg.R("az") ^ 1 * -1
|
||||
---assert(pattern:match("hello") == 6)
|
||||
---assert(lpeg.match(pattern, "hello") == 6)
|
||||
---assert(pattern:match("1 hello") == nil)
|
||||
---```
|
||||
---
|
||||
---@param pattern Pattern
|
||||
---@param subject string
|
||||
---@param init? integer
|
||||
---
|
||||
---@return integer|Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.match(pattern, subject, init) end
|
||||
|
||||
---
|
||||
---Match the given `pattern` against the `subject` string.
|
||||
---
|
||||
---If the match succeeds,
|
||||
---returns the index in the subject of the first character after the match,
|
||||
---or the captured values
|
||||
---(if the pattern captured any value).
|
||||
---
|
||||
---An optional numeric argument `init` makes the match
|
||||
---start at that position in the subject string.
|
||||
---As usual in Lua libraries,
|
||||
---a negative value counts from the end.
|
||||
---
|
||||
---Unlike typical pattern-matching functions,
|
||||
---`match` works only in anchored mode;
|
||||
---that is, it tries to match the pattern with a prefix of
|
||||
---the given subject string (at position `init`),
|
||||
---not with an arbitrary substring of the subject.
|
||||
---So, if we want to find a pattern anywhere in a string,
|
||||
---we must either write a loop in Lua or write a pattern that
|
||||
---matches anywhere.
|
||||
---This second approach is easy and quite efficient;
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local pattern = lpeg.R("az") ^ 1 * -1
|
||||
---assert(pattern:match("hello") == 6)
|
||||
---assert(lpeg.match(pattern, "hello") == 6)
|
||||
---assert(pattern:match("1 hello") == nil)
|
||||
---```
|
||||
---
|
||||
---@param subject string
|
||||
---@param init? integer
|
||||
---
|
||||
---@return integer|Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function Pattern:match(subject, init) end
|
||||
|
||||
---
|
||||
---Return the string `"pattern"` if the given value is a pattern, otherwise `nil`.
|
||||
---
|
||||
---@return 'pattern'|nil
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.type(value) end
|
||||
|
||||
---
|
||||
---Return a string with the running version of LPeg.
|
||||
---
|
||||
---@return string
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.version() end
|
||||
|
||||
---
|
||||
---Set a limit for the size of the backtrack stack used by LPeg to
|
||||
---track calls and choices.
|
||||
---
|
||||
---The default limit is `400`.
|
||||
---Most well-written patterns need little backtrack levels and
|
||||
---therefore you seldom need to change this limit;
|
||||
---before changing it you should try to rewrite your
|
||||
---pattern to avoid the need for extra space.
|
||||
---Nevertheless, a few useful patterns may overflow.
|
||||
---Also, with recursive grammars,
|
||||
---subjects with deep recursion may also need larger limits.
|
||||
---
|
||||
---@param max integer
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.setmaxstack(max) end
|
||||
|
||||
---
|
||||
---Convert the given value into a proper pattern.
|
||||
---
|
||||
---This following rules are applied:
|
||||
---
|
||||
---* If the argument is a pattern,
|
||||
---it is returned unmodified.
|
||||
---
|
||||
---* If the argument is a string,
|
||||
---it is translated to a pattern that matches the string literally.
|
||||
---
|
||||
---* If the argument is a non-negative number `n`,
|
||||
---the result is a pattern that matches exactly `n` characters.
|
||||
---
|
||||
---* If the argument is a negative number `-n`,
|
||||
---the result is a pattern that
|
||||
---succeeds only if the input string has less than `n` characters left:
|
||||
---`lpeg.P(-n)`
|
||||
---is equivalent to `-lpeg.P(n)`
|
||||
---(see the unary minus operation).
|
||||
---
|
||||
---* If the argument is a boolean,
|
||||
---the result is a pattern that always succeeds or always fails
|
||||
---(according to the boolean value),
|
||||
---without consuming any input.
|
||||
---
|
||||
---* If the argument is a table,
|
||||
---it is interpreted as a grammar
|
||||
---(see Grammars).
|
||||
---
|
||||
---* If the argument is a function,
|
||||
---returns a pattern equivalent to a
|
||||
---match-time captureover the empty string.
|
||||
---
|
||||
---@param value Pattern|string|integer|boolean|table|function
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.P(value) end
|
||||
|
||||
---
|
||||
---Return a pattern that
|
||||
---matches only if the input string at the current position
|
||||
---is preceded by `patt`.
|
||||
---
|
||||
---Pattern `patt` must match only strings
|
||||
---with some fixed length,
|
||||
---and it cannot contain captures.
|
||||
---
|
||||
---Like the and predicate,
|
||||
---this pattern never consumes any input,
|
||||
---independently of success or failure.
|
||||
---
|
||||
---@param pattern Pattern
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.B(pattern) end
|
||||
|
||||
---
|
||||
---Return a pattern that matches any single character
|
||||
---belonging to one of the given ranges.
|
||||
---
|
||||
---Each `range` is a string `xy` of length 2,
|
||||
---representing all characters with code
|
||||
---between the codes of `x` and `y`
|
||||
---(both inclusive).
|
||||
---
|
||||
---As an example, the pattern
|
||||
---`lpeg.R("09")` matches any digit,
|
||||
---and `lpeg.R("az", "AZ")` matches any ASCII letter.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local pattern = lpeg.R("az") ^ 1 * -1
|
||||
---assert(pattern:match("hello") == 6)
|
||||
---```
|
||||
---
|
||||
---@param ... string
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.R(...) end
|
||||
|
||||
---
|
||||
---Return a pattern that matches any single character that
|
||||
---appears in the given string.
|
||||
---(The `S` stands for Set.)
|
||||
---
|
||||
---As an example, the pattern
|
||||
---`lpeg.S("+-*/")` matches any arithmetic operator.
|
||||
---
|
||||
---Note that, if `s` is a character
|
||||
---(that is, a string of length 1),
|
||||
---then `lpeg.P(s)` is equivalent to `lpeg.S(s)`
|
||||
---which is equivalent to `lpeg.R(s..s)`.
|
||||
---Note also that both `lpeg.S("")` and `lpeg.R()`
|
||||
---are patterns that always fail.
|
||||
---
|
||||
---@param string string
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.S(string) end
|
||||
|
||||
---
|
||||
---Create a non-terminal (a variable) for a grammar.
|
||||
---
|
||||
---This operation creates a non-terminal (a variable)
|
||||
---for a grammar.
|
||||
---The created non-terminal refers to the rule indexed by `v`
|
||||
---in the enclosing grammar.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local b = lpeg.P({"(" * ((1 - lpeg.S "()") + lpeg.V(1)) ^ 0 * ")"})
|
||||
---assert(b:match('((string))') == 11)
|
||||
---assert(b:match('(') == nil)
|
||||
---```
|
||||
---
|
||||
---@param v string|integer
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.V(v) end
|
||||
|
||||
---
|
||||
---@class Locale
|
||||
---@field alnum userdata
|
||||
---@field alpha userdata
|
||||
---@field cntrl userdata
|
||||
---@field digit userdata
|
||||
---@field graph userdata
|
||||
---@field lower userdata
|
||||
---@field print userdata
|
||||
---@field punct userdata
|
||||
---@field space userdata
|
||||
---@field upper userdata
|
||||
---@field xdigit userdata
|
||||
|
||||
---
|
||||
---Return a table with patterns for matching some character classes
|
||||
---according to the current locale.
|
||||
---
|
||||
---The table has fields named
|
||||
---`alnum`,
|
||||
---`alpha`,
|
||||
---`cntrl`,
|
||||
---`digit`,
|
||||
---`graph`,
|
||||
---`lower`,
|
||||
---`print`,
|
||||
---`punct`,
|
||||
---`space`,
|
||||
---`upper`, and
|
||||
---`xdigit`,
|
||||
---each one containing a correspondent pattern.
|
||||
---Each pattern matches any single character that belongs to its class.
|
||||
--
|
||||
---If called with an argument `table`,
|
||||
---then it creates those fields inside the given table and
|
||||
---returns that table.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---lpeg.locale(lpeg)
|
||||
---local space = lpeg.space^0
|
||||
---local name = lpeg.C(lpeg.alpha^1) * space
|
||||
---local sep = lpeg.S(",;") * space
|
||||
---local pair = lpeg.Cg(name * "=" * space * name) * sep^-1
|
||||
---local list = lpeg.Cf(lpeg.Ct("") * pair^0, rawset)
|
||||
---local t = list:match("a=b, c = hi; next = pi")
|
||||
---assert(t.a == 'b')
|
||||
---assert(t.c == 'hi')
|
||||
---assert(t.next == 'pi')
|
||||
---
|
||||
---local locale = lpeg.locale()
|
||||
---assert(type(locale.digit) == 'userdata')
|
||||
---```
|
||||
---
|
||||
---@param tab? table
|
||||
---
|
||||
---@return Locale
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.locale(tab) end
|
||||
|
||||
---
|
||||
---Create a simple capture.
|
||||
---
|
||||
---Creates a simple capture,
|
||||
---which captures the substring of the subject that matches `patt`.
|
||||
---The captured value is a string.
|
||||
---If `patt` has other captures,
|
||||
---their values are returned after this one.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local function split (s, sep)
|
||||
--- sep = lpeg.P(sep)
|
||||
--- local elem = lpeg.C((1 - sep)^0)
|
||||
--- local p = elem * (sep * elem)^0
|
||||
--- return lpeg.match(p, s)
|
||||
---end
|
||||
---
|
||||
---local a, b, c = split('a,b,c', ',')
|
||||
---assert(a == 'a')
|
||||
---assert(b == 'b')
|
||||
---assert(c == 'c')
|
||||
---```
|
||||
---
|
||||
---@param patt Pattern
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.C(patt) end
|
||||
|
||||
---
|
||||
---Create an argument capture.
|
||||
---
|
||||
---This pattern matches the empty string and
|
||||
---produces the value given as the nth extra
|
||||
---argument given in the call to `lpeg.match`.
|
||||
---
|
||||
---@param n integer
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Carg(n) end
|
||||
|
||||
---
|
||||
---Create a back capture.
|
||||
---
|
||||
---This pattern matches the empty string and
|
||||
---produces the values produced by the most recent
|
||||
---group capture named `name`
|
||||
---(where `name` can be any Lua value).
|
||||
---
|
||||
---Most recent means the last
|
||||
---complete
|
||||
---outermost
|
||||
---group capture with the given name.
|
||||
---A Complete capture means that the entire pattern
|
||||
---corresponding to the capture has matched.
|
||||
---An Outermost capture means that the capture is not inside
|
||||
---another complete capture.
|
||||
---
|
||||
---In the same way that LPeg does not specify when it evaluates captures,
|
||||
---it does not specify whether it reuses
|
||||
---values previously produced by the group
|
||||
---or re-evaluates them.
|
||||
---
|
||||
---@param name any
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cb(name) end
|
||||
|
||||
---
|
||||
---Create a constant capture.
|
||||
---
|
||||
---This pattern matches the empty string and
|
||||
---produces all given values as its captured values.
|
||||
---
|
||||
---@param ... any
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cc(...) end
|
||||
|
||||
---
|
||||
---Create a fold capture.
|
||||
---
|
||||
---If `patt` produces a list of captures
|
||||
---C1 C2 ... Cn,
|
||||
---this capture will produce the value
|
||||
---`func(...func(func(C1, C2), C3)...,Cn)`,
|
||||
---that is, it will fold
|
||||
---(or accumulate, or reduce)
|
||||
---the captures from `patt` using function `func`.
|
||||
---
|
||||
---This capture assumes that `patt` should produce
|
||||
---at least one capture with at least one value (of any type),
|
||||
---which becomes the initial value of an accumulator.
|
||||
---(If you need a specific initial value,
|
||||
---you may prefix a constant captureto `patt`.)
|
||||
---For each subsequent capture,
|
||||
---LPeg calls `func`
|
||||
---with this accumulator as the first argument and all values produced
|
||||
---by the capture as extra arguments;
|
||||
---the first result from this call
|
||||
---becomes the new value for the accumulator.
|
||||
---The final value of the accumulator becomes the captured value.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local number = lpeg.R("09") ^ 1 / tonumber
|
||||
---local list = number * ("," * number) ^ 0
|
||||
---local function add(acc, newvalue) return acc + newvalue end
|
||||
---local sum = lpeg.Cf(list, add)
|
||||
---assert(sum:match("10,30,43") == 83)
|
||||
---```
|
||||
---
|
||||
---@param patt Pattern
|
||||
---@param func fun(acc, newvalue)
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cf(patt, func) end
|
||||
|
||||
---
|
||||
---Create a group capture.
|
||||
---
|
||||
---It groups all values returned by `patt`
|
||||
---into a single capture.
|
||||
---The group may be anonymous (if no name is given)
|
||||
---or named with the given name
|
||||
---(which can be any non-nil Lua value).
|
||||
---
|
||||
---@param patt Pattern
|
||||
---@param name? string
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cg(patt, name) end
|
||||
|
||||
---
|
||||
---Create a position capture.
|
||||
---
|
||||
---It matches the empty string and
|
||||
---captures the position in the subject where the match occurs.
|
||||
---The captured value is a number.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local I = lpeg.Cp()
|
||||
---local function anywhere(p) return lpeg.P({I * p * I + 1 * lpeg.V(1)}) end
|
||||
|
||||
---local match_start, match_end = anywhere("world"):match("hello world!")
|
||||
---assert(match_start == 7)
|
||||
---assert(match_end == 12)
|
||||
---```
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cp() end
|
||||
|
||||
---
|
||||
---Create a substitution capture.
|
||||
---
|
||||
---This function creates a substitution capture,
|
||||
---which captures the substring of the subject that matches `patt`,
|
||||
---with substitutions.
|
||||
---For any capture inside `patt` with a value,
|
||||
---the substring that matched the capture is replaced by the capture value
|
||||
---(which should be a string).
|
||||
---The final captured value is the string resulting from
|
||||
---all replacements.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local function gsub (s, patt, repl)
|
||||
--- patt = lpeg.P(patt)
|
||||
--- patt = lpeg.Cs((patt / repl + 1)^0)
|
||||
--- return lpeg.match(patt, s)
|
||||
---end
|
||||
---assert(gsub('Hello, xxx!', 'xxx', 'World') == 'Hello, World!')
|
||||
---```
|
||||
---
|
||||
---@param patt Pattern
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cs(patt) end
|
||||
|
||||
---
|
||||
---Create a table capture.
|
||||
---
|
||||
---This capture returns a table with all values from all anonymous captures
|
||||
---made by `patt` inside this table in successive integer keys,
|
||||
---starting at 1.
|
||||
---Moreover,
|
||||
---for each named capture group created by `patt`,
|
||||
---the first value of the group is put into the table
|
||||
---with the group name as its key.
|
||||
---The captured value is only the table.
|
||||
---
|
||||
---@param patt Pattern|''
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Ct(patt) end
|
||||
|
||||
---
|
||||
---Create a match-time capture.
|
||||
---
|
||||
---Unlike all other captures,
|
||||
---this one is evaluated immediately when a match occurs
|
||||
---(even if it is part of a larger pattern that fails later).
|
||||
---It forces the immediate evaluation of all its nested captures
|
||||
---and then calls `function`.
|
||||
---
|
||||
---The given function gets as arguments the entire subject,
|
||||
---the current position (after the match of `patt`),
|
||||
---plus any capture values produced by `patt`.
|
||||
---
|
||||
---The first value returned by `function`
|
||||
---defines how the match happens.
|
||||
---If the call returns a number,
|
||||
---the match succeeds
|
||||
---and the returned number becomes the new current position.
|
||||
---(Assuming a subject sand current position i,
|
||||
---the returned number must be in the range [i, len(s) + 1].)
|
||||
---If the call returns true,
|
||||
---the match succeeds without consuming any input.
|
||||
---(So, to return trueis equivalent to return i.)
|
||||
---If the call returns false, nil, or no value,
|
||||
---the match fails.
|
||||
---
|
||||
---Any extra values returned by the function become the
|
||||
---values produced by the capture.
|
||||
---
|
||||
---@param patt Pattern
|
||||
---@param fn function
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cmt(patt, fn) end
|
||||
|
||||
return lpeg
|
310
bundle/neodev.nvim/types/nightly/lua.lua
vendored
Normal file
310
bundle/neodev.nvim/types/nightly/lua.lua
vendored
Normal file
@ -0,0 +1,310 @@
|
||||
---@meta
|
||||
|
||||
|
||||
|
||||
-- Invokes |vim-function| or |user-function| {func} with arguments {...}.
|
||||
-- See also |vim.fn|.
|
||||
-- Equivalent to:
|
||||
-- ```lua
|
||||
-- vim.fn[func]({...})
|
||||
-- ```
|
||||
--- @param func fun()
|
||||
function vim.call(func, ...) end
|
||||
|
||||
-- Run diff on strings {a} and {b}. Any indices returned by this function,
|
||||
-- either directly or via callback arguments, are 1-based.
|
||||
--
|
||||
-- Examples:
|
||||
-- ```lua
|
||||
-- vim.diff('a\n', 'b\nc\n')
|
||||
-- -- =>
|
||||
-- -- @@ -1 +1,2 @@
|
||||
-- -- -a
|
||||
-- -- +b
|
||||
-- -- +c
|
||||
--
|
||||
-- vim.diff('a\n', 'b\nc\n', {result_type = 'indices'})
|
||||
-- -- =>
|
||||
-- -- {
|
||||
-- -- {1, 1, 1, 2}
|
||||
-- -- }
|
||||
-- ```
|
||||
-- Parameters: ~
|
||||
-- • {a} First string to compare
|
||||
-- • {b} Second string to compare
|
||||
-- • {opts} Optional parameters:
|
||||
-- • `on_hunk` (callback):
|
||||
-- Invoked for each hunk in the diff. Return a negative number
|
||||
-- to cancel the callback for any remaining hunks.
|
||||
-- Args:
|
||||
-- • `start_a` (integer): Start line of hunk in {a}.
|
||||
-- • `count_a` (integer): Hunk size in {a}.
|
||||
-- • `start_b` (integer): Start line of hunk in {b}.
|
||||
-- • `count_b` (integer): Hunk size in {b}.
|
||||
-- • `result_type` (string): Form of the returned diff:
|
||||
-- • "unified": (default) String in unified format.
|
||||
-- • "indices": Array of hunk locations.
|
||||
-- Note: This option is ignored if `on_hunk` is used.
|
||||
-- • `linematch` (boolean|integer): Run linematch on the resulting hunks
|
||||
-- from xdiff. When integer, only hunks upto this size in
|
||||
-- lines are run through linematch. Requires `result_type = indices`,
|
||||
-- ignored otherwise.
|
||||
-- • `algorithm` (string):
|
||||
-- Diff algorithm to use. Values:
|
||||
-- • "myers" the default algorithm
|
||||
-- • "minimal" spend extra time to generate the
|
||||
-- smallest possible diff
|
||||
-- • "patience" patience diff algorithm
|
||||
-- • "histogram" histogram diff algorithm
|
||||
-- • `ctxlen` (integer): Context length
|
||||
-- • `interhunkctxlen` (integer):
|
||||
-- Inter hunk context length
|
||||
-- • `ignore_whitespace` (boolean):
|
||||
-- Ignore whitespace
|
||||
-- • `ignore_whitespace_change` (boolean):
|
||||
-- Ignore whitespace change
|
||||
-- • `ignore_whitespace_change_at_eol` (boolean)
|
||||
-- Ignore whitespace change at end-of-line.
|
||||
-- • `ignore_cr_at_eol` (boolean)
|
||||
-- Ignore carriage return at end-of-line
|
||||
-- • `ignore_blank_lines` (boolean)
|
||||
-- Ignore blank lines
|
||||
-- • `indent_heuristic` (boolean):
|
||||
-- Use the indent heuristic for the internal
|
||||
-- diff library.
|
||||
--
|
||||
-- Return: ~
|
||||
-- See {opts.result_type}. nil if {opts.on_hunk} is given.
|
||||
--- @param opts table<string, any>
|
||||
function vim.diff(a, b, opts) end
|
||||
|
||||
-- The result is a String, which is the text {str} converted from
|
||||
-- encoding {from} to encoding {to}. When the conversion fails `nil` is
|
||||
-- returned. When some characters could not be converted they
|
||||
-- are replaced with "?".
|
||||
-- The encoding names are whatever the iconv() library function
|
||||
-- can accept, see ":Man 3 iconv".
|
||||
--
|
||||
-- Parameters: ~
|
||||
-- • {str} (string) Text to convert
|
||||
-- • {from} (string) Encoding of {str}
|
||||
-- • {to} (string) Target encoding
|
||||
--
|
||||
-- Returns: ~
|
||||
-- Converted string if conversion succeeds, `nil` otherwise.
|
||||
--- @param str string
|
||||
--- @param from number
|
||||
--- @param to number
|
||||
--- @param opts? table<string, any>
|
||||
function vim.iconv(str, from, to, opts) end
|
||||
|
||||
-- Returns true if the code is executing as part of a "fast" event handler,
|
||||
-- where most of the API is disabled. These are low-level events (e.g.
|
||||
-- |lua-loop-callbacks|) which can be invoked whenever Nvim polls for input.
|
||||
-- When this is `false` most API functions are callable (but may be subject
|
||||
-- to other restrictions such as |textlock|).
|
||||
function vim.in_fast_event() end
|
||||
|
||||
-- Decodes (or "unpacks") the JSON-encoded {str} to a Lua object.
|
||||
--
|
||||
-- {opts} is a table with the key `luanil = { object: bool, array: bool }`
|
||||
-- that controls whether `null` in JSON objects or arrays should be converted
|
||||
-- to Lua `nil` instead of `vim.NIL`.
|
||||
--- @param str string
|
||||
--- @param opts? table<string, any>
|
||||
function vim.json.decode(str, opts) end
|
||||
|
||||
-- Encodes (or "packs") Lua object {obj} as JSON in a Lua string.
|
||||
function vim.json.encode(obj) end
|
||||
|
||||
-- Decodes (or "unpacks") the msgpack-encoded {str} to a Lua object.
|
||||
--- @param str string
|
||||
function vim.mpack.decode(str) end
|
||||
|
||||
-- Encodes (or "packs") Lua object {obj} as msgpack in a Lua string.
|
||||
function vim.mpack.encode(obj) end
|
||||
|
||||
-- Parse the Vim regex {re} and return a regex object. Regexes are "magic"
|
||||
-- and case-sensitive by default, regardless of 'magic' and 'ignorecase'.
|
||||
-- They can be controlled with flags, see |/magic| and |/ignorecase|.
|
||||
function vim.regex(re) end
|
||||
|
||||
-- Sends {event} to {channel} via |RPC| and returns immediately. If {channel}
|
||||
-- is 0, the event is broadcast to all channels.
|
||||
--
|
||||
-- This function also works in a fast callback |lua-loop-callbacks|.
|
||||
--- @param args? any[]
|
||||
--- @param ...? any
|
||||
function vim.rpcnotify(channel, method, args, ...) end
|
||||
|
||||
-- Sends a request to {channel} to invoke {method} via |RPC| and blocks until
|
||||
-- a response is received.
|
||||
--
|
||||
-- Note: NIL values as part of the return value is represented as |vim.NIL|
|
||||
-- special value
|
||||
--- @param args? any[]
|
||||
--- @param ...? any
|
||||
function vim.rpcrequest(channel, method, args, ...) end
|
||||
|
||||
-- Schedules {callback} to be invoked soon by the main event-loop. Useful
|
||||
-- to avoid |textlock| or other temporary restrictions.
|
||||
--- @param callback fun()
|
||||
function vim.schedule(callback) end
|
||||
|
||||
-- Check {str} for spelling errors. Similar to the Vimscript function
|
||||
-- |spellbadword()|.
|
||||
--
|
||||
-- Note: The behaviour of this function is dependent on: 'spelllang',
|
||||
-- 'spellfile', 'spellcapcheck' and 'spelloptions' which can all be local to
|
||||
-- the buffer. Consider calling this with |nvim_buf_call()|.
|
||||
--
|
||||
-- Example:
|
||||
-- ```lua
|
||||
-- vim.spell.check("the quik brown fox")
|
||||
-- -- =>
|
||||
-- -- {
|
||||
-- -- {'quik', 'bad', 5}
|
||||
-- -- }
|
||||
-- ```
|
||||
-- Parameters: ~
|
||||
-- • {str} String to spell check.
|
||||
--
|
||||
-- Return: ~
|
||||
-- List of tuples with three items:
|
||||
-- - The badly spelled word.
|
||||
-- - The type of the spelling error:
|
||||
-- "bad" spelling mistake
|
||||
-- "rare" rare word
|
||||
-- "local" word only valid in another region
|
||||
-- "caps" word should start with Capital
|
||||
-- - The position in {str} where the word begins.
|
||||
--- @param str string
|
||||
function vim.spell.check(str) end
|
||||
|
||||
-- Convert UTF-32 or UTF-16 {index} to byte index. If {use_utf16} is not
|
||||
-- supplied, it defaults to false (use UTF-32). Returns the byte index.
|
||||
--
|
||||
-- Invalid UTF-8 and NUL is treated like by |vim.str_byteindex()|.
|
||||
-- An {index} in the middle of a UTF-16 sequence is rounded upwards to
|
||||
-- the end of that sequence.
|
||||
--- @param str string
|
||||
--- @param index number
|
||||
--- @param use_utf16? any
|
||||
function vim.str_byteindex(str, index, use_utf16) end
|
||||
|
||||
-- Convert byte index to UTF-32 and UTF-16 indices. If {index} is not
|
||||
-- supplied, the length of the string is used. All indices are zero-based.
|
||||
-- Returns two values: the UTF-32 and UTF-16 indices respectively.
|
||||
--
|
||||
-- Embedded NUL bytes are treated as terminating the string. Invalid UTF-8
|
||||
-- bytes, and embedded surrogates are counted as one code point each. An
|
||||
-- {index} in the middle of a UTF-8 sequence is rounded upwards to the end of
|
||||
-- that sequence.
|
||||
--- @param str string
|
||||
--- @param index? number
|
||||
function vim.str_utfindex(str, index) end
|
||||
|
||||
-- Compares strings case-insensitively. Returns 0, 1 or -1 if strings are
|
||||
-- equal, {a} is greater than {b} or {a} is lesser than {b}, respectively.
|
||||
function vim.stricmp(a, b) end
|
||||
|
||||
-- Attach to ui events, similar to |nvim_ui_attach()| but receive events
|
||||
-- as lua callback. Can be used to implement screen elements like
|
||||
-- popupmenu or message handling in lua.
|
||||
--
|
||||
-- {options} should be a dictionary-like table, where `ext_...` options should
|
||||
-- be set to true to receive events for the respective external element.
|
||||
--
|
||||
-- {callback} receives event name plus additional parameters. See |ui-popupmenu|
|
||||
-- and the sections below for event format for respective events.
|
||||
--
|
||||
-- WARNING: This api is considered experimental. Usability will vary for
|
||||
-- different screen elements. In particular `ext_messages` behavior is subject
|
||||
-- to further changes and usability improvements. This is expected to be
|
||||
-- used to handle messages when setting 'cmdheight' to zero (which is
|
||||
-- likewise experimental).
|
||||
--
|
||||
-- Example (stub for a |ui-popupmenu| implementation):
|
||||
-- ```lua
|
||||
--
|
||||
-- ns = vim.api.nvim_create_namespace('my_fancy_pum')
|
||||
--
|
||||
-- vim.ui_attach(ns, {ext_popupmenu=true}, function(event, ...)
|
||||
-- if event == "popupmenu_show" then
|
||||
-- local items, selected, row, col, grid = ...
|
||||
-- print("display pum ", #items)
|
||||
-- elseif event == "popupmenu_select" then
|
||||
-- local selected = ...
|
||||
-- print("selected", selected)
|
||||
-- elseif event == "popupmenu_hide" then
|
||||
-- print("FIN")
|
||||
-- end
|
||||
-- end)
|
||||
-- ```
|
||||
--- @param ns number
|
||||
--- @param options table<string, any>
|
||||
--- @param callback fun()
|
||||
function vim.ui_attach(ns, options, callback) end
|
||||
|
||||
-- Detach a callback previously attached with |vim.ui_attach()| for the
|
||||
-- given namespace {ns}.
|
||||
--- @param ns number
|
||||
function vim.ui_detach(ns) end
|
||||
|
||||
-- Wait for {time} in milliseconds until {callback} returns `true`.
|
||||
--
|
||||
-- Executes {callback} immediately and at approximately {interval}
|
||||
-- milliseconds (default 200). Nvim still processes other events during
|
||||
-- this time.
|
||||
--
|
||||
-- Parameters: ~
|
||||
-- • {time} Number of milliseconds to wait
|
||||
-- • {callback} Optional callback. Waits until {callback} returns true
|
||||
-- • {interval} (Approximate) number of milliseconds to wait between polls
|
||||
-- • {fast_only} If true, only |api-fast| events will be processed.
|
||||
-- If called from while in an |api-fast| event, will
|
||||
-- automatically be set to `true`.
|
||||
--
|
||||
-- Returns: ~
|
||||
-- If {callback} returns `true` during the {time}:
|
||||
-- `true, nil`
|
||||
--
|
||||
-- If {callback} never returns `true` during the {time}:
|
||||
-- `false, -1`
|
||||
--
|
||||
-- If {callback} is interrupted during the {time}:
|
||||
-- `false, -2`
|
||||
--
|
||||
-- If {callback} errors, the error is raised.
|
||||
--
|
||||
-- Examples:
|
||||
-- ```lua
|
||||
--
|
||||
-- ---
|
||||
-- -- Wait for 100 ms, allowing other events to process
|
||||
-- vim.wait(100, function() end)
|
||||
--
|
||||
-- ---
|
||||
-- -- Wait for 100 ms or until global variable set.
|
||||
-- vim.wait(100, function() return vim.g.waiting_for_var end)
|
||||
--
|
||||
-- ---
|
||||
-- -- Wait for 1 second or until global variable set, checking every ~500 ms
|
||||
-- vim.wait(1000, function() return vim.g.waiting_for_var end, 500)
|
||||
--
|
||||
-- ---
|
||||
-- -- Schedule a function to set a value in 100ms
|
||||
-- vim.defer_fn(function() vim.g.timer_result = true end, 100)
|
||||
--
|
||||
-- -- Would wait ten seconds if results blocked. Actually only waits 100 ms
|
||||
-- if vim.wait(10000, function() return vim.g.timer_result end) then
|
||||
-- print('Only waiting a little bit of time!')
|
||||
-- end
|
||||
-- ```
|
||||
--- @param time number
|
||||
--- @param condition? fun(): boolean
|
||||
--- @param interval? number
|
||||
--- @param fast_only? boolean
|
||||
--- @return boolean, nil|number
|
||||
function vim.wait(time, condition, interval, fast_only) end
|
||||
|
4353
bundle/neodev.nvim/types/nightly/options.1.lua
vendored
Normal file
4353
bundle/neodev.nvim/types/nightly/options.1.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4642
bundle/neodev.nvim/types/nightly/options.2.lua
vendored
Normal file
4642
bundle/neodev.nvim/types/nightly/options.2.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2650
bundle/neodev.nvim/types/nightly/options.3.lua
vendored
Normal file
2650
bundle/neodev.nvim/types/nightly/options.3.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4307
bundle/neodev.nvim/types/nightly/options.lua
vendored
Normal file
4307
bundle/neodev.nvim/types/nightly/options.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3982
bundle/neodev.nvim/types/nightly/uv.lua
vendored
Normal file
3982
bundle/neodev.nvim/types/nightly/uv.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5150
bundle/neodev.nvim/types/nightly/vim.fn.1.lua
vendored
Normal file
5150
bundle/neodev.nvim/types/nightly/vim.fn.1.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
5917
bundle/neodev.nvim/types/nightly/vim.fn.lua
vendored
Normal file
5917
bundle/neodev.nvim/types/nightly/vim.fn.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
40
bundle/neodev.nvim/types/nightly/vim.lua
vendored
Normal file
40
bundle/neodev.nvim/types/nightly/vim.lua
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
---@meta
|
||||
|
||||
vim = {}
|
||||
|
||||
---@type uv
|
||||
vim.loop = {}
|
||||
|
||||
vim.F = require("vim.F")
|
||||
vim.diagnostic = require("vim.diagnostic")
|
||||
vim.filetype = require("vim.filetype")
|
||||
vim.fs = require("vim.fs")
|
||||
vim.health = require("vim.health")
|
||||
vim.highlight = require("vim.highlight")
|
||||
vim.inspect = require("vim.inspect").inspect
|
||||
vim.iter = require("vim.iter")
|
||||
vim.keymap = require("vim.keymap")
|
||||
vim.lsp = require("vim.lsp")
|
||||
vim.secure = require("vim.secure")
|
||||
vim.treesitter = require("vim.treesitter")
|
||||
vim.treesitter.highlighter = require("vim.treesitter.highlighter")
|
||||
vim.treesitter.language = require("vim.treesitter.language")
|
||||
vim.treesitter.query = require("vim.treesitter.query")
|
||||
vim.ui = require("vim.ui")
|
||||
vim.uri_from_bufnr = require("vim.uri").uri_from_bufnr
|
||||
vim.uri_from_fname = require("vim.uri").uri_from_fname
|
||||
vim.uri_to_bufnr = require("vim.uri").uri_to_bufnr
|
||||
vim.uri_to_fname = require("vim.uri").uri_to_fname
|
||||
vim.version = require("vim.version")
|
||||
vim.lpeg = require("lpeg")
|
||||
|
||||
---@type table<string,any>
|
||||
vim.g = {}
|
||||
---@type table<string,any>
|
||||
vim.v = {}
|
||||
---@type table<number,table<string, any>>
|
||||
vim.b = {}
|
||||
---@type table<number,table<string, any>>
|
||||
vim.w = {}
|
||||
---@type table<number,table<string, any>>
|
||||
vim.t = {}
|
2
bundle/neodev.nvim/types/override/api.lua
vendored
Normal file
2
bundle/neodev.nvim/types/override/api.lua
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
---@class vim.api
|
||||
vim.api = {}
|
13
bundle/neodev.nvim/types/override/lua.lua
vendored
Normal file
13
bundle/neodev.nvim/types/override/lua.lua
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
return {
|
||||
["vim.wait"] = {
|
||||
params = {
|
||||
{ name = "time", type = "number" },
|
||||
{ name = "condition", type = "fun(): boolean", optional = true },
|
||||
{ name = "interval", type = "number", optional = true },
|
||||
{ name = "fast_only", type = "boolean", optional = true },
|
||||
},
|
||||
["return"] = {
|
||||
{ type = "boolean, nil|number" },
|
||||
},
|
||||
},
|
||||
}
|
27
bundle/neodev.nvim/types/override/options.lua
vendored
Normal file
27
bundle/neodev.nvim/types/override/options.lua
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
---@type table<number, vim.go>
|
||||
vim.go = {}
|
||||
|
||||
---@type table<number, vim.bo>
|
||||
vim.bo = {}
|
||||
|
||||
---@type table<number, vim.wo>
|
||||
vim.wo = {}
|
||||
|
||||
---@type vim.go | vim.wo | vim.bo
|
||||
vim.o = {}
|
||||
|
||||
---@class vim.opt
|
||||
vim.opt = {}
|
||||
|
||||
---@type vim.opt
|
||||
vim.opt_global = {}
|
||||
|
||||
---@type vim.opt
|
||||
vim.opt_local = {}
|
||||
|
||||
---@class vim.Option
|
||||
local Option = {}
|
||||
|
||||
function Option:append(right) end
|
||||
function Option:prepend(right) end
|
||||
function Option:remove(right) end
|
73
bundle/neodev.nvim/types/override/vim.fn.lua
vendored
Normal file
73
bundle/neodev.nvim/types/override/vim.fn.lua
vendored
Normal file
@ -0,0 +1,73 @@
|
||||
return {
|
||||
["vim.fn.getline"] = {
|
||||
params = {
|
||||
{ name = "lnum", type = "number|string" },
|
||||
},
|
||||
overload = {
|
||||
"fun(lnum:number|string, end:number|string):string[]|nil[]",
|
||||
},
|
||||
["return"] = {
|
||||
{ type = "string" },
|
||||
},
|
||||
},
|
||||
["vim.fn.expand"] = {
|
||||
params = {
|
||||
{ name = "string", type = "string" },
|
||||
{ name = "nosuf", type = "boolean", optional = true },
|
||||
},
|
||||
overload = {
|
||||
"fun(string:string, nosuf?:boolean, list:true):string[]",
|
||||
},
|
||||
["return"] = {
|
||||
{ type = "string" },
|
||||
},
|
||||
},
|
||||
["vim.fn.glob"] = {
|
||||
params = {
|
||||
{ name = "expr", type = "string" },
|
||||
{ name = "nosuf", type = "boolean", optional = true },
|
||||
},
|
||||
overload = {
|
||||
"fun(expr:string, nosuf?:boolean, list:true):string[]",
|
||||
"fun(expr:string, nosuf?:boolean, list:true, alllinks:true):string[]",
|
||||
},
|
||||
["return"] = {
|
||||
{ type = "string" },
|
||||
},
|
||||
},
|
||||
["vim.fn.sign_define"] = {
|
||||
overload = {
|
||||
"fun(name:string, dict?:table)",
|
||||
},
|
||||
},
|
||||
["vim.fn.input"] = {
|
||||
params = {
|
||||
{ name = "opts", type = "string|table<string, any>" },
|
||||
},
|
||||
["return"] = {
|
||||
{ type = "string" },
|
||||
},
|
||||
},
|
||||
["vim.fn.searchpair"] = {
|
||||
params = {
|
||||
{ name = "start", type = "string" },
|
||||
{ name = "middle", type = "string", optional = true },
|
||||
{ name = "end", type = "string" },
|
||||
{ name = "flags", type = "string", optional = true },
|
||||
{ name = "skip", type = "string", optional = true },
|
||||
{ name = "stopline", type = "number", optional = true },
|
||||
{ name = "timeout", type = "number", optional = true },
|
||||
},
|
||||
},
|
||||
["vim.fn.searchpairpos"] = {
|
||||
params = {
|
||||
{ name = "start", type = "string" },
|
||||
{ name = "middle", type = "string", optional = true },
|
||||
{ name = "end", type = "string" },
|
||||
{ name = "flags", type = "string", optional = true },
|
||||
{ name = "skip", type = "string", optional = true },
|
||||
{ name = "stopline", type = "number", optional = true },
|
||||
{ name = "timeout", type = "number", optional = true },
|
||||
},
|
||||
},
|
||||
}
|
11
bundle/neodev.nvim/types/stable/alias.lua
vendored
Normal file
11
bundle/neodev.nvim/types/stable/alias.lua
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
---@meta
|
||||
|
||||
---@alias blob number
|
||||
---@alias buffer integer
|
||||
---@alias channel integer
|
||||
---@alias float number
|
||||
---@alias job number
|
||||
---@alias object any
|
||||
---@alias sends number
|
||||
---@alias tabpage integer
|
||||
---@alias window integer
|
3060
bundle/neodev.nvim/types/stable/api.lua
vendored
Normal file
3060
bundle/neodev.nvim/types/stable/api.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3086
bundle/neodev.nvim/types/stable/cmd.lua
vendored
Normal file
3086
bundle/neodev.nvim/types/stable/cmd.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
637
bundle/neodev.nvim/types/stable/lpeg.lua
vendored
Normal file
637
bundle/neodev.nvim/types/stable/lpeg.lua
vendored
Normal file
@ -0,0 +1,637 @@
|
||||
---@meta
|
||||
|
||||
---
|
||||
---@meta
|
||||
---The definitions are developed in this repository: https://github.com/LuaCATS/lpeg
|
||||
|
||||
---
|
||||
---This type definition is based on the [HTML documentation](http://www.inf.puc-rio.br/~roberto/lpeg/) of the LPeg library. A different HTML documentation can be found at http://stevedonovan.github.io/lua-stdlibs/modules/lpeg.html.
|
||||
---
|
||||
---*LPeg* is a new pattern-matching library for Lua,
|
||||
---based on
|
||||
---[Parsing Expression Grammars](https://bford.info/packrat/) (PEGs).
|
||||
---This text is a reference manual for the library.
|
||||
---For a more formal treatment of LPeg,
|
||||
---as well as some discussion about its implementation,
|
||||
---see
|
||||
---[A Text Pattern-Matching Tool based on Parsing Expression Grammars](http://www.inf.puc-rio.br/~roberto/docs/peg.pdf).
|
||||
---(You may also be interested in my
|
||||
---[talk about LPeg](https://vimeo.com/1485123)
|
||||
---given at the III Lua Workshop.)
|
||||
---
|
||||
---Following the Snobol tradition,
|
||||
---LPeg defines patterns as first-class objects.
|
||||
---That is, patterns are regular Lua values
|
||||
---(represented by userdata).
|
||||
---The library offers several functions to create
|
||||
---and compose patterns.
|
||||
---With the use of metamethods,
|
||||
---several of these functions are provided as infix or prefix
|
||||
---operators.
|
||||
---On the one hand,
|
||||
---the result is usually much more verbose than the typical
|
||||
---encoding of patterns using the so called
|
||||
---*regular expressions*
|
||||
---(which typically are not regular expressions in the formal sense).
|
||||
---On the other hand,
|
||||
---first-class patterns allow much better documentation
|
||||
---(as it is easy to comment the code,
|
||||
---to break complex definitions in smaller parts, etc.)
|
||||
---and are extensible,
|
||||
---as we can define new functions to create and compose patterns.
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
local lpeg = {}
|
||||
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
---@class Pattern
|
||||
---@operator add(Pattern): Pattern
|
||||
---@operator mul(Pattern): Pattern
|
||||
---@operator mul(Capture): Pattern
|
||||
---@operator div(string): Capture
|
||||
---@operator div(number): Capture
|
||||
---@operator div(table): Capture
|
||||
---@operator div(function): Capture
|
||||
---@operator pow(number): Pattern
|
||||
local Pattern = {}
|
||||
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
---@alias Capture Pattern
|
||||
---@operator add(Capture): Pattern
|
||||
---@operator mul(Capture): Pattern
|
||||
---@operator mul(Pattern): Pattern
|
||||
---@operator div(string): Capture
|
||||
---@operator div(number): Capture
|
||||
---@operator div(table): Capture
|
||||
---@operator div(function): Capture
|
||||
---@operator pow(number): Pattern
|
||||
|
||||
---
|
||||
---Match the given `pattern` against the `subject` string.
|
||||
---
|
||||
---If the match succeeds,
|
||||
---returns the index in the subject of the first character after the match,
|
||||
---or the captured values
|
||||
---(if the pattern captured any value).
|
||||
---
|
||||
---An optional numeric argument `init` makes the match
|
||||
---start at that position in the subject string.
|
||||
---As usual in Lua libraries,
|
||||
---a negative value counts from the end.
|
||||
---
|
||||
---Unlike typical pattern-matching functions,
|
||||
---`match` works only in anchored mode;
|
||||
---that is, it tries to match the pattern with a prefix of
|
||||
---the given subject string (at position `init`),
|
||||
---not with an arbitrary substring of the subject.
|
||||
---So, if we want to find a pattern anywhere in a string,
|
||||
---we must either write a loop in Lua or write a pattern that
|
||||
---matches anywhere.
|
||||
---This second approach is easy and quite efficient;
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local pattern = lpeg.R("az") ^ 1 * -1
|
||||
---assert(pattern:match("hello") == 6)
|
||||
---assert(lpeg.match(pattern, "hello") == 6)
|
||||
---assert(pattern:match("1 hello") == nil)
|
||||
---```
|
||||
---
|
||||
---@param pattern Pattern
|
||||
---@param subject string
|
||||
---@param init? integer
|
||||
---
|
||||
---@return integer|Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.match(pattern, subject, init) end
|
||||
|
||||
---
|
||||
---Match the given `pattern` against the `subject` string.
|
||||
---
|
||||
---If the match succeeds,
|
||||
---returns the index in the subject of the first character after the match,
|
||||
---or the captured values
|
||||
---(if the pattern captured any value).
|
||||
---
|
||||
---An optional numeric argument `init` makes the match
|
||||
---start at that position in the subject string.
|
||||
---As usual in Lua libraries,
|
||||
---a negative value counts from the end.
|
||||
---
|
||||
---Unlike typical pattern-matching functions,
|
||||
---`match` works only in anchored mode;
|
||||
---that is, it tries to match the pattern with a prefix of
|
||||
---the given subject string (at position `init`),
|
||||
---not with an arbitrary substring of the subject.
|
||||
---So, if we want to find a pattern anywhere in a string,
|
||||
---we must either write a loop in Lua or write a pattern that
|
||||
---matches anywhere.
|
||||
---This second approach is easy and quite efficient;
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local pattern = lpeg.R("az") ^ 1 * -1
|
||||
---assert(pattern:match("hello") == 6)
|
||||
---assert(lpeg.match(pattern, "hello") == 6)
|
||||
---assert(pattern:match("1 hello") == nil)
|
||||
---```
|
||||
---
|
||||
---@param subject string
|
||||
---@param init? integer
|
||||
---
|
||||
---@return integer|Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function Pattern:match(subject, init) end
|
||||
|
||||
---
|
||||
---Return the string `"pattern"` if the given value is a pattern, otherwise `nil`.
|
||||
---
|
||||
---@return 'pattern'|nil
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.type(value) end
|
||||
|
||||
---
|
||||
---Return a string with the running version of LPeg.
|
||||
---
|
||||
---@return string
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.version() end
|
||||
|
||||
---
|
||||
---Set a limit for the size of the backtrack stack used by LPeg to
|
||||
---track calls and choices.
|
||||
---
|
||||
---The default limit is `400`.
|
||||
---Most well-written patterns need little backtrack levels and
|
||||
---therefore you seldom need to change this limit;
|
||||
---before changing it you should try to rewrite your
|
||||
---pattern to avoid the need for extra space.
|
||||
---Nevertheless, a few useful patterns may overflow.
|
||||
---Also, with recursive grammars,
|
||||
---subjects with deep recursion may also need larger limits.
|
||||
---
|
||||
---@param max integer
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.setmaxstack(max) end
|
||||
|
||||
---
|
||||
---Convert the given value into a proper pattern.
|
||||
---
|
||||
---This following rules are applied:
|
||||
---
|
||||
---* If the argument is a pattern,
|
||||
---it is returned unmodified.
|
||||
---
|
||||
---* If the argument is a string,
|
||||
---it is translated to a pattern that matches the string literally.
|
||||
---
|
||||
---* If the argument is a non-negative number `n`,
|
||||
---the result is a pattern that matches exactly `n` characters.
|
||||
---
|
||||
---* If the argument is a negative number `-n`,
|
||||
---the result is a pattern that
|
||||
---succeeds only if the input string has less than `n` characters left:
|
||||
---`lpeg.P(-n)`
|
||||
---is equivalent to `-lpeg.P(n)`
|
||||
---(see the unary minus operation).
|
||||
---
|
||||
---* If the argument is a boolean,
|
||||
---the result is a pattern that always succeeds or always fails
|
||||
---(according to the boolean value),
|
||||
---without consuming any input.
|
||||
---
|
||||
---* If the argument is a table,
|
||||
---it is interpreted as a grammar
|
||||
---(see Grammars).
|
||||
---
|
||||
---* If the argument is a function,
|
||||
---returns a pattern equivalent to a
|
||||
---match-time captureover the empty string.
|
||||
---
|
||||
---@param value Pattern|string|integer|boolean|table|function
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.P(value) end
|
||||
|
||||
---
|
||||
---Return a pattern that
|
||||
---matches only if the input string at the current position
|
||||
---is preceded by `patt`.
|
||||
---
|
||||
---Pattern `patt` must match only strings
|
||||
---with some fixed length,
|
||||
---and it cannot contain captures.
|
||||
---
|
||||
---Like the and predicate,
|
||||
---this pattern never consumes any input,
|
||||
---independently of success or failure.
|
||||
---
|
||||
---@param pattern Pattern
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.B(pattern) end
|
||||
|
||||
---
|
||||
---Return a pattern that matches any single character
|
||||
---belonging to one of the given ranges.
|
||||
---
|
||||
---Each `range` is a string `xy` of length 2,
|
||||
---representing all characters with code
|
||||
---between the codes of `x` and `y`
|
||||
---(both inclusive).
|
||||
---
|
||||
---As an example, the pattern
|
||||
---`lpeg.R("09")` matches any digit,
|
||||
---and `lpeg.R("az", "AZ")` matches any ASCII letter.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local pattern = lpeg.R("az") ^ 1 * -1
|
||||
---assert(pattern:match("hello") == 6)
|
||||
---```
|
||||
---
|
||||
---@param ... string
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.R(...) end
|
||||
|
||||
---
|
||||
---Return a pattern that matches any single character that
|
||||
---appears in the given string.
|
||||
---(The `S` stands for Set.)
|
||||
---
|
||||
---As an example, the pattern
|
||||
---`lpeg.S("+-*/")` matches any arithmetic operator.
|
||||
---
|
||||
---Note that, if `s` is a character
|
||||
---(that is, a string of length 1),
|
||||
---then `lpeg.P(s)` is equivalent to `lpeg.S(s)`
|
||||
---which is equivalent to `lpeg.R(s..s)`.
|
||||
---Note also that both `lpeg.S("")` and `lpeg.R()`
|
||||
---are patterns that always fail.
|
||||
---
|
||||
---@param string string
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.S(string) end
|
||||
|
||||
---
|
||||
---Create a non-terminal (a variable) for a grammar.
|
||||
---
|
||||
---This operation creates a non-terminal (a variable)
|
||||
---for a grammar.
|
||||
---The created non-terminal refers to the rule indexed by `v`
|
||||
---in the enclosing grammar.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local b = lpeg.P({"(" * ((1 - lpeg.S "()") + lpeg.V(1)) ^ 0 * ")"})
|
||||
---assert(b:match('((string))') == 11)
|
||||
---assert(b:match('(') == nil)
|
||||
---```
|
||||
---
|
||||
---@param v string|integer
|
||||
---
|
||||
---@return Pattern
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.V(v) end
|
||||
|
||||
---
|
||||
---@class Locale
|
||||
---@field alnum userdata
|
||||
---@field alpha userdata
|
||||
---@field cntrl userdata
|
||||
---@field digit userdata
|
||||
---@field graph userdata
|
||||
---@field lower userdata
|
||||
---@field print userdata
|
||||
---@field punct userdata
|
||||
---@field space userdata
|
||||
---@field upper userdata
|
||||
---@field xdigit userdata
|
||||
|
||||
---
|
||||
---Return a table with patterns for matching some character classes
|
||||
---according to the current locale.
|
||||
---
|
||||
---The table has fields named
|
||||
---`alnum`,
|
||||
---`alpha`,
|
||||
---`cntrl`,
|
||||
---`digit`,
|
||||
---`graph`,
|
||||
---`lower`,
|
||||
---`print`,
|
||||
---`punct`,
|
||||
---`space`,
|
||||
---`upper`, and
|
||||
---`xdigit`,
|
||||
---each one containing a correspondent pattern.
|
||||
---Each pattern matches any single character that belongs to its class.
|
||||
--
|
||||
---If called with an argument `table`,
|
||||
---then it creates those fields inside the given table and
|
||||
---returns that table.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---lpeg.locale(lpeg)
|
||||
---local space = lpeg.space^0
|
||||
---local name = lpeg.C(lpeg.alpha^1) * space
|
||||
---local sep = lpeg.S(",;") * space
|
||||
---local pair = lpeg.Cg(name * "=" * space * name) * sep^-1
|
||||
---local list = lpeg.Cf(lpeg.Ct("") * pair^0, rawset)
|
||||
---local t = list:match("a=b, c = hi; next = pi")
|
||||
---assert(t.a == 'b')
|
||||
---assert(t.c == 'hi')
|
||||
---assert(t.next == 'pi')
|
||||
---
|
||||
---local locale = lpeg.locale()
|
||||
---assert(type(locale.digit) == 'userdata')
|
||||
---```
|
||||
---
|
||||
---@param tab? table
|
||||
---
|
||||
---@return Locale
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.locale(tab) end
|
||||
|
||||
---
|
||||
---Create a simple capture.
|
||||
---
|
||||
---Creates a simple capture,
|
||||
---which captures the substring of the subject that matches `patt`.
|
||||
---The captured value is a string.
|
||||
---If `patt` has other captures,
|
||||
---their values are returned after this one.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local function split (s, sep)
|
||||
--- sep = lpeg.P(sep)
|
||||
--- local elem = lpeg.C((1 - sep)^0)
|
||||
--- local p = elem * (sep * elem)^0
|
||||
--- return lpeg.match(p, s)
|
||||
---end
|
||||
---
|
||||
---local a, b, c = split('a,b,c', ',')
|
||||
---assert(a == 'a')
|
||||
---assert(b == 'b')
|
||||
---assert(c == 'c')
|
||||
---```
|
||||
---
|
||||
---@param patt Pattern
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.C(patt) end
|
||||
|
||||
---
|
||||
---Create an argument capture.
|
||||
---
|
||||
---This pattern matches the empty string and
|
||||
---produces the value given as the nth extra
|
||||
---argument given in the call to `lpeg.match`.
|
||||
---
|
||||
---@param n integer
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Carg(n) end
|
||||
|
||||
---
|
||||
---Create a back capture.
|
||||
---
|
||||
---This pattern matches the empty string and
|
||||
---produces the values produced by the most recent
|
||||
---group capture named `name`
|
||||
---(where `name` can be any Lua value).
|
||||
---
|
||||
---Most recent means the last
|
||||
---complete
|
||||
---outermost
|
||||
---group capture with the given name.
|
||||
---A Complete capture means that the entire pattern
|
||||
---corresponding to the capture has matched.
|
||||
---An Outermost capture means that the capture is not inside
|
||||
---another complete capture.
|
||||
---
|
||||
---In the same way that LPeg does not specify when it evaluates captures,
|
||||
---it does not specify whether it reuses
|
||||
---values previously produced by the group
|
||||
---or re-evaluates them.
|
||||
---
|
||||
---@param name any
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cb(name) end
|
||||
|
||||
---
|
||||
---Create a constant capture.
|
||||
---
|
||||
---This pattern matches the empty string and
|
||||
---produces all given values as its captured values.
|
||||
---
|
||||
---@param ... any
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cc(...) end
|
||||
|
||||
---
|
||||
---Create a fold capture.
|
||||
---
|
||||
---If `patt` produces a list of captures
|
||||
---C1 C2 ... Cn,
|
||||
---this capture will produce the value
|
||||
---`func(...func(func(C1, C2), C3)...,Cn)`,
|
||||
---that is, it will fold
|
||||
---(or accumulate, or reduce)
|
||||
---the captures from `patt` using function `func`.
|
||||
---
|
||||
---This capture assumes that `patt` should produce
|
||||
---at least one capture with at least one value (of any type),
|
||||
---which becomes the initial value of an accumulator.
|
||||
---(If you need a specific initial value,
|
||||
---you may prefix a constant captureto `patt`.)
|
||||
---For each subsequent capture,
|
||||
---LPeg calls `func`
|
||||
---with this accumulator as the first argument and all values produced
|
||||
---by the capture as extra arguments;
|
||||
---the first result from this call
|
||||
---becomes the new value for the accumulator.
|
||||
---The final value of the accumulator becomes the captured value.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local number = lpeg.R("09") ^ 1 / tonumber
|
||||
---local list = number * ("," * number) ^ 0
|
||||
---local function add(acc, newvalue) return acc + newvalue end
|
||||
---local sum = lpeg.Cf(list, add)
|
||||
---assert(sum:match("10,30,43") == 83)
|
||||
---```
|
||||
---
|
||||
---@param patt Pattern
|
||||
---@param func fun(acc, newvalue)
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cf(patt, func) end
|
||||
|
||||
---
|
||||
---Create a group capture.
|
||||
---
|
||||
---It groups all values returned by `patt`
|
||||
---into a single capture.
|
||||
---The group may be anonymous (if no name is given)
|
||||
---or named with the given name
|
||||
---(which can be any non-nil Lua value).
|
||||
---
|
||||
---@param patt Pattern
|
||||
---@param name? string
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cg(patt, name) end
|
||||
|
||||
---
|
||||
---Create a position capture.
|
||||
---
|
||||
---It matches the empty string and
|
||||
---captures the position in the subject where the match occurs.
|
||||
---The captured value is a number.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local I = lpeg.Cp()
|
||||
---local function anywhere(p) return lpeg.P({I * p * I + 1 * lpeg.V(1)}) end
|
||||
|
||||
---local match_start, match_end = anywhere("world"):match("hello world!")
|
||||
---assert(match_start == 7)
|
||||
---assert(match_end == 12)
|
||||
---```
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cp() end
|
||||
|
||||
---
|
||||
---Create a substitution capture.
|
||||
---
|
||||
---This function creates a substitution capture,
|
||||
---which captures the substring of the subject that matches `patt`,
|
||||
---with substitutions.
|
||||
---For any capture inside `patt` with a value,
|
||||
---the substring that matched the capture is replaced by the capture value
|
||||
---(which should be a string).
|
||||
---The final captured value is the string resulting from
|
||||
---all replacements.
|
||||
---
|
||||
---__Example:__
|
||||
---
|
||||
---```lua
|
||||
---local function gsub (s, patt, repl)
|
||||
--- patt = lpeg.P(patt)
|
||||
--- patt = lpeg.Cs((patt / repl + 1)^0)
|
||||
--- return lpeg.match(patt, s)
|
||||
---end
|
||||
---assert(gsub('Hello, xxx!', 'xxx', 'World') == 'Hello, World!')
|
||||
---```
|
||||
---
|
||||
---@param patt Pattern
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cs(patt) end
|
||||
|
||||
---
|
||||
---Create a table capture.
|
||||
---
|
||||
---This capture returns a table with all values from all anonymous captures
|
||||
---made by `patt` inside this table in successive integer keys,
|
||||
---starting at 1.
|
||||
---Moreover,
|
||||
---for each named capture group created by `patt`,
|
||||
---the first value of the group is put into the table
|
||||
---with the group name as its key.
|
||||
---The captured value is only the table.
|
||||
---
|
||||
---@param patt Pattern|''
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Ct(patt) end
|
||||
|
||||
---
|
||||
---Create a match-time capture.
|
||||
---
|
||||
---Unlike all other captures,
|
||||
---this one is evaluated immediately when a match occurs
|
||||
---(even if it is part of a larger pattern that fails later).
|
||||
---It forces the immediate evaluation of all its nested captures
|
||||
---and then calls `function`.
|
||||
---
|
||||
---The given function gets as arguments the entire subject,
|
||||
---the current position (after the match of `patt`),
|
||||
---plus any capture values produced by `patt`.
|
||||
---
|
||||
---The first value returned by `function`
|
||||
---defines how the match happens.
|
||||
---If the call returns a number,
|
||||
---the match succeeds
|
||||
---and the returned number becomes the new current position.
|
||||
---(Assuming a subject sand current position i,
|
||||
---the returned number must be in the range [i, len(s) + 1].)
|
||||
---If the call returns true,
|
||||
---the match succeeds without consuming any input.
|
||||
---(So, to return trueis equivalent to return i.)
|
||||
---If the call returns false, nil, or no value,
|
||||
---the match fails.
|
||||
---
|
||||
---Any extra values returned by the function become the
|
||||
---values produced by the capture.
|
||||
---
|
||||
---@param patt Pattern
|
||||
---@param fn function
|
||||
---
|
||||
---@return Capture
|
||||
---
|
||||
---😱 [Types](https://github.com/LuaCATS/lpeg/blob/main/library/lpeg.lua) incomplete or incorrect? 🙏 [Please contribute!](https://github.com/LuaCATS/lpeg/pulls)
|
||||
function lpeg.Cmt(patt, fn) end
|
||||
|
||||
return lpeg
|
310
bundle/neodev.nvim/types/stable/lua.lua
vendored
Normal file
310
bundle/neodev.nvim/types/stable/lua.lua
vendored
Normal file
@ -0,0 +1,310 @@
|
||||
---@meta
|
||||
|
||||
|
||||
|
||||
-- Invokes |vim-function| or |user-function| {func} with arguments {...}.
|
||||
-- See also |vim.fn|.
|
||||
-- Equivalent to:
|
||||
-- ```lua
|
||||
-- vim.fn[func]({...})
|
||||
-- ```
|
||||
--- @param func fun()
|
||||
function vim.call(func, ...) end
|
||||
|
||||
-- Run diff on strings {a} and {b}. Any indices returned by this function,
|
||||
-- either directly or via callback arguments, are 1-based.
|
||||
--
|
||||
-- Examples:
|
||||
-- ```lua
|
||||
-- vim.diff('a\n', 'b\nc\n')
|
||||
-- -- =>
|
||||
-- -- @@ -1 +1,2 @@
|
||||
-- -- -a
|
||||
-- -- +b
|
||||
-- -- +c
|
||||
--
|
||||
-- vim.diff('a\n', 'b\nc\n', {result_type = 'indices'})
|
||||
-- -- =>
|
||||
-- -- {
|
||||
-- -- {1, 1, 1, 2}
|
||||
-- -- }
|
||||
-- ```
|
||||
-- Parameters: ~
|
||||
-- • {a} First string to compare
|
||||
-- • {b} Second string to compare
|
||||
-- • {opts} Optional parameters:
|
||||
-- • `on_hunk` (callback):
|
||||
-- Invoked for each hunk in the diff. Return a negative number
|
||||
-- to cancel the callback for any remaining hunks.
|
||||
-- Args:
|
||||
-- • `start_a` (integer): Start line of hunk in {a}.
|
||||
-- • `count_a` (integer): Hunk size in {a}.
|
||||
-- • `start_b` (integer): Start line of hunk in {b}.
|
||||
-- • `count_b` (integer): Hunk size in {b}.
|
||||
-- • `result_type` (string): Form of the returned diff:
|
||||
-- • "unified": (default) String in unified format.
|
||||
-- • "indices": Array of hunk locations.
|
||||
-- Note: This option is ignored if `on_hunk` is used.
|
||||
-- • `linematch` (boolean|integer): Run linematch on the resulting hunks
|
||||
-- from xdiff. When integer, only hunks upto this size in
|
||||
-- lines are run through linematch. Requires `result_type = indices`,
|
||||
-- ignored otherwise.
|
||||
-- • `algorithm` (string):
|
||||
-- Diff algorithm to use. Values:
|
||||
-- • "myers" the default algorithm
|
||||
-- • "minimal" spend extra time to generate the
|
||||
-- smallest possible diff
|
||||
-- • "patience" patience diff algorithm
|
||||
-- • "histogram" histogram diff algorithm
|
||||
-- • `ctxlen` (integer): Context length
|
||||
-- • `interhunkctxlen` (integer):
|
||||
-- Inter hunk context length
|
||||
-- • `ignore_whitespace` (boolean):
|
||||
-- Ignore whitespace
|
||||
-- • `ignore_whitespace_change` (boolean):
|
||||
-- Ignore whitespace change
|
||||
-- • `ignore_whitespace_change_at_eol` (boolean)
|
||||
-- Ignore whitespace change at end-of-line.
|
||||
-- • `ignore_cr_at_eol` (boolean)
|
||||
-- Ignore carriage return at end-of-line
|
||||
-- • `ignore_blank_lines` (boolean)
|
||||
-- Ignore blank lines
|
||||
-- • `indent_heuristic` (boolean):
|
||||
-- Use the indent heuristic for the internal
|
||||
-- diff library.
|
||||
--
|
||||
-- Return: ~
|
||||
-- See {opts.result_type}. nil if {opts.on_hunk} is given.
|
||||
--- @param opts table<string, any>
|
||||
function vim.diff(a, b, opts) end
|
||||
|
||||
-- The result is a String, which is the text {str} converted from
|
||||
-- encoding {from} to encoding {to}. When the conversion fails `nil` is
|
||||
-- returned. When some characters could not be converted they
|
||||
-- are replaced with "?".
|
||||
-- The encoding names are whatever the iconv() library function
|
||||
-- can accept, see ":Man 3 iconv".
|
||||
--
|
||||
-- Parameters: ~
|
||||
-- • {str} (string) Text to convert
|
||||
-- • {from} (string) Encoding of {str}
|
||||
-- • {to} (string) Target encoding
|
||||
--
|
||||
-- Returns: ~
|
||||
-- Converted string if conversion succeeds, `nil` otherwise.
|
||||
--- @param str string
|
||||
--- @param from number
|
||||
--- @param to number
|
||||
--- @param opts? table<string, any>
|
||||
function vim.iconv(str, from, to, opts) end
|
||||
|
||||
-- Returns true if the code is executing as part of a "fast" event handler,
|
||||
-- where most of the API is disabled. These are low-level events (e.g.
|
||||
-- |lua-loop-callbacks|) which can be invoked whenever Nvim polls for input.
|
||||
-- When this is `false` most API functions are callable (but may be subject
|
||||
-- to other restrictions such as |textlock|).
|
||||
function vim.in_fast_event() end
|
||||
|
||||
-- Decodes (or "unpacks") the JSON-encoded {str} to a Lua object.
|
||||
--
|
||||
-- {opts} is a table with the key `luanil = { object: bool, array: bool }`
|
||||
-- that controls whether `null` in JSON objects or arrays should be converted
|
||||
-- to Lua `nil` instead of `vim.NIL`.
|
||||
--- @param str string
|
||||
--- @param opts? table<string, any>
|
||||
function vim.json.decode(str, opts) end
|
||||
|
||||
-- Encodes (or "packs") Lua object {obj} as JSON in a Lua string.
|
||||
function vim.json.encode(obj) end
|
||||
|
||||
-- Decodes (or "unpacks") the msgpack-encoded {str} to a Lua object.
|
||||
--- @param str string
|
||||
function vim.mpack.decode(str) end
|
||||
|
||||
-- Encodes (or "packs") Lua object {obj} as msgpack in a Lua string.
|
||||
function vim.mpack.encode(obj) end
|
||||
|
||||
-- Parse the Vim regex {re} and return a regex object. Regexes are "magic"
|
||||
-- and case-sensitive by default, regardless of 'magic' and 'ignorecase'.
|
||||
-- They can be controlled with flags, see |/magic| and |/ignorecase|.
|
||||
function vim.regex(re) end
|
||||
|
||||
-- Sends {event} to {channel} via |RPC| and returns immediately. If {channel}
|
||||
-- is 0, the event is broadcast to all channels.
|
||||
--
|
||||
-- This function also works in a fast callback |lua-loop-callbacks|.
|
||||
--- @param args? any[]
|
||||
--- @param ...? any
|
||||
function vim.rpcnotify(channel, method, args, ...) end
|
||||
|
||||
-- Sends a request to {channel} to invoke {method} via |RPC| and blocks until
|
||||
-- a response is received.
|
||||
--
|
||||
-- Note: NIL values as part of the return value is represented as |vim.NIL|
|
||||
-- special value
|
||||
--- @param args? any[]
|
||||
--- @param ...? any
|
||||
function vim.rpcrequest(channel, method, args, ...) end
|
||||
|
||||
-- Schedules {callback} to be invoked soon by the main event-loop. Useful
|
||||
-- to avoid |textlock| or other temporary restrictions.
|
||||
--- @param callback fun()
|
||||
function vim.schedule(callback) end
|
||||
|
||||
-- Check {str} for spelling errors. Similar to the Vimscript function
|
||||
-- |spellbadword()|.
|
||||
--
|
||||
-- Note: The behaviour of this function is dependent on: 'spelllang',
|
||||
-- 'spellfile', 'spellcapcheck' and 'spelloptions' which can all be local to
|
||||
-- the buffer. Consider calling this with |nvim_buf_call()|.
|
||||
--
|
||||
-- Example:
|
||||
-- ```lua
|
||||
-- vim.spell.check("the quik brown fox")
|
||||
-- -- =>
|
||||
-- -- {
|
||||
-- -- {'quik', 'bad', 5}
|
||||
-- -- }
|
||||
-- ```
|
||||
-- Parameters: ~
|
||||
-- • {str} String to spell check.
|
||||
--
|
||||
-- Return: ~
|
||||
-- List of tuples with three items:
|
||||
-- - The badly spelled word.
|
||||
-- - The type of the spelling error:
|
||||
-- "bad" spelling mistake
|
||||
-- "rare" rare word
|
||||
-- "local" word only valid in another region
|
||||
-- "caps" word should start with Capital
|
||||
-- - The position in {str} where the word begins.
|
||||
--- @param str string
|
||||
function vim.spell.check(str) end
|
||||
|
||||
-- Convert UTF-32 or UTF-16 {index} to byte index. If {use_utf16} is not
|
||||
-- supplied, it defaults to false (use UTF-32). Returns the byte index.
|
||||
--
|
||||
-- Invalid UTF-8 and NUL is treated like by |vim.str_byteindex()|.
|
||||
-- An {index} in the middle of a UTF-16 sequence is rounded upwards to
|
||||
-- the end of that sequence.
|
||||
--- @param str string
|
||||
--- @param index number
|
||||
--- @param use_utf16? any
|
||||
function vim.str_byteindex(str, index, use_utf16) end
|
||||
|
||||
-- Convert byte index to UTF-32 and UTF-16 indices. If {index} is not
|
||||
-- supplied, the length of the string is used. All indices are zero-based.
|
||||
-- Returns two values: the UTF-32 and UTF-16 indices respectively.
|
||||
--
|
||||
-- Embedded NUL bytes are treated as terminating the string. Invalid UTF-8
|
||||
-- bytes, and embedded surrogates are counted as one code point each. An
|
||||
-- {index} in the middle of a UTF-8 sequence is rounded upwards to the end of
|
||||
-- that sequence.
|
||||
--- @param str string
|
||||
--- @param index? number
|
||||
function vim.str_utfindex(str, index) end
|
||||
|
||||
-- Compares strings case-insensitively. Returns 0, 1 or -1 if strings are
|
||||
-- equal, {a} is greater than {b} or {a} is lesser than {b}, respectively.
|
||||
function vim.stricmp(a, b) end
|
||||
|
||||
-- Attach to ui events, similar to |nvim_ui_attach()| but receive events
|
||||
-- as lua callback. Can be used to implement screen elements like
|
||||
-- popupmenu or message handling in lua.
|
||||
--
|
||||
-- {options} should be a dictionary-like table, where `ext_...` options should
|
||||
-- be set to true to receive events for the respective external element.
|
||||
--
|
||||
-- {callback} receives event name plus additional parameters. See |ui-popupmenu|
|
||||
-- and the sections below for event format for respective events.
|
||||
--
|
||||
-- WARNING: This api is considered experimental. Usability will vary for
|
||||
-- different screen elements. In particular `ext_messages` behavior is subject
|
||||
-- to further changes and usability improvements. This is expected to be
|
||||
-- used to handle messages when setting 'cmdheight' to zero (which is
|
||||
-- likewise experimental).
|
||||
--
|
||||
-- Example (stub for a |ui-popupmenu| implementation):
|
||||
-- ```lua
|
||||
--
|
||||
-- ns = vim.api.nvim_create_namespace('my_fancy_pum')
|
||||
--
|
||||
-- vim.ui_attach(ns, {ext_popupmenu=true}, function(event, ...)
|
||||
-- if event == "popupmenu_show" then
|
||||
-- local items, selected, row, col, grid = ...
|
||||
-- print("display pum ", #items)
|
||||
-- elseif event == "popupmenu_select" then
|
||||
-- local selected = ...
|
||||
-- print("selected", selected)
|
||||
-- elseif event == "popupmenu_hide" then
|
||||
-- print("FIN")
|
||||
-- end
|
||||
-- end)
|
||||
-- ```
|
||||
--- @param ns number
|
||||
--- @param options table<string, any>
|
||||
--- @param callback fun()
|
||||
function vim.ui_attach(ns, options, callback) end
|
||||
|
||||
-- Detach a callback previously attached with |vim.ui_attach()| for the
|
||||
-- given namespace {ns}.
|
||||
--- @param ns number
|
||||
function vim.ui_detach(ns) end
|
||||
|
||||
-- Wait for {time} in milliseconds until {callback} returns `true`.
|
||||
--
|
||||
-- Executes {callback} immediately and at approximately {interval}
|
||||
-- milliseconds (default 200). Nvim still processes other events during
|
||||
-- this time.
|
||||
--
|
||||
-- Parameters: ~
|
||||
-- • {time} Number of milliseconds to wait
|
||||
-- • {callback} Optional callback. Waits until {callback} returns true
|
||||
-- • {interval} (Approximate) number of milliseconds to wait between polls
|
||||
-- • {fast_only} If true, only |api-fast| events will be processed.
|
||||
-- If called from while in an |api-fast| event, will
|
||||
-- automatically be set to `true`.
|
||||
--
|
||||
-- Returns: ~
|
||||
-- If {callback} returns `true` during the {time}:
|
||||
-- `true, nil`
|
||||
--
|
||||
-- If {callback} never returns `true` during the {time}:
|
||||
-- `false, -1`
|
||||
--
|
||||
-- If {callback} is interrupted during the {time}:
|
||||
-- `false, -2`
|
||||
--
|
||||
-- If {callback} errors, the error is raised.
|
||||
--
|
||||
-- Examples:
|
||||
-- ```lua
|
||||
--
|
||||
-- ---
|
||||
-- -- Wait for 100 ms, allowing other events to process
|
||||
-- vim.wait(100, function() end)
|
||||
--
|
||||
-- ---
|
||||
-- -- Wait for 100 ms or until global variable set.
|
||||
-- vim.wait(100, function() return vim.g.waiting_for_var end)
|
||||
--
|
||||
-- ---
|
||||
-- -- Wait for 1 second or until global variable set, checking every ~500 ms
|
||||
-- vim.wait(1000, function() return vim.g.waiting_for_var end, 500)
|
||||
--
|
||||
-- ---
|
||||
-- -- Schedule a function to set a value in 100ms
|
||||
-- vim.defer_fn(function() vim.g.timer_result = true end, 100)
|
||||
--
|
||||
-- -- Would wait ten seconds if results blocked. Actually only waits 100 ms
|
||||
-- if vim.wait(10000, function() return vim.g.timer_result end) then
|
||||
-- print('Only waiting a little bit of time!')
|
||||
-- end
|
||||
-- ```
|
||||
--- @param time number
|
||||
--- @param condition? fun(): boolean
|
||||
--- @param interval? number
|
||||
--- @param fast_only? boolean
|
||||
--- @return boolean, nil|number
|
||||
function vim.wait(time, condition, interval, fast_only) end
|
||||
|
4400
bundle/neodev.nvim/types/stable/options.1.lua
vendored
Normal file
4400
bundle/neodev.nvim/types/stable/options.1.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4662
bundle/neodev.nvim/types/stable/options.2.lua
vendored
Normal file
4662
bundle/neodev.nvim/types/stable/options.2.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
2549
bundle/neodev.nvim/types/stable/options.3.lua
vendored
Normal file
2549
bundle/neodev.nvim/types/stable/options.3.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4300
bundle/neodev.nvim/types/stable/options.lua
vendored
Normal file
4300
bundle/neodev.nvim/types/stable/options.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
3982
bundle/neodev.nvim/types/stable/uv.lua
vendored
Normal file
3982
bundle/neodev.nvim/types/stable/uv.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
4841
bundle/neodev.nvim/types/stable/vim.fn.1.lua
vendored
Normal file
4841
bundle/neodev.nvim/types/stable/vim.fn.1.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
6008
bundle/neodev.nvim/types/stable/vim.fn.lua
vendored
Normal file
6008
bundle/neodev.nvim/types/stable/vim.fn.lua
vendored
Normal file
File diff suppressed because it is too large
Load Diff
40
bundle/neodev.nvim/types/stable/vim.lua
vendored
Normal file
40
bundle/neodev.nvim/types/stable/vim.lua
vendored
Normal file
@ -0,0 +1,40 @@
|
||||
---@meta
|
||||
|
||||
vim = {}
|
||||
|
||||
---@type uv
|
||||
vim.loop = {}
|
||||
|
||||
vim.F = require("vim.F")
|
||||
vim.diagnostic = require("vim.diagnostic")
|
||||
vim.filetype = require("vim.filetype")
|
||||
vim.fs = require("vim.fs")
|
||||
vim.health = require("vim.health")
|
||||
vim.highlight = require("vim.highlight")
|
||||
vim.inspect = require("vim.inspect").inspect
|
||||
vim.iter = require("vim.iter")
|
||||
vim.keymap = require("vim.keymap")
|
||||
vim.lsp = require("vim.lsp")
|
||||
vim.secure = require("vim.secure")
|
||||
vim.treesitter = require("vim.treesitter")
|
||||
vim.treesitter.highlighter = require("vim.treesitter.highlighter")
|
||||
vim.treesitter.language = require("vim.treesitter.language")
|
||||
vim.treesitter.query = require("vim.treesitter.query")
|
||||
vim.ui = require("vim.ui")
|
||||
vim.uri_from_bufnr = require("vim.uri").uri_from_bufnr
|
||||
vim.uri_from_fname = require("vim.uri").uri_from_fname
|
||||
vim.uri_to_bufnr = require("vim.uri").uri_to_bufnr
|
||||
vim.uri_to_fname = require("vim.uri").uri_to_fname
|
||||
vim.version = require("vim.version")
|
||||
vim.lpeg = require("lpeg")
|
||||
|
||||
---@type table<string,any>
|
||||
vim.g = {}
|
||||
---@type table<string,any>
|
||||
vim.v = {}
|
||||
---@type table<number,table<string, any>>
|
||||
vim.b = {}
|
||||
---@type table<number,table<string, any>>
|
||||
vim.w = {}
|
||||
---@type table<number,table<string, any>>
|
||||
vim.t = {}
|
2
bundle/neodev.nvim/vim.toml
vendored
Normal file
2
bundle/neodev.nvim/vim.toml
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
[vim]
|
||||
any = true
|
Loading…
Reference in New Issue
Block a user