diff --git a/bin/install.ps1 b/bin/install.ps1 index be17a41..40629db 100644 --- a/bin/install.ps1 +++ b/bin/install.ps1 @@ -54,6 +54,8 @@ scoop import .\bin\windows\scoop_apps\scoop_minimal_apps.json New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\init.lua -Target (Resolve-Path .\dotfiles\neovim\init.lua) -Force New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\lualine_setup.lua -Target (Resolve-Path .\dotfiles\neovim\lua\lualine_setup.lua) -Force New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\term_powershell.lua -Target (Resolve-Path .\dotfiles\neovim\lua\term_powershell.lua) -Force +New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\lsp_config.lua -Target (Resolve-Path .\dotfiles\neovim\lua\lsp_config.lua) -Force +New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\local_settings.lua -Target (Resolve-Path .\dotfiles\neovim\lua\local_settings.lua) -Force New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\lspconfig\server_configurations\satysfi_ls.lua -Target (Resolve-Path .\dotfiles\neovim\lua\lspconfig\server_configurations\satysfi_ls.lua) -Force mkdir $env:LOCALAPPDATA\nvim\after\ftplugin New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\ftplugin\satysfi.lua -Target (Resolve-Path .\dotfiles\neovim\after\ftplugin\satysfi.lua) diff --git a/bin/install.sh b/bin/install.sh index 2b12256..964fe27 100755 --- a/bin/install.sh +++ b/bin/install.sh @@ -10,41 +10,49 @@ set -eu # exit 1 # fi # TODO: check git in path -cd $(git rev-parse --show-toplevel) +cd "$(git rev-parse --show-toplevel)" # ========================================================= # links # ========================================================= mkdir -p ~/.config/fish -ln -sf $(pwd)/dotfiles/fish/config.fish ~/.config/fish/config.fish -ln -sf $(pwd)/dotfiles/starship/starship.toml ~/.config/starship.toml -ln -sf $(pwd)/dotfiles/tmux.conf ~/.tmux.conf +ln -sf "$(pwd)/dotfiles/fish/config.fish" ~/.config/fish/config.fish +ln -sf "$(pwd)/dotfiles/starship/starship.toml" ~/.config/starship.toml +ln -sf "$(pwd)/dotfiles/tmux.conf" ~/.tmux.conf +# ln -s $(pwd)/dotfiles/neovim ~/.config/nvim mkdir -p ~/.config/nvim -ln -sf $(pwd)/dotfiles/neovim/init.lua ~/.config/nvim/init.lua +ln -sf "$(pwd)/dotfiles/neovim/init.lua" ~/.config/nvim/init.lua mkdir -p ~/.config/nvim/lua -ln -sf $(pwd)/dotfiles/neovim/lua/lualine_setup.lua ~/.config/nvim/lua/lualine_setup.lua -ln -sf $(pwd)/dotfiles/neovim/lua/term_powershell.lua ~/.config/nvim/lua/term_powershell.lua -ln -sf $(pwd)/dotfiles/neovim/lua/pluto_nvim.lua ~/.config/nvim/lua/pluto_nvim.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/lualine_setup.lua" ~/.config/nvim/lua/lualine_setup.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/term_powershell.lua" ~/.config/nvim/lua/term_powershell.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/lsp_config.lua" ~/.config/nvim/lua/lsp_config.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/pluto_nvim.lua" ~/.config/nvim/lua/pluto_nvim.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/local_settings.lua" ~/.config/nvim/lua/local_settings.lua mkdir -p ~/.config/nvim/lua/lspconfig/server_configurations -ln -sf $(pwd)/dotfiles/neovim/lua/lspconfig/server_configurations/satysfi_ls.lua ~/.config/nvim/lua/lspconfig/server_configurations/satysfi_ls.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/lspconfig/server_configurations/satysfi_ls.lua" ~/.config/nvim/lua/lspconfig/server_configurations/satysfi_ls.lua +ln -sf "$(pwd)/dotfiles/neovim/lua/lspconfig/server_configurations/jetls.lua" ~/.config/nvim/lua/lspconfig/server_configurations/jetls.lua mkdir -p ~/.config/nvim/after/ftplugin -ln -sf $(pwd)/dotfiles/neovim/after/ftplugin/satysfi.lua ~/.config/nvim/after/ftplugin/satysfi.lua -ln -sf $(pwd)/dotfiles/neovim/after/ftplugin/tex.lua ~/.config/nvim/after/ftplugin/tex.lua -ln -sf $(pwd)/dotfiles/neovim/after/ftplugin/typst.lua ~/.config/nvim/after/ftplugin/typst.lua +ln -sf "$(pwd)/dotfiles/neovim/after/ftplugin/satysfi.lua" ~/.config/nvim/after/ftplugin/satysfi.lua +ln -sf "$(pwd)/dotfiles/neovim/after/ftplugin/tex.lua" ~/.config/nvim/after/ftplugin/tex.lua +ln -sf "$(pwd)/dotfiles/neovim/after/ftplugin/typst.lua" ~/.config/nvim/after/ftplugin/typst.lua +ln -sf "$(pwd)/dotfiles/neovim/after/ftplugin/org.lua" ~/.config/nvim/after/ftplugin/org.lua mkdir -p ~/.config/nvim/after/queries/satysfi curl -o ~/.config/nvim/after/queries/satysfi/highlights.scm https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/highlights.scm curl -o ~/.config/nvim/after/queries/satysfi/indents.scm https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/indents.scm curl -o ~/.config/nvim/after/queries/satysfi/matchup.scm https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/matchup.scm mkdir -p ~/.config/nvim/after/queries/julia -ln -sf $(pwd)/dotfiles/neovim/after/queries/julia/injections.scm ~/.config/nvim/after/queries/julia/injections.scm +ln -sf "$(pwd)/dotfiles/neovim/after/queries/julia/injections.scm" ~/.config/nvim/after/queries/julia/injections.scm mkdir -p ~/.config/nvim/luasnippets -ln -sf $(pwd)/dotfiles/neovim/luasnippets/all.lua ~/.config/nvim/luasnippets/all.lua +ln -sf "$(pwd)/dotfiles/neovim/luasnippets/all.lua" ~/.config/nvim/luasnippets/all.lua mkdir -p ~/.config/nvim/luasnippets/satysfi -ln -sf $(pwd)/dotfiles/neovim/luasnippets/satysfi/math.lua ~/.config/nvim/luasnippets/satysfi/math.lua +ln -sf "$(pwd)/dotfiles/neovim/luasnippets/satysfi/math.lua" ~/.config/nvim/luasnippets/satysfi/math.lua mkdir -p ~/.julia/config -ln -sf $(pwd)/dotfiles/startup_linux.jl ~/.julia/config/startup.jl +ln -sf "$(pwd)/dotfiles/startup_linux.jl" ~/.julia/config/startup.jl +curl -o ~/.julia/config/catppuccin.jl https://raw.githubusercontent.com/catppuccin/ohmyrepl/refs/heads/main/catppuccin.jl mkdir -p ~/.config/lf -ln -sf $(pwd)/dotfiles/lf/lfrc ~/.config/lf/lfrc +ln -sf "$(pwd)/dotfiles/lf/lfrc" ~/.config/lf/lfrc + +ln -sf "$(pwd)/dotfiles/bat/config" "$(bat --config-file)" diff --git a/bin/neovim/add_dependencies.jl b/bin/neovim/add_dependencies.jl index f4560c5..b3e39fa 100644 --- a/bin/neovim/add_dependencies.jl +++ b/bin/neovim/add_dependencies.jl @@ -6,27 +6,26 @@ using Pkg # add LanguageServer.jl Pkg.add("LanguageServer") -# add dependencies of LanguageServer.jl -pkg_ls = Pkg.project().dependencies["LanguageServer"] -pkg_ls_deps = Pkg.dependencies()[pkg_ls].dependencies |> keys -foreach(Pkg.add, pkg_ls_deps) +# add PackageCompiler.jl +Pkg.add("PackageCompiler") # add extra dependencies # these packages are manually collected -pkg_extra = ["Logging", "Sockets", "DataStructures", "Tar", "ArgTools", "Dates", "Downloads", "TOML"] -foreach(Pkg.add, pkg_extra) -@info "dependency added" +pkg_extra = ["Logging", "Sockets", "DataStructures", "Tar", "ArgTools", "Dates", "Downloads", "TOML", "JSONRPC", "SymbolServer", "CSTParser", "StaticLint", "JSON"] +Pkg.add(pkg_extra) +@info "added dependencies" + +# Extra package to be executed in precompiled code +pkg_precompiled = ["Pkg"] # save pkgs to be used for precompile functions with traced script out_path = joinpath(Pkg.project().path |> dirname, "precompile_exec_head.jl") @info "writing $(out_path)" open(out_path, "w") do io println(io, "using LanguageServer") - println(io, "using " * join(pkg_ls_deps, ", ")) println(io, "using " * join(pkg_extra, ", ")) - if Sys.iswindows() - println(io, "import FileWatching") - end + println(io, "using " * join(pkg_precompiled, ", ")) + println(io, "import FileWatching") end @info "finished writing precompile head file" diff --git a/bin/neovim/setup_julials.jl b/bin/neovim/setup_julials.jl index f6107bd..dbd44f3 100644 --- a/bin/neovim/setup_julials.jl +++ b/bin/neovim/setup_julials.jl @@ -5,7 +5,8 @@ if !ispath(project_path) @info "Created $(project_path)" touch(joinpath(project_path, "tracecompile.jl")) end -cmd = `julia --project=$(project_path) $(@__DIR__)/add_dependencies.jl` -@info cmd -run(cmd) + +using Pkg +Pkg.activate(project_path) +include("$(@__DIR__)/add_dependencies.jl") diff --git a/bin/neovim/update_julials.jl b/bin/neovim/update_julials.jl index 713c00b..77c157e 100644 --- a/bin/neovim/update_julials.jl +++ b/bin/neovim/update_julials.jl @@ -1,15 +1,18 @@ #!/usr/bin/julia project_path = joinpath(homedir(), ".julia", "environments", "nvim-lspconfig") +using Pkg +using PackageCompiler; cd(project_path) do @info "now at " pwd() - run(`julia --project=. -e 'using Pkg; Pkg.update()'`) + Pkg.activate(".") + Pkg.update() compile_traces = Iterators.filter(eachline("tracecompile.jl")) do line # Remove anonymous functions from compile trace !startswith(line, '#') && !occursin(r"\#\d+\#\d+", line) && !occursin(r"\#\#printstyled\#", line) end |> join read("precompile_exec_head.jl", String) * compile_traces |> (b -> write("precompile_exec.jl", b)) @info "compiling sysimage..." - run(`julia --project=. -e 'using PackageCompiler; create_sysimage(["LanguageServer"], sysimage_path = "sys-ls.so", precompile_execution_file = ["precompile_exec.jl"])'`) + create_sysimage(["LanguageServer"], sysimage_path = "sys-ls.so", precompile_execution_file = ["precompile_exec.jl"]) @info "post precompile" run(`julia --project=. -J sys-ls.so -e 'using Pkg; Pkg.precompile()'`) end diff --git a/dotfiles/bat/config b/dotfiles/bat/config new file mode 100644 index 0000000..a717d92 --- /dev/null +++ b/dotfiles/bat/config @@ -0,0 +1,4 @@ +# use Catppuccin for bat +# https://github.com/catppuccin/bat +# Installation instruction on the readme +--theme="Catppuccin Mocha" diff --git a/dotfiles/fish/config.fish b/dotfiles/fish/config.fish index 37148a4..f549acb 100644 --- a/dotfiles/fish/config.fish +++ b/dotfiles/fish/config.fish @@ -24,6 +24,25 @@ if status is-interactive # opam #source ~/.opam/opam-init/init.fish > /dev/null 2> /dev/null; or true + + function rga-fzf + set RG_PREFIX 'rga --files-with-matches' + if test (count $argv) -gt 1 + set RG_PREFIX "$RG_PREFIX $argv[1..-2]" + end + set -l file $file + set file ( + FZF_DEFAULT_COMMAND="$RG_PREFIX '$argv[-1]'" \ + fzf --sort \ + --preview='test ! -z {} && \ + rga --pretty --context 5 {q} {}' \ + --phony -q "$argv[-1]" \ + --bind "change:reload:$RG_PREFIX {q}" \ + --preview-window='50%:wrap' + ) && \ + echo "opening $file" && \ + open "$file" + end end # starship diff --git a/dotfiles/neovim/.gitignore b/dotfiles/neovim/.gitignore new file mode 100644 index 0000000..8089223 --- /dev/null +++ b/dotfiles/neovim/.gitignore @@ -0,0 +1 @@ +lua/local_settings.lua diff --git a/dotfiles/neovim/after/ftplugin/org.lua b/dotfiles/neovim/after/ftplugin/org.lua new file mode 100644 index 0000000..530b84c --- /dev/null +++ b/dotfiles/neovim/after/ftplugin/org.lua @@ -0,0 +1,2 @@ +vim.o.tabstop = 2 +vim.o.shiftwidth = 2 diff --git a/dotfiles/neovim/after/queries/julia/injections.scm b/dotfiles/neovim/after/queries/julia/injections.scm index 964cc3b..efc8930 100644 --- a/dotfiles/neovim/after/queries/julia/injections.scm +++ b/dotfiles/neovim/after/queries/julia/injections.scm @@ -1,46 +1,7 @@ ;; extends -((prefixed_string_literal - prefix: (identifier) @_prefix) @injection.content - (#eq? @_prefix "md") - (#set! injection.language "markdown") - (#offset! @injection.content 0 2 0 -1)) - -; ((prefixed_string_literal -; prefix: (identifier) @_prefix) @injection.content -; (#eq? @_prefix "sql") -; (#set! injection.language "sql") -; (#offset! @injection.content 0 4 0 -1)) -; -; ((prefixed_string_literal -; prefix: (identifier) @_prefix) @injection.content -; (#eq? @_prefix "s") -; (#set! injection.language "sql") -; (#offset! @injection.content 0 3 0 -1)) -; -; ((prefixed_string_literal -; prefix: (identifier) @_prefix) @injection.content -; (#eq? @_prefix "t") -; (#set! injection.language "regex") -; (#offset! @injection.content 0 2 0 -1)) -; -; ((prefixed_string_literal -; prefix: (identifier) @_prefix) @injection.content -; (#eq? @_prefix "ts") -; (#set! injection.language "regex") -; (#offset! @injection.content 0 2 0 -1)) -; -; ((prefixed_string_literal -; prefix: (identifier) @_prefix) @injection.content -; (#eq? @_prefix "tu") -; (#set! injection.language "regex") -; (#offset! @injection.content 0 3 0 -1)) -; -; ((prefixed_string_literal -; prefix: (identifier) @_prefix) @injection.content -; (#eq? @_prefix "sql") -; ; (#offset! @injection.content 0 2 0 -1) -; ; (#offset! @injection.content 0 6 0 -3) -; (#gsub! @injection.content "^\"%\"" "%1") -; (#set! injection.language "sql") -; ) +(prefixed_string_literal + prefix: (identifier) @_prefix + (content) @injection.content + (#eq? @_prefix "sql") + (#set! injection.language "sql")) diff --git a/dotfiles/neovim/init.lua b/dotfiles/neovim/init.lua index c4b0b2a..ff1e361 100644 --- a/dotfiles/neovim/init.lua +++ b/dotfiles/neovim/init.lua @@ -114,6 +114,9 @@ require('lazy').setup({ build = ":TSUpdate", dependencies = { "nvim-treesitter/nvim-treesitter-textobjects", + { + "nvim-treesitter/nvim-treesitter-context" + } }, }, { @@ -122,14 +125,6 @@ require('lazy').setup({ }, { "andymass/vim-matchup", - config = function() - vim.g.matchup_matchparen_offscreen = { method = "popup" } - require 'nvim-treesitter.configs'.setup { - matchup = { - enable = true, - } - } - end, }, { 'nvim-telescope/telescope.nvim', @@ -193,29 +188,7 @@ require('lazy').setup({ -- see Julian/lean.nvim readme opts = { lsp = { - on_attach = function(client, bufnr) - -- Enable completion triggered by - --vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') - - -- Mappings - -- See `:help vim.lsp.*` for documentation on any of the below function - local bufopts = { noremap = true, silent = true, buffer = bufnr } - vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts) - vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) - vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts) - vim.keymap.set('n', 'g1', vim.lsp.buf.implementation, bufopts) - vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) - vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) - vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) - vim.keymap.set('n', 'wl', function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, bufopts) - vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, bufopts) - vim.keymap.set('n', 'rn', vim.lsp.buf.rename, bufopts) - vim.keymap.set('n', 'ca', vim.lsp.buf.code_action, bufopts) - vim.keymap.set('n', 'grf', vim.lsp.buf.references, bufopts) - vim.keymap.set('n', 'f', function() vim.lsp.buf.format { async = true } end, bufopts) - end, + on_attach = require("lsp_config").on_attach, }, mappings = true, }, @@ -231,18 +204,9 @@ require('lazy').setup({ }, -- event = 'VeryLazy', -- doesn't work with existing comp and treesitter config = function() - -- Setup treesitter - require('nvim-treesitter.configs').setup({ - highlight = { - enable = true, - additional_vim_regex_highlighting = { 'org' }, - }, - ensure_installed = { 'org' }, - }) - -- Setup orgmode require('orgmode').setup({ - org_agenda_files = '~/orgfiles/**/*', + org_agenda_files = require("local_settings").org_agenda_files, org_default_notes_file = '~/orgfiles/refile.org', org_todo_keywords = { "TODO(t)", @@ -279,6 +243,66 @@ require('lazy').setup({ }) end, }, + { + 'chomosuke/typst-preview.nvim', + ft = 'typst', + version = 'v1.*', + build = function() + require 'typst-preview'.update() + end, + config = function() + require 'typst-preview'.setup { + -- Setting this true will enable logging debug information to + -- `vim.fn.stdpath 'data' .. '/typst-preview/log.txt'` + debug = true, + + -- Custom format string to open the output link provided with %s + -- Example: open_cmd = 'firefox %s -P typst-preview --class typst-preview' + open_cmd = nil, + + -- Setting this to 'always' will invert black and white in the preview + -- Setting this to 'auto' will invert depending if the browser has enable + -- dark mode + -- Setting this to '{"rest": "