Neovim plugin improving access to clipboard history (mirror)
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

refactor(merge changes to init.lua)

+31 -14
+1
lua/yankbank/init.lua
··· 48 48 -- enable persistence based on opts 49 49 -- (needs to be called before autocmd setup) 50 50 persistence.setup(yanks, reg_types, opts) 51 + -- yanks, reg_types = persistence.setup(yanks, reg_types, opts) 51 52 52 53 -- create clipboard autocmds 53 54 clipboard.setup_yank_autocmd(yanks, reg_types, opts)
+30 -14
lua/yankbank/persistence/sql.lua
··· 9 9 -- @param existing_yanks table 10 10 -- @param uri string 11 11 -- @return sqlite_db 12 - local function init_db(existing_yanks, uri) 12 + function M.init_db(existing_yanks, uri) 13 13 local db = sqlite({ 14 14 uri = uri, 15 15 }) ··· 24 24 local status = db:status() 25 25 26 26 if status ~= nil then 27 - print("yankbank db error: " + status.code) 27 + print("yankbank db error: ", status.code) 28 28 end 29 29 -- @TODO: add functionality to add existing yanks to the db table "yanks" 30 30 db:close() ··· 36 36 -- @param yank_content string 37 37 -- @param reg_type string 38 38 -- @return boolean 39 - local function add_to_yanktable(db, yank_content, reg_type) 39 + function M.add_to_yanktable(db, yank_content, reg_type) 40 40 db:open() 41 41 db:insert("yanks", { yank_content = yank_content, reg_type = reg_type }) 42 42 local status = db:status() ··· 48 48 -- @param db sqlite_db 49 49 -- @param yank_content string 50 50 -- @return boolean 51 - local function remove_from_yanktable(db, yank_content) 51 + function M.remove_from_yanktable(db, yank_content) 52 52 db:open() 53 53 db:delete("yanks", { where = { yank_content = yank_content } }) 54 54 local status = db:status() ··· 59 59 -- returns all yanks in table sorted by recency descending 60 60 -- @param db sqlite_db 61 61 -- @return table[] 62 - local function get_yanks(db) 62 + function M.get_yanks(db) 63 63 db:open() 64 64 local ret = db:select("yanks", { order_by = { asc = "id" } }) 65 65 db:close() 66 66 return ret 67 67 end 68 68 69 + function M.remove_by_yank_index(db, index) 70 + db:open() 71 + local ret = db:select("yanks", { order_by = { asc = "id" }}) 72 + local id_to_remove = ret[index].id 73 + local del = db:delete("yanks", { where = { id = id_to_remove } }) 74 + local status = db:status() 75 + db:close() 76 + return status == nil 77 + end 78 + 69 79 -- test function for db operations 70 - -- local function test_db() 71 - -- local test_db = init_db("/tmp/test_yankbank.db") 72 - -- add_to_yanktable(test_db, "Sample Yank", "reg") 73 - -- print(vim.inspect(get_yanks(test_db))) 74 - -- add_to_yanktable(test_db, "Sample Different Yank", "reg") 75 - -- remove_from_yanktable(test_db, "Sample Different Yank") 76 - -- print("after delete") 77 - -- print(vim.inspect(get_yanks(test_db))) 78 - -- end 80 + local function test_db() 81 + local test_db = M.init_db({}, "/tmp/test_yankbank.db") 82 + -- print(vim.inspect(test_db)) 83 + M.add_to_yanktable(test_db, "Sample Yank", "reg") 84 + print(vim.inspect(M.get_yanks(test_db))) 85 + M.add_to_yanktable(test_db, "Sample Different Yank", "reg") 86 + M.remove_from_yanktable(test_db, "Sample Different Yank") 87 + print("after SDY delete") 88 + print(vim.inspect(M.get_yanks(test_db))) 89 + M.remove_by_yank_index(test_db, 2) 90 + print("after index 2 delete") 91 + print(vim.inspect(M.get_yanks(test_db))) 92 + end 93 + 94 + -- test_db() 79 95 80 96 return M