1*11e3c5baSBram Moolenaar" Vim filetype plugin file 2*11e3c5baSBram Moolenaar" Language: Raku 3*11e3c5baSBram Moolenaar" Maintainer: vim-perl <[email protected]> 4*11e3c5baSBram Moolenaar" Homepage: https://github.com/Raku/vim-raku 5*11e3c5baSBram Moolenaar" Bugs/requests: https://github.com/Raku/vim-raku/issues 6*11e3c5baSBram Moolenaar" Last Change: 2021-04-16 7*11e3c5baSBram Moolenaar" Contributors: Hinrik Örn Sigurðsson <[email protected]> 8*11e3c5baSBram Moolenaar" 9*11e3c5baSBram Moolenaar" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com> 10*11e3c5baSBram Moolenaar 11*11e3c5baSBram Moolenaarif exists("b:did_ftplugin") | finish | endif 12*11e3c5baSBram Moolenaarlet b:did_ftplugin = 1 13*11e3c5baSBram Moolenaar 14*11e3c5baSBram Moolenaar" Make sure the continuation lines below do not cause problems in 15*11e3c5baSBram Moolenaar" compatibility mode. 16*11e3c5baSBram Moolenaarlet s:save_cpo = &cpo 17*11e3c5baSBram Moolenaarset cpo-=C 18*11e3c5baSBram Moolenaar 19*11e3c5baSBram Moolenaarsetlocal formatoptions-=t 20*11e3c5baSBram Moolenaarsetlocal formatoptions+=crqol 21*11e3c5baSBram Moolenaarsetlocal keywordprg=p6doc 22*11e3c5baSBram Moolenaar 23*11e3c5baSBram Moolenaarsetlocal comments=:#\|,:#=,:# 24*11e3c5baSBram Moolenaarsetlocal commentstring=#%s 25*11e3c5baSBram Moolenaar 26*11e3c5baSBram Moolenaar" Provided by Ned Konz <ned at bike-nomad dot com> 27*11e3c5baSBram Moolenaar"--------------------------------------------- 28*11e3c5baSBram Moolenaarsetlocal include=\\<\\(use\\\|require\\)\\> 29*11e3c5baSBram Moolenaarsetlocal includeexpr=substitute(v:fname,'::','/','g') 30*11e3c5baSBram Moolenaarsetlocal suffixesadd=.rakumod,.rakudoc,.pm6,.pm 31*11e3c5baSBram Moolenaarsetlocal define=[^A-Za-z_] 32*11e3c5baSBram Moolenaar 33*11e3c5baSBram Moolenaar" The following line changes a global variable but is necessary to make 34*11e3c5baSBram Moolenaar" gf and similar commands work. Thanks to Andrew Pimlott for pointing out 35*11e3c5baSBram Moolenaar" the problem. If this causes a problem for you, add an 36*11e3c5baSBram Moolenaar" after/ftplugin/raku.vim file that contains 37*11e3c5baSBram Moolenaar" set isfname-=: 38*11e3c5baSBram Moolenaarset isfname+=: 39*11e3c5baSBram Moolenaarsetlocal iskeyword=@,48-57,_,192-255,- 40*11e3c5baSBram Moolenaar 41*11e3c5baSBram Moolenaar" Raku exposes its CompUnits through $*REPO, but mapping module names to 42*11e3c5baSBram Moolenaar" compunit paths is nontrivial. Probably it's more convenient to rely on 43*11e3c5baSBram Moolenaar" people using zef, which has a handy store of sources for modules it has 44*11e3c5baSBram Moolenaar" installed. 45*11e3c5baSBram Moolenaarfunc s:compareReverseFtime(a, b) 46*11e3c5baSBram Moolenaar let atime = getftime(a:a) 47*11e3c5baSBram Moolenaar let btime = getftime(a:b) 48*11e3c5baSBram Moolenaar return atime > btime ? -1 : atime == btime ? 0 : 1 49*11e3c5baSBram Moolenaarendfunc 50*11e3c5baSBram Moolenaar 51*11e3c5baSBram Moolenaarlet &l:path = "lib,." 52*11e3c5baSBram Moolenaarif exists('$RAKULIB') 53*11e3c5baSBram Moolenaar let &l:path = &l:path . "," . $RAKULIB 54*11e3c5baSBram Moolenaarendif 55*11e3c5baSBram Moolenaarlet &l:path = &l:path . "," . join( 56*11e3c5baSBram Moolenaar \ sort(glob("~/.zef/store/*/*/lib", 0, 1), "s:compareReverseFtime"), 57*11e3c5baSBram Moolenaar \ ',') 58*11e3c5baSBram Moolenaar 59*11e3c5baSBram Moolenaar" Convert ascii-based ops into their single-character unicode equivalent 60*11e3c5baSBram Moolenaarif get(g:, 'raku_unicode_abbrevs', 0) 61*11e3c5baSBram Moolenaar iabbrev <buffer> !(<) ⊄ 62*11e3c5baSBram Moolenaar iabbrev <buffer> !(<=) ⊈ 63*11e3c5baSBram Moolenaar iabbrev <buffer> !(>) ⊅ 64*11e3c5baSBram Moolenaar iabbrev <buffer> !(>=) ⊉ 65*11e3c5baSBram Moolenaar iabbrev <buffer> !(cont) ∌ 66*11e3c5baSBram Moolenaar iabbrev <buffer> !(elem) ∉ 67*11e3c5baSBram Moolenaar iabbrev <buffer> != ≠ 68*11e3c5baSBram Moolenaar iabbrev <buffer> (&) ∩ 69*11e3c5baSBram Moolenaar iabbrev <buffer> (+) ⊎ 70*11e3c5baSBram Moolenaar iabbrev <buffer> (-) ∖ 71*11e3c5baSBram Moolenaar iabbrev <buffer> (.) ⊍ 72*11e3c5baSBram Moolenaar iabbrev <buffer> (<) ⊂ 73*11e3c5baSBram Moolenaar iabbrev <buffer> (<+) ≼ 74*11e3c5baSBram Moolenaar iabbrev <buffer> (<=) ⊆ 75*11e3c5baSBram Moolenaar iabbrev <buffer> (>) ⊃ 76*11e3c5baSBram Moolenaar iabbrev <buffer> (>+) ≽ 77*11e3c5baSBram Moolenaar iabbrev <buffer> (>=) ⊇ 78*11e3c5baSBram Moolenaar iabbrev <buffer> (\|) ∪ 79*11e3c5baSBram Moolenaar iabbrev <buffer> (^) ⊖ 80*11e3c5baSBram Moolenaar iabbrev <buffer> (atomic) ⚛ 81*11e3c5baSBram Moolenaar iabbrev <buffer> (cont) ∋ 82*11e3c5baSBram Moolenaar iabbrev <buffer> (elem) ∈ 83*11e3c5baSBram Moolenaar iabbrev <buffer> * × 84*11e3c5baSBram Moolenaar iabbrev <buffer> **0 ⁰ 85*11e3c5baSBram Moolenaar iabbrev <buffer> **1 ¹ 86*11e3c5baSBram Moolenaar iabbrev <buffer> **2 ² 87*11e3c5baSBram Moolenaar iabbrev <buffer> **3 ³ 88*11e3c5baSBram Moolenaar iabbrev <buffer> **4 ⁴ 89*11e3c5baSBram Moolenaar iabbrev <buffer> **5 ⁵ 90*11e3c5baSBram Moolenaar iabbrev <buffer> **6 ⁶ 91*11e3c5baSBram Moolenaar iabbrev <buffer> **7 ⁷ 92*11e3c5baSBram Moolenaar iabbrev <buffer> **8 ⁸ 93*11e3c5baSBram Moolenaar iabbrev <buffer> **9 ⁹ 94*11e3c5baSBram Moolenaar iabbrev <buffer> ... … 95*11e3c5baSBram Moolenaar iabbrev <buffer> / ÷ 96*11e3c5baSBram Moolenaar iabbrev <buffer> << « 97*11e3c5baSBram Moolenaar iabbrev <buffer> <<[=]<< «=« 98*11e3c5baSBram Moolenaar iabbrev <buffer> <<[=]>> «=» 99*11e3c5baSBram Moolenaar iabbrev <buffer> <= ≤ 100*11e3c5baSBram Moolenaar iabbrev <buffer> =~= ≅ 101*11e3c5baSBram Moolenaar iabbrev <buffer> >= ≥ 102*11e3c5baSBram Moolenaar iabbrev <buffer> >> » 103*11e3c5baSBram Moolenaar iabbrev <buffer> >>[=]<< »=« 104*11e3c5baSBram Moolenaar iabbrev <buffer> >>[=]>> »=» 105*11e3c5baSBram Moolenaar iabbrev <buffer> Inf ∞ 106*11e3c5baSBram Moolenaar iabbrev <buffer> atomic-add-fetch ⚛+= 107*11e3c5baSBram Moolenaar iabbrev <buffer> atomic-assign ⚛= 108*11e3c5baSBram Moolenaar iabbrev <buffer> atomic-fetch ⚛ 109*11e3c5baSBram Moolenaar iabbrev <buffer> atomic-dec-fetch --⚛ 110*11e3c5baSBram Moolenaar iabbrev <buffer> atomic-fetch-dec ⚛-- 111*11e3c5baSBram Moolenaar iabbrev <buffer> atomic-fetch-inc ⚛++ 112*11e3c5baSBram Moolenaar iabbrev <buffer> atomic-inc-fetch ++⚛ 113*11e3c5baSBram Moolenaar iabbrev <buffer> atomic-sub-fetch ⚛−= 114*11e3c5baSBram Moolenaar iabbrev <buffer> e 115*11e3c5baSBram Moolenaar iabbrev <buffer> o ∘ 116*11e3c5baSBram Moolenaar iabbrev <buffer> pi π 117*11e3c5baSBram Moolenaar iabbrev <buffer> set() ∅ 118*11e3c5baSBram Moolenaar iabbrev <buffer> tau τ 119*11e3c5baSBram Moolenaarendif 120*11e3c5baSBram Moolenaar 121*11e3c5baSBram Moolenaar" Undo the stuff we changed. 122*11e3c5baSBram Moolenaarlet b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< isk< kp< path<" . 123*11e3c5baSBram Moolenaar \ " | unlet! b:browsefilter" 124*11e3c5baSBram Moolenaar 125*11e3c5baSBram Moolenaar" Restore the saved compatibility options. 126*11e3c5baSBram Moolenaarlet &cpo = s:save_cpo 127*11e3c5baSBram Moolenaarunlet s:save_cpo 128