Compare commits

..

1 Commits

Author SHA1 Message Date
Proctor
414909f66f look into language eval with Conjure in Markdown Language blocks 2022-07-07 14:41:27 -05:00
30 changed files with 448 additions and 891 deletions

View File

@@ -1,32 +0,0 @@
# This is Git's per-user configuration file.
[user]
email = steven.proctor@gmail.com
name = Proctor
[core]
editor = nvim
excludesFile = ~/.gitignore.global
[init]
defaultBranch = main
[alias] ; Command aliases for the git[1] command wrapper
last = cat-file commit HEAD
[branch]
autoSetupRebase = always
[checkout]
defaultRemote = origin
[merge]
ff = only
[push]
autoSetupRemote = true
default = upstream
[rerere]
enabled = true
[remote]
pushDefault = origin
;; This is last, take in any other local file overrides
[include]
path = ~/.gitconfig.local ; find ".gitconfig.local" in your `$HOME` directory
[pull]
ff = only

View File

@@ -21,8 +21,6 @@
:false :⊥ :false :⊥
;; and ;; and
;; or ;; or
;; if-not
;; when-not
;; (not ;; (not
;; None | ∅ ;; None | ∅
;; true, false | , ⊥ (top and bottom from logic) ;; true, false | , ⊥ (top and bottom from logic)
@@ -48,18 +46,16 @@
(set nvim.wo.conceallevel 2) (set nvim.wo.conceallevel 2)
(set nvim.wo.conceallevel 0))) (set nvim.wo.conceallevel 0)))
;(setup-conceals)
;(toggle-conceal)
;(if true true false) ;(if true true false)
(nu.fn-bridge :ToggleConceal :dotfiles.conceal :toggle-conceal {:return false}) (nu.fn-bridge :ToggleConceal :dotfiles.conceal :toggle-conceal {:return false})
(nu.fn-bridge :SetupConceals :dotfiles.conceal :setup-conceals {:return false}) (nu.fn-bridge :SetupConceals :dotfiles.conceal :setup-conceals {:return false})
(u.nnoremap :<leader>tc "call ToggleConceal()") (u.nnoremap :<leader>ct "call ToggleConceal()")
(def pretty-filetypes [:fennel (def pretty-filetypes [:fennel
:clojure]) :clojure])
(each [_ ftype (pairs pretty-filetypes)] ; (each [_ ftype (pairs pretty-filetypes)]
(nvim.ex.autocmd :FileType ftype :call "SetupConceals()")) ; (nvim.ex.autocmd :FileType ftype :call "SetupConceals()"))
;

View File

@@ -1,123 +1,121 @@
(module dotfiles.core {autoload {a aniseed.core} (module dotfiles.core
require {anenv aniseed.env {autoload
nvim aniseed.nvim {a aniseed.core}
nu aniseed.nvim.util require
u dotfiles.util}}) {anenv aniseed.env
nvim aniseed.nvim
nu aniseed.nvim.util
u dotfiles.util
}})
(nvim.ex.set :shortmess+=c)
; don't give |ins-completion-menu| messages. (nvim.ex.set "shortmess+=c") ; don't give |ins-completion-menu| messages.
(nvim.ex.set :path+=**) (nvim.ex.set "path+=**")
(nvim.ex.set "wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/*") (nvim.ex.set "wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/*")
(defn- safe-source [filename] (defn- safe-source
(let [glob (nvim.fn.glob filename)] [filename]
(if (not (a.empty? glob)) (let [glob (nvim.fn.glob filename)]
(nvim.ex.source filename)))) (if (not (a.empty? glob))
(nvim.ex.source filename))))
; (a.map safe-source ["~/.vimrc" "~/.vimrc.local"]) (a.map safe-source ["~/.vimrc" "~/.vimrc.local"])
(def- backup-dir (.. (nvim.fn.glob :$HOME) :/.vim/backup))
(def- undo-dir (.. (nvim.fn.glob :$HOME) :/.vim/backup))
(def- on-opts [:autoindent (def- backup-dir (.. (nvim.fn.glob "$HOME") "/.vim/backup"))
:autoread (def- undo-dir (.. (nvim.fn.glob "$HOME") "/.vim/backup"))
:expandtab
:exrc
; allow project level (neo)vim files
:hlsearch
:ignorecase
:incsearch
:number
:ruler
:secure
:shiftround
; When at 3 spaces and I hit >>, go to 4, not 5.
:showcmd
; shows (parital) command in the status line
:showmatch
:smartcase
:splitbelow
:splitright
:termguicolors
:title
:undofile
:wildmenu])
(def- val-based-opts {; :t_Co 256 (def- on-opts [
:laststatus 2 :autoindent
:encoding :utf-8 :autoread
:history 500 :expandtab
:redrawtime 5000 :exrc ; allow project level (neo)vim files
:scrolloff 3 :hlsearch
:guifont :Hasklig :ignorecase
:guifontwide :Hasklig :incsearch
:background :dark :number
:backupdir backup-dir :ruler
:directory backup-dir :secure
;Don't clutter my dirs up with swp and tmp files :shiftround ; When at 3 spaces and I hit >>, go to 4, not 5.
:grepprg "ag --vimgrep" :showcmd ; shows (parital) command in the status line
; Use Silver Searcher instead of grep :showmatch
:tags :tags :smartcase
:updatetime 300 :splitbelow
; per coc.vim for diagnostic messages :splitright
:signcolumn "auto:1-3" :termguicolors
:colorcolumn [81 100] :title
:cmdheight 2 :undofile
; Better display for messages :wildmenu
:undodir undo-dir ])
:undolevels 1000
:undoreload 10000
:foldmethod :expr
:foldexpr "nvim_treesitter#foldexpr()"
:foldlevelstart 100
:foldlevel 99
:tabstop 2
:shiftwidth 2
:softtabstop 2
:mouse ""
:list true
:listchars "tab:➥\\ ,trail:·,"
:backspace "indent,eol,start"
;allow backspacing over everything in insert mode
:wildmode "list:longest,list:full"
:wrap false})
(def- append-val-opts {:diffopt "algorithm:patience"})
(defn- set-opt [[opt val]] (tset vim.opt (a.str opt) val)) (def- val-based-opts
{
; :t_Co 256
:laststatus 2
:encoding "utf-8"
:history 500
:redrawtime 5000
:scrolloff 3
:guifont "Hasklig"
:background "dark"
:backupdir backup-dir
:directory backup-dir ;Don't clutter my dirs up with swp and tmp files
:grepprg "ag" ; Use Silver Searcher instead of grep
:tags "tags"
:updatetime 300 ; per coc.vim for diagnostic messages
:signcolumn "auto:1-3"
:cmdheight 2 ; Better display for messages
:undodir undo-dir
:undolevels 1000
:undoreload 10000
:foldmethod "expr"
:foldexpr "nvim_treesitter#foldexpr()"
:foldlevelstart 100
:foldlevel 99
:tabstop 2
:shiftwidth 2
:softtabstop 2
:list true
:listchars "tab:➥\\ ,trail:·"
:backspace "indent,eol,start" ;allow backspacing over everything in insert mode
:wildmode "list:longest,list:full"
:wrap false
})
(defn- set-opt+ [[opt val]] (defn- set-opt
(let [existing-opt-val (a.get nvim.o opt)] [[opt val]]
(tset vim.opt (a.str opt) (a.str existing-opt-val "," val)))) (tset vim.opt (a.str opt) val))
(defn- set-opt-on [opt] (set-opt [opt true])) (defn- set-opt-on
[opt]
(set-opt [opt true]))
(a.map set-opt-on on-opts) (a.map set-opt-on on-opts)
(a.map-indexed set-opt val-based-opts) (a.map-indexed set-opt val-based-opts)
(a.map-indexed set-opt+ append-val-opts) (nvim.ex.syntax "on")
(nvim.ex.colorscheme :soluarized)
(nvim.ex.syntax :on)
;; (nvim.ex.colorscheme :soluarized)
(nvim.ex.colorscheme :solarized8)
;; (nvim.ex.autocmd "vimenter" "*" "++nested" "colorscheme" "soluarized")
(nvim.ex.autocmd :vimenter "*" :++nested :colorscheme :solarized8) (nvim.ex.autocmd "vimenter" "*" "++nested" "colorscheme" "solarized8")
;(nvim.ex.autocmd "vimenter" "*" "luafile" "treesitter.lua") ;(nvim.ex.autocmd "vimenter" "*" "luafile" "treesitter.lua")
; ;
; (nvim.fn.glob "~/.vimrc.local") ; (nvim.fn.glob "~/.vimrc.local")
(defn make-fennel-scratch [] (defn make-fennel-scratch
(nvim.command "new | setlocal bt=nofile bh=wipe nobl noswapfile nu filetype=fennel")) []
(nvim.command "new | setlocal bt=nofile bh=wipe nobl noswapfile nu filetype=fennel"))
(nu.fn-bridge :FennelScratchBuffer :dotfiles.core :make-fennel-scratch
{:return false})
(nu.fn-bridge :FennelScratchBuffer :dotfiles.core :make-fennel-scratch {:return false})
(u.nnoremap :<leader>fsb ":call FennelScratchBuffer ()<CR>") (u.nnoremap :<leader>fsb ":call FennelScratchBuffer ()<CR>")
(defn compile-fnl [] (print :recompiling) (defn compile-fnl []
(anenv.init {:force true :init :dotfiles.init})) (print :recompiling)
(anenv.init
{:force true
:init :dotfiles.init}))
(nu.fn-bridge :AniseedCompile :dotfiles.core :compile-fnl {:return false}) (nu.fn-bridge :AniseedCompile :dotfiles.core :compile-fnl {:return false})

