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",
|
||||
"marksman",
|
||||
"asm_lsp",
|
||||
"typst_lsp"
|
||||
}) do
|
||||
lspconfig[server].setup(server_opts)
|
||||
end
|
||||
|
@ -126,6 +126,17 @@ return {
|
||||
"RRethy/nvim-treesitter-endwise",
|
||||
},
|
||||
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({
|
||||
auto_install = true,
|
||||
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