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
21 changed files with 345 additions and 500 deletions

View File

@@ -1,29 +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
[merge]
ff = only
[push]
autoSetupRemote = true
[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

@@ -19,7 +19,8 @@
(if (not (a.empty? glob)) (if (not (a.empty? glob))
(nvim.ex.source filename)))) (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- backup-dir (.. (nvim.fn.glob "$HOME") "/.vim/backup"))
(def- undo-dir (.. (nvim.fn.glob "$HOME") "/.vim/backup")) (def- undo-dir (.. (nvim.fn.glob "$HOME") "/.vim/backup"))
@@ -50,38 +51,36 @@
(def- val-based-opts (def- val-based-opts
{ {
; :t_Co 256 ; :t_Co 256
:laststatus 2 :laststatus 2
:encoding "utf-8" :encoding "utf-8"
:history 500 :history 500
:redrawtime 5000 :redrawtime 5000
:scrolloff 3 :scrolloff 3
:guifont "Hasklig" :guifont "Hasklig"
:background "dark" :background "dark"
:backupdir backup-dir :backupdir backup-dir
:directory backup-dir ;Don't clutter my dirs up with swp and tmp files :directory backup-dir ;Don't clutter my dirs up with swp and tmp files
:grepprg "ag --vimgrep" ; Use Silver Searcher instead of grep :grepprg "ag" ; Use Silver Searcher instead of grep
:tags "tags" :tags "tags"
:updatetime 300 ; per coc.vim for diagnostic messages :updatetime 300 ; per coc.vim for diagnostic messages
:signcolumn "auto:1-3" :signcolumn "auto:1-3"
:colorcolumn [80 100] :cmdheight 2 ; Better display for messages
:cmdheight 2 ; Better display for messages :undodir undo-dir
:undodir undo-dir :undolevels 1000
:undolevels 1000 :undoreload 10000
:undoreload 10000 :foldmethod "expr"
:foldmethod "expr" :foldexpr "nvim_treesitter#foldexpr()"
:foldexpr "nvim_treesitter#foldexpr()" :foldlevelstart 100
:foldlevelstart 100 :foldlevel 99
:foldlevel 99 :tabstop 2
:tabstop 2 :shiftwidth 2
:shiftwidth 2 :softtabstop 2
:softtabstop 2 :list true
:mouse "" :listchars "tab:➥\\ ,trail:·"
:list true :backspace "indent,eol,start" ;allow backspacing over everything in insert mode
:listchars "tab:➥\\ ,trail:·," :wildmode "list:longest,list:full"
:backspace "indent,eol,start" ;allow backspacing over everything in insert mode :wrap false
:wildmode "list:longest,list:full"
:wrap false
}) })
(defn- set-opt (defn- set-opt
@@ -97,15 +96,13 @@
(a.map-indexed set-opt val-based-opts) (a.map-indexed set-opt val-based-opts)
(nvim.ex.syntax "on") (nvim.ex.syntax "on")
;; (nvim.ex.colorscheme :soluarized) (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

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,46 +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}))
(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
@@ -61,9 +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>")

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
nu aniseed.nvim.util nu aniseed.nvim.util
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 []]}})
(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)
(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."))
(when-let [lspi (require :nvim-lsp-installer)] ; x mode mappings
(let [capabilities (cmp_nvim_lsp.update_capabilities (lsp.protocol.make_client_capabilities))] (xbufmap :<leader>fa "lua vim.lsp.buf.formatting_sync()")
(defn lsp-execute-command [cmd ...]
(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})))
(defn setup-servers []
(lspi.on_server_ready (fn [server]
(let [opts {: on_attach
: capabilities
: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} })))
)
(defn on-post-install [] (setup-servers) (nvim.ex.bufdo :e))
(setup-servers)
(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)))
(comment (let [lspi (require :nvim-lsp-installer) ; -- buf_set_keymap('n', 'gs', '<Cmd>lua vim.lsp.buf.document_symbol()<CR>', opts)
;lspconfig (require :lspconfig) ; -- buf_set_keymap('n', 'gS', '<Cmd>lua vim.lsp.buf.workspace_symbol()<CR>', opts)
servers (lspi.get_installed_servers)] ; -- buf_set_keymap('n', 'gt', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
(each [_ server (pairs servers)] ; -- buf_set_keymap('n', '<leader>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
(a.pr server)))) ; -- 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)
(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)
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})))
(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} })))
)
(defn on-post-install []
(setup-servers)
(nvim.ex.bufdo :e))
(setup-servers)
(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,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,3 +0,0 @@
(module dotfiles.plugin.orgbullets
{autoload {org-bullets org-bullets}})

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" })

View File

@@ -1,76 +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
}})
(defn list-member? [xs x]
(a.some #(= x $1) (a.vals xs)))
(defn bool->int [bool]
(if bool 1 0))
(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 group
;:pattern ["*.org" "*.md"]
:callback TreeSitterLangParedit}))

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,93 +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 {} {
:airblade/vim-gitgutter {} :Olical/aniseed {}
:akinsho/org-bullets.nvim {:mod :orgbullets} :Olical/conjure { :mod :conjure } ; Clojure
:clojure-vim/vim-jack-in {} :Olical/fennel.vim {} ; Fennel
:dhruvasagar/vim-table-mode {} :airblade/vim-gitgutter {} ; Git
:folke/lsp-colors.nvim {} :airblade/vim-gitgutter {} ; Git
:folke/which-key.nvim {:mod :whichkey} :clojure-vim/vim-jack-in {} ; Conjure support - jack-in with nrepl dependencies
:hashivim/vim-terraform {} :folke/lsp-colors.nvim {}
:hrsh7th/nvim-cmp {:requires [:hrsh7th/cmp-buffer :hashivim/vim-terraform {} ; Terraform
:hrsh7th/cmp-emoji :hrsh7th/nvim-cmp {:requires [:hrsh7th/cmp-buffer
:hrsh7th/cmp-nvim-lsp :hrsh7th/cmp-nvim-lsp
:hrsh7th/cmp-nvim-lua :hrsh7th/cmp-vsnip
:hrsh7th/cmp-path :hrsh7th/vim-vsnip-integ
:hrsh7th/cmp-vsnip :PaterJason/cmp-conjure]
:hrsh7th/vim-vsnip-integ :mod :cmp} ; autocomplete
:L3MON4D3/LuaSnip :hrsh7th/vim-vsnip {}
:PaterJason/cmp-conjure :hrsh7th/vim-vsnip-integ {}
:saadparwaiz1/cmp_luasnip] :Iron-E/nvim-soluarized {}
:mod :cmp} :jiangmiao/auto-pairs {} ; backets, parens, and quotes in pairs
:hrsh7th/vim-vsnip {} :junegunn/vim-easy-align {:mod :easyalign}
:hrsh7th/vim-vsnip-integ {} :kovisoft/paredit {}
:Iron-E/nvim-soluarized {} :kristijanhusak/vim-dadbod-completion {}
:jiangmiao/auto-pairs {} :kristijanhusak/vim-dadbod-ui {}
:jose-elias-alvarez/null-ls.nvim {:mod :null-ls :neovim/nvim-lspconfig {:mod :lspconfig} ; NeoVim lsp config
:requires [:nvim-lua/plenary.nvim]} :norcalli/nvim-colorizer.lua {:mode :colorizer}
:junegunn/vim-easy-align {:mod :easyalign} :nvim-telescope/telescope.nvim {:requires [[:nvim-lua/popup.nvim] [:nvim-lua/plenary.nvim]] :mod :telescope}
:kovisoft/paredit {:mod :paredit} :nvim-treesitter/nvim-treesitter {:run ":TSUpdate" :mod :treesitter :requires [:nvim-treesitter/playground]}
:kristijanhusak/vim-dadbod-completion {} :nvim-treesitter/playground {}
:kristijanhusak/vim-dadbod-ui {} :p00f/nvim-ts-rainbow {}
:L3MON4D3/LuaSnip {:mod :luasnip} :radenling/vim-dispatch-neovim {} ; Clojure
:lifepillar/vim-solarized8 {} :skywind3000/asyncrun.vim {} ; :AsyncRun
:lukas-reineke/headlines.nvim {:mod :headlines} :tpope/vim-classpath {}
; :michaelb/sniprun {:run "bash ./install.sh" :mod :sniprun} :tpope/vim-dadbod {}
:neovim/nvim-lspconfig {:mod :lspconfig} :tpope/vim-dispatch {} ; Conjure support - jack-in with nrepl dependencies
:norcalli/nvim-colorizer.lua {:mod :colorizer} :tpope/vim-fugitive {} ; Git
:nvim-orgmode/orgmode {:mod :orgmode} :tpope/vim-git {} ; Git Commit Message
:nvim-telescope/telescope.nvim {:requires [[:nvim-lua/popup.nvim] :tpope/vim-pathogen {}
[:nvim-lua/plenary.nvim]] :tpope/vim-rails {}
:mod :telescope} :tpope/vim-repeat {}
:nvim-treesitter/nvim-treesitter {:run ":TSUpdate" :tpope/vim-surround {}
:mod :treesitter} :tpope/vim-unimpaired {}
:nvim-treesitter/playground {} :tpope/vim-vinegar {}
:p00f/nvim-ts-rainbow {} :wbthomason/packer.nvim {:mod :packer}
:radenling/vim-dispatch-neovim {} :williamboman/nvim-lsp-installer {} ; NeoVim lsp server installs
:rafamadriz/friendly-snippets {}
:skywind3000/asyncrun.vim {} ; :luochen1990/rainbow {}
:tpope/vim-classpath {} ; :thecontinium/asyncomplete-conjure.vim {}
:tpope/vim-dadbod {} }
:tpope/vim-dispatch {}
:tpope/vim-fugitive {:mod :fugitive} ; :tpope/vim-fireplace {} ; Clojure
:tpope/vim-git {} ; :tpope/vim-sexp-mappings-for-regular-people {}
: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-installer {}
; 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

@@ -33,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
@@ -46,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