]> Sergey Matveev's repositories - dotfiles.git/blobdiff - vim/.vim/pack/stargrave/start/py-testname/autoload/python/testname.vim
exec won't hurt
[dotfiles.git] / vim / .vim / pack / stargrave / start / py-testname / autoload / python / testname.vim
index 9cc598bf1a6d4d305eb7a190062f1eaccb2243bf..921321a54aa933a7a6ffba031c5a228dbb9d65e8 100644 (file)
@@ -1,22 +1,21 @@
-" Nose-compatible test name preparer
-" Maintainer: Sergey Matveev <stargrave@stargrave.org>
-" License: GNU General Public License version 3 of the License or later
-"
-" When standing inside TestCase's test method, type <leader>t and full
-" Python (your.project.tests:TestCaseName.test_method_name) path will be
-" copied to clipboard ("*) register.
+vim9script
 
-function! python#testname#get() abort
-    normal mm
-    normal ?.*\s*def .*[Tt]est\r
-    normal ^f(Byw
-    let postfix = @"
-    normal [[f(Byw
-    let postfix = @" . "." . postfix
-    normal `m
-    let base = join([""] + split(getcwd(), "/")[:-1], "/")
-    let prefix = substitute(expand("%:p:r")[len(base)+1:], "/", ".", "g")
-    let name = prefix . ":" . postfix
-    let @* = name
+# Nose-compatible test name preparer
+# Maintainer: Sergey Matveev <stargrave@stargrave.org>
+# License: GNU General Public License version 3 of the License or later
+#
+# When standing inside TestCase's test method, type <leader>t and full
+# Python (your.project.tests:TestCaseName.test_method_name) path will be
+# copied to clipboard ("*) register.
+
+export def Get()
+    var pos = getpos(".")
+    var postfix = matchstr(getline(search(".*\s*def .*[Tt]est", "b")), '\w\+(')[: -2]
+    postfix = matchstr(getline(search("^\s*class", "bn")), '\w\+(')[: -2] .. "." .. postfix
+    setpos(".", pos)
+    var base = join([""] + split(getcwd(), "/")[: -1], "/")
+    var prefix = substitute(expand("%:p:r")[len(base) + 1 :], "/", ".", "g")
+    var name = prefix .. ":" .. postfix
+    @* = name
     echomsg name
-endfunction
+enddef