View File

@@ -5,12 +5,11 @@
{nvim aniseed.nvim}}) {nvim aniseed.nvim}})
(require :dotfiles.core)
(require :dotfiles.plugins) (require :dotfiles.plugins)
(require :dotfiles.core)
(require :dotfiles.mapping) (require :dotfiles.mapping)
(require :dotfiles.conceal) (require :dotfiles.conceal)
(require :dotfiles.zoom-toggle) (require :dotfiles.zoom-toggle)
;(nvim.ex.source "~/.vimrc") ;(nvim.ex.source "~/.vimrc")
(a.println "(re)loaded")

View File

@@ -1,47 +1,39 @@
(module dotfiles.mapping (module dotfiles.mapping
{autoload {nvim aniseed.nvim {autoload {nvim aniseed.nvim
nu aniseed.nvim.util nu aniseed.nvim.util
core aniseed.core core aniseed.core}})
util dotfiles.util}})
(defn- noremap [mode from to] "Sets a mapping with {:noremap true}." (defn- noremap [mode from to]
(nvim.set_keymap mode from to {:noremap true})) "Sets a mapping with {:noremap true}."
(nvim.set_keymap mode from to {:noremap true}))
; (set nvim.g.mapleader "\\") ; (set nvim.g.mapleader "\\")
(defn aniseed-reload [] (noremap :n "<leader>`" ":source ~/.config/nvim/init.lua<CR>")
(each [k _ (ipairs package.loaded)] (noremap :n "<leader>!" ":call AniseedCompile()<CR>")
(when (string.match k "^dotfiles%..+")
(tset package.loaded k nil)))
((. (require :aniseed.env) :init) {:module :dotfiles.init :compile true})
(core.println "aniseed reloaded!"))
(vim.keymap.set :n "<leader>`" aniseed-reload)
; (noremap :n "<leader>`" ":source ~/.config/nvim/init.lua<CR>")
(noremap :n :<leader>! ":call AniseedCompile()<CR>")
(noremap :n :<Enter> ":nohlsearch<Enter>/<BS>") (noremap :n :<Enter> ":nohlsearch<Enter>/<BS>")
;; Correct to first spelling suggestion. ;; Correct to first spelling suggestion.
(noremap :n :<leader>zz ":normal! 1z=<cr>") (noremap :n :<leader>zz ":normal! 1z=<cr>")
;; nice paste from clipboard in insert mode ;; nice paste from clipboard in insert mode
(noremap :i :<C-V><C-O> ":set paste<CR><C-R><C-R>+<C-O>:set nopaste<CR>") (noremap :i :<C-V><C-O> ":set paste<CR><C-R><C-R>+<C-O>:set nopaste<CR>")
; Insert Date ; Insert Date
(noremap :n :<F5> "\"=strftime(\"%F\")<CR>p") (noremap :n :<F5> "\"=strftime(\"%F\")<CR>p")
(noremap :i :<F5> "<C-R>=strftime(\"%F\")<CR>") (noremap :i :<F5> "<C-R>=strftime(\"%F\")<CR>")
; Make markdown link with empty url ; Make markdown link with empty url
;map <Leader>ah S<a href="" target="_blank" rel="noopener noreferrer"><CR> ;map <Leader>ah S<a href="" target="_blank" rel="noopener noreferrer"><CR>
(noremap :v :<leader>ah (noremap :v :<leader>ah "S<a href=\"\" target=\"_blank\" rel=\"nopener noreferrer\"><CR>")
"S<a href=\"\" target=\"_blank\" rel=\"nopener noreferrer\"><CR>")
(noremap :v :<leader>ml "xi[<c-r>\"]()<esc>") (noremap :v :<leader>ml "xi[<c-r>\"]()<esc>")
(noremap :n :<C-e> :3<C-e>)
(noremap :n :<C-y> :3<C-y>) (noremap :n :<C-e> "3<C-e>")
(noremap :n :<C-y> "3<C-y>")
; Unimpaired configuration ; Unimpaired configuration
; Bubble single lines ; Bubble single lines
@@ -62,46 +54,8 @@
(noremap :n :gsh ":GitGutterStageHunk<CR>") (noremap :n :gsh ":GitGutterStageHunk<CR>")
; Open file in Marked 2 (markdown viewer) ; Open file in Marked 2 (markdown viewer)
(noremap :n :<leader>mv ":AsyncRun -mode=bang open -a Marked\\ 2.app '%:p'<cr>") (noremap :n :<leader>mv ":AsyncRun -mode=bang open -a Marked\\ 2.app \'%:p\'<cr>")
; Run current statement in DadBod-UI ; Run current statement in DadBod-UI
(nvim.ex.autocmd :FileType :sql :nmap :<leader>s :vap<leader>S) (nvim.ex.autocmd :FileType :sql :nmap :<leader>s "vap<leader>S")
(noremap :n :Q ":.!bash <CR>")
; Ruby old hash syntax to new hash syntax
;(util/lvnoremap :uhs "<C-U>s/\\([a-z][^ \\t]*\\) =>/\\1:/ge" )
;(util/lnnoremap :uhs "<C-U>s/\\([a-z][^ \\t]*\\) =>/\\1:/ge" )
; Trim trailing Whitespace in visual selection
(util.lvnoremap :tw "<C-U>s/\\s\\+$//ge<CR>:nohlsearch<Enter>/<BS>")
; Trim trailing Whitespace in current line
(util.lnnoremap :tw "<C-U>.s/\\s\\+$//ge<CR>:nohlsearch<Enter>/<BS>")
;; (noremap :n :<C-A-l> ":echo \"test\"\n")
; Window switching
; ˙ -> alt-h
; ∆ -> alt-j
; ˚ -> alt-k
; ¬ -> alt-l
;; Terminal mode
;; (noremap :t "˙" "<c-\\><c-n><c-w>h")
;; (noremap :t "∆" "<c-\\><c-n><c-w>j")
;; (noremap :t "˚" "<c-\\><c-n><c-w>k")
;; (noremap :t "¬" "<c-\\><c-n><c-w>l")
;; ;; Insert mode:
;; (noremap :i "˙" :<Esc><c-w>h)
;; (noremap :i "∆" :<Esc><c-w>j)
;; (noremap :i "˚" :<Esc><c-w>k)
;; (noremap :i "¬" :<Esc><c-w>l)
;; ;; Visual mode:
;; (noremap :v "˙" :<Esc><c-w>h)
;; (noremap :v "∆" :<Esc><c-w>j)
;; (noremap :v "˚" :<Esc><c-w>k)
;; (noremap :v "¬" :<Esc><c-w>l)
;; ;; Normal mode:
;; (noremap :n "˙" :<c-w>h)
;; (noremap :n "∆" :<c-w>j)
;; (noremap :n "˚" :<c-w>k)
;; (noremap :n "¬" :<c-w>l)

View File

