diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2022-11-21 01:22:38 +0100 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2022-11-21 01:22:38 +0100 |
| commit | 389acba1bbddc5336eb65f752da36529c7f7b85d (patch) | |
| tree | 1dd22444413a15e9e24a91ba6e2fbbbd406ed4a1 | |
| parent | 3cf5841352955d45d9ba8d0f72e23356e1f818ea (diff) | |
trying out fennel and failing miserably
| -rw-r--r-- | flake-template/flake.nix | 1 | ||||
| -rw-r--r-- | flake.nix | 47 | ||||
| -rw-r--r-- | home.nix | 25 | ||||
| -rw-r--r-- | neovim/fnl/cookbook.fnl | 1 | ||||
| -rw-r--r-- | neovim/fnl/macros.fnl | 24 | ||||
| -rw-r--r-- | neovim/init.fnl | 95 | ||||
| -rw-r--r-- | neovim/init.lua | 365 | ||||
| -rw-r--r-- | neovim/lua/setups.lua | 177 | ||||
| -rw-r--r-- | neovim/lua/vimrc.lua | 78 | ||||
| -rw-r--r-- | neovim/oldinit.lua | 231 |
10 files changed, 643 insertions, 401 deletions
diff --git a/flake-template/flake.nix b/flake-template/flake.nix index 5de784e..a497f25 100644 --- a/flake-template/flake.nix +++ b/flake-template/flake.nix @@ -7,6 +7,7 @@ outputs = { self, nixpkgs, + flake-utils, }: (flake-utils.lib.eachDefaultSystem (system: let pkgs = import nixpkgs { inherit system; @@ -23,29 +23,29 @@ system = "x86_64-linux"; mvinkioPkgs = mvinkio.legacyPackages.${system}; overlay = nixpkgs.lib.composeManyExtensions [ - (final: prev: { - tree-sitter = mvinkioPkgs.tree-sitter; - vimPlugins = - prev.vimPlugins - // { - nvim-treesitter = mvinkioPkgs.vimPlugins.nvim-treesitter.overrideAttrs (old: { - version = "2022-10-28"; - src = builtins.fetchGit { - url = "file:///home/mike/projects/nvim-treesitter"; - rev = "2c0ae6e8e81366ba088f1e5be62f467212cda52e"; - }; - passthru.withPlugins = grammarFn: - final.vimPlugins.nvim-treesitter.overrideAttrs (_: { - postPatch = let - grammars = mvinkioPkgs.tree-sitter.withPlugins grammarFn; - in '' - rm -r parser - ln -s ${grammars} parser - ''; - }); - }); - }; - }) + # (final: prev: { + # tree-sitter = mvinkioPkgs.tree-sitter; + # vimPlugins = + # prev.vimPlugins + # // { + # nvim-treesitter = mvinkioPkgs.vimPlugins.nvim-treesitter.overrideAttrs (old: { + # version = "2022-10-28"; + # src = builtins.fetchGit { + # url = "file:///home/mike/projects/nvim-treesitter"; + # rev = "2c0ae6e8e81366ba088f1e5be62f467212cda52e"; + # }; + # passthru.withPlugins = grammarFn: + # final.vimPlugins.nvim-treesitter.overrideAttrs (_: { + # postPatch = let + # grammars = mvinkioPkgs.tree-sitter.withPlugins grammarFn; + # in '' + # rm -r parser + # ln -s ${grammars} parser + # ''; + # }); + # }); + # }; + # }) # overlay some vim plugins (final: prev: { @@ -101,6 +101,7 @@ # to pass through arguments to home.nix extraSpecialArgs = { flake = self; + home-manager = home-manager; }; }; }; @@ -2,6 +2,7 @@ flake, config, pkgs, + home-manager, ... }: { # Found this here: nix-community.github.io configuration example @@ -12,13 +13,17 @@ programs.home-manager.enable = true; home.packages = with pkgs; [ + docker + kubectl + k9s + htop fortune vim - docker stow (nerdfonts.override {fonts = ["FiraCode"];}) ripgrep + inotify-tools firefox-wayland @@ -73,12 +78,21 @@ }; }; + home.activation = { + clearHotpotCache = home-manager.lib.hm.dag.entryAfter ["writeBoundary"] '' + HOTPOT_CACHE="${config.xdg.cacheHome}/nvim/hotpot" + if [[ -d "$HOTPOT_CACHE" ]]; then + $DRY_RUN_CMD rm -rf "$VERBOSE_ARG" "$HOTPOT_CACHE" + fi + ''; +}; programs.neovim = { enable = true; package = pkgs.neovim-unwrapped; viAlias = true; vimAlias = true; extraPackages = with pkgs; [ + fennel sumneko-lua-language-server pyright gopls @@ -92,8 +106,9 @@ Flake = { lua_language_server = [[${pkgs.sumneko-lua-language-server}]], bash = [[${pkgs.bashInteractive}/bin/bash]] } -vim.opt.runtimepath:append({ [[${flake}/neovim]], [[${flake}/neovim/lua]] }) -vim.cmd [[luafile ${flake}/neovim/init.lua]] +vim.opt.runtimepath:append({ [[~/dotnix/neovim]], [[~/dotnix/neovim/lua]] }) +package.path = [[/home/mike/dotnix/?/init.lua;]] .. [[/home/mike/.cache/nvim/hotpot/hotpot.nvim/lua/?/init.lua;]] .. package.path +require'neovim' LUA "; plugins = with pkgs.vimPlugins; [ @@ -131,10 +146,12 @@ LUA cmp-path cmp_luasnip - # trying out scheme + # trying out lisp conjure vim-racket nvim-parinfer + hotpot-nvim + cmp-conjure ]; }; } diff --git a/neovim/fnl/cookbook.fnl b/neovim/fnl/cookbook.fnl new file mode 100644 index 0000000..12fc2f2 --- /dev/null +++ b/neovim/fnl/cookbook.fnl @@ -0,0 +1 @@ +(vim.cmd "echo 'hi'") diff --git a/neovim/fnl/macros.fnl b/neovim/fnl/macros.fnl new file mode 100644 index 0000000..fe10ed3 --- /dev/null +++ b/neovim/fnl/macros.fnl @@ -0,0 +1,24 @@ +;; cannot be at the bottom? +(fn settings [...] + (fn echo [l] (each [k v (ipairs l)] (print k v))) + (fn tbl-echo [tbl] (collect [k v (pairs tbl)] (print k v) (values k v))) + + (fn stringify [l] (icollect [_ v (ipairs l)] (tostring v))) + + (fn kv [l tbl] + (let [[first second & rest] l] + (when (and (not= first nil) (not= second nil)) + (tset tbl first second) + (kv rest tbl)) + tbl)) + + (let [opts-tbl (-> [...] + (stringify) + (kv {}))] + `(each [k# v# (pairs ,opts-tbl)] + (match [k# v#] + [a# "true"] (tset (. vim "opt") k# true) + [a# "false"] (tset (. vim "opt") k# false) + [a# b#] (tset (. vim "opt") k# v#))))) + +{: settings} diff --git a/neovim/init.fnl b/neovim/init.fnl new file mode 100644 index 0000000..cafa98e --- /dev/null +++ b/neovim/init.fnl @@ -0,0 +1,95 @@ +(fn build-init [] + (let [{: build} (require :hotpot.api.make) + ;; by default, Fennel wont perform strict global checking when + ;; compiling but we can force it to check by providing a list + ;; of allowed global names, this can catch some additional errors in + ;; this file. + allowed-globals (icollect [n _ (pairs _G)] n) + opts {:verbosity 1 ;; set to 1 (or dont inclued the key) to see messages + :compiler {:modules {:allowedGlobals allowed-globals}}}] + ;; just pass back the whole path as is + (build "/home/mike/dotnix/neovim/init.fnl" opts ".+" #(values $1)))) + +(let [hotpot (require :hotpot) + setup hotpot.setup + build hotpot.api.make.build + uv vim.loop] + + ;; do some configuration stuff + (setup {:provide_require_fennel true + :compiler {:modules {:correlate true} + :macros {:env :_COMPILER + :compilerEnv _G + :allowedGlobals false}}}) + + ;; watch this file for changes and auto-rebuild on save + (let [handle (uv.new_fs_event) + ;; uv wont accept condensed paths + path (vim.fn.expand "/home/mike/dotnix/neovim/init.fnl")] + ;; note the vim.schedule call + (uv.fs_event_start handle path {} #(vim.schedule build-init)) + ;; close the uv handle when we quit nvim + (vim.api.nvim_create_autocmd :VimLeavePre {:callback #(uv.close handle)}))) + +(import-macros { : settings} :macros) + +(tset (. vim "g") "mapleader" " ") +(tset (. vim "g") "maplocalleader" " ") + +(vim.cmd "colorscheme gruvbox-material") + +(settings + backup false + backupcopy yes) + +(let [ts (require :nvim-treesitter.configs)] + ((. ts :setup + {:highlight {:enable true}}))) + +(let [cmp (require :cmp) + snip (fn [args] ((. (require :luasnip) :lsp_expand) (. args :body)))] + ((. cmp :setup) + {:snippet {:expand snip} + :completion {:autocomplete false} + :mapping + (cmp.mapping.preset.insert + {"<C-b>" (cmp.mapping.scroll_docs -4) + "<C-A>" (cmp.mapping.complete)}) + :sources (cmp.config.sources + [{:name :conjure} + {:name :nvim_lsp} + {:name :path} + {:name :luasnip}])})) + + + + + +; {} +; snippet = {} +; -- REQUIRED - you must specify a snippet engine +; expand = function(args) +; require('luasnip').lsp_expand(args.body) -- For `luasnip` users. +; end, +; , +; completion = {} +; autocomplete = false +; , +; window = {} +; -- completion = cmp.config.window.bordered(), +; -- documentation = cmp.config.window.bordered(), +; , +; mapping = cmp.mapping.preset.insert({}) +; ['<C-b>'] = cmp.mapping.scroll_docs(-4), +; ['<C-f>'] = cmp.mapping.scroll_docs(4), +; ['<C-A>'] = cmp.mapping.complete(), +; ['<C-e>'] = cmp.mapping.abort(), +; ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. +; , +; sources = cmp.config.sources({}) +; { name = 'conjure' }, +; { name = 'nvim_lsp' }, +; { name = 'luasnip' }, +; { name = 'path' }, +; +; diff --git a/neovim/init.lua b/neovim/init.lua index 2ecb90a..c8ca7ec 100644 --- a/neovim/init.lua +++ b/neovim/init.lua @@ -1,296 +1,69 @@ --- general options {{{ -vim.opt.clipboard = {} -vim.api.nvim_set_keymap( - "n", - "s", - "<Plug>Ysurround", - {silent=true,noremap=true} -) - --- don't load standard plugins - -vim.g.loaded_2html_plugin = false -vim.g.loaded_fzf = false -vim.g.loaded_man = false -vim.g.loaded_gzip = false -vim.g.loaded_health = false -vim.g.loaded_matchit = false -vim.g.loaded_matchparen = false -vim.g.loaded_netrwPlugin = false -vim.g.loaded_rplugin = false -vim.g.loaded_shada = false -vim.g.loaded_spellfile = false -vim.g.loaded_tarPlugin = false -vim.g.loaded_tohtml = false -vim.g.loaded_tutor = false -vim.g.loaded_zipPlugin = false - -vim.cmd [[filetype plugin on]] -vim.cmd [[filetype indent on]] -vim.cmd [[colorscheme gruvbox-material]] -vim.cmd [[highlight WinSeparator guibg=None]] -vim.opt.laststatus = 3 -vim.opt.winbar = "%=%m %f" - - -vim.g.dirvish_mode = ':sort | sort ,^.*[^/]$, r' - -vim.opt.foldopen = "block,hor,jump,mark,percent,quickfix,search,tag" -vim.opt.complete = ".,w,k,kspell,b" -vim.opt.completeopt = "menuone,noselect" - - -vim.opt.secure = true -vim.opt.exrc = true - --- relativenumbers and absolute number -vim.opt.relativenumber = true -vim.opt.number = true - --- don't show previous search pattern -vim.opt.hlsearch = false - --- don't free buffer memory when abandoned -vim.opt.hidden = true - --- 1 tab == 4 spaces -vim.opt.tabstop = 4 -vim.opt.softtabstop = 4 -vim.opt.shiftwidth = 4 - --- use spaces instead of tabs -vim.opt.expandtab = true - -vim.opt.smartindent = true -vim.opt.autoindent = true - --- show special characters as listed -vim.opt.list = true -vim.opt.listchars = { tab = ' ', eol = "" } -vim.opt.showbreak = '' - --- make pasting better but makes insert mappings stop working... --- vim.opt.paste = true - --- magic vim patterns -vim.opt.magic = true - --- make splitting consistent -vim.opt.splitbelow = true - -vim.opt.wrap = false -vim.opt.swapfile = false -vim.opt.backup = false -vim.opt.undodir = os.getenv('HOME') .. "/.local/share/nvim/undo" -vim.opt.undofile = true -vim.opt.incsearch = true -vim.opt.termguicolors = true -vim.opt.scrolloff = 8 -vim.opt.smd = false -vim.opt.signcolumn = "yes" -vim.opt.inccommand = "split" -vim.opt.wmw = 10 -vim.opt.isfname:append("@-@") -vim.opt.diffopt:append("vertical") -vim.opt.shortmess:append("c") --- }}} - - --- load global and utility functions - -local racket_lang = vim.g.racket_hash_lang_dict -racket_lang.sicp = "racket" -vim.g.racket_hash_lang_dict = racket_lang -vim.api.nvim_set_keymap("n", "g<space>", ":TestNearest<cr>", {}) --- TODO: debug test --- vim.api.nvim_set_keymap("n", "g<cr>", ":TestNearest<cr>", {}) -vim.g.mapleader = " " -vim.g.maplocalleader = " " -vim.o.shell = Flake.bash -local vimrc = require('vimrc') --- save session file in cwd -vimrc.cwd_save_session() - --- tree-sitter {{{ -require('vimrc').setup_treesitter() --- }}} - --- {{{ git -vim.cmd([[command! -bang Gap :G commit -am 'fixmeuplater' | G push]]) --- }}} - --- completion {{{ -vim.api.nvim_set_keymap('n', ']p', ':tabn<cr>', { silent = true, noremap = true}) -vim.api.nvim_set_keymap('n', '[p', ':tabp<cr>', { silent = true, noremap = true}) - -require'vimrc'.setup_cmp() - -require'vimrc.snippets'.setup() - --- }}} - --- buffers {{{ -vim.opt.switchbuf = "useopen,usetab" -vim.opt.stal = 2 - -vim.api.nvim_set_keymap( - "n", - "<leader>;", - "<C-^>", - { silent = true, noremap = true } -) - --- taken from: https://github.com/Furkanzmc/dotfiles/blob/master/vim/init.lua --- searching and replacing in buffers -vim.api.nvim_set_keymap( - "v", - "<leader>s", - ":call buffers#visual_selection('search', '')<CR>", - { silent = true, noremap = true } -) -vim.api.nvim_set_keymap( - "v", - "<leader>r", - ":call buffers#visual_selection('replace', '')<CR>", - { silent = true, noremap = true } -) -vim.cmd([[command! -nargs=1 -complete=file E execute('silent! !mkdir -p "$(dirname "<args>")"') <Bar> e <args>]]) --- wiping buffers and wiping nofile-buffers -vim.cmd([[command! -nargs=1 -bang Bdeletes :call buffers#wipe_matching('<args>', <q-bang>)]]) -vim.cmd([[command! Bdnonexisting :call buffers#wipe_nonexisting_files()]]) - -vim.cmd([[command! CleanTrailingWhiteSpace :lua require"vimrc.buffers".clean_trailing_spaces()]]) - -vim.cmd([[augroup vimrc_plugin_buffers]]) -vim.cmd([[au!]]) -vim.cmd( - [[autocmd BufWritePre *.md,*.hcl,*.tf,*.py,*.cpp,*.qml,*.js,*.txt,*.json,*.html,*.lua,*.yaml,*.yml,*.bash,*.sh,*.go :lua require"vimrc.buffers".clean_trailing_spaces()]] -) -vim.cmd( - [[autocmd BufReadPost * lua require"vimrc.buffers".setup_white_space_highlight(vim.fn.bufnr())]] -) -vim.cmd( - [[autocmd BufReadPre *.tf,*.hcl packadd vim-terraform]] -) -vim.cmd([[augroup END]]) - --- }}} - --- quickfix {{{ -vim.api.nvim_set_keymap( - "n", - "<C-q>o", - ":copen<cr>", - { silent = true, noremap = true } -) -vim.api.nvim_set_keymap( - "n", - "<C-q>z", - ":cclose<cr>", - { silent = true, noremap = true } -) - -vim.api.nvim_set_keymap( - "n", - "<C-q>lo", - ":lopen<cr>", - { silent = true, noremap = true } -) -vim.api.nvim_set_keymap( - "n", - "<C-q>lz", - ":lclose<cr>", - { silent = true, noremap = true } -) -vim.api.nvim_set_keymap("n", "]q", ":cnext<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "[q", ":cprevious<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "]Q", ":cfirst<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "[Q", ":clast<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "]l", ":lnext<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "[l", ":lprevious<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "]L", ":lfirst<cr>", { silent = true, noremap = true }) -vim.api.nvim_set_keymap("n", "[L", ":llast<cr>", { silent = true, noremap = true }) --- }}} - --- firvish {{{ -require'firvish'.setup() -vim.g.firvish_use_default_mappings=1 -require'vimrc'.setup_jq_function() -require'vimrc'.setup_build_function() --- }}} - --- {{{ trouble -require"trouble".setup { } --- }}} - --- {{{ tests --- require"nvim-test".setup{} --- vim.api.nvim_set_keymap( --- "n", --- "<leader>t", --- "<cmd>TestFile<CR>", --- {silent = true, noremap = true} --- ) --- }}} - --- lsp {{{ -vim.cmd [[augroup vimrc_nvim_lsp_setup]] -vim.cmd [[au!]] -vim.cmd [[au VimEnter * lua require'vimrc.lsp'.setup()]] -vim.cmd [[augroup END]] --- }}} - --- dap {{{ -require('vimrc.dap').setup_dap() -vim.cmd [[augroup vimrc_nvim_dap_setup]] -vim.cmd [[au!]] -vim.cmd [[au VimEnter * lua require('vimrc.dap').setup_dap()]] -vim.cmd [[augroup END]] --- }}} - --- terminal {{{ --- open close terminal -vim.cmd [[command! Term :lua require('vimrc.term').toggle()]] --- run current file -vim.cmd [[command! Run :lua require('vimrc.term').run()]] --- send selection -vim.cmd [[command! -range Send :lua require('vimrc.term').sendSelection()]] -vim.api.nvim_set_keymap( - "t", - "<c-q><c-w>", - "<c-\\><c-n>", - { silent = true, noremap = true } -) --- }}} - --- statusline {{{ --- require('el').setup {} --- TODO: move to colortemplates -vim.cmd [[hi! link Winbar StatusLine]] --- }}} - --- init autocommand {{{ -vim.cmd([[augroup vimrc_init]]) -vim.cmd([[autocmd!]]) -vim.cmd( - [[autocmd BufReadPre,FileReadPre *.rest :if !exists("g:vimrc_rest_nvim_loaded") | packadd vim-rest-console | let g:vimrc_rest_nvim_loaded = v:true | endif | :e]] -) -vim.cmd( - [[autocmd TextYankPost * silent! lua vim.highlight.on_yank{on_visual=false, higroup="IncSearch", timeout=100}]] -) -vim.cmd( - [[ autocmd TextYankPost * if v:event.operator is 'y' && v:event.regname is '' | execute 'OSCYankReg "' | endif ]] -) -vim.cmd( - [[autocmd VimEnter * if filereadable(".exrc.lua") | call execute("luafile .exrc.lua") | endif]] -) -vim.cmd( - [[autocmd VimEnter * if filereadable(".env") | echo execute("Dotenv") | call execute("Dotenv .env") | endif]] -) --- temp fix for screen redrawing issues --- cmd( --- [[autocmd BufEnter * mod]] --- ) -vim.cmd([[augroup END]]) --- }}} --- vim: fdm=marker +local function build_init() + local _let_1_ = require("hotpot.api.make") + local build = _let_1_["build"] + local allowed_globals + do + local tbl_17_auto = {} + local i_18_auto = #tbl_17_auto + for n, _ in pairs(_G) do + local val_19_auto = n + if (nil ~= val_19_auto) then + i_18_auto = (i_18_auto + 1) + do end (tbl_17_auto)[i_18_auto] = val_19_auto + else + end + end + allowed_globals = tbl_17_auto + end + local opts = {verbosity = 1, compiler = {modules = {allowedGlobals = allowed_globals}}} + local function _3_(_241) + return _241 + end + return build("/home/mike/dotnix/neovim/init.fnl", opts, ".+", _3_) +end +do + local hotpot = require("hotpot") + local setup = hotpot.setup + local build = hotpot.api.make.build + local uv = vim.loop + setup({provide_require_fennel = true, compiler = {modules = {correlate = true}, macros = {env = "_COMPILER", compilerEnv = _G, allowedGlobals = false}}}) + local handle = uv.new_fs_event() + local path = vim.fn.expand("/home/mike/dotnix/neovim/init.fnl") + local function _4_() + return vim.schedule(build_init) + end + uv.fs_event_start(handle, path, {}, _4_) + local function _5_() + return uv.close(handle) + end + vim.api.nvim_create_autocmd("VimLeavePre", {callback = _5_}) +end +vim.g["mapleader"] = " " +vim.g["maplocalleader"] = " " +vim.cmd("colorscheme gruvbox-material") +for k_7_auto, v_8_auto in pairs({backup = "false", backupcopy = "yes"}) do + local _6_ = {k_7_auto, v_8_auto} + if ((_G.type(_6_) == "table") and (nil ~= (_6_)[1]) and ((_6_)[2] == "true")) then + local a_9_auto = (_6_)[1] + vim.opt[k_7_auto] = true + elseif ((_G.type(_6_) == "table") and (nil ~= (_6_)[1]) and ((_6_)[2] == "false")) then + local a_9_auto = (_6_)[1] + vim.opt[k_7_auto] = false + elseif ((_G.type(_6_) == "table") and (nil ~= (_6_)[1]) and (nil ~= (_6_)[2])) then + local a_9_auto = (_6_)[1] + local b_10_auto = (_6_)[2] + vim.opt[k_7_auto] = v_8_auto + else + end +end +do + local ts = require("nvim-treesitter.configs") + ts.setup[{highlight = {enable = true}}]() +end +local cmp = require("cmp") +local snip +local function _8_(args) + return (require("luasnip")).lsp_expand(args.body) +end +snip = _8_ +return cmp.setup({snippet = {expand = snip}, completion = {autocomplete = false}, mapping = cmp.mapping.preset.insert({["<C-b>"] = cmp.mapping.scroll_docs(-4), ["<C-A>"] = cmp.mapping.complete()}), sources = cmp.config.sources({{name = "conjure"}, {name = "nvim_lsp"}, {name = "path"}, {name = "luasnip"}})})
\ No newline at end of file diff --git a/neovim/lua/setups.lua b/neovim/lua/setups.lua new file mode 100644 index 0000000..48e775d --- /dev/null +++ b/neovim/lua/setups.lua @@ -0,0 +1,177 @@ +-- {{{ git +vim.cmd([[command! -bang Gap :G commit -am 'fixmeuplater' | G push]]) +-- }}} + +-- completion {{{ +vim.api.nvim_set_keymap('n', ']p', ':tabn<cr>', { silent = true, noremap = true}) +vim.api.nvim_set_keymap('n', '[p', ':tabp<cr>', { silent = true, noremap = true}) + +require'vimrc.snippets'.setup() + +-- }}} + +-- buffers {{{ +vim.opt.switchbuf = "useopen,usetab" +vim.opt.stal = 2 + +vim.api.nvim_set_keymap( + "n", + "<leader>;", + "<C-^>", + { silent = true, noremap = true } +) + +-- taken from: https://github.com/Furkanzmc/dotfiles/blob/master/vim/init.lua +-- searching and replacing in buffers +vim.api.nvim_set_keymap( + "v", + "<leader>s", + ":call buffers#visual_selection('search', '')<CR>", + { silent = true, noremap = true } +) +vim.api.nvim_set_keymap( + "v", + "<leader>r", + ":call buffers#visual_selection('replace', '')<CR>", + { silent = true, noremap = true } +) +vim.cmd([[command! -nargs=1 -complete=file E execute('silent! !mkdir -p "$(dirname "<args>")"') <Bar> e <args>]]) +-- wiping buffers and wiping nofile-buffers +vim.cmd([[command! -nargs=1 -bang Bdeletes :call buffers#wipe_matching('<args>', <q-bang>)]]) +vim.cmd([[command! Bdnonexisting :call buffers#wipe_nonexisting_files()]]) + +vim.cmd([[command! CleanTrailingWhiteSpace :lua require"vimrc.buffers".clean_trailing_spaces()]]) + +vim.cmd([[augroup vimrc_plugin_buffers]]) +vim.cmd([[au!]]) +vim.cmd( + [[autocmd BufWritePre *.md,*.hcl,*.tf,*.py,*.cpp,*.qml,*.js,*.txt,*.json,*.html,*.lua,*.yaml,*.yml,*.bash,*.sh,*.go :lua require"vimrc.buffers".clean_trailing_spaces()]] +) +vim.cmd( + [[autocmd BufReadPost * lua require"vimrc.buffers".setup_white_space_highlight(vim.fn.bufnr())]] +) +vim.cmd( + [[autocmd BufReadPre *.tf,*.hcl packadd vim-terraform]] +) +vim.cmd([[augroup END]]) + +-- }}} + +-- quickfix {{{ +vim.api.nvim_set_keymap( + "n", + "<C-q>o", + ":copen<cr>", + { silent = true, noremap = true } +) +vim.api.nvim_set_keymap( + "n", + "<C-q>z", + ":cclose<cr>", + { silent = true, noremap = true } +) + +vim.api.nvim_set_keymap( + "n", + "<C-q>lo", + ":lopen<cr>", + { silent = true, noremap = true } +) +vim.api.nvim_set_keymap( + "n", + "<C-q>lz", + ":lclose<cr>", + { silent = true, noremap = true } +) +vim.api.nvim_set_keymap("n", "]q", ":cnext<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "[q", ":cprevious<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "]Q", ":cfirst<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "[Q", ":clast<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "]l", ":lnext<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "[l", ":lprevious<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "]L", ":lfirst<cr>", { silent = true, noremap = true }) +vim.api.nvim_set_keymap("n", "[L", ":llast<cr>", { silent = true, noremap = true }) +-- }}} + +-- firvish {{{ +require'firvish'.setup() +vim.g.firvish_use_default_mappings=1 +require'vimrc'.setup_jq_function() +require'vimrc'.setup_build_function() +-- }}} + +-- {{{ trouble +require"trouble".setup { } +-- }}} + +-- {{{ tests +-- require"nvim-test".setup{} +-- vim.api.nvim_set_keymap( +-- "n", +-- "<leader>t", +-- "<cmd>TestFile<CR>", +-- {silent = true, noremap = true} +-- ) +-- }}} + +-- lsp {{{ +vim.cmd [[augroup vimrc_nvim_lsp_setup]] +vim.cmd [[au!]] +vim.cmd [[au VimEnter * lua require'vimrc.lsp'.setup()]] +vim.cmd [[augroup END]] +-- }}} + +-- dap {{{ +require('vimrc.dap').setup_dap() +vim.cmd [[augroup vimrc_nvim_dap_setup]] +vim.cmd [[au!]] +vim.cmd [[au VimEnter * lua require('vimrc.dap').setup_dap()]] +vim.cmd [[augroup END]] +-- }}} + +-- terminal {{{ +-- open close terminal +vim.cmd [[command! Term :lua require('vimrc.term').toggle()]] +-- run current file +vim.cmd [[command! Run :lua require('vimrc.term').run()]] +-- send selection +vim.cmd [[command! -range Send :lua require('vimrc.term').sendSelection()]] +vim.api.nvim_set_keymap( + "t", + "<c-q><c-w>", + "<c-\\><c-n>", + { silent = true, noremap = true } +) +-- }}} + +-- statusline {{{ +-- require('el').setup {} +-- TODO: move to colortemplates +vim.cmd [[hi! link Winbar StatusLine]] +-- }}} + +-- init autocommand {{{ +vim.cmd([[augroup vimrc_init]]) +vim.cmd([[autocmd!]]) +vim.cmd( + [[autocmd BufReadPre,FileReadPre *.rest :if !exists("g:vimrc_rest_nvim_loaded") | packadd vim-rest-console | let g:vimrc_rest_nvim_loaded = v:true | endif | :e]] +) +vim.cmd( + [[autocmd TextYankPost * silent! lua vim.highlight.on_yank{on_visual=false, higroup="IncSearch", timeout=100}]] +) +vim.cmd( + [[ autocmd TextYankPost * if v:event.operator is 'y' && v:event.regname is '' | execute 'OSCYankReg "' | endif ]] +) +vim.cmd( + [[autocmd VimEnter * if filereadable(".exrc.lua") | call execute("luafile .exrc.lua") | endif]] +) +vim.cmd( + [[autocmd VimEnter * if filereadable(".env") | echo execute("Dotenv") | call execute("Dotenv .env") | endif]] +) +-- temp fix for screen redrawing issues +-- cmd( +-- [[autocmd BufEnter * mod]] +-- ) +vim.cmd([[augroup END]]) +-- }}} +-- vim: fdm=marker diff --git a/neovim/lua/vimrc.lua b/neovim/lua/vimrc.lua index 3a90ad9..59ab863 100644 --- a/neovim/lua/vimrc.lua +++ b/neovim/lua/vimrc.lua @@ -2,84 +2,6 @@ local log_warning = require 'vimrc.utils'.log_warning local M = {} -M.cwd_save_session = function() - vim.cmd([[ -augroup vimrc_save_session - au! - au VimLeave * mksession! ]] .. os.getenv("PWD") .. [[/Session.vim -augroup end - ]]) -end - -function M.setup_cmp() - local cmp = require 'cmp' - cmp.setup({ - snippet = { - -- REQUIRED - you must specify a snippet engine - expand = function(args) - require('luasnip').lsp_expand(args.body) -- For `luasnip` users. - end, - }, - completion = { - autocomplete = false - }, - window = { - -- completion = cmp.config.window.bordered(), - -- documentation = cmp.config.window.bordered(), - }, - mapping = cmp.mapping.preset.insert({ - ['<C-b>'] = cmp.mapping.scroll_docs(-4), - ['<C-f>'] = cmp.mapping.scroll_docs(4), - ['<C-A>'] = cmp.mapping.complete(), - ['<C-e>'] = cmp.mapping.abort(), - ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. - }), - sources = cmp.config.sources({ - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - { name = 'path' }, - }) - }) -end - -function M.setup_treesitter() - if vim.o.loadplugins == false then - return - end - - if vim.fn.exists(":TSInstall") == 1 then - return vim.notify "TreeSitter is already configured." - end - - -- vim.cmd([[packadd nvim-treesitter]]) - require 'nvim-treesitter.configs'.setup { - highlight = { - enable = true, - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - }, - rainbow = { - enable = true, - -- disable = { "jsx", "cpp" }, list of languages you want to disable the plugin for - extended_mode = true, -- Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean - max_file_lines = nil, -- Do not enable for files with more than n lines, int - -- colors = {}, -- table of hex strings - -- termcolors = {} -- table of colour name strings - }, - - incremental_selection = { - enable = true, - }, - indent = { - enable = false, - disable = { "python", "yaml" }, - }, - } - vim.cmd [[hi link TSParameter Todo]] -end - function M.setup_rest_nvim() require("rest-nvim").setup({ result_split_horizontal = true, diff --git a/neovim/oldinit.lua b/neovim/oldinit.lua new file mode 100644 index 0000000..1c151f6 --- /dev/null +++ b/neovim/oldinit.lua @@ -0,0 +1,231 @@ +-- fixes: +-- ; eval (current-form): (let [hotpot (require :hotpot) eval ... +-- ; ...ike/.cache/nvim/hotpot/hotpot.nvim/lua/hotpot/common.lua:15: module 'hotpot.api' not found: +-- ; no field package.preload['hotpot.api'] +-- ; no file '/home/mike/.cache/nvim/hotpot/hotpot.nvim/lua/hotpot/api.lua' +-- ; no file '/nix/store/w08dyn0iamcixgc6cgv9ma8sq165vlvq-luajit-2.1.0-2022-10-04-env/share/lua/5.1/hotpot/api.lua' +-- ; no file '/nix/store/w08dyn0iamcixgc6cgv9ma8sq165vlvq-luajit-2.1.0-2022-10-04-env/share/lua/5.1/hotpot/api/init.lua' +-- ; no file '/nix/store/w08dyn0iamcixgc6cgv9ma8sq165vlvq-luajit-2.1.0-2022-10-04-env/lib/lua/5.1/hotpot/api.so' +-- ; no file '/nix/store/w08dyn0iamcixgc6cgv9ma8sq165vlvq-luajit-2.1.0-2022-10-04-env/lib/lua/5.1/hotpot.so' +package.path = "/home/mike/.cache/nvim/hotpot/hotpot.nvim/lua/?/init.lua;" .. package.path +require("hotpot").setup({ + -- allows you to call `(require :fennel)`. + -- recommended you enable this unless you have another fennel in your path. + -- you can always call `(require :hotpot.fennel)`. + provide_require_fennel = false, + -- show fennel compiler results in when editing fennel files + enable_hotpot_diagnostics = true, + -- compiler options are passed directly to the fennel compiler, see + -- fennels own documentation for details. + compiler = { + -- options passed to fennel.compile for modules, defaults to {} + modules = { + -- not default but recommended, align lua lines with fnl source + -- for more debuggable errors, but less readable lua. + -- correlate = true + }, + -- options passed to fennel.compile for macros, defaults as shown + macros = { + env = "_COMPILER", -- MUST be set along with any other options + -- you may wish to disable fennels macro-compiler sandbox in some cases, + -- this allows access to tables like `vim` or `os` inside macro functions. + -- See fennels own documentation for details on these options. + compilerEnv = _G, + allowGlobals = false, + } + } +}) + +local cmp = require 'cmp' +cmp.setup({ + snippet = { + -- REQUIRED - you must specify a snippet engine + expand = function(args) + require('luasnip').lsp_expand(args.body) -- For `luasnip` users. + end, + }, + completion = { + autocomplete = false + }, + window = { + -- completion = cmp.config.window.bordered(), + -- documentation = cmp.config.window.bordered(), + }, + mapping = cmp.mapping.preset.insert({ + ['<C-b>'] = cmp.mapping.scroll_docs(-4), + ['<C-f>'] = cmp.mapping.scroll_docs(4), + ['<C-A>'] = cmp.mapping.complete(), + ['<C-e>'] = cmp.mapping.abort(), + ['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items. + }), + sources = cmp.config.sources({ + { name = 'conjure' }, + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + { name = 'path' }, + }) +}) + +function setup_treesitter() + if vim.o.loadplugins == false then + return + end + + if vim.fn.exists(":TSInstall") == 1 then + return vim.notify "TreeSitter is already configured." + end + + -- vim.cmd([[packadd nvim-treesitter]]) + require 'nvim-treesitter.configs'.setup { + highlight = { + enable = true, + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + }, + rainbow = { + enable = true, + -- disable = { "jsx", "cpp" }, list of languages you want to disable the plugin for + extended_mode = true, -- Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean + max_file_lines = nil, -- Do not enable for files with more than n lines, int + -- colors = {}, -- table of hex strings + -- termcolors = {} -- table of colour name strings + }, + + incremental_selection = { + enable = true, + }, + indent = { + enable = false, + disable = { "python", "yaml" }, + }, + } + vim.cmd [[hi link TSParameter Todo]] +end +setup_treesitter() +cwd_save_session = function() + vim.cmd([[ +augroup vimrc_save_session + au! + au VimLeave * mksession! ]] .. os.getenv("PWD") .. [[/Session.vim +augroup end + ]]) +end +cwd_save_session() + + + + +-- general options {{{ +vim.opt.clipboard = {} +vim.api.nvim_set_keymap( + "n", + "s", + "<Plug>Ysurround", + {silent=true,noremap=true} +) + +-- don't load standard plugins + +vim.g.loaded_2html_plugin = false +vim.g.loaded_fzf = false +vim.g.loaded_man = false +vim.g.loaded_gzip = false +vim.g.loaded_health = false +vim.g.loaded_matchit = false +vim.g.loaded_matchparen = false +vim.g.loaded_netrwPlugin = false +vim.g.loaded_rplugin = false +vim.g.loaded_shada = false +vim.g.loaded_spellfile = false +vim.g.loaded_tarPlugin = false +vim.g.loaded_tohtml = false +vim.g.loaded_tutor = false +vim.g.loaded_zipPlugin = false + +vim.cmd [[filetype plugin on]] +vim.cmd [[filetype indent on]] +vim.cmd [[colorscheme gruvbox-material]] +vim.cmd [[highlight WinSeparator guibg=None]] +vim.opt.laststatus = 3 +vim.opt.winbar = "%=%m %f" + + +vim.g.dirvish_mode = ':sort | sort ,^.*[^/]$, r' + +vim.opt.foldopen = "block,hor,jump,mark,percent,quickfix,search,tag" +vim.opt.complete = ".,w,k,kspell,b" +vim.opt.completeopt = "menuone,noselect" + + +vim.opt.secure = true +vim.opt.exrc = true + +-- relativenumbers and absolute number +vim.opt.relativenumber = true +vim.opt.number = true + +-- don't show previous search pattern +vim.opt.hlsearch = false + +-- don't free buffer memory when abandoned +vim.opt.hidden = true + +-- 1 tab == 4 spaces +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 + +-- use spaces instead of tabs +vim.opt.expandtab = true + +vim.opt.smartindent = true +vim.opt.autoindent = true + +-- show special characters as listed +vim.opt.list = true +vim.opt.listchars = { tab = ' ', eol = "" } +vim.opt.showbreak = '' + +-- make pasting better but makes insert mappings stop working... +-- vim.opt.paste = true + +-- magic vim patterns +vim.opt.magic = true + +-- make splitting consistent +vim.opt.splitbelow = true + +vim.opt.wrap = false +vim.opt.swapfile = false +vim.opt.backup = false +vim.opt.undodir = os.getenv('HOME') .. "/.local/share/nvim/undo" +vim.opt.undofile = true +vim.opt.incsearch = true +vim.opt.termguicolors = true +vim.opt.scrolloff = 8 +vim.opt.smd = false +vim.opt.signcolumn = "yes" +vim.opt.inccommand = "split" +vim.opt.wmw = 10 +vim.opt.isfname:append("@-@") +vim.opt.diffopt:append("vertical") +vim.opt.shortmess:append("c") +-- }}} + + +-- load global and utility functions + +-- racket nvim workaround +local racket_lang = vim.g.racket_hash_lang_dict +racket_lang.sicp = "racket" +vim.g.racket_hash_lang_dict = racket_lang + +vim.g.mapleader = " " +vim.g.maplocalleader = " " +vim.o.shell = Flake.bash +-- local vimrc = require('vimrc') + +-- tree-sitter {{{ +-- }}} |
