diff options
| author | aktersnurra <gustaf@gustafrydholm.xyz> | 2026-04-16 15:10:52 +0200 |
|---|---|---|
| committer | aktersnurra <gustaf@gustafrydholm.xyz> | 2026-04-17 23:28:47 +0200 |
| commit | 152fd9d787c7433cad95795992e444250cb83216 (patch) | |
| tree | 0ae3b4a3b42005dc08b1400981cfc4c1f37297fe /fnl/settings | |
| parent | 83a7f3505a441f1c152229d50a3d6011951a82fc (diff) | |
Add fff and other nice things such as macros
Diffstat (limited to 'fnl/settings')
| -rw-r--r-- | fnl/settings/autocmds.fnl | 54 | ||||
| -rw-r--r-- | fnl/settings/keymaps.fnl | 72 | ||||
| -rw-r--r-- | fnl/settings/options.fnl | 131 |
3 files changed, 105 insertions, 152 deletions
diff --git a/fnl/settings/autocmds.fnl b/fnl/settings/autocmds.fnl index 9b5eac5..2f0a3cd 100644 --- a/fnl/settings/autocmds.fnl +++ b/fnl/settings/autocmds.fnl @@ -1,30 +1,30 @@ ;; Autocommands for nvim. -(local auto-cmds [[:FileType - {:pattern [:qf :help :man :lspinfo] - :command "nnoremap <silent> <buffer> q :close<CR>"}] - [:TextYankPost - {:callback (λ [] - (vim.highlight.on_yank {:higroup :Visual - :timeout 200}))}] - [:BufWinEnter {:command "setlocal formatoptions-=cro"}] - [:FileType {:pattern :qf :command "set nobuflisted"}] - [:FileType - {:pattern [:gitcommit :markdown] :command "setlocal wrap"}] - [:VimResized {:command "tabdo wincmd ="}] - [[:FocusGained :BufEnter :CursorHold :CursorHoldI] - {:pattern "*" - :callback (fn [] - (when (= (vim.fn.mode) :n) - (vim.cmd :checktime)))}] - [[:InsertLeave :WinEnter] - {:callback (λ [] - (let [cursorline (require :settings.cursorline)] - cursorline.show))}] - [[:InsertEnter :WinLeave] - {:callback (λ [] - (let [cursorline (require :settings.cursorline)] - cursorline.hide))}]]) +(import-macros {: autocmds} :macros) -(let [{: create-auto-cmds} (require :util.cmds)] - (create-auto-cmds auto-cmds)) +(autocmds + [:FileType + {:pattern [:qf :help :man :lspinfo] + :command "nnoremap <silent> <buffer> q :close<CR>"}] + [:TextYankPost + {:callback (λ [] + (vim.highlight.on_yank {:higroup :Visual + :timeout 200}))}] + [:BufWinEnter {:command "setlocal formatoptions-=cro"}] + [:FileType {:pattern :qf :command "set nobuflisted"}] + [:FileType + {:pattern [:gitcommit :markdown] :command "setlocal wrap"}] + [:VimResized {:command "tabdo wincmd ="}] + [[:FocusGained :BufEnter :CursorHold :CursorHoldI] + {:pattern "*" + :callback (fn [] + (when (= (vim.fn.mode) :n) + (vim.cmd :checktime)))}] + [[:InsertLeave :WinEnter] + {:callback (λ [] + (let [cursorline (require :settings.cursorline)] + cursorline.show))}] + [[:InsertEnter :WinLeave] + {:callback (λ [] + (let [cursorline (require :settings.cursorline)] + cursorline.hide))}]) diff --git a/fnl/settings/keymaps.fnl b/fnl/settings/keymaps.fnl index 14cd160..fcc7511 100644 --- a/fnl/settings/keymaps.fnl +++ b/fnl/settings/keymaps.fnl @@ -1,44 +1,34 @@ ;; Custom keymappings. -(local opts {:noremap true :silent true}) +(import-macros {: keymaps} :macros) -(local mappings [;;Remap space as leader key - ["" :<Space> :<Nop> {}] - ;; Normal ;; - ;; Resize with arrows - [:n :<m-f> :<c-w>+ {}] - [:n :<m-p> :<c-w>- {}] - [:n "<m-,>" :<c-w>5< {}] - [:n :<m-.> :<c-w>5> {}] - ;; Visual ;; - ;; Stay in indent mode - [:v "<" :<gv {}] - [:v ">" :>gv {}] - ;; Visual Block ;; - ;; Move text up and down - [:x :J ":move '>+1<CR>gv-gv" {}] - [:x :K ":move '<-2<CR>gv-gv" {}] - ;; Move text up and down - [:v :<c-n> ":m .+1<CR>==" {}] - [:v :<c-e> ":m .-2<CR>==" {}] - [:v :p "\"_dP" {}] - ;; Splits - [:n :<m-s> :<cmd>split<CR> {}] - [:n :<m-t> :<cmd>vsplit<CR> {}] - ;; Buf navigation - [:n :<c-n> :<cmd>bprev<CR> {}] - [:n :<c-e> :<cmd>bnext<CR> {}] - ;; Jump half a page and centralize the view - [:n :<c-d> :<c-d>zz {}] - [:n :<c-u> :<c-u>zz {}] - ;; Remove highlighted search - [:n :<m-h> :<cmd>nohlsearch<CR> {}] - ;; jump to eol in insert mode - [:i :<c-e> :<c-o>$ {}] - ;; Force refresh - [:n :mj "<cmd>:e<CR>" {:desc :Refresh}]]) - -(each [_ mapping (ipairs mappings)] - (match mapping - [mode key cmd desc] - (vim.api.nvim_set_keymap mode key cmd (vim.tbl_extend :force opts desc)))) +(keymaps + ;; Resize with arrows + [:n :<m-f> :<c-w>+ {}] + [:n :<m-p> :<c-w>- {}] + [:n "<m-,>" :<c-w>5< {}] + [:n :<m-.> :<c-w>5> {}] + ;; Stay in indent mode + [:v "<" :<gv {}] + [:v ">" :>gv {}] + ;; Move text up and down + [:x :J ":move '>+1<CR>gv-gv" {}] + [:x :K ":move '<-2<CR>gv-gv" {}] + [:v :<c-n> ":m .+1<CR>==" {}] + [:v :<c-e> ":m .-2<CR>==" {}] + [:v :p "\"_dP" {}] + ;; Splits + [:n :<m-s> :<cmd>split<CR> {}] + [:n :<m-t> :<cmd>vsplit<CR> {}] + ;; Buf navigation + [:n :<c-n> :<cmd>bprev<CR> {}] + [:n :<c-e> :<cmd>bnext<CR> {}] + ;; Jump half a page and centralize the view + [:n :<c-d> :<c-d>zz {}] + [:n :<c-u> :<c-u>zz {}] + ;; Remove highlighted search + [:n :<m-h> :<cmd>nohlsearch<CR> {}] + ;; Jump to eol in insert mode + [:i :<c-e> :<c-o>$ {}] + ;; Force refresh + [:n :mj "<cmd>:e<CR>" {:desc :Refresh}]) diff --git a/fnl/settings/options.fnl b/fnl/settings/options.fnl index e7ece5f..a659aae 100644 --- a/fnl/settings/options.fnl +++ b/fnl/settings/options.fnl @@ -1,91 +1,54 @@ ;; Sets options in neovim -(local spellfile (.. (os.getenv :XDG_CONFIG_HOME) :/nvim/spell/en.utf-8.add)) +(import-macros {: set-opts} :macros) -(local opts {;; creates a backup file - :backup false - ;; allows neovim to access the system clipboard - :clipboard :unnamedplus - ;; more space in the neovim command line for displaying messages - :cmdheight 1 - ;; mostly just for cmp - :completeopt {:menuone :noselect} - ;; so that `` is visible in markdown files - :conceallevel 0 - ;; the encoding written to a file - :fileencoding :utf-8 - ;; highlight all matches on previous search pattern - :hlsearch true - ;; ignore case in search patterns - :ignorecase true - ;; disable the mouse to be used in neovim - :mouse "" - ;; pop up menu height - :pumheight 10 - ;; we don't need to see things like ;; INSERT ;; anymore - :showmode false - ;; never show tabs - :showtabline 0 - ;; smart case - :smartcase true - ;; make indenting smarter again - :smartindent true - ;; force all horizontal splits to go below current window - :splitbelow true - ;; force all vertical splits to go to the right of current window - :splitright true - ;; creates a swapfile - :swapfile false - ;; set term gui colors (most terminals support this) - :termguicolors true - ;; time to wait for a mapped sequence to complete (in milliseconds) - :timeoutlen 1000 - ;; enable persistent undo - :undofile true - ;; faster completion (4000ms default) - :updatetime 1000 - ;; 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 - :writebackup false - ;; convert tabs to spaces - :expandtab true - ;; the number of spaces inserted for each indentation - :shiftwidth 2 - ;; insert 2 spaces for a tab - :tabstop 2 - ;; highlight the current line - :cursorline true - ;; set numbered lines - :number true - ;; set relative numbered lines - :relativenumber true - ;; set number column width to 2 {default 4} - :numberwidth 2 - ;; always show the sign column, otherwise it would shift the text - ;; each time - :signcolumn :yes - ;; display lines as one long line - :wrap false - :laststatus 3 - :autoread true - ;; is one of my fav - :scrolloff 8 - :sidescrolloff 8 - :colorcolumn :88 - :shortmess :filnxtToOFWIcC - :spell true - : spellfile - :spelllang [:en_us] - ;; the font used in graphical neovim applications - :guifont "monospace:h17" - :splitkeep :screen - :inccommand :split - :winborder :single - :shada ["'10" :<0 :s10 :h]}) +(local spellfile (.. (os.getenv :XDG_CONFIG_HOME) :/nvim/spell/en.utf-8.add)) -(each [k v (pairs opts)] - (tset vim.opt k v)) +(set-opts {:backup false + :clipboard :unnamedplus + :cmdheight 1 + :completeopt {:menuone :noselect} + :conceallevel 0 + :fileencoding :utf-8 + :hlsearch true + :ignorecase true + :mouse "" + :pumheight 10 + :showmode false + :showtabline 0 + :smartcase true + :smartindent true + :splitbelow true + :splitright true + :swapfile false + :termguicolors true + :timeoutlen 1000 + :undofile true + :updatetime 1000 + :writebackup false + :expandtab true + :shiftwidth 2 + :tabstop 2 + :cursorline true + :number true + :relativenumber true + :numberwidth 2 + :signcolumn :yes + :wrap false + :laststatus 3 + :autoread true + :scrolloff 8 + :sidescrolloff 8 + :colorcolumn :88 + :shortmess :filnxtToOFWIcC + :spell true + : spellfile + :spelllang [:en_us] + :guifont "monospace:h17" + :splitkeep :screen + :inccommand :split + :winborder :single + :shada ["'10" :<0 :s10 :h]}) (vim.opt.jumpoptions:append :stack) |