mirror of
https://github.com/neovim/neovim.git
synced 2024-12-20 03:05:11 -07:00
42 lines
1.2 KiB
VimL
42 lines
1.2 KiB
VimL
|
" Vim filetype plugin
|
||
|
" Language: Mojo
|
||
|
" Maintainer: Riley Bruins <ribru17@gmail.com>
|
||
|
" Last Change: 2024 Jul 07
|
||
|
|
||
|
if exists('b:did_ftplugin')
|
||
|
finish
|
||
|
endif
|
||
|
let b:did_ftplugin = 1
|
||
|
|
||
|
setlocal include=^\\s*\\(from\\\|import\\)
|
||
|
setlocal define=^\\s*\\(\\(async\\s\\+\\)\\?def\\\|class\\)
|
||
|
|
||
|
" For imports with leading .., append / and replace additional .s with ../
|
||
|
let b:grandparent_match = '^\(.\.\)\(\.*\)'
|
||
|
let b:grandparent_sub = '\=submatch(1)."/".repeat("../",strlen(submatch(2)))'
|
||
|
|
||
|
" For imports with a single leading ., replace it with ./
|
||
|
let b:parent_match = '^\.\(\.\)\@!'
|
||
|
let b:parent_sub = './'
|
||
|
|
||
|
" Replace any . sandwiched between word characters with /
|
||
|
let b:child_match = '\(\w\)\.\(\w\)'
|
||
|
let b:child_sub = '\1/\2'
|
||
|
|
||
|
setlocal includeexpr=substitute(substitute(substitute(
|
||
|
\v:fname,
|
||
|
\b:grandparent_match,b:grandparent_sub,''),
|
||
|
\b:parent_match,b:parent_sub,''),
|
||
|
\b:child_match,b:child_sub,'g')
|
||
|
|
||
|
setlocal suffixesadd=.mojo
|
||
|
setlocal comments=b:#,fb:-
|
||
|
setlocal commentstring=#\ %s
|
||
|
|
||
|
let b:undo_ftplugin = 'setlocal include<'
|
||
|
\ . '|setlocal define<'
|
||
|
\ . '|setlocal includeexpr<'
|
||
|
\ . '|setlocal suffixesadd<'
|
||
|
\ . '|setlocal comments<'
|
||
|
\ . '|setlocal commentstring<'
|