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.

Raspunde prin e-mail lui