@@ -1,39 +1,42 @@
(module dotfiles.plugin.cmp {autoload {nvim aniseed.nvim luasnip luasnip}}) (module dotfiles.plugin.cmp
{autoload {nvim aniseed.nvim}})
(module config.plugin.cmp {autoload {nvim aniseed.nvim cmp cmp}})
(def- cmp-src-menu-items {:buffer :buff :conjure :conj :nvim_lsp :lsp}) (module config.plugin.cmp
{autoload {nvim aniseed.nvim
cmp cmp}})
(def- cmp-srcs [{:name :nvim_lsp} (def- cmp-src-menu-items
{:name :nvim_lua} {:buffer "buff"
{:name :luasnip} :conjure "conj"
{:name :vsnip} :nvim_lsp "lsp"})
{:name :conjure}
{:name :buffer} (def- cmp-srcs
{:name :orgmode} [{:name :nvim_lsp}
{:name :emoji :max_item_count 8}]) {:name :vsnip}
{:name :conjure}
{:name :buffer}])
;; Setup cmp with desired settings ;; Setup cmp with desired settings
(let [cmp (require :cmp)] (let [cmp (require :cmp)]
(cmp.setup {:formatting {:format (fn [entry item] (cmp.setup {:formatting
(set item.menu {:format (fn [entry item]
(or (. cmp-src-menu-items (set item.menu (or (. cmp-src-menu-items entry.source.name) ""))
entry.source.name) item)}
""))
item)}
:mapping {:<C-p> (cmp.mapping.select_prev_item) :mapping {:<C-p> (cmp.mapping.select_prev_item)
:<C-n> (cmp.mapping.select_next_item) :<C-n> (cmp.mapping.select_next_item)
:<C-b> (cmp.mapping.scroll_docs (- 4)) :<C-b> (cmp.mapping.scroll_docs (- 4))
:<C-f> (cmp.mapping.scroll_docs 4) :<C-f> (cmp.mapping.scroll_docs 4)
:<C-Space> (cmp.mapping.complete) :<C-Space> (cmp.mapping.complete)
:<C-e> (cmp.mapping.close) :<C-e> (cmp.mapping.close)
:<C-y> (cmp.mapping.confirm {;; :behavior cmp.ConfirmBehavior.Insert :<CR> (cmp.mapping.confirm {:behavior cmp.ConfirmBehavior.Insert
:select true})} :select true})}
:snippet {:expand (fn [args] :snippet {:expand (fn [args]
(if args (nvim.fn.vsnip#anonymous args.body))}
(luasnip.lsp_expand args.body)))}
:sources cmp-srcs})) :sources cmp-srcs}))
;;; imap <expr> <C-j> vsnip#available(1) ? '<Plug>(vsnip-expand)' : '<C-j>' ;;; imap <expr> <C-j> vsnip#available(1) ? '<Plug>(vsnip-expand)' : '<C-j>'
;;; imap <expr> <C-l> vsnip#available(1) ? '<Plug>(vsnip-expand-or-jump)' : '<C-l>' ;;; imap <expr> <C-l> vsnip#available(1) ? '<Plug>(vsnip-expand-or-jump)' : '<C-l>'
;;; smap <expr> <C-l> vsnip#available(1) ? '<Plug>(vsnip-expand-or-jump)' : '<C-l>' ;;; smap <expr> <C-l> vsnip#available(1) ? '<Plug>(vsnip-expand-or-jump)' : '<C-l>'

View File

@@ -1,13 +1,13 @@
(module dotfiles.plugin.colorizer (module dotfiles.plugin.colorizer
{autoload {colorizer colorizer}}) {autoload {colorizer colorizer}})
(colorizer.setup [:*] (colorizer.setup {"*" {}}
{:RGB true ; #RGB hex codes, like #F00 {:RGB true ; #RGB hex codes, like #F00
:RRGGBB true ; #RRGGBB hex codes, like #00FF00 :RRGGBB true ; #RRGGBB hex codes, like #00FF00
:names true ; "Name" codes like Blue :names true ; "Name" codes like Blue
:RRGGBBAA true ; #RRGGBBAA hex codes :RRGGBBAA true ; #RRGGBBAA hex codes
:rgb_fn true ; CSS rgb() and rgba() functions :rgb_fn true ; CSS rgb() and rgba() functions
:hsl_fn true ; CSS hsl() and hsla() functions :hsl_fn true ; CSS hsl() and hsla() functions
:css true ; Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB :css true ; Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB
:css_fn true ; Enable all CSS *functions*: rgb_fn, hsl_fn :css_fn true ; Enable all CSS *functions*: rgb_fn, hsl_fn
}) })

View File

@@ -25,7 +25,6 @@
:nvim_lsp true :nvim_lsp true
:nvim_lua true :nvim_lua true
:conjure true :conjure true
:orgmode true
:vsnip true :vsnip true
:vim_dadbod_completion true}}))) :vim_dadbod_completion true}})))

View File

@@ -6,7 +6,6 @@
; (set nvim.g.conjure#eval#result_register "*") ; (set nvim.g.conjure#eval#result_register "*")
; (set nvim.g.conjure#log#botright true) ; (set nvim.g.conjure#log#botright true)
(set nvim.g.conjure#mapping#doc_word "gk") (set nvim.g.conjure#mapping#doc_word "gk")
(set nvim.g.conjure#client#clojure#nrepl#mapping#session_clone :sC)
(set nvim.g.conjure#extract#tree_sitter#enabled true) (set nvim.g.conjure#extract#tree_sitter#enabled true)
(conjure-config.assoc-in [:filetypes] (a.concat (conjure-config.filetypes) [:markdown] )) (conjure-config.assoc-in [:filetypes] (a.concat (conjure-config.filetypes) [:markdown] ))

View File

@@ -1,9 +0,0 @@
(module dotfiles.plugin.fugitive
{autoload {nvim aniseed.nvim
nu aniseed.nvim.util
core aniseed.core
util dotfiles.util}})
(nvim.ex.autocmd :FileType :fugitive :nmap :<buffer> :<leader>gp ":Git pull<CR>")
;; Determine load time of fugitive
(nvim.ex.autocmd :FileType :fugitive :nmap :<buffer> :<leader>gP ":Git push<CR>" )

View File

@@ -1,2 +0,0 @@
(module dotfiles.plugin.headlines
{autoload {headlines headlines}})

View File

@@ -1,158 +1,195 @@
(module dotfiles.plugin.lspconfig (module dotfiles.plugin.lspconfig
{autoload {a aniseed.core {autoload
u dotfiles.util {a aniseed.core
nvim aniseed.nvim u dotfiles.util
lsp vim.lsp nvim aniseed.nvim
lspconfig lspconfig nu aniseed.nvim.util
nu aniseed.nvim.util }
mason dotfiles.plugin.mason })
cmp_nvim_lsp cmp_nvim_lsp}})
(defn bufmap [mode from to] (u.noremap mode from to {:local? true})) (defn bufmap [mode from to]
(u.noremap mode from to {:local? true}))
(defn nbufmap [from to] (bufmap :n from to)) (defn nbufmap [from to]
(bufmap :n from to))
(defn xbufmap [from to]
(bufmap :x from to))
(defn xbufmap [from to] (bufmap :x from to))
(defn define-sign [level sign] (defn define-sign [level sign]
(let [sign-level (.. :DiagnosticSign level)] (let [sign-level (.. "DiagnosticSign" level)]
(nvim.fn.sign_define sign-level (nvim.fn.sign_define sign-level
{:texthl sign-level :text sign :numhl sign-level}))) {:texthl sign-level
:text sign
:numhl sign-level})))
(define-sign :Error "☢️") ; (define-sign :Error "☢️")
(define-sign :Warn "⚠️") ; (define-sign :Warn "⚠️")
(define-sign :SignHint "🔎") ; (define-sign :SignHint "🔎")
(define-sign :Info "") ; (define-sign :Info "")
; (define-sign :Error :X) (define-sign :Error "X")
; (define-sign :Warn "!") (define-sign :Warn "!")
; (define-sign :SignHint "?") (define-sign :SignHint "?")
; (define-sign :Info :i) (define-sign :Info "i")
(def core-nmappings (def core-nmappings
{:gd "lua vim.lsp.buf.definition()" {
:gD "lua vim.lsp.buf.declaration()" :gd "lua vim.lsp.buf.definition()"
:gi "lua vim.lsp.buf.implementation()" :gD "lua vim.lsp.buf.declaration()"
:gr "lua vim.lsp.buf.references()" :gi "lua vim.lsp.buf.implementation()"
:K "lua vim.lsp.buf.hover()" :gr "lua vim.lsp.buf.references()"
"[g" "lua vim.diagnostic.goto_prev()" :K "lua vim.lsp.buf.hover()"
"]g" "lua vim.diagnostic.goto_next()" "[g" "lua vim.diagnostic.goto_prev()"
;:<c-k> "lua vim.lsp.buf.signature_help()" "]g" "lua vim.diagnostic.goto_next()"
:<leader>ca "lua vim.lsp.buf.code_action()" :<c-k> "lua vim.lsp.buf.signature_help()"
:<leader>cl "lua vim.lsp.codelens.run()" :<leader>ca "lua vim.lsp.buf.code_action()"
:<leader>ic "lua vim.lsp.buf.incoming_calls()" :<leader>cl "lua vim.lsp.codelens.run()"
;; TODO: think of new mapping; conficts with org mode :<leader>ic "lua vim.lsp.buf.incoming_calls()"
;; :<leader>oc "lua vim.lsp.buf.outgoing_calls()" :<leader>oc "lua vim.lsp.buf.outgoing_calls()"
:<leader>sld "lua vim.diagnostic.open_float(nil, {source = 'always'})" :<leader>sld "lua vim.diagnostic.open_float(nil, {source = 'always'})"
:<leader>rn "lua vim.lsp.buf.rename()" :<leader>rn "lua vim.lsp.buf.rename()"
:<leader>fa "lua vim.lsp.buf.format()"}) :<leader>fa "lua vim.lsp.buf.formatting_sync()"
})
(def client-nmappings (def client-nmappings
{:clojure_lsp {:<leader>cn "call LspExecuteCommand('clean-ns')" {:clojure_lsp
:<leader>ref "call LspExecuteCommand('extract-function', input('Function name: '))" {
:<leader>id "call LspExecuteCommand('inline-symbol')" :<leader>cn "call LspExecuteCommand('clean-ns')"
:<leader>il "call LspExecuteCommand('introduce-let', input('Binding name: '))" :<leader>ref "call LspExecuteCommand('extract-function', input('Function name: '))"
:<leader>m2l "call LspExecuteCommand('move-to-let', input('Binding name: '))"}}) :<leader>id "call LspExecuteCommand('inline-symbol')"
:<leader>il "call LspExecuteCommand('introduce-let', input('Binding name: '))"
:<leader>m2l "call LspExecuteCommand('move-to-let', input('Binding name: '))"
}
})
(def client-command-lnmappings
{:clojure_lsp {:ai [:add-import-to-namespace
["input('Namespace name: ')"]]
:am [:add-missing-libspec []]
:as [:add-require-suggestion
["input('Namespace name: ')"
"input('Namespace as: ')"
"input('Namespace name: ')"]]
:cc [:cycle-coll []]
:cn [:clean-ns []]
:cp [:cycle-privacy []]
:ct [:create-test []]
:df [:drag-forward []]
:db [:drag-backward []]
:df [:drag-forward []]
:dk [:destructure-keys []]
:ed [:extract-to-def ["input('Definition name: ')"]]
:ef [:extract-function ["input('Function name: ')"]]
:el [:expand-let []]
:fe [:create-function []]
:il [:introduce-let ["input('Binding name: ')"]]
:is [:inline-symbol []]
:ma [:resolve-macro-as []]
:mf [:move-form ["input('File name: ')"]]
:ml [:move-to-let ["input('Binding name: ')"]]
:pf [:promote-fn ["input('Function name: ')"]]
:sc [:change-collection ["input('Collection type: ')"]]
:sm [:sort-map []]
:tf [:thread-first-all []]
:tF [:thread-first []]
:tl [:thread-last-all []]
:tL [:thread-last []]
:ua [:unwind-all []]
:uw [:unwind-thread []]}})
(def server-specific-opts {})
(defn bind-client-mappings [client] (defn bind-client-mappings [client]
(let [client-name (a.get client :name) (let [client-name (a.get client :name)
mappings (a.get client-nmappings client-name) mappings (a.get client-nmappings client-name)]
command-lnmappings (a.get client-command-lnmappings client-name)] (when mappings
(when mappings (each [mapping cmd (pairs mappings)]
(each [mapping cmd (pairs mappings)] (nbufmap mapping cmd)))))
(nbufmap mapping cmd)))
(when command-lnmappings
(each [lnmapping command-mapping (pairs command-lnmappings)]
(let [lsp-cmd (a.first command-mapping)
opts-str (accumulate [s "" i opt (ipairs (a.second command-mapping))]
(.. s ", " opt))
mapping (.. :<leader> lnmapping)
cmd (.. "call LspExecuteCommand('" lsp-cmd "'" opts-str ")")]
(nbufmap mapping cmd))))))
(defn on_attach [client bufnr] (defn on_attach [client bufnr]
(each [mapping cmd (pairs core-nmappings)] (each [mapping cmd (pairs core-nmappings)]
(nbufmap mapping cmd)) ; x mode mappings (nbufmap mapping cmd))
(xbufmap :<leader>fa "lua vim.lsp.buf.format()")
; -- buf_set_keymap('n', 'gs', '<Cmd>lua vim.lsp.buf.document_symbol()<CR>', opts)
; -- buf_set_keymap('n', 'gS', '<Cmd>lua vim.lsp.buf.workspace_symbol()<CR>', opts)
; -- buf_set_keymap('n', 'gt', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
; -- buf_set_keymap('n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
; -- buf_set_keymap('n', '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
; -- buf_set_keymap('n', '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
; -- buf_set_keymap('n', '<leader>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
; -- buf_set_keymap('n', '<leader>ic', "<cmd>lua vim.lsp.buf.incoming_calls()<CR>", opts)
; -- buf_set_keymap('x', '<leader>ic', "<cmd>lua vim.lsp.buf.incoming_calls()<CR>", opts)
(nvim.buf_set_option 0 :omnifunc "v:lua.vim.lsp.omnifunc")
(bind-client-mappings client)
(if client.server_capabilities.documentFormattingProvider
(nvim.ex.autocmd :BufWritePre :<buffer> ":lua vim.lsp.buf.format()"))
; (nvim.ex.autocmd "BufEnter,CursorHold,InsertLeave" :<buffer> :lua "vim.lsp.codelens.refresh()")
; client autocmds
; -- vim.api.nvim_command[[autocmd BufWritePre <buffer> lua vim.lsp.buf_request_sync(vim.api.nvim_get_current_buf(), 'workspace/executeCommand', {command = 'clean-ns', arguments = {vim.uri_from_bufnr(1), vim.api.nvim_win_get_cursor(0)[1], vim.api.nvim_win_get_cursor(0)[2]}, title = 'Clean Namespace'})]]
(print "LSP Client Attached."))
(def base-server-opts ; x mode mappings
(let [capabilities (cmp_nvim_lsp.default_capabilities (lsp.protocol.make_client_capabilities))] (xbufmap :<leader>fa "lua vim.lsp.buf.formatting_sync()")
{: on_attach : capabilities :flags {:debounce_text_changes 150}}))
(defn default-server-handler [server-name] ; -- buf_set_keymap('n', 'gs', '<Cmd>lua vim.lsp.buf.document_symbol()<CR>', opts)
(let [specific-opts (a.get server-specific-opts server-name {}) ; -- buf_set_keymap('n', 'gS', '<Cmd>lua vim.lsp.buf.workspace_symbol()<CR>', opts)
server (a.get lspconfig server-name) ; -- buf_set_keymap('n', 'gt', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
server-opts (a.merge base-server-opts server-opts)] ; -- buf_set_keymap('n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
(server.setup server-opts))) ; -- buf_set_keymap('n', '<leader>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
; -- buf_set_keymap('n', '<leader>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
; -- buf_set_keymap('n', '<leader>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
; -- buf_set_keymap('n', '<leader>ic', "<cmd>lua vim.lsp.buf.incoming_calls()<CR>", opts)
; -- buf_set_keymap('x', '<leader>ic', "<cmd>lua vim.lsp.buf.incoming_calls()<CR>", opts)
(defn lsp-execute-command [cmd ...] (nvim.buf_set_option 0 :omnifunc "v:lua.vim.lsp.omnifunc")
(bind-client-mappings client)
(nvim.ex.autocmd :BufWritePre :<buffer> :lua "vim.lsp.buf.formatting_sync()")
; (nvim.ex.autocmd "BufEnter,CursorHold,InsertLeave" :<buffer> :lua "vim.lsp.codelens.refresh()")
; client autocmds
; -- vim.api.nvim_command[[autocmd BufWritePre <buffer> lua vim.lsp.buf_request_sync(vim.api.nvim_get_current_buf(), 'workspace/executeCommand', {command = 'clean-ns', arguments = {vim.uri_from_bufnr(1), vim.api.nvim_win_get_cursor(0)[1], vim.api.nvim_win_get_cursor(0)[2]}, title = 'Clean Namespace'})]]
(print "LSP Client Attached."))
(let [lspi (require :nvim-lsp-installer)]
(when lspi
(defn lsp-execute-command [cmd ...]
(let [buf-uri (vim.uri_from_bufnr 0) (let [buf-uri (vim.uri_from_bufnr 0)
cursor (vim.api.nvim_win_get_cursor 0) cursor (vim.api.nvim_win_get_cursor 0)
r (- (a.first cursor) 1) r (- (a.first cursor) 1)
c (a.second cursor) c (a.second cursor)
opts [buf-uri r c] opts [buf-uri r c]
args (a.concat opts [...])] args (a.concat opts [...])]
(vim.lsp.buf.execute_command {:command cmd :arguments args}))) (vim.lsp.buf.execute_command {:command cmd
:arguments args})))
(mason.setup) (defn setup-servers []
(lspi.on_server_ready (fn [server]
(let [opts {:on_attach on_attach :flags {:debounce_text_changes 150} }]
(server:setup opts))))
;; (let [lspconfig (require :lspconfig)
;; servers (lspi.get_installed_servers)]
;; (each [_ server (pairs servers)]
;; (server.setup {:on_attach on_attach :flags {:debounce_text_changes 150} })))
)
(when-let [mason-lspconfig (require :mason-lspconfig)] (defn on-post-install []
(mason-lspconfig.setup) (setup-servers)
(mason-lspconfig.setup_handlers {1 default-server-handler})) (nvim.ex.bufdo :e))
(u.nnoremap :<leader>li :LspInfo) (setup-servers)
(nu.fn-bridge :LspExecuteCommand :dotfiles.plugin.lspconfig
:lsp-execute-command {:return false}) (set lspi.post_install_hook on-post-install)
(nu.fn-bridge :LspExecuteCommand :dotfiles.plugin.lspconfig :lsp-execute-command {:return false})
(u.nnoremap :<leader>li "LspInfo")))
;; (let [eval (require :conjure.eval)
;; client (require :conjure.client)
;; ts-utils (require :nvim-treesitter.ts_utils)
;; parsers (require :nvim-treesitter.parsers)
;; ]
;;
;; ; client["with-filetype"]("fennel", eval["eval-str"], {
;; ; origin = "my-awesome-plugin",
;; ; code = "(+ 10 20)",
;; ; ["passive?"] = true,
;; ; ["on-result"] = function (r)
;; ; print("RESULT:", r)
;; ; end
;; ; })
;;
;; (defn ts-node-descendent-of? [node ancestor-type]
;; (print node)
;; (if (= nil node)
;; false
;; (let [node-type (node:type)]
;; (print node-type)
;; (if (= ancestor-type node-type)
;; true
;; (ts-node-descendent-of? (node:parent) ancestor-type)))))
;;
;; (defn in-fenced-code-block? []
;; (let [cursor (vim.api.nvim_win_get_cursor 0)
;; lnum (a.first cursor)
;; col (a.second cursor)
;; root_lang_tree (parsers.get_parser)
;; range [ lnum - 1 col lnum - 1 col ]
;; (node root lang-tree) (ts-utils.get_root_for_position (- lnum 1) col root_lang_tree) ]
;; (a.pr "language" (a.get lang-tree :_lang :err))
;; )
;; (let [node-at-cursor (ts-utils.get_node_at_cursor)]
;; (print "node at cursor" node-at-cursor)
;; (a.pr "root for node at cursor " (ts-utils.get_root_for_node node-at-cursor))
;; (print (ts-node-descendent-of? node-at-cursor :fenced_code_block))))
;;
;; (defn markdown-code-to-repl []
;; ; (let [buf-uri (vim.uri_from_bufnr 0)
;; ; cursor (vim.api.nvim_win_get_cursor 0)
;; ; r (- (a.first cursor) 1)
;; ; c (a.second cursor)
;; ; opts [buf-uri r c]
;; ; args (a.concat opts [...])]
;; ; (vim.lsp.buf.execute_command {:command cmd
;; ; :arguments args}))
;; )
;;
;; (nu.fn-bridge :MarkdownCodeToRepl :dotfiles.plugin.lspconfig :markdown-code-to-repl {:return false})
;;
;; (nu.fn-bridge :IsInFencedCodeBlock :dotfiles.plugin.lspconfig :in-fenced-code-block? {:return false})
;;
;; ;; If file type is Markdown
;; ;(u.nnoremap :<leader>ee "call MarkdownCodeToRepl")
;;
;; )
;;

View File

@@ -1,19 +0,0 @@
(module dotfiles.plugin.luasnip
{autoload {nvim aniseed.nvim util dotfiles.util luasnip luasnip}
require {select_choice luasnip.extras.select_choice}})
(vim.keymap.set [:i :s] :<C-k>
(fn []
(if (luasnip.expand_or_jumpable)
(luasnip.expand_or_jump))) {:silent true})
(vim.keymap.set [:i :s] :<C-j>
(fn []
(if (luasnip.jumpable -1)
(luasnip.jump -1))) {:silent true})
(vim.keymap.set :i :<C-l> (fn []
(if (luasnip.choice_active)
(luasnip.choice 1))))
(vim.keymap.set :i :<C-u> select_choice)

View File

@@ -1,10 +0,0 @@
(module dotfiles.plugin.mason
{autoload {a aniseed.core
nvim aniseed.nvim mason mason mason-lspconf mason-lspconfig}})
(defn setup []
(when mason
(mason.setup {:ui {:icons {:package_installed "✓"}}})
(when mason-lspconf
(mason-lspconf.setup {:ensure_installed [:lua_ls]})
(mason-lspconf.setup_handlers {1 default-server-handler}))))

View File

@@ -1,13 +0,0 @@
(module dotfiles.plugin.null-ls
{autoload {nvim aniseed.nvim
a aniseed.core
nu aniseed.nvim.util
null-ls null-ls
lspconfig dotfiles.plugin.lspconfig}})
(def null-ls-server-options
{:sources [null-ls.builtins.formatting.stylua
null-ls.builtins.formatting.fnlfmt]
:on_attach lspconfig.on_attach})
(null-ls.setup null-ls-server-options)

View File

@@ -1,47 +0,0 @@
(module dotfiles.plugin.orgbullets
{autoload {nvim aniseed.nvim a aniseed.core ts-utils dotfiles.ts-utils}})
(def stars ["◉" "⦾" "○" "✸" "✿" "✶" "•" "‣"])
(def stars-query "(headline (stars) @stars)")
(defn star-index [heading-level]
(let [star-count (a.count stars)
idx (math.fmod heading-level star-count)]
(if (< 0 idx)
idx
star-count)))
(defonce extmark-namespace (vim.api.nvim_create_namespace :HeaderStars))
(def star-captures (ts-utils.make-query :org stars-query))
(defn gen-star-extmarks []
(when (= :org vim.bo.filetype)
(let [bufnr (vim.api.nvim_get_current_buf)
star-count (a.count stars)]
(vim.api.nvim_buf_clear_namespace bufnr extmark-namespace 0 -1)
(each [id node metadata (star-captures bufnr)]
(let [[start-line start-col end-row end-col] [(node:range)]
heading-level (if (= start-line end-row)
(- end-col start-col))
star (a.get stars (star-index heading-level))
replacement (string.format (a.str "%" (+ 2 heading-level) :s)
star)]
(vim.api.nvim_buf_set_extmark bufnr extmark-namespace start-line
start-col
{:end_col end-col
:end_row end-row
:virt_text [[replacement []]]
:virt_text_pos :overlay
:hl_mode :combine}))))))
(let [group (nvim.create_augroup :HeaderStars {:clear true})]
(nvim.create_autocmd [:FileChangedShellPost
:Syntax
:TextChanged
:InsertLeave
:WinScrolled]
{: group
;; :pattern [:*.org]
:callback gen-star-extmarks}))

View File

@@ -1,8 +0,0 @@
(module dotfiles.plugin.orgmode {autoload {orgmode orgmode}})
(orgmode.setup_ts_grammar)
(orgmode.setup {:org_agenda_files ["~/Dropbox/org/*" "~/my-orgs/**/*"]
:org_default_notes_file "~/Dropbox/org/refile.org"})
(require :dotfiles.plugin.orgbullets)

View File

@@ -1,89 +0,0 @@
(module dotfiles.plugin.paredit
{autoload {nvim aniseed.nvim
a aniseed.core
nu aniseed.nvim.util
paredit paredit
ts-parsers nvim-treesitter.parsers
ts-utils nvim-treesitter.ts_utils
languagetree vim.treesitter.languagetree}})
(set nvim.g.paredit_smartjump 1)
(defn list-member? [xs x] (a.some #(= x $1) (a.vals xs)))
(defn bool->int [bool] (if bool 1 0))
(defn int->bool [x] (if (= 0 x) false true))
(defn toggle-global! [x] (->> (a.get nvim.g x)
(int->bool)
(not)
(bool->int)
(tset nvim.g x)))
(defn language-at-cursor [] (let [parser (ts-parsers.get_parser)
current-node (ts-utils.get_node_at_cursor)
range (if current-node [(current-node:range)])
lang (if range
(languagetree.language_for_range parser
range))]
(if lang
(lang:lang))))
(defn parser-language [] (let [parser (ts-parsers.get_parser)]
(when parser
(parser:lang))))
(def- paredit-langs [:clojure
:fennel
:hy
:janet
:julia
:lfe
:lisp
:racket
:scheme
:shen])
(def- paredit-host-langs [:org :markdown :asciidoc])
(defn- host-lang-in? [langs] (list-member? langs (parser-language)))
(defn paredit-lang? [lang] (list-member? paredit-langs lang))
(defn TreeSitterLangParedit []
(when (host-lang-in? paredit-host-langs)
(when-let [cursor-lang (language-at-cursor)]
(->> cursor-lang
(paredit-lang?)
(bool->int)
(set nvim.g.paredit_mode))
(nvim.fn.PareditInitBuffer))))
; (nvim.del_augroup_by_name "BabeliteParedit")
; (nvim.get_autocmds {:group "BabeliteParedit"})
;;(let [group (nvim.create_augroup :BabeliteParedit {:clear true})]
;; (nvim.create_autocmd [:CursorHold :CursorMoved]
;; {: group
;; ;:pattern ["*.org" "*.md"]
;; :callback TreeSitterLangParedit}))
;;
;; (defn paredit-toggle! [] (toggle-global :paredit_mode)
;; (nvim.fn.PareditInitBuffer)
;; nvim.g.paredit_mode
;; )
;;
;; \
;; (int->bool 0)
;; (defn test [x] (a.get nvim.g x))
;;
;; (test :pareditmode)
;; (a.get nvim.g :paredit_mode)
;; (comment ;
;; nvim.g.paredit_mode
;; ;
;;
;; (paredit-toggle!)
;; )

View File

@@ -1,27 +0,0 @@
(module dotfiles.plugin.smartsplits
{autoload {nvim aniseed.nvim
a aniseed.core
smart-splits smart-splits
;; util dotfiles.util
}})
(smart-splits.setup)
;; recommended mappings
;; resizing splits
;; these keymaps will also accept a range,
;; for example `10<A-h>` will `resize_left` by `(10 * config.default_amount)`
(vim.keymap.set :n :<M-S-h> smart-splits.resize_left)
(vim.keymap.set :n :<M-S-j> smart-splits.resize_down)
(vim.keymap.set :n :<M-S-k> smart-splits.resize_up)
(vim.keymap.set :n :<M-S-l> smart-splits.resize_right)
;; moving between splits
(vim.keymap.set :n :<M-h> smart-splits.move_cursor_left)
(vim.keymap.set :n :<M-j> smart-splits.move_cursor_down)
(vim.keymap.set :n :<M-k> smart-splits.move_cursor_up)
(vim.keymap.set :n :<M-l> smart-splits.move_cursor_right)
;; swapping buffers between windows
(vim.keymap.set :n :<leader><leader>h smart-splits.swap_buf_left)
(vim.keymap.set :n :<leader><leader>j smart-splits.swap_buf_down)
(vim.keymap.set :n :<leader><leader>k smart-splits.swap_buf_up)
(vim.keymap.set :n :<leader><leader>l smart-splits.swap_buf_right)

View File

@@ -1,44 +1,32 @@
(module dotfiles.plugin.telescope (module dotfiles.plugin.telescope
{autoload {nvim aniseed.nvim {autoload {nvim aniseed.nvim
util dotfiles.util util dotfiles.util
telescope telescope telescope telescope}})
project-nvim project_nvim}})
(def vimgrep_arguments [:ag (telescope.setup
:--nocolor {:defaults
:--noheading {:vimgrep_arguments ["ag" "--nocolor" "--noheading"
:--number "--number" "--column" "--nobreak"
:--column "--smart-case" "--hidden" "--follow" ; "--skip-vcs-ignores"
:--nobreak
:--smart-case
:--hidden
; "--skip-vcs-ignores"
; "-g" "!.git/" ; "-g" "!.git/"
:--ignore ]}})
:.git
:--follow])
(telescope.load_extension :projects)
(telescope.setup {:defaults {: vimgrep_arguments}
:pickers {:buffers {:mappings {:n {:d :delete_buffer}}}}
:extensions {:projects {:projects {}}}})
(util.lnnoremap :fc "Telescope commands")
(util.lnnoremap :fC "Telescope command_history")
(util.lnnoremap :ff "Telescope git_files hidden=true") (util.lnnoremap :ff "Telescope git_files hidden=true")
(util.lnnoremap :f- "Telescope find_files") (util.lnnoremap :f- "Telescope file_browser")
(util.lnnoremap :fg "Telescope live_grep") (util.lnnoremap :fg "Telescope live_grep")
(util.lnnoremap "*" "Telescope grep_string") (util.lnnoremap :* "Telescope grep_string")
(util.lnnoremap :fb "Telescope buffers") (util.lnnoremap :fb "Telescope buffers")
(util.lnnoremap :fd "Telescope diagnostics")
(util.lnnoremap :fH "Telescope help_tags") (util.lnnoremap :fH "Telescope help_tags")
(util.lnnoremap :fh "Telescope oldfiles")
(util.lnnoremap :fp "Telescope projects")
(util.lnnoremap :fm "Telescope keymaps") (util.lnnoremap :fm "Telescope keymaps")
(util.lnnoremap :fM "Telescope marks") (util.lnnoremap :fM "Telescope marks")
(util.lnnoremap :fh "Telescope oldfiles")
(util.lnnoremap :ft "Telescope filetypes") (util.lnnoremap :ft "Telescope filetypes")
(util.lnnoremap :fc "Telescope commands")
(util.lnnoremap :fC "Telescope command_history")
(util.lnnoremap :fq "Telescope quickfix") (util.lnnoremap :fq "Telescope quickfix")
(util.lnnoremap :fl "Telescope loclist") (util.lnnoremap :fl "Telescope loclist")
(util.lnnoremap :fsa "Telescope lsp_code_actions")
(util.lnnoremap :fsi "Telescope lsp_implementations") (util.lnnoremap :fsi "Telescope lsp_implementations")
(util.lnnoremap :fsr "Telescope lsp_references") (util.lnnoremap :fsr "Telescope lsp_references")
(util.lnnoremap :fsS "Telescope lsp_document_symbols") (util.lnnoremap :fsS "Telescope lsp_document_symbols")

View File

@@ -1,15 +1,9 @@
(module dotfiles.plugin.treesitter (module dotfiles.plugin.treesitter
{autoload {treesitter nvim-treesitter {autoload {treesitter nvim-treesitter.configs}})
ts_utils nvim-treesitter.ts_utils
treesitter-configs nvim-treesitter.configs}})
(treesitter-configs.setup (treesitter.setup
{:highlight {:enable true {:highlight {:enable true
;; :additional_vim_regex_highlighting false :additional_vim_regex_highlighting false}
:additional_vim_regex_highlighting [:org]
}
:ensure_installed :all ; [:org]
:rainbow {:enable true :rainbow {:enable true
:extended_mode true ; Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean :extended_mode true ; Also highlight non-bracket delimiters like html tags, boolean or table: lang -> boolean
@@ -24,6 +18,5 @@
:#6c71c4 ; violet / brmagenta :#6c71c4 ; violet / brmagenta
] ; table of hex strings ] ; table of hex strings
} }
:playground {:enable true}
}) })
; lua print(require('nvim-treesitter.parsers').get_parser():language_for_range({ require('nvim-treesitter.ts_utils').get_node_at_cursor():range() }):lang())

View File

@@ -1,5 +0,0 @@
(module dotfiles.plugin.whichkey
{autoload {which-key which-key}})
(which-key.setup {})

View File

@@ -1,100 +1,88 @@
(module dotfiles.plugins {autoload {nvim aniseed.nvim (module dotfiles.plugins
a aniseed.core {autoload {nvim aniseed.nvim
;; util dotfiles.util a aniseed.core
packer packer} ;; util dotfiles.util
;; require {minpac minpac} packer packer
})
}
;; require {minpac minpac}
})
(defn safe-require-plugin-config [name] (defn safe-require-plugin-config [name]
(let [(ok? val-or-err) (pcall require (.. :dotfiles.plugin. name))] (let [(ok? val-or-err) (pcall require (.. :dotfiles.plugin. name))]
(when (not ok?) (when (not ok?)
(print (.. "dotfiles error: " val-or-err))))) (print (.. "dotfiles error: " val-or-err)))))
(defn- use [pkgs] "Iterates through the arguments as pairs and calls packer's use function for (defn- use [pkgs]
"Iterates through the arguments as pairs and calls packer's use function for
each of them. Works around Fennel not liking mixed associative and sequential each of them. Works around Fennel not liking mixed associative and sequential
tables as well." tables as well."
(packer.startup (fn [use] (packer.startup
(each [name opts (pairs pkgs)] (fn [use]
(-?> (. opts :mod) (safe-require-plugin-config)) (each [name opts (pairs pkgs)]
(use (a.assoc opts 1 name)))))) (-?> (. opts :mod) (safe-require-plugin-config))
(use (a.assoc opts 1 name))
))))
(def- packages {:Olical/aniseed {}
:Olical/conjure {:mod :conjure} (def- packages
:Olical/fennel.vim {} {
:ahmedkhalf/project.nvim {} :Olical/aniseed {}
:airblade/vim-gitgutter {} :Olical/conjure { :mod :conjure } ; Clojure
:clojure-vim/vim-jack-in {} :Olical/fennel.vim {} ; Fennel
:christianrondeau/vim-base64 {} :airblade/vim-gitgutter {} ; Git
:dhruvasagar/vim-table-mode {} :airblade/vim-gitgutter {} ; Git
:folke/lsp-colors.nvim {} :clojure-vim/vim-jack-in {} ; Conjure support - jack-in with nrepl dependencies
:folke/which-key.nvim {:mod :whichkey} :folke/lsp-colors.nvim {}
:hashivim/vim-terraform {} :hashivim/vim-terraform {} ; Terraform
:hrsh7th/nvim-cmp {:requires [:hrsh7th/cmp-buffer :hrsh7th/nvim-cmp {:requires [:hrsh7th/cmp-buffer
:hrsh7th/cmp-emoji :hrsh7th/cmp-nvim-lsp
:hrsh7th/cmp-nvim-lsp :hrsh7th/cmp-vsnip
:hrsh7th/cmp-nvim-lua :hrsh7th/vim-vsnip-integ
:hrsh7th/cmp-path :PaterJason/cmp-conjure]
:hrsh7th/cmp-vsnip :mod :cmp} ; autocomplete
:hrsh7th/vim-vsnip-integ :hrsh7th/vim-vsnip {}
:L3MON4D3/LuaSnip :hrsh7th/vim-vsnip-integ {}
:PaterJason/cmp-conjure :Iron-E/nvim-soluarized {}
:saadparwaiz1/cmp_luasnip] :jiangmiao/auto-pairs {} ; backets, parens, and quotes in pairs
:mod :cmp} :junegunn/vim-easy-align {:mod :easyalign}
:hrsh7th/vim-vsnip {} :kovisoft/paredit {}
:hrsh7th/vim-vsnip-integ {} :kristijanhusak/vim-dadbod-completion {}
:Iron-E/nvim-soluarized {} :kristijanhusak/vim-dadbod-ui {}
:jiangmiao/auto-pairs {} :neovim/nvim-lspconfig {:mod :lspconfig} ; NeoVim lsp config
:jose-elias-alvarez/null-ls.nvim {:mod :null-ls :norcalli/nvim-colorizer.lua {:mode :colorizer}
:requires [:nvim-lua/plenary.nvim]} :nvim-telescope/telescope.nvim {:requires [[:nvim-lua/popup.nvim] [:nvim-lua/plenary.nvim]] :mod :telescope}
:junegunn/vim-easy-align {:mod :easyalign} :nvim-treesitter/nvim-treesitter {:run ":TSUpdate" :mod :treesitter :requires [:nvim-treesitter/playground]}
:kovisoft/paredit {:mod :paredit} :nvim-treesitter/playground {}
:kristijanhusak/vim-dadbod-completion {} :p00f/nvim-ts-rainbow {}
:kristijanhusak/vim-dadbod-ui {} :radenling/vim-dispatch-neovim {} ; Clojure
:L3MON4D3/LuaSnip {:mod :luasnip} :skywind3000/asyncrun.vim {} ; :AsyncRun
:lifepillar/vim-solarized8 {} :tpope/vim-classpath {}
:lukas-reineke/headlines.nvim {:mod :headlines} :tpope/vim-dadbod {}
; :michaelb/sniprun {:run "bash ./install.sh" :mod :sniprun} :tpope/vim-dispatch {} ; Conjure support - jack-in with nrepl dependencies
:mrjones2014/smart-splits.nvim {:mod :smartsplits} :tpope/vim-fugitive {} ; Git
:mechatroner/rainbow_csv {} :tpope/vim-git {} ; Git Commit Message
:neovim/nvim-lspconfig {:mod :lspconfig} :tpope/vim-pathogen {}
:norcalli/nvim-colorizer.lua {:mod :colorizer} :tpope/vim-rails {}
:nvim-orgmode/orgmode {:mod :orgmode} :tpope/vim-repeat {}
:nvim-telescope/telescope.nvim {:requires [[:nvim-lua/popup.nvim] :tpope/vim-surround {}
[:nvim-lua/plenary.nvim]] :tpope/vim-unimpaired {}
:mod :telescope} :tpope/vim-vinegar {}
:nvim-treesitter/nvim-treesitter {:run ":TSUpdate" :wbthomason/packer.nvim {:mod :packer}
:mod :treesitter} :williamboman/nvim-lsp-installer {} ; NeoVim lsp server installs
:nvim-treesitter/playground {}
:p00f/nvim-ts-rainbow {} ; :luochen1990/rainbow {}
:radenling/vim-dispatch-neovim {} ; :thecontinium/asyncomplete-conjure.vim {}
:rafamadriz/friendly-snippets {} }
:skywind3000/asyncrun.vim {}
:tjdevries/sg.nvim {:run "cargo build --workspace" ; :tpope/vim-fireplace {} ; Clojure
:dependencies [:nvim-lua/plenary.nvim]} ; :tpope/vim-sexp-mappings-for-regular-people {}
:tpope/vim-classpath {} )
:tpope/vim-dadbod {}
:tpope/vim-dispatch {}
:tpope/vim-fugitive {:mod :fugitive}
:tpope/vim-git {}
:tpope/vim-pathogen {}
:tpope/vim-rails {}
:tpope/vim-repeat {}
:tpope/vim-surround {}
:tpope/vim-unimpaired {}
:tpope/vim-vinegar {}
:wbthomason/packer.nvim {:mod :packer}
;; :williamboman/nvim-lsp-installbuilder {}
:williamboman/mason.nvim {:mod :mason
:requires [:williamboman/mason-lspconfig.nvim]}
; NeoVim lsp server installs
; :luochen1990/rainbow {}
; :thecontinium/asyncomplete-conjure.vim {}
} ; :tpope/vim-fireplace {} ; Clojure
; :tpope/vim-sexp-mappings-for-regular-people {}
)
(use packages) (use packages)
;; call minpac#add('dense-analysis/ale') " Linting ;; call minpac#add('dense-analysis/ale') " Linting
;; call minpac#add('editorconfig/editorconfig-vim') ;; call minpac#add('editorconfig/editorconfig-vim')
;; call minpac#add('elixir-lang/vim-elixir') " Elixir ;; call minpac#add('elixir-lang/vim-elixir') " Elixir

View File

@@ -1,22 +0,0 @@
(module dotfiles.terraform-helpers
{autoload {a aniseed.core}
require {anenv aniseed.env
nvim aniseed.nvim
nu aniseed.nvim.util
u dotfiles.util}})
(defn append-to-buf [bufno lines]
(when lines
(nvim.buf_set_lines buffno -1 -1 false lines)))
(var tf-log-bufno nil)
(defn tf-log-buffer [])
(defn terraform-import []
(vim.fn.jobstart [:terraform :import :-no-color address id]
{:stdout_buffered true
:on_stdout (fn [_ data]
(append-to-buf bufno data))}))
; (nu.fn-bridge :ZoomToggle :dotfiles.zoom-toggle :zoom-toggle {:return false})
; (u.nnoremap :<C-W>z ":call ZoomToggle()<CR>")

View File

@@ -1,12 +0,0 @@
(module dotfiles.ts-utils {autoload {nvim aniseed.nvim a aniseed.core}})
(defn root [bufnr lang] (let [parser (vim.treesitter.get_parser bufnr lang {})
tree (a.first (: parser :parse))]
(: tree :root)))
(defn make-query [lang query-string]
(let [query (vim.treesitter.query.parse lang "(headline (stars) @stars)")]
(fn [bufnr]
(let [root-node (root bufnr lang)
iter-captures (query.iter_captures query root-node bufnr 0 -1)]
iter-captures))))

View File

@@ -1,21 +1,21 @@
(module dotfiles.util {autoload {a aniseed.core} require {nvim aniseed.nvim}}) (module dotfiles.util
{autoload
{a aniseed.core}
require
{nvim aniseed.nvim}})
(defn noremap [mode from to opts] (defn noremap [mode from to opts]
(let [map-opts {:noremap true :silent true} (let [map-opts {:noremap true :silent true}
to (.. ":" to :<cr>) to (.. ":" to "<cr>")
buff-num (a.get opts :buff-num)] buff-num (a.get opts :buff-num)]
(if (or (a.get opts :local?) buff-num)
(nvim.buf_set_keymap (or buff-num 0) mode from to map-opts)
(nvim.set_keymap mode from to map-opts))))
(defn nnoremap [from to opts] (noremap :n from to opts)) (if (or (a.get opts :local?) buff-num )
(nvim.buf_set_keymap (or buff-num 0) mode from to map-opts)
(nvim.set_keymap mode from to map-opts))))
(defn tnoremap [from to opts] (noremap :t from to opts)) (defn nnoremap [from to opts]
(noremap :n from to opts))
(defn inoremap [from to opts] (noremap :i from to opts)) (defn lnnoremap [from to]
(nnoremap (.. "<leader>" from) to))
(defn vnoremap [from to opts] (noremap :v from to opts))
(defn lnnoremap [from to] (nnoremap (.. :<leader> from) to))
(defn lvnoremap [from to opts] (noremap :v (.. :<leader> from) to opts))

View File

@@ -1,21 +1,24 @@
(module dotfiles.zoom-toggle (module dotfiles.zoom-toggle
{autoload {a aniseed.core} {autoload
require {anenv aniseed.env {a aniseed.core}
nvim aniseed.nvim require
nu aniseed.nvim.util {anenv aniseed.env
u dotfiles.util}}) nvim aniseed.nvim
nu aniseed.nvim.util
u dotfiles.util}})
(var unzoom! nil) (var unzoom! nil)
(defn zoom-toggle [] (if unzoom! (defn zoom-toggle []
(do (if unzoom!
(nvim.command unzoom!) (do
(set unzoom! nil)) (nvim.command unzoom!)
(do (set unzoom! nil))
(set unzoom! (nvim.fn.winrestcmd)) (do
(nvim.ex.resize) (set unzoom! (nvim.fn.winrestcmd))
(nvim.ex.vertical :resize)))) (nvim.ex.resize)
(nvim.ex.vertical :resize))))
(nu.fn-bridge :ZoomToggle :dotfiles.zoom-toggle :zoom-toggle {:return false}) (nu.fn-bridge :ZoomToggle :dotfiles.zoom-toggle :zoom-toggle {:return false})
(u.nnoremap :<C-W>z ":call ZoomToggle()<CR>") (u.nnoremap :<C-W>z ":call ZoomToggle()<CR>")
(u.tnoremap :t "Ω" "<c-\\><c-n>:call ZoomToggle()<CR>")

21
test.md
View File

@@ -1,21 +0,0 @@
# Some heading
```fennel
(print)
(* 21
(+ 1 3))
```
some clojure
```clojure
(print
)(* 21
(+ 1 3))
```
some python
```python
print( 1 + 3 ) + 3
```

View File

@@ -1,50 +0,0 @@
* test
** test level 2
*** test level 3
**** test level 4
***** test level 5
****** test level 6
******* test level 7
******** test level 8
********* test level 9
********** test level 10
* test 3
* test 4
#+NAME: x
3
- [ ] something
- [X] something else
- [-] half done ∂
Some fennel
#+begin_example ex1
dfs
#+end_example
#+name: random
#+begin_src fennel
(print )
(+ 1 (* 3 7))
#+end_src
#+results:
Some Clojure
#+begin_src clojure
(println (* 3 )(+ 1 2) )
#+end_src
#+begin_src python :results silent :exports code :var n=0
print(1 + 3)
#+end_src
#+begin_src
print(+ 1 3)
#+end_src

View File

@@ -1,9 +1,6 @@
set -g prefix C-a set -g prefix C-a
unbind C-b unbind C-b
set -g xterm-keys on
set -s extended-keys on
set -g history-file ~/.tmux_history set -g history-file ~/.tmux_history
set -s escape-time 1 set -s escape-time 1
@@ -11,8 +8,6 @@ set -s escape-time 1
set -g base-index 1 set -g base-index 1
setw -g pane-base-index 1 setw -g pane-base-index 1
set -g main-pane-width 160
bind r source-file ~/.tmux.conf \; display "Reloaded!" bind r source-file ~/.tmux.conf \; display "Reloaded!"
bind -r '`' clear-history \; display "History Cleared!" bind -r '`' clear-history \; display "History Cleared!"
@@ -38,8 +33,8 @@ setw -g mouse off
# set -g default-terminal "xterm-256:color" # set -g default-terminal "xterm-256:color"
# set -g default-terminal "${TERM}" # set -g default-terminal "${TERM}"
set -g default-terminal "tmux-256color" set -s default-terminal "tmux-256color"
set -g history-limit 15000 set -g history-limit 6000
set -g window-status-style dim set -g window-status-style dim
set -g window-status-current-style bright set -g window-status-current-style bright
@@ -51,9 +46,8 @@ set -g status-right '#(~/dotfiles/bin/tmux_battery_charge_indicator.sh) #[bg=whi
set -g update-environment "DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY" set -g update-environment "DISPLAY SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION WINDOWID XAUTHORITY"
set-environment -g 'SSH_AUTH_SOCK' ~/.ssh/ssh_auth_sock set-environment -g 'SSH_AUTH_SOCK' ~/.ssh/ssh_auth_sock
# set -as terminal-overrides ',xterm-256color:RGB' # set -as terminal-overrides ',xterm-257color:RGB'
set -as terminal-features ',tmux-256color:RGB' set -as terminal-features ',xterm-256color:RGB'
set-option -sa terminal-overrides ',tmux-256color:RGB'
# Undercurl # Undercurl
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support
@@ -61,31 +55,3 @@ set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm' # undercurl support
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # underscore colours - needs tmux-3.0 set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m' # underscore colours - needs tmux-3.0
set-option -g focus-events on set-option -g focus-events on
# Smart pane switching with awareness of Vim splits.
# See: https://github.com/christoomey/vim-tmux-navigator
is_vim="ps -o state= -o comm= -t '#{pane_tty}' \
| grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n M-S-h if-shell "$is_vim" 'send-keys M-S-h' 'resize-pane -L 3'
bind-key -n M-S-j if-shell "$is_vim" 'send-keys M-S-j' 'resize-pane -D 3'
bind-key -n M-S-k if-shell "$is_vim" 'send-keys M-S-k' 'resize-pane -U 3'
bind-key -n M-S-l if-shell "$is_vim" 'send-keys M-S-l' 'resize-pane -R 3'
bind-key -n M-h if-shell "$is_vim" 'send-keys M-h' 'select-pane -L'
bind-key -n M-j if-shell "$is_vim" 'send-keys M-j' 'select-pane -D'
bind-key -n M-k if-shell "$is_vim" 'send-keys M-k' 'select-pane -U'
bind-key -n M-l if-shell "$is_vim" 'send-keys M-l' 'select-pane -R'
tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")'
if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'"
if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \
"bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'"
bind-key -T copy-mode-vi 'M-S-h' select-pane -L
bind-key -T copy-mode-vi 'M-S-j' select-pane -D
bind-key -T copy-mode-vi 'M-S-k' select-pane -U
bind-key -T copy-mode-vi 'M-S-l' select-pane -R
bind-key -T copy-mode-vi 'M-S-\' select-pane -l