summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--flake-template/flake.nix1
-rw-r--r--flake.nix47
-rw-r--r--home.nix25
-rw-r--r--neovim/fnl/cookbook.fnl1
-rw-r--r--neovim/fnl/macros.fnl24
-rw-r--r--neovim/init.fnl95
-rw-r--r--neovim/init.lua365
-rw-r--r--neovim/lua/setups.lua177
-rw-r--r--neovim/lua/vimrc.lua78
-rw-r--r--neovim/oldinit.lua231
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;
diff --git a/flake.nix b/flake.nix
index 55f3a6e..080c657 100644
--- a/flake.nix
+++ b/flake.nix
@@ -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;
};
};
};
diff --git a/home.nix b/home.nix
index 8f589f8..7a0b82f 100644
--- a/home.nix
+++ b/home.nix
@@ -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 {{{
+-- }}}