mirror of
https://github.com/vim/vim
synced 2025-07-15 16:51:57 +00:00
runtime(mojo): include mojo ftplugin and indent script
Taken from excerpts of the Python ftplugin and adapted, indent script simply sources the python indent script. closes: #15171 Signed-off-by: Riley Bruins <ribru17@hotmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
a20bf69a3b
commit
fc533c9f06
2
.github/MAINTAINERS
vendored
2
.github/MAINTAINERS
vendored
@ -202,6 +202,7 @@ runtime/ftplugin/markdown.vim @tpope
|
||||
runtime/ftplugin/meson.vim @Liambeguin
|
||||
runtime/ftplugin/modula2.vim @dkearns
|
||||
runtime/ftplugin/modula3.vim @dkearns
|
||||
runtime/ftplugin/mojo.vim @ribru17
|
||||
runtime/ftplugin/nginx.vim @chr4
|
||||
runtime/ftplugin/nim.vim @ribru17
|
||||
runtime/ftplugin/nroff.vim @a-vrma
|
||||
@ -323,6 +324,7 @@ runtime/indent/lua.vim @marcuscf
|
||||
runtime/indent/make.vim @dkearns
|
||||
runtime/indent/meson.vim @Liambeguin
|
||||
runtime/indent/mma.vim @dkearns
|
||||
runtime/indent/mojo.vim @ribru17
|
||||
runtime/indent/nginx.vim @chr4
|
||||
runtime/indent/nsis.vim @k-takata
|
||||
runtime/indent/occam.vim @dkearns
|
||||
|
41
runtime/ftplugin/mojo.vim
Normal file
41
runtime/ftplugin/mojo.vim
Normal file
@ -0,0 +1,41 @@
|
||||
" 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<'
|
6
runtime/indent/mojo.vim
Normal file
6
runtime/indent/mojo.vim
Normal file
@ -0,0 +1,6 @@
|
||||
" Vim indent file
|
||||
" Language: Mojo
|
||||
" Maintainer: Riley Bruins <ribru17@gmail.com>
|
||||
" Last Change: 2024 Jul 07
|
||||
|
||||
runtime! indent/python.vim
|
Reference in New Issue
Block a user