diff --git a/README.md b/README.md index b5ecd957..0dc9c867 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ You don't have to go through the pain I've experienced again! Check out my | **File Manager** | [Yazi][Yazi] + [thunar][thunar] | | **Shell** | [Nushell][Nushell] + [Starship][Starship] | | **Media Player** | [mpv][mpv] | -| **Text Editor** | [Neovim][Neovim] | +| **Editors / IDE** | [Helix][Helix] (primary), [Neovim][Neovim] (backup) — [configuration & usage](./home/base/core/editors/) | | **Fonts** | [Nerd fonts][Nerd fonts] | | **Image Viewer** | [imv][imv] | | **Screenshot Software** | Niri's builtin function | @@ -85,9 +85,14 @@ Wallpapers: https://github.com/ryan4yin/wallpapers ![nvim](./_img/2026-01-04_niri-noctalia_nvim.webp) -## Neovim +## Editors / IDE -See [./home/base/tui/editors/neovim/](./home/base/tui/editors/neovim/) for details. +- **Terminal editors:** [./home/base/core/editors/](./home/base/core/editors/) — Helix / Neovim, + `$EDITOR`, docs. +- **VS Code (GUI, Home Manager on NixOS):** + [./home/linux/gui/base/editors.nix](./home/linux/gui/base/editors.nix). +- **LLM coding agents:** [./agents](./agents/) — rules, installers, CLI snippets; see + [./agents/README.md](./agents/README.md). ## Secrets Management @@ -95,7 +100,7 @@ See [./secrets](./secrets) for details. ## Agents -See [./agents](./agents) for my reusable cross-project agent files and installer script. +Reusable coding-agent rules and installers: [./agents](./agents/) · [README](./agents/README.md). ## How to Deploy this Flake? @@ -181,6 +186,7 @@ Other dotfiles that inspired me: [Btop]: https://github.com/aristocratos/btop [mpv]: https://github.com/mpv-player/mpv [Zellij]: https://github.com/zellij-org/zellij +[Helix]: https://github.com/helix-editor/helix [Neovim]: https://github.com/neovim/neovim [AstroNvim]: https://github.com/AstroNvim/AstroNvim [imv]: https://sr.ht/~exec64/imv/ diff --git a/home/README.md b/home/README.md index f9ab3cea..da6aa044 100644 --- a/home/README.md +++ b/home/README.md @@ -15,7 +15,7 @@ home/ │ │ ├── terminal/ # Terminal emulators (Kitty, Alacritty, etc.) │ │ └── ... │ ├── tui/ # Terminal/TUI applications -│ │ ├── editors/ # TUI editors and related tools +│ │ ├── editors/ # Heavy editor/tooling pkgs only (`packages.nix`; core editors live under `core/editors`) │ │ ├── encryption/ # GPG, password-store, etc. │ │ └── ... │ └── home.nix # Main home manager entry point diff --git a/home/base/README.md b/home/base/README.md index 66e11029..d3050c36 100644 --- a/home/base/README.md +++ b/home/base/README.md @@ -10,9 +10,7 @@ systems. - **core/**: Essential cross-platform configurations - **core.nix**: Minimal home-manager configuration - **shells/**: Shell configurations (bash, zsh, fish, nu) - - **editors/**: Text editor configurations - - **neovim/**: Neovim with custom plugins and settings - - **helix/**: Helix editor configuration + - **editors/**: Helix + Neovim (Home Manager) and usage docs (`README.md` per editor) - **btop.nix**: System monitoring tools - **git.nix**: Git configuration and aliases - **npm.nix**: Node.js package management @@ -39,7 +37,7 @@ systems. - **cloud/**: Cloud development tools (Terraform, etc.) - **container.nix**: Container tools (Docker, Podman) - **dev-tools.nix**: Terminal-based development tools - - **editors/**: Terminal editor configurations + - **editors/**: Extra terminal editor Nix (see `core/editors/` for docs and baseline enables) - **encryption/**: Encryption and security tools - **gpg/**: GPG key management - **password-store/**: Password management with pass diff --git a/home/base/tui/editors/Glossary.md b/home/base/core/editors/Glossary.md similarity index 99% rename from home/base/tui/editors/Glossary.md rename to home/base/core/editors/Glossary.md index a31b5fcf..0873826d 100644 --- a/home/base/tui/editors/Glossary.md +++ b/home/base/core/editors/Glossary.md @@ -71,5 +71,3 @@ Linting is distinct from Formatting because: Formatters and Linters process each file independently, they do not need to know about other files in the project. - -- [ ] diff --git a/home/base/core/editors/README.md b/home/base/core/editors/README.md index 89c028a3..74b1b28b 100644 --- a/home/base/core/editors/README.md +++ b/home/base/core/editors/README.md @@ -1,10 +1,26 @@ # Editors -This directory contains editor configurations that are shared across different environments. +Shared editor configuration and **usage notes** for terminal-focused editing. -## Available Editors +## Roles -- **neovim/**: Neovim configuration with AstroNvim -- **helix/**: Helix editor configuration +- **Helix** (`helix/`): Primary TUI editor — batteries-included, small attack surface. `$EDITOR` / + `$VISUAL` default to `hx` (`session-env.nix`). +- **Neovim** (`neovim/`): Backup editor — classic vim-style workflow and `:help` when needed. For + privileged edits (`sudoedit`) and other security-sensitive inputs, `$SUDO_EDITOR` is + `nvim --clean`; use that explicitly when `$EDITOR` must avoid user config/plugins. -These configurations are designed to work across both terminal and GUI environments. +Terminal layout and files: **Zellij** and **Yazi** live under `core/zellij/` and `core/yazi.nix` +(not in this folder). + +## Docs + +- [`helix/README.md`](./helix/README.md) — Helix basics, cheatsheet, official doc links, Helix vs + Neovim notes. +- [`neovim/README.md`](./neovim/README.md) — Vim/Neovim basics, cheatsheet, and official doc links. + +Nix modules in `helix/` and `neovim/` enable each editor via Home Manager. Language servers and +other heavy editor-related packages are listed in +[`../../tui/editors/`](../../tui/editors/README.md) (imported from `home/base/tui`). + +Editor terminology (LSP, tree-sitter): [`Glossary.md`](./Glossary.md). diff --git a/home/base/core/editors/helix/README.md b/home/base/core/editors/helix/README.md new file mode 100644 index 00000000..3795ac0b --- /dev/null +++ b/home/base/core/editors/helix/README.md @@ -0,0 +1,201 @@ +# Helix (primary) — Kakoune-style usage + +Neovim is powerful and has a very active community. This config still enables Neovim as a **backup** +editor (vim-style muscle memory, `:help`, and occasional plugin workflows). + +Helix is the **primary** TUI editor here: opinionated, batteries-included (LSP, tree-sitter, picker, +multi-cursor, surround), and a smaller moving part than a large Neovim plugin stack. + +## Tips + +1. This flake sets `$EDITOR` / `$VISUAL` to **`hx`** by default. For security-sensitive edits + (privileged files, unfamiliar binaries, secrets), prefer **`nvim --clean`** — `$SUDO_EDITOR` uses + it so `sudoedit` stays minimal; invoke it yourself in other trust-boundary cases. +1. Helix is **selection-first** (like Kakoune): extend a selection, then run an action (`d`, `c`, + `y`, …). A lone cursor is a zero-width selection. +1. Read the official docs before reinventing workflows: + 1. — documentation home (links to usage, keymap, configuration). + 1. — modes, buffers, motions overview. + 1. — full default keybindings. + 1. — typable commands (`:` prompt). + 1. — `config.toml`, themes, remaps. + 1. — install tips, language servers, FAQ. +1. Prefer **Zellij** for shells and panes; use **Helix** for buffers and text. +1. On large codebases, navigation is often **by picker** (`Space f`, symbols, workspace search) or + **by LSP** (`g` goto mode), complementing motion-based editing. + +## Tutorial + +Run `:tutor` inside Helix, or `hx --tutor` from the shell +([tutor source](https://github.com/helix-editor/helix/blob/master/runtime/tutor)). + +## Helix cheatsheet (common keys) + +> Full reference: +> Typable commands: + +### Terminal related + +Zellij shortcuts used often (same idea as in the Neovim notes): + +| Action | Zellij shortcut | +| ------------------------- | --------------- | +| Floating terminal | `Ctrl + p + w` | +| Horizontal split terminal | `Ctrl + p + d` | +| Vertical split terminal | `Ctrl + p + n` | + +In Helix, `|` / `!` and variants pipe or insert shell output on selections (see **Changes**). + +### Command mode (`:`) + +> + +| Action | Command examples | +| ---------------------- | ------------------------------------------ | +| Write / write all | `:w` / `:wa` | +| Quit view / quit all | `:q` / `:qa` — add `!` to discard changes | +| Write and quit | `:wq`, `:x` | +| Write all and quit all | `:wqa`, `:xa` | +| Open file | `:open path`, `:e path` | +| Next / previous buffer | `:bn` / `:bp` (also `gn` / `gp` in normal) | +| Close buffer | `:bc` (add `!` to force) | +| Reload from disk | `:reload` | +| Change directory / pwd | `:cd` / `:pwd` | +| Split open file | `:vs path`, `:hs path` | + +### Movement (normal mode) + +| Action | Keys / notes | +| --------------------- | --------------------------------------------------- | +| Arrow keys | `h` `j` `k` `l` | +| Words | `w` `b` `e` — `W` `B` `E` for WORD-style | +| Find char / till char | `f` `F` `t` `T` (not limited to current line) | +| Line / file | `Home` / `End`; `gg` start or goto line; `G` line | +| Half / full page | `Ctrl-u` / `Ctrl-d`; `Ctrl-b` / `Ctrl-f` | +| Jumplist | `Ctrl-o` back, `Ctrl-i` forward; `Ctrl-s` save spot | + +### Selection & changes + +| Action | Keys / notes | +| ---------------------- | ----------------------------------------------------------------- | ------------------- | -------------------------------------------- | +| Extend selections | `v` select mode; motions extend instead of moving | +| Line selection | `x` extend line; `X` line bounds | +| Select all / regex | `%`; `s` regex in selections; `S` split on regex | +| Undo / redo | `u` / `U` | +| Delete / change / yank | `d` / `c` / `y` — acts on selection | +| Paste | `p` / `P`; registers `"` … | +| Insert | `i` `a` `I` `A` `o` `O` | +| Indent / format | `>` / `<`; `=` format (LSP) | +| Case | `~` toggle; lower/upper case via grave / `Alt-grave` (see keymap) | +| Join lines | `J`; `Alt-J` join keeping space | +| Shell | ` | `pipe replace;`Alt- | `pipe to;`!` insert output before selections | + +### Search + +| Action | Keys | +| -------------------- | ---------------------------------------- | +| Search / reverse | `/` / `?` | +| Next / prev match | `n` / `N` | +| Selection as pattern | `*` (word bounds); `Alt-*` raw selection | + +Use **extend mode** (`v`) with `n` / `N` to add matches to multi-cursors +([keymap](https://docs.helix-editor.com/keymap.html#select--extend-mode)). + +### Replace / multi-occur edits + +Helix has no vim-style `:%s` with preview. Typical patterns: + +- Select matches with `s` or search, then `c` to change all selections at once. +- Workspace-wide search: `Space /` (global search picker). +- Heavy refactors: external tools or another pane (see **Differences** below). + +### Goto mode (`g` then …) + +| Action | Keys (after `g`) | +| -------------------- | ---------------- | +| File start / end | `g` / `e` | +| Line start / end | `h` / `l` | +| First non-whitespace | `s` | +| Definition / refs | `d` / `r` (LSP) | +| Type / impl | `y` / `i` (LSP) | +| Next / prev buffer | `n` / `p` | + +Also: `gd` / `gD` definition/declaration-style jumps where bound. + +### Match mode (`m` …) + +Surround and textobjects: see and +. Matching bracket: `mm` (tree-sitter). + +### Window mode (`Ctrl-w` then …) + +| Action | Keys | +| ---------------- | --------------- | +| Next window | `w` | +| Vertical split | `v` | +| Horizontal split | `s` | +| Focus splits | `h` `j` `k` `l` | +| Close / only | `q` / `o` | + +### Space mode (`Space` then …) + +| Action | Keys | +| -------------------- | ------------------ | +| File picker (roots) | `f` | +| File picker (cwd) | `F` | +| Buffer picker | `b` | +| Global search | `/` | +| Command palette | `?` | +| Hover docs (LSP) | `k` | +| Symbols / workspace | `s` / `S` | +| Diagnostics | `d` / `D` | +| Clipboard yank/paste | `y` / `p` variants | + +Picker movement: . + +### Minor modes from normal + +| Mode | Key | +| ----------- | --------- | +| Command | `:` | +| View scroll | `z` / `Z` | +| Goto | `g` | +| Match | `m` | +| Window | `Ctrl-w` | + +Some bindings need an **LSP** or **tree-sitter** grammar; see notes on the keymap page. + +## Differences between Neovim and Helix + +1. Selecting first, then action. + 1. Helix: delete 2 words: move/select with `w` … then `d`. You see the selection before the + action. + 2. Neovim: delete 2 words: `d` then `2w`. No visual feedback before the action runs. +1. Helix — modern built-in features: LSP, tree-sitter, fuzzy finder, multi-cursors, surround, and + more. + 1. The same is available in Neovim, but usually via plugins you choose and maintain. +1. Helix is built in Rust from scratch: smaller codebase, modern defaults. No VimScript, no Lua in + user config. + 1. Neovim carries Vim heritage (VimScript) and Lua-heavy customization. +1. Neovim has a huge plugin ecosystem. + 1. Helix is newer; a stable plugin system is still evolving: + +1. Neovim has an integrated terminal (similar in spirit to VS Code’s). + 1. Helix does not ship one; use Zellij / tmux / terminal features instead. + 1. + 1. +1. Helix has no built-in tree panel; pair with **Yazi**, ranger, or Broot and open files from there. + 1. A tree view may arrive with plugins later; many users rely on the file picker instead. +1. Global substitution is weaker in Helix; run replacements in another pane (Zellij) or an external + tool when needed. + 1. + 1. Neovim’s `:s` with preview remains strong for interactive refactors; external tools (e.g. + ) can fill gaps in Helix-centric flows. +1. Complexity vs batteries-included tradeoffs: + + +Using **Helix** (and Neovim when useful) inside **Yazi** and **Zellij** keeps editing, files, and +panes explicit and scriptable — different from a single IDE window, but very composable. + +Helix nudges you away from reproducing VS Code/JetBrains inside one process; Neovim remains there +when you want that depth. diff --git a/home/base/core/editors/helix/default.nix b/home/base/core/editors/helix/default.nix index 5a1d9194..9b822747 100644 --- a/home/base/core/editors/helix/default.nix +++ b/home/base/core/editors/helix/default.nix @@ -1,4 +1,32 @@ { pkgs, ... }: { - programs.helix.enable = true; + programs.helix = { + enable = true; + package = pkgs.helix; + settings = { + editor = { + line-number = "relative"; + cursorline = true; + color-modes = true; + lsp.display-messages = true; + cursor-shape = { + insert = "bar"; + normal = "block"; + select = "underline"; + }; + indent-guides.render = true; + }; + keys.normal = { + space = { + space = "file_picker"; + w = ":w"; + q = ":q"; + }; + esc = [ + "collapse_selection" + "keep_primary_selection" + ]; + }; + }; + }; } diff --git a/home/base/core/editors/neovim/README.md b/home/base/core/editors/neovim/README.md new file mode 100644 index 00000000..40c7b089 --- /dev/null +++ b/home/base/core/editors/neovim/README.md @@ -0,0 +1,180 @@ +# Neovim (backup) — vim-style usage + +Primary day-to-day editing is **Helix**; this file is the **vim/Neovim** quick reference and doc +pointers for when you reach for Neovim as a backup. + +## Tips + +1. Many motions already exist in vim — check vim/Neovim docs before adding plugins or reinventing + wheels. +1. For deeper skill, read the official docs: + 1. — vim help. + 1. — Neovim user manual. +1. Prefer **Zellij** for shells and panes; use **Helix** or **Neovim** for buffers and text. +1. Two powerful navigation modes on large codebases: + 1. **By path** — when you know the tree layout. + 1. **By content** — when you know what the code says. + +## Tutorial + +Type `:tutor` (or `:Tutor` in Neovim) for the built-in vim tutorial. + +## Vim cheatsheet (common keys) + +> For a fuller reference: + +Emacs Evil, Neovim, and vim share the motions below. + +### Terminal related + +Zellij shortcuts used often: + +| Action | Zellij shortcut | +| ------------------------- | --------------- | +| Floating terminal | `Ctrl + p + w` | +| Horizontal split terminal | `Ctrl + p + d` | +| Vertical split terminal | `Ctrl + p + n` | +| Run a shell command | `!xxx` | + +### File management + +> +> + +| Action | Command | +| ----------------------------- | -------------------------------------------- | +| Save selection to a file | `:w filename` (shows `:'<,'>w filename`) | +| Save and close current buffer | `:wq` | +| Save all buffers | `:wa` | +| Save and close all buffers | `:wqa` | +| Edit a file | `:e filename` (or `:e ` for completion) | +| Browse files | `:Ex` or `:e .` | +| Discard changes and reload | `:e!` | + +### Motion + +> + +| Action | Command | +| ----------------------------------- | --------------------------------------- | +| Start / end of buffer | `gg` / `G` | +| Go to line 5 | `5gg` / `5G` | +| Left / down / up / right | `h` `j` `k` `l` (counts like `5j` work) | +| Jump to matchpairs `()`, `{}`, `[]` | `%` | +| Start / end of line | `0` / `$` | +| Sentence forward / backward | `(` / `)` | +| Paragraph forward / backward | `{` / `}` | +| Section forward / backward | `[[` / `]]` | +| Jump to marks | `'` + mark (Neovim may prompt) | + +Text objects: + +- **Sentence**: ends at `.` `!` `?` plus line end or space/tab. +- **Paragraph**: ends at a blank line. +- **Section**: between section headers; `[[` / `]]` often stop at `{` in column 1 (handy in + C/Go/Java). + +### Text manipulation + +Basics: + +| Action | Command | +| ----------------------------- | ------------------------------ | +| Delete character under cursor | `x` | +| Put (paste) | `p` | +| Delete operator + motion | `d` | +| Undo word (insert) | `CTRL-w` | +| Undo line (insert) | `CTRL-u` | +| Undo change | `u` | +| Redo | `Ctrl-r` | +| Repeat previous insert | `Ctrl-a` | +| Repeat last change | `.` | +| Toggle case | `~` | +| Uppercase (visual) | `U` | +| Lowercase (visual) | `u` | +| Align selection | `:center` / `:left` / `:right` | + +Misc: + +| Action | Shortcut | +| ------------------------ | ----------- | +| Character-wise visual | `v` | +| Line-wise visual | `V` | +| Block visual | `` | +| Fold close / open | `zc` / `zo` | +| Go to definition | `gd` | +| Go to references | `gD` | +| Comment line (if mapped) | e.g. `gcc` | + +| Action | Command | +| ----------------------------------- | -------------- | +| Sort lines | `:sort` | +| Join lines | `:join` or `J` | +| Join without spaces | `:join!` | +| Insert at line start / end | `I` / `A` | +| Delete to end of line | `D` | +| Change to end of line (into insert) | `C` | + +Advanced patterns: + +- Append to many lines: `:normal A` (often after visual-block `Ctrl-v`). +- Neovim may pad short lines with spaces when block-appending past EOL. +- Delete last character on many lines: `:normal $x` over a visual selection. +- Delete last word on many lines: `:normal $bD`. + +### Search + +| Action | Command | +| --------------------------------- | ------- | +| Search forward / backward | `/` `?` | +| Repeat search same / opposite dir | `n` `N` | + +### Find and replace + +| Action | Command | +| ------------------- | ---------------------------------- | +| In visual selection | `:s/old/new/g` | +| Current line | same | +| Whole buffer | `:%s/old/new/g` | +| Regex example | `:%s@\vhttp://(\w+)@https://\1@gc` | + +Notes: + +- `\v` — “very magic”, less backslash noise in the pattern. +- `\1` — first capture group. + +### Specific line ranges + +| Action | Command examples | +| --------------------- | ------------------------------------ | +| Lines 10–end | `:10,$s/old/new/g` or `:10,$s@^@#@g` | +| Lines 10–20 | `:10,20s/old/new/g` | +| Strip trailing spaces | `:%s/\s\+$//g` | + +Flags: `g` all matches in range, `c` confirm each, `i` ignore case. + +### Buffers, windows, tabs + +> +> + +- **Buffer** — in-memory text for a file. +- **Window** — viewport on a buffer. +- **Tab page** — layout of windows. + +| Action | Command | +| ------------------ | ------------------------------ | +| Horizontal split | `:sp` or `:sp filename` | +| Vertical split | `:vs` or `:vs filename` | +| Next / prev window | `Ctrl-w w` or `Ctrl-w h/j/k/l` | +| List buffers | `:ls` | +| Next / prev buffer | `]b` / `[b` or `:bn` / `:bp` | +| New tab | `:tabnew` | +| Next / prev tab | `gt` / `gT` | + +### History + +| Action | Command | +| --------------- | ------- | +| Command history | `q:` | +| Search history | `q/` | diff --git a/home/base/core/editors/neovim/default.nix b/home/base/core/editors/neovim/default.nix index e16d36dc..5c7074cd 100644 --- a/home/base/core/editors/neovim/default.nix +++ b/home/base/core/editors/neovim/default.nix @@ -6,6 +6,9 @@ viAlias = true; vimAlias = true; + + withRuby = false; + withPython3 = false; }; }; } diff --git a/home/base/core/editors/session-env.nix b/home/base/core/editors/session-env.nix new file mode 100644 index 00000000..08b5a36b --- /dev/null +++ b/home/base/core/editors/session-env.nix @@ -0,0 +1,9 @@ +# Default interactive editor is Helix (`hx`). For trust-boundary edits (e.g. `sudoedit`, +# secrets, unfamiliar payloads), prefer `nvim --clean` — wired via `SUDO_EDITOR`. +{ + home.sessionVariables = { + EDITOR = "hx"; + VISUAL = "hx"; + SUDO_EDITOR = "nvim --clean"; + }; +} diff --git a/home/base/core/shells/config.nu b/home/base/core/shells/config.nu index 35bb22e2..f4f226d6 100644 --- a/home/base/core/shells/config.nu +++ b/home/base/core/shells/config.nu @@ -78,9 +78,9 @@ $env.config.recursion_limit = 50 $env.config.edit_mode = "vi" # Command that will be used to edit the current line buffer with Ctrl+O. -# If unset, uses $env.VISUAL and then $env.EDITOR +# If unset, uses $env.VISUAL and then $env.EDITOR ($EDITOR is `hx` via session-env). # -$env.config.buffer_editor = ["nvim", "--clean"] +$env.config.buffer_editor = ["hx"] # cursor_shape_* (string) # ----------------------- diff --git a/home/base/tui/editors/README.md b/home/base/tui/editors/README.md index 650f535d..73fea76d 100644 --- a/home/base/tui/editors/README.md +++ b/home/base/tui/editors/README.md @@ -1,212 +1,10 @@ -# Editors +# Editor tooling packages (heavy dependencies) -My editors: +This directory intentionally holds **only** [`packages.nix`](./packages.nix): language servers, +formatters, compilers, and other editor-adjacent tools that pull in a large closure. -1. Neovim -2. Helix +Editor programs, keymaps, `$EDITOR` defaults, and usage docs live under +[`../../core/editors/`](../../core/editors/README.md) (Helix, Neovim backup, glossary, cheatsheets). -And `Zellij` for a smooth and stable terminal experience. - -## Tips - -1. Many useful keys are already provided by vim, check vim/neovim's docs before you install a new - plugin / reinvent the wheel. -1. After using Emacs/Neovim more skillfully, I strongly recommend that you read the official - documentation of Neovim/vim: - 1. : The official vim documentation. - 1. : Neovim's official user documentation. -1. Use Zellij for terminal related operations, and use Neovim/Helix for editing. -1. As for Emacs, Use its GUI version & terminal emulator `vterm` for terminal related operations. -1. Two powerful file search & jump tools: -1. Tree-view plugins are beginner-friendly and intuitive, but they're not very efficient. -1. **Search by the file path**: Useful when you're familiar with the project structure, especially - on a large project. -1. **Search by the content**: Useful when you're familiar with the code. - -## Tutorial - -Type `:tutor`(`:Tutor` in Neovim) to learn the basics usage of vim/neovim. - -## VIM's Cheetsheet - -> Here only record my commonly used keys, to see **a more comprehensive cheetsheet**: -> - -Both Emacs-Evil & Neovim are compatible with vim, sothe key-bindings described here are common in -both Emacs-Evil, Neovim & vim. - -### Terminal Related - -I mainly use Zellij for terminal related operations, here is its terminal shortcuts I use frequently -now: - -| Action | Zellij's Shortcut | -| ------------------------- | ----------------- | -| Floating Terminal | `Ctrl + p + w` | -| Horizontal Split Terminal | `Ctrl + p + d` | -| Vertical Split Terminal | `Ctrl + p + n` | -| Execute a command | `!xxx` | - -### File Management - -> - -> - -| Action | | -| ----------------------------------- | ------------------------------------------------ | -| Save selected text to a file | `:w filename` (Will show `:'<,'>w filename`) | -| Save and close the current buffer | `:wq` | -| Save all buffers | `:wa` | -| Save and close all buffers | `:wqa` | -| Edit a file | `:e filename`(or `:e ` to show a file list) | -| Browse the file list | `:Ex` or `:e .` | -| Discard changes and reread the file | `:e!` | - -### Motion - -> https://vimhelp.org/motion.txt.html - -| Action | Command | -| --------------------------------------------------- | -------------------------------------------------- | -| Move to the start/end of the buffer | `gg`/`G` | -| Move the line number 5 | `5gg` / `5G` | -| Move left/down/up/right | h/j/k/l or `5h`/`5j`/`5k`/`5l` or `Ctr-n`/`Ctrl-p` | -| Move to the matchpairs, default to `()`, `{}`, `[]` | `%` | -| Move to the start/end of the line | `0` / `$` | -| Move a sentence forward/backward | `(` / `)` | -| Move a paragraph forward/backward | `{` / `}` | -| Move a section forward/backward | `[[` / `]]` | -| Jump to various positions | `'` + some other keys(neovim has prompt) | - -Text Objects: - -- **sentence**: text ending at a '.', '!' or '?' followed by either the end of a line, or by a space - or tab. -- **paragraph**: text ending at a blank line. -- **section**: text starting with a section header and ending at the start of the next section - header (or at the end of the file). - The "`]]`" and "`[[`" commands stop at the '`{`' in the - first column. This is useful to find the start of a function in a C/Go/Java/... program. - -### Text Manipulation - -Basics: - -| Action | | -| --------------------------------------- | -------------------------- | -| Delete the current character | `x` | -| Paste the copied text | `p` | -| Delete the selection | `d` | -| Undo the last word | `CTRL-w`(in insert mode) | -| Undo the last line | `CTRL-u`(in insert mode) | -| Undo the last change | `u` | -| Redo the last change | `Ctrl + r` | -| Inserts the text of the previous insert | `Ctrl + a` | -| Repeat the last command | `.` | -| Toggle text's case | `~` | -| Convert to uppercase | `U` (visual mode) | -| Convert to lowercase | `u` (visual mode) | -| Align the selected content | `:center`/`:left`/`:right` | - -Misc: - -| Action | Shortcut | -| ----------------------------- | ---------------------------------------- | -| Toggle visual mode | `v` (lower case v) | -| Select the current line | `V` (upper case v) | -| Toggle visual block mode | ` + v` (select a block vertically) | -| Fold the current code block | `zc` | -| Unfold the current code block | `zo` | -| Jump to Definition | `gd` | -| Jump to References | `gD` | -| (Un)Comment the current line | `gcc` | - -| Action | | -| ------------------------------------------------------------------------- | -------------- | -| Sort the selected lines | `:sort` | -| Join Selection of Lines With Space | `:join` or `J` | -| Join without spaces | `:join!` | -| Enter Insert mode at the start/end of the line | `I` / `A` | -| Delete from the cursor to the end of the line | `D` | -| Delete from the cursor to the end of the line, and then enter insert mode | `C` | - -Advance Techs: - -- Add at the end of multiple lines: `:normal A` - - Execublock: `:A` - - visual block mode(ctrl + v) - - Append text at the end of each line in the selected block - - If position exceeds line end, neovim adds spaces automatically - -- Delete the last char of multivle lines: `:normal $x` - - Execute `$x` on each line - - visual mode(v) - - `$` moves cursor to the end of line - - `x` deletes the character under the cursor - -- Delete the last word of multiple lines: `:normal $bD` - - Execute `$bD` on each line - - visual mode(v) - - `$` moves cursor to the end of line - - `b` moves cursor to the beginning of the last word - -### Search - -| Action | Command | -| ----------------------------------------------------- | --------- | -| Search forward/backword for a pattern | `/` / `?` | -| Repeat the last search in the same/opposite direction | `n` / `N` | - -### Find and Replace - -| Action | Command | -| -------------------------------- | ----------------------------------- | -| Replace in selected area | `:s/old/new/g` | -| Replace in current line | Same as above | -| Replace all the lines | `:% s/old/new/g` | -| Replace all the lines with regex | `:% s@\vhttp://(\w+)@https://\1@gc` | - -1. `\v` means means that in the regex pattern after it can be used without backslash - escaping(similar to python's raw string). -2. `\1` means the first matched group in the pattern. - -### Replace in the specific lines - -| Action | Command | -| ----------------------------------------- | -------------------------------------- | -| From the 10th line to the end of the file | `:10,$ s/old/new/g` or `:10,$ s@^@#@g` | -| From the 10th line to the 20th line | `:10,20 s/old/new/g` | -| Remove the trailing spaces | `:% s/\s\+$//g` | - -The postfix(flags) in the above commands: - -1. `g` means replace all the matched strings in the current line/file. -2. `c` means ask for confirmation before replacing. -3. `i` means ignore case. - -### Buffers, Windows and Tabs - -> - -> - -- A buffer is the in-memory text of a file. -- A window is a viewport on a buffer. -- A tab page is a collection of windows. - -| Action | Command | -| ----------------------------------- | ----------------------------------- | -| Split the window horizontally | `:sp[lit]` or `:sp filename` | -| Split the window horizontally | `:vs[plit]` or `:vs filename` | -| Switch to the next/previous window | `Ctrl-w + w` or `Ctrl-w + h/j/k/l` | -| Show all buffers | `:ls` | -| show next/previous buffer | `]b`/`[b` or `:bn[ext]` / `bp[rev]` | -| New Tab(New Workspace in DoomEmacs) | `:tabnew` | -| Next/Previews Tab | `gt`/`gy` | - -### History - -| Action | Command | -| ------------------------ | ------- | -| Show the command history | `q:` | -| Show the search history | `q/` | +[`default.nix`](./default.nix) imports `./packages.nix` so `home/base/tui` can keep pulling in +tooling without mixing it into `core/editors`. diff --git a/home/base/tui/editors/Structured-Editing.md b/home/base/tui/editors/Structured-Editing.md deleted file mode 100644 index 27c95fac..00000000 --- a/home/base/tui/editors/Structured-Editing.md +++ /dev/null @@ -1,23 +0,0 @@ -# Structured Editing - -## S-expression data(Lisp) - -- paredit/[lispy](https://github.com/doomemacs/doomemacs/tree/master/modules/editor/lispy): too - complex. -- [evil-cleverparens](https://github.com/emacs-evil/evil-cleverparens): simple and useful. -- [parinfer(par-in-fer)](https://shaunlebron.github.io/parinfer/): modern, simple, elegant and - useful, but works not well with some other completion plugins... - - to make parinfer works, you should disable sexp & smartparens in any lisp mode. - -Some plugins: - -- Neovim - - [parinfer-rust](https://github.com/eraserhd/parinfer-rust) - - -- Helix - - [parinfer #4090 - Helix](https://github.com/helix-editor/helix/discussions/4090) - -## Other Languages - -1. treesitter -1. ... diff --git a/home/base/tui/editors/default.nix b/home/base/tui/editors/default.nix index 049dda93..02f768d1 100644 --- a/home/base/tui/editors/default.nix +++ b/home/base/tui/editors/default.nix @@ -1,4 +1,4 @@ -{ mylib, ... }: +# Editor-related language servers and heavy tooling — kept out of `core/editors`. { - imports = mylib.scanPaths ./.; + imports = [ ./packages.nix ]; } diff --git a/home/base/tui/editors/helix/README.md b/home/base/tui/editors/helix/README.md deleted file mode 100644 index 4eea5b6c..00000000 --- a/home/base/tui/editors/helix/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Helix Editor - -Neovim is really powerful, and have a very active community. I use it as my main editor, and I'm -very happy with it. I use it for everything, from writing code to writing this document. - -But its configuration is a bit complex, and finding the right plugins, writing configurations, and -keeping everything up to date is not easy. - -That's why I'm interested in Helix, Helix is similar to Neovim, but it's more opinionated, and it's -batteries included. Whether I'll switch my main editor to Helix or not, it gives me a lot of ideas -on how to improve my Neovim workflow. - -## Tutorial - -Use `:tutor` in helix to start the tutorial. - -## Differences between Neovim and Helixer - -1. Selecting first, then action. - 1. Helix: delete 2 word: `2w` then `x`. You can always see what you're selecting before you apply - the action. - 2. Neovim: delete 2 word: `d`. then `2w`. No visual feedback before you apply the action. -1. Helix - Modern builtin features: LSP, tree-sitter, fuzzy finder, multi cursors, surround and - more. - 1. They're all available in Neovim too, but you need to find and use the right plugins manually, - which takes time and effort. -1. Helix is built in Rust from scratch. The result is a much smaller codebase and a modern set of - defaults. No VimScript. No Lua. - 1. Neovim contains a lot of VimScript, and lua is too dynamic, it's hard to debug. - 1. Personally I'm glad to take a look at a Rust codebase, but not a VimScript/Lua codebase. -1. Neovim have a very activate plugin ecosystem, and it's easy to find plugins for almost - everything. - 1. Helix is still new, and it even don't have a stable plugin system yet. A PR to add a plugin - system is still envolving: -1. Neovim has integrated terminal, and it's very powerful. It's quite similar to VSCode's integrated - terminal. I use it a lot. - 1. Helix doesn't have a integrated terminal yet, as it's complicated to implement. Users are - recommended to use tmux/Zellij or Wezterm/Kitty to implement this feature instead. - 1. - 1. - 1. **My Neovim often gets stuck when I switch to - [toggleterm.nvim](https://github.com/akinsho/toggleterm.nvim), this Helix issue made me - consider to switch from this Neovim plugin to Zellij**. -1. Helix do not have a tree-view panel, it's recommended to use Yazi/ranger/Broot instead, and open - Helix in them. - 1. a tree-view plugin may be added after the plugin system is stable, but no one knows when it - will be. - 2. and some Helix users stated that they don't need a tree-view plugin, Helix's file picker is - useful and good enough. -1. It seems Helix lacks a global substitution command, you should run it in another window(via wm or - Zellij). - 1. - 1. Neovim's substitution command allow you to preview the changes before you apply it, and it's - very useful. if I switch to Helix, I'll need to find some other tools with similar - feature(such as https://github.com/ms-jpq/sad). -1. Complexity and Maintenance Costs vs Batteries Included: - - -I think Use Helix/Neovim within a terminal file manager(Yazi/ranger/Broot) and Zellij is a good -idea. It's quite different from the workflow I migrated from VSCode/JetBrains before, I'm very -interested in it. - -In Neovim I can make the workflow similar to VSCode/JetBrains by using some plugins, but Helix -forces me to get out of my comfort zone, and try something new. diff --git a/home/base/tui/editors/helix/default.nix b/home/base/tui/editors/helix/default.nix deleted file mode 100644 index 690cffa8..00000000 --- a/home/base/tui/editors/helix/default.nix +++ /dev/null @@ -1,37 +0,0 @@ -{ - lib, - pkgs, - ... -}: - -{ - programs.helix = { - enable = true; - package = pkgs.helix; - settings = { - editor = { - line-number = "relative"; - cursorline = true; - color-modes = true; - lsp.display-messages = true; - cursor-shape = { - insert = "bar"; - normal = "block"; - select = "underline"; - }; - indent-guides.render = true; - }; - keys.normal = { - space = { - space = "file_picker"; - w = ":w"; - q = ":q"; - }; - esc = [ - "collapse_selection" - "keep_primary_selection" - ]; - }; - }; - }; -} diff --git a/home/base/tui/editors/neovim/README.md b/home/base/tui/editors/neovim/README.md deleted file mode 100644 index bb1aca90..00000000 --- a/home/base/tui/editors/neovim/README.md +++ /dev/null @@ -1,190 +0,0 @@ -# Neovim Editor - -My Neovim config based on [AstroNvim](https://github.com/AstroNvim/AstroNvim). For more details, -visit the [AstroNvim website](https://astronvim.com/). - -This document outlines neovim's configuration structure and various shortcuts/commands for efficient -usage. - -## Screenshots - -![](/_img/astronvim_2023-07-13_00-39.webp) ![](/_img/hyprland_2023-07-29_2.webp) - -## Configuration Structure - -| Description | Standard Location | My Location | -| ------------------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------- | -| Neovim's config | `~/.config/nvim` | AstroNvim's github repository, referenced as a flake input in this flake. | -| AstroNvim's user configuration | `$XDG_CONFIG_HOME/astronvim/lua/user` | [./astronvim_user/](./astronvim_user/) | -| Plugins installation directory (lazy.nvim) | `~/.local/share/nvim/` | The same as standard location, generated and managed by lazy.nvim. | -| LSP servers, DAP servers, linters, and formatters | `~/.local/share/nvim/mason/`(by mason.nvim) | [./default.nix](./default.nix), installed by nix. | - -## Update/Clean Plugins - -Note that lazy.nvim will not automatically update plugins, so you need to update them manually. - -```bash -:Lazy update -``` - -Remove all unused plugins: - -```bash -:Lazy clean -``` - -## Testing - -> via `Justfile` located at the root of this repo. - -```bash -# testing -just nvim-test - -# clear test data -just nvim-clear -``` - -## Cheetsheet - -Here is the cheetsheet related to my Neovim configs. Please read vim's common cheetsheet at -[../README.md](../README.md) before reading the following. - -### Incremental Selection - -Provided by nvim-treesitter. - -| Action | Shortcut | -| ----------------- | -------------- | -| init selection | `` | -| node incremental | `` | -| scope incremental | `` | -| node decremental | `Backspace` | - -### Search and Jump - -Provided by [flash.nvim](https://github.com/folke/flash.nvim), it's a intelligent search and jump -plugin. - -1. It enhances the default search and jump behavior of neovim.(search with prefix `/`) - -| Action | Shortcut | -| ----------------- | ------------------------------------------------------------------------------------------------------------ | -| Search | `/`(normal search), `s`(disable all code highlight, only highlight matches) | -| Treesitter Search | `yR`,`dR`, `cR`, `vR`, `ctrl+v+R`(around your matches, all the surrounding Treesitter nodes will be labeled) | -| Remote Flash | `yr`, `dr`, `cr`, (around your matches, all the surrounding Treesitter nodes will be labeled) | - -### Commands & Shortcuts - -| Action | Shortcut | -| ----------------------------- | -------------- | -| Open file explorer | ` + e` | -| Focus Neotree to current file | ` + o` | -| Toggle line wrap | ` + uw` | -| Show line diagnostics | `gl` | -| Show function/variable info | `K` | -| References of a symbol | `gr` | -| Next tab | `]b` | -| Previous tab | `[b` | - -### Window Navigation - -- Switch between windows: ` + h/j/k/l` -- Resize windows: ` + Up/Down/Left/Right` (` + -/+/`) - - Note: On macOS, conflicts with system shortcuts - - Disable in System Preferences -> Keyboard -> Shortcuts -> Mission Control - -### Splitting and Buffers - -| Action | Shortcut | -| ---------------- | ------------- | -| Horizontal Split | `\` | -| Vertical Split | `\|` | -| Close Buffer | ` + c` | - -### Editing and Formatting - -| Action | Shortcut | -| ----------------------------------------------------- | -------------- | -| Toggle buffer auto formatting | ` + uf` | -| Format Document | ` + lf` | -| Code Actions | ` + la` | -| Rename | ` + lr` | -| Opening LSP symbols | ` + lS` | -| Comment Line(support multiple lines) | ` + /` | -| Open filepath/URL at cursor(neovim's builtin command) | `gx` | -| Find files by name (fzf) | ` + ff` | -| Find files by name (include hidden files) | ` + fF` | -| Grep string in files (ripgrep) | ` + fw` | -| Grep string in files (include hidden files) | ` + fW` | - -### Git - -| Action | Shortcut | -| -------------------------- | --------------- | -| Git Commits (repository) | `: + gc` | -| Git Commits (current file) | `: + gC` | -| Git Branches | `: + gb` | -| Git Status | `: + gt` | - -### Sessions - -| Action | Shortcut | -| ------------------------------ | -------------- | -| Save Session | ` + Ss` | -| Last Session | ` + Sl` | -| Delete Session | ` + Sd` | -| Search Session | ` + Sf` | -| Load Current Directory Session | ` + S.` | - -### Debugging - -Press ` + D` to view available bindings and options. - -### Search and Replace Globally - -| Description | Shortcut | -| ------------------------------------------ | -------------- | -| Open spectre.nvim search and replace panel | ` + ss` | - -Search and replace via cli(fd + sad + delta): - -```bash -fd "\\.nix$" . | sad '' '' | delta -``` - -### Surrounding Characters - -Provided by mini.surround plugin. - -- Prefix `gz` - -| Action | Shortcut | Description | -| ------------------------------ | -------- | ----------------------------------------------- | -| Add surrounding characters | `gzaiw'` | Add `'` around the word under cursor | -| Delete surrounding characters | `gzd'` | Delete `'` around the word under cursor | -| Replace surrounding characters | `gzr'"` | Replace `'` by `"` around the word under cursor | -| Highlight surrounding | `gzh'` | Highlight `'` around the word under cursor | - -### Text Manipulation - -| Action | | -| -------------------------------------- | ------------- | -| Join with LSP intelligence(treesj) | ` + j` | -| Split Line into Multiple Lines(treesj) | ` + s` | - -### Miscellaneous - -| Action | | -| --------------------------------- | --------------- | -| Show all Yank History | `: + yh` | -| Show undo history | `: + uh` | -| Show the path of the current file | `:!echo $%` | - -## Additional Resources - -For more detailed information and advanced usage, refer to: - -1. [AstroNvim walkthrough](https://astronvim.com/Basic%20Usage/walkthrough) -2. [./astronvim_user/mapping.lua](./astronvim_user/mappings.lua) -3. All the plugins' documentations diff --git a/home/base/tui/editors/neovim/default.nix b/home/base/tui/editors/neovim/default.nix deleted file mode 100644 index e4e38eaa..00000000 --- a/home/base/tui/editors/neovim/default.nix +++ /dev/null @@ -1,86 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -############################################################################### -# -# AstroNvim's configuration and all its dependencies(lsp, formatter, etc.) -# -#e############################################################################# -let - shellAliases = { - v = "nvim"; - vdiff = "nvim -d"; - }; - # the path to nvim directory - # to make this symlink work, we need to git clone this repo to your home directory. - configPath = "${config.home.homeDirectory}/nix-config/home/base/tui/editors/neovim/nvim"; -in -{ - xdg.configFile."nvim".source = config.lib.file.mkOutOfStoreSymlink configPath; - # Disable catppuccin to avoid conflict with my non-nix config. - catppuccin.nvim.enable = false; - - home.shellAliases = shellAliases; - programs.nushell.shellAliases = shellAliases; - - programs.neovim = { - enable = true; - package = pkgs.neovim-unwrapped; - - # Whole `~/.config/nvim` is an out-of-store symlink (see `xdg.configFile.nvim` above). - # Home Manager's neovim module also wants to write `nvim/init.lua` for nix-managed plugins; - # that parent/child conflict makes the files builder fail with a misleading - # "Error installing file '.config/nvim/init.lua' outside $HOME" (see HM issues #5175, #5982). - sideloadInitLua = true; - - # defaultEditor = true; # set EDITOR at system-wide level - viAlias = true; - vimAlias = true; - - withRuby = false; - withPython3 = false; - - # These environment variables are needed to build and run binaries - # with external package managers like mason.nvim. - # - # LD_LIBRARY_PATH is also needed to run the non-FHS binaries downloaded by mason.nvim. - # it will be set by nix-ld, so we do not need to set it here again. - extraWrapperArgs = with pkgs; [ - # LIBRARY_PATH is used by gcc before compilation to search directories - # containing static and shared libraries that need to be linked to your program. - "--suffix" - "LIBRARY_PATH" - ":" - "${lib.makeLibraryPath [ - stdenv.cc.cc - zlib - ]}" - - # PKG_CONFIG_PATH is used by pkg-config before compilation to search directories - # containing .pc files that describe the libraries that need to be linked to your program. - "--suffix" - "PKG_CONFIG_PATH" - ":" - "${lib.makeSearchPathOutput "dev" "lib/pkgconfig" [ - stdenv.cc.cc - zlib - ]}" - ]; - - # Currently we use lazy.nvim as neovim's package manager, so comment this one. - # - # NOTE: These plugins will not be used by astronvim by default! - # We should install packages that will compile locally or download FHS binaries via Nix! - # and use lazy.nvim's `dir` option to specify the package directory in nix store. - # so that these plugins can work on NixOS. - plugins = with pkgs.vimPlugins; [ - # search all the plugins using https://search.nixos.org/packages - telescope-fzf-native-nvim - - # nvim-treesitter.withAllGrammars - ]; - }; -} diff --git a/home/base/tui/editors/neovim/nvim/.neoconf.json b/home/base/tui/editors/neovim/nvim/.neoconf.json deleted file mode 100644 index 2d7a81f9..00000000 --- a/home/base/tui/editors/neovim/nvim/.neoconf.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "neodev": { - "library": { - "enabled": true, - "plugins": true - } - }, - "neoconf": { - "plugins": { - "lua_ls": { - "enabled": true - } - } - }, - "lspconfig": { - "lua_ls": { - "Lua.format.enable": false - } - } -} diff --git a/home/base/tui/editors/neovim/nvim/.stylua.toml b/home/base/tui/editors/neovim/nvim/.stylua.toml deleted file mode 100644 index bfcffff4..00000000 --- a/home/base/tui/editors/neovim/nvim/.stylua.toml +++ /dev/null @@ -1,7 +0,0 @@ -column_width = 120 -line_endings = "Unix" -indent_type = "Spaces" -indent_width = 2 -quote_style = "AutoPreferDouble" -call_parentheses = "None" -collapse_simple_statement = "Always" diff --git a/home/base/tui/editors/neovim/nvim/init.lua b/home/base/tui/editors/neovim/nvim/init.lua deleted file mode 100644 index 2ce1cdd2..00000000 --- a/home/base/tui/editors/neovim/nvim/init.lua +++ /dev/null @@ -1,19 +0,0 @@ --- This file simply bootstraps the installation of Lazy.nvim and then calls other files for execution --- This file doesn't necessarily need to be touched, BE CAUTIOUS editing this file and proceed at your own risk. -local lazypath = vim.env.LAZY or vim.fn.stdpath "data" .. "/lazy/lazy.nvim" -if not (vim.env.LAZY or (vim.uv or vim.loop).fs_stat(lazypath)) then - -- stylua: ignore - vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", lazypath }) -end -vim.opt.rtp:prepend(lazypath) - --- validate that lazy is available -if not pcall(require, "lazy") then - -- stylua: ignore - vim.api.nvim_echo({ { ("Unable to load lazy from: %s\n"):format(lazypath), "ErrorMsg" }, { "Press any key to exit...", "MoreMsg" } }, true, {}) - vim.fn.getchar() - vim.cmd.quit() -end - -require "lazy_setup" -require "polish" diff --git a/home/base/tui/editors/neovim/nvim/lazy-lock.json b/home/base/tui/editors/neovim/nvim/lazy-lock.json deleted file mode 100644 index a56abeab..00000000 --- a/home/base/tui/editors/neovim/nvim/lazy-lock.json +++ /dev/null @@ -1,141 +0,0 @@ -{ - "AstroNvim": { "branch": "main", "commit": "c5e610f614e74c9dd9bf11760c4d0ad2c98c0abe" }, - "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, - "LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" }, - "aerial.nvim": { "branch": "master", "commit": "3284a2cb858ba009c79da87d5e010ccee3c99c4d" }, - "alpha-nvim": { "branch": "main", "commit": "de72250e054e5e691b9736ee30db72c65d560771" }, - "astrocommunity": { "branch": "main", "commit": "2db3ee2ce37f9e2bc9e6ea2c3e2e6292ca4d33bf" }, - "astrocore": { "branch": "main", "commit": "44a3dc0bf1591022b2a6bc89dccdfac1be17bec9" }, - "astrolsp": { "branch": "main", "commit": "909fbe64f3f87d089ff3777751261544557117cc" }, - "astrotheme": { "branch": "main", "commit": "f12dcf64b1f9a05839c3ac2146f550f43bae9dab" }, - "astroui": { "branch": "main", "commit": "e923a84c488d879a260fc9cfb2dc27dd870fb6ac" }, - "autosave.nvim": { "branch": "main", "commit": "348f72cf0241e3e736e3396c4834def2f8ef8d10" }, - "avante.nvim": { "branch": "main", "commit": "508cc4c22c78d565d270df8dec5449db07800296" }, - "catppuccin": { "branch": "main", "commit": "fa42eb5e26819ef58884257d5ae95dd0552b9a66" }, - "clangd_extensions.nvim": { - "branch": "main", - "commit": "db28f29be928d18cbfb86fbfb9f83f584f658feb" - }, - "cmake-tools.nvim": { "branch": "master", "commit": "17244215b1a96e4b2a83a16abd6719197f270f96" }, - "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, - "cmp-conjure": { "branch": "master", "commit": "8c9a88efedc0e5bf3165baa6af8a407afe29daf6" }, - "cmp-dap": { "branch": "master", "commit": "ea92773e84c0ad3288c3bc5e452ac91559669087" }, - "cmp-nvim-lsp": { "branch": "main", "commit": "99290b3ec1322070bcfb9e846450a46f6efa50f0" }, - "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, - "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" }, - "conjure": { "branch": "main", "commit": "5f15eb0322b5530eefb16457c061e7c2ccd7cf13" }, - "crates.nvim": { "branch": "main", "commit": "5d8b1bef686db0fabe5f1bb593744b617e8f1405" }, - "deno-nvim": { "branch": "master", "commit": "5a2f9205df5539c4a0696e73893bf8d1b0cae406" }, - "dressing.nvim": { "branch": "master", "commit": "3a45525bb182730fe462325c99395529308f431e" }, - "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, - "flit.nvim": { "branch": "main", "commit": "1ef72de6a02458d31b10039372c8a15ab8989e0d" }, - "friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, - "fzf-lua": { "branch": "main", "commit": "a4404dee0a65d3c2e2b292206d10b16567d088c9" }, - "gitsigns.nvim": { "branch": "main", "commit": "7010000889bfb6c26065e0b0f7f1e6aa9163edd9" }, - "gopher.nvim": { "branch": "main", "commit": "de585144ebde9f0516fb9b542dd42e90c7835b59" }, - "goto-preview": { "branch": "main", "commit": "d1faf6ea992b5bcaaaf2c682e1aba3131a01143e" }, - "guess-indent.nvim": { "branch": "main", "commit": "6cd61f7a600bb756e558627cd2e740302c58e32d" }, - "heirline.nvim": { "branch": "master", "commit": "fae936abb5e0345b85c3a03ecf38525b0828b992" }, - "indent-blankline.nvim": { - "branch": "master", - "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" - }, - "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, - "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, - "leap.nvim": { "branch": "main", "commit": "10c14af4ddfb34dbd7721f0bfb2b4d91f0558907" }, - "lsp_signature.nvim": { - "branch": "master", - "commit": "2923666d092300e6d03c8d895991d0bef43f1613" - }, - "lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" }, - "luarocks.nvim": { "branch": "main", "commit": "1db9093915eb16ba2473cfb8d343ace5ee04130a" }, - "markdown-preview.nvim": { - "branch": "main", - "commit": "462ce41af003f5cdadab856f3a42dc27e39b89c8" - }, - "mason-lspconfig.nvim": { - "branch": "main", - "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" - }, - "mason-null-ls.nvim": { "branch": "main", "commit": "2b8433f76598397fcc97318d410e0c4f7a4bea6a" }, - "mason-nvim-dap.nvim": { "branch": "main", "commit": "4c2cdc69d69fe00c15ae8648f7e954d99e5de3ea" }, - "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, - "mini.ai": { "branch": "main", "commit": "d172ada7b0281044a06cb9a625a862553c457b6f" }, - "mini.bufremove": { "branch": "main", "commit": "285bdac9596ee7375db50c0f76ed04336dcd2685" }, - "mini.surround": { "branch": "main", "commit": "1a2b59c77a0c4713a5bd8972da322f842f4821b1" }, - "neo-tree.nvim": { "branch": "main", "commit": "f481de16a0eb59c985abac8985e3f2e2f75b4875" }, - "neoconf.nvim": { "branch": "main", "commit": "f630568a4d04154803886f21ca60923f12709f0f" }, - "nfnl": { "branch": "main", "commit": "143b595069d98d47b26b80f0e0375420673de4af" }, - "none-ls.nvim": { "branch": "main", "commit": "a117163db44c256d53c3be8717f3e1a2a28e6299" }, - "nui.nvim": { "branch": "main", "commit": "a0fd35fcbb4cb479366f1dc5f20145fd718a3733" }, - "nvim-autopairs": { "branch": "master", "commit": "68f0e5c3dab23261a945272032ee6700af86227a" }, - "nvim-cmp": { "branch": "main", "commit": "1e1900b0769324a9675ef85b38f99cca29e203b3" }, - "nvim-colorizer.lua": { - "branch": "master", - "commit": "517df88cf2afb36652830df2c655df2da416a0ae" - }, - "nvim-dap": { "branch": "master", "commit": "6a5bba0ddea5d419a783e170c20988046376090d" }, - "nvim-dap-go": { "branch": "main", "commit": "8763ced35b19c8dc526e04a70ab07c34e11ad064" }, - "nvim-dap-python": { "branch": "master", "commit": "261ce649d05bc455a29f9636dc03f8cdaa7e0e2c" }, - "nvim-dap-ui": { "branch": "master", "commit": "bc81f8d3440aede116f821114547a476b082b319" }, - "nvim-jdtls": { "branch": "master", "commit": "4d77ff02063cf88963d5cf10683ab1fd15d072de" }, - "nvim-lsp-file-operations": { - "branch": "master", - "commit": "9744b738183a5adca0f916527922078a965515ed" - }, - "nvim-lspconfig": { "branch": "master", "commit": "185b2af444b27d6541c02d662b5b68190e5cf0c4" }, - "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, - "nvim-notify": { "branch": "master", "commit": "a3020c2cf4dfc4c4f390c4a21e84e35e46cf5d17" }, - "nvim-scrollbar": { "branch": "main", "commit": "5b103ef0fd2e8b9b4be3878ed38d224522192c6c" }, - "nvim-spectre": { "branch": "master", "commit": "72f56f7585903cd7bf92c665351aa585e150af0f" }, - "nvim-spider": { "branch": "main", "commit": "d4bdc45eac425e77108f068bd0706ff3ac20be7f" }, - "nvim-treesitter": { "branch": "master", "commit": "f8aaf5ce4e27cd20de917946b2ae5c968a2c2858" }, - "nvim-treesitter-textobjects": { - "branch": "master", - "commit": "9937e5e356e5b227ec56d83d0a9d0a0f6bc9cad4" - }, - "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, - "nvim-ts-context-commentstring": { - "branch": "main", - "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" - }, - "nvim-ufo": { "branch": "main", "commit": "61463090a4f55f5d080236ea62f09d1cd8976ff3" }, - "nvim-vtsls": { "branch": "main", "commit": "60b493e641d3674c030c660cabe7a2a3f7a914be" }, - "nvim-web-devicons": { "branch": "master", "commit": "4c3a5848ee0b09ecdea73adcd2a689190aeb728c" }, - "nvim-window-picker": { "branch": "main", "commit": "6382540b2ae5de6c793d4aa2e3fe6dbb518505ec" }, - "orgmode": { "branch": "master", "commit": "b6d14eb0a1553a0ef4114346d67605de82d0f7fb" }, - "package-info.nvim": { "branch": "master", "commit": "4f1b8287dde221153ec9f2acd46e8237d2d0881e" }, - "parinfer-rust": { "branch": "master", "commit": "afe6b1176cd805c000713e23b654fbf4b9f4b156" }, - "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, - "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, - "promise-async": { "branch": "main", "commit": "38a4575da9497326badd3995e768b4ccf0bb153e" }, - "refactoring.nvim": { "branch": "master", "commit": "74b608dfee827c2372250519d433cc21cb083407" }, - "render-markdown.nvim": { - "branch": "main", - "commit": "c809fc129f842a7055c672593d24be6346bcc673" - }, - "resession.nvim": { "branch": "master", "commit": "cc819b0489938d03e4f3532a583354f0287c015b" }, - "rustaceanvim": { "branch": "master", "commit": "322224d00a731d75eed6b700d38e460fd30f6e3c" }, - "schemastore.nvim": { "branch": "main", "commit": "e4f80f37cd11ed58a6e914cc30850749f021b6a7" }, - "sentiment.nvim": { "branch": "main", "commit": "54a6db15b630eccfa98c32a76baf90f21c6f1e40" }, - "smart-splits.nvim": { "branch": "master", "commit": "ddb23c1a1cf1507bda487cda7f6e4690965ef9f5" }, - "telescope-fzf-native.nvim": { - "branch": "main", - "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" - }, - "telescope-undo.nvim": { "branch": "main", "commit": "928d0c2dc9606e01e2cc547196f48d2eaecf58e5" }, - "telescope.nvim": { "branch": "0.1.x", "commit": "a17d611a0e111836a1db5295f04945df407c5135" }, - "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, - "tree-sitter-nu": { "branch": "main", "commit": "d62bb4a0c78e9476a6dd0081761444f6870252ed" }, - "treesj": { "branch": "main", "commit": "3b4a2bc42738a63de17e7485d4cc5e49970ddbcc" }, - "tsc.nvim": { "branch": "main", "commit": "8c1b4ec6a48d038a79ced8674cb15e7db6dd8ef0" }, - "venv-selector.nvim": { - "branch": "regexp", - "commit": "c677caa1030808a9f90092e522de7cc20c1390dd" - }, - "vim-illuminate": { "branch": "master", "commit": "19cb21f513fc2b02f0c66be70107741e837516a1" }, - "vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" }, - "vim-wakatime": { "branch": "master", "commit": "f39c4a201ae350aaba713b59d4a4fdd88e0811aa" }, - "which-key.nvim": { "branch": "main", "commit": "fcbf4eea17cb299c02557d576f0d568878e354a4" }, - "yanky.nvim": { "branch": "main", "commit": "04775cc6e10ef038c397c407bc17f00a2f52b378" } -} diff --git a/home/base/tui/editors/neovim/nvim/lua/community.lua b/home/base/tui/editors/neovim/nvim/lua/community.lua deleted file mode 100644 index de3c7d05..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/community.lua +++ /dev/null @@ -1,55 +0,0 @@ --- AstroCommunity: import any community modules here --- We import this file in `lazy_setup.lua` before the `plugins/` folder. --- This guarantees that the specs are processed before any user plugins. - ----@type LazySpec -return { - "AstroNvim/astrocommunity", - -- Motion - { import = "astrocommunity.motion.mini-surround" }, - -- https://github.com/echasnovski/mini.ai - { import = "astrocommunity.motion.mini-ai" }, - { import = "astrocommunity.motion.flash-nvim" }, - -- Highly experimental plugin that completely replaces - -- the UI for messages, cmdline and the popupmenu. - -- { import = "astrocommunity.utility.noice-nvim" }, - { import = "astrocommunity.media.vim-wakatime" }, - { import = "astrocommunity.motion.leap-nvim" }, - { import = "astrocommunity.motion.flit-nvim" }, - { import = "astrocommunity.scrolling.nvim-scrollbar" }, - { import = "astrocommunity.editing-support.todo-comments-nvim" }, - -- Language Support - ---- Frontend & NodeJS - { import = "astrocommunity.pack.typescript-all-in-one" }, - { import = "astrocommunity.pack.tailwindcss" }, - { import = "astrocommunity.pack.html-css" }, - { import = "astrocommunity.pack.prisma" }, - { import = "astrocommunity.pack.vue" }, - ---- Configuration Language - { import = "astrocommunity.pack.markdown" }, - { import = "astrocommunity.pack.json" }, - { import = "astrocommunity.pack.yaml" }, - { import = "astrocommunity.pack.toml" }, - ---- Backend / System - { import = "astrocommunity.pack.lua" }, - { import = "astrocommunity.pack.go" }, - { import = "astrocommunity.pack.rust" }, - { import = "astrocommunity.pack.python" }, - { import = "astrocommunity.pack.java" }, - { import = "astrocommunity.pack.cmake" }, - { import = "astrocommunity.pack.cpp" }, - -- { import = "astrocommunity.pack.nix" }, -- manually add config for nix, comment this one. - { import = "astrocommunity.pack.proto" }, - - ---- Operation & Cloud Native - { import = "astrocommunity.pack.terraform" }, - { import = "astrocommunity.pack.bash" }, - { import = "astrocommunity.pack.docker" }, - { import = "astrocommunity.pack.helm" }, - - -- colorscheme - { import = "astrocommunity.colorscheme.catppuccin" }, - - -- Lua implementation of CamelCaseMotion, with extra consideration of punctuation. - { import = "astrocommunity.motion.nvim-spider" }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/lazy_setup.lua b/home/base/tui/editors/neovim/nvim/lua/lazy_setup.lua deleted file mode 100644 index 89a7ffef..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/lazy_setup.lua +++ /dev/null @@ -1,34 +0,0 @@ -require("lazy").setup({ - { - "AstroNvim/AstroNvim", - version = "^4", -- Remove version tracking to elect for nightly AstroNvim - import = "astronvim.plugins", - opts = { -- AstroNvim options must be set here with the `import` key - mapleader = " ", -- This ensures the leader key must be configured before Lazy is set up - maplocalleader = ",", -- This ensures the localleader key must be configured before Lazy is set up - icons_enabled = true, -- Set to false to disable icons (if no Nerd Font is available) - pin_plugins = nil, -- Default will pin plugins when tracking `version` of AstroNvim, set to true/false to override - }, - }, - { import = "community" }, - { import = "plugins" }, -} --[[@as LazySpec]], { - -- Configure any other `lazy.nvim` configuration options here - -- https://github.com/folke/lazy.nvim?tab=readme-ov-file#%EF%B8%8F-configuration - - -- try to load one of these colorschemes when starting an installation during startup - install = { colorscheme = { "catppuccin" }, }, - ui = { backdrop = 100 }, - performance = { - rtp = { - -- disable some rtp plugins, add more to your liking - disabled_plugins = { - "gzip", - "netrwPlugin", - "tarPlugin", - "tohtml", - "zipPlugin", - }, - }, - }, -} --[[@as LazyConfig]]) diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/astrocore.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/astrocore.lua deleted file mode 100644 index 6ed124ca..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/astrocore.lua +++ /dev/null @@ -1,107 +0,0 @@ --- AstroCore provides a central place to modify mappings, vim options, autocommands, and more! --- Configuration documentation can be found with `:h astrocore` --- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) --- as this provides autocomplete and documentation while editing - ----@type LazySpec -return { - "AstroNvim/astrocore", - ---@type AstroCoreOpts - opts = { - -- Configure core features of AstroNvim - features = { - large_buf = { size = 1024 * 500, lines = 10000 }, -- set global limits for large files for disabling features like treesitter - autopairs = true, -- enable autopairs at start - cmp = true, -- enable completion at start - diagnostics_mode = 3, -- diagnostic mode on start (0 = off, 1 = no signs/virtual text, 2 = no virtual text, 3 = on) - highlighturl = true, -- highlight URLs at start - notifications = true, -- enable notifications at start - }, - -- Diagnostics configuration (for vim.diagnostics.config({...})) when diagnostics are on - diagnostics = { - virtual_text = true, - underline = true, - }, - -- vim options can be configured here - options = { - opt = { -- vim.opt. - relativenumber = true, -- Show relative numberline - signcolumn = "auto", -- Show sign column when used only - spell = false, -- Spell checking - swapfile = false, -- Swapfile - smartindent = false, -- fix https://github.com/ryan4yin/nix-config/issues/4 - title = true, -- Set the title of window to `filename [+=-] (path) - NVIM` - -- The percentage of 'columns' to use for the title - -- When the title is longer, only the end of the path name is shown. - titlelen = 20, - }, - g = { -- vim.g. - -- configure global vim variables (vim.g) - -- NOTE: `mapLeader` and `maplocalLeader` must be set in the AstroNvim opts or before `lazy.setup` - -- This can be found in the `lua/lazy_setup.lua` file - }, - }, - -- Mappings can be configured through AstroCore as well. - -- https://docs.astronvim.com/recipes/mappings/ - -- NOTE: keycodes follow the casing in the vimdocs. For example, `` must be capitalized - mappings = { - -- first key is the mode - n = { - -- second key is the lefthand side of the map - - -- second key is the lefthand side of the map - -- mappings seen under group name "Buffer" - ["bn"] = { "tabnew", desc = "New tab" }, - -- quick save - -- [""] = { ":w!", desc = "Save File" }, - - -- Terminal - -- NOTE: https://neovim.io/doc/user/builtin.html#jobstart() - -- 1. If {cmd} is a List it runs directly (no 'shell') - -- 2. If {cmd} is a String it runs in the 'shell' - -- search and replace globally - ["ss"] = { 'lua require("spectre").toggle()', desc = "Toggle Spectre" }, - ["sw"] = { - 'lua require("spectre").open_visual({select_word=true})', - desc = "Search current word", - }, - ["sp"] = { - 'lua require("spectre").open_file_search({select_word=true})', - desc = "Search on current file", - }, - - -- yank_history - ["yh"] = { - function() require("telescope").extensions.yank_history.yank_history() end, - desc = "Preview Yank History", - }, - - -- undo history - ["uh"] = { "Telescope undo", desc = "Telescope undo" }, - - -- implementation/definition preview - ["gpd"] = { "lua require('goto-preview').goto_preview_definition()", desc = "goto_preview_definition" }, - ["gpt"] = { - "lua require('goto-preview').goto_preview_type_definition()", - desc = "goto_preview_type_definition", - }, - ["gpi"] = { - "lua require('goto-preview').goto_preview_implementation()", - desc = "goto_preview_implementation", - }, - ["gP"] = { "lua require('goto-preview').close_all_win()", desc = "close_all_win" }, - ["gpr"] = { "lua require('goto-preview').goto_preview_references()", desc = "goto_preview_references" }, - }, - t = { - -- setting a mapping to false will disable it - -- [""] = false, - }, - -- Visual mode - v = { - -- search and replace globally - ["sw"] = { 'lua require("spectre").open_visual()', desc = "Search current word" }, - }, - - }, - }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/astrolsp.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/astrolsp.lua deleted file mode 100644 index a544b782..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/astrolsp.lua +++ /dev/null @@ -1,228 +0,0 @@ --- AstroLSP allows you to customize the features in AstroNvim's LSP configuration engine --- Configuration documentation can be found with `:h astrolsp` --- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) --- as this provides autocomplete and documentation while editing - ----@type LazySpec -return { - "AstroNvim/astrolsp", - ---@type AstroLSPOpts - opts = { - -- Configuration table of features provided by AstroLSP - features = { - autoformat = true, -- enable or disable auto formatting on start - codelens = true, -- enable/disable codelens refresh on start - inlay_hints = true, -- enable/disable inlay hints on start - semantic_tokens = true, -- enable/disable semantic token highlighting - }, - -- customize lsp formatting options - formatting = { - -- control auto formatting on save - format_on_save = { - enabled = true, -- enable or disable format on save globally - allow_filetypes = { -- enable format on save for specified filetypes only - "go", - "jsonnet", - "rust", - "terraform", - "nu", - }, - ignore_filetypes = { -- disable format on save for specified filetypes - -- "python", - }, - }, - disabled = { -- disable formatting capabilities for the listed language servers - -- disable lua_ls formatting capability if you want to use StyLua to format your lua code - -- "lua_ls", - }, - timeout_ms = 1000, -- default format timeout - -- filter = function(client) -- fully override the default formatting function - -- return true - -- end - }, - -- enable servers that you already have installed without mason - -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md - servers = { - ---- Data & Configuration Languages - "jsonls", -- json language server - "jsonnet_ls", -- jsonnet language server - "yamlls", -- yaml language server - "taplo", -- toml language server - "dagger", -- cuelsp - cue language server - "terraformls", -- terraform hcl - "marksman", -- markdown ls - "nickel_ls", -- nickel language server - -- "nil_ls", -- nix language server - "nixd", -- another nix language server - "buf_ls", -- protocol buffer language server - "dockerls", -- dockerfile - "cmake", -- cmake language server - "sqls", -- sql language server - - ---- General Purpose Languages - "clangd", -- c/c++ - "gopls", -- go - "jdtls", -- java language server, provides only basic features - "rust_analyzer", -- rust - "pyright", -- python - "ruff", -- extremely fast Python linter and code transformation - -- "julials", -- julia language server - -- "zls", -- zig language server - "lua_ls", -- lua - "bashls", -- bash - "nushell", -- nushell language server - - ---- Web Development - "ts_ls", -- typescript/javascript language server - "tailwindcss", -- tailwindcss language server - "html", -- html language server - "cssls", -- css language server - "prismals", -- prisma language server - "volar", -- vue language server - - ---- Lisp Like - "scheme_langserver", -- scheme language server - "elixirls", -- elixir language server - -- "clojure_lsp", -- clojure language server" - - ---- Circuit Design - "verible", -- verilog language server - }, - -- customize language server configuration options passed to `lspconfig` - ---@diagnostic disable: missing-fields - config = { - -- the offset_encoding of clangd will confilicts whit null-ls - -- so we need to manually set it to utf-8 - clangd = { - capabilities = { - offsetEncoding = "utf-8", - }, - }, - scheme_langserver = { - filetypes = { "scheme", "scm" }, - single_file_support = true, - }, - rust_analyzer = { - settings = { - -- Make the rust-analyzer use its own profile, - -- so you can run cargo build without that being blocked while rust-analyzer runs. - ["rust-analyzer"] = { - cargo = { - extraEnv = { CARGO_PROFILE_RUST_ANALYZER_INHERITS = "dev" }, - extraArgs = { "--profile", "rust-analyzer" }, - }, - }, - }, - }, - }, - -- customize how language servers are attached - handlers = { - -- a function without a key is simply the default handler, functions take two parameters, the server name and the configured options table for that server - -- function(server, opts) require("lspconfig")[server].setup(opts) end - - -- the key is the server that is being setup with `lspconfig` - -- rust_analyzer = false, -- setting a handler to false will disable the set up of that language server - -- pyright = function(_, opts) require("lspconfig").pyright.setup(opts) end -- or a custom handler function can be passed - }, - -- Configure buffer local auto commands to add when attaching a language server - autocmds = { - -- first key is the `augroup` to add the auto commands to (:h augroup) - lsp_document_highlight = { - -- Optional condition to create/delete auto command group - -- can either be a string of a client capability or a function of `fun(client, bufnr): boolean` - -- condition will be resolved for each client on each execution and if it ever fails for all clients, - -- the auto commands will be deleted for that buffer - cond = "textDocument/documentHighlight", - -- cond = function(client, bufnr) return client.name == "lua_ls" end, - -- list of auto commands to set - { - -- events to trigger - event = { "CursorHold", "CursorHoldI" }, - -- the rest of the autocmd options (:h nvim_create_autocmd) - desc = "Document Highlighting", - callback = function() vim.lsp.buf.document_highlight() end, - }, - { - event = { "CursorMoved", "CursorMovedI", "BufLeave" }, - desc = "Document Highlighting Clear", - callback = function() vim.lsp.buf.clear_references() end, - }, - }, - }, - -- mappings to be set up on attaching of a language server - mappings = { - n = { - gl = { function() vim.diagnostic.open_float() end, desc = "Hover diagnostics" }, - - -- a `cond` key can provided as the string of a server capability to be required to attach, or a function with `client` and `bufnr` parameters from the `on_attach` that returns a boolean - -- gD = { - -- function() vim.lsp.buf.declaration() end, - -- desc = "Declaration of current symbol", - -- cond = "textDocument/declaration", - -- }, - -- ["uY"] = { - -- function() require("astrolsp.toggles").buffer_semantic_tokens() end, - -- desc = "Toggle LSP semantic highlight (buffer)", - -- cond = function(client) return client.server_capabilities.semanticTokensProvider and vim.lsp.semantic_tokens end, - -- }, - - -- refactoring - ["ri"] = { - function() require("refactoring").refactor "Inline Variable" end, - desc = "Inverse of extract variable", - }, - ["rb"] = { function() require("refactoring").refactor "Extract Block" end, desc = "Extract Block" }, - ["rbf"] = { - function() require("refactoring").refactor "Extract Block To File" end, - desc = "Extract Block To File", - }, - ["rr"] = { - function() require("telescope").extensions.refactoring.refactors() end, - desc = "Prompt for a refactor to apply", - }, - ["rp"] = { - function() require("refactoring").debug.printf { below = false } end, - desc = "Insert print statement to mark the calling of a function", - }, - ["rv"] = { - function() require("refactoring").debug.print_var() end, - desc = "Insert print statement to print a variable", - }, - ["rc"] = { - function() require("refactoring").debug.cleanup {} end, - desc = "Cleanup of all generated print statements", - }, - }, - -- visual mode(what's the difference between v and x???) - x = { - -- refactoring - ["ri"] = { - function() require("refactoring").refactor "Inline Variable" end, - desc = "Inverse of extract variable", - }, - ["re"] = { - function() require("refactoring").refactor "Extract Function" end, - desc = "Extracts the selected code to a separate function", - }, - ["rf"] = { - function() require("refactoring").refactor "Extract Function To File" end, - desc = "Extract Function To File", - }, - ["rv"] = { - function() require("refactoring").refactor "Extract Variable" end, - desc = "Extracts occurrences of a selected expression to its own variable", - }, - ["rr"] = { - function() require("telescope").extensions.refactoring.refactors() end, - desc = "Prompt for a refactor to apply", - }, - }, - }, - -- A custom `on_attach` function to be run after the default `on_attach` function - -- takes two parameters `client` and `bufnr` (`:h lspconfig-setup`) - on_attach = function(client, bufnr) - -- this would disable semanticTokensProvider for all clients - -- client.server_capabilities.semanticTokensProvider = nil - end, - }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/astroui.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/astroui.lua deleted file mode 100644 index d1135454..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/astroui.lua +++ /dev/null @@ -1,38 +0,0 @@ --- AstroUI provides the basis for configuring the AstroNvim User Interface --- Configuration documentation can be found with `:h astroui` --- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) --- as this provides autocomplete and documentation while editing - ----@type LazySpec -return { - "AstroNvim/astroui", - ---@type AstroUIOpts - opts = { - -- change colorscheme - -- colorscheme = "astrodark", - colorscheme = "catppuccin", - -- AstroUI allows you to easily modify highlight groups easily for any and all colorschemes - highlights = { - init = { -- this table overrides highlights in all themes - -- Normal = { bg = "#000000" }, - }, - astrotheme = { -- a table of overrides/changes when applying the astrotheme theme - -- Normal = { bg = "#000000" }, - }, - }, - -- Icons can be configured throughout the interface - icons = { - -- configure the loading of the lsp in the status line - LSPLoading1 = "⠋", - LSPLoading2 = "⠙", - LSPLoading3 = "⠹", - LSPLoading4 = "⠸", - LSPLoading5 = "⠼", - LSPLoading6 = "⠴", - LSPLoading7 = "⠦", - LSPLoading8 = "⠧", - LSPLoading9 = "⠇", - LSPLoading10 = "⠏", - }, - }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/autosave.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/autosave.lua deleted file mode 100644 index 026ba4ad..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/autosave.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "0x00-ketsu/autosave.nvim", - -- lazy-loading on events - event = { "InsertLeave", "TextChanged" }, - opts = function(_, opts) - opts.prompt_style = "stdout" -- notify or stdout - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/catppuccin.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/catppuccin.lua deleted file mode 100644 index 7279434a..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/catppuccin.lua +++ /dev/null @@ -1,8 +0,0 @@ -return { - "catppuccin/nvim", - name = "catppuccin", - opts = function(_, opts) - opts.flavour = "mocha" -- latte, frappe, macchiato, mocha - opts.transparent_background = true -- setting the background color. - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/conjure.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/conjure.lua deleted file mode 100644 index 788b32e4..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/conjure.lua +++ /dev/null @@ -1,31 +0,0 @@ -return { - "Olical/conjure", - ft = { "clojure", "fennel", "python", "scheme" }, -- etc - -- [Optional] cmp-conjure for cmp - dependencies = { - { - "PaterJason/cmp-conjure", - config = function() - local cmp = require "cmp" - local config = cmp.get_config() - table.insert(config.sources, { - name = "buffer", - option = { - sources = { - { name = "conjure" }, - }, - }, - }) - cmp.setup(config) - end, - }, - }, - config = function(_, opts) - require("conjure.main").main() - require("conjure.mapping")["on-filetype"]() - end, - init = function() - -- Set configuration options here - vim.g["conjure#debug"] = true - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/flash.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/flash.lua deleted file mode 100644 index 1107f878..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/flash.lua +++ /dev/null @@ -1 +0,0 @@ -return { "folke/flash.nvim", vscode = false } diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/goto-preview.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/goto-preview.lua deleted file mode 100644 index 685159b5..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/goto-preview.lua +++ /dev/null @@ -1,5 +0,0 @@ --- implementation/definition preview -return { - "rmagatti/goto-preview", - config = function() require("goto-preview").setup {} end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/markdown-preview.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/markdown-preview.lua deleted file mode 100644 index de9b5151..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/markdown-preview.lua +++ /dev/null @@ -1,12 +0,0 @@ --- markdown preview -return { - "0x00-ketsu/markdown-preview.nvim", - ft = { "md", "markdown", "mkd", "mkdn", "mdwn", "mdown", "mdtxt", "mdtext", "rmd", "wiki" }, - config = function() - require("markdown-preview").setup { - -- your configuration comes here - -- or leave it empty to use the default settings - -- refer to the setup section below - } - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/mason.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/mason.lua deleted file mode 100644 index 14a60083..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/mason.lua +++ /dev/null @@ -1,78 +0,0 @@ --- Customize Mason plugins --- --- NOTE: Issue - mason.nvim does not support NixOS: --- https://github.com/williamboman/mason.nvim/issues/428 - ----@type LazySpec -return { - -- use mason-lspconfig to configure LSP installations - { - "williamboman/mason-lspconfig.nvim", - -- mason is unusable on NixOS, disable it. - -- ensure_installed nothing - opts = function(_, opts) - opts.ensure_installed = nil - opts.automatic_installation = false - end, - - -- overrides `require("mason-lspconfig").setup(...)` - -- opts = function(_, opts) - -- -- add more things to the ensure_installed table protecting against community packs modifying it - -- opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { - -- "lua_ls", - -- -- add more arguments for adding more language servers - -- }) - -- end, - }, - -- use mason-null-ls to configure Formatters/Linter installation for null-ls sources - { - "jay-babu/mason-null-ls.nvim", - -- mason is unusable on NixOS, disable it. - -- ensure_installed nothing - opts = function(_, opts) - opts.ensure_installed = nil - opts.automatic_installation = false - end, - - -- -- overrides `require("mason-null-ls").setup(...)` - -- opts = function(_, opts) - -- -- add more things to the ensure_installed table protecting against community packs modifying it - -- opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { - -- "prettier", - -- "stylua", - -- -- add more arguments for adding more null-ls sources - -- }) - -- end, - }, - { - -- https://docs.astronvim.com/recipes/dap/ - "jay-babu/mason-nvim-dap.nvim", - -- mason is unusable on NixOS, disable it. - -- ensure_installed nothing - -- opts = function(_, opts) - -- opts.ensure_installed = nil - -- opts.automatic_installation = false - -- end, - - -- overrides `require("mason-nvim-dap").setup(...)` - -- opts = function(_, opts) - -- -- add more things to the ensure_installed table protecting against community packs modifying it - -- opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { - -- "python", - -- -- add more arguments for adding more debuggers - -- }) - -- end, - }, - - { - "williamboman/mason.nvim", - opts = function(_, opts) - -- Where Mason should put its bin location in your PATH. Can be one of: - -- - "prepend" (default, Mason's bin location is put first in PATH) - -- - "append" (Mason's bin location is put at the end of PATH) - -- - "skip" (doesn't modify PATH) - ---@type '"prepend"' | '"append"' | '"skip"' - opts.PATH = "append" -- use mason's package only when no other package is found - end, - }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/neo-tree.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/neo-tree.lua deleted file mode 100644 index 7b553314..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/neo-tree.lua +++ /dev/null @@ -1,15 +0,0 @@ --- File explorer(Custom configs) -return { - "nvim-neo-tree/neo-tree.nvim", - opts = function(_, opts) - opts.filesystem.filtered_items = { - visible = true, -- visible by default - hide_dotfiles = false, - hide_gitignored = false, - } - opts.filesystem.follow_current_file = { - enabled = true, -- This will find and focus the file in the active buffer every time - leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal` - } - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/neodev.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/neodev.lua deleted file mode 100644 index 654ba51a..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/neodev.lua +++ /dev/null @@ -1,2 +0,0 @@ --- full signature help, docs and completion for the nvim lua API. -return { "folke/neodev.nvim", opts = {} } diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/nfnl.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/nfnl.lua deleted file mode 100644 index 8cb8f440..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/nfnl.lua +++ /dev/null @@ -1 +0,0 @@ -return { "Olical/nfnl", ft = "fennel" } diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/none-ls.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/none-ls.lua deleted file mode 100644 index b0ae6e34..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/none-ls.lua +++ /dev/null @@ -1,53 +0,0 @@ --- Customize None-ls sources - ----@type LazySpec -return { - "nvimtools/none-ls.nvim", - opts = function(_, config) - -- config variable is the default configuration table for the setup function call - local null_ls = require "null-ls" - local code_actions = null_ls.builtins.code_actions - local diagnostics = null_ls.builtins.diagnostics - local formatting = null_ls.builtins.formatting - local hover = null_ls.builtins.hover - local completion = null_ls.builtins.completion - - -- Check supported formatters and linters - -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/formatting - -- https://github.com/nvimtools/none-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics - config.sources = { - -- Common Code Actions - code_actions.gitsigns, - -- common refactoring actions based off the Refactoring book by Martin Fowler - code_actions.refactoring, - code_actions.gomodifytags, -- Go - modify struct field tags - code_actions.impl, -- Go - generate interface method stubs - code_actions.proselint, -- English prose linter - code_actions.statix, -- Lints and suggestions for Nix. - - -- Diagnostic - diagnostics.actionlint, -- GitHub Actions workflow syntax checking - diagnostics.buf, -- check text in current buffer - diagnostics.checkmake, -- check Makefiles - diagnostics.deadnix, -- Scan Nix files for dead code. - - -- Formatting - formatting.prettier, -- js/ts/vue/css/html/json/... formatter - diagnostics.hadolint, -- Dockerfile linter - formatting.black, -- Python formatter - formatting.goimports, -- Go formatter - formatting.shfmt, -- Shell formatter - formatting.terraform_fmt, -- Terraform formatter - formatting.stylua, -- Lua formatter - -- formatting.alejandra, -- Nix formatter - formatting.sqlfluff.with { -- SQL formatter - extra_args = { "--dialect", "postgres" }, -- change to your dialect - }, - formatting.nginx_beautifier, -- Nginx formatter - formatting.verible_verilog_format, -- Verilog formatter - formatting.emacs_scheme_mode, -- using emacs in batch mode to format scheme files. - formatting.fnlfmt, -- Format Fennel code - } - return config -- return final config table - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/nvim-spectre.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/nvim-spectre.lua deleted file mode 100644 index 4f8ac1b7..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/nvim-spectre.lua +++ /dev/null @@ -1,7 +0,0 @@ --- The plugin offers the abilibty to search and replace. -return { - "nvim-pack/nvim-spectre", - dependencies = { - { "nvim-lua/plenary.nvim" }, - }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/orgmode.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/orgmode.lua deleted file mode 100644 index 252d5082..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/orgmode.lua +++ /dev/null @@ -1,19 +0,0 @@ -return { - 'nvim-orgmode/orgmode', - event = 'VeryLazy', - ft = { 'org' }, - config = function() - -- Setup orgmode - require('orgmode').setup({ - org_agenda_files = "~/org/**/*", - org_default_notes_file = "~/org/refile.org", - }) - - -- NOTE: If you are using nvim-treesitter with ~ensure_installed = "all"~ option - -- add ~org~ to ignore_install - require('nvim-treesitter.configs').setup({ - ensure_installed = 'all', - ignore_install = { 'org' }, - }) - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/panifer-rust.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/panifer-rust.lua deleted file mode 100644 index 0218508e..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/panifer-rust.lua +++ /dev/null @@ -1,5 +0,0 @@ -return { - "eraserhd/parinfer-rust", - build = "cargo build --release", - ft = { "scm", "scheme" }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/refactoring.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/refactoring.lua deleted file mode 100644 index aa6704e8..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/refactoring.lua +++ /dev/null @@ -1,8 +0,0 @@ --- The plugin offers the alibity to refactor code. -return { - "ThePrimeagen/refactoring.nvim", - dependencies = { - { "nvim-lua/plenary.nvim" }, - { "nvim-treesitter/nvim-treesitter" }, - }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/sentiment.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/sentiment.lua deleted file mode 100644 index 3d8f967d..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/sentiment.lua +++ /dev/null @@ -1,13 +0,0 @@ --- Enhanced matchparen.vim plugin for Neovim to highlight the outer pair. -return { - "utilyre/sentiment.nvim", - version = "*", - event = "VeryLazy", -- keep for lazy loading - opts = { - -- config - }, - init = function() - -- `matchparen.vim` needs to be disabled manually in case of lazy loading - vim.g.loaded_matchparen = 1 - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/telescope.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/telescope.lua deleted file mode 100644 index f8d00c8e..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/telescope.lua +++ /dev/null @@ -1,49 +0,0 @@ -return { - "nvim-telescope/telescope.nvim", - branch = "0.1.x", - dependencies = { "nvim-lua/plenary.nvim" }, - init = function() - -- 1. Disable highlighting for certain filetypes - -- 2. Ignore files larger than a certain filesize - local previewers = require "telescope.previewers" - - local _bad = { ".*%.csv", ".*%.min.js" } -- Put all filetypes that slow you down in this array - local filesize_threshold = 300 * 1024 -- 300KB - local bad_files = function(filepath) - for _, v in ipairs(_bad) do - if filepath:match(v) then return false end - end - return true - end - - local new_maker = function(filepath, bufnr, opts) - opts = opts or {} - if opts.use_ft_detect == nil then opts.use_ft_detect = true end - - -- 1. Check if the file is in the bad_files array, and if so, don't highlight it - opts.use_ft_detect = opts.use_ft_detect == false and false or bad_files(filepath) - - -- 2. Check the file size, and ignore it if it's too big(preview nothing). - filepath = vim.fn.expand(filepath) - vim.loop.fs_stat(filepath, function(_, stat) - if not stat then return end - if stat.size > filesize_threshold then - return - else - previewers.buffer_previewer_maker(filepath, bufnr, opts) - end - end) - - -- Load Extensions - require("telescope").load_extension "refactoring" - require("telescope").load_extension "yank_history" - require("telescope").load_extension "undo" - end - - require("telescope").setup { - defaults = { - buffer_previewer_maker = new_maker, - }, - } - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/toggleterm.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/toggleterm.lua deleted file mode 100644 index 93bfb385..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/toggleterm.lua +++ /dev/null @@ -1,2 +0,0 @@ --- disable toggleterm.nvim, zellij's terminal is far better than neovim's one -return { "akinsho/toggleterm.nvim", enabled = false } diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/treesitter.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/treesitter.lua deleted file mode 100644 index 8867cad8..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/treesitter.lua +++ /dev/null @@ -1,42 +0,0 @@ --- Customize Treesitter - ----@type LazySpec -return { - "nvim-treesitter/nvim-treesitter", - dependencies = { - -- NOTE: additional parser - { "nushell/tree-sitter-nu" }, -- nushell scripts - }, - opts = function(_, opts) - opts.incremental_selection = { - enable = true, - keymaps = { - init_selection = "", -- Ctrl + Space - node_incremental = "", - scope_incremental = "", -- Alt + Space - node_decremental = "", -- Backspace - }, - } - opts.ignore_install = { "gotmpl", "wing" } - - -- add more things to the ensure_installed table protecting against community packs modifying it - -- https://github.com/nvim-treesitter/nvim-treesitter/tree/master - opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { - -- please add only the tree-sitters that are not available in nixpkgs here - - "just", - "kdl", - "csv", - "xml", - - ---- Misc - "diff", - "git_config", - "git_rebase", - "gitignore", - "gitcommit", - "gitattributes", - "ssh_config", - }) - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/treesj.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/treesj.lua deleted file mode 100644 index 80290cde..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/treesj.lua +++ /dev/null @@ -1,10 +0,0 @@ --- joining blocks of code into oneline, or splitting one line into multiple lines. -return { - "Wansmer/treesj", - keys = { "m", "j", "s" }, - dependencies = { "nvim-treesitter/nvim-treesitter" }, - config = function() - require("treesj").setup { --[[ your config ]] - } - end, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/undo-tree.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/undo-tree.lua deleted file mode 100644 index fc23b1b7..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/undo-tree.lua +++ /dev/null @@ -1,2 +0,0 @@ --- Undo tree -return { "debugloop/telescope-undo.nvim" } diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/user.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/user.lua deleted file mode 100644 index 7dc787f7..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/user.lua +++ /dev/null @@ -1,83 +0,0 @@ --- You can also add or configure plugins by creating files in this `plugins/` folder --- Here are some examples: - ----@type LazySpec -return { - - -- == Examples of Adding Plugins == - - "andweeb/presence.nvim", - { - "ray-x/lsp_signature.nvim", - event = "BufRead", - config = function() require("lsp_signature").setup() end, - }, - - -- == Examples of Overriding Plugins == - - -- customize alpha options - { - "goolord/alpha-nvim", - opts = function(_, opts) - -- customize the dashboard header - opts.section.header.val = { - " █████ ███████ ████████ ██████ ██████", - "██ ██ ██ ██ ██ ██ ██ ██", - "███████ ███████ ██ ██████ ██ ██", - "██ ██ ██ ██ ██ ██ ██ ██", - "██ ██ ███████ ██ ██ ██ ██████", - " ", - " ███  ██ ██  ██ ██ ███  ███", - " ████  ██ ██  ██ ██ ████  ████", - " ██ ██  ██ ██  ██ ██ ██ ████ ██", - " ██  ██ ██  ██  ██  ██ ██  ██  ██", - " ██   ████   ████   ██ ██      ██", - } - return opts - end, - }, - - -- You can disable default plugins as follows: - { "max397574/better-escape.nvim", enabled = false }, - - -- You can also easily customize additional setup of plugins that is outside of the plugin's setup call - -- { - -- "L3MON4D3/LuaSnip", - -- config = function(plugin, opts) - -- require "astronvim.plugins.configs.luasnip"(plugin, opts) -- include the default astronvim config that calls the setup call - -- -- add more custom luasnip configuration such as filetype extend or custom snippets - -- local luasnip = require "luasnip" - -- luasnip.filetype_extend("javascript", { "javascriptreact" }) - -- end, - -- }, - - { - "windwp/nvim-autopairs", - config = function(plugin, opts) - require "astronvim.plugins.configs.nvim-autopairs"(plugin, opts) -- include the default astronvim config that calls the setup call - -- add more custom autopairs configuration such as custom rules - local npairs = require "nvim-autopairs" - local Rule = require "nvim-autopairs.rule" - local cond = require "nvim-autopairs.conds" - npairs.add_rules( - { - Rule("$", "$", { "tex", "latex" }) - -- don't add a pair if the next character is % - :with_pair(cond.not_after_regex "%%") - -- don't add a pair if the previous character is xxx - :with_pair( - cond.not_before_regex("xxx", 3) - ) - -- don't move right when repeat character - :with_move(cond.none()) - -- don't delete if the next character is xx - :with_del(cond.not_after_regex "xx") - -- disable adding a newline when you press - :with_cr(cond.none()), - }, - -- disable for .vim files, but it work for another filetypes - Rule("a", "a", "-vim") - ) - end, - }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/yanky.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/yanky.lua deleted file mode 100644 index e52caf0d..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/yanky.lua +++ /dev/null @@ -1,62 +0,0 @@ --- clipboard manager -return { - "gbprod/yanky.nvim", - opts = function() - local mapping = require "yanky.telescope.mapping" - local mappings = mapping.get_defaults() - mappings.i[""] = nil - return { - highlight = { timer = 200 }, - picker = { - telescope = { - use_default_mappings = false, - mappings = mappings, - }, - }, - } - end, - keys = { - { - "y", - "(YankyYank)", - mode = { "n", "x" }, - desc = "Yank text", - }, - { - "p", - "(YankyPutAfter)", - mode = { "n", "x" }, - desc = "Put yanked text after cursor", - }, - { - "P", - "(YankyPutBefore)", - mode = { "n", "x" }, - desc = "Put yanked text before cursor", - }, - { - "gp", - "(YankyGPutAfter)", - mode = { "n", "x" }, - desc = "Put yanked text after selection", - }, - { - "gP", - "(YankyGPutBefore)", - mode = { "n", "x" }, - desc = "Put yanked text before selection", - }, - { "[y", "(YankyCycleForward)", desc = "Cycle forward through yank history" }, - { "]y", "(YankyCycleBackward)", desc = "Cycle backward through yank history" }, - { "]p", "(YankyPutIndentAfterLinewise)", desc = "Put indented after cursor (linewise)" }, - { "[p", "(YankyPutIndentBeforeLinewise)", desc = "Put indented before cursor (linewise)" }, - { "]P", "(YankyPutIndentAfterLinewise)", desc = "Put indented after cursor (linewise)" }, - { "[P", "(YankyPutIndentBeforeLinewise)", desc = "Put indented before cursor (linewise)" }, - { ">p", "(YankyPutIndentAfterShiftRight)", desc = "Put and indent right" }, - { "(YankyPutIndentAfterShiftLeft)", desc = "Put and indent left" }, - { ">P", "(YankyPutIndentBeforeShiftRight)", desc = "Put before and indent right" }, - { "(YankyPutIndentBeforeShiftLeft)", desc = "Put before and indent left" }, - { "=p", "(YankyPutAfterFilter)", desc = "Put after applying a filter" }, - { "=P", "(YankyPutBeforeFilter)", desc = "Put before applying a filter" }, - }, -} diff --git a/home/base/tui/editors/neovim/nvim/lua/polish.lua b/home/base/tui/editors/neovim/nvim/lua/polish.lua deleted file mode 100644 index 1acdac90..00000000 --- a/home/base/tui/editors/neovim/nvim/lua/polish.lua +++ /dev/null @@ -1,16 +0,0 @@ --- This will run last in the setup process and is a good place to configure --- things like custom filetypes. This just pure lua so anything that doesn't --- fit in the normal config locations above can go here - --- Set up custom filetypes --- vim.filetype.add { --- extension = { --- foo = "fooscript", --- }, --- filename = { --- ["Foofile"] = "fooscript", --- }, --- pattern = { --- ["~/%.config/foo/.*"] = "fooscript", --- }, --- } diff --git a/home/base/tui/editors/neovim/nvim/neovim.yml b/home/base/tui/editors/neovim/nvim/neovim.yml deleted file mode 100644 index b9235ab8..00000000 --- a/home/base/tui/editors/neovim/nvim/neovim.yml +++ /dev/null @@ -1,6 +0,0 @@ ---- -base: lua51 - -globals: - vim: - any: true diff --git a/home/base/tui/editors/neovim/nvim/selene.toml b/home/base/tui/editors/neovim/nvim/selene.toml deleted file mode 100644 index e7005c33..00000000 --- a/home/base/tui/editors/neovim/nvim/selene.toml +++ /dev/null @@ -1,8 +0,0 @@ -std = "neovim" - -[rules] -global_usage = "allow" -if_same_then_else = "allow" -incorrect_standard_library_use = "allow" -mixed_table = "allow" -multiple_statements = "allow" diff --git a/modules/base/packages.nix b/modules/base/packages.nix index 5c6861db..6e243161 100644 --- a/modules/base/packages.nix +++ b/modules/base/packages.nix @@ -1,14 +1,19 @@ { pkgs, ... }: { - # for security reasons, do not load neovim's user config - # since EDITOR may be used to edit some critical files - environment.variables.EDITOR = "nvim --clean"; + # Default editor: Helix (`hx`). Privileged edits (`sudoedit`, …) prefer `nvim --clean` + # via `SUDO_EDITOR`; invoke `nvim --clean` manually for other sensitive workflows. + environment.variables = { + EDITOR = "hx"; + VISUAL = "hx"; + SUDO_EDITOR = "nvim --clean"; + }; environment.systemPackages = with pkgs; [ # core tools nushell # nushell fastfetch - neovim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + helix # default $EDITOR (`hx`) + neovim # backup editor; `nvim --clean` for sensitive / privileged edits (`$SUDO_EDITOR`) gnumake # Makefile just # a command runner like gnumake, but simpler git # used by nix flakes