summaryrefslogtreecommitdiff
path: root/fnl/plugins/editor
diff options
context:
space:
mode:
Diffstat (limited to 'fnl/plugins/editor')
-rw-r--r--fnl/plugins/editor/comment.fnl16
-rw-r--r--fnl/plugins/editor/harpoon.fnl31
-rw-r--r--fnl/plugins/editor/neogit.fnl12
-rw-r--r--fnl/plugins/editor/orgmode.fnl32
-rw-r--r--fnl/plugins/editor/persistence.fnl21
-rw-r--r--fnl/plugins/editor/spectre.fnl28
-rw-r--r--fnl/plugins/editor/telescope.fnl22
-rw-r--r--fnl/plugins/editor/toggleterm.fnl20
8 files changed, 172 insertions, 10 deletions
diff --git a/fnl/plugins/editor/comment.fnl b/fnl/plugins/editor/comment.fnl
index 63401a0..f15e61f 100644
--- a/fnl/plugins/editor/comment.fnl
+++ b/fnl/plugins/editor/comment.fnl
@@ -1,7 +1,23 @@
;; Language aware commenting.
+(local user-cmds [[:CommentNormal
+ (lambda []
+ (let [comment-api (require :Comment.api)]
+ (comment-api.toggle.linewise.current)))
+ {:nargs 0}]
+ [:CommentVisual
+ (lambda []
+ (let [comment-api (require :Comment.api)]
+ (comment-api.toggle.linewise (vim.fn.visualmode))))
+ {:nargs 0}]])
+
+(fn init []
+ (let [cmds (require :util.cmds)]
+ (cmds.create-user-cmds user-cmds)))
+
{1 :numToStr/Comment.nvim
:event :BufReadPost
+ : inti
:opts {:toggler {;; Line-comment toggle keymap
:line :mcc
;; Block-comment toggle keymap
diff --git a/fnl/plugins/editor/harpoon.fnl b/fnl/plugins/editor/harpoon.fnl
index 167cf3b..8a9818f 100644
--- a/fnl/plugins/editor/harpoon.fnl
+++ b/fnl/plugins/editor/harpoon.fnl
@@ -1,12 +1,37 @@
;; Harpoon files for navigation.
+(local user-cmds [[:HarpoonAdd
+ (lambda []
+ (let [harpoon (require :harpoon.mark)]
+ (harpoon.add_file)))
+ {:nargs 0}]
+ [:HarpoonNext
+ (lambda []
+ (let [harpoon (require :harpoon.ui)]
+ (harpoon.nav_next)))
+ {:nargs 0}]
+ [:HarpoonPrev
+ (lambda []
+ (let [harpoon (require :harpoon.ui)]
+ (harpoon.nav_prev)))
+ {:nargs 0}]
+ [:HarpoonUI
+ (lambda []
+ (let [harpoon (require :harpoon.ui)]
+ (harpoon.toggle_quick_menu)))
+ {:nargs 0}]])
+
(fn telescope-ext [ext fun opts]
(let [telescope (require :telescope)
themes (require :telescope.themes)
theme (. opts :theme)]
((. (. (. telescope :extensions) ext) fun) ((. themes theme) opts))))
-(fn setup []
+(fn init []
+ (let [cmds (require :util.cmds)]
+ (cmds.create-user-cmds user-cmds)))
+
+(fn config []
(vim.keymap.set :n :<tab>
(fn []
(telescope-ext :harpoon :marks
@@ -22,9 +47,9 @@
{1 :ThePrimeagen/harpoon
:event :BufReadPost
+ : init
:keys [{1 :ma 2 :<cmd>HarpoonAdd<cr> :desc :Harpoon}
{1 :mr 2 :<cmd>HarpoonUI<cr> :desc "Harpoon UI"}
{1 :ms 2 :<cmd>HarpoonPrev<cr> :desc "Harpoon Prev"}
{1 :mt 2 :<cmd>HarpoonNext<cr> :desc "Harpoon Next"}]
- :config (fn []
- (setup))}
+ : config}
diff --git a/fnl/plugins/editor/neogit.fnl b/fnl/plugins/editor/neogit.fnl
index af3a738..5a3c5e3 100644
--- a/fnl/plugins/editor/neogit.fnl
+++ b/fnl/plugins/editor/neogit.fnl
@@ -1,9 +1,21 @@
;; Git ui.
+(local auto-cmds [[:FileType
+ {:pattern [:NeogitStatus
+ :NeogitCommitMessage
+ :NeogitNotification
+ :NeogitCommitView]
+ :command "setlocal spell!"}]])
+
+(fn init []
+ (let [cmds (require :util.cmds)]
+ (cmds.create-auto-cmds auto-cmds)))
+
(local opts {:integrations {:diffview true :telescope true}})
{1 :TimUntersberger/neogit
:cmd :Neogit
: opts
+ : init
:dependencies [:nvim-lua/plenary.nvim]
:keys [{1 :<leader>gm 2 :<cmd>Neogit<cr> :desc :Neogit}]}
diff --git a/fnl/plugins/editor/orgmode.fnl b/fnl/plugins/editor/orgmode.fnl
index bb67b88..5324b8d 100644
--- a/fnl/plugins/editor/orgmode.fnl
+++ b/fnl/plugins/editor/orgmode.fnl
@@ -1,5 +1,28 @@
;; Orgmode for nvim.
+(local user-cmds [[:OrgAgendaPrompt
+ (lambda []
+ (let [orgmode (require :orgmode)]
+ (orgmode.action :agenda.prompt)))
+ {:nargs 0}]
+ [:OrgCapturePrompt
+ (lambda []
+ (let [orgmode (require :orgmode)]
+ (orgmode.action :capture.prompt)))
+ {:nargs 0}]])
+
+(local auto-cmds
+ [[:FileType
+ {:pattern :org
+ :callback (fn []
+ (tset vim.opt_local :conceallevel 2)
+ (tset vim.opt_local :concealcursor :nc))}]])
+
+(fn init []
+ (let [cmds (require :util.cmds)]
+ (cmds.create-user-cmds user-cmds)
+ (cmds.create-auto-cmds auto-cmds)))
+
(local templates
{:t {:description :Task :template "* TODO %?\n %u\n DEADLINE: %T\n"}
:m {:description :Meeting :template "* Meeting %?"}
@@ -11,14 +34,15 @@
:org_default_notes_file "~/.local/share/org/refile.org"
:org_agenda_templates templates})
-(fn setup []
- (let [orgmode (require :orgmode)]
+(fn config []
+ (let [orgmode (require :orgmode)
+ cmds (require :util.cmds)]
(orgmode.setup_ts_grammar)
(orgmode.setup opts)))
{1 :nvim-orgmode/orgmode
- :config (fn []
- (setup))
+ : config
+ : init
:event :BufReadPost
:keys [{1 :ga 2 :<cmd>OrgAgendaPrompt<cr> :desc "Open agenda prompt"}
{1 :gc 2 :<cmd>OrgCapturePrompt<cr> :desc "Open capture prompt"}
diff --git a/fnl/plugins/editor/persistence.fnl b/fnl/plugins/editor/persistence.fnl
index 0b4e7a8..492ef0d 100644
--- a/fnl/plugins/editor/persistence.fnl
+++ b/fnl/plugins/editor/persistence.fnl
@@ -1,7 +1,28 @@
;; Session manager.
+(local user-cmds [[:RestoreSession
+ (lambda []
+ (let [persistence (require :persistence)]
+ (persistence.load)))
+ {:nargs 0}]
+ [:RestoreLastSession
+ (lambda []
+ (let [persistence (require :persistence)]
+ (persistence.load {:last true})))
+ {:nargs 0}]
+ [:IgnoreSession
+ (lambda []
+ (let [persistence (require :persistence)]
+ (persistence.stop)))
+ {:nargs 0}]])
+
+(fn init []
+ (let [cmds (require :util.cmds)]
+ (cmds.create-user-cmds user-cmds)))
+
{1 :folke/persistence.nvim
:event :VeryLazy
+ : init
:keys [{1 :<leader>sn 2 :<cmd>RestoreSession<cr> :desc "Restore session"}
{1 :<leader>se
2 :<cmd>RestoreLastSession<cr>
diff --git a/fnl/plugins/editor/spectre.fnl b/fnl/plugins/editor/spectre.fnl
index 526b196..81cc77c 100644
--- a/fnl/plugins/editor/spectre.fnl
+++ b/fnl/plugins/editor/spectre.fnl
@@ -1,5 +1,32 @@
;; Find and replace.
+(local user-cmds [[:Replace
+ (lambda []
+ (let [spectre (require :spectre)]
+ (spectre.open)))
+ {:nargs 0}]
+ [:ReplaceWord
+ (lambda []
+ (let [spectre (require :spectre)]
+ (spectre.open_visual {:select_word true})))
+ {:nargs 0}]
+ [:ReplaceInBuf
+ (lambda []
+ (let [spectre (require :spectre)]
+ (spectre.open_file_search)))
+ {:nargs 0}]])
+
+(local auto-cmds
+ [[:FileType
+ {:pattern [:spectre_panel]
+ :command "nnoremap <silent> <buffer> q :close<CR>"}]
+ [:FileType {:pattern [:spectre_panel] :command "setlocal spell!"}]])
+
+(fn init []
+ (let [cmds (require :util.cmds)]
+ (cmds.create-user-cmds user-cmds)
+ (cmds.create-auto-cmds auto-cmds)))
+
(local opts {:color_devicons true
:highlight {:ui :String :search :DiffChange :replace :DiffDelete}
:mapping {:toggle_line {:map :t
@@ -53,6 +80,7 @@
{1 :windwp/nvim-spectre
:event :BufReadPost
+ : init
:keys [{1 :<leader>rn 2 :<cmd>ReplaceInBuf<cr> :desc "Replace in Buffer"}
{1 :<leader>re 2 :<cmd>Replace<cr> :desc :Replace}
{1 :<leader>ri 2 :<cmd>ReplaceWord<cr> :desc "Replace Word"}]
diff --git a/fnl/plugins/editor/telescope.fnl b/fnl/plugins/editor/telescope.fnl
index 8f2bff3..83cb4a1 100644
--- a/fnl/plugins/editor/telescope.fnl
+++ b/fnl/plugins/editor/telescope.fnl
@@ -6,6 +6,22 @@
(each [_ extension (ipairs extensions)]
(telescope.load_extension extension)))
+(fn telescope-builtin [builtin opts]
+ (let [telescope (require :telescope.builtin)
+ themes (require :telescope.themes)
+ theme (. opts :theme)]
+ ((. telescope builtin) ((. themes theme) opts))))
+
+(local user-cmds [[:FindFiles
+ (lambda []
+ (telescope-builtin :find_files
+ {:theme :get_dropdown :previewer false}))
+ {:nargs 0}]])
+
+(fn init []
+ (let [cmds (require :util.cmds)]
+ (cmds.create-user-cmds user-cmds)))
+
(local keys [{1 :mf 2 :<cmd>FindFiles<cr> :desc "Find Files"}
{1 :mg
2 "<cmd>Telescope live_grep theme=dropdown<cr>"
@@ -60,7 +76,7 @@
2 "<cmd>Telescope lsp_document_symbols theme=dropdown<cr>"
:desc "Document Symbols"}])
-(fn setup []
+(fn config []
(let [telescope (require :telescope)
actions (require :telescope.actions)
icons (require :plugins.icons)]
@@ -140,8 +156,8 @@
{1 :nvim-telescope/telescope.nvim
:cmd :Telescope
- :config (fn []
- (setup))
+ : init
+ : config
:dependencies [:nvim-lua/popup.nvim
:nvim-telescope/telescope-frecency.nvim
{1 :nvim-telescope/telescope-fzf-native.nvim :build :make}
diff --git a/fnl/plugins/editor/toggleterm.fnl b/fnl/plugins/editor/toggleterm.fnl
index 89d203d..9c2c5dc 100644
--- a/fnl/plugins/editor/toggleterm.fnl
+++ b/fnl/plugins/editor/toggleterm.fnl
@@ -1,6 +1,26 @@
;; Terminal inside nvim.
+(local auto-cmds [[:TermOpen
+ {:pattern "term://*toggleterm#*"
+ :callback (fn []
+ (vim.keymap.set :t :<C-h> "<Cmd>wincmd h<CR>"
+ {})
+ (vim.keymap.set :t :<C-j> "<Cmd>wincmd j<CR>"
+ {})
+ (vim.keymap.set :t :<C-k> "<Cmd>wincmd k<CR>"
+ {})
+ (vim.keymap.set :t :<C-l> "<Cmd>wincmd l<CR>"
+ {}))}]
+ [:TermOpen
+ {:pattern ["term://*toggleterm#*"]
+ :command "setlocal spell!"}]])
+
+(fn init []
+ (let [cmds (require :util.cmds)]
+ (cmds.create-auto-cmds auto-cmds)))
+
{1 :akinsho/toggleterm.nvim
:cmd :ToggleTerm
+ : init
:keys [{1 :<leader>t 2 :<cmd>ToggleTerm<cr> :desc :Terminal}]
:opts {:size 24 :shade_terminals false}}