neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

racket.vim (3430B)


      1 " Vim indent file
      2 " Language:             Racket
      3 " Maintainer:           D. Ben Knoble <ben.knoble+github@gmail.com>
      4 " Previous Maintainer:  Will Langstroth <will@langstroth.com>
      5 " URL:                  https://github.com/benknoble/vim-racket
      6 " Last Change:          2025 Aug 09
      7 
      8 if exists("b:did_indent")
      9   finish
     10 endif
     11 let b:did_indent = 1
     12 
     13 setlocal lisp autoindent nosmartindent
     14 if has('vim9script')
     15  setlocal indentexpr=racket#Indent() lispoptions+=expr:1
     16 endif
     17 
     18 setlocal lispwords+=module,module*,module+,parameterize,parameterize*,let-values,let*-values,letrec-values,local
     19 setlocal lispwords+=splicing-let,splicing-letrec,splicing-let-values,splicing-letrec-values,splicing-local,splicing-parameterize
     20 setlocal lispwords+=define/contract
     21 setlocal lispwords+=λ
     22 setlocal lispwords+=with-handlers
     23 setlocal lispwords+=define-values,opt-lambda,case-lambda,syntax-rules,with-syntax,syntax-case,syntax-parse
     24 setlocal lispwords+=define-for-syntax,define-syntax-parser,define-syntax-parse-rule,define-syntax-class,define-splicing-syntax-class
     25 setlocal lispwords+=syntax/loc,quasisyntax/loc
     26 setlocal lispwords+=define-syntax-parameter,syntax-parameterize
     27 setlocal lispwords+=define-signature,unit,unit/sig,compund-unit/sig,define-values/invoke-unit/sig
     28 setlocal lispwords+=define-opt/c,define-syntax-rule
     29 setlocal lispwords+=define-test-suite,test-case
     30 setlocal lispwords+=struct
     31 setlocal lispwords+=with-input-from-file,with-output-to-file
     32 setlocal lispwords+=begin,begin0
     33 setlocal lispwords+=place
     34 setlocal lispwords+=cond
     35 " Racket style indents if like a function application:
     36 " (if test
     37 "     then
     38 "     else)
     39 setlocal lispwords-=if
     40 
     41 " Racket OOP
     42 " TODO missing a lot of define-like forms here (e.g., define/augment, etc.)
     43 setlocal lispwords+=class,class*,mixin,interface,class/derived
     44 setlocal lispwords+=define/public,define/pubment,define/public-final
     45 setlocal lispwords+=define/override,define/overment,define/override-final
     46 setlocal lispwords+=define/augment,define/augride,define/augment-final
     47 setlocal lispwords+=define/private
     48 
     49 " kanren
     50 setlocal lispwords+=fresh,run,run*,project,conde,condu
     51 
     52 " loops
     53 setlocal lispwords+=for,for/list,for/fold,for*,for*/list,for*/fold,for/or,for/and,for*/or,for*/and
     54 setlocal lispwords+=for/hash,for/hasheq,for/hasheqv,for/sum,for/flvector,for*/flvector,for/vector,for*/vector,for/fxvector,for*/fxvector,for*/sum,for*/hash,for*/hasheq,for*/hasheqv
     55 setlocal lispwords+=for/async
     56 setlocal lispwords+=for/set,for*/set
     57 setlocal lispwords+=for/first,for*/first
     58 setlocal lispwords+=for/last,for*/last
     59 setlocal lispwords+=for/stream,for*/stream
     60 setlocal lispwords+=for/lists,for*/lists
     61 
     62 setlocal lispwords+=match,match*,match/values,define/match,match-lambda,match-lambda*,match-lambda**
     63 setlocal lispwords+=match-let,match-let*,match-let-values,match-let*-values
     64 setlocal lispwords+=match-letrec,match-define,match-define-values
     65 
     66 setlocal lispwords+=let/cc,let/ec
     67 
     68 " qi
     69 setlocal lispwords+=define-flow,define-switch,flow-lambda,switch-lambda,on,switch,π,λ01
     70 setlocal lispwords+=define-qi-syntax,define-qi-syntax-parser,define-qi-syntax-rule
     71 
     72 " gui-easy
     73 setlocal lispwords+=if-view,case-view,cond-view,list-view,dyn-view
     74 setlocal lispwords+=case/dep
     75 setlocal lispwords+=define/obs
     76 
     77 " rackunit
     78 setlocal lispwords+=define-simple-check,define-binary-check,define-check,with-check-info
     79 
     80 let b:undo_indent = "setlocal lisp< ai< si< lw<" .. (has('vim9script') ? ' indentexpr< lispoptions<' : '')