summary refs log tree commit diff
path: root/.vim/lua
diff options
context:
space:
mode:
Diffstat (limited to '.vim/lua')
-rw-r--r--.vim/lua/misc.lua38
1 files changed, 31 insertions, 7 deletions
diff --git a/.vim/lua/misc.lua b/.vim/lua/misc.lua
index 31663a9..14d5d7a 100644
--- a/.vim/lua/misc.lua
+++ b/.vim/lua/misc.lua
@@ -46,12 +46,12 @@ function M.open_under_cursor(cmd, detect_cmd)
   end)
 end
 
-function get_visual_selection()
-  pos1 = vim.fn.getpos("'<")
-  ln1, col1 = pos1[2], pos1[3]
-  pos2 = vim.fn.getpos("'>")
-  ln2, col2 = pos2[2], pos2[3]
-  lines = vim.fn.getline(ln1, ln2)
+local function get_visual_selection()
+  local pos1 = vim.fn.getpos("'<")
+  local ln1, col1 = pos1[2], pos1[3]
+  local pos2 = vim.fn.getpos("'>")
+  local ln2, col2 = pos2[2], pos2[3]
+  local lines = vim.fn.getline(ln1, ln2)
   if vim.opt.selection:get() == 'inclusive' then
     lines[#lines] = lines[#lines]:sub(1,col2)
   else
@@ -63,7 +63,7 @@ end
 
 function M.sort_line()
   local fn = vim.fn
-  pos1, pos2, lines = get_visual_selection()
+  local pos1, _, lines = get_visual_selection()
   for i=1, #lines do
     local ln = pos1[2] + (i-1)
     local line = fn.join(fn.sort(fn.split(lines[i], " ")))
@@ -90,6 +90,30 @@ function M.find_files(dirs)
   }
 end
 
+function M.fold_block() -- {{{
+  local Comment = require('Comment.api')
+  local m = vim.api.nvim_buf_get_mark
+  local inital_cusor_pos = vim.api.nvim_win_get_cursor(0)
+  local spos, epos = m(0, '<'), m(0, '>')
+
+  -- do start of selection
+  vim.api.nvim_win_set_cursor(0, spos)
+  Comment.insert_linewise_eol()
+  vim.api.nvim_feedkeys('\\<esc>', 'ni', true)
+  local sln = vim.api.nvim_get_current_line()
+  vim.api.nvim_set_current_line(sln .. '{{{')
+
+  -- do end of selection
+  vim.api.nvim_win_set_cursor(0, epos)
+  Comment.insert_linewise_eol()
+  vim.api.nvim_feedkeys('\\<esc>', 'ni', true)
+  local eln = vim.api.nvim_get_current_line()
+  vim.api.nvim_set_current_line(eln .. '}}}')
+
+  -- restore initial cursor postition
+  vim.api.nvim_win_set_cursor(0, inital_cusor_pos)
+end -- }}}
+
 local function render_link_preview(buf, ln, link)
   local j = require('plenary.job'):new({
     command = vim.env.SHELL,