Compare commits

..

6 Commits

Author SHA1 Message Date
3c9383a552 format only if server provides formatting 2022-10-20 19:28:21 -05:00
a61ba60adb Fancy Header stars in org files 2022-10-20 19:24:39 -05:00
b762400ea9 guifontwide setting and formatting 2022-10-20 19:24:37 -05:00
5a77fa58e6 Fix autosave formatting 2022-10-20 19:23:17 -05:00
f0fdde8b8b paredit.fnl formatting 2022-10-20 19:23:17 -05:00
94c07708b6 Reload aniseed instead of source init.lua 2022-10-20 19:23:17 -05:00
8 changed files with 202 additions and 169 deletions

View File

@@ -1,42 +1,40 @@
(module dotfiles.core (module dotfiles.core {autoload {a aniseed.core}
{autoload require {anenv aniseed.env
{a aniseed.core}
require
{anenv aniseed.env
nvim aniseed.nvim nvim aniseed.nvim
nu aniseed.nvim.util nu aniseed.nvim.util
u dotfiles.util u dotfiles.util}})
}})
(nvim.ex.set :shortmess+=c)
(nvim.ex.set "shortmess+=c") ; don't give |ins-completion-menu| messages. ; 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 (defn- safe-source [filename]
[filename]
(let [glob (nvim.fn.glob filename)] (let [glob (nvim.fn.glob filename)]
(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))
(def- on-opts [ (def- on-opts [:autoindent
:autoindent
:autoread :autoread
:expandtab :expandtab
:exrc ; allow project level (neo)vim files :exrc
; allow project level (neo)vim files
:hlsearch :hlsearch
:ignorecase :ignorecase
:incsearch :incsearch
:number :number
:ruler :ruler
:secure :secure
:shiftround ; When at 3 spaces and I hit >>, go to 4, not 5. :shiftround
:showcmd ; shows (parital) command in the status line ; When at 3 spaces and I hit >>, go to 4, not 5.
:showcmd
; shows (parital) command in the status line
:showmatch :showmatch
:smartcase :smartcase
:splitbelow :splitbelow
@@ -44,32 +42,33 @@
:termguicolors :termguicolors
:title :title
:undofile :undofile
:wildmenu :wildmenu])
])
(def- val-based-opts {; :t_Co 256
(def- val-based-opts
{
; :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" :guifontwide :Hasklig
: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
:grepprg "ag --vimgrep" ; Use Silver Searcher instead of grep ;Don't clutter my dirs up with swp and tmp files
:tags "tags" :grepprg "ag --vimgrep"
:updatetime 300 ; per coc.vim for diagnostic messages ; Use Silver Searcher instead of grep
:tags :tags
:updatetime 300
; per coc.vim for diagnostic messages
:signcolumn "auto:1-3" :signcolumn "auto:1-3"
:colorcolumn [80 100] :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
@@ -79,46 +78,38 @@
:mouse "" :mouse ""
:list true :list true
:listchars "tab:➥\\ ,trail:·," :listchars "tab:➥\\ ,trail:·,"
:backspace "indent,eol,start" ;allow backspacing over everything in insert mode :backspace "indent,eol,start"
;allow backspacing over everything in insert mode
:wildmode "list:longest,list:full" :wildmode "list:longest,list:full"
:wrap false :wrap false})
})
(defn- set-opt (defn- set-opt [[opt val]] (tset vim.opt (a.str opt) val))
[[opt val]]
(tset vim.opt (a.str opt) val))
(defn- set-opt-on (defn- set-opt-on [opt] (set-opt [opt true]))
[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)
(nvim.ex.syntax "on") (nvim.ex.syntax :on)
;; (nvim.ex.colorscheme :soluarized) ;; (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" "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 [] (defn compile-fnl [] (print :recompiling)
(print :recompiling) (anenv.init {:force true :init :dotfiles.init}))
(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

@@ -13,7 +13,8 @@
(each [k _ (ipairs package.loaded)] (each [k _ (ipairs package.loaded)]
(when (string.match k "^dotfiles%..+") (when (string.match k "^dotfiles%..+")
(tset package.loaded k nil))) (tset package.loaded k nil)))
((. (require :aniseed.env) :init) {:module :dotfiles.init :compile true})) ((. (require :aniseed.env) :init) {:module :dotfiles.init :compile true})
(a.println "aniseed reloaded!"))
(vim.keymap.set :n "<leader>`" aniseed-reload) (vim.keymap.set :n "<leader>`" aniseed-reload)

View File

@@ -117,7 +117,8 @@
; -- buf_set_keymap('x', '<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") (nvim.buf_set_option 0 :omnifunc "v:lua.vim.lsp.omnifunc")
(bind-client-mappings client) (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()") ; (nvim.ex.autocmd "BufEnter,CursorHold,InsertLeave" :<buffer> :lua "vim.lsp.codelens.refresh()")
; client autocmds ; 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'})]] ; -- 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'})]]

View File

@@ -1,3 +1,47 @@
(module dotfiles.plugin.orgbullets (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}))

View File

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

View File

@@ -5,33 +5,26 @@
paredit paredit paredit paredit
ts-parsers nvim-treesitter.parsers ts-parsers nvim-treesitter.parsers
ts-utils nvim-treesitter.ts_utils ts-utils nvim-treesitter.ts_utils
languagetree vim.treesitter.languagetree languagetree vim.treesitter.languagetree}})
}})
(defn list-member? [xs x] (defn list-member? [xs x] (a.some #(= x $1) (a.vals xs)))
(a.some #(= x $1) (a.vals xs)))
(defn bool->int [bool] (defn bool->int [bool] (if bool 1 0))
(if bool 1 0))
(defn language-at-cursor [] (defn language-at-cursor [] (let [parser (ts-parsers.get_parser)
(let [parser (ts-parsers.get_parser)
current-node (ts-utils.get_node_at_cursor) current-node (ts-utils.get_node_at_cursor)
range (if current-node range (if current-node [(current-node:range)])
[(current-node:range)])
lang (if range lang (if range
(languagetree.language_for_range parser range))] (languagetree.language_for_range parser
range))]
(if lang (if lang
(lang:lang)))) (lang:lang))))
(defn parser-language [] (defn parser-language [] (let [parser (ts-parsers.get_parser)]
(let [parser (ts-parsers.get_parser)]
(when parser (when parser
(parser:lang)))) (parser:lang))))
(def- paredit-langs (def- paredit-langs [:clojure
[
:clojure
:fennel :fennel
:hy :hy
:janet :janet
@@ -40,21 +33,13 @@
:lisp :lisp
:racket :racket
:scheme :scheme
:shen :shen])
])
(def- paredit-host-langs (def- paredit-host-langs [:org :markdown :asciidoc])
[
:org
:markdown
:asciidoc
])
(defn- host-lang-in? [langs] (defn- host-lang-in? [langs] (list-member? langs (parser-language)))
(list-member? langs (parser-language)))
(defn paredit-lang? [lang] (defn paredit-lang? [lang] (list-member? paredit-langs lang))
(list-member? paredit-langs lang))
(defn TreeSitterLangParedit [] (defn TreeSitterLangParedit []
(when (host-lang-in? paredit-host-langs) (when (host-lang-in? paredit-host-langs)
@@ -68,9 +53,9 @@
; (nvim.del_augroup_by_name "BabeliteParedit") ; (nvim.del_augroup_by_name "BabeliteParedit")
; (nvim.get_autocmds {:group "BabeliteParedit"}) ; (nvim.get_autocmds {:group "BabeliteParedit"})
(let [group (nvim.create_augroup "BabeliteParedit" {:clear true})] ; (let [group (nvim.create_augroup "BabeliteParedit" {:clear true})]
(nvim.create_autocmd ["CursorHold" "CursorMoved"] ; (nvim.create_autocmd ["CursorHold" "CursorMoved"]
{:group group ; {:group group
;:pattern ["*.org" "*.md"] ; ;:pattern ["*.org" "*.md"]
:callback TreeSitterLangParedit})) ; :callback TreeSitterLangParedit}))
;

View File

@@ -22,7 +22,6 @@
:Olical/conjure {:mod :conjure} :Olical/conjure {:mod :conjure}
:Olical/fennel.vim {} :Olical/fennel.vim {}
:airblade/vim-gitgutter {} :airblade/vim-gitgutter {}
:akinsho/org-bullets.nvim {:mod :orgbullets}
:clojure-vim/vim-jack-in {} :clojure-vim/vim-jack-in {}
:dhruvasagar/vim-table-mode {} :dhruvasagar/vim-table-mode {}
:folke/lsp-colors.nvim {} :folke/lsp-colors.nvim {}

View 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))))