Compare commits
3 commits
main
...
pluto_nvim
Author | SHA1 | Date | |
---|---|---|---|
f1cc8f9210 | |||
3efaba3135 | |||
b6a05b9ad7 |
26 changed files with 321 additions and 431 deletions
23
README.md
23
README.md
|
@ -7,18 +7,16 @@ my dotfiles
|
||||||
- AHK macro
|
- AHK macro
|
||||||
- wezterm
|
- wezterm
|
||||||
- etc
|
- etc
|
||||||
- Arch
|
- Ubuntu 20.04 on WSL
|
||||||
|
- fish
|
||||||
|
- Arch/Manjaro
|
||||||
- fish
|
- fish
|
||||||
- tmux
|
- tmux
|
||||||
- neovim
|
- neovim
|
||||||
- keyboard config(xremap)
|
- keyboard config(xremap)
|
||||||
- wezterm
|
- wezterm
|
||||||
- Ubuntu 22.04 on WSL
|
|
||||||
- fish
|
|
||||||
- Termux
|
|
||||||
|
|
||||||
## extra
|
## extra
|
||||||
- qpdfview
|
|
||||||
- okular
|
- okular
|
||||||
|
|
||||||
# Installing
|
# Installing
|
||||||
|
@ -31,20 +29,11 @@ my dotfiles
|
||||||
6. run `bin/install.ps1`
|
6. run `bin/install.ps1`
|
||||||
|
|
||||||
### note
|
### note
|
||||||
* manually install lean
|
* manual install lean
|
||||||
|
|
||||||
## Linux
|
## Linux
|
||||||
1. run install.sh
|
1. install fish
|
||||||
|
2. run install.sh
|
||||||
# Neovim
|
|
||||||
|
|
||||||
## Julia
|
|
||||||
### Initial setup
|
|
||||||
- `./bin/neovim/setup_julials.jl` to set up environment with LanguageServer.jl
|
|
||||||
<!-- - Edit `init.lua` not to use sysimage and edit some julia code -->
|
|
||||||
- `./bin/neovim/update_julials.jl` to generate sysimage for faster startup time
|
|
||||||
|
|
||||||
Edit `init.lua` to change arguments for julials.
|
|
||||||
|
|
||||||
# TODO
|
# TODO
|
||||||
- Iron.nvim doesn't work for julia on Windows
|
- Iron.nvim doesn't work for julia on Windows
|
||||||
|
|
|
@ -58,7 +58,6 @@ New-Item -ItemType SymbolicLink -Path ~\AppData\Local\nvim\lua\lspconfig\server_
|
||||||
mkdir $env:LOCALAPPDATA\nvim\after\ftplugin
|
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)
|
New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\ftplugin\satysfi.lua -Target (Resolve-Path .\dotfiles\neovim\after\ftplugin\satysfi.lua)
|
||||||
New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\ftplugin\tex.lua -Target (Resolve-Path .\dotfiles\neovim\after\ftplugin\tex.lua)
|
New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\ftplugin\tex.lua -Target (Resolve-Path .\dotfiles\neovim\after\ftplugin\tex.lua)
|
||||||
New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\nvim\after\ftplugin\typst.lua -Target (Resolve-Path .\dotfiles\neovim\after\ftplugin\typst.lua)
|
|
||||||
mkdir $env:LOCALAPPDATA\nvim\after\queries\satysfi
|
mkdir $env:LOCALAPPDATA\nvim\after\queries\satysfi
|
||||||
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/highlights.scm" -OutFile $env:LOCALAPPDATA\nvim\after\queries\satysfi\highlights.scm
|
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/highlights.scm" -OutFile $env:LOCALAPPDATA\nvim\after\queries\satysfi\highlights.scm
|
||||||
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/indents.scm" -OutFile $env:LOCALAPPDATA\nvim\after\queries\satysfi\indents.scm
|
Invoke-WebRequest -Uri "https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/indents.scm" -OutFile $env:LOCALAPPDATA\nvim\after\queries\satysfi\indents.scm
|
||||||
|
@ -77,7 +76,4 @@ New-Item -ItemType SymbolicLink -Path ~\.config\wezterm\wezterm.lua -Target (Res
|
||||||
# julia
|
# julia
|
||||||
mkdir ~\.config\julia\config
|
mkdir ~\.config\julia\config
|
||||||
New-Item -ItemType SymbolicLink -Path ~\.julia\config\startup.jl -Target (Resolve-Path .\dotfiles\startup_windows.jl) -Force
|
New-Item -ItemType SymbolicLink -Path ~\.julia\config\startup.jl -Target (Resolve-Path .\dotfiles\startup_windows.jl) -Force
|
||||||
# lf
|
|
||||||
mkdir $env:LOCALAPPDATA\lf
|
|
||||||
New-Item -ItemType SymbolicLink -Path $env:LOCALAPPDATA\lf\lfrc -Target (Resolve-Path .\dotfiles\lf\lfrc) -Force
|
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,6 @@ ln -sf $(pwd)/dotfiles/neovim/lua/lspconfig/server_configurations/satysfi_ls.lua
|
||||||
mkdir -p ~/.config/nvim/after/ftplugin
|
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/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/tex.lua ~/.config/nvim/after/ftplugin/tex.lua
|
||||||
ln -sf $(pwd)/dotfiles/neovim/after/ftplugin/typst.lua ~/.config/nvim/after/ftplugin/typst.lua
|
|
||||||
mkdir -p ~/.config/nvim/after/queries/satysfi
|
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/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/indents.scm https://raw.githubusercontent.com/monaqa/tree-sitter-satysfi/master/queries/indents.scm
|
||||||
|
@ -45,8 +44,3 @@ ln -sf $(pwd)/dotfiles/neovim/luasnippets/satysfi/math.lua ~/.config/nvim/luasni
|
||||||
|
|
||||||
mkdir -p ~/.julia/config
|
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
|
||||||
|
|
||||||
mkdir -p ~/.config/lf
|
|
||||||
ln -sf $(pwd)/dotfiles/lf/lfrc ~/.config/lf/lfrc
|
|
||||||
|
|
||||||
ln -sf $(pwd)/dotfiles/bat/config "$(bat --config-file)"
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ foreach(Pkg.add, pkg_ls_deps)
|
||||||
|
|
||||||
# add extra dependencies
|
# add extra dependencies
|
||||||
# these packages are manually collected
|
# these packages are manually collected
|
||||||
pkg_extra = ["Logging", "Sockets", "DataStructures", "Tar", "ArgTools", "Dates", "Downloads", "TOML"]
|
pkg_extra = ["Logging", "Sockets", "DataStructures", "Tar", "ArgTools", "Dates", "Downloads"]
|
||||||
foreach(Pkg.add, pkg_extra)
|
foreach(Pkg.add, pkg_extra)
|
||||||
@info "dependency added"
|
@info "dependency added"
|
||||||
|
|
||||||
|
@ -24,9 +24,6 @@ open(out_path, "w") do io
|
||||||
println(io, "using LanguageServer")
|
println(io, "using LanguageServer")
|
||||||
println(io, "using " * join(pkg_ls_deps, ", "))
|
println(io, "using " * join(pkg_ls_deps, ", "))
|
||||||
println(io, "using " * join(pkg_extra, ", "))
|
println(io, "using " * join(pkg_extra, ", "))
|
||||||
if Sys.iswindows()
|
|
||||||
println(io, "import FileWatching")
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
@info "finished writing precompile head file"
|
@info "finished writing precompile head file"
|
||||||
|
|
||||||
|
|
|
@ -1,24 +1,27 @@
|
||||||
# How to manage Julia Language Server
|
# How to manage Julia Language Server
|
||||||
This config use sysimage built with PackageCompiler to make language server starts faster.
|
This config use sysimage built with PackageCompiler to make language server startup faster.
|
||||||
Scripts in this directory are for management of the sysimage.
|
Scripts in this directory is for management of sysimage.
|
||||||
|
|
||||||
# description
|
# description
|
||||||
all related process is done in project at `~/.julia/environments/nvim-lspconfig/`.
|
all related process is done in project at `~/.julia/environments/nvim-lspconfig/`.
|
||||||
|
|
||||||
## install (or minor update of Julia)
|
## startup
|
||||||
```sh
|
```sh
|
||||||
julia ./setup_julials.jl
|
$ ./setup_julials.sh
|
||||||
```
|
```
|
||||||
Run Language Server with `--tracecompile` option from any editor.
|
which executes `add_dependencies.jl` internally.
|
||||||
|
|
||||||
## update
|
## update
|
||||||
```sh
|
```sh
|
||||||
julia ./update_julials.sh
|
$ ./update_julials.sh
|
||||||
```
|
```
|
||||||
which updates project, compile sysimage, then do precompile.
|
which updates project, compile sysimage, then do precompile.
|
||||||
To use the sysimage, run Language Server with `-J ~/.julia/environments/nvim-lspconfig/` option.
|
|
||||||
|
|
||||||
# effect
|
# effect
|
||||||
Start up got about x3 - x4 faster.
|
Start up got about x3 - x4 faster.
|
||||||
It still takes some time to load packages though.
|
It still takes some time to load packages though.
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
- [ ] Not sure all necessary packages are listed in add_dependencies.jl
|
||||||
|
- [ ] Maybe it's better to set up different sysimages for each projects
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
#!/usr/bin/julia
|
#!/usr/bin/julia
|
||||||
project_path = joinpath(homedir(), ".julia", "environments", "nvim-lspconfig")
|
project_path = joinpath(homedir(), ".julia", "environments", "nvim-lspconfig")
|
||||||
if !ispath(project_path)
|
if !ispath(project_path)
|
||||||
mkdir(project_path)
|
try
|
||||||
@info "Created $(project_path)"
|
mkdir(project_path)
|
||||||
touch(joinpath(project_path, "tracecompile.jl"))
|
@info "Created $(project_path)"
|
||||||
|
catch e
|
||||||
|
@error e
|
||||||
|
@error dump(e)
|
||||||
|
throw(e)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
cmd = `julia --project=$(project_path) $(@__DIR__)/add_dependencies.jl`
|
cmd = `julia --project=$(project_path) $(@__DIR__)/add_dependencies.jl`
|
||||||
@info cmd
|
@info cmd
|
||||||
|
|
2
bin/neovim/setup_julials.sh
Executable file
2
bin/neovim/setup_julials.sh
Executable file
|
@ -0,0 +1,2 @@
|
||||||
|
#!/usr/bin/bash -x
|
||||||
|
julia --project=~/.julia/environments/nvim-lspconfig ./add_dependencies.jl
|
|
@ -1,16 +1,14 @@
|
||||||
#!/usr/bin/julia
|
#!/usr/bin/julia
|
||||||
project_path = joinpath(homedir(), ".julia", "environments", "nvim-lspconfig")
|
project_path = joinpath(homedir(), ".julia", "environments", "nvim-lspconfig")
|
||||||
cd(project_path) do
|
cd(project_path)
|
||||||
@info "now at " pwd()
|
@info "now at " pwd()
|
||||||
run(`julia --project=. -e 'using Pkg; Pkg.update()'`)
|
run(`julia --project=. -e 'using Pkg; Pkg.update()'`)
|
||||||
compile_traces = Iterators.filter(eachline("tracecompile.jl")) do line
|
compile_traces = Iterators.filter(eachline("tracecompile.jl")) do line
|
||||||
# Remove anonymous functions from compile trace
|
!startswith(line, '#') && !occursin(r"\#\d+\#\d+", line)
|
||||||
!startswith(line, '#') && !occursin(r"\#\d+\#\d+", line) && !occursin(r"\#\#printstyled\#", line)
|
end |> join
|
||||||
end |> join
|
read("precompile_exec_head.jl", String) * compile_traces |> (b -> write("precompile_exec.jl", b))
|
||||||
read("precompile_exec_head.jl", String) * compile_traces |> (b -> write("precompile_exec.jl", b))
|
@info "compiling sysimage..."
|
||||||
@info "compiling sysimage..."
|
run(`julia --project=. -e 'using PackageCompiler; create_sysimage(["LanguageServer"], sysimage_path = "sys-ls.so", precompile_execution_file = ["precompile_exec.jl"])'`)
|
||||||
run(`julia --project=. -e 'using PackageCompiler; create_sysimage(["LanguageServer"], sysimage_path = "sys-ls.so", precompile_execution_file = ["precompile_exec.jl"])'`)
|
@info "post precompile"
|
||||||
@info "post precompile"
|
run(`julia --project=. -J sys-ls.so -e 'using Pkg; Pkg.precompile()'`)
|
||||||
run(`julia --project=. -J sys-ls.so -e 'using Pkg; Pkg.precompile()'`)
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
7
bin/neovim/update_julials.sh
Executable file
7
bin/neovim/update_julials.sh
Executable file
|
@ -0,0 +1,7 @@
|
||||||
|
#!/usr/bin/bash -x
|
||||||
|
cd ~/.julia/environments/nvim-lspconfig/ || return 1
|
||||||
|
julia --project=. -e 'using Pkg; Pkg.update()'
|
||||||
|
cat precompile_exec_head.jl tracecompile.jl > precompile_exec.jl
|
||||||
|
julia --project=. -e 'using PackageCompiler; create_sysimage(["LanguageServer"], sysimage_path="sys-ls.so", precompile_execution_file=["precompile_exec.jl"])'
|
||||||
|
julia --project=. -J sys-ls.so -e 'using Pkg; Pkg.precompile()'
|
||||||
|
|
|
@ -1,4 +0,0 @@
|
||||||
# use Catppuccin for bat
|
|
||||||
# https://github.com/catppuccin/bat
|
|
||||||
# Installation instruction on the readme
|
|
||||||
--theme="Catppuccin Latte"
|
|
|
@ -18,7 +18,6 @@ if status is-interactive
|
||||||
# abbr (from 3.6, --universal is removed)
|
# abbr (from 3.6, --universal is removed)
|
||||||
abbr -a -- l less
|
abbr -a -- l less
|
||||||
abbr -a -- ll 'eza -la --icons --git'
|
abbr -a -- ll 'eza -la --icons --git'
|
||||||
abbr -a -- qpv 'qpdfview --unique'
|
|
||||||
|
|
||||||
zoxide init fish | source
|
zoxide init fish | source
|
||||||
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
cmap <tab> cmd-menu-complete
|
|
||||||
cmap <backtab> cmd-menu-complete-back
|
|
||||||
|
|
||||||
## https://github.com/gokcehan/lf/wiki/Integrations#eza
|
|
||||||
#cmd on-select &{{
|
|
||||||
# lf -remote "send $id set statfmt \"$(eza -ld --color=always "$f" | sed 's/\\/\\\\/g;s/"/\\"/g')\""
|
|
||||||
#}}
|
|
||||||
#
|
|
||||||
#cmd git_branch ${{
|
|
||||||
# git branch | fzf | xargs git checkout
|
|
||||||
# pwd_shell="$(pwd | sed 's/\\/\\\\/g;s/"/\\"/g')"
|
|
||||||
# lf -remote "send $id updir; cd \"$pwd_shell\""
|
|
||||||
#}}
|
|
||||||
#map gb :git_branch
|
|
||||||
#map gp $clear; git pull --rebase || true; echo "press ENTER"; read ENTER
|
|
||||||
#map gs $clear; git status; echo "press ENTER"; read ENTER
|
|
||||||
#map gl $clear; git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
|
|
||||||
#
|
|
||||||
#cmd on-cd &{{
|
|
||||||
# fmt="$(STARSHIP_SHELL= starship prompt | sed 's/\\/\\\\/g;s/"/\\"/g')"
|
|
||||||
# lf -remote "send $id set promptfmt \"$fmt\""
|
|
||||||
#}}
|
|
||||||
|
|
|
@ -5,42 +5,3 @@
|
||||||
(#eq? @_prefix "md")
|
(#eq? @_prefix "md")
|
||||||
(#set! injection.language "markdown")
|
(#set! injection.language "markdown")
|
||||||
(#offset! @injection.content 0 2 0 -1))
|
(#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")
|
|
||||||
; )
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
-- Installing plugin manager 'lazy.nvim'
|
-- Installing plugin manager 'lazy.nvim'
|
||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
vim.fn.system({
|
vim.fn.system({
|
||||||
"git",
|
"git",
|
||||||
"clone",
|
"clone",
|
||||||
|
@ -28,6 +28,16 @@ require('lazy').setup({
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
dir = "./lua/pluto_nvim.lua",
|
||||||
|
config = function()
|
||||||
|
-- temp global for dev
|
||||||
|
pluto_nvim = require("pluto_nvim")
|
||||||
|
require("pluto_nvim").setup {}
|
||||||
|
end,
|
||||||
|
lazy = true,
|
||||||
|
ft = { 'julia' },
|
||||||
|
},
|
||||||
{
|
{
|
||||||
'folke/which-key.nvim',
|
'folke/which-key.nvim',
|
||||||
config = function()
|
config = function()
|
||||||
|
@ -56,21 +66,7 @@ require('lazy').setup({
|
||||||
},
|
},
|
||||||
{ -- lualine(statusline)
|
{ -- lualine(statusline)
|
||||||
'nvim-lualine/lualine.nvim',
|
'nvim-lualine/lualine.nvim',
|
||||||
dependencies = { 'nvim-tree/nvim-web-devicons', lazy = true }
|
dependencies = { 'kyazdani42/nvim-web-devicons', lazy = true }
|
||||||
},
|
|
||||||
{
|
|
||||||
'shellRaining/hlchunk.nvim',
|
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
|
||||||
config = function()
|
|
||||||
require('hlchunk').setup {
|
|
||||||
chunk = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
line_num = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'lervag/vimtex',
|
'lervag/vimtex',
|
||||||
|
@ -145,40 +141,7 @@ require('lazy').setup({
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'folke/trouble.nvim',
|
'folke/trouble.nvim',
|
||||||
opts = {},
|
-- config = function
|
||||||
cmd = "Trouble",
|
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
"<space>xx",
|
|
||||||
"<cmd>Trouble diagnostics toggle<cr>",
|
|
||||||
desc = "Diagnostics (Trouble)",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<space>xX",
|
|
||||||
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
|
|
||||||
desc = "Buffer Diagnostics (Trouble)",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<space>cs",
|
|
||||||
"<cmd>Trouble symbols toggle focus=false<cr>",
|
|
||||||
desc = "Symbols (Trouble)",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<space>cl",
|
|
||||||
"<cmd>Trouble lsp toggle focus=false win.position=bottom<cr>",
|
|
||||||
desc = "LSP Definitions / references / ... (Trouble)",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<space>xL",
|
|
||||||
"<cmd>Trouble loclist toggle<cr>",
|
|
||||||
desc = "Location List (Trouble)",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"<space>xQ",
|
|
||||||
"<cmd>Trouble qflist toggle<cr>",
|
|
||||||
desc = "Quickfix List (Trouble)",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
'Julian/lean.nvim',
|
'Julian/lean.nvim',
|
||||||
|
@ -244,100 +207,9 @@ require('lazy').setup({
|
||||||
require('orgmode').setup({
|
require('orgmode').setup({
|
||||||
org_agenda_files = '~/orgfiles/**/*',
|
org_agenda_files = '~/orgfiles/**/*',
|
||||||
org_default_notes_file = '~/orgfiles/refile.org',
|
org_default_notes_file = '~/orgfiles/refile.org',
|
||||||
org_todo_keywords = {
|
|
||||||
"TODO(t)",
|
|
||||||
"PLAN(p)",
|
|
||||||
"NEXT(n)",
|
|
||||||
"|",
|
|
||||||
"DONE(d)",
|
|
||||||
"CANCELED(c)",
|
|
||||||
},
|
|
||||||
org_todo_keyword_faces = {
|
|
||||||
-- TODO = ":foreground red",
|
|
||||||
PLAN = ":foreground #F0BB61",
|
|
||||||
NEXT = ":background #663333 :foreground #E0A0A0",
|
|
||||||
CANCELED = ":foreground #99AA99",
|
|
||||||
},
|
|
||||||
org_archive_location = '~/orgfiles/archives/%s_archive::',
|
|
||||||
org_adapt_indentation = false,
|
|
||||||
org_id_link_to_org_use_id = true,
|
|
||||||
org_capture_templates = {
|
|
||||||
t = {
|
|
||||||
description = "Task",
|
|
||||||
template = '* TODO %?\n%u'
|
|
||||||
},
|
|
||||||
l = {
|
|
||||||
description = "Log",
|
|
||||||
template = '* %?\n%U'
|
|
||||||
},
|
|
||||||
j = {
|
|
||||||
description = "Journal",
|
|
||||||
template = '* %?\n%U',
|
|
||||||
target = '~/orgfiles/journal.org',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
end,
|
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 printing debug information with print()
|
|
||||||
debug = false,
|
|
||||||
|
|
||||||
-- 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": "<option>","image": "<option>"}' will apply
|
|
||||||
-- your choice of color inversion to images and everything else
|
|
||||||
-- separately.
|
|
||||||
invert_colors = 'never',
|
|
||||||
|
|
||||||
-- Whether the preview will follow the cursor in the source file
|
|
||||||
follow_cursor = true,
|
|
||||||
|
|
||||||
-- Provide the path to binaries for dependencies.
|
|
||||||
-- Setting this will skip the download of the binary by the plugin.
|
|
||||||
-- Warning: Be aware that your version might be older than the one
|
|
||||||
-- required.
|
|
||||||
dependencies_bin = {
|
|
||||||
['tinymist'] = nil,
|
|
||||||
['websocat'] = nil
|
|
||||||
},
|
|
||||||
|
|
||||||
-- A list of extra arguments (or nil) to be passed to previewer.
|
|
||||||
-- For example, extra_args = { "--input=ver=draft", "--ignore-system-fonts" }
|
|
||||||
extra_args = nil,
|
|
||||||
|
|
||||||
-- This function will be called to determine the root of the typst project
|
|
||||||
get_root = function(path_of_main_file)
|
|
||||||
-- Use root of git repository as a --root for typst
|
|
||||||
local rootpath = vim.fs.root(path_of_main_file, '.git')
|
|
||||||
if rootpath then
|
|
||||||
return rootpath
|
|
||||||
else
|
|
||||||
return vim.fn.fnamemodify(path_of_main_file, ':p:h')
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
|
|
||||||
-- This function will be called to determine the main file of the typst
|
|
||||||
-- project.
|
|
||||||
get_main_file = function(path_of_buffer)
|
|
||||||
return path_of_buffer
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
|
@ -389,7 +261,7 @@ vim.keymap.set('n', 'L', '<cmd>tabn<cr>', { desc = 'tab next' })
|
||||||
require('catppuccin').setup({
|
require('catppuccin').setup({
|
||||||
transparent_background = true,
|
transparent_background = true,
|
||||||
})
|
})
|
||||||
vim.cmd.colorscheme "catppuccin-latte"
|
vim.cmd.colorscheme "catppuccin"
|
||||||
|
|
||||||
-----------------------------------------------------------
|
-----------------------------------------------------------
|
||||||
vim.g.mapleader = ' '
|
vim.g.mapleader = ' '
|
||||||
|
@ -490,9 +362,6 @@ local builtin = require('telescope.builtin')
|
||||||
vim.keymap.set('n', '<leader>ff', function() builtin.find_files { sort_lastused = true } end, { desc = "find files" })
|
vim.keymap.set('n', '<leader>ff', function() builtin.find_files { sort_lastused = true } end, { desc = "find files" })
|
||||||
vim.keymap.set('n', '<leader>fw', builtin.lsp_workspace_symbols, { desc = "lsp workspace symbols" })
|
vim.keymap.set('n', '<leader>fw', builtin.lsp_workspace_symbols, { desc = "lsp workspace symbols" })
|
||||||
vim.keymap.set('n', '<leader>fd', builtin.lsp_document_symbols, { desc = "lsp document symbols" })
|
vim.keymap.set('n', '<leader>fd', builtin.lsp_document_symbols, { desc = "lsp document symbols" })
|
||||||
vim.keymap.set('n', '<leader>flr', builtin.lsp_references, { desc = "lsp references for word" })
|
|
||||||
vim.keymap.set('n', '<leader>fli', builtin.lsp_incoming_calls, { desc = "lsp incoming calls" })
|
|
||||||
vim.keymap.set('n', '<leader>flo', builtin.lsp_outgoing_calls, { desc = "lsp outgoing calls" })
|
|
||||||
vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = "buffers" })
|
vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = "buffers" })
|
||||||
vim.keymap.set('n', '<leader>fg', builtin.live_grep, { desc = "grep" })
|
vim.keymap.set('n', '<leader>fg', builtin.live_grep, { desc = "grep" })
|
||||||
vim.keymap.set('n', '<leader>fh', builtin.help_tags, { desc = "help tags" })
|
vim.keymap.set('n', '<leader>fh', builtin.help_tags, { desc = "help tags" })
|
||||||
|
@ -615,6 +484,8 @@ local lspconfig = require 'lspconfig'
|
||||||
-- See `:help vim.diagnostic.* for documentation on any of the below functions
|
-- See `:help vim.diagnostic.* for documentation on any of the below functions
|
||||||
local opts = { noremap = true, silent = true }
|
local opts = { noremap = true, silent = true }
|
||||||
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
|
||||||
|
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
|
||||||
|
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
|
||||||
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
|
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
|
||||||
|
|
||||||
-- Use an on_attach function to only map the following keys
|
-- Use an on_attach function to only map the following keys
|
||||||
|
@ -689,7 +560,6 @@ lspconfig.julials.setup {
|
||||||
-- use below 2 lines to collect script to be included in sysimage
|
-- use below 2 lines to collect script to be included in sysimage
|
||||||
-- '--trace-compile',
|
-- '--trace-compile',
|
||||||
-- vim.env.HOME .. "/.julia/environments/nvim-lspconfig/tracecompile.jl",
|
-- vim.env.HOME .. "/.julia/environments/nvim-lspconfig/tracecompile.jl",
|
||||||
"-t4",
|
|
||||||
"-e",
|
"-e",
|
||||||
[[
|
[[
|
||||||
# Load LanguageServer.jl: attempt to load from ~/.julia/environments/nvim-lspconfig
|
# Load LanguageServer.jl: attempt to load from ~/.julia/environments/nvim-lspconfig
|
||||||
|
@ -726,7 +596,6 @@ lspconfig.julials.setup {
|
||||||
]] }
|
]] }
|
||||||
}
|
}
|
||||||
-- SATySFi
|
-- SATySFi
|
||||||
require 'lspconfig.server_configurations.satysfi_ls'
|
|
||||||
lspconfig.satysfi_ls.setup {
|
lspconfig.satysfi_ls.setup {
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
|
@ -738,10 +607,8 @@ lspconfig.bashls.setup {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
}
|
}
|
||||||
-- pwsh
|
-- pwsh
|
||||||
local win_pwsh_es_path = '~/scoop/apps/powershell-editorservice/current'
|
|
||||||
local arch_pwsh_es_path = "/opt/powershell-editor-services/"
|
|
||||||
lspconfig.powershell_es.setup {
|
lspconfig.powershell_es.setup {
|
||||||
bundle_path = vim.fn.has('win32') == 1 and win_pwsh_es_path or arch_pwsh_es_path,
|
bundle_path = '~/scoop/apps/powershell-editorservice/current',
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
}
|
}
|
||||||
-- ccls
|
-- ccls
|
||||||
|
@ -750,13 +617,7 @@ lspconfig.powershell_es.setup {
|
||||||
-- cmd = {'omnisharp'},
|
-- cmd = {'omnisharp'},
|
||||||
-- }
|
-- }
|
||||||
|
|
||||||
-- lspconfig.typst_lsp.setup {
|
lspconfig.typst_lsp.setup {
|
||||||
-- on_attach = on_attach,
|
|
||||||
-- capabilities = capabilities,
|
|
||||||
-- single_file_support = true,
|
|
||||||
-- }
|
|
||||||
|
|
||||||
lspconfig.tinymist.setup {
|
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
single_file_support = true,
|
single_file_support = true,
|
||||||
|
@ -774,8 +635,8 @@ lspconfig.rust_analyzer.setup {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
local lss = { "pyright", "texlab", --[[ "ccls", ]] "clangd", "ts_ls", --[["tailwindcss"]] "hls", "cmake",
|
local lss = { "pyright", "texlab", "ccls", "clangd", "tsserver", --[["tailwindcss"]] "hls", "cmake",
|
||||||
"csharp_ls", "html", "r_language_server", "cssls", "jsonls", "sqls", "vhdl_ls", "ruff", "lemminx" }
|
"csharp_ls", "html", "r_language_server", "ruff_lsp", "cssls", "jsonls", "sqls" }
|
||||||
for _, ls in pairs(lss) do
|
for _, ls in pairs(lss) do
|
||||||
lspconfig[ls].setup {
|
lspconfig[ls].setup {
|
||||||
on_attach = on_attach,
|
on_attach = on_attach,
|
||||||
|
|
|
@ -1,20 +1,21 @@
|
||||||
-- https://zenn.dev/monaqa/articles/2021-12-10-satysfi-language-server
|
-- https://zenn.dev/monaqa/articles/2021-12-10-satysfi-language-server
|
||||||
local configs = require 'lspconfig.configs'
|
local util = require 'lspconfig.util'
|
||||||
|
|
||||||
configs.satysfi_ls = {
|
return {
|
||||||
|
default_config = {
|
||||||
|
cmd = { 'satysfi-language-server' },
|
||||||
|
filetypes = { 'satysfi' },
|
||||||
|
root_dir = util.root_pattern('.git'),
|
||||||
|
single_file_support = true,
|
||||||
|
},
|
||||||
|
docs = {
|
||||||
|
description = [[
|
||||||
|
https://github.com/monaqa/satysfi-language-server
|
||||||
|
Language server for SATySFi.
|
||||||
|
]],
|
||||||
default_config = {
|
default_config = {
|
||||||
cmd = { 'satysfi-language-server' },
|
root_dir = [[root_pattern(".git")]],
|
||||||
filetypes = { 'satysfi' },
|
|
||||||
root_dir = vim.fs.root(0, ".git"),
|
|
||||||
single_file_support = true,
|
|
||||||
},
|
|
||||||
docs = {
|
|
||||||
description = [[
|
|
||||||
https://github.com/monaqa/satysfi-language-server
|
|
||||||
Language server for SATySFi.
|
|
||||||
]],
|
|
||||||
default_config = {
|
|
||||||
root_dir = [[root_pattern(".git")]],
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
-- https://qiita.com/uhooi/items/99aeff822d4870a8e269
|
-- https://qiita.com/uhooi/items/99aeff822d4870a8e269
|
||||||
local lsp_names = function ()
|
local lsp_names = function ()
|
||||||
local clients = {}
|
local clients = {}
|
||||||
for _, client in ipairs(vim.lsp.get_clients({ bufnr = 0})) do
|
for _, client in ipairs(vim.lsp.get_active_clients({ bufnr = 0})) do
|
||||||
table.insert(clients, client.name)
|
table.insert(clients, client.name)
|
||||||
end
|
end
|
||||||
return ' ' .. table.concat(clients, ', ')
|
return ' ' .. table.concat(clients, ', ')
|
||||||
|
|
230
dotfiles/neovim/lua/pluto_nvim.lua
Normal file
230
dotfiles/neovim/lua/pluto_nvim.lua
Normal file
|
@ -0,0 +1,230 @@
|
||||||
|
local job = require('plenary.job')
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
local NOTEBOOK_HEADER = "### A Pluto.jl notebook ###"
|
||||||
|
local BLOCK_START = "# ╔═╡ "
|
||||||
|
local CELLORDER_START = "# ╔═╡ Cell order:"
|
||||||
|
local CELLORDER_VISIBLE_BODY = "# ╠═"
|
||||||
|
local CELLORDER_HIDDEN_BODY = "# ╟─"
|
||||||
|
|
||||||
|
local function node_is_pluto_prefix(node)
|
||||||
|
if node:type() ~= "line_comment" then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
local row, col, _ = node:start()
|
||||||
|
local comment_text = vim.api.nvim_buf_get_lines(0, row, row + 1, true)
|
||||||
|
-- print("TEXT: ", comment_text[1])
|
||||||
|
return nil ~= string.match(comment_text[1], BLOCK_START) and nil == string.match(comment_text[1], CELLORDER_START)
|
||||||
|
end
|
||||||
|
|
||||||
|
---Get iterator of TSnodes of cell prefix comments
|
||||||
|
---@return function
|
||||||
|
function M.get_cell_prefix_nodes()
|
||||||
|
local curnode = vim.treesitter.get_node()
|
||||||
|
local top_nodes = curnode:root():iter_children()
|
||||||
|
return function()
|
||||||
|
while true do
|
||||||
|
local node = top_nodes()
|
||||||
|
if node == nil then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
if node_is_pluto_prefix(node) then
|
||||||
|
return node
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function node_is_cell_order(node)
|
||||||
|
if node:type() ~= "line_comment" then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
local row, col, _ = node:start()
|
||||||
|
local comment_text = vim.api.nvim_buf_get_lines(0, row, row + 1, true)
|
||||||
|
-- print("TEXT: ", comment_text[1])
|
||||||
|
return nil ~= string.match(comment_text[1], CELLORDER_START) or
|
||||||
|
nil ~= string.match(comment_text[1], CELLORDER_VISIBLE_BODY) or
|
||||||
|
nil ~= string.match(comment_text[1], CELLORDER_HIDDEN_BODY)
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.get_cell_order_nodes()
|
||||||
|
local curnode = vim.treesitter.get_node()
|
||||||
|
local top_nodes = curnode:root():iter_children()
|
||||||
|
return function()
|
||||||
|
while true do
|
||||||
|
local node = top_nodes()
|
||||||
|
if node == nil then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
if node_is_cell_order(node) then
|
||||||
|
return node
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---Get prefix TSNode of current cell
|
||||||
|
---@return TSNode?
|
||||||
|
local function get_current_cell_prefix_node()
|
||||||
|
local curnode = vim.treesitter.get_node()
|
||||||
|
if curnode == nil then
|
||||||
|
print("Not in a cell")
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
while curnode:parent():type() ~= "source_file" do
|
||||||
|
print("curnode", curnode:range())
|
||||||
|
curnode = curnode:parent()
|
||||||
|
end
|
||||||
|
local prefix_node
|
||||||
|
if node_is_pluto_prefix(curnode) then
|
||||||
|
prefix_node = curnode
|
||||||
|
elseif curnode:prev_sibling() ~= nil and node_is_pluto_prefix(curnode:prev_sibling()) then
|
||||||
|
prefix_node = curnode:prev_sibling()
|
||||||
|
else
|
||||||
|
print("Not a valid cell")
|
||||||
|
print("current node", curnode:type(), curnode:range())
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
return prefix_node
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_uuid(node)
|
||||||
|
local row, col, _ = node:start()
|
||||||
|
local comment_text = vim.api.nvim_buf_get_lines(0, row, row + 1, true)
|
||||||
|
-- print("text", comment_text[1])
|
||||||
|
local _, _, uuid = string.find(comment_text[1], "(%x+-%x+-%x+-%x+-%x+)")
|
||||||
|
return uuid
|
||||||
|
end
|
||||||
|
|
||||||
|
---Get uuid of the current cell.
|
||||||
|
---@return string?
|
||||||
|
function M.get_current_cell_uuid()
|
||||||
|
local prefix_node = get_current_cell_prefix_node()
|
||||||
|
if prefix_node == nil then return nil end
|
||||||
|
return get_uuid(prefix_node)
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_cellbody_node(uuid)
|
||||||
|
for node in M.get_cell_prefix_nodes() do
|
||||||
|
if uuid == get_uuid(node) then
|
||||||
|
return node
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---Generate uuid1 using Julia.
|
||||||
|
---@return string
|
||||||
|
local function uuid1()
|
||||||
|
local generated
|
||||||
|
job:new({
|
||||||
|
command = "julia",
|
||||||
|
args = { "-e", "using UUIDs; print(uuid1())" },
|
||||||
|
on_exit = function(j, return_val)
|
||||||
|
if return_val ~= 0 then
|
||||||
|
print("error processing UUID", return_val, vim.inspect(j:result()))
|
||||||
|
end
|
||||||
|
generated = j:result()[1]
|
||||||
|
end,
|
||||||
|
}):sync()
|
||||||
|
return generated
|
||||||
|
end
|
||||||
|
|
||||||
|
---Get row number of the cell order entry which corresponds to the current cell
|
||||||
|
---@param curuuid string
|
||||||
|
---@return integer?
|
||||||
|
local function get_cell_order_node(curuuid)
|
||||||
|
local ordernode_row
|
||||||
|
for ordernode in M.get_cell_order_nodes() do
|
||||||
|
local srow, scol, erow, ecol = ordernode:range()
|
||||||
|
local str = vim.api.nvim_buf_get_text(0, srow, scol, erow, ecol, {})
|
||||||
|
local _, _, ordernode_uuid = string.find(str[1], "(%x+-%x+-%x+-%x+-%x+)")
|
||||||
|
if ordernode_uuid == curuuid then
|
||||||
|
-- print("Matched: ", curuuid, srow, erow)
|
||||||
|
ordernode_row = srow
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ordernode_row
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.insert_cell_below()
|
||||||
|
local curuuid = M.get_current_cell_uuid()
|
||||||
|
if curuuid == nil then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local newuuid = uuid1()
|
||||||
|
local ordernode_row = get_cell_order_node(curuuid)
|
||||||
|
vim.api.nvim_buf_set_lines(0, ordernode_row + 1, ordernode_row + 1, true, {
|
||||||
|
CELLORDER_VISIBLE_BODY .. newuuid
|
||||||
|
})
|
||||||
|
local prefix_node = get_current_cell_prefix_node()
|
||||||
|
if prefix_node == nil then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local _, _, end_row, _ = prefix_node:next_sibling():range()
|
||||||
|
vim.api.nvim_buf_set_lines(0, end_row + 1, end_row + 1, true, {
|
||||||
|
"",
|
||||||
|
BLOCK_START .. newuuid,
|
||||||
|
"",
|
||||||
|
})
|
||||||
|
vim.api.nvim_win_set_cursor(0, { end_row + 4, 0 })
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.goto_cellorder_entry()
|
||||||
|
local curuuid = M.get_current_cell_uuid()
|
||||||
|
if not curuuid then return nil end
|
||||||
|
local ordernode_row = get_cell_order_node(curuuid)
|
||||||
|
vim.cmd("norm! m`")
|
||||||
|
vim.api.nvim_win_set_cursor(0, { ordernode_row + 1, 0 })
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.goto_cell_body()
|
||||||
|
local line_str = vim.api.nvim_get_current_line()
|
||||||
|
local _, _, uuid = string.find(line_str, "(%x+-%x+-%x+-%x+-%x+)")
|
||||||
|
if uuid == nil then
|
||||||
|
print("This line doesn't have valid id")
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
local body_node = get_cellbody_node(uuid)
|
||||||
|
local start_row, _, _, _ = body_node:range()
|
||||||
|
vim.cmd("norm! m`")
|
||||||
|
vim.api.nvim_win_set_cursor(0, { start_row + 2, 0 })
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.toggle_visibility()
|
||||||
|
local curuuid = M.get_current_cell_uuid()
|
||||||
|
if not curuuid then return nil end
|
||||||
|
local ordernode_row = get_cell_order_node(curuuid)
|
||||||
|
local ordernode_text = vim.api.nvim_buf_get_lines(0, ordernode_row, ordernode_row + 1, true)[1]
|
||||||
|
if string.find(ordernode_text, CELLORDER_VISIBLE_BODY) then
|
||||||
|
vim.api.nvim_buf_set_text(0, ordernode_row, 0, ordernode_row, 4, { CELLORDER_HIDDEN_BODY })
|
||||||
|
elseif string.find(ordernode_text, CELLORDER_HIDDEN_BODY) then
|
||||||
|
vim.api.nvim_buf_set_text(0, ordernode_row, 0, ordernode_row, 4, { CELLORDER_VISIBLE_BODY })
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.setup(opts)
|
||||||
|
vim.api.nvim_create_user_command('PlutoGoToCellOrder', M.goto_cellorder_entry, {
|
||||||
|
nargs = 0,
|
||||||
|
desc = "Go to the cell order entry which corresponds to the current cell",
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_user_command('PlutoGoToCellBody', M.goto_cell_body, {
|
||||||
|
nargs = 0,
|
||||||
|
desc = "Go to the cell body which corresponds to the current order entry",
|
||||||
|
})
|
||||||
|
vim.api.nvim_create_user_command('PlutoToggleVisibility', M.toggle_visibility, {
|
||||||
|
nargs = 0,
|
||||||
|
desc = "Toggle visiblity of the current cell",
|
||||||
|
})
|
||||||
|
-- require('nvim-treesitter.configs').setup {
|
||||||
|
-- textobjects = {
|
||||||
|
-- select = {
|
||||||
|
-- enable = true,
|
||||||
|
-- keymaps = {
|
||||||
|
-- ["ac"] = "@cell.outer",
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- },
|
||||||
|
-- }
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
|
@ -231,3 +231,7 @@ Import-Module WSLTabCompletion
|
||||||
|
|
||||||
Get-ChildItem ~\.config\powershell\completions\ | % { . $_ }
|
Get-ChildItem ~\.config\powershell\completions\ | % { . $_ }
|
||||||
|
|
||||||
|
# Automatically appended by pdm scoop package
|
||||||
|
Get-ChildItem "$PROFILE\..\Completions\" | ForEach-Object {
|
||||||
|
. $_.FullName
|
||||||
|
}
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
try
|
try
|
||||||
using OhMyREPL
|
using OhMyREPL
|
||||||
enable_autocomplete_brackets(false)
|
enable_autocomplete_brackets(false)
|
||||||
include("catppuccin.jl")
|
|
||||||
OhMyREPL.colorscheme!("CatppuccinLatte")
|
|
||||||
catch e
|
catch e
|
||||||
@warn "Failed to load OhMyREPL"
|
@warn "Failed to load OhMyREPL"
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
source ~/.local.tmux.conf
|
source ~/.local.tmux.conf
|
||||||
# -----------------------------------------------
|
# -----------------------------------------------
|
||||||
set -g history-limit 50000
|
set -g history-limit 500000
|
||||||
|
|
||||||
set-option -g default-command fish
|
set-option -g default-command fish
|
||||||
|
|
||||||
|
|
|
@ -44,16 +44,15 @@ return {
|
||||||
-- }
|
-- }
|
||||||
-- },
|
-- },
|
||||||
|
|
||||||
-- color_scheme = "iceberg-dark",
|
color_scheme = "iceberg-dark",
|
||||||
color_scheme = "catppuccin-latte",
|
|
||||||
use_fancy_tab_bar = false,
|
use_fancy_tab_bar = false,
|
||||||
tab_bar_at_bottom = true,
|
tab_bar_at_bottom = true,
|
||||||
window_background_opacity = 0.85,
|
window_background_opacity = 0.85,
|
||||||
-- font = wezterm.font 'FirgeNerd Console'
|
-- font = wezterm.font 'FirgeNerd Console'
|
||||||
font = wezterm.font_with_fallback {
|
font = wezterm.font_with_fallback {
|
||||||
{
|
{
|
||||||
family = 'Juisee HWNF',
|
family = 'JuiseeHW Nerd Font',
|
||||||
weight = 'Regular',
|
weight = 'Bold',
|
||||||
harfbuzz_features = {
|
harfbuzz_features = {
|
||||||
'calt=0', -- disables ligature
|
'calt=0', -- disables ligature
|
||||||
'zero=1',
|
'zero=1',
|
||||||
|
|
|
@ -1,73 +0,0 @@
|
||||||
#!/usr/bin/env python
|
|
||||||
"""
|
|
||||||
Modify qpdfview config.
|
|
||||||
"""
|
|
||||||
|
|
||||||
import configparser
|
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
|
|
||||||
# =======================================================================================
|
|
||||||
|
|
||||||
QPDFVIEW_CONFIGDIR = os.path.expanduser("~/.config/qpdfview/")
|
|
||||||
if not os.path.exists(QPDFVIEW_CONFIGDIR):
|
|
||||||
print("qpdfview config directory not found.")
|
|
||||||
print("Install qpdfview first and rerun this script.")
|
|
||||||
print("Exiting...")
|
|
||||||
exit(1)
|
|
||||||
|
|
||||||
# =======================================================================================
|
|
||||||
|
|
||||||
QPDFVIEW_CONFIG_CONFIG = QPDFVIEW_CONFIGDIR + "qpdfview.conf"
|
|
||||||
print(f"{QPDFVIEW_CONFIG_CONFIG=}")
|
|
||||||
|
|
||||||
if os.path.exists(QPDFVIEW_CONFIG_CONFIG):
|
|
||||||
shutil.copyfile(QPDFVIEW_CONFIG_CONFIG, QPDFVIEW_CONFIG_CONFIG + ".orig")
|
|
||||||
|
|
||||||
config = configparser.RawConfigParser()
|
|
||||||
config.optionxform = lambda optionstr: optionstr
|
|
||||||
config.read(QPDFVIEW_CONFIG_CONFIG)
|
|
||||||
|
|
||||||
config["documentView"]["autoRefresh"] = "true"
|
|
||||||
config["documentView"]["highlightAll"] = "true"
|
|
||||||
config["documentView"]["highlightCurrentThumbnail"] = "true"
|
|
||||||
config["documentView"]["highlightDuration"] = "5000"
|
|
||||||
config["documentView"]["limitThumbnailsToResults"] = "true"
|
|
||||||
config["documentView"]["prefetch"] = "true"
|
|
||||||
config["documentView"]["prefetchDistance"] = "5"
|
|
||||||
config["documentView"]["relativeJumps"] = "true"
|
|
||||||
|
|
||||||
config["mainWindow"]["recentlyClosedCount"] = "20"
|
|
||||||
config["mainWindow"]["recentlyUsedCount"] = "40"
|
|
||||||
config["mainWindow"]["restorePerFileSettings"] = "true"
|
|
||||||
config["mainWindow"]["restoreTabs"] = "true"
|
|
||||||
config["mainWindow"]["searchableMenus"] = "true"
|
|
||||||
config["mainWindow"]["tabVisibility"] = "0"
|
|
||||||
config["mainWindow"]["trackRecentlyUsed"] = "true"
|
|
||||||
config["mainWindow"]["viewToolBar"] = "scaleFactor, zoomIn, zoomOut, fitToPageWidthMode"
|
|
||||||
|
|
||||||
config["pageItem"]["cacheSize"] = "131072K"
|
|
||||||
|
|
||||||
with open(QPDFVIEW_CONFIG_CONFIG, "w") as file:
|
|
||||||
config.write(file, space_around_delimiters=False)
|
|
||||||
|
|
||||||
# =======================================================================================
|
|
||||||
|
|
||||||
QPDFVIEW_CONFIG_SHORTCUTS = QPDFVIEW_CONFIGDIR + "shortcuts.conf"
|
|
||||||
|
|
||||||
if os.path.exists(QPDFVIEW_CONFIG_SHORTCUTS):
|
|
||||||
shutil.copyfile(QPDFVIEW_CONFIG_SHORTCUTS, QPDFVIEW_CONFIG_SHORTCUTS + ".orig")
|
|
||||||
|
|
||||||
shortcut_config = configparser.RawConfigParser()
|
|
||||||
shortcut_config.optionxform = lambda optionstr: optionstr
|
|
||||||
shortcut_config.read(QPDFVIEW_CONFIG_SHORTCUTS)
|
|
||||||
|
|
||||||
shortcut_config["General"]["continuousMode"] = "Ctrl+7, C"
|
|
||||||
shortcut_config["General"]["findNext"] = "Ctrl+G, Return"
|
|
||||||
shortcut_config["General"]["findPrevious"] = "Ctrl+Shift+G, Shift+Return"
|
|
||||||
shortcut_config["General"]["jumpToPage"] = "Ctrl+J, G"
|
|
||||||
shortcut_config["General"]["nextPage"] = "Space, N"
|
|
||||||
shortcut_config["General"]["previousPage"] = "Backspace, P"
|
|
||||||
|
|
||||||
with open(QPDFVIEW_CONFIG_SHORTCUTS, "w") as file:
|
|
||||||
shortcut_config.write(file, space_around_delimiters=False)
|
|
|
@ -1,15 +0,0 @@
|
||||||
keymap:
|
|
||||||
- name: Wheel Tilt
|
|
||||||
remap:
|
|
||||||
# Side forward
|
|
||||||
# Btn_Side: Left
|
|
||||||
# Side back
|
|
||||||
# Btn_Extra: Right
|
|
||||||
XRIGHTSCROLL:
|
|
||||||
remap:
|
|
||||||
XHIRES_RIGHTSCROLL: Ctrl-Tab
|
|
||||||
XLEFTSCROLL:
|
|
||||||
remap:
|
|
||||||
XHIRES_LEFTSCROLL: Ctrl-Shift-Tab
|
|
||||||
device:
|
|
||||||
only: 'Logi M750 Mouse'
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit 98581abe7cb2baecd63e95c337da08778fec60ae
|
Subproject commit 21f32a2032614d2e923be436ca4a4f0f07a8cdc5
|
|
@ -1,14 +0,0 @@
|
||||||
# Experimental Nix flake for general cli environment
|
|
||||||
- Basically for servers, not for my laptops.
|
|
||||||
|
|
||||||
# How to Install
|
|
||||||
```sh
|
|
||||||
$ nix flake build
|
|
||||||
$ nix profile install .#my-packages
|
|
||||||
```
|
|
||||||
|
|
||||||
# How to upgrade
|
|
||||||
```sh
|
|
||||||
$ nix flake upgrade
|
|
||||||
$ nix profile upgrade my-packages
|
|
||||||
```
|
|
|
@ -1,25 +0,0 @@
|
||||||
{
|
|
||||||
description = "A very basic flake";
|
|
||||||
|
|
||||||
inputs = {
|
|
||||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
|
||||||
};
|
|
||||||
|
|
||||||
outputs = { self, nixpkgs }: {
|
|
||||||
|
|
||||||
packages.x86_64-linux.my-packages = nixpkgs.legacyPackages.x86_64-linux.buildEnv {
|
|
||||||
name = "my-packages-list";
|
|
||||||
paths = [
|
|
||||||
nixpkgs.legacyPackages.x86_64-linux.fish
|
|
||||||
nixpkgs.legacyPackages.x86_64-linux.git
|
|
||||||
nixpkgs.legacyPackages.x86_64-linux.curl
|
|
||||||
nixpkgs.legacyPackages.x86_64-linux.neovim
|
|
||||||
nixpkgs.legacyPackages.x86_64-linux.ripgrep
|
|
||||||
nixpkgs.legacyPackages.x86_64-linux.fzf
|
|
||||||
|
|
||||||
nixpkgs.legacyPackages.x86_64-linux.clang-tools
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue