diff options
Diffstat (limited to 'fnl/settings')
-rw-r--r-- | fnl/settings/init.fnl | 2 | ||||
-rw-r--r-- | fnl/settings/keymaps.fnl | 52 | ||||
-rw-r--r-- | fnl/settings/options.fnl | 80 |
3 files changed, 134 insertions, 0 deletions
diff --git a/fnl/settings/init.fnl b/fnl/settings/init.fnl new file mode 100644 index 0000000..bff9c86 --- /dev/null +++ b/fnl/settings/init.fnl @@ -0,0 +1,2 @@ +;; Load nvim settings +(module settings {require {_ settings.options _ settings.keymaps}}) diff --git a/fnl/settings/keymaps.fnl b/fnl/settings/keymaps.fnl new file mode 100644 index 0000000..52254cd --- /dev/null +++ b/fnl/settings/keymaps.fnl @@ -0,0 +1,52 @@ +;; Custom keymappings. +(module settings.keymaps {autoload {nvim aniseed.nvim}}) + +(def- opts {:noremap true :silent true}) +(defn- map [mode lhs rhs opt] (nvim.set_keymap mode lhs rhs opt)) + +;;Remap space as leader key +(map "" :<Space> :<Nop> opts) +(set nvim.g.mapleader " ") +(set nvim.g.maplocalleader " ") + +;; Modes +;; normal_mode = "n" +;; insert_mode = "i" +;; visual_mode = "v" +;; visual_block_mode = "x" +;; term_mode = "t" +;; command_mode = "c" + +;; Normal ;; +;; Better window navigation +(map :n :<C-h> :<C-w>h opts) +(map :n :<C-j> :<C-w>j opts) +(map :n :<C-k> :<C-w>k opts) +(map :n :<C-l> :<C-w>l opts) + +;; Resize with arrows +(map :n :<C-Up> ":resize -2<CR>" opts) +(map :n :<C-Down> ":resize +2<CR>" opts) +(map :n :<C-Left> ":vertical resize -2<CR>" opts) +(map :n :<C-Right> ":vertical resize +2<CR>" opts) + +;; Navigate buffers +(map :n :<S-l> ":bnext<CR>" opts) +(map :n :<S-h> ":bprevious<CR>" opts) + +;; Visual ;; +;; Stay in indent mode +(map :v "<" :<gv opts) +(map :v ">" :>gv opts) + +;; Visual Block ;; +;; Move text up and down +(map :x :J ":move '>+1<CR>gv-gv" opts) +(map :x :K ":move '<-2<CR>gv-gv" opts) +(map :x :<A-j> ":move '>+1<CR>gv-gv" opts) +(map :x :<A-k> ":move '<-2<CR>gv-gv" opts) + +;; Move text up and down +(map :v :<A-j> ":m .+1<CR>==" opts) +(map :v :<A-k> ":m .-2<CR>==" opts) +(map :v :p "\"_dP" opts) diff --git a/fnl/settings/options.fnl b/fnl/settings/options.fnl new file mode 100644 index 0000000..f49867e --- /dev/null +++ b/fnl/settings/options.fnl @@ -0,0 +1,80 @@ +;; Sets options in neovim +(module settings.options {autoload {nvim aniseed.nvim}}) + +(def- opts {:backup false + ;; creates a backup file + :clipboard :unnamedplus + ;; allows neovim to access the system clipboard + :cmdheight 2 + ;; more space in the neovim command line for displaying messages + :completeopt {:menuone :noselect} + ;; mostly just for cmp + :conceallevel 0 + ;; so that `` is visible in markdown files + :fileencoding :utf-8 + ;; the encoding written to a file + :hlsearch true + ;; highlight all matches on previous search pattern + :ignorecase true + ;; ignore case in search patterns + :mouse "" + ;; disable the mouse to be used in neovim + :pumheight 10 + ;; pop up menu height + :showmode false + ;; we don't need to see things like ;; INSERT ;; anymore + :showtabline 2 + ;; always show tabs + :smartcase true + ;; smart case + :smartindent true + ;; make indenting smarter again + :splitbelow true + ;; force all horizontal splits to go below current window + :splitright true + ;; force all vertical splits to go to the right of current window + :swapfile false + ;; creates a swapfile + :termguicolors true + ;; set term gui colors (most terminals support this) + :timeoutlen 1000 + ;; time to wait for a mapped sequence to complete (in milliseconds) + :undofile true + ;; enable persistent undo + :updatetime 300 + ;; faster completion (4000ms default) + :writebackup false + ;; if a file is being edited by another program (or was written to file while editing with another program), it is not allowed to be edited + :expandtab true + ;; convert tabs to spaces + :shiftwidth 2 + ;; the number of spaces inserted for each indentation + :tabstop 2 + ;; insert 2 spaces for a tab + :cursorline true + ;; highlight the current line + :number true + ;; set numbered lines + :relativenumber true + ;; set relative numbered lines + :numberwidth 4 + ;; set number column width to 2 {default 4} + :signcolumn :yes + ;; always show the sign column, otherwise it would shift the text each time + :wrap false + ;; display lines as one long line + :scrolloff 8 + ;; is one of my fav + :sidescrolloff 8 + :guifont "monospace:h17" + ;; the font used in graphical neovim applications + }) + +(defn- apply-opts [] (each [k v (pairs opts)] + (tset vim.opt k v))) + +(apply-opts) +(vim.cmd "set whichwrap+=<,>,[,],h,l") +(vim.cmd "set iskeyword+=-") +(vim.cmd "set formatoptions-=cro") +(nvim.ex.set :shortmess+=c) |