mirror of
https://github.com/stevenproctor/dotfiles.git
synced 2026-01-28 08:39:56 -06:00
Compare commits
6 Commits
1829789ed0
...
3c9383a552
| Author | SHA1 | Date | |
|---|---|---|---|
| 3c9383a552 | |||
| a61ba60adb | |||
| b762400ea9 | |||
| 5a77fa58e6 | |||
| f0fdde8b8b | |||
| 94c07708b6 |
@@ -1,124 +1,115 @@
|
||||
(module dotfiles.core
|
||||
{autoload
|
||||
{a aniseed.core}
|
||||
require
|
||||
{anenv aniseed.env
|
||||
nvim aniseed.nvim
|
||||
nu aniseed.nvim.util
|
||||
u dotfiles.util
|
||||
}})
|
||||
(module dotfiles.core {autoload {a aniseed.core}
|
||||
require {anenv aniseed.env
|
||||
nvim aniseed.nvim
|
||||
nu aniseed.nvim.util
|
||||
u dotfiles.util}})
|
||||
|
||||
(nvim.ex.set :shortmess+=c)
|
||||
|
||||
(nvim.ex.set "shortmess+=c") ; don't give |ins-completion-menu| messages.
|
||||
(nvim.ex.set "path+=**")
|
||||
; don't give |ins-completion-menu| messages.
|
||||
(nvim.ex.set :path+=**)
|
||||
(nvim.ex.set "wildignore+=*.o,*.obj,.git,*.rbc,*.class,.svn,vendor/gems/*")
|
||||
|
||||
(defn- safe-source
|
||||
[filename]
|
||||
(let [glob (nvim.fn.glob filename)]
|
||||
(if (not (a.empty? glob))
|
||||
(nvim.ex.source filename))))
|
||||
(defn- safe-source [filename]
|
||||
(let [glob (nvim.fn.glob filename)]
|
||||
(if (not (a.empty? glob))
|
||||
(nvim.ex.source filename))))
|
||||
|
||||
; (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- backup-dir (.. (nvim.fn.glob :$HOME) :/.vim/backup))
|
||||
(def- undo-dir (.. (nvim.fn.glob :$HOME) :/.vim/backup))
|
||||
|
||||
(def- on-opts [
|
||||
:autoindent
|
||||
:autoread
|
||||
: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- on-opts [:autoindent
|
||||
:autoread
|
||||
: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
|
||||
:laststatus 2
|
||||
:encoding :utf-8
|
||||
:history 500
|
||||
:redrawtime 5000
|
||||
:scrolloff 3
|
||||
:guifont :Hasklig
|
||||
:guifontwide :Hasklig
|
||||
:background :dark
|
||||
:backupdir backup-dir
|
||||
:directory backup-dir
|
||||
;Don't clutter my dirs up with swp and tmp files
|
||||
:grepprg "ag --vimgrep"
|
||||
; Use Silver Searcher instead of grep
|
||||
:tags :tags
|
||||
:updatetime 300
|
||||
; per coc.vim for diagnostic messages
|
||||
:signcolumn "auto:1-3"
|
||||
:colorcolumn [80 100]
|
||||
: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
|
||||
: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- 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 --vimgrep" ; Use Silver Searcher instead of grep
|
||||
:tags "tags"
|
||||
:updatetime 300 ; per coc.vim for diagnostic messages
|
||||
:signcolumn "auto:1-3"
|
||||
:colorcolumn [80 100]
|
||||
: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
|
||||
:mouse ""
|
||||
: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]] (tset vim.opt (a.str opt) val))
|
||||
|
||||
(defn- set-opt
|
||||
[[opt 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-indexed set-opt val-based-opts)
|
||||
|
||||
(nvim.ex.syntax "on")
|
||||
(nvim.ex.syntax :on)
|
||||
;; (nvim.ex.colorscheme :soluarized)
|
||||
(nvim.ex.colorscheme :solarized8)
|
||||
|
||||
|
||||
(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.fn.glob "~/.vimrc.local")
|
||||
|
||||
(defn make-fennel-scratch
|
||||
[]
|
||||
(nvim.command "new | setlocal bt=nofile bh=wipe nobl noswapfile nu filetype=fennel"))
|
||||
(defn make-fennel-scratch []
|
||||
(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>")
|
||||
|
||||
(defn compile-fnl []
|
||||
(print :recompiling)
|
||||
(anenv.init
|
||||
{:force true
|
||||
:init :dotfiles.init}))
|
||||
(defn compile-fnl [] (print :recompiling)
|
||||
(anenv.init {:force true :init :dotfiles.init}))
|
||||
|
||||
(nu.fn-bridge :AniseedCompile :dotfiles.core :compile-fnl {:return false})
|
||||
|
||||
@@ -10,10 +10,11 @@
|
||||
; (set nvim.g.mapleader "\\")
|
||||
|
||||
(defn aniseed-reload []
|
||||
(each [k _ (ipairs package.loaded)]
|
||||
(when (string.match k "^dotfiles%..+")
|
||||
(tset package.loaded k nil)))
|
||||
((. (require :aniseed.env) :init) {:module :dotfiles.init :compile true}))
|
||||
(each [k _ (ipairs package.loaded)]
|
||||
(when (string.match k "^dotfiles%..+")
|
||||
(tset package.loaded k nil)))
|
||||
((. (require :aniseed.env) :init) {:module :dotfiles.init :compile true})
|
||||
(a.println "aniseed reloaded!"))
|
||||
|
||||
(vim.keymap.set :n "<leader>`" aniseed-reload)
|
||||
|
||||
|
||||
@@ -117,7 +117,8 @@
|
||||
; -- 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)
|
||||
(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'})]]
|
||||
|
||||
@@ -1,3 +1,47 @@
|
||||
(module dotfiles.plugin.orgbullets
|
||||
{autoload {org-bullets org-bullets}})
|
||||
{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}))
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
(module dotfiles.plugin.orgmode
|
||||
{autoload {orgmode orgmode}})
|
||||
(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" })
|
||||
(orgmode.setup {:org_agenda_files ["~/Dropbox/org/*" "~/my-orgs/**/*"]
|
||||
:org_default_notes_file "~/Dropbox/org/refile.org"})
|
||||
|
||||
(require :dotfiles.plugin.orgbullets)
|
||||
|
||||
@@ -1,76 +1,61 @@
|
||||
(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
|
||||
}})
|
||||
{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 list-member? [xs x] (a.some #(= x $1) (a.vals xs)))
|
||||
|
||||
(defn bool->int [bool]
|
||||
(if bool 1 0))
|
||||
(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 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))))
|
||||
(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-langs [:clojure
|
||||
:fennel
|
||||
:hy
|
||||
:janet
|
||||
:julia
|
||||
:lfe
|
||||
:lisp
|
||||
:racket
|
||||
:scheme
|
||||
:shen])
|
||||
|
||||
(def- paredit-host-langs
|
||||
[
|
||||
:org
|
||||
:markdown
|
||||
:asciidoc
|
||||
])
|
||||
(def- paredit-host-langs [:org :markdown :asciidoc])
|
||||
|
||||
(defn- host-lang-in? [langs]
|
||||
(list-member? langs (parser-language)))
|
||||
(defn- host-lang-in? [langs] (list-member? langs (parser-language)))
|
||||
|
||||
(defn paredit-lang? [lang]
|
||||
(list-member? paredit-langs lang))
|
||||
(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))))
|
||||
(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}))
|
||||
|
||||
; (let [group (nvim.create_augroup "BabeliteParedit" {:clear true})]
|
||||
; (nvim.create_autocmd ["CursorHold" "CursorMoved"]
|
||||
; {:group group
|
||||
; ;:pattern ["*.org" "*.md"]
|
||||
; :callback TreeSitterLangParedit}))
|
||||
;
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
:Olical/conjure {:mod :conjure}
|
||||
:Olical/fennel.vim {}
|
||||
:airblade/vim-gitgutter {}
|
||||
:akinsho/org-bullets.nvim {:mod :orgbullets}
|
||||
:clojure-vim/vim-jack-in {}
|
||||
:dhruvasagar/vim-table-mode {}
|
||||
:folke/lsp-colors.nvim {}
|
||||
|
||||
12
nvim/.config/nvim/fnl/dotfiles/ts-utils.fnl
Normal file
12
nvim/.config/nvim/fnl/dotfiles/ts-utils.fnl
Normal file
@@ -0,0 +1,12 @@
|
||||
(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.parse_query 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))))
|
||||
Reference in New Issue
Block a user