runtime(mojo): include mojo ftplugin and indent script Commit: https://github.com/vim/vim/commit/fc533c9f06aff579437f9f2348a21241a72c7967 Author: Riley Bruins <ribr...@hotmail.com> Date: Thu Jul 11 22:50:36 2024 +0200
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 <ribr...@hotmail.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/.github/MAINTAINERS b/.github/MAINTAINERS index e8c864783..ae5ba4697 100644 --- a/.github/MAINTAINERS +++ b/.github/MAINTAINERS @@ -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 diff --git a/runtime/ftplugin/mojo.vim b/runtime/ftplugin/mojo.vim new file mode 100644 index 000000000..ff5022993 --- /dev/null +++ b/runtime/ftplugin/mojo.vim @@ -0,0 +1,41 @@ +" Vim filetype plugin +" Language: Mojo +" Maintainer: Riley Bruins <ribr...@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 = ' / ' + +setlocal includeexpr=substitute(substitute(substitute( + :fname, + :grandparent_match,b:grandparent_sub,''), + :parent_match,b:parent_sub,''), + :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<' diff --git a/runtime/indent/mojo.vim b/runtime/indent/mojo.vim new file mode 100644 index 000000000..9b6a7d4c5 --- /dev/null +++ b/runtime/indent/mojo.vim @@ -0,0 +1,6 @@ +" Vim indent file +" Language: Mojo +" Maintainer: Riley Bruins <ribr...@gmail.com> +" Last Change: 2024 Jul 07 + +runtime! indent/python.vim -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_dev/E1sS0tb-000U99-U9%40256bit.org.