FILE: C:\Program Files\Git\usr\share\vim\vim91\ftplugin\raku.vim
--
" Vim filetype plugin file
" Language: Raku
" Maintainer: vim-perl
" Homepage: https://github.com/Raku/vim-raku
" Bugs/requests: https://github.com/Raku/vim-raku/issues
" Last Change: 2021 Apr 16
" 2024 May 23 by Riley Bruins ('commentstring')
" Contributors: Hinrik Örn Sigurðsson
"
" Based on ftplugin/perl.vim by Dan Sharp
if exists("b:did_ftplugin") | finish | endif
let b:did_ftplugin = 1
" Make sure the continuation lines below do not cause problems in
" compatibility mode.
let s:save_cpo = &cpo
set cpo-=C
setlocal formatoptions-=t
setlocal formatoptions+=crqol
setlocal keywordprg=p6doc
setlocal comments=:#\|,:#=,:#
setlocal commentstring=#\ %s
" Provided by Ned Konz
"---------------------------------------------
setlocal include=\\<\\(use\\\|require\\)\\>
setlocal includeexpr=substitute(v:fname,'::','/','g')
setlocal suffixesadd=.rakumod,.rakudoc,.pm6,.pm
setlocal define=[^A-Za-z_]
" The following line changes a global variable but is necessary to make
" gf and similar commands work. Thanks to Andrew Pimlott for pointing out
" the problem. If this causes a problem for you, add an
" after/ftplugin/raku.vim file that contains
" set isfname-=:
set isfname+=:
setlocal iskeyword=@,48-57,_,192-255,-
" Raku exposes its CompUnits through $*REPO, but mapping module names to
" compunit paths is nontrivial. Probably it's more convenient to rely on
" people using zef, which has a handy store of sources for modules it has
" installed.
func s:compareReverseFtime(a, b)
let atime = getftime(a:a)
let btime = getftime(a:b)
return atime > btime ? -1 : atime == btime ? 0 : 1
endfunc
let &l:path = "lib,."
if exists('$RAKULIB')
let &l:path = &l:path . "," . $RAKULIB
endif
let &l:path = &l:path . "," . join(
\ sort(glob("~/.zef/store/*/*/lib", 0, 1), "s:compareReverseFtime"),
\ ',')
" Convert ascii-based ops into their single-character unicode equivalent
if get(g:, 'raku_unicode_abbrevs', 0)
iabbrev !(<) ⊄
iabbrev !(<=) ⊈
iabbrev !(>) ⊅
iabbrev !(>=) ⊉
iabbrev !(cont) ∌
iabbrev !(elem) ∉
iabbrev != ≠
iabbrev (&) ∩
iabbrev (+) ⊎
iabbrev (-) ∖
iabbrev (.) ⊍
iabbrev (<) ⊂
iabbrev (<+) ≼
iabbrev (<=) ⊆
iabbrev (>) ⊃
iabbrev (>+) ≽
iabbrev (>=) ⊇
iabbrev (\|) ∪
iabbrev (^) ⊖
iabbrev (atomic) ⚛
iabbrev (cont) ∋
iabbrev (elem) ∈
iabbrev * ×
iabbrev **0 ⁰
iabbrev **1 ¹
iabbrev **2 ²
iabbrev **3 ³
iabbrev **4 ⁴
iabbrev **5 ⁵
iabbrev **6 ⁶
iabbrev **7 ⁷
iabbrev **8 ⁸
iabbrev **9 ⁹
iabbrev ... …
iabbrev / ÷
iabbrev << «
iabbrev <<[=]<< «=«
iabbrev <<[=]>> «=»
iabbrev <= ≤
iabbrev =~= ≅
iabbrev >= ≥
iabbrev >> »
iabbrev >>[=]<< »=«
iabbrev >>[=]>> »=»
iabbrev Inf ∞
iabbrev atomic-add-fetch ⚛+=
iabbrev atomic-assign ⚛=
iabbrev atomic-fetch ⚛
iabbrev atomic-dec-fetch --⚛
iabbrev atomic-fetch-dec ⚛--
iabbrev atomic-fetch-inc ⚛++
iabbrev atomic-inc-fetch ++⚛
iabbrev atomic-sub-fetch ⚛−=
iabbrev e 𝑒
iabbrev o ∘
iabbrev pi π
iabbrev set() ∅
iabbrev tau τ
endif
" Undo the stuff we changed.
let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< isk< kp< path<" .
\ " | unlet! b:browsefilter"
" Restore the saved compatibility options.
let &cpo = s:save_cpo
unlet s:save_cpo
--