summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorMohit <mohit.agarwal@sky.com>2024-11-02 17:08:32 +0000
committerMohit <mohit.agarwal@sky.com>2024-11-02 17:08:32 +0000
commit5d4f245be2cbcfc89357c10bc8f3a7139949cba3 (patch)
tree8030bce528116d0ced4d2ea8eace61a88b86342f /autoload
parent11adb05da19b177e7bf561378f565713e271a9f7 (diff)
Scimark
Diffstat (limited to 'autoload')
-rw-r--r--autoload/scimark.vim75
1 files changed, 75 insertions, 0 deletions
diff --git a/autoload/scimark.vim b/autoload/scimark.vim
new file mode 100644
index 0000000..10b644e
--- /dev/null
+++ b/autoload/scimark.vim
@@ -0,0 +1,75 @@
+" https://github.com/mipmip/vim-scimark/blob/master/plugin/scimark.vim
+"
+
+function! InitVariable(var, value)
+ if !exists(a:var)
+ exec 'let ' . a:var . ' = ' . "'" . a:value . "'"
+ return 1
+ endif
+ return 0
+endfunction
+
+call InitVariable("g:scimCommand", "sc-im")
+
+function! OpenInScim()
+ let lineundercursor=getline('.')
+ let curlinenumber = line('.')
+
+ if lineundercursor=~?'|.*|$'
+
+ while lineundercursor=~?'|.*|$'
+ let curlinenumber = curlinenumber -1
+ let lineundercursor=getline(curlinenumber)
+ endwhile
+
+ let lineundercursor=getline(curlinenumber+1)
+ let g:scimarkTableTopLine = curlinenumber+1
+ let fileLines = []
+
+ while lineundercursor=~?'|.*|$'
+ let curlinenumber = curlinenumber + 1
+ let lineundercursor = getline(curlinenumber)
+ call add(fileLines, lineundercursor)
+ endwhile
+
+ let g:scimarkTempFile = tempname() . '.md'
+ let g:scimarkOpenerBuffer = bufnr("%")
+ let g:scimarkOpenerFile = expand("%")
+ let g:scimarkTableBottonLine = curlinenumber-1
+ let g:scimarkOpenerWindow = winnr()
+
+ if writefile(fileLines, g:scimarkTempFile)
+ echomsg 'write error'
+ else
+ if has('nvim')
+ exe 'split(:sp)'
+ call termopen(g:scimCommand . ' ' . g:scimarkTempFile, { 'on_exit': 'g:ReadFromScimNeoVim', 'on_stdout': 'NeoVimStartInsert'})
+ else
+ call term_start(g:scimCommand . ' ' . g:scimarkTempFile, { 'exit_cb': function('g:ReadFromScimVim')})
+ endif
+ endif
+ endif
+
+endfunction
+
+function! g:ReadFromScimVim(job,exit_code)
+ call g:ReadFromScim()
+endfunction
+
+function! g:NeoVimStartInsert(job,data,event)
+ exe 'startinsert'
+endfunction
+function! g:ReadFromScimNeoVim(job,data,event)
+ call g:ReadFromScim()
+endfunction
+
+function! g:ReadFromScim()
+ exe g:scimarkOpenerWindow . "wincmd w | wincmd c"
+ exe 'buffer! '. g:scimarkOpenerBuffer
+ exe g:scimarkTableTopLine.','.g:scimarkTableBottonLine.'d'
+ call cursor(g:scimarkTableTopLine-1,0)
+ exe 'r '.g:scimarkTempFile
+endfunction
+
+command! OpenInScim :call OpenInScim()
+nmap <leader>sc :OpenInScim<CR>