aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2024-02-19 00:37:42 -0600
committerToby Vincent <tobyv@tobyvin.dev>2024-02-19 00:37:42 -0600
commit0bf01ac8fbc9f0694b424f2198b2b4111474f054 (patch)
treeaa4d6017d7aa594d6a95e575f2a4995b94a5774e
parent9c6399285657ca01247ad88ff9835d42a116ca0c (diff)
fix(nvim): improve PKGBUILD lsp
-rw-r--r--nvim/.config/nvim/after/ftplugin/PKGBUILD.lua3
-rw-r--r--nvim/.config/nvim/lua/plugins/lint.lua14
-rw-r--r--nvim/.config/nvim/lua/tobyvin/filetype.lua1
-rw-r--r--nvim/.config/nvim/lua/tobyvin/lsp/configs.lua7
-rwxr-xr-xnvim/.local/bin/pkgbuildcheck189
5 files changed, 109 insertions, 105 deletions
diff --git a/nvim/.config/nvim/after/ftplugin/PKGBUILD.lua b/nvim/.config/nvim/after/ftplugin/PKGBUILD.lua
index 3c844d9..d1a6bb6 100644
--- a/nvim/.config/nvim/after/ftplugin/PKGBUILD.lua
+++ b/nvim/.config/nvim/after/ftplugin/PKGBUILD.lua
@@ -1 +1,2 @@
-vim.opt_local.tabstop = 2
+vim.cmd("runtime! ftplugin/sh.{vim,lua}")
+vim.treesitter.language.register("bash", { "PKGBUILD" })
diff --git a/nvim/.config/nvim/lua/plugins/lint.lua b/nvim/.config/nvim/lua/plugins/lint.lua
index f2b3cfc..09fb0fa 100644
--- a/nvim/.config/nvim/lua/plugins/lint.lua
+++ b/nvim/.config/nvim/lua/plugins/lint.lua
@@ -60,18 +60,6 @@ local M = {
})[1]
end,
},
- shellcheck = {
- condition = function()
- return not vim.api.nvim_buf_get_name(0):match(".*/PKGBUILD$")
- end,
- },
- pkgbuildcheck = {
- extend = "shellcheck",
- cmd = "pkgbuildcheck",
- condition = function()
- return vim.api.nvim_buf_get_name(0):match(".*/PKGBUILD$")
- end,
- },
},
},
}
@@ -87,7 +75,7 @@ function M:config(opts)
local lint = require("lint")
lint.linters_by_ft = opts.linters_by_ft
vim.iter(opts.linters):each(function(name, linter)
- linter = vim.tbl_deep_extend("keep", linter, require("lint").linters[linter.extend or name] or {}, {
+ linter = vim.tbl_deep_extend("keep", linter, require("lint").linters[name] or {}, {
args = {},
prepend_args = {},
})
diff --git a/nvim/.config/nvim/lua/tobyvin/filetype.lua b/nvim/.config/nvim/lua/tobyvin/filetype.lua
index 2f288e9..f82e6b9 100644
--- a/nvim/.config/nvim/lua/tobyvin/filetype.lua
+++ b/nvim/.config/nvim/lua/tobyvin/filetype.lua
@@ -6,6 +6,7 @@ vim.filetype.add({
service = "systemd",
},
filename = {
+ PKGBUILD = "PKGBUILD",
tridactylrc = "trytactylrc",
},
pattern = {
diff --git a/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua b/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua
index 8c59719..d3cf99d 100644
--- a/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua
+++ b/nvim/.config/nvim/lua/tobyvin/lsp/configs.lua
@@ -2,6 +2,7 @@ local ms = vim.lsp.protocol.Methods
local M = {
bashls = {
+ filetypes = { "sh", "PKGBUILD" },
settings = {
bashIde = {
explainshellEndpoint = "https://explainshell.com",
@@ -11,6 +12,12 @@ local M = {
},
},
},
+ ---@type fun(new_config: lspconfig.options.bashls, new_root_dir: any)
+ on_new_config = function(new_config, new_root_dir)
+ if require("lspconfig").util.path.join(new_root_dir, "PKGBUILD") then
+ new_config.settings.bashIde.shellcheckPath = "pkgbuildcheck"
+ end
+ end,
},
biome = {
capabilities = {
diff --git a/nvim/.local/bin/pkgbuildcheck b/nvim/.local/bin/pkgbuildcheck
index af2bc39..090d8e1 100755
--- a/nvim/.local/bin/pkgbuildcheck
+++ b/nvim/.local/bin/pkgbuildcheck
@@ -1,99 +1,106 @@
#!/bin/sh
+# shellcheck disable=SC2086
-{
- cat <<-EOF
- #!/bin/bash -euET
+for arg; do
+ if [ -f "$arg" ]; then
+ file=$arg
+ elif [ "$arg" != "-" ]; then
+ set -- "$@" $arg
+ fi
+ shift
+done
- # declare variables used by PKGBUILD
- srcdir='~!@#$%^&*() /\|'
- pkgdir='~!@#$%^&*() /\|'
+shellcheck "$@" --format=json - <<-EOF | jq -Mc '(..|objects|select(has("line"))).line -= 7 | (..|objects|select(has("endLine"))).endLine -= 7'
+ #!/bin/bash -euET
- # the actual PKGBUILD gets inlined by RUA here
+ # declare variables used by PKGBUILD
+ srcdir='~!@#$%^&*() /\|'
+ pkgdir='~!@#$%^&*() /\|'
- $(cat)
+ # the actual PKGBUILD gets inlined by RUA here
+ $(cat $file)
- # ensure that obligatory PKGBUILD values are defined, and avoid "unused" warning for them:
- test "\${pkgname[*]} should be declared in PKGBUILD"
- test "\${pkgver[*]} should be declared in PKGBUILD"
- test "\${pkgrel[*]} should be declared in PKGBUILD"
- test "\${arch[*]} should be declared in PKGBUILD"
+ # ensure that obligatory PKGBUILD values are defined, and avoid "unused" warning for them:
+ test "\${pkgname[*]} should be declared in PKGBUILD"
+ test "\${pkgver[*]} should be declared in PKGBUILD"
+ test "\${pkgrel[*]} should be declared in PKGBUILD"
+ test "\${arch[*]} should be declared in PKGBUILD"
- # avoid "unused" warning for optional PKGBUILD variables:
- export pkgbase
- export epoch
- export pkgdesc
- export url
- export license
- export install
- export changelog
- export source
- export source_aarch64
- export source_i686
- export source_x86_64
- export validpgpkeys
- export noextract
- export md5sums
- export md5sums_aarch64
- export md5sums_i686
- export md5sums_x86_64
- export sha1sums
- export sha1sums_aarch64
- export sha1sums_i686
- export sha1sums_x86_64
- export sha224sums
- export sha224sums_aarch64
- export sha224sums_i686
- export sha224sums_x86_64
- export sha256sums
- export sha256sums_aarch64
- export sha256sums_i686
- export sha256sums_x86_64
- export sha384sums
- export sha384sums_aarch64
- export sha384sums_i686
- export sha384sums_x86_64
- export sha512sums
- export sha512sums_aarch64
- export sha512sums_i686
- export sha512sums_x86_64
- export b2sums
- export b2sums_aarch64
- export b2sums_i686
- export b2sums_x86_64
- export groups
- export backup
- export depends
- export depends_aarch64
- export depends_i686
- export depends_x86_64
- export makedepends
- export makedepends_aarch64
- export makedepends_i686
- export makedepends_x86_64
- export checkdepends
- export checkdepends_aarch64
- export checkdepends_i686
- export checkdepends_x86_64
- export optdepends
- export optdepends_aarch64
- export optdepends_i686
- export optdepends_x86_64
- export conflicts
- export conflicts_aarch64
- export conflicts_i686
- export conflicts_x86_64
- export provides
- export provides_aarch64
- export provides_i686
- export provides_x86_64
- export replaces
- export replaces_aarch64
- export replaces_i686
- export replaces_x86_64
- export options
+ # avoid "unused" warning for optional PKGBUILD variables:
+ export pkgbase
+ export epoch
+ export pkgdesc
+ export url
+ export license
+ export install
+ export changelog
+ export source
+ export source_aarch64
+ export source_i686
+ export source_x86_64
+ export validpgpkeys
+ export noextract
+ export md5sums
+ export md5sums_aarch64
+ export md5sums_i686
+ export md5sums_x86_64
+ export sha1sums
+ export sha1sums_aarch64
+ export sha1sums_i686
+ export sha1sums_x86_64
+ export sha224sums
+ export sha224sums_aarch64
+ export sha224sums_i686
+ export sha224sums_x86_64
+ export sha256sums
+ export sha256sums_aarch64
+ export sha256sums_i686
+ export sha256sums_x86_64
+ export sha384sums
+ export sha384sums_aarch64
+ export sha384sums_i686
+ export sha384sums_x86_64
+ export sha512sums
+ export sha512sums_aarch64
+ export sha512sums_i686
+ export sha512sums_x86_64
+ export b2sums
+ export b2sums_aarch64
+ export b2sums_i686
+ export b2sums_x86_64
+ export groups
+ export backup
+ export depends
+ export depends_aarch64
+ export depends_i686
+ export depends_x86_64
+ export makedepends
+ export makedepends_aarch64
+ export makedepends_i686
+ export makedepends_x86_64
+ export checkdepends
+ export checkdepends_aarch64
+ export checkdepends_i686
+ export checkdepends_x86_64
+ export optdepends
+ export optdepends_aarch64
+ export optdepends_i686
+ export optdepends_x86_64
+ export conflicts
+ export conflicts_aarch64
+ export conflicts_i686
+ export conflicts_x86_64
+ export provides
+ export provides_aarch64
+ export provides_i686
+ export provides_x86_64
+ export replaces
+ export replaces_aarch64
+ export replaces_i686
+ export replaces_x86_64
+ export options
- # avoid "unused" warning for variables defined _for_ PKGBUILD
- export srcdir
- export pkgdir
- EOF
-} | shellcheck "$@"
+ # avoid "unused" warning for variables defined _for_ PKGBUILD
+ export srcdir
+ export pkgdir
+EOF