vim-patch:fc533c9: 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: vim/vim#15171

fc533c9f06

Co-authored-by: Riley Bruins <ribru17@hotmail.com>
This commit is contained in:
Christian Clason 2024-07-11 22:55:26 +02:00
parent f4beab7ad8
commit 26d5253805
2 changed files with 47 additions and 0 deletions

41
runtime/ftplugin/mojo.vim Normal file
View 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
View 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