apply fittings starter tree-sitter
This commit is contained in:
parent
c266746eaa
commit
4790b9e302
38 changed files with 206 additions and 19 deletions
1
.envrc
1
.envrc
|
@ -1 +0,0 @@
|
||||||
eval "$(lorri direnv)"
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -1 +1,3 @@
|
||||||
node_modules
|
#direnv
|
||||||
|
/.envrc
|
||||||
|
/.direnv/
|
39
Makefile
39
Makefile
|
@ -1,12 +1,33 @@
|
||||||
.DEFAULT_GOAL := g
|
TS_CONF := $$HOME/.config/tree-sitter/config.json
|
||||||
.PHONY: g t b
|
|
||||||
|
|
||||||
g:
|
test: build
|
||||||
tree-sitter generate
|
|
||||||
|
|
||||||
t:
|
|
||||||
# @$(MAKE) --no-print-directory build
|
|
||||||
tree-sitter test
|
tree-sitter test
|
||||||
|
|
||||||
b:
|
highlight: build
|
||||||
tree-sitter test --update
|
tree-sitter highlight -t test/highlight/*
|
||||||
|
|
||||||
|
playground: build-wasm
|
||||||
|
tree-sitter playground --quiet
|
||||||
|
|
||||||
|
build-wasm: build
|
||||||
|
tree-sitter build-wasm
|
||||||
|
|
||||||
|
build:
|
||||||
|
tree-sitter generate
|
||||||
|
|
||||||
|
init: init-tree-sitter init-git-hooks
|
||||||
|
|
||||||
|
init-tree-sitter:
|
||||||
|
if [ ! -f "$(TS_CONF)" ]; then \
|
||||||
|
tree-sitter init-config; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z $$(jq '."parser-directories"' $(TS_CONF) | grep $$(dirname $$PWD) ) ]; then \
|
||||||
|
cat <<< $$(jq ".\"parser-directories\" |= . + [\"$$(dirname $(PWD))\"]" $(TS_CONF)) > $(TS_CONF); \
|
||||||
|
fi
|
||||||
|
|
||||||
|
init-git-hooks:
|
||||||
|
ln -s $(PWD)/scripts/pre-commit $(PWD)/.git/hooks/pre-commit
|
||||||
|
|
||||||
|
help:
|
||||||
|
cat Makefile
|
||||||
|
|
65
dev/nvim-ts.nix
Normal file
65
dev/nvim-ts.nix
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
{ pkgs ? import <nixpkgs> { } }:
|
||||||
|
|
||||||
|
let
|
||||||
|
extraGrammars = {
|
||||||
|
tree-sitter-plpgsql = {
|
||||||
|
language = "psql";
|
||||||
|
src = ../.;
|
||||||
|
version = "0.0.0";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
tree-sitter = (pkgs.tree-sitter.override { inherit extraGrammars; });
|
||||||
|
grammars = tree-sitter.withPlugins (g: tree-sitter.allGrammars);
|
||||||
|
|
||||||
|
nvim-treesitter = pkgs.vimPlugins.nvim-treesitter.overrideAttrs (oldAttrs: {
|
||||||
|
postPatch = ''
|
||||||
|
rm -r parser
|
||||||
|
ln -s ${grammars} parser
|
||||||
|
|
||||||
|
ln -s ${../.}/queries queries/psql
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
luaRc = ''
|
||||||
|
local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
|
||||||
|
parser_config.psql = {}
|
||||||
|
|
||||||
|
require("nvim-treesitter.configs").setup({
|
||||||
|
ensure_installed = { },
|
||||||
|
sync_install = false,
|
||||||
|
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
indent = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.g.catppuccin_flavour = "frappe"
|
||||||
|
require("catppuccin").setup()
|
||||||
|
vim.cmd([[colorscheme catppuccin]])
|
||||||
|
'';
|
||||||
|
|
||||||
|
neovim = pkgs.neovim.override {
|
||||||
|
configure = {
|
||||||
|
customRC = ''
|
||||||
|
source ${./vimrc.vim}
|
||||||
|
lua <<EOF
|
||||||
|
${luaRc}
|
||||||
|
EOF
|
||||||
|
'';
|
||||||
|
|
||||||
|
packages.myPlugins.start = with pkgs.vimPlugins; [
|
||||||
|
nvim-treesitter
|
||||||
|
catppuccin-nvim
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
pkgs.runCommand "nvim-ts" { } ''
|
||||||
|
mkdir -p $out/bin
|
||||||
|
ln -s ${neovim}/bin/nvim $out/bin/nvim-ts
|
||||||
|
''
|
18
dev/vimrc.vim
Normal file
18
dev/vimrc.vim
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
" Basic settings for tests
|
||||||
|
set mouse=a
|
||||||
|
set number
|
||||||
|
set cursorline
|
||||||
|
set expandtab
|
||||||
|
set shiftwidth=2
|
||||||
|
set softtabstop=-1
|
||||||
|
set signcolumn=yes
|
||||||
|
set completeopt=menuone,noselect
|
||||||
|
set ttimeoutlen=1
|
||||||
|
set autoindent
|
||||||
|
|
||||||
|
" Always show statusline.
|
||||||
|
set laststatus=2
|
||||||
|
set statusline=%<%f\ %m%r%y\ %LL\ %=\ 0x%-4.B\ %-16.(%lL,%cC%V,%oB%)\ %P
|
||||||
|
|
||||||
|
" Detect d2 without d2-vim
|
||||||
|
au BufNewFile,BufRead *.d2 setfiletype d2
|
43
flake.lock
Normal file
43
flake.lock
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"flake-utils": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1667395993,
|
||||||
|
"narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1672756850,
|
||||||
|
"narHash": "sha256-Smbq3+fitwA13qsTMeaaurv09/KVbZfW7m7lINwzDGA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "298add347c2bbce14020fcb54051f517c391196b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-utils": "flake-utils",
|
||||||
|
"nixpkgs": "nixpkgs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
25
flake.nix
Normal file
25
flake.nix
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
{
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
||||||
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs = { self, nixpkgs, flake-utils }:
|
||||||
|
flake-utils.lib.eachDefaultSystem (system:
|
||||||
|
let
|
||||||
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
devShells.default = pkgs.mkShell {
|
||||||
|
packages = with pkgs; [
|
||||||
|
jq
|
||||||
|
nodejs-18_x
|
||||||
|
tree-sitter
|
||||||
|
nodePackages.eslint
|
||||||
|
nodePackages.prettier
|
||||||
|
nodePackages.vscode-langservers-extracted # html, css, json, eslint
|
||||||
|
(import ./dev/nvim-ts.nix { inherit pkgs; })
|
||||||
|
];
|
||||||
|
};
|
||||||
|
});
|
||||||
|
}
|
16
package.json
16
package.json
|
@ -2,14 +2,14 @@
|
||||||
"name": "tree-sitter-plpgsql",
|
"name": "tree-sitter-plpgsql",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "bindings/node",
|
"main": "grammar.js",
|
||||||
"scripts": {
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"dependencies": {
|
"tree-sitter": [
|
||||||
"nan": "^2.15.0",
|
{
|
||||||
"tree-sitter-cli": "^0.20.0"
|
"scope": "source.psql",
|
||||||
}
|
"file-types": ["psql"],
|
||||||
|
"injection-regex": "^psql$"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
14
scripts/pre-commit
Normal file
14
scripts/pre-commit
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#! /usr/bin/env bash
|
||||||
|
|
||||||
|
# Can be used as a pre-commit hook
|
||||||
|
# Just symlink this file to .git/hooks/pre-commit
|
||||||
|
|
||||||
|
set -xe
|
||||||
|
|
||||||
|
if [ ! -z $(git diff --cached --name-only | grep -e "^grammar.js$") ]
|
||||||
|
then
|
||||||
|
make build
|
||||||
|
make build-wasm
|
||||||
|
git add src bindings *.wasm
|
||||||
|
fi
|
||||||
|
|
Loading…
Reference in a new issue