From 846813e174b8a42ace40bddaf3d64d8ead63b874 Mon Sep 17 00:00:00 2001 From: sefidel Date: Fri, 11 Feb 2022 00:38:15 +0900 Subject: feat(pack)!: migrate to fzf-lua --- fnl/nvrc/utils.fnl | 124 +++++++++++++++++++---------------------------------- 1 file changed, 43 insertions(+), 81 deletions(-) (limited to 'fnl/nvrc/utils.fnl') diff --git a/fnl/nvrc/utils.fnl b/fnl/nvrc/utils.fnl index 6812c0c..52ca454 100644 --- a/fnl/nvrc/utils.fnl +++ b/fnl/nvrc/utils.fnl @@ -19,15 +19,15 @@ the previous value as the first arg. Starting with init." (var result init) (run! (fn [x] - (set result (f result x))) xs) + (set result (f result x))) xs) result) (fn merge! [base ...] (reduce (fn [acc m] - (when m - (each [k v (pairs m)] - (tset acc k v))) - acc) (or base {}) [...])) + (when m + (each [k v (pairs m)] + (tset acc k v))) + acc) (or base {}) [...])) (fn merge [...] (merge! {} ...)) @@ -37,91 +37,53 @@ (let [lsp (. (vim.lsp.util.get_progress_messages) 1)] (when lsp (let [msg (or lsp.message "") - percentage (or lsp.percentage 0) - title (or lsp.title "") - spinners {1"⠋" 2 "⠙" 3 "⠹" 4 "⠸" 5 "⠼" 6 "⠴" 7 "⠦" 8 "⠧" 9 "⠇" 10 "⠏"} - success-icon "^.^!" - ms (/ (vim.loop.hrtime) 1000000) - frame (% (math.floor (/ ms 120)) (length spinners))] - (when (>= percentage 70) + percentage (or lsp.percentage 0) + title (or lsp.title "") + spinners {1 "⠋" + 2 "⠙" + 3 "⠹" + 4 "⠸" + 5 "⠼" + 6 "⠴" + 7 "⠦" + 8 "⠧" + 9 "⠇" + 10 "⠏"} + success-icon "^.^!" + ms (/ (vim.loop.hrtime) 1000000) + frame (% (math.floor (/ ms 120)) (length spinners))] + (when (>= percentage 70) + (let [ertn [(string.format " %%<%s %s %s (%s%%%%) " success-icon + title msg percentage)]] + (lua "return (table.unpack or _G.unpack)(ertn)"))) (let [ertn [(string.format " %%<%s %s %s (%s%%%%) " - success-icon - title msg - percentage)]] - (lua "return (table.unpack or _G.unpack)(ertn)"))) - (let [ertn [(string.format " %%<%s %s %s (%s%%%%) " - (. spinners - (+ frame 1)) - title msg - percentage)]] - (lua "return (table.unpack or _G.unpack)(ertn)"))))) "") + (. spinners (+ frame 1)) title msg percentage)]] + (lua "return (table.unpack or _G.unpack)(ertn)"))))) + "") (fn will_it_fit [width winid] "Returns whether this module will fit in the given width" (> (vim.api.nvim_win_get_width (or (tonumber winid) 0)) width)) -(fn close_buf [force] - "ojroques/nvim-bufdel 'BSD-2'" - (let [opts {:next :cycle :quit false}] - (fn switch-buffer [windows buf] - (let [cur-win (vim.fn.winnr)] - (each [_ winid (ipairs windows)] - (set-forcibly! winid (or (tonumber winid) 0)) - (vim.cmd (string.format "%d wincmd w" (vim.fn.win_id2win winid))) - (vim.cmd (string.format "buffer %d" buf))) - (vim.cmd (string.format "%d wincmd w" cur-win)))) - - (fn get-next-buf [buf] - (var next (vim.fn.bufnr "#")) - (when (and (= opts.next :alternate) (= (vim.fn.buflisted next) 1)) - (lua "return next")) - (for [i 0 (- (vim.fn.bufnr "$") 1) 1] - (set next (+ (% (+ buf i) (vim.fn.bufnr "$")) 1)) - (when (= (vim.fn.buflisted next) 1) - (lua "return next")))) - - (local buf (vim.fn.bufnr)) - (when (= (vim.fn.buflisted buf) 0) - (vim.cmd :close) +(fn del_buf [] + (let [buflisted (vim.fn.getbufinfo {:buflisted 1}) + (cur-winnr cur-bufnr) (values (vim.fn.winnr) (vim.fn.bufnr))] + (when (< (length buflisted) 2) + (vim.cmd "confirm qall") (lua "return ")) - (when (< (length (vim.fn.getbufinfo {:buflisted 1})) 2) - (when opts.quit - (if force (vim.cmd :qall!) (vim.cmd "confirm qall")) - (lua "return ")) - (local (term _) - (pcall (fn [] - (vim.api.nvim_buf_get_var buf :term_type)))) - (when term - (vim.cmd (string.format "setlocal nobl" buf)) - (vim.cmd :enew) - (lua "return ")) - (vim.cmd :enew) - (vim.cmd :bp)) - (local next-buf (get-next-buf buf)) - (local windows (. (. (vim.fn.getbufinfo buf) 1) :windows)) - (if (or force (= (vim.fn.getbufvar buf :&buftype) :terminal)) - (let [(term type) (pcall (fn [] - (vim.api.nvim_buf_get_var buf :term_type)))] - (if term - (if (= type :wind) - (do - (vim.cmd (string.format "%d bufdo setlocal nobl" buf)) - (vim.cmd :BufferLineCycleNext)) - (let [cur-win (vim.fn.winnr)] - (vim.cmd (string.format "%d wincmd c" cur-win)) - (lua "return "))) - (do - (switch-buffer windows next-buf) - (vim.cmd (string.format "bd! %d" buf))))) - (do - (switch-buffer windows next-buf) - (vim.cmd (string.format "silent! confirm bd %d" buf)))) - (when (= (vim.fn.buflisted buf) 1) - (switch-buffer windows buf)))) + (each [_ winid (ipairs (. (. (vim.fn.getbufinfo cur-bufnr) 1) :windows))] + (vim.cmd (string.format "%d wincmd w" (vim.fn.win_id2win winid))) + (vim.cmd (or (and (= cur-bufnr (. (. buflisted (length buflisted)) :bufnr)) + :bp) :bn))) + (vim.cmd (string.format "%d wincmd w" cur-winnr)) + (local is-terminal (= (vim.fn.getbufvar cur-bufnr :&buftype) :terminal)) + (vim.cmd (or (and is-terminal "bd! #") "silent! confirm bd #")))) (fn defer_unpack [pack after] (when pack (set-forcibly! after (or after 0)) - (vim.defer_fn (fn [] ((. (require :packer) :loader) pack)) after))) + (vim.defer_fn (fn [] + ((. (require :packer) :loader) pack)) + after))) -{: merge : lsp_fidget : will_it_fit : close_buf : defer_unpack} +{: merge : lsp_fidget : will_it_fit : del_buf : defer_unpack} -- cgit 1.4.1