summaryrefslogtreecommitdiff
path: root/mnv/runtime/ftplugin/debcontrol.mnv
diff options
context:
space:
mode:
authorMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
committerMehmet Samet Duman <yongdohyun@projecttick.org>2026-04-04 12:41:27 +0300
commit4f2d36194b4f299aa7509d815c07121039ea833b (patch)
treef3ded014bad3a4c76ff6a22b8726ebaab68c3d13 /mnv/runtime/ftplugin/debcontrol.mnv
parent5b578e70c314723a3cde5c9bfc2be0bf1dadc93b (diff)
downloadProject-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.tar.gz
Project-Tick-4f2d36194b4f299aa7509d815c07121039ea833b.zip
NOISSUE change uvim folder name to mnv
Signed-off-by: Mehmet Samet Duman <yongdohyun@projecttick.org>
Diffstat (limited to 'mnv/runtime/ftplugin/debcontrol.mnv')
-rw-r--r--mnv/runtime/ftplugin/debcontrol.mnv73
1 files changed, 73 insertions, 0 deletions
diff --git a/mnv/runtime/ftplugin/debcontrol.mnv b/mnv/runtime/ftplugin/debcontrol.mnv
new file mode 100644
index 0000000000..7f4c6ea1ea
--- /dev/null
+++ b/mnv/runtime/ftplugin/debcontrol.mnv
@@ -0,0 +1,73 @@
+" MNV filetype plugin file (GUI menu and folding)
+" Language: Debian control files
+" Maintainer: Debian MNV Maintainers
+" Former Maintainer: Pierre Habouzit <madcoder@debian.org>
+" Last Change: 2024 May 25
+" URL: https://salsa.debian.org/mnv-team/mnv-debian/blob/main/ftplugin/debcontrol.mnv
+
+" Do these settings once per buffer
+if exists('b:did_ftplugin')
+ finish
+endif
+let b:did_ftplugin=1
+
+" {{{1 Local settings (do on every load)
+if exists('g:debcontrol_fold_enable')
+ setlocal foldmethod=expr
+ setlocal foldexpr=DebControlFold(v:lnum)
+ setlocal foldtext=DebControlFoldText()
+endif
+setlocal textwidth=0
+
+setlocal comments=:#
+setlocal commentstring=#\ %s
+
+" Clean unloading
+let b:undo_ftplugin = 'setlocal tw< foldmethod< foldexpr< foldtext< comments< commentstring<'
+
+" }}}1
+
+" {{{1 folding
+
+function! s:getField(f, lnum)
+ let line = getline(a:lnum)
+ let fwdsteps = 0
+ while line !~ '^'.a:f.':'
+ let fwdsteps += 1
+ let line = getline(a:lnum + fwdsteps)
+ if line ==# ''
+ return 'unknown'
+ endif
+ endwhile
+ return substitute(line, '^'.a:f.': *', '', '')
+endfunction
+
+function! DebControlFoldText()
+ if v:folddashes ==# '-' " debcontrol entry fold
+ let type = substitute(getline(v:foldstart), ':.*', '', '')
+ if type ==# 'Source'
+ let ftext = substitute(foldtext(), ' *Source: *', ' ', '')
+ return ftext . ' -- ' . s:getField('Maintainer', v:foldstart) . ' '
+ endif
+ let arch = s:getField('Architecture', v:foldstart)
+ let ftext = substitute(foldtext(), ' *Package: *', ' [' . arch . '] ', '')
+ return ftext . ': ' . s:getField('Description', v:foldstart) . ' '
+ endif
+ return foldtext()
+endfunction
+
+function! DebControlFold(l)
+
+ " This is for not merging blank lines around folds to them
+ if getline(a:l) =~# '^Source:'
+ return '>1'
+ endif
+
+ if getline(a:l) =~# '^Package:'
+ return '>1'
+ endif
+
+ return '='
+endfunction
+
+" }}}1