diff options
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | fnl/defaults.fnl | 8 | ||||
-rw-r--r-- | fnl/keybinds.fnl | 60 | ||||
-rw-r--r-- | fnl/opt.fnl | 13 | ||||
-rw-r--r-- | fnl/plugins/cmp.fnl | 23 | ||||
-rw-r--r-- | fnl/plugins/lsp_signature.fnl | 1 | ||||
-rw-r--r-- | fnl/plugins/lspconfig.fnl | 10 | ||||
-rw-r--r-- | fnl/plugins/neo_tree.fnl | 20 | ||||
-rw-r--r-- | fnl/plugins/notify.fnl | 1 | ||||
-rw-r--r-- | fnl/plugins/toggleterm.fnl | 1 | ||||
-rw-r--r-- | fnl/plugins/treesitter.fnl | 3 | ||||
-rw-r--r-- | fnl/plugins/which_key.fnl | 14 | ||||
-rw-r--r-- | fnl/plugins/wilder.fnl | 21 | ||||
-rw-r--r-- | fnl/plugins/winshift.fnl | 1 | ||||
-rw-r--r-- | fnl/settings.fnl | 16 | ||||
-rw-r--r-- | init.fnl | 40 | ||||
-rw-r--r-- | plugin/0-tangerine.lua | 41 |
17 files changed, 276 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c88cca0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +lua/ +plugin/* +!plugin/0-tangerine.lua diff --git a/fnl/defaults.fnl b/fnl/defaults.fnl new file mode 100644 index 0000000..aa75f3a --- /dev/null +++ b/fnl/defaults.fnl @@ -0,0 +1,8 @@ +(lambda default [key value ?force] + (when (or (= (. _G.settings key) nil) ?force) (tset _G.settings key value))) + +(lambda defaults [force] + (default :colorscheme :oxocarbon force) + (default :lsp "lua_ls,clangd,zls,csharp_ls,ts_ls" force)) + +(defaults false) diff --git a/fnl/keybinds.fnl b/fnl/keybinds.fnl new file mode 100644 index 0000000..f3ad8f2 --- /dev/null +++ b/fnl/keybinds.fnl @@ -0,0 +1,60 @@ +(require-macros :hibiscus.vim) + +(vim.opt.whichwrap:append { + :< true + :> true + "[" true + "]" true + :h true + :l true}) + +(map! [n] :<c-k> "<cmd>:wincmd k<CR>") +(map! [n] :<c-j> "<cmd>:wincmd j<CR>") +(map! [n] :<c-h> "<cmd>:wincmd h<CR>") +(map! [n] :<c-l> "<cmd>:wincmd l<CR>") + +;; floating mode + +(local libmodal (require :libmodal)) + +(local move_win (lambda [drow dcol] + (local win (vim.api.nvim_win_get_config 0)) + (when (= win.relative "") (lua "return nil")) + (tset win :row (+ win.row drow)) + (tset win :col (+ win.col dcol)) + (vim.api.nvim_win_set_config 0 win))) + +(local resize_win (lambda [drow dcol] + (local win (vim.api.nvim_win_get_config 0)) + (tset win :height (+ win.height drow)) + (tset win :width (+ win.width dcol)) + (vim.api.nvim_win_set_config 0 win))) + + +(local t (lambda [] + (local win (vim.api.nvim_win_get_config 0)) + (tset win :bufpos [0 100]) + (vim.api.nvim_win_set_config 0 win))) + +(local aww (fn [] + (local keys { + (vim.keycode :<c-j>) (fn [] (resize_win 2 0)) + (vim.keycode :<c-k>) (fn [] (resize_win -2 0)) + (vim.keycode :<c-h>) (fn [] (resize_win 0 -2)) + (vim.keycode :<c-l>) (fn [] (resize_win 0 2)) + + :j (fn [] (move_win 2 0)) + :k (fn [] (move_win -2 0)) + :h (fn [] (move_win 0 -2)) + :l (fn [] (move_win 0 2)) + + :d (fn [] (t))}) + + (local float_mode (libmodal.mode.new :floating keys)) + (float_mode:enter))) + +(map! [n] :<c-f> (fn [] (aww))) + +;; exit terminal mode like a normal human +(map! [t] :<esc> "<C-\\><C-n>") + diff --git a/fnl/opt.fnl b/fnl/opt.fnl new file mode 100644 index 0000000..e28645c --- /dev/null +++ b/fnl/opt.fnl @@ -0,0 +1,13 @@ +(tset vim.opt :wrap false) +(tset vim.opt :linebreak false) + +(tset vim.opt :tabstop 2) +(tset vim.opt :shiftwidth 2) +(tset vim.bo :softtabstop 2) +(tset vim.opt :expandtab true) + +(tset vim.opt :number true) +(tset vim.o :signcolumn :yes) +(tset vim.opt :termguicolors true) +;--vim.opt.fillchars = { eob = ""} +(vim.cmd (.. "colorscheme " _G.settings.colorscheme)) diff --git a/fnl/plugins/cmp.fnl b/fnl/plugins/cmp.fnl new file mode 100644 index 0000000..8d13986 --- /dev/null +++ b/fnl/plugins/cmp.fnl @@ -0,0 +1,23 @@ +(local cmp (require :cmp)) + +((. cmp :setup) { + :snippet { + :expand (fn [args] + (vim.snippet.expand args.body) + ;((. vim.fn "vsnip#anonymous") args.body) ;for older neovim version (< 0.10) + )} + :mapping (cmp.mapping.preset.insert { + :<C-b> (cmp.mapping.scroll_docs -4) + :<C-f> (cmp.mapping.scroll_docs 4) + :<C-Space> (cmp.mapping.complete) + :<C-e> (cmp.mapping.abort) + :<CR> (cmp.mapping.confirm {select true}) + :<Tab> (cmp.mapping (cmp.mapping.select_next_item) [:i :s]) + }) + :sources (cmp.config.sources [ + {:name :nvim_lsp} + ;{:name :vsnip} + ] [{:name :buffer}]) + }) + + diff --git a/fnl/plugins/lsp_signature.fnl b/fnl/plugins/lsp_signature.fnl new file mode 100644 index 0000000..9b5509d --- /dev/null +++ b/fnl/plugins/lsp_signature.fnl @@ -0,0 +1 @@ +((. (require :lsp_signature) :setup)) diff --git a/fnl/plugins/lspconfig.fnl b/fnl/plugins/lspconfig.fnl new file mode 100644 index 0000000..7034e33 --- /dev/null +++ b/fnl/plugins/lspconfig.fnl @@ -0,0 +1,10 @@ +(var capabilities (require :cmp_nvim_lsp)) +(set capabilities (capabilities.default_capabilities)) +(local lsp _G.settings.lsp) +(local config_table {}) +(local lspconfig (require :lspconfig)) + +(each [language (lsp:gmatch "([^,]+)")] + (when (= (. config_table language) nil) (tset config_table language {})) + (tset (. config_table language) :capabilities capabilities) + ((. (. lspconfig language) :setup) (. config_table language))) diff --git a/fnl/plugins/neo_tree.fnl b/fnl/plugins/neo_tree.fnl new file mode 100644 index 0000000..76bf708 --- /dev/null +++ b/fnl/plugins/neo_tree.fnl @@ -0,0 +1,20 @@ +((. (require :neo-tree) :setup) { + :close_if_last_window true + :default_component_configs { + :git_status { + :symbols { + :added :+ + :modified :m + :deleted :x + :renamed :-> + + :untracked " " + :ignored " " + :unstaged :* + :staged " " + :conflict ":("}}} + :window { + :position :left + :width 30} + :filesystem { + :use_libuv_file_watcher true}}) diff --git a/fnl/plugins/notify.fnl b/fnl/plugins/notify.fnl new file mode 100644 index 0000000..4084871 --- /dev/null +++ b/fnl/plugins/notify.fnl @@ -0,0 +1 @@ +(tset vim :notify (require :notify)) diff --git a/fnl/plugins/toggleterm.fnl b/fnl/plugins/toggleterm.fnl new file mode 100644 index 0000000..aed1edc --- /dev/null +++ b/fnl/plugins/toggleterm.fnl @@ -0,0 +1 @@ +((. (require :toggleterm) :setup) {:persist_mode true :persistant_size true}) diff --git a/fnl/plugins/treesitter.fnl b/fnl/plugins/treesitter.fnl new file mode 100644 index 0000000..4b2a687 --- /dev/null +++ b/fnl/plugins/treesitter.fnl @@ -0,0 +1,3 @@ +((. (require :nvim-treesitter.configs) :setup) + {:highlight { + :enable true}}) diff --git a/fnl/plugins/which_key.fnl b/fnl/plugins/which_key.fnl new file mode 100644 index 0000000..959e0a6 --- /dev/null +++ b/fnl/plugins/which_key.fnl @@ -0,0 +1,14 @@ +(local whichkey (require :which-key)) +(whichkey.setup) + +(local mappings { + 1 {1 " f" 2 "<cmd>Neotree toggle<CR>" :desc "fs"} + 2 {1 " w" 2 "<cmd>WinShift<CR>" :desc "win shift"} + 3 {1 " t" 2 "<cmd>ToggleTerm direction=horizontal<CR>" :desc "hterm"} + + :mode [:n :v] + :silent true + :noremap true + :nowait true}) + +(whichkey.add mappings) diff --git a/fnl/plugins/wilder.fnl b/fnl/plugins/wilder.fnl new file mode 100644 index 0000000..56b4155 --- /dev/null +++ b/fnl/plugins/wilder.fnl @@ -0,0 +1,21 @@ +(local gradient [:#74d7ec :#96cde2 :#b9c3d9 :#dcb9d0 :#ffafc7 :#ffafc7 :#fec1d2 :#fdd4de + :#fce6e9 :#fbf9f5 :#fbf9f5 :#fce8ea :#fdd7e0 :#fec6d5 :#ffb5cb :#ffb5cb :#dcbdd2 :#b9c5da + :#96cde2 :#73d5ea]) + +(local wilder (require :wilder)) +(wilder.setup {:modes [:: :/ :?]}) + +;this like 'builds' the gradient? idk +(each [i fg (ipairs gradient)] + (tset gradient i + (wilder.make_hl (.. :WilderGradient i) :Pmenu [{:a 1} {:a 1} {:foreground fg}]))) + +(wilder.set_option :renderer (wilder.wildmenu_renderer { + :separator " . " + :left [" "] + :right [" "] + + :highlights {:gradient gradient} + + :highlighter (wilder.highlighter_with_gradient [ + (wilder.basic_highlighter)])})) diff --git a/fnl/plugins/winshift.fnl b/fnl/plugins/winshift.fnl new file mode 100644 index 0000000..542f15c --- /dev/null +++ b/fnl/plugins/winshift.fnl @@ -0,0 +1 @@ +((. (require :winshift) :setup)) diff --git a/fnl/settings.fnl b/fnl/settings.fnl new file mode 100644 index 0000000..0a4178c --- /dev/null +++ b/fnl/settings.fnl @@ -0,0 +1,16 @@ +(local path (.. (vim.fn.stdpath :data) :/_owo_)) + +(lambda _get [_ key] + (local file (io.open (.. path key) :rb)) + (when (= file nil) nil) + + (local value (file:read :*a)) + (io.close file) + value) + +(lambda _set [_ key value] + (local file (io.open (.. path key) :w)) + (file:write value) + (io.close file)) + +(setmetatable {} {:__index _get :__newindex _set}) diff --git a/init.fnl b/init.fnl new file mode 100644 index 0000000..2ded39e --- /dev/null +++ b/init.fnl @@ -0,0 +1,40 @@ +(require-macros :hibiscus.packer) + +(packer-setup! {}) + +(global settings (require :settings)) +(require :keybinds) +(require :defaults) +(require :opt) + +(packer! + ;required for fennel slop + (use! :udayvir-singh/hibiscus.nvim) + (use! :udayvir-singh/tangerine.nvim) + + ;functionality stuff + (use! :gelguy/wilder.nvim :require :plugins.wilder) + (use! :folke/which-key.nvim :require :plugins.which_key) + (use! :nvim-neo-tree/neo-tree.nvim :require :plugins.neo_tree + :depends [:nvim-lua/plenary.nvim :nvim-tree/nvim-web-devicons + :MunifTanjim/nui.nvim :3rd/image.nvim]) + (use! :sindrets/winshift.nvim :require :plugins.winshift) + (use! :rcarriga/nvim-notify :require :plugins.notify) + (use! :akinsho/toggleterm.nvim :require :plugins.toggleterm) + + ;floating_mode + (use! :Iron-E/nvim-libmodal) + + + ;lsp + (use! :nvim-treesitter/nvim-treesitter :require :plugins.treesitter) + (use! :ray-x/lsp_signature.nvim :require :plugins.lsp_signature) + (use! :hrsh7th/cmp-nvim-lsp) + (use! :hrsh7th/nvim-cmp :require :plugins.cmp) + (use! :neovim/nvim-lspconfig :require :plugins.lspconfig) + + ;themes + (use! :kdheepak/monochrome.nvim) + (use! :nyoom-engineering/oxocarbon.nvim) + (use! :NTBBloodbath/doom-one.nvim) +) diff --git a/plugin/0-tangerine.lua b/plugin/0-tangerine.lua new file mode 100644 index 0000000..a47ac1b --- /dev/null +++ b/plugin/0-tangerine.lua @@ -0,0 +1,41 @@ +-- ~/.config/nvim/plugin/0-tangerine.lua or ~/.config/nvim/init.lua + +-- pick your plugin manager +local pack = "packer" + +local function bootstrap(url, ref) + local name = url:gsub(".*/", "") + local path + + if pack == "lazy" then + path = vim.fn.stdpath("data") .. "/lazy/" .. name + vim.opt.rtp:prepend(path) + else + path = vim.fn.stdpath("data") .. "/site/pack/".. pack .. "/start/" .. name + end + + if vim.fn.isdirectory(path) == 0 then + print(name .. ": installing in data dir...") + + vim.fn.system {"git", "clone", url, path} + if ref then + vim.fn.system {"git", "-C", path, "checkout", ref} + end + + vim.cmd "redraw" + print(name .. ": finished installing") + end +end + +-- for stable version [recommended] +-- bootstrap("https://github.com/udayvir-singh/hibiscus.nvim", "v1.7") + +-- for git head +bootstrap("https://github.com/udayvir-singh/hibiscus.nvim") + +require'tangerine'.setup{ + compiler = { + verbose = false, + hooks = { "onsave", "oninit" } + } +} |