view runtime/ftplugin/context.vim @ 33767:4913b4f5a133 v9.0.2104

patch 9.0.2104: wast filetype should be replaced by wat filetype Commit: https://github.com/vim/vim/commit/bc8f79d36a456054ed29f46585830af6d71f57c8 Author: rhysd <lin90162@yahoo.co.jp> Date: Tue Nov 14 16:46:07 2023 +0100 patch 9.0.2104: wast filetype should be replaced by wat filetype Problem: wast filetype should be replaced by wat filetype Solution: start using the official wat filetype name runtime: rename `wast` filetype to `wat` (Wasm text format) The problem is the name of the current filetype wast. When the plugin was initially created, the file extension for Wasm text format was not fixed and .wast was more popular. However, recently .wat became the official file extension for WebAssembly text (WAT) format and .wast is now a file extension for the unofficial WAST format, which is a superset of .wat for the convenience to describe the Wasm specification conformance tests. https://webassembly.js.org/docs/contrib-wat-vs-wast.html However for now, let's keep using the `wat` filetype even for the .wast extension, so that we at least do not lose the filetype settings and syntax highlighting. This can be adjusted later, if it turns out to have a separate need for. closes: #13533 Signed-off-by: rhysd <lin90162@yahoo.co.jp> Signed-off-by: Christian Brabandt <cb@256bit.org>
author Christian Brabandt <cb@256bit.org>
date Tue, 14 Nov 2023 17:15:03 +0100
parents 2acb87ee55fc
children d81556766132
line wrap: on
line source

vim9script

# Vim filetype plugin file
# Language:           ConTeXt typesetting engine
# Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com>
# Former Maintainers: Nikolai Weibull <now@bitwi.se>
# Latest Revision:    2022 Aug 12

if exists("b:did_ftplugin")
  finish
endif

import autoload '../autoload/context.vim'

b:did_ftplugin = 1

if !exists('current_compiler')
  compiler context
endif

b:undo_ftplugin = "setl com< cms< def< inc< sua< fo< ofu<"

setlocal comments=b:%D,b:%C,b:%M,:%
setlocal commentstring=%\ %s
setlocal formatoptions+=tjcroql2
setlocal omnifunc=context.Complete
setlocal suffixesadd=.tex,.mkxl,.mkvi,.mkiv,.mkii

&l:define = '\\\%([egx]\|char\|mathchar\|count\|dimen\|muskip\|skip\|toks\)\='
..          'def\|\\font\|\\\%(future\)\=let'
..          '\|\\new\%(count\|dimen\|skip\|muskip\|box\|toks\|read\|write'
..          '\|fam\|insert\|if\)'

&l:include = '^\s*\\\%(input\|component\|product\|project\|environment\)'

if exists("g:loaded_matchit") && !exists("b:match_words")
  b:match_ignorecase = 0
  b:match_skip = 'r:\\\@<!\%(\\\\\)*%'
  b:match_words = '(:),\[:],{:},\\(:\\),\\\[:\\],\\start\(\a\+\):\\stop\1'
  b:undo_ftplugin ..= "| unlet! b:match_ignorecase b:match_words b:match_skip"
endif

if !get(g:, 'no_context_maps', 0) && !get(g:, 'no_plugin_maps', 0)
  const context_regex = {
    'beginsection': '\\\%(start\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>',
    'endsection':   '\\\%(stop\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>',
    'beginblock':   '\\\%(start\|setup\|define\)',
    'endblock':     '\\\%(stop\|setup\|define\)',
    }

  def UndoMap(mapping: string, modes: string)
    for mode in modes
      b:undo_ftplugin ..= printf(" | silent! execute '%sunmap <buffer> %s'", mode, mapping)
    endfor
  enddef

  def MoveAround(count: number, what: string, flags: string)
    search(context_regex[what], flags .. 's')  # 's' sets previous context mark
    var i = 2
    while i <= count
      search(context_regex[what], flags)
      i += 1
    endwhile
  enddef

  # Macros to move around
  nnoremap <silent><buffer> [[ <scriptcmd>MoveAround(v:count1, "beginsection", "bW")<cr>
  vnoremap <silent><buffer> [[ <scriptcmd>MoveAround(v:count1, "beginsection", "bW")<cr>
  nnoremap <silent><buffer> ]] <scriptcmd>MoveAround(v:count1, "beginsection", "W") <cr>
  vnoremap <silent><buffer> ]] <scriptcmd>MoveAround(v:count1, "beginsection", "W") <cr>
  nnoremap <silent><buffer> [] <scriptcmd>MoveAround(v:count1, "endsection",   "bW")<cr>
  vnoremap <silent><buffer> [] <scriptcmd>MoveAround(v:count1, "endsection",   "bW")<cr>
  nnoremap <silent><buffer> ][ <scriptcmd>MoveAround(v:count1, "endsection",   "W") <cr>
  vnoremap <silent><buffer> ][ <scriptcmd>MoveAround(v:count1, "endsection",   "W") <cr>
  nnoremap <silent><buffer> [{ <scriptcmd>MoveAround(v:count1, "beginblock",   "bW")<cr>
  vnoremap <silent><buffer> [{ <scriptcmd>MoveAround(v:count1, "beginblock",   "bW")<cr>
  nnoremap <silent><buffer> ]} <scriptcmd>MoveAround(v:count1, "endblock",     "W") <cr>
  vnoremap <silent><buffer> ]} <scriptcmd>MoveAround(v:count1, "endblock",     "W") <cr>

  for mapping in ['[[', ']]', '[]', '][', '[{', ']}']
    UndoMap(mapping, 'nv')
  endfor

  # Other useful mappings
  const tp_regex = '?^$\|^\s*\\\(item\|start\|stop\|blank\|\%(sub\)*section\|chapter\|\%(sub\)*subject\|title\|part\)'

  def TeXPar()
    cursor(search(tp_regex, 'bcW') + 1, 1)
    normal! V
    cursor(search(tp_regex, 'W') - 1, 1)
  enddef

  # Reflow paragraphs with mappings like gqtp ("gq TeX paragraph")
  onoremap <silent><buffer> tp <scriptcmd>TeXPar()<cr>
  # Select TeX paragraph
  vnoremap <silent><buffer> tp <scriptcmd>TeXPar()<cr>

  # $...$ text object
  onoremap <silent><buffer> i$ <scriptcmd>normal! T$vt$<cr>
  onoremap <silent><buffer> a$ <scriptcmd>normal! F$vf$<cr>
  vnoremap <buffer> i$ T$ot$
  vnoremap <buffer> a$ F$of$

  for mapping in ['tp', 'i$', 'a$']
    UndoMap(mapping, 'ov')
  endfor
endif

# Commands for asynchronous typesetting
command! -buffer -nargs=? -complete=buffer ConTeXt          context.Typeset(<q-args>)
command! -buffer -nargs=0                  ConTeXtLog       context.Log('%')
command!         -nargs=0                  ConTeXtJobStatus context.JobStatus()
command!         -nargs=0                  ConTeXtStopJobs  context.StopJobs()

# vim: sw=2 fdm=marker