diff --git a/init.lua b/init.lua index 688fd9da..da46b168 100644 --- a/init.lua +++ b/init.lua @@ -1,13 +1,18 @@ -- Need original init.lua ? use *.BAK -- --- tmux -- ~/.tmux.conf +-- 2023-11-08 +-- separate luansip.lua file +-- -- main config file require 'jim.config' -- lua/jim/config.lua require 'jim.keymaps' -- lua/jim/keymaps.lua require 'jim.settings' -- lua/jim/settings.lua +require 'jim.luasnip' -- lua/jim/luasnip.lua +--------------------- +-- other config files +--------------------- +-- tmux -- ~/.tmux.conf -- ~/.config/kickstart/skeleton/skeleton.qmd --- - -- vim: ts=2 sts=2 sw=2 et diff --git a/lua/jim/config.lua b/lua/jim/config.lua index 77115c03..8330087c 100644 --- a/lua/jim/config.lua +++ b/lua/jim/config.lua @@ -1,5 +1,4 @@ -print(' this is ./lua/init.lua') -- - +-- config.lua -- Set as the leader key -- See `:help mapleader` -- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) @@ -124,7 +123,6 @@ require('lazy').setup({ }, -- hardtime.nvim (nvim advice?) 2023-09-03 - -- { 'm4xshen/hardtime.nvim', dependencies = { 'MunifTanjim/nui.nvim', 'nvim-lua/plenary.nvim' }, @@ -369,8 +367,11 @@ require('lspconfig').lua_ls.setup { -- {{{ }, } -- }}} +----------------- +-- TELESCOPE -- [[ Configure Telescope ]] -- See `:help telescope` and `:help telescope.setup()` +----------------- require('telescope').setup { defaults = { mappings = { @@ -406,9 +407,10 @@ vim.keymap.set('n', 'sw', require('telescope.builtin').grep_string, { de vim.keymap.set('n', 'sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', 'sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' }) +--------------------------------- -- [[ Configure Treesitter ]] --- -- See `:help nvim-treesitter`{{{ +--------------------------------- -- -- Defer Treesitter setup after first render to improve startup time of 'nvim {filename}' vim.defer_fn(function() @@ -493,14 +495,10 @@ vim.cmd [[ highlight StatusLineNC cterm=bold ctermfg=white ctermbg=darkgray ]] --- Diagnostic keymaps -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) -vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) -vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) +---------------------- -- [[ Configure LSP ]] --- +---------------------- -- This function gets run when an LSP connects to a particular buffer. local on_attach = function(_, bufnr) -- NOTE: Remember that lua is a real programming language, and as such it is possible @@ -605,38 +603,6 @@ mason_lspconfig.setup_handlers { end, } --- --- LUASNIP -local luasnip = require 'luasnip' -local ls = require 'luasnip' -local s = ls.snippet -local sn = ls.snippet_node -local isn = ls.indent_snippet_node -local t = ls.text_node -local f = ls.function_node --- HELPER -local filename = function() - return { vim.fn.expand '%:p' } -end - --- SNIPS -ls.add_snippets('all', { -- `all` all filetypes, `lua` only lua ft - s('luaxx', { t 'this is lua file!' }), - s('sep', t { '---------------' }), - - -- snip: add file's filename - s({ - trig = "filename", - namr = "Filename", - dscr = "insert file name", - }, { - f(filename, {}), - }), -}) ---------------- --- next line: allows use of snippet collection in vscode (??) -require('luasnip.loaders.from_vscode').lazy_load() -luasnip.config.setup {} -- nvim-cmp configuration -- [[ Configure hrsh7th nvim-cmp ]] diff --git a/lua/jim/keymaps.lua b/lua/jim/keymaps.lua index fea8c690..e9ea73c5 100644 --- a/lua/jim/keymaps.lua +++ b/lua/jim/keymaps.lua @@ -4,31 +4,60 @@ -- Keymaps for better default experience -- See `:help vim.keymap.set()` vim.keymap.set({ 'n', 'v' }, '', '', { silent = true }) -vim.keymap.set({ 'n', 'v' }, 'q', '', { silent = true }) +vim.keymap.set({ 'n', 'v' }, 'q', '', { desc = "", silent = true }) + + +-------------------------- +-- EXPERIMENTAL +-------------------------- +local map = vim.keymap.set +-- not working +map( + "n", + "cd", + "cd! %:h", + { desc = "cd to current buffer path" } +) + +-- works +map("n", "..", "cd! ..", { desc = "cd up a level" }) +-------------------------- +-------------------------- + + -- REF: https://nanotipsforvim.prose.sh/keeping-your-register-clean-from-dd --- if dd action holds content: keep it --- if dd action holds BLANK LINE: sent to black hole _dd +-- By default, action dd stores in reg ?? +-- If you then dd on blank line "" replaces content in reg ?? +-- So, if dd action holds content: keep it (don't replace) +-- if dd action holds BLANK LINE: sent to black hole _dd (discard it) vim.keymap.set("n", "dd", function() if vim.fn.getline(".") == "" then return '"_dd' end return "dd" end, { expr = true }) + -- vim.keymap.set( {'n', ']nc', -- Remap for dealing with word wrap -- jr 2023-10-07 Not cause of sticky line -vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) -vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) +--vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) +--vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) vim.keymap.set('n', '', 'zz', { desc = 'Move Up, center' }) vim.keymap.set('n', '', 'zz', { desc = 'Move Down, center' }) -- vim.keymap.set('n', 'ck', ':e ~/.config/kickstart/init.lua', { desc = 'Config Kickstart' }) -vim.keymap.set('n', 'tn', ':e ~/code/docs/tech_notes/300_tech_notes.qmd', { desc = 'Tech Notes' }) -vim.keymap.set('n', 'mln', ':e ~/code/docs/tech_notes/500_ML_Notes.qmd', { desc = 'ML Notes' }) vim.keymap.set('n', 'bw', 'i**Ea**w', { desc = "[B]old [W]ord" }) -- insert # --------... vim.keymap.set("n", "ic", "yypVr-I# ", { desc = "[ic]insert comment line" }) +--------------------- +-- Diagnostic keymaps +--------------------- +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) +vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) +vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) + ------------------------------------------------------ -- which-key ------------------------------------------------------ @@ -52,26 +81,46 @@ wk.setup { g = false, }, }, + show_help = true, -- (default) show a help message in the command line for using WhichKey + key_labels = { + -- override the label used to display some keys. It doesn't effect WK in any other way. + -- For example: + [""] = "SPACE", + ["n"] = "notes", + -- [""] = "RET", + -- [""] = "TAB", + }, } local mappings = { -- g is an experiment and duplicates done elsewhere g = { name = "temp file", + -- checkhealth, gb, gc are conflicts f = { "Telescope find_files", "Find File" }, -- create a binding with label g = { "Telescope live_grep", "Full Text Search" }, b = { "Telescope buffers", "Buffers" }, q = { "q", 'Quit - no warn' }, }, + n = { + name = "my notes", + t = { "e ~/code/docs/tech_notes/300_tech_notes.qmd", "[T]ech [Notes]" }, + m = { "e ~/code/docs/tech_notes/500_ML_Notes.qmd", "[M]L [Notes]" }, + a = { "cd ~/code/docs/ALZ/", "cd [A]LZ [Notes]" }, + + --vim.keymap.set('n', 'tn', ':e ~/code/docs/tech_notes/300_tech_notes.qmd', { desc = 'Tech Notes' }) + --vim.keymap.set('n', 'mln', ':e ~/code/docs/tech_notes/500_ML_Notes.qmd', { desc = 'ML Notes' }) + }, t = { name = "telescope", - f = { "Telescope find_files", "Find File" }, -- create a binding with label - z = { "Telescope find_files", "Find File", desc = "Search Home", pwd = '/home/jim' }, -- create a binding with label + f = { "Telescope find_files", "Find File" }, -- create a binding with label + -- tz is conflict + -- z = { "Telescope find_files", "Find File", desc = "Search Home", pwd = '/home/jim' }, -- create a binding with label }, - q = { ':q', 'Quit - no warn' }, - Q = { ':wq', 'Save & Quit' }, - w = { ':w', 'Save' }, - x = { ':bdelete', 'Close' }, + q = { ":q", "Quit - no warn" }, + Q = { ":wq", "Save & Quit" }, + w = { ":w", "Save" }, + x = { ":bdelete", "Close" }, -- use :RKill to stop R, close terminal (not guaranteed) z1 = { 'p', 'other window' }, z2 = { 'pAjunk', 'other window junk' }, @@ -81,6 +130,7 @@ local mappings = { -- f = { ":Telescope find_files", "Telescope Find Files" }, -- r = { ":Telescope live_grep", "Telescope Live Grep" }, } + local opts = { prefix = '' } wk.register(mappings, opts) -- }}} diff --git a/lua/jim/luasnip.lua b/lua/jim/luasnip.lua new file mode 100644 index 00000000..d3baf6e6 --- /dev/null +++ b/lua/jim/luasnip.lua @@ -0,0 +1,32 @@ +-- +-- LUASNIP +local luasnip = require 'luasnip' +local ls = require 'luasnip' +local s = ls.snippet +local sn = ls.snippet_node +local isn = ls.indent_snippet_node +local t = ls.text_node +local f = ls.function_node +-- HELPER +local filename = function() + return { vim.fn.expand '%:p' } +end + +-- SNIPS +ls.add_snippets('all', { -- `all` all filetypes, `lua` only lua ft + s('luaxx', { t 'this is lua file!' }), + s('sep', t { '---------------' }), + + -- snip: add file's filename + s({ + trig = "filename", + namr = "Filename", + dscr = "insert file name", + }, { + f(filename, {}), + }), +}) +--------------- +-- next line: allows use of snippet collection in vscode (??) +require('luasnip.loaders.from_vscode').lazy_load() +luasnip.config.setup {} diff --git a/lua/jim/settings.lua b/lua/jim/settings.lua index 45a483d0..e4911807 100644 --- a/lua/jim/settings.lua +++ b/lua/jim/settings.lua @@ -1,3 +1,3 @@ -- settings.lua -- -print('this is settings.lua') +-- print('this is settings.lua')