feat(nvim): integrate typst
This commit is contained in:
parent
faf51c679a
commit
9d8089a6a7
79
dots/.config/nvim/after/queries/typst/highlights.scm
Normal file
79
dots/.config/nvim/after/queries/typst/highlights.scm
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
;; All scopes: comments
|
||||||
|
(comment) @comment @spell
|
||||||
|
|
||||||
|
;; Code
|
||||||
|
;; punctuation
|
||||||
|
["#"] @punctuation.special
|
||||||
|
[":" ";" ","] @punctuation.delimiter
|
||||||
|
["(" ")" "{" "}"] @punctuation.bracket
|
||||||
|
;; TODO: context blocks?
|
||||||
|
[ "[" "]" ] @punctuation.bracket
|
||||||
|
;; operators
|
||||||
|
[
|
||||||
|
"-"
|
||||||
|
"+"
|
||||||
|
"*"
|
||||||
|
"/"
|
||||||
|
|
||||||
|
"=="
|
||||||
|
"!="
|
||||||
|
"<"
|
||||||
|
"<="
|
||||||
|
">"
|
||||||
|
">="
|
||||||
|
|
||||||
|
"="
|
||||||
|
|
||||||
|
"in"
|
||||||
|
"and"
|
||||||
|
"or"
|
||||||
|
"not"
|
||||||
|
] @operator
|
||||||
|
;; keywords
|
||||||
|
[ "import" "include" ] @include
|
||||||
|
[ "let" "set" "show" ] @keyword
|
||||||
|
;; control flow
|
||||||
|
[ "for" "while" "break" "continue" ] @repeat
|
||||||
|
[ "if" "else" ] @conditional
|
||||||
|
;; special case: #for (ident) in (expr)
|
||||||
|
(for "in" @repeat)
|
||||||
|
;; type literals
|
||||||
|
(number) @number
|
||||||
|
(string) @string
|
||||||
|
(bool) @boolean
|
||||||
|
;; identifiers
|
||||||
|
(builtin) @namespace
|
||||||
|
(ident) @identifier
|
||||||
|
;; name-value pairs
|
||||||
|
(tagged
|
||||||
|
field: (ident)) @field
|
||||||
|
;; function definitions, calls, etc.
|
||||||
|
;; TODO: support for functions such as #calc.cos, tree view appears as
|
||||||
|
;; (call)
|
||||||
|
;; item: (field)
|
||||||
|
;; (builtin)
|
||||||
|
; field: (ident)
|
||||||
|
(call
|
||||||
|
item: (builtin)) @function.builtin
|
||||||
|
(call
|
||||||
|
item: (ident)) @function.call
|
||||||
|
|
||||||
|
;; Text
|
||||||
|
(heading) @text.title
|
||||||
|
(text) @text
|
||||||
|
(strong) @text.strong
|
||||||
|
(emph) @text.emph
|
||||||
|
(url) @text.uri
|
||||||
|
;; code blocks
|
||||||
|
(raw_span) @text.literal
|
||||||
|
(raw_span
|
||||||
|
(blob)) @text.literal
|
||||||
|
(raw_blck) @text.literal
|
||||||
|
(raw_blck
|
||||||
|
(blob)) @text.literal.block
|
||||||
|
;; refs and labels
|
||||||
|
(label) @text.reference
|
||||||
|
(ref) @text.reference
|
||||||
|
|
||||||
|
;; Math
|
||||||
|
(math) @text.math
|
@ -429,6 +429,7 @@ return {
|
|||||||
"vimls",
|
"vimls",
|
||||||
"marksman",
|
"marksman",
|
||||||
"asm_lsp",
|
"asm_lsp",
|
||||||
|
"typst_lsp"
|
||||||
}) do
|
}) do
|
||||||
lspconfig[server].setup(server_opts)
|
lspconfig[server].setup(server_opts)
|
||||||
end
|
end
|
||||||
|
@ -126,6 +126,17 @@ return {
|
|||||||
"RRethy/nvim-treesitter-endwise",
|
"RRethy/nvim-treesitter-endwise",
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
|
local parser_config = require('nvim-treesitter.parsers').get_parser_configs()
|
||||||
|
parser_config.typst = {
|
||||||
|
install_info = {
|
||||||
|
url = "https://github.com/uben0/tree-sitter-typst",
|
||||||
|
files = { "src/parser.c", "src/scanner.c" },
|
||||||
|
branch = "master",
|
||||||
|
generate_requires_npm = true,
|
||||||
|
},
|
||||||
|
maintainers = { "uben0" },
|
||||||
|
experimental = true
|
||||||
|
}
|
||||||
require("nvim-treesitter.configs").setup({
|
require("nvim-treesitter.configs").setup({
|
||||||
auto_install = true,
|
auto_install = true,
|
||||||
ignore_install = { "comment" },
|
ignore_install = { "comment" },
|
||||||
|
7
dots/.config/nvim/lua/plugins/configs/typst.lua
Normal file
7
dots/.config/nvim/lua/plugins/configs/typst.lua
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"chomosuke/typst-preview.nvim",
|
||||||
|
ft = "typst",
|
||||||
|
build = function() require("typst-preview").update() end,
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user