mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
runtime(typst): add folding to typst ftplugin
closes: #15897 Signed-off-by: Gregory Anders <greg@gpanders.com> Signed-off-by: Luca Saccarola <github.e41mv@aleeas.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
a7d456191d
commit
421ed14b8a
@@ -1,6 +1,6 @@
|
|||||||
" Language: Typst
|
" Language: Typst
|
||||||
" Maintainer: Gregory Anders
|
" Maintainer: Gregory Anders
|
||||||
" Last Change: 2024-07-14
|
" Last Change: 2024 Oct 21
|
||||||
" Based on: https://github.com/kaarmu/typst.vim
|
" Based on: https://github.com/kaarmu/typst.vim
|
||||||
|
|
||||||
function! typst#indentexpr() abort
|
function! typst#indentexpr() abort
|
||||||
@@ -31,6 +31,31 @@ function! typst#indentexpr() abort
|
|||||||
return l:ind
|
return l:ind
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
function typst#foldexpr()
|
||||||
|
let line = getline(v:lnum)
|
||||||
|
|
||||||
|
" Whenever the user wants to fold nested headers under the parent
|
||||||
|
let nested = get(g:, "typst_foldnested", 1)
|
||||||
|
|
||||||
|
" Regular headers
|
||||||
|
let depth = match(line, '\(^=\+\)\@<=\( .*$\)\@=')
|
||||||
|
|
||||||
|
" Do not fold nested regular headers
|
||||||
|
if depth > 1 && !nested
|
||||||
|
let depth = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if depth > 0
|
||||||
|
" check syntax, it should be typstMarkupHeading
|
||||||
|
let syncode = synstack(v:lnum, 1)
|
||||||
|
if len(syncode) > 0 && synIDattr(syncode[0], 'name') ==# 'typstMarkupHeading'
|
||||||
|
return ">" . depth
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
return "="
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Gets the previous non-blank line that is not a comment.
|
" Gets the previous non-blank line that is not a comment.
|
||||||
function! s:get_prev_nonblank(lnum) abort
|
function! s:get_prev_nonblank(lnum) abort
|
||||||
let l:lnum = prevnonblank(a:lnum)
|
let l:lnum = prevnonblank(a:lnum)
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
*filetype.txt* For Vim version 9.1. Last change: 2024 Oct 05
|
*filetype.txt* For Vim version 9.1. Last change: 2024 Oct 21
|
||||||
|
|
||||||
|
|
||||||
VIM REFERENCE MANUAL by Bram Moolenaar
|
VIM REFERENCE MANUAL by Bram Moolenaar
|
||||||
@@ -939,6 +939,19 @@ TYPST *ft-typst-plugin*
|
|||||||
*g:typst_conceal*
|
*g:typst_conceal*
|
||||||
When |TRUE| the Typst filetype plugin will set the 'conceallevel' option to 2.
|
When |TRUE| the Typst filetype plugin will set the 'conceallevel' option to 2.
|
||||||
|
|
||||||
|
*g:typst_folding*
|
||||||
|
When |TRUE| the Typst filetype plugin will fold headings. (default: |FALSE|)
|
||||||
|
|
||||||
|
To enable: >
|
||||||
|
let g:typst_folding = 1
|
||||||
|
<
|
||||||
|
*g:typst_foldnested*
|
||||||
|
When |TRUE| the Typst filetype plugin will fold nested heading under their parents
|
||||||
|
(default: |TRUE|)
|
||||||
|
|
||||||
|
To disable: >
|
||||||
|
let g:typst_foldnested = 0
|
||||||
|
<
|
||||||
VIM *ft-vim-plugin*
|
VIM *ft-vim-plugin*
|
||||||
|
|
||||||
The Vim filetype plugin defines mappings to move to the start and end of
|
The Vim filetype plugin defines mappings to move to the start and end of
|
||||||
|
@@ -7747,6 +7747,8 @@ g:typescript_host_keyword syntax.txt /*g:typescript_host_keyword*
|
|||||||
g:typst_cmd quickfix.txt /*g:typst_cmd*
|
g:typst_cmd quickfix.txt /*g:typst_cmd*
|
||||||
g:typst_conceal filetype.txt /*g:typst_conceal*
|
g:typst_conceal filetype.txt /*g:typst_conceal*
|
||||||
g:typst_embedded_languages syntax.txt /*g:typst_embedded_languages*
|
g:typst_embedded_languages syntax.txt /*g:typst_embedded_languages*
|
||||||
|
g:typst_folding filetype.txt /*g:typst_folding*
|
||||||
|
g:typst_foldnested filetype.txt /*g:typst_foldnested*
|
||||||
g:var eval.txt /*g:var*
|
g:var eval.txt /*g:var*
|
||||||
g:vim_indent indent.txt /*g:vim_indent*
|
g:vim_indent indent.txt /*g:vim_indent*
|
||||||
g:vim_indent_cont indent.txt /*g:vim_indent_cont*
|
g:vim_indent_cont indent.txt /*g:vim_indent_cont*
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
" Vim filetype plugin file
|
" Vim filetype plugin file
|
||||||
" Language: Typst
|
" Language: Typst
|
||||||
" Maintainer: Gregory Anders
|
" Maintainer: Gregory Anders
|
||||||
" Last Change: 2024 Oct 04
|
" Last Change: 2024 Oct 21
|
||||||
" Based on: https://github.com/kaarmu/typst.vim
|
" Based on: https://github.com/kaarmu/typst.vim
|
||||||
|
|
||||||
if exists('b:did_ftplugin')
|
if exists('b:did_ftplugin')
|
||||||
@@ -21,6 +21,12 @@ if get(g:, 'typst_conceal', 0)
|
|||||||
let b:undo_ftplugin .= ' cole<'
|
let b:undo_ftplugin .= ' cole<'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if has("folding") && get(g:, 'typst_folding', 0)
|
||||||
|
setlocal foldexpr=typst#foldexpr()
|
||||||
|
setlocal foldmethod=expr
|
||||||
|
let b:undo_ftplugin .= "|setl foldexpr< foldmethod<"
|
||||||
|
endif
|
||||||
|
|
||||||
if !exists('current_compiler')
|
if !exists('current_compiler')
|
||||||
compiler typst
|
compiler typst
|
||||||
let b:undo_ftplugin ..= "| compiler make"
|
let b:undo_ftplugin ..= "| compiler make"
|
||||||
|
Reference in New Issue
Block a user