]> Sergey Matveev's repositories - dotfiles.git/commitdiff
More compact Mark
authorSergey Matveev <stargrave@stargrave.org>
Thu, 20 Oct 2022 09:10:12 +0000 (12:10 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 20 Oct 2022 09:10:12 +0000 (12:10 +0300)
vim/.vim/pack/stargrave/start/mark/autoload/mark.vim
vim/.vim/pack/stargrave/start/mark/plugin/mark.vim
vim/.vimrc

index 7a3f33970858532b7f90cc9749ed769f752e668a..640f6cbbc479a75f0acfb5047ea75fe52456cea5 100644 (file)
@@ -20,7 +20,7 @@ hi MarkWord6 ctermfg=Black ctermbg=Blue
 const Offset = 3333
 var Show = false
 var Words: list<string>
-var Cycle = 1
+var Idx = 1
 
 def Init()
     if len(Words) > 0 | return | endif
@@ -34,54 +34,44 @@ def Del(i: number)
     silent! matchdelete(Offset + i + 1)
 enddef
 
-def Add(i: number)
-    matchadd("MarkWord" .. (i + 1), Words[i], -10, Offset + i + 1)
+def Add(i: number, word: string)
+    Words[i] = word
+    matchadd("MarkWord" .. (i + 1), word, -10, Offset + i + 1)
 enddef
 
-export def Update()
+export def Refresh()
     Init()
     var word: string
     for i in range(len(Words))
         exec "syntax clear MarkWord" .. (i + 1)
         if Words[i] == "" | continue | endif
         silent! matchdelete(Offset + i + 1)
-        if Show | Add(i) | endif
+        if Show | Add(i, Words[i]) | endif
     endfor
 enddef
 
 export def Toggle()
     Show = !Show
-    Update()
+    Refresh()
 enddef
 
-def Do(word: string): bool
+def Do(word: string)
     Init()
-    if !Show
-        for i in range(len(Words))
-            if Words[i] == "" | continue | endif
-            Del(i)
-        endfor
-        Show = true
-    endif
     for i in range(len(Words))
-        if word == Words[i]
-            Del(i)
-            return true
+        if !Show | Del(i)
+        elseif Words[i] == word | Del(i) | return
         endif
     endfor
+    if !Show | Show = true | endif
     for i in range(len(Words))
         if Words[i] != "" | continue | endif
-        Del(i)
-        Words[i] = word
-        Add(i)
-        Cycle = ((i + 1) == len(Words)) ? 1 : i + 1
-        return true
+        Add(i, word)
+        Idx = ((i + 1) == len(Words)) ? 1 : (i + 1)
+        return
     endfor
-    Del(Cycle)
-    Words[Cycle] = word
-    Add(Cycle)
-    Cycle = ((Cycle + 1) == len(Words)) ? 1 : Cycle + 1
-    return true
+    Del(Idx)
+    Add(Idx, word)
+    Idx = ((Idx + 1) == len(Words)) ? 1 : (Idx + 1)
 enddef
 
 export def Word()
index 8cb85f12481ad14827cbfa1206a603d3ec0eabbe..f42e02d4c21d6927a4dbce6483baa464541f29e2 100644 (file)
@@ -1,5 +1,3 @@
 if exists("*mark#Word") | finish | endif
-nmap <unique> <silent> <leader>m <Plug>MarkWord
-nnoremap <silent> <Plug>MarkWord :call mark#Word()<CR>
-command! MarkToggle call mark#Toggle()
-autocmd! BufWinEnter,WinEnter * call mark#Update()
+nmap <silent> <leader>m :call mark#Word()<CR>
+autocmd! BufWinEnter,WinEnter * call mark#Refresh()
index 1b85527791e05e8a46f7b8a138b1c8eda7321452..bbed26d34cc13d4a8838736611e49c5c9062a046 100644 (file)
@@ -51,7 +51,7 @@ set smartcase
 set hlsearch
 set incsearch
 set gdefault
-map <F4> :nohlsearch<CR>:MarkToggle<CR>
+map <F4> :nohlsearch<CR>:call mark#Toggle()<CR>
 
 set wildmode=list:longest
 set tags=.tags/**/tags;