mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-02-01 20:47:42 +00:00
Compare commits
128 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9fb925b38c | |||
| 3af8d8b638 | |||
| 4bb434b795 | |||
| b38b887098 | |||
| a81c8e56a8 | |||
|
|
1ffa9dfc9d | ||
|
|
d45d1107fa | ||
| edd0c4cba0 | |||
| 103aa08664 | |||
|
|
b8ba7a0681 | ||
|
|
e1db55f113 | ||
|
|
d519af562a | ||
| 7493fd6401 | |||
| 217664ffc2 | |||
| 7998705d3b | |||
| 2f043d8b37 | |||
| a103fbddbe | |||
| b583b0be83 | |||
| 52323803dc | |||
| 2026b6adfe | |||
| bb4eb1f8c7 | |||
| daff9f957a | |||
| 91c8410eb0 | |||
| 68bb53435d | |||
|
|
cd5cea172a | ||
| e3f5bbad00 | |||
| 1185524e97 | |||
| ac18c73f53 | |||
| bf4730a1f3 | |||
| 3ea0ba687c | |||
| b5df810075 | |||
| fab40dae96 | |||
| c6567f4f98 | |||
| 2ecbefecf7 | |||
| 90bc744d51 | |||
|
|
e46dadb128 | ||
| 3368217108 | |||
| 85fbc8684b | |||
| a3acd654f2 | |||
| 49362fcc9d | |||
| 742b4af0e8 | |||
| aebb0dadbd | |||
|
|
a7e68f1224 | ||
| 42706adf0b | |||
| fef9398a86 | |||
| c37df72f12 | |||
|
|
45a2330425 | ||
| 0596c51a0e | |||
| 8f4ad21ed8 | |||
| 491f733221 | |||
| 6eefbdc965 | |||
| 558b6500d3 | |||
|
|
23a34c1447 | ||
| 816ff7cd17 | |||
| fd3ba99ffc | |||
| c5454a36f3 | |||
| d32b43d7a0 | |||
| 9e3cc80694 | |||
| cd0fff756e | |||
| f8bde72337 | |||
|
|
afd28f8469 | ||
| 26ba1ac2a7 | |||
| 5d520d3f3f | |||
| 1d3ed5bfd0 | |||
| c80b577a5a | |||
| 4e2ee377f2 | |||
| d7106ae28f | |||
| a864d31e84 | |||
| b462ae20bf | |||
| 2cd1e7e0dd | |||
| c951dde930 | |||
|
|
a570cef49b | ||
| 441ba01455 | |||
| 73a00fcdf0 | |||
| 205ea28e16 | |||
| ade8162660 | |||
| 1745a15acf | |||
| ad08a2956e | |||
| 8d2083be4c | |||
| 87281a436f | |||
| 4ec9444e29 | |||
|
|
95d358ae3d | ||
|
|
cea61a5719 | ||
|
|
28c29d94f2 | ||
|
|
1028d3847c | ||
| 3498c6b739 | |||
| 83eb7d861e | |||
| 22090129ec | |||
|
|
5b0ca2a63b | ||
|
|
c5fa136a1f | ||
|
|
9a63aaff74 | ||
| 5e68077ac2 | |||
| 72b9acd710 | |||
|
|
469044bb2a | ||
|
|
96a362474c | ||
|
|
1b9dfac671 | ||
|
|
7dbaf8204b | ||
|
|
415d7d9026 | ||
|
|
6734d3c1ab | ||
|
|
b20d08aa69 | ||
|
|
e4da7534f8 | ||
| b39f7ec598 | |||
|
|
0f8c1ef457 | ||
|
|
4b31ad9a7b | ||
| 4d60d15831 | |||
|
|
90125c7278 | ||
| 0035575f8b | |||
|
|
865c0aa33b | ||
|
|
5fe7bc3527 | ||
| 0d1b35ef09 | |||
|
|
bee0340493 | ||
| fbdc9c741a | |||
| 0ac0d05db6 | |||
| 1c432da880 | |||
|
|
7e0cc9ec43 | ||
|
|
8c4b6d2983 | ||
|
|
5b4cf1bb2f | ||
| c9edd4bf84 | |||
| 1023228ddc | |||
| 8f8851d08f | |||
| 2b06642e4b | |||
|
|
52cbebc0b3 | ||
| 2b64164f2b | |||
| 7c8fb993a2 | |||
|
|
e745583f07 | ||
| 5762d57eb1 | |||
|
|
4b1d860cb5 | ||
|
|
288580c150 |
6
.gitattributes
vendored
6
.gitattributes
vendored
@@ -219,3 +219,9 @@ git/* text
|
|||||||
**/git/* text
|
**/git/* text
|
||||||
**/alias text
|
**/alias text
|
||||||
ssh/* text
|
ssh/* text
|
||||||
|
|
||||||
|
# Git Crypt special files
|
||||||
|
*-secret filter=git-crypt diff=git-crypt
|
||||||
|
*.key filter=git-crypt diff=git-crypt
|
||||||
|
secrets/** filter=git-crypt diff=git-crypt
|
||||||
|
|
||||||
|
|||||||
118
.github/README.md
vendored
Normal file
118
.github/README.md
vendored
Normal file
@@ -0,0 +1,118 @@
|
|||||||
|
# .dotfiles
|
||||||
|
|
||||||
|
Welcome to [ivuorinen](https://github.com/ivuorinen)'s .dotfiles repository.
|
||||||
|
It's a hodgepodge of scripts and configurations, tests and mistakes I'm not
|
||||||
|
aware of yet. As I find more interesting tools, configs and other stuff,
|
||||||
|
this repository will live accordingly.
|
||||||
|
|
||||||
|
Please for the love of everything good do not use these 1:1 as your own dotfiles,
|
||||||
|
fork or download the repo as a zip and go from there with your own configs.
|
||||||
|
|
||||||
|
## Setup
|
||||||
|
|
||||||
|
### First time setup
|
||||||
|
|
||||||
|
1. Clone this repository to `$HOME/.dotfiles`
|
||||||
|
2. `./install`
|
||||||
|
3. ???
|
||||||
|
4. Profit
|
||||||
|
|
||||||
|
### Updates
|
||||||
|
|
||||||
|
`cd $HOME/.dotfiles && git pull && ./install`
|
||||||
|
|
||||||
|
## The looks
|
||||||
|
|
||||||
|
## tmux with powerlevel10k, the default view
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## tmux + nvim (astronvim) editing this repository
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Interesting files and locations
|
||||||
|
|
||||||
|
### Interesting folders
|
||||||
|
|
||||||
|
| Path | Description |
|
||||||
|
|---------------------|----------------------------------------------|
|
||||||
|
| `.github` | GitHub Repository configuration files. |
|
||||||
|
| `hosts/{hostname}/` | Configs that should apply to that host only. |
|
||||||
|
| `local/bin` | Helper scripts that I've collected or wrote. |
|
||||||
|
| `scripts` | Setup scripts. |
|
||||||
|
|
||||||
|
### dotfile folders
|
||||||
|
|
||||||
|
| Repo | Destination | Description |
|
||||||
|
|-----------|-------------|---------------------------------------------|
|
||||||
|
| `base/` | `.*` | `$HOME` level files. |
|
||||||
|
| `config/` | `.config/` | Configurations for applications. |
|
||||||
|
| `local/` | `.local/` | XDG Base folder: `bin`, `share` and `state` |
|
||||||
|
| `ssh/` | `.ssh/` | SSH Configurations. |
|
||||||
|
|
||||||
|
### dfm - the dotfiles manager
|
||||||
|
|
||||||
|
`.local/bin/dfm` is a shell script that has some tools that help with dotfiles management.
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
The folder structure follows [XDG Base Directory Specification][xdg] where possible.
|
||||||
|
|
||||||
|
### XDG Variables
|
||||||
|
|
||||||
|
| Env | Default | Short description |
|
||||||
|
|--------------------|----------------------|------------------------------------------------|
|
||||||
|
| `$XDG_BIN_HOME` | `$HOME/.local/bin` | Local binaries |
|
||||||
|
| `$XDG_CONFIG_HOME` | `$HOME/.config` | User-specific configs |
|
||||||
|
| `$XDG_DATA_HOME` | `$HOME/.local/share` | User-specific data files |
|
||||||
|
| `$XDG_STATE_HOME` | `$HOME/.local/state` | App state that should persist between restarts |
|
||||||
|
|
||||||
|
#### XDG_BIN_HOME (`$HOME/.local/bin`)
|
||||||
|
|
||||||
|
`$XDG_BIN_HOME` defines directory that contains local binaries.
|
||||||
|
|
||||||
|
User-specific executable files may be stored in `$HOME/.local/bin`.
|
||||||
|
Distributions should ensure this directory shows up in the UNIX `$PATH`
|
||||||
|
environment variable, at an appropriate place.
|
||||||
|
|
||||||
|
#### XDG_DATA_HOME (`$HOME/.local/share`)
|
||||||
|
|
||||||
|
`$XDG_DATA_HOME` defines the base directory relative to which
|
||||||
|
user-specific *data files* should be stored.
|
||||||
|
|
||||||
|
If `$XDG_DATA_HOME` is either not set or empty,
|
||||||
|
a default equal to `$HOME/.local/share` should be used.
|
||||||
|
|
||||||
|
#### XDG_CONFIG_HOME (`$HOME/.config`)
|
||||||
|
|
||||||
|
`$XDG_CONFIG_HOME` defines the base directory relative to which
|
||||||
|
user-specific *configuration files* should be stored.
|
||||||
|
|
||||||
|
If `$XDG_CONFIG_HOME` is either not set or empty,
|
||||||
|
a default equal to `$HOME/.config` should be used.
|
||||||
|
|
||||||
|
#### XDG_STATE_HOME (`$HOME/.local/state`)
|
||||||
|
|
||||||
|
`$XDG_STATE_HOME` defines the base directory relative to which
|
||||||
|
user-specific *state files* should be stored.
|
||||||
|
|
||||||
|
If `$XDG_STATE_HOME` is either not set or empty,
|
||||||
|
a default equal to `$HOME/.local/state` should be used.
|
||||||
|
|
||||||
|
The `$XDG_STATE_HOME` contains *state data* that should
|
||||||
|
*persist between (application) restarts*, but that is not important or
|
||||||
|
portable enough to the user that it should be stored in `$XDG_DATA_HOME`.
|
||||||
|
|
||||||
|
- It may contain:
|
||||||
|
- actions history (logs, history, recently used files, …)
|
||||||
|
- current state of the application that can be reused
|
||||||
|
on a restart (view, layout, open files, undo history, …)
|
||||||
|
|
||||||
|
#### XDG_DATA_DIRS
|
||||||
|
|
||||||
|
`$XDG_DATA_DIRS` defines the preference-ordered set of base directories
|
||||||
|
to search for data files in addition to the `$XDG_DATA_HOME` base directory.
|
||||||
|
The directories in `$XDG_DATA_DIRS` should be seperated with a colon ':'.
|
||||||
|
|
||||||
|
[xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
||||||
1
.github/dependabot.yml
vendored
1
.github/dependabot.yml
vendored
@@ -1,6 +1,5 @@
|
|||||||
version: 2
|
version: 2
|
||||||
updates:
|
updates:
|
||||||
|
|
||||||
# Maintain dependencies for GitHub Actions
|
# Maintain dependencies for GitHub Actions
|
||||||
- package-ecosystem: "github-actions"
|
- package-ecosystem: "github-actions"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
|
|||||||
BIN
.github/screenshots/tmux-astronvim-130x40.png
vendored
Normal file
BIN
.github/screenshots/tmux-astronvim-130x40.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 154 KiB |
BIN
.github/screenshots/tmux-nvim-astronvim.png
vendored
Normal file
BIN
.github/screenshots/tmux-nvim-astronvim.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 140 KiB |
BIN
.github/screenshots/tmux-powerlevel10k-130x20.png
vendored
Normal file
BIN
.github/screenshots/tmux-powerlevel10k-130x20.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
BIN
.github/screenshots/tmux-starship.png
vendored
Normal file
BIN
.github/screenshots/tmux-starship.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 62 KiB |
5
.github/workflows/changelog.yml
vendored
5
.github/workflows/changelog.yml
vendored
@@ -1,22 +1,17 @@
|
|||||||
---
|
|
||||||
name: Debug Changelog # Workflow name displayed on GitHub
|
name: Debug Changelog # Workflow name displayed on GitHub
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch: # Trigger manually
|
workflow_dispatch: # Trigger manually
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
debug-changelog:
|
debug-changelog:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Create changelog text
|
- name: Create changelog text
|
||||||
id: changelog
|
id: changelog
|
||||||
uses: loopwerk/tag-changelog@v1
|
uses: loopwerk/tag-changelog@v1
|
||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
config_file: .github/tag-changelog-config.js
|
config_file: .github/tag-changelog-config.js
|
||||||
|
|
||||||
- name: "Echo results"
|
- name: "Echo results"
|
||||||
id: output-changelog
|
id: output-changelog
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
7
.github/workflows/new-release.yml
vendored
7
.github/workflows/new-release.yml
vendored
@@ -1,14 +1,10 @@
|
|||||||
---
|
|
||||||
name: Release Daily State # Workflow name displayed on GitHub
|
name: Release Daily State # Workflow name displayed on GitHub
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch: # Trigger manually
|
workflow_dispatch: # Trigger manually
|
||||||
schedule:
|
schedule:
|
||||||
- cron: "30 20 * * *" # UTC is 2-3 hours behind Europe/Helsinki, my timezone
|
- cron: "30 20 * * *" # UTC is 2-3 hours behind Europe/Helsinki, my timezone
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
new-daily-release:
|
new-daily-release:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -17,11 +13,9 @@ jobs:
|
|||||||
version: ${{ steps.daily-version.outputs.version }}
|
version: ${{ steps.daily-version.outputs.version }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3 # Checkout our working repository
|
- uses: actions/checkout@v3 # Checkout our working repository
|
||||||
|
|
||||||
- name: Create tag if necessary
|
- name: Create tag if necessary
|
||||||
uses: fregante/daily-version-action@v2
|
uses: fregante/daily-version-action@v2
|
||||||
id: daily-version
|
id: daily-version
|
||||||
|
|
||||||
- name: Create changelog text
|
- name: Create changelog text
|
||||||
if: steps.daily-version.outputs.created
|
if: steps.daily-version.outputs.created
|
||||||
id: changelog
|
id: changelog
|
||||||
@@ -29,7 +23,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
token: ${{ secrets.GITHUB_TOKEN }}
|
token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
config_file: .github/tag-changelog-config.js
|
config_file: .github/tag-changelog-config.js
|
||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
if: steps.daily-version.outputs.created
|
if: steps.daily-version.outputs.created
|
||||||
uses: actions/create-release@latest
|
uses: actions/create-release@latest
|
||||||
|
|||||||
6
.github/workflows/update-submodules.yml
vendored
6
.github/workflows/update-submodules.yml
vendored
@@ -1,13 +1,11 @@
|
|||||||
name: Update submodules
|
name: Update submodules
|
||||||
on:
|
on:
|
||||||
schedule: [cron: 0 3 * * *]
|
schedule: [{cron: 0 3 * * *}]
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
permissions:
|
||||||
contents: write
|
contents: write
|
||||||
issues: write
|
issues: write
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
update-submodules:
|
update-submodules:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -18,12 +16,10 @@ jobs:
|
|||||||
submodules: true
|
submodules: true
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
token: ${{secrets.GITHUB_TOKEN}}
|
token: ${{secrets.GITHUB_TOKEN}}
|
||||||
|
|
||||||
- name: Config Git User
|
- name: Config Git User
|
||||||
run: |
|
run: |
|
||||||
git config --global user.name "${{ github.actor }}"
|
git config --global user.name "${{ github.actor }}"
|
||||||
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
|
git config --global user.email "${{ github.actor }}@users.noreply.github.com"
|
||||||
|
|
||||||
- name: Update submodules
|
- name: Update submodules
|
||||||
run: |
|
run: |
|
||||||
if git commit -am"chore(git): Update submodules (automated)
|
if git commit -am"chore(git): Update submodules (automated)
|
||||||
|
|||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -7,6 +7,11 @@ Brewfile.lock.json
|
|||||||
config/fzf
|
config/fzf
|
||||||
config/cheat/cheatsheets/pure-bash-bible/*
|
config/cheat/cheatsheets/pure-bash-bible/*
|
||||||
config/cheat/cheatsheets/tldr/*
|
config/cheat/cheatsheets/tldr/*
|
||||||
|
config/git/credentials
|
||||||
|
config/npm/npmrc
|
||||||
|
config/zsh/.zcompdump
|
||||||
|
ssh/local.d/*
|
||||||
|
!ssh/local.d/.gitkeep
|
||||||
!.gitkeep
|
!.gitkeep
|
||||||
.env
|
.env
|
||||||
|
|
||||||
|
|||||||
45
.gitmodules
vendored
45
.gitmodules
vendored
@@ -14,12 +14,6 @@
|
|||||||
url = https://gitlab.com/gnfzdz/dotbot-include.git
|
url = https://gitlab.com/gnfzdz/dotbot-include.git
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
|
||||||
[submodule "config/nvim"]
|
|
||||||
path = config/nvim
|
|
||||||
url = https://github.com/AstroNvim/AstroNvim.git
|
|
||||||
ignore = dirty
|
|
||||||
shallow = true
|
|
||||||
|
|
||||||
[submodule "cheat-community"]
|
[submodule "cheat-community"]
|
||||||
path = config/cheat/cheatsheets/community
|
path = config/cheat/cheatsheets/community
|
||||||
url = https://github.com/cheat/cheatsheets.git
|
url = https://github.com/cheat/cheatsheets.git
|
||||||
@@ -29,3 +23,42 @@
|
|||||||
path = config/tmux/plugins/tpm
|
path = config/tmux/plugins/tpm
|
||||||
url = https://github.com/tmux-plugins/tpm.git
|
url = https://github.com/tmux-plugins/tpm.git
|
||||||
ignore = dirty
|
ignore = dirty
|
||||||
|
[submodule "tmux/catppuccin"]
|
||||||
|
path = config/tmux/plugins/tmux
|
||||||
|
url = https://github.com/catppuccin/tmux.git
|
||||||
|
[submodule "tmux/tmux-1password"]
|
||||||
|
path = config/tmux/plugins/tmux-1password
|
||||||
|
url = https://github.com/yardnsm/tmux-1password.git
|
||||||
|
[submodule "tmux/tmux-autoreload"]
|
||||||
|
path = config/tmux/plugins/tmux-autoreload
|
||||||
|
url = https://github.com/b0o/tmux-autoreload.git
|
||||||
|
[submodule "tmux/tmux-continuum"]
|
||||||
|
path = config/tmux/plugins/tmux-continuum
|
||||||
|
url = https://github.com/tmux-plugins/tmux-continuum
|
||||||
|
[submodule "tmux/tmux-fzf"]
|
||||||
|
path = config/tmux/plugins/tmux-fzf
|
||||||
|
url = https://github.com/sainnhe/tmux-fzf.git
|
||||||
|
[submodule "tmux/tmux-menus"]
|
||||||
|
path = config/tmux/plugins/tmux-menus
|
||||||
|
url = https://github.com/jaclu/tmux-menus.git
|
||||||
|
[submodule "tmux/tmux-notify"]
|
||||||
|
path = config/tmux/plugins/tmux-notify
|
||||||
|
url = https://github.com/ChanderG/tmux-notify.git
|
||||||
|
[submodule "tmux/tmux-resurrect"]
|
||||||
|
path = config/tmux/plugins/tmux-resurrect
|
||||||
|
url = https://github.com/tmux-plugins/tmux-resurrect
|
||||||
|
[submodule "tmux/tmux-sensible"]
|
||||||
|
path = config/tmux/plugins/tmux-sensible
|
||||||
|
url = https://github.com/tmux-plugins/tmux-sensible.git
|
||||||
|
[submodule "tmux/tmux-sessionist"]
|
||||||
|
path = config/tmux/plugins/tmux-sessionist
|
||||||
|
url = https://github.com/tmux-plugins/tmux-sessionist.git
|
||||||
|
[submodule "tmux/tmux-suspend"]
|
||||||
|
path = config/tmux/plugins/tmux-suspend
|
||||||
|
url = https://github.com/MunifTanjim/tmux-suspend.git
|
||||||
|
[submodule "tmux/tmux-yank"]
|
||||||
|
path = config/tmux/plugins/tmux-yank
|
||||||
|
url = https://github.com/tmux-plugins/tmux-yank.git
|
||||||
|
[submodule "tmux/vim-tmux-navigator"]
|
||||||
|
path = config/tmux/plugins/vim-tmux-navigator
|
||||||
|
url = https://github.com/christoomey/vim-tmux-navigator.git
|
||||||
|
|||||||
6
.ignore
Normal file
6
.ignore
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
.git/**
|
||||||
|
config/cheat/cheatsheets/community/**
|
||||||
|
tools/dotbot/**
|
||||||
|
tools/dotbot-brew/**
|
||||||
|
tools/dotbot-include/**
|
||||||
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
config/cheat/cheatsheets/community/
|
|
||||||
config/tmux/
|
|
||||||
config/nvim/
|
|
||||||
tools/
|
|
||||||
|
|
||||||
@@ -1 +1 @@
|
|||||||
3
|
3.11
|
||||||
|
|||||||
@@ -3,5 +3,8 @@ line_endings = "Unix"
|
|||||||
indent_type = "Spaces"
|
indent_type = "Spaces"
|
||||||
indent_width = 2
|
indent_width = 2
|
||||||
quote_style = "AutoPreferDouble"
|
quote_style = "AutoPreferDouble"
|
||||||
call_parentheses = "None"
|
call_parentheses = "Always"
|
||||||
collapse_simple_statement = "Always"
|
collapse_simple_statement = "Always"
|
||||||
|
|
||||||
|
[sort_requires]
|
||||||
|
enabled = true
|
||||||
|
|||||||
4
.yamlfmt
4
.yamlfmt
@@ -18,7 +18,7 @@ include:
|
|||||||
- ./**/*.{yml,yaml}
|
- ./**/*.{yml,yaml}
|
||||||
|
|
||||||
exclude:
|
exclude:
|
||||||
- ./dotbot/**
|
- ./tools/dotbot/**
|
||||||
- ./dotbot-*/**
|
- ./tools/dotbot-*/**
|
||||||
- ./config/astronvim/**
|
- ./config/astronvim/**
|
||||||
- ./config/nvim/**
|
- ./config/nvim/**
|
||||||
|
|||||||
94
README.md
94
README.md
@@ -1,94 +0,0 @@
|
|||||||
# .dotfiles
|
|
||||||
|
|
||||||
Welcome to [ivuorinen](https://github.com/ivuorinen)'s .dotfiles repository.
|
|
||||||
It's a hodgepodge of scripts and configurations, tests and mistakes I'm not
|
|
||||||
aware of yet. As I find more interesting tools, configs and other stuff,
|
|
||||||
this repository will live accordingly.
|
|
||||||
|
|
||||||
Please for the love of everything good do not use these 1:1 as your own dotfiles,
|
|
||||||
fork or download the repo as a zip and go from there with your own configs.
|
|
||||||
|
|
||||||
## Setup
|
|
||||||
|
|
||||||
### First time setup
|
|
||||||
|
|
||||||
1. Clone this repository to `$HOME/.dotfiles`
|
|
||||||
2. `./install`
|
|
||||||
3. ???
|
|
||||||
4. Profit
|
|
||||||
|
|
||||||
## Interesting files and locations
|
|
||||||
|
|
||||||
### Interesting folders
|
|
||||||
|
|
||||||
| Path | Description |
|
|
||||||
| ------------------- | -------------------------------------------- |
|
|
||||||
| `.github` | GitHub Repository configuration files. |
|
|
||||||
| `hosts/{hostname}/` | Configs that should apply to that host only. |
|
|
||||||
| `local/bin` | Helper scripts that I've collected or wrote. |
|
|
||||||
| `scripts` | Setup scripts. |
|
|
||||||
|
|
||||||
### dotfile folders
|
|
||||||
|
|
||||||
| Repo | Destination | Description |
|
|
||||||
| --------- | ----------- | ------------------------------------------- |
|
|
||||||
| `base/` | `.*` | `$HOME` level files. |
|
|
||||||
| `config/` | `.config/` | Configurations for applications. |
|
|
||||||
| `local/` | `.local/` | XDG Base folder: `bin`, `share` and `state` |
|
|
||||||
| `ssh/` | `.ssh/` | SSH Configurations. |
|
|
||||||
|
|
||||||
### dfm - the dotfiles manager
|
|
||||||
|
|
||||||
`.local/bin/dfm` is a shell script that has some tools that help with dotfiles management.
|
|
||||||
|
|
||||||
## Configuration
|
|
||||||
|
|
||||||
The folder structure follows [XDG Base Directory Specification][xdg] where possible.
|
|
||||||
|
|
||||||
### XDG Variables
|
|
||||||
|
|
||||||
| Var | Default |
|
|
||||||
| ------------------ | -------------------- |
|
|
||||||
| `$XDG_DATA_HOME` | `$HOME/.local/share` |
|
|
||||||
| `$XDG_STATE_HOME` | `$HOME/.local/state` |
|
|
||||||
| `$XDG_CONFIG_HOME` | `$HOME/.config` |
|
|
||||||
| `$XDG_BIN_HOME` | `$HOME/.local/bin` |
|
|
||||||
|
|
||||||
- `$XDG_BIN_HOME` is a custom `env` for `.local/bin` folder.
|
|
||||||
- `$XDG_DATA_HOME` defines the base directory relative to which user-specific data
|
|
||||||
files should be stored. If `$XDG_DATA_HOME` is either not set or empty,
|
|
||||||
a default equal to `$HOME/.local/share` should be used.
|
|
||||||
- `$XDG_CONFIG_HOME` defines the base directory relative to which user-specific configuration
|
|
||||||
files should be stored. If `$XDG_CONFIG_HOME` is either not set or empty,
|
|
||||||
a default equal to `$HOME/.config` should be used.
|
|
||||||
- `$XDG_STATE_HOME` defines the base directory relative
|
|
||||||
to which user-specific state files should be stored.
|
|
||||||
If `$XDG_STATE_HOME` is either not set or empty, a default
|
|
||||||
equal to `$HOME/.local/state` should be used.
|
|
||||||
- The `$XDG_STATE_HOME` contains state data that should persist
|
|
||||||
between (application) restarts,
|
|
||||||
but that is not important or portable enough to the user that
|
|
||||||
it should be stored in `$XDG_DATA_HOME`.
|
|
||||||
It may contain:
|
|
||||||
- actions history (logs, history, recently used files, …)
|
|
||||||
- current state of the application that can be reused
|
|
||||||
on a restart (view, layout, open files, undo history, …)
|
|
||||||
- User-specific executable files may be stored in `$HOME/.local/bin`.
|
|
||||||
Distributions should ensure this directory shows up in the UNIX `$PATH`
|
|
||||||
environment variable, at an appropriate place.
|
|
||||||
- `$XDG_DATA_DIRS` defines the preference-ordered set of base directories
|
|
||||||
to search for data files in addition to the `$XDG_DATA_HOME` base directory.
|
|
||||||
The directories in `$XDG_DATA_DIRS` should be seperated with a colon ':'.
|
|
||||||
|
|
||||||
[xdg]: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
|
||||||
|
|
||||||
## Interesting links
|
|
||||||
|
|
||||||
### Interesting dotfiles repos
|
|
||||||
|
|
||||||
- [dotfiles.github.io/inspiration/](https://dotfiles.github.io/inspiration)
|
|
||||||
- [frdmn/dotfiles](https://github.com/github.com/frdmn/dotfiles) - Ansible-based
|
|
||||||
dotfile setup for macOS
|
|
||||||
- [mvdan/dotfiles](https://github.com/mvdan/dotfiles) - Here be dragons
|
|
||||||
- [vsouza/dotfiles](https://github.com/vsouza/dotfiles) - 🏡 My dotfiles
|
|
||||||
- [freekmurze/dotfiles](https://github.com/freekmurze/dotfiles) - My personal dotfiles
|
|
||||||
@@ -4,4 +4,34 @@ git submodule add --name dotbot -f https://github.com/anishathalye/dotbot.git to
|
|||||||
git submodule add --name dotbot-brew -f https://github.com/wren/dotbot-brew.git tools/dotbot-brew
|
git submodule add --name dotbot-brew -f https://github.com/wren/dotbot-brew.git tools/dotbot-brew
|
||||||
git submodule add --name dotbot-include -f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
|
git submodule add --name dotbot-include -f https://gitlab.com/gnfzdz/dotbot-include.git tools/dotbot-include
|
||||||
git submodule add --name cheat-community -f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
|
git submodule add --name cheat-community -f https://github.com/cheat/cheatsheets.git config/cheat/cheatsheets/community
|
||||||
git submodule add --name tmux/tpm -f https://github.com/tmux-plugins/tpm.git config/tmux/plugins/tpm
|
|
||||||
|
# tmux plugin manager and plugins
|
||||||
|
git submodule add --name tmux/tpm \
|
||||||
|
-f https://github.com/tmux-plugins/tpm.git config/tmux/plugins/tpm
|
||||||
|
git submodule add --name tmux/catppuccin \
|
||||||
|
-f https://github.com/catppuccin/tmux.git config/tmux/plugins/tmux
|
||||||
|
git submodule add --name tmux/tmux-1password \
|
||||||
|
-f https://github.com/yardnsm/tmux-1password.git config/tmux/plugins/tmux-1password
|
||||||
|
git submodule add --name tmux/tmux-autoreload \
|
||||||
|
-f https://github.com/b0o/tmux-autoreload.git config/tmux/plugins/tmux-autoreload
|
||||||
|
git submodule add --name tmux/tmux-continuum \
|
||||||
|
-f https://github.com/tmux-plugins/tmux-continuum config/tmux/plugins/tmux-continuum
|
||||||
|
git submodule add --name tmux/tmux-fzf \
|
||||||
|
-f https://github.com/sainnhe/tmux-fzf.git config/tmux/plugins/tmux-fzf
|
||||||
|
git submodule add --name tmux/tmux-menus \
|
||||||
|
-f https://github.com/jaclu/tmux-menus.git config/tmux/plugins/tmux-menus
|
||||||
|
git submodule add --name tmux/tmux-notify \
|
||||||
|
-f https://github.com/ChanderG/tmux-notify.git config/tmux/plugins/tmux-notify
|
||||||
|
git submodule add --name tmux/tmux-resurrect \
|
||||||
|
-f https://github.com/tmux-plugins/tmux-resurrect config/tmux/plugins/tmux-resurrect
|
||||||
|
git submodule add --name tmux/tmux-sensible \
|
||||||
|
-f https://github.com/tmux-plugins/tmux-sensible.git config/tmux/plugins/tmux-sensible
|
||||||
|
git submodule add --name tmux/tmux-sessionist \
|
||||||
|
-f https://github.com/tmux-plugins/tmux-sessionist.git config/tmux/plugins/tmux-sessionist
|
||||||
|
git submodule add --name tmux/tmux-suspend \
|
||||||
|
-f https://github.com/MunifTanjim/tmux-suspend.git config/tmux/plugins/tmux-suspend
|
||||||
|
git submodule add --name tmux/tmux-yank \
|
||||||
|
-f https://github.com/tmux-plugins/tmux-yank.git config/tmux/plugins/tmux-yank
|
||||||
|
git submodule add --name tmux/vim-tmux-navigator \
|
||||||
|
-f https://github.com/christoomey/vim-tmux-navigator.git config/tmux/plugins/vim-tmux-navigator
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"version": 1,
|
|
||||||
"cli": {
|
|
||||||
"analytics": false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
12
base/bashrc
12
base/bashrc
@@ -9,10 +9,10 @@ function x-load-configs()
|
|||||||
{
|
{
|
||||||
# Load the shell dotfiles, and then some:
|
# Load the shell dotfiles, and then some:
|
||||||
for file in $DOTFILES/config/{exports,alias,functions}; do
|
for file in $DOTFILES/config/{exports,alias,functions}; do
|
||||||
[ -r "$file" ] && [ -f "$file" ] && source "$file"
|
[ -r "$file" ] && source "$file"
|
||||||
[ -r "$file-secret" ] && [ -f "$file-secret" ] && source "$file-secret"
|
[ -r "$file-secret" ] && source "$file-secret"
|
||||||
[ -r "$file-$HOSTNAME" ] && [ -f "$file-$HOSTNAME" ] && source "$file-$HOSTNAME"
|
[ -r "$file-$HOSTNAME" ] && source "$file-$HOSTNAME"
|
||||||
[ -r "$file-$HOSTNAME-secret" ] && [ -f "$file-$HOSTNAME-secret" ] && source "$file-$HOSTNAME-secret"
|
[ -r "$file-$HOSTNAME-secret" ] && source "$file-$HOSTNAME-secret"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
x-load-configs
|
x-load-configs
|
||||||
@@ -20,4 +20,6 @@ x-load-configs
|
|||||||
# Import ssh keys in keychain
|
# Import ssh keys in keychain
|
||||||
ssh-add -A 2>/dev/null;
|
ssh-add -A 2>/dev/null;
|
||||||
|
|
||||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.bash ] && source "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.bash
|
[ -f "${DOTFILES}/config/fzf/fzf.bash" ] \
|
||||||
|
&& source "${DOTFILES}/config/fzf/fzf.bash"
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
[work]
|
|
||||||
name = Ismo Vuorinen
|
|
||||||
email = ismo.vuorinen@vincit.fi
|
|
||||||
|
|
||||||
[home]
|
|
||||||
name = Ismo Vuorinen
|
|
||||||
email = ismo@ivuorinen.net
|
|
||||||
|
|
||||||
[github]
|
|
||||||
name = ivuorinen
|
|
||||||
email = ivuorinen@users.noreply.github.com
|
|
||||||
|
|
||||||
34
base/gitprofile
Normal file
34
base/gitprofile
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"profiles": {
|
||||||
|
"github": [
|
||||||
|
{
|
||||||
|
"key": "user.name",
|
||||||
|
"value": "Ismo Vuorinen"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "user.email",
|
||||||
|
"value": "ivuorinen@users.noreply.github.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"home": [
|
||||||
|
{
|
||||||
|
"key": "user.email",
|
||||||
|
"value": "ismo@ivuorinen.net"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "user.name",
|
||||||
|
"value": "Ismo Vuorinen"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"work": [
|
||||||
|
{
|
||||||
|
"key": "user.email",
|
||||||
|
"value": "ismo.vuorinen@vincit.fi"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "user.name",
|
||||||
|
"value": "Ismo Vuorinen"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,5 +4,3 @@ export NVM_DIR="$HOME/.nvm"
|
|||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|
||||||
alias php="php -d error_reporting=22527"
|
|
||||||
|
|
||||||
|
|||||||
45
base/zshrc
45
base/zshrc
@@ -1,14 +1,6 @@
|
|||||||
# this is my zsh config. there are many like it, but this one is mine.
|
# this is my zsh config. there are many like it, but this one is mine.
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
|
|
||||||
autoload -U colors zsh/terminfo
|
|
||||||
colors
|
|
||||||
setopt correct
|
|
||||||
|
|
||||||
# Add completion scripts to zsh path
|
|
||||||
fpath=(~/.config/zsh/completion $fpath)
|
|
||||||
autoload -Uz compinit && compinit -i
|
|
||||||
|
|
||||||
# Defaults
|
# Defaults
|
||||||
export DOTFILES="$HOME/.dotfiles"
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
# shellcheck source=shared.sh
|
# shellcheck source=shared.sh
|
||||||
@@ -19,14 +11,34 @@ function x-load-configs()
|
|||||||
{
|
{
|
||||||
# Load the shell dotfiles, and then some:
|
# Load the shell dotfiles, and then some:
|
||||||
for file in $DOTFILES/config/{exports,alias,functions}; do
|
for file in $DOTFILES/config/{exports,alias,functions}; do
|
||||||
[ -f "$file" ] && source "$file"
|
[ -r "$file" ] && source "$file"
|
||||||
[ -f "$file-secret" ] && source "$file-secret"
|
[ -r "$file-secret" ] && source "$file-secret"
|
||||||
[ -f "$file-$HOSTNAME" ] && source "$file-$HOSTNAME"
|
[ -r "$file-$HOSTNAME" ] && source "$file-$HOSTNAME"
|
||||||
[ -f "$file-$HOSTNAME-secret" ] && source "$file-$HOSTNAME-secret"
|
[ -r "$file-$HOSTNAME-secret" ] && source "$file-$HOSTNAME-secret"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
x-load-configs
|
x-load-configs
|
||||||
|
|
||||||
|
export HISTFILE="$XDG_STATE_HOME"/zsh/history
|
||||||
|
|
||||||
|
autoload -U colors zsh/terminfo
|
||||||
|
colors
|
||||||
|
setopt correct
|
||||||
|
|
||||||
|
export ZSH_CUSTOM_COMPLETION_PATH="$XDG_CONFIG_HOME/zsh/completion"
|
||||||
|
x-dc "$ZSH_CUSTOM_COMPLETION_PATH"
|
||||||
|
|
||||||
|
# Add completion scripts to zsh path
|
||||||
|
FPATH="$ZSH_CUSTOM_COMPLETION_PATH:$FPATH"
|
||||||
|
autoload -Uz compinit
|
||||||
|
|
||||||
|
if type brew &>/dev/null
|
||||||
|
then
|
||||||
|
FPATH="$(brew --prefix)/share/zsh/site-functions:${FPATH}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
compinit -d "$XDG_CACHE_HOME"/zsh/zcompdump-"$ZSH_VERSION"
|
||||||
|
|
||||||
# Import ssh keys in keychain
|
# Import ssh keys in keychain
|
||||||
ssh-add -A 2>/dev/null;
|
ssh-add -A 2>/dev/null;
|
||||||
|
|
||||||
@@ -44,9 +56,10 @@ have antigen && {
|
|||||||
antigen apply
|
antigen apply
|
||||||
}
|
}
|
||||||
|
|
||||||
# starship is present
|
[ -f "${DOTFILES}/config/fzf/fzf.zsh" ] \
|
||||||
have starship && eval "$(starship init zsh)"
|
&& source "${DOTFILES}/config/fzf/fzf.zsh"
|
||||||
|
|
||||||
[ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.zsh ] \
|
# To customize prompt, run `p10k configure` or edit ~/.p10k.zsh.
|
||||||
&& source "${XDG_CONFIG_HOME:-$HOME/.config}"/fzf/fzf.zsh
|
export P10K_LOCATION="$XDG_CONFIG_HOME/zsh/p10k.zsh"
|
||||||
|
[[ ! -f $P10K_LOCATION ]] || source "$P10K_LOCATION"
|
||||||
|
|
||||||
|
|||||||
4
config/act/actrc
Normal file
4
config/act/actrc
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
-P ubuntu-latest=catthehacker/ubuntu:act-latest
|
||||||
|
-P ubuntu-22.04=catthehacker/ubuntu:act-22.04
|
||||||
|
-P ubuntu-20.04=catthehacker/ubuntu:act-20.04
|
||||||
|
-P ubuntu-18.04=catthehacker/ubuntu:act-18.04
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# shellcheck source="../scripts/shared.sh"
|
# shellcheck source="../scripts/shared.sh"
|
||||||
|
# shellcheck disable=1091,2139
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
source "$DOTFILES/scripts/shared.sh"
|
||||||
|
|
||||||
# Get installed php versions from brew and setup aliases
|
# Get installed php versions from brew and setup aliases
|
||||||
@@ -54,6 +55,11 @@ if [[ $(uname) == 'Darwin' ]]; then
|
|||||||
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
|
alias emptytrash="sudo rm -rfv /Volumes/*/.Trashes; sudo rm -rfv ~/.Trash; sudo rm -rfv /private/var/log/asl/*.asl"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# tmux: automatically attach or create session with name 'main'
|
||||||
|
alias tmux='tmux new-session -A -s main'
|
||||||
|
# tmux: attach or create new session
|
||||||
|
alias ta='tmux attach || tmux'
|
||||||
|
|
||||||
# watch with: differences, precise, beep and color
|
# watch with: differences, precise, beep and color
|
||||||
alias watchx='watch -dpbc'
|
alias watchx='watch -dpbc'
|
||||||
# delete .DS_Store files
|
# delete .DS_Store files
|
||||||
@@ -83,3 +89,6 @@ if [[ -f "$HOME/.aliases.local" ]]; then
|
|||||||
# shellcheck disable=SC1091
|
# shellcheck disable=SC1091
|
||||||
source "$HOME/.aliases.local"
|
source "$HOME/.aliases.local"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
alias wget=wget --hsts-file="$XDG_DATA_HOME/wget-hsts"
|
||||||
|
alias svn="svn --config-dir $XDG_CONFIG_HOME/subversion"
|
||||||
|
|||||||
@@ -1,674 +0,0 @@
|
|||||||
GNU GENERAL PUBLIC LICENSE
|
|
||||||
Version 3, 29 June 2007
|
|
||||||
|
|
||||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
|
|
||||||
Everyone is permitted to copy and distribute verbatim copies
|
|
||||||
of this license document, but changing it is not allowed.
|
|
||||||
|
|
||||||
Preamble
|
|
||||||
|
|
||||||
The GNU General Public License is a free, copyleft license for
|
|
||||||
software and other kinds of works.
|
|
||||||
|
|
||||||
The licenses for most software and other practical works are designed
|
|
||||||
to take away your freedom to share and change the works. By contrast,
|
|
||||||
the GNU General Public License is intended to guarantee your freedom to
|
|
||||||
share and change all versions of a program--to make sure it remains free
|
|
||||||
software for all its users. We, the Free Software Foundation, use the
|
|
||||||
GNU General Public License for most of our software; it applies also to
|
|
||||||
any other work released this way by its authors. You can apply it to
|
|
||||||
your programs, too.
|
|
||||||
|
|
||||||
When we speak of free software, we are referring to freedom, not
|
|
||||||
price. Our General Public Licenses are designed to make sure that you
|
|
||||||
have the freedom to distribute copies of free software (and charge for
|
|
||||||
them if you wish), that you receive source code or can get it if you
|
|
||||||
want it, that you can change the software or use pieces of it in new
|
|
||||||
free programs, and that you know you can do these things.
|
|
||||||
|
|
||||||
To protect your rights, we need to prevent others from denying you
|
|
||||||
these rights or asking you to surrender the rights. Therefore, you have
|
|
||||||
certain responsibilities if you distribute copies of the software, or if
|
|
||||||
you modify it: responsibilities to respect the freedom of others.
|
|
||||||
|
|
||||||
For example, if you distribute copies of such a program, whether
|
|
||||||
gratis or for a fee, you must pass on to the recipients the same
|
|
||||||
freedoms that you received. You must make sure that they, too, receive
|
|
||||||
or can get the source code. And you must show them these terms so they
|
|
||||||
know their rights.
|
|
||||||
|
|
||||||
Developers that use the GNU GPL protect your rights with two steps:
|
|
||||||
(1) assert copyright on the software, and (2) offer you this License
|
|
||||||
giving you legal permission to copy, distribute and/or modify it.
|
|
||||||
|
|
||||||
For the developers' and authors' protection, the GPL clearly explains
|
|
||||||
that there is no warranty for this free software. For both users' and
|
|
||||||
authors' sake, the GPL requires that modified versions be marked as
|
|
||||||
changed, so that their problems will not be attributed erroneously to
|
|
||||||
authors of previous versions.
|
|
||||||
|
|
||||||
Some devices are designed to deny users access to install or run
|
|
||||||
modified versions of the software inside them, although the manufacturer
|
|
||||||
can do so. This is fundamentally incompatible with the aim of
|
|
||||||
protecting users' freedom to change the software. The systematic
|
|
||||||
pattern of such abuse occurs in the area of products for individuals to
|
|
||||||
use, which is precisely where it is most unacceptable. Therefore, we
|
|
||||||
have designed this version of the GPL to prohibit the practice for those
|
|
||||||
products. If such problems arise substantially in other domains, we
|
|
||||||
stand ready to extend this provision to those domains in future versions
|
|
||||||
of the GPL, as needed to protect the freedom of users.
|
|
||||||
|
|
||||||
Finally, every program is threatened constantly by software patents.
|
|
||||||
States should not allow patents to restrict development and use of
|
|
||||||
software on general-purpose computers, but in those that do, we wish to
|
|
||||||
avoid the special danger that patents applied to a free program could
|
|
||||||
make it effectively proprietary. To prevent this, the GPL assures that
|
|
||||||
patents cannot be used to render the program non-free.
|
|
||||||
|
|
||||||
The precise terms and conditions for copying, distribution and
|
|
||||||
modification follow.
|
|
||||||
|
|
||||||
TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
0. Definitions.
|
|
||||||
|
|
||||||
"This License" refers to version 3 of the GNU General Public License.
|
|
||||||
|
|
||||||
"Copyright" also means copyright-like laws that apply to other kinds of
|
|
||||||
works, such as semiconductor masks.
|
|
||||||
|
|
||||||
"The Program" refers to any copyrightable work licensed under this
|
|
||||||
License. Each licensee is addressed as "you". "Licensees" and
|
|
||||||
"recipients" may be individuals or organizations.
|
|
||||||
|
|
||||||
To "modify" a work means to copy from or adapt all or part of the work
|
|
||||||
in a fashion requiring copyright permission, other than the making of an
|
|
||||||
exact copy. The resulting work is called a "modified version" of the
|
|
||||||
earlier work or a work "based on" the earlier work.
|
|
||||||
|
|
||||||
A "covered work" means either the unmodified Program or a work based
|
|
||||||
on the Program.
|
|
||||||
|
|
||||||
To "propagate" a work means to do anything with it that, without
|
|
||||||
permission, would make you directly or secondarily liable for
|
|
||||||
infringement under applicable copyright law, except executing it on a
|
|
||||||
computer or modifying a private copy. Propagation includes copying,
|
|
||||||
distribution (with or without modification), making available to the
|
|
||||||
public, and in some countries other activities as well.
|
|
||||||
|
|
||||||
To "convey" a work means any kind of propagation that enables other
|
|
||||||
parties to make or receive copies. Mere interaction with a user through
|
|
||||||
a computer network, with no transfer of a copy, is not conveying.
|
|
||||||
|
|
||||||
An interactive user interface displays "Appropriate Legal Notices"
|
|
||||||
to the extent that it includes a convenient and prominently visible
|
|
||||||
feature that (1) displays an appropriate copyright notice, and (2)
|
|
||||||
tells the user that there is no warranty for the work (except to the
|
|
||||||
extent that warranties are provided), that licensees may convey the
|
|
||||||
work under this License, and how to view a copy of this License. If
|
|
||||||
the interface presents a list of user commands or options, such as a
|
|
||||||
menu, a prominent item in the list meets this criterion.
|
|
||||||
|
|
||||||
1. Source Code.
|
|
||||||
|
|
||||||
The "source code" for a work means the preferred form of the work
|
|
||||||
for making modifications to it. "Object code" means any non-source
|
|
||||||
form of a work.
|
|
||||||
|
|
||||||
A "Standard Interface" means an interface that either is an official
|
|
||||||
standard defined by a recognized standards body, or, in the case of
|
|
||||||
interfaces specified for a particular programming language, one that
|
|
||||||
is widely used among developers working in that language.
|
|
||||||
|
|
||||||
The "System Libraries" of an executable work include anything, other
|
|
||||||
than the work as a whole, that (a) is included in the normal form of
|
|
||||||
packaging a Major Component, but which is not part of that Major
|
|
||||||
Component, and (b) serves only to enable use of the work with that
|
|
||||||
Major Component, or to implement a Standard Interface for which an
|
|
||||||
implementation is available to the public in source code form. A
|
|
||||||
"Major Component", in this context, means a major essential component
|
|
||||||
(kernel, window system, and so on) of the specific operating system
|
|
||||||
(if any) on which the executable work runs, or a compiler used to
|
|
||||||
produce the work, or an object code interpreter used to run it.
|
|
||||||
|
|
||||||
The "Corresponding Source" for a work in object code form means all
|
|
||||||
the source code needed to generate, install, and (for an executable
|
|
||||||
work) run the object code and to modify the work, including scripts to
|
|
||||||
control those activities. However, it does not include the work's
|
|
||||||
System Libraries, or general-purpose tools or generally available free
|
|
||||||
programs which are used unmodified in performing those activities but
|
|
||||||
which are not part of the work. For example, Corresponding Source
|
|
||||||
includes interface definition files associated with source files for
|
|
||||||
the work, and the source code for shared libraries and dynamically
|
|
||||||
linked subprograms that the work is specifically designed to require,
|
|
||||||
such as by intimate data communication or control flow between those
|
|
||||||
subprograms and other parts of the work.
|
|
||||||
|
|
||||||
The Corresponding Source need not include anything that users
|
|
||||||
can regenerate automatically from other parts of the Corresponding
|
|
||||||
Source.
|
|
||||||
|
|
||||||
The Corresponding Source for a work in source code form is that
|
|
||||||
same work.
|
|
||||||
|
|
||||||
2. Basic Permissions.
|
|
||||||
|
|
||||||
All rights granted under this License are granted for the term of
|
|
||||||
copyright on the Program, and are irrevocable provided the stated
|
|
||||||
conditions are met. This License explicitly affirms your unlimited
|
|
||||||
permission to run the unmodified Program. The output from running a
|
|
||||||
covered work is covered by this License only if the output, given its
|
|
||||||
content, constitutes a covered work. This License acknowledges your
|
|
||||||
rights of fair use or other equivalent, as provided by copyright law.
|
|
||||||
|
|
||||||
You may make, run and propagate covered works that you do not
|
|
||||||
convey, without conditions so long as your license otherwise remains
|
|
||||||
in force. You may convey covered works to others for the sole purpose
|
|
||||||
of having them make modifications exclusively for you, or provide you
|
|
||||||
with facilities for running those works, provided that you comply with
|
|
||||||
the terms of this License in conveying all material for which you do
|
|
||||||
not control copyright. Those thus making or running the covered works
|
|
||||||
for you must do so exclusively on your behalf, under your direction
|
|
||||||
and control, on terms that prohibit them from making any copies of
|
|
||||||
your copyrighted material outside their relationship with you.
|
|
||||||
|
|
||||||
Conveying under any other circumstances is permitted solely under
|
|
||||||
the conditions stated below. Sublicensing is not allowed; section 10
|
|
||||||
makes it unnecessary.
|
|
||||||
|
|
||||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
|
|
||||||
|
|
||||||
No covered work shall be deemed part of an effective technological
|
|
||||||
measure under any applicable law fulfilling obligations under article
|
|
||||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or
|
|
||||||
similar laws prohibiting or restricting circumvention of such
|
|
||||||
measures.
|
|
||||||
|
|
||||||
When you convey a covered work, you waive any legal power to forbid
|
|
||||||
circumvention of technological measures to the extent such circumvention
|
|
||||||
is effected by exercising rights under this License with respect to
|
|
||||||
the covered work, and you disclaim any intention to limit operation or
|
|
||||||
modification of the work as a means of enforcing, against the work's
|
|
||||||
users, your or third parties' legal rights to forbid circumvention of
|
|
||||||
technological measures.
|
|
||||||
|
|
||||||
4. Conveying Verbatim Copies.
|
|
||||||
|
|
||||||
You may convey verbatim copies of the Program's source code as you
|
|
||||||
receive it, in any medium, provided that you conspicuously and
|
|
||||||
appropriately publish on each copy an appropriate copyright notice;
|
|
||||||
keep intact all notices stating that this License and any
|
|
||||||
non-permissive terms added in accord with section 7 apply to the code;
|
|
||||||
keep intact all notices of the absence of any warranty; and give all
|
|
||||||
recipients a copy of this License along with the Program.
|
|
||||||
|
|
||||||
You may charge any price or no price for each copy that you convey,
|
|
||||||
and you may offer support or warranty protection for a fee.
|
|
||||||
|
|
||||||
5. Conveying Modified Source Versions.
|
|
||||||
|
|
||||||
You may convey a work based on the Program, or the modifications to
|
|
||||||
produce it from the Program, in the form of source code under the
|
|
||||||
terms of section 4, provided that you also meet all of these conditions:
|
|
||||||
|
|
||||||
a) The work must carry prominent notices stating that you modified
|
|
||||||
it, and giving a relevant date.
|
|
||||||
|
|
||||||
b) The work must carry prominent notices stating that it is
|
|
||||||
released under this License and any conditions added under section
|
|
||||||
7. This requirement modifies the requirement in section 4 to
|
|
||||||
"keep intact all notices".
|
|
||||||
|
|
||||||
c) You must license the entire work, as a whole, under this
|
|
||||||
License to anyone who comes into possession of a copy. This
|
|
||||||
License will therefore apply, along with any applicable section 7
|
|
||||||
additional terms, to the whole of the work, and all its parts,
|
|
||||||
regardless of how they are packaged. This License gives no
|
|
||||||
permission to license the work in any other way, but it does not
|
|
||||||
invalidate such permission if you have separately received it.
|
|
||||||
|
|
||||||
d) If the work has interactive user interfaces, each must display
|
|
||||||
Appropriate Legal Notices; however, if the Program has interactive
|
|
||||||
interfaces that do not display Appropriate Legal Notices, your
|
|
||||||
work need not make them do so.
|
|
||||||
|
|
||||||
A compilation of a covered work with other separate and independent
|
|
||||||
works, which are not by their nature extensions of the covered work,
|
|
||||||
and which are not combined with it such as to form a larger program,
|
|
||||||
in or on a volume of a storage or distribution medium, is called an
|
|
||||||
"aggregate" if the compilation and its resulting copyright are not
|
|
||||||
used to limit the access or legal rights of the compilation's users
|
|
||||||
beyond what the individual works permit. Inclusion of a covered work
|
|
||||||
in an aggregate does not cause this License to apply to the other
|
|
||||||
parts of the aggregate.
|
|
||||||
|
|
||||||
6. Conveying Non-Source Forms.
|
|
||||||
|
|
||||||
You may convey a covered work in object code form under the terms
|
|
||||||
of sections 4 and 5, provided that you also convey the
|
|
||||||
machine-readable Corresponding Source under the terms of this License,
|
|
||||||
in one of these ways:
|
|
||||||
|
|
||||||
a) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by the
|
|
||||||
Corresponding Source fixed on a durable physical medium
|
|
||||||
customarily used for software interchange.
|
|
||||||
|
|
||||||
b) Convey the object code in, or embodied in, a physical product
|
|
||||||
(including a physical distribution medium), accompanied by a
|
|
||||||
written offer, valid for at least three years and valid for as
|
|
||||||
long as you offer spare parts or customer support for that product
|
|
||||||
model, to give anyone who possesses the object code either (1) a
|
|
||||||
copy of the Corresponding Source for all the software in the
|
|
||||||
product that is covered by this License, on a durable physical
|
|
||||||
medium customarily used for software interchange, for a price no
|
|
||||||
more than your reasonable cost of physically performing this
|
|
||||||
conveying of source, or (2) access to copy the
|
|
||||||
Corresponding Source from a network server at no charge.
|
|
||||||
|
|
||||||
c) Convey individual copies of the object code with a copy of the
|
|
||||||
written offer to provide the Corresponding Source. This
|
|
||||||
alternative is allowed only occasionally and noncommercially, and
|
|
||||||
only if you received the object code with such an offer, in accord
|
|
||||||
with subsection 6b.
|
|
||||||
|
|
||||||
d) Convey the object code by offering access from a designated
|
|
||||||
place (gratis or for a charge), and offer equivalent access to the
|
|
||||||
Corresponding Source in the same way through the same place at no
|
|
||||||
further charge. You need not require recipients to copy the
|
|
||||||
Corresponding Source along with the object code. If the place to
|
|
||||||
copy the object code is a network server, the Corresponding Source
|
|
||||||
may be on a different server (operated by you or a third party)
|
|
||||||
that supports equivalent copying facilities, provided you maintain
|
|
||||||
clear directions next to the object code saying where to find the
|
|
||||||
Corresponding Source. Regardless of what server hosts the
|
|
||||||
Corresponding Source, you remain obligated to ensure that it is
|
|
||||||
available for as long as needed to satisfy these requirements.
|
|
||||||
|
|
||||||
e) Convey the object code using peer-to-peer transmission, provided
|
|
||||||
you inform other peers where the object code and Corresponding
|
|
||||||
Source of the work are being offered to the general public at no
|
|
||||||
charge under subsection 6d.
|
|
||||||
|
|
||||||
A separable portion of the object code, whose source code is excluded
|
|
||||||
from the Corresponding Source as a System Library, need not be
|
|
||||||
included in conveying the object code work.
|
|
||||||
|
|
||||||
A "User Product" is either (1) a "consumer product", which means any
|
|
||||||
tangible personal property which is normally used for personal, family,
|
|
||||||
or household purposes, or (2) anything designed or sold for incorporation
|
|
||||||
into a dwelling. In determining whether a product is a consumer product,
|
|
||||||
doubtful cases shall be resolved in favor of coverage. For a particular
|
|
||||||
product received by a particular user, "normally used" refers to a
|
|
||||||
typical or common use of that class of product, regardless of the status
|
|
||||||
of the particular user or of the way in which the particular user
|
|
||||||
actually uses, or expects or is expected to use, the product. A product
|
|
||||||
is a consumer product regardless of whether the product has substantial
|
|
||||||
commercial, industrial or non-consumer uses, unless such uses represent
|
|
||||||
the only significant mode of use of the product.
|
|
||||||
|
|
||||||
"Installation Information" for a User Product means any methods,
|
|
||||||
procedures, authorization keys, or other information required to install
|
|
||||||
and execute modified versions of a covered work in that User Product from
|
|
||||||
a modified version of its Corresponding Source. The information must
|
|
||||||
suffice to ensure that the continued functioning of the modified object
|
|
||||||
code is in no case prevented or interfered with solely because
|
|
||||||
modification has been made.
|
|
||||||
|
|
||||||
If you convey an object code work under this section in, or with, or
|
|
||||||
specifically for use in, a User Product, and the conveying occurs as
|
|
||||||
part of a transaction in which the right of possession and use of the
|
|
||||||
User Product is transferred to the recipient in perpetuity or for a
|
|
||||||
fixed term (regardless of how the transaction is characterized), the
|
|
||||||
Corresponding Source conveyed under this section must be accompanied
|
|
||||||
by the Installation Information. But this requirement does not apply
|
|
||||||
if neither you nor any third party retains the ability to install
|
|
||||||
modified object code on the User Product (for example, the work has
|
|
||||||
been installed in ROM).
|
|
||||||
|
|
||||||
The requirement to provide Installation Information does not include a
|
|
||||||
requirement to continue to provide support service, warranty, or updates
|
|
||||||
for a work that has been modified or installed by the recipient, or for
|
|
||||||
the User Product in which it has been modified or installed. Access to a
|
|
||||||
network may be denied when the modification itself materially and
|
|
||||||
adversely affects the operation of the network or violates the rules and
|
|
||||||
protocols for communication across the network.
|
|
||||||
|
|
||||||
Corresponding Source conveyed, and Installation Information provided,
|
|
||||||
in accord with this section must be in a format that is publicly
|
|
||||||
documented (and with an implementation available to the public in
|
|
||||||
source code form), and must require no special password or key for
|
|
||||||
unpacking, reading or copying.
|
|
||||||
|
|
||||||
7. Additional Terms.
|
|
||||||
|
|
||||||
"Additional permissions" are terms that supplement the terms of this
|
|
||||||
License by making exceptions from one or more of its conditions.
|
|
||||||
Additional permissions that are applicable to the entire Program shall
|
|
||||||
be treated as though they were included in this License, to the extent
|
|
||||||
that they are valid under applicable law. If additional permissions
|
|
||||||
apply only to part of the Program, that part may be used separately
|
|
||||||
under those permissions, but the entire Program remains governed by
|
|
||||||
this License without regard to the additional permissions.
|
|
||||||
|
|
||||||
When you convey a copy of a covered work, you may at your option
|
|
||||||
remove any additional permissions from that copy, or from any part of
|
|
||||||
it. (Additional permissions may be written to require their own
|
|
||||||
removal in certain cases when you modify the work.) You may place
|
|
||||||
additional permissions on material, added by you to a covered work,
|
|
||||||
for which you have or can give appropriate copyright permission.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, for material you
|
|
||||||
add to a covered work, you may (if authorized by the copyright holders of
|
|
||||||
that material) supplement the terms of this License with terms:
|
|
||||||
|
|
||||||
a) Disclaiming warranty or limiting liability differently from the
|
|
||||||
terms of sections 15 and 16 of this License; or
|
|
||||||
|
|
||||||
b) Requiring preservation of specified reasonable legal notices or
|
|
||||||
author attributions in that material or in the Appropriate Legal
|
|
||||||
Notices displayed by works containing it; or
|
|
||||||
|
|
||||||
c) Prohibiting misrepresentation of the origin of that material, or
|
|
||||||
requiring that modified versions of such material be marked in
|
|
||||||
reasonable ways as different from the original version; or
|
|
||||||
|
|
||||||
d) Limiting the use for publicity purposes of names of licensors or
|
|
||||||
authors of the material; or
|
|
||||||
|
|
||||||
e) Declining to grant rights under trademark law for use of some
|
|
||||||
trade names, trademarks, or service marks; or
|
|
||||||
|
|
||||||
f) Requiring indemnification of licensors and authors of that
|
|
||||||
material by anyone who conveys the material (or modified versions of
|
|
||||||
it) with contractual assumptions of liability to the recipient, for
|
|
||||||
any liability that these contractual assumptions directly impose on
|
|
||||||
those licensors and authors.
|
|
||||||
|
|
||||||
All other non-permissive additional terms are considered "further
|
|
||||||
restrictions" within the meaning of section 10. If the Program as you
|
|
||||||
received it, or any part of it, contains a notice stating that it is
|
|
||||||
governed by this License along with a term that is a further
|
|
||||||
restriction, you may remove that term. If a license document contains
|
|
||||||
a further restriction but permits relicensing or conveying under this
|
|
||||||
License, you may add to a covered work material governed by the terms
|
|
||||||
of that license document, provided that the further restriction does
|
|
||||||
not survive such relicensing or conveying.
|
|
||||||
|
|
||||||
If you add terms to a covered work in accord with this section, you
|
|
||||||
must place, in the relevant source files, a statement of the
|
|
||||||
additional terms that apply to those files, or a notice indicating
|
|
||||||
where to find the applicable terms.
|
|
||||||
|
|
||||||
Additional terms, permissive or non-permissive, may be stated in the
|
|
||||||
form of a separately written license, or stated as exceptions;
|
|
||||||
the above requirements apply either way.
|
|
||||||
|
|
||||||
8. Termination.
|
|
||||||
|
|
||||||
You may not propagate or modify a covered work except as expressly
|
|
||||||
provided under this License. Any attempt otherwise to propagate or
|
|
||||||
modify it is void, and will automatically terminate your rights under
|
|
||||||
this License (including any patent licenses granted under the third
|
|
||||||
paragraph of section 11).
|
|
||||||
|
|
||||||
However, if you cease all violation of this License, then your
|
|
||||||
license from a particular copyright holder is reinstated (a)
|
|
||||||
provisionally, unless and until the copyright holder explicitly and
|
|
||||||
finally terminates your license, and (b) permanently, if the copyright
|
|
||||||
holder fails to notify you of the violation by some reasonable means
|
|
||||||
prior to 60 days after the cessation.
|
|
||||||
|
|
||||||
Moreover, your license from a particular copyright holder is
|
|
||||||
reinstated permanently if the copyright holder notifies you of the
|
|
||||||
violation by some reasonable means, this is the first time you have
|
|
||||||
received notice of violation of this License (for any work) from that
|
|
||||||
copyright holder, and you cure the violation prior to 30 days after
|
|
||||||
your receipt of the notice.
|
|
||||||
|
|
||||||
Termination of your rights under this section does not terminate the
|
|
||||||
licenses of parties who have received copies or rights from you under
|
|
||||||
this License. If your rights have been terminated and not permanently
|
|
||||||
reinstated, you do not qualify to receive new licenses for the same
|
|
||||||
material under section 10.
|
|
||||||
|
|
||||||
9. Acceptance Not Required for Having Copies.
|
|
||||||
|
|
||||||
You are not required to accept this License in order to receive or
|
|
||||||
run a copy of the Program. Ancillary propagation of a covered work
|
|
||||||
occurring solely as a consequence of using peer-to-peer transmission
|
|
||||||
to receive a copy likewise does not require acceptance. However,
|
|
||||||
nothing other than this License grants you permission to propagate or
|
|
||||||
modify any covered work. These actions infringe copyright if you do
|
|
||||||
not accept this License. Therefore, by modifying or propagating a
|
|
||||||
covered work, you indicate your acceptance of this License to do so.
|
|
||||||
|
|
||||||
10. Automatic Licensing of Downstream Recipients.
|
|
||||||
|
|
||||||
Each time you convey a covered work, the recipient automatically
|
|
||||||
receives a license from the original licensors, to run, modify and
|
|
||||||
propagate that work, subject to this License. You are not responsible
|
|
||||||
for enforcing compliance by third parties with this License.
|
|
||||||
|
|
||||||
An "entity transaction" is a transaction transferring control of an
|
|
||||||
organization, or substantially all assets of one, or subdividing an
|
|
||||||
organization, or merging organizations. If propagation of a covered
|
|
||||||
work results from an entity transaction, each party to that
|
|
||||||
transaction who receives a copy of the work also receives whatever
|
|
||||||
licenses to the work the party's predecessor in interest had or could
|
|
||||||
give under the previous paragraph, plus a right to possession of the
|
|
||||||
Corresponding Source of the work from the predecessor in interest, if
|
|
||||||
the predecessor has it or can get it with reasonable efforts.
|
|
||||||
|
|
||||||
You may not impose any further restrictions on the exercise of the
|
|
||||||
rights granted or affirmed under this License. For example, you may
|
|
||||||
not impose a license fee, royalty, or other charge for exercise of
|
|
||||||
rights granted under this License, and you may not initiate litigation
|
|
||||||
(including a cross-claim or counterclaim in a lawsuit) alleging that
|
|
||||||
any patent claim is infringed by making, using, selling, offering for
|
|
||||||
sale, or importing the Program or any portion of it.
|
|
||||||
|
|
||||||
11. Patents.
|
|
||||||
|
|
||||||
A "contributor" is a copyright holder who authorizes use under this
|
|
||||||
License of the Program or a work on which the Program is based. The
|
|
||||||
work thus licensed is called the contributor's "contributor version".
|
|
||||||
|
|
||||||
A contributor's "essential patent claims" are all patent claims
|
|
||||||
owned or controlled by the contributor, whether already acquired or
|
|
||||||
hereafter acquired, that would be infringed by some manner, permitted
|
|
||||||
by this License, of making, using, or selling its contributor version,
|
|
||||||
but do not include claims that would be infringed only as a
|
|
||||||
consequence of further modification of the contributor version. For
|
|
||||||
purposes of this definition, "control" includes the right to grant
|
|
||||||
patent sublicenses in a manner consistent with the requirements of
|
|
||||||
this License.
|
|
||||||
|
|
||||||
Each contributor grants you a non-exclusive, worldwide, royalty-free
|
|
||||||
patent license under the contributor's essential patent claims, to
|
|
||||||
make, use, sell, offer for sale, import and otherwise run, modify and
|
|
||||||
propagate the contents of its contributor version.
|
|
||||||
|
|
||||||
In the following three paragraphs, a "patent license" is any express
|
|
||||||
agreement or commitment, however denominated, not to enforce a patent
|
|
||||||
(such as an express permission to practice a patent or covenant not to
|
|
||||||
sue for patent infringement). To "grant" such a patent license to a
|
|
||||||
party means to make such an agreement or commitment not to enforce a
|
|
||||||
patent against the party.
|
|
||||||
|
|
||||||
If you convey a covered work, knowingly relying on a patent license,
|
|
||||||
and the Corresponding Source of the work is not available for anyone
|
|
||||||
to copy, free of charge and under the terms of this License, through a
|
|
||||||
publicly available network server or other readily accessible means,
|
|
||||||
then you must either (1) cause the Corresponding Source to be so
|
|
||||||
available, or (2) arrange to deprive yourself of the benefit of the
|
|
||||||
patent license for this particular work, or (3) arrange, in a manner
|
|
||||||
consistent with the requirements of this License, to extend the patent
|
|
||||||
license to downstream recipients. "Knowingly relying" means you have
|
|
||||||
actual knowledge that, but for the patent license, your conveying the
|
|
||||||
covered work in a country, or your recipient's use of the covered work
|
|
||||||
in a country, would infringe one or more identifiable patents in that
|
|
||||||
country that you have reason to believe are valid.
|
|
||||||
|
|
||||||
If, pursuant to or in connection with a single transaction or
|
|
||||||
arrangement, you convey, or propagate by procuring conveyance of, a
|
|
||||||
covered work, and grant a patent license to some of the parties
|
|
||||||
receiving the covered work authorizing them to use, propagate, modify
|
|
||||||
or convey a specific copy of the covered work, then the patent license
|
|
||||||
you grant is automatically extended to all recipients of the covered
|
|
||||||
work and works based on it.
|
|
||||||
|
|
||||||
A patent license is "discriminatory" if it does not include within
|
|
||||||
the scope of its coverage, prohibits the exercise of, or is
|
|
||||||
conditioned on the non-exercise of one or more of the rights that are
|
|
||||||
specifically granted under this License. You may not convey a covered
|
|
||||||
work if you are a party to an arrangement with a third party that is
|
|
||||||
in the business of distributing software, under which you make payment
|
|
||||||
to the third party based on the extent of your activity of conveying
|
|
||||||
the work, and under which the third party grants, to any of the
|
|
||||||
parties who would receive the covered work from you, a discriminatory
|
|
||||||
patent license (a) in connection with copies of the covered work
|
|
||||||
conveyed by you (or copies made from those copies), or (b) primarily
|
|
||||||
for and in connection with specific products or compilations that
|
|
||||||
contain the covered work, unless you entered into that arrangement,
|
|
||||||
or that patent license was granted, prior to 28 March 2007.
|
|
||||||
|
|
||||||
Nothing in this License shall be construed as excluding or limiting
|
|
||||||
any implied license or other defenses to infringement that may
|
|
||||||
otherwise be available to you under applicable patent law.
|
|
||||||
|
|
||||||
12. No Surrender of Others' Freedom.
|
|
||||||
|
|
||||||
If conditions are imposed on you (whether by court order, agreement or
|
|
||||||
otherwise) that contradict the conditions of this License, they do not
|
|
||||||
excuse you from the conditions of this License. If you cannot convey a
|
|
||||||
covered work so as to satisfy simultaneously your obligations under this
|
|
||||||
License and any other pertinent obligations, then as a consequence you may
|
|
||||||
not convey it at all. For example, if you agree to terms that obligate you
|
|
||||||
to collect a royalty for further conveying from those to whom you convey
|
|
||||||
the Program, the only way you could satisfy both those terms and this
|
|
||||||
License would be to refrain entirely from conveying the Program.
|
|
||||||
|
|
||||||
13. Use with the GNU Affero General Public License.
|
|
||||||
|
|
||||||
Notwithstanding any other provision of this License, you have
|
|
||||||
permission to link or combine any covered work with a work licensed
|
|
||||||
under version 3 of the GNU Affero General Public License into a single
|
|
||||||
combined work, and to convey the resulting work. The terms of this
|
|
||||||
License will continue to apply to the part which is the covered work,
|
|
||||||
but the special requirements of the GNU Affero General Public License,
|
|
||||||
section 13, concerning interaction through a network will apply to the
|
|
||||||
combination as such.
|
|
||||||
|
|
||||||
14. Revised Versions of this License.
|
|
||||||
|
|
||||||
The Free Software Foundation may publish revised and/or new versions of
|
|
||||||
the GNU General Public License from time to time. Such new versions will
|
|
||||||
be similar in spirit to the present version, but may differ in detail to
|
|
||||||
address new problems or concerns.
|
|
||||||
|
|
||||||
Each version is given a distinguishing version number. If the
|
|
||||||
Program specifies that a certain numbered version of the GNU General
|
|
||||||
Public License "or any later version" applies to it, you have the
|
|
||||||
option of following the terms and conditions either of that numbered
|
|
||||||
version or of any later version published by the Free Software
|
|
||||||
Foundation. If the Program does not specify a version number of the
|
|
||||||
GNU General Public License, you may choose any version ever published
|
|
||||||
by the Free Software Foundation.
|
|
||||||
|
|
||||||
If the Program specifies that a proxy can decide which future
|
|
||||||
versions of the GNU General Public License can be used, that proxy's
|
|
||||||
public statement of acceptance of a version permanently authorizes you
|
|
||||||
to choose that version for the Program.
|
|
||||||
|
|
||||||
Later license versions may give you additional or different
|
|
||||||
permissions. However, no additional obligations are imposed on any
|
|
||||||
author or copyright holder as a result of your choosing to follow a
|
|
||||||
later version.
|
|
||||||
|
|
||||||
15. Disclaimer of Warranty.
|
|
||||||
|
|
||||||
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
|
|
||||||
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
|
|
||||||
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
|
|
||||||
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
|
|
||||||
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
|
|
||||||
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
|
|
||||||
|
|
||||||
16. Limitation of Liability.
|
|
||||||
|
|
||||||
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
|
||||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
|
|
||||||
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
|
|
||||||
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
|
|
||||||
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
|
|
||||||
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
|
|
||||||
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
|
|
||||||
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
|
|
||||||
SUCH DAMAGES.
|
|
||||||
|
|
||||||
17. Interpretation of Sections 15 and 16.
|
|
||||||
|
|
||||||
If the disclaimer of warranty and limitation of liability provided
|
|
||||||
above cannot be given local legal effect according to their terms,
|
|
||||||
reviewing courts shall apply local law that most closely approximates
|
|
||||||
an absolute waiver of all civil liability in connection with the
|
|
||||||
Program, unless a warranty or assumption of liability accompanies a
|
|
||||||
copy of the Program in return for a fee.
|
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
|
||||||
|
|
||||||
How to Apply These Terms to Your New Programs
|
|
||||||
|
|
||||||
If you develop a new program, and you want it to be of the greatest
|
|
||||||
possible use to the public, the best way to achieve this is to make it
|
|
||||||
free software which everyone can redistribute and change under these terms.
|
|
||||||
|
|
||||||
To do so, attach the following notices to the program. It is safest
|
|
||||||
to attach them to the start of each source file to most effectively
|
|
||||||
state the exclusion of warranty; and each file should have at least
|
|
||||||
the "copyright" line and a pointer to where the full notice is found.
|
|
||||||
|
|
||||||
<one line to give the program's name and a brief idea of what it does.>
|
|
||||||
Copyright (C) <year> <name of author>
|
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
|
||||||
it under the terms of the GNU General Public License as published by
|
|
||||||
the Free Software Foundation, either version 3 of the License, or
|
|
||||||
(at your option) any later version.
|
|
||||||
|
|
||||||
This program is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
GNU General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
Also add information on how to contact you by electronic and paper mail.
|
|
||||||
|
|
||||||
If the program does terminal interaction, make it output a short
|
|
||||||
notice like this when it starts in an interactive mode:
|
|
||||||
|
|
||||||
<program> Copyright (C) <year> <name of author>
|
|
||||||
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
||||||
This is free software, and you are welcome to redistribute it
|
|
||||||
under certain conditions; type `show c' for details.
|
|
||||||
|
|
||||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
|
||||||
parts of the General Public License. Of course, your program's commands
|
|
||||||
might be different; for a GUI interface, you would use an "about box".
|
|
||||||
|
|
||||||
You should also get your employer (if you work as a programmer) or school,
|
|
||||||
if any, to sign a "copyright disclaimer" for the program, if necessary.
|
|
||||||
For more information on this, and how to apply and follow the GNU GPL, see
|
|
||||||
<https://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
The GNU General Public License does not permit incorporating your program
|
|
||||||
into proprietary programs. If your program is a subroutine library, you
|
|
||||||
may consider it more useful to permit linking proprietary applications with
|
|
||||||
the library. If this is what you want to do, use the GNU Lesser General
|
|
||||||
Public License instead of this License. But first, please read
|
|
||||||
<https://www.gnu.org/licenses/why-not-lgpl.html>.
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
return { -- a table of overrides/changes to the duskfox theme
|
|
||||||
Normal = { bg = "#000000" },
|
|
||||||
}
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
return { -- this table overrides highlights in all themes
|
|
||||||
-- Normal = { bg = "#000000" },
|
|
||||||
}
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
return {
|
|
||||||
-- Configure AstroNvim updates
|
|
||||||
updater = {
|
|
||||||
remote = "origin", -- remote to use
|
|
||||||
channel = "stable", -- "stable" or "nightly"
|
|
||||||
version = "latest", -- "latest", tag name, or regex search like "v1.*" to only do updates before v2 (STABLE ONLY)
|
|
||||||
branch = "nightly", -- branch name (NIGHTLY ONLY)
|
|
||||||
commit = nil, -- commit hash (NIGHTLY ONLY)
|
|
||||||
pin_plugins = nil, -- nil, true, false (nil will pin plugins on stable only)
|
|
||||||
skip_prompts = false, -- skip prompts about breaking changes
|
|
||||||
show_changelog = true, -- show the changelog after performing an update
|
|
||||||
auto_quit = true, -- automatically quit the current session after a successful update
|
|
||||||
remotes = { -- easily add new remotes to track
|
|
||||||
-- ["remote_name"] = "https://remote_url.come/repo.git", -- full remote url
|
|
||||||
-- ["remote2"] = "github_user/repo", -- GitHub user/repo shortcut,
|
|
||||||
-- ["remote3"] = "github_user", -- GitHub user assume AstroNvim fork
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- Set colorscheme to use
|
|
||||||
colorscheme = "catppuccin", -- or astrondark
|
|
||||||
-- Diagnostics configuration (for vim.diagnostics.config({...}))
|
|
||||||
-- when diagnostics are on
|
|
||||||
diagnostics = {
|
|
||||||
virtual_text = false,
|
|
||||||
underline = true,
|
|
||||||
},
|
|
||||||
lsp = {
|
|
||||||
-- customize lsp formatting options
|
|
||||||
formatting = {
|
|
||||||
-- control auto formatting on save
|
|
||||||
format_on_save = {
|
|
||||||
-- enable or disable format on save globally
|
|
||||||
enabled = true,
|
|
||||||
-- enable format on save for specified filetypes only
|
|
||||||
allow_filetypes = {
|
|
||||||
-- "go",
|
|
||||||
},
|
|
||||||
-- disable format on save for specified filetypes
|
|
||||||
ignore_filetypes = {
|
|
||||||
-- "python",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- disable formatting capabilities for the listed language servers
|
|
||||||
disabled = {
|
|
||||||
-- "sumneko_lua",
|
|
||||||
},
|
|
||||||
-- default format timeout
|
|
||||||
timeout_ms = 1000,
|
|
||||||
-- -- fully override the default formatting function
|
|
||||||
-- filter = function(client) -- fully override the default formatting function
|
|
||||||
-- return true
|
|
||||||
-- end
|
|
||||||
},
|
|
||||||
-- enable servers that you already have installed without mason
|
|
||||||
servers = {
|
|
||||||
-- "pyright"
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- Configure require("lazy").setup() options
|
|
||||||
lazy = {
|
|
||||||
defaults = { lazy = true },
|
|
||||||
performance = {
|
|
||||||
rtp = {
|
|
||||||
-- customize default disabled vim plugins
|
|
||||||
disabled_plugins = {
|
|
||||||
"tohtml",
|
|
||||||
"gzip",
|
|
||||||
"matchit",
|
|
||||||
"zipPlugin",
|
|
||||||
"netrwPlugin",
|
|
||||||
"tarPlugin",
|
|
||||||
"matchparen",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
-- This function is run last and is a good place to configuring
|
|
||||||
-- augroups/autocommands and custom filetypes also this just pure lua so
|
|
||||||
-- anything that doesn't fit in the normal config locations above can go here
|
|
||||||
polish = function()
|
|
||||||
-- Set up custom filetypes
|
|
||||||
-- vim.filetype.add {
|
|
||||||
-- extension = {
|
|
||||||
-- foo = "fooscript",
|
|
||||||
-- },
|
|
||||||
-- filename = {
|
|
||||||
-- ["Foofile"] = "fooscript",
|
|
||||||
-- },
|
|
||||||
-- pattern = {
|
|
||||||
-- ["~/%.config/foo/.*"] = "fooscript",
|
|
||||||
-- },
|
|
||||||
-- }
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
-- Mapping data with "desc" stored directly by vim.keymap.set().
|
|
||||||
--
|
|
||||||
-- Please use this mappings table to set keyboard mapping since this is the
|
|
||||||
-- lower level configuration and more robust one. (which-key will
|
|
||||||
-- automatically pick-up stored data by this setting.)
|
|
||||||
return {
|
|
||||||
-- first key is the mode
|
|
||||||
n = {
|
|
||||||
-- second key is the lefthand side of the map
|
|
||||||
-- mappings seen under group name "Buffer"
|
|
||||||
["<leader>bn"] = { "<cmd>tabnew<cr>", desc = "New tab" },
|
|
||||||
["<leader>bD"] = {
|
|
||||||
function()
|
|
||||||
require("astronvim.utils.status").heirline.buffer_picker(
|
|
||||||
function(bufnr) require("astronvim.utils.buffer").close(bufnr) end
|
|
||||||
)
|
|
||||||
end,
|
|
||||||
desc = "Pick to close",
|
|
||||||
},
|
|
||||||
-- tables with the `name` key will be registered with which-key if it's installed
|
|
||||||
-- this is useful for naming menus
|
|
||||||
["<leader>b"] = { name = "Buffers" },
|
|
||||||
-- quick save
|
|
||||||
-- ["<C-s>"] = { ":w!<cr>", desc = "Save File" }, -- change description but the same command
|
|
||||||
},
|
|
||||||
t = {
|
|
||||||
-- setting a mapping to false will disable it
|
|
||||||
-- ["<esc>"] = false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,38 +0,0 @@
|
|||||||
-- set vim options here (vim.<first_key>.<second_key> = value)
|
|
||||||
return {
|
|
||||||
opt = {
|
|
||||||
-- set to true or false etc.
|
|
||||||
relativenumber = true, -- sets vim.opt.relativenumber
|
|
||||||
number = true, -- sets vim.opt.number
|
|
||||||
spell = false, -- sets vim.opt.spell
|
|
||||||
signcolumn = "auto", -- sets vim.opt.signcolumn to auto
|
|
||||||
wrap = true, -- sets vim.opt.wrap
|
|
||||||
},
|
|
||||||
g = {
|
|
||||||
-- sets vim.g.mapleader
|
|
||||||
mapleader = " ",
|
|
||||||
-- enable or disable auto formatting at start (lsp.formatting.format_on_save must be enabled)
|
|
||||||
autoformat_enabled = true,
|
|
||||||
-- enable completion at start
|
|
||||||
cmp_enabled = true,
|
|
||||||
-- enable autopairs at start
|
|
||||||
autopairs_enabled = true,
|
|
||||||
-- set the visibility of diagnostics in the UI
|
|
||||||
-- (0=off, 1=only show in status line, 2=virtual text off, 3=all on)
|
|
||||||
diagnostics_mode = 3,
|
|
||||||
-- disable icons in the UI (disable if no nerd font is available,
|
|
||||||
-- requires :PackerSync after changing)
|
|
||||||
icons_enabled = true,
|
|
||||||
-- disable notifications when toggling UI elements
|
|
||||||
ui_notifications_enabled = true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
-- If you need more control, you can use the function()...end notation
|
|
||||||
-- return function(local_vim)
|
|
||||||
-- local_vim.opt.relativenumber = true
|
|
||||||
-- local_vim.g.mapleader = " "
|
|
||||||
-- local_vim.opt.whichwrap = vim.opt.whichwrap - { 'b', 's' } -- removing option from list
|
|
||||||
-- local_vim.opt.shortmess = vim.opt.shortmess + { I = true } -- add to option list
|
|
||||||
--
|
|
||||||
-- return local_vim
|
|
||||||
-- end
|
|
||||||
@@ -1,49 +0,0 @@
|
|||||||
return { -- Add the community repository of plugin specifications
|
|
||||||
"AstroNvim/astrocommunity", -- example of imporing a plugin, comment out to use it or add your own
|
|
||||||
-- available plugins can be found at
|
|
||||||
-- https://github.com/AstroNvim/astrocommunity
|
|
||||||
{
|
|
||||||
import = "astrocommunity.colorscheme.catppuccin",
|
|
||||||
opts = {
|
|
||||||
flavour = "mocha",
|
|
||||||
transparent_background = true,
|
|
||||||
dim_inactive = {
|
|
||||||
enabled = true,
|
|
||||||
shade = "dark",
|
|
||||||
percentage = 0.15,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
},
|
|
||||||
-- { import = "astrocommunity.completion.copilot-lua-cmp" },
|
|
||||||
{ import = "astrocommunity.bars-and-lines.smartcolumn-nvim" },
|
|
||||||
{
|
|
||||||
"m4xshen/smartcolumn.nvim",
|
|
||||||
opts = {
|
|
||||||
colorcolumn = { "80", "100", "120" },
|
|
||||||
disabled_filetypes = { "help", "text", "markdown", "json" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{ import = "astrocommunity.diagnostics.trouble-nvim" },
|
|
||||||
{
|
|
||||||
"folke/trouble.nvim",
|
|
||||||
opts = {
|
|
||||||
auto_open = false,
|
|
||||||
position = "right"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{ import = "astrocommunity.editing-support.refactoring-nvim" },
|
|
||||||
{ import = "astrocommunity.editing-support.neogen" },
|
|
||||||
{ import = "astrocommunity.editing-support.nvim-regexplainer" },
|
|
||||||
{ import = "astrocommunity.editing-support.todo-comments-nvim" },
|
|
||||||
{ import = "astrocommunity.indent.mini-indentscope" },
|
|
||||||
{ import = "astrocommunity.markdown-and-latex.glow-nvim" },
|
|
||||||
{ import = "astrocommunity.motion.harpoon" },
|
|
||||||
{ import = "astrocommunity.pack.php" },
|
|
||||||
{ import = "astrocommunity.project.neoconf-nvim" },
|
|
||||||
{ import = "astrocommunity.project.nvim-spectre" },
|
|
||||||
{ import = "astrocommunity.project.project-nvim" },
|
|
||||||
{ import = "astrocommunity.test.neotest" },
|
|
||||||
{ import = "astrocommunity.utility.neodim" },
|
|
||||||
{ import = "astrocommunity.utility.transparent-nvim" },
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -1,107 +0,0 @@
|
|||||||
return {
|
|
||||||
-- 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)
|
|
||||||
-- include the default astronvim config that calls the setup call
|
|
||||||
require "plugins.configs.luasnip" (plugin, opts)
|
|
||||||
-- add more custom luasnip configuration such
|
|
||||||
-- as filetype extend or custom snippets
|
|
||||||
local luasnip = require "luasnip"
|
|
||||||
luasnip.filetype_extend("javascript", { "javascriptreact" })
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"nvim-neo-tree/neo-tree.nvim",
|
|
||||||
opts = function(_, opts)
|
|
||||||
require "plugins.neo-tree"
|
|
||||||
opts.filesystem.filtered_items = {
|
|
||||||
visible = false,
|
|
||||||
show_hidden_count = true,
|
|
||||||
hide_dotfiles = false,
|
|
||||||
hide_gitignored = true,
|
|
||||||
hide_by_name = {
|
|
||||||
},
|
|
||||||
never_show = {
|
|
||||||
'.git',
|
|
||||||
'.DS_Store',
|
|
||||||
'thumbs.db'
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
return opts
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
-- {
|
|
||||||
-- "windwp/nvim-autopairs",
|
|
||||||
-- config = function(plugin, opts)
|
|
||||||
-- -- include the default astronvim config that calls the setup call
|
|
||||||
-- require "plugins.configs.nvim-autopairs"(plugin, opts)
|
|
||||||
-- -- 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 <cr>
|
|
||||||
-- :with_cr(cond.none()),
|
|
||||||
-- },
|
|
||||||
-- -- disable for .vim files, but it work for another filetypes
|
|
||||||
-- Rule("a", "a", "-vim")
|
|
||||||
-- )
|
|
||||||
-- end,
|
|
||||||
-- },
|
|
||||||
-- By adding to the which-key config and using our helper
|
|
||||||
-- function you can add more which-key registered bindings
|
|
||||||
{
|
|
||||||
"folke/which-key.nvim",
|
|
||||||
config = function(plugin, opts)
|
|
||||||
-- include the default astronvim config that calls the setup call
|
|
||||||
require "plugins.configs.which-key" (plugin, opts)
|
|
||||||
-- Add bindings which show up as group name
|
|
||||||
local wk = require "which-key"
|
|
||||||
wk.register({
|
|
||||||
b = { name = "Buffer" },
|
|
||||||
}, { mode = "n", prefix = "<leader>" })
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
-- customize mason plugins
|
|
||||||
return { -- use mason-lspconfig to configure LSP installations
|
|
||||||
{
|
|
||||||
"williamboman/mason-lspconfig.nvim",
|
|
||||||
-- overrides `require("mason-lspconfig").setup(...)`
|
|
||||||
opts = {
|
|
||||||
ensure_installed = {
|
|
||||||
"diagnosticls",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}, -- use mason-null-ls to configure Formatters/Linter installation for null-ls sources
|
|
||||||
{
|
|
||||||
"jay-babu/mason-null-ls.nvim",
|
|
||||||
-- overrides `require("mason-null-ls").setup(...)`
|
|
||||||
opts = {
|
|
||||||
automatic_setup = true,
|
|
||||||
automatic_installation = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"jay-babu/mason-nvim-dap.nvim",
|
|
||||||
-- overrides `require("mason-nvim-dap").setup(...)`
|
|
||||||
opts = {
|
|
||||||
automatic_installation = true,
|
|
||||||
automatic_setup = true,
|
|
||||||
ensure_installed = { "python", "php", "js", "bash" },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
return {
|
|
||||||
"jose-elias-alvarez/null-ls.nvim",
|
|
||||||
opts = function(_, config)
|
|
||||||
-- config variable is the default configuration table for the setup function call
|
|
||||||
local null_ls = require "null-ls"
|
|
||||||
|
|
||||||
-- Check supported formatters and linters
|
|
||||||
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
|
|
||||||
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
|
|
||||||
config.sources = {
|
|
||||||
-- Set a formatter
|
|
||||||
null_ls.builtins.code_actions.eslint,
|
|
||||||
null_ls.builtins.code_actions.refactoring,
|
|
||||||
null_ls.builtins.code_actions.shellcheck,
|
|
||||||
null_ls.builtins.diagnostics.actionlint,
|
|
||||||
null_ls.builtins.diagnostics.alex,
|
|
||||||
null_ls.builtins.diagnostics.ansiblelint,
|
|
||||||
null_ls.builtins.diagnostics.dotenv_linter,
|
|
||||||
null_ls.builtins.diagnostics.editorconfig_checker,
|
|
||||||
null_ls.builtins.diagnostics.eslint,
|
|
||||||
null_ls.builtins.diagnostics.jsonlint,
|
|
||||||
null_ls.builtins.diagnostics.luacheck,
|
|
||||||
null_ls.builtins.diagnostics.php,
|
|
||||||
null_ls.builtins.diagnostics.phpcs,
|
|
||||||
null_ls.builtins.diagnostics.phpstan,
|
|
||||||
null_ls.builtins.diagnostics.psalm,
|
|
||||||
null_ls.builtins.diagnostics.semgrep,
|
|
||||||
null_ls.builtins.diagnostics.shellcheck,
|
|
||||||
null_ls.builtins.diagnostics.stylelint,
|
|
||||||
null_ls.builtins.diagnostics.tfsec,
|
|
||||||
null_ls.builtins.diagnostics.trail_space,
|
|
||||||
null_ls.builtins.diagnostics.tsc,
|
|
||||||
null_ls.builtins.diagnostics.vacuum,
|
|
||||||
null_ls.builtins.diagnostics.vint,
|
|
||||||
null_ls.builtins.diagnostics.vulture,
|
|
||||||
null_ls.builtins.diagnostics.yamllint,
|
|
||||||
null_ls.builtins.diagnostics.zsh,
|
|
||||||
null_ls.builtins.formatting.blade_formatter,
|
|
||||||
null_ls.builtins.formatting.clang_format,
|
|
||||||
null_ls.builtins.formatting.eslint,
|
|
||||||
null_ls.builtins.formatting.fixjson,
|
|
||||||
null_ls.builtins.formatting.isort,
|
|
||||||
null_ls.builtins.formatting.jq,
|
|
||||||
null_ls.builtins.formatting.phpcsfixer,
|
|
||||||
null_ls.builtins.formatting.shfmt.with {
|
|
||||||
args = { "-i", "1", "-bn", "-ci", "-sr", "-kb", "-fn" },
|
|
||||||
},
|
|
||||||
null_ls.builtins.formatting.stylelint,
|
|
||||||
}
|
|
||||||
return config -- return final config table
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
@@ -1,33 +0,0 @@
|
|||||||
return {
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
opts = {
|
|
||||||
ensure_installed = {
|
|
||||||
"bash",
|
|
||||||
"c",
|
|
||||||
"cmake",
|
|
||||||
"comment",
|
|
||||||
"diff",
|
|
||||||
"dockerfile",
|
|
||||||
"gitignore",
|
|
||||||
"graphql",
|
|
||||||
"html",
|
|
||||||
"javascript",
|
|
||||||
"json",
|
|
||||||
"json5",
|
|
||||||
"latex",
|
|
||||||
"lua",
|
|
||||||
"markdown",
|
|
||||||
"php",
|
|
||||||
"phpdoc",
|
|
||||||
"python",
|
|
||||||
"scss",
|
|
||||||
"terraform",
|
|
||||||
"todotxt",
|
|
||||||
"toml",
|
|
||||||
"typescript",
|
|
||||||
"vim",
|
|
||||||
"vue",
|
|
||||||
"yaml",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
return {
|
|
||||||
-- You can also add new plugins here as well:
|
|
||||||
-- Add plugins, the lazy syntax
|
|
||||||
"andweeb/presence.nvim",
|
|
||||||
{
|
|
||||||
"ray-x/lsp_signature.nvim",
|
|
||||||
event = "BufRead",
|
|
||||||
config = function() require("lsp_signature").setup() end,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"wakatime/vim-wakatime",
|
|
||||||
lazy = false,
|
|
||||||
enabled = true,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@@ -1,24 +1,19 @@
|
|||||||
---
|
|
||||||
# The editor to use with 'cheat -e <sheet>'. Defaults to $EDITOR or $VISUAL.
|
# The editor to use with 'cheat -e <sheet>'. Defaults to $EDITOR or $VISUAL.
|
||||||
# editor: $EDITOR
|
# editor: $EDITOR
|
||||||
|
|
||||||
# Should 'cheat' always colorize output?
|
# Should 'cheat' always colorize output?
|
||||||
colorize: true
|
colorize: true
|
||||||
|
|
||||||
# Which 'chroma' colorscheme should be applied to the output?
|
# Which 'chroma' colorscheme should be applied to the output?
|
||||||
# Options are available here:
|
# Options are available here:
|
||||||
# https://github.com/alecthomas/chroma/tree/master/styles
|
# https://github.com/alecthomas/chroma/tree/master/styles
|
||||||
style: "catppuccin"
|
style: "catppuccin"
|
||||||
|
|
||||||
# Which 'chroma' "formatter" should be applied?
|
# Which 'chroma' "formatter" should be applied?
|
||||||
# One of: "terminal", "terminal256", "terminal16m"
|
# One of: "terminal", "terminal256", "terminal16m"
|
||||||
formatter: terminal256
|
formatter: terminal256
|
||||||
|
|
||||||
# Through which pager should output be piped?
|
# Through which pager should output be piped?
|
||||||
# 'less -FRX' is recommended on Unix systems
|
# 'less -FRX' is recommended on Unix systems
|
||||||
# 'more' is recommended on Windows
|
# 'more' is recommended on Windows
|
||||||
pager: less -FRX
|
pager: less -FRX
|
||||||
|
|
||||||
# Cheatpaths are paths at which cheatsheets are available on your local
|
# Cheatpaths are paths at which cheatsheets are available on your local
|
||||||
# filesystem.
|
# filesystem.
|
||||||
#
|
#
|
||||||
@@ -63,21 +58,21 @@ cheatpaths:
|
|||||||
# 'readonly': shall user-created ('cheat -e') cheatsheets be saved here?
|
# 'readonly': shall user-created ('cheat -e') cheatsheets be saved here?
|
||||||
- name: community
|
- name: community
|
||||||
path: ~/.config/cheat/cheatsheets/community
|
path: ~/.config/cheat/cheatsheets/community
|
||||||
tags: [ community ]
|
tags: [community]
|
||||||
readonly: true
|
readonly: true
|
||||||
# If you have personalized cheatsheets, list them last. They will take
|
# If you have personalized cheatsheets, list them last. They will take
|
||||||
# precedence over the more global cheatsheets.
|
# precedence over the more global cheatsheets.
|
||||||
- name: personal
|
- name: personal
|
||||||
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
path: ~/.dotfiles/config/cheat/cheatsheets/personal
|
||||||
tags: [ personal ]
|
tags: [personal]
|
||||||
readonly: false
|
readonly: false
|
||||||
- name: pure-bash-bible
|
- name: pure-bash-bible
|
||||||
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
|
path: ~/.dotfiles/config/cheat/cheatsheets/pure-bash-bible
|
||||||
tags: [ pure-bash-bible ]
|
tags: [pure-bash-bible]
|
||||||
readonly: true
|
readonly: true
|
||||||
- name: tldr
|
- name: tldr
|
||||||
path: ~/.dotfiles/config/cheat/cheatsheets/tldr
|
path: ~/.dotfiles/config/cheat/cheatsheets/tldr
|
||||||
tags: [ tldr ]
|
tags: [tldr]
|
||||||
readonly: true
|
readonly: true
|
||||||
|
|
||||||
# While it requires no configuration here, it's also worth noting that
|
# While it requires no configuration here, it's also worth noting that
|
||||||
|
|||||||
@@ -17,24 +17,15 @@ export XDG_BIN_HOME="$HOME/.local/bin"
|
|||||||
export XDG_CACHE_HOME="$HOME/.cache"
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
export XDG_RUNTIME_DIR="$HOME/.local/run"
|
||||||
|
|
||||||
# Homebrew configuration
|
path_append "/opt/homebrew/bin"
|
||||||
export HOMEBREW="/opt/homebrew"
|
have brew && eval "$(brew shellenv)"
|
||||||
export HOMEBREW_BIN="$HOMEBREW/bin"
|
|
||||||
export HOMEBREW_SBIN="$HOMEBREW/sbin"
|
|
||||||
export HOMEBREW_PKG="$HOMEBREW/opt"
|
|
||||||
export HOMEBREW_NO_ENV_HINTS=1
|
|
||||||
|
|
||||||
path_append "/usr/local/bin"
|
path_append "/usr/local/bin"
|
||||||
path_prepend "$HOMEBREW_SBIN"
|
path_append "$XDG_BIN_HOME"
|
||||||
path_prepend "$HOMEBREW_BIN"
|
|
||||||
path_prepend "$XDG_BIN_HOME"
|
|
||||||
|
|
||||||
# brew, https://brew.sh
|
# brew, https://brew.sh
|
||||||
have brew && {
|
have brew && {
|
||||||
path_append "$(brew --prefix python)/bin"
|
have_brew python && path_append "$(brew --prefix python)/bin"
|
||||||
path_append "$(brew --prefix coreutils)/libexec/gnubin"
|
|
||||||
path_append "$(brew --prefix ruby)/bin"
|
|
||||||
path_append "$(gem environment gemdir)/bin"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
source "$DOTFILES/config/exports-shell"
|
source "$DOTFILES/config/exports-shell"
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
# shellcheck enable=external-sources
|
# shellcheck enable=external-sources
|
||||||
# shellcheck disable=1091
|
# shellcheck disable=1091,2139
|
||||||
# vim: filetype=zsh
|
# vim: filetype=zsh
|
||||||
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
source "$DOTFILES/scripts/shared.sh"
|
||||||
|
|
||||||
# Antigen configuration
|
# Antigen configuration
|
||||||
@@ -13,34 +14,34 @@ export ANTIGEN_PLUGIN_RECEIPT_F=".local/share/antigen/antigen_plugin_lastupdate"
|
|||||||
|
|
||||||
# Ansible configuration
|
# Ansible configuration
|
||||||
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
# https://docs.ansible.com/ansible/latest/reference_appendices/config.html
|
||||||
|
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
|
||||||
|
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
|
||||||
|
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
|
||||||
have ansible && {
|
have ansible && {
|
||||||
export ANSIBLE_HOME="$XDG_CONFIG_HOME/ansible"
|
|
||||||
export ANSIBLE_CONFIG="$XDG_CONFIG_HOME/ansible.cfg"
|
|
||||||
export ANSIBLE_GALAXY_CACHE_DIR="$XDG_CACHE_HOME/ansible/galaxy_cache"
|
|
||||||
x-dc "$ANSIBLE_HOME"
|
x-dc "$ANSIBLE_HOME"
|
||||||
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
x-dc "$ANSIBLE_GALAXY_CACHE_DIR"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export ANDROID_HOME="$XDG_DATA_HOME/android"
|
||||||
|
|
||||||
# composer, https://getcomposer.org/
|
# composer, https://getcomposer.org/
|
||||||
|
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
|
||||||
|
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
|
||||||
have composer && {
|
have composer && {
|
||||||
export COMPOSER_HOME="$XDG_STATE_HOME/composer"
|
|
||||||
export COMPOSER_BIN="$COMPOSER_HOME/vendor/bin"
|
|
||||||
export PATH="$COMPOSER_BIN:$PATH"
|
export PATH="$COMPOSER_BIN:$PATH"
|
||||||
}
|
}
|
||||||
|
|
||||||
# docker, https://docs.docker.com/engine/reference/commandline/cli/
|
# docker, https://docs.docker.com/engine/reference/commandline/cli/
|
||||||
|
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
|
||||||
have docker && {
|
have docker && {
|
||||||
export DOCKER_CONFIG="$XDG_CONFIG_HOME/docker"
|
|
||||||
x-dc "$DOCKER_CONFIG"
|
x-dc "$DOCKER_CONFIG"
|
||||||
# Docker: Disable snyk ad
|
# Docker: Disable snyk ad
|
||||||
export DOCKER_SCAN_SUGGEST=false
|
export DOCKER_SCAN_SUGGEST=false
|
||||||
}
|
}
|
||||||
|
|
||||||
# ffmpeg
|
# ffmpeg
|
||||||
have ffmpeg && {
|
export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg"
|
||||||
export FFMPEG_DATADIR="$XDG_CONFIG_HOME/ffmpeg"
|
have ffmpeg && x-dc "$FFMPEG_DATADIR"
|
||||||
x-dc "$FFMPEG_DATADIR"
|
|
||||||
}
|
|
||||||
|
|
||||||
# gcloud
|
# gcloud
|
||||||
have gcloud && {
|
have gcloud && {
|
||||||
@@ -49,20 +50,12 @@ have gcloud && {
|
|||||||
[[ -f "$GCLOUD_LOC/completion.zsh.inc" ]] && builtin source "$GCLOUD_LOC/completion.zsh.inc"
|
[[ -f "$GCLOUD_LOC/completion.zsh.inc" ]] && builtin source "$GCLOUD_LOC/completion.zsh.inc"
|
||||||
}
|
}
|
||||||
|
|
||||||
# gem, rubygems
|
# GnuPG
|
||||||
have gem && {
|
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||||
export GEM_HOME="$XDG_STATE_HOME/gem"
|
|
||||||
export GEM_PATH="$XDG_STATE_HOME/gem"
|
|
||||||
export PATH="$GEM_HOME/bin:$PATH"
|
|
||||||
path_append "$GEM_PATH/bin"
|
|
||||||
}
|
|
||||||
|
|
||||||
# If we have go packages, include them to the PATH
|
# Go
|
||||||
have go && {
|
export GOPATH="$XDG_DATA_HOME/go"
|
||||||
export GOPATH="$XDG_DATA_HOME/go"
|
export GOBIN="$XDG_BIN_HOME"
|
||||||
export GOBIN="$XDG_BIN_HOME"
|
|
||||||
x-dc "$GOPATH"
|
|
||||||
}
|
|
||||||
|
|
||||||
# irssi
|
# irssi
|
||||||
have irssi && {
|
have irssi && {
|
||||||
@@ -73,10 +66,8 @@ have irssi && {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# nb, https://xwmx.github.io/nb/
|
# nb, https://xwmx.github.io/nb/
|
||||||
have nb && {
|
export NBRC_PATH="$XDG_CONFIG_HOME/nbrc"
|
||||||
export NB_DIR="$XDG_STATE_HOME/nb"
|
export NB_DIR="$XDG_STATE_HOME/nb"
|
||||||
x-dc "$NB_DIR"
|
|
||||||
}
|
|
||||||
|
|
||||||
# nvm, the node version manager
|
# nvm, the node version manager
|
||||||
export NVM_LAZY_LOAD=true
|
export NVM_LAZY_LOAD=true
|
||||||
@@ -86,6 +77,8 @@ export NVM_DIR="$XDG_CONFIG_HOME/nvm"
|
|||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|
||||||
|
export NPM_CONFIG_USERCONFIG="$XDG_CONFIG_HOME"/npm/npmrc
|
||||||
|
|
||||||
# Add npm packages to path
|
# Add npm packages to path
|
||||||
have node && {
|
have node && {
|
||||||
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
|
NVM_NODE_BIN_DIR="$(dirname "$(which node)")"
|
||||||
@@ -93,22 +86,52 @@ have node && {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# op (1Password cli) is present
|
# op (1Password cli) is present
|
||||||
|
export OP_CACHE="$XDG_STATE_HOME/1password"
|
||||||
have op && {
|
have op && {
|
||||||
export OP_CACHE="$XDG_STATE_HOME/1password"
|
|
||||||
x-dc "$OP_CACHE"
|
|
||||||
eval "$(op completion zsh)"
|
eval "$(op completion zsh)"
|
||||||
compdef _op op
|
compdef _op op
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Python
|
||||||
|
#
|
||||||
# pyenv, python environments
|
# pyenv, python environments
|
||||||
|
export WORKON_HOME="$XDG_DATA_HOME/virtualenvs"
|
||||||
|
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
|
||||||
have pyenv && {
|
have pyenv && {
|
||||||
export PYENV_ROOT="$XDG_STATE_HOME/pyenv"
|
path_append "$(pyenv root)/shims"
|
||||||
x-dc "$PYENV_ROOT"
|
|
||||||
path_append "$PYENV_ROOT/bin"
|
path_append "$PYENV_ROOT/bin"
|
||||||
|
|
||||||
eval "$(pyenv init -)"
|
eval "$(pyenv init -)"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Ruby
|
||||||
|
#
|
||||||
|
# including: bundler, rbenv
|
||||||
|
export GEM_HOME="${XDG_DATA_HOME}"/gem
|
||||||
|
export GEM_SPEC_CACHE="${XDG_CACHE_HOME}"/gem
|
||||||
|
export BUNDLE_USER_CONFIG="$XDG_CONFIG_HOME"/bundle
|
||||||
|
export BUNDLE_USER_CACHE="$XDG_CACHE_HOME"/bundle
|
||||||
|
export BUNDLE_USER_PLUGIN="$XDG_DATA_HOME"/bundle
|
||||||
|
export RBENV_ROOT="$XDG_STATE_HOME/rbenv"
|
||||||
|
x-dc "$RBENV_ROOT"
|
||||||
|
have gem && path_append "$(gem environment gemdir)/bin"
|
||||||
|
have rbenv && eval "$(rbenv init - zsh)"
|
||||||
|
|
||||||
|
# Rust / cargo
|
||||||
|
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||||
|
path_append "$CARGO_HOME/bin"
|
||||||
|
|
||||||
|
# screen
|
||||||
|
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
|
||||||
|
|
||||||
|
# sonarlint
|
||||||
|
export SONARLINT_USER_HOME="$XDG_DATA_HOME/sonarlint"
|
||||||
|
|
||||||
|
# tldr / tealdeer
|
||||||
|
export TEALDEER_CONFIG_DIR="$XDG_CONFIG_HOME/tealdeer/"
|
||||||
|
|
||||||
|
# tmux
|
||||||
|
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
||||||
|
|
||||||
# wakatime, https://github.com/wakatime/wakatime-cli
|
# wakatime, https://github.com/wakatime/wakatime-cli
|
||||||
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
|
export WAKATIME_HOME="$XDG_STATE_HOME/wakatime"
|
||||||
x-dc "$WAKATIME_HOME"
|
x-dc "$WAKATIME_HOME"
|
||||||
@@ -118,9 +141,6 @@ export _Z_DATA="$XDG_STATE_HOME/z"
|
|||||||
[[ -f "$XDG_BIN_HOME/z/z.sh" ]] && source "$XDG_BIN_HOME/z/z.sh"
|
[[ -f "$XDG_BIN_HOME/z/z.sh" ]] && source "$XDG_BIN_HOME/z/z.sh"
|
||||||
|
|
||||||
# Misc
|
# Misc
|
||||||
export ANDROID_HOME="$XDG_DATA_HOME/android"
|
|
||||||
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
|
||||||
export SCREENRC="$XDG_CONFIG_HOME/misc/screenrc"
|
|
||||||
export TMUX_CONF="$XDG_CONFIG_HOME/tmux/tmux.conf"
|
|
||||||
export BAT_THEME="ansi"
|
export BAT_THEME="ansi"
|
||||||
export CHEAT_USE_FZF=true
|
export CHEAT_USE_FZF=true
|
||||||
|
export SQLITE_HISTORY="$XDG_CACHE_HOME"/sqlite_history
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
# shellcheck shell=bash
|
# shellcheck shell=bash
|
||||||
# shellcheck disable=1091,2046
|
# shellcheck disable=1091,2046
|
||||||
# vim: filetype=zsh
|
# vim: filetype=zsh
|
||||||
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
source "$DOTFILES/scripts/shared.sh"
|
||||||
|
|
||||||
export LC_ALL=fi_FI.UTF-8
|
export LC_ALL=fi_FI.UTF-8
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
# shell functions
|
# shell functions
|
||||||
#
|
#
|
||||||
# shellcheck source="../scripts/shared.sh"
|
# shellcheck source="../scripts/shared.sh"
|
||||||
|
export DOTFILES="$HOME/.dotfiles"
|
||||||
source "$DOTFILES/scripts/shared.sh"
|
source "$DOTFILES/scripts/shared.sh"
|
||||||
|
|
||||||
# Weather in Tampere, or other city
|
# Weather in Tampere, or other city
|
||||||
@@ -19,22 +20,16 @@ ssh-docker()
|
|||||||
docker exec -it "$@" bash
|
docker exec -it "$@" bash
|
||||||
}
|
}
|
||||||
|
|
||||||
# Create a new directory and enter it
|
|
||||||
mkd()
|
|
||||||
{
|
|
||||||
mkdir -p "$@" && cd "$@" || exit
|
|
||||||
}
|
|
||||||
|
|
||||||
# All the dig info
|
# All the dig info
|
||||||
digga()
|
digga()
|
||||||
{
|
{
|
||||||
dig +nocmd "$1" any +multiline +noall +answer
|
dig +nocmd "$1" any +multiline +noall +answer
|
||||||
}
|
}
|
||||||
|
|
||||||
# Rector project to php version 8.0 by default.
|
# Rector project to php version 8.2 by default.
|
||||||
rector()
|
rector()
|
||||||
{
|
{
|
||||||
local php="${1:-80}"
|
local php="${1:-82}"
|
||||||
docker run -v "$(pwd)":/project rector/rector:latest process \
|
docker run -v "$(pwd)":/project rector/rector:latest process \
|
||||||
"/project/$1" \
|
"/project/$1" \
|
||||||
--set "php${php}" \
|
--set "php${php}" \
|
||||||
@@ -63,27 +58,12 @@ scheduler()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
silent()
|
|
||||||
{
|
|
||||||
"$@" >&/dev/null
|
|
||||||
}
|
|
||||||
|
|
||||||
ask()
|
|
||||||
{
|
|
||||||
while true; do
|
|
||||||
read -p "$1 ([y]/n) " -r
|
|
||||||
REPLY=${REPLY:-"y"}
|
|
||||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
|
||||||
return 1
|
|
||||||
elif [[ $REPLY =~ ^[Nn]$ ]]; then
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# Defines default antigen bundles
|
# Defines default antigen bundles
|
||||||
x-default-antigen-bundles()
|
x-default-antigen-bundles()
|
||||||
{
|
{
|
||||||
|
# the theme to use
|
||||||
|
antigen theme romkatv/powerlevel10k
|
||||||
|
|
||||||
# these should be always available
|
# these should be always available
|
||||||
antigen bundle colored-man-pages
|
antigen bundle colored-man-pages
|
||||||
antigen bundle command-not-found
|
antigen bundle command-not-found
|
||||||
@@ -96,11 +76,8 @@ x-default-antigen-bundles()
|
|||||||
|
|
||||||
# these should be available if there's need
|
# these should be available if there's need
|
||||||
have brew && antigen bundle brew
|
have brew && antigen bundle brew
|
||||||
have docker && antigen bundle docker
|
|
||||||
have docker-compose && antigen bundle sroze/docker-compose-zsh-plugin
|
|
||||||
have jq && antigen bundle reegnz/jq-zsh-plugin
|
|
||||||
have nvm && antigen bundle nvm
|
have nvm && antigen bundle nvm
|
||||||
have nvm && antigen bundle $DOTFILES/config/zsh/plugins/nvm-auto-use
|
have nvm && antigen bundle "$DOTFILES/config/zsh/plugins/nvm-auto-use"
|
||||||
have php && antigen bundle php
|
have php && antigen bundle php
|
||||||
have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
|
have python && antigen bundle MichaelAquilina/zsh-autoswitch-virtualenv
|
||||||
have rvm && antigen bundle unixorn/rvm-plugin
|
have rvm && antigen bundle unixorn/rvm-plugin
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# Setup fzf
|
# Setup fzf
|
||||||
# ---------
|
# ---------
|
||||||
if [[ ! "$PATH" == */Users/ivuorinen/.config/fzf/bin* ]]; then
|
if [[ ! "$PATH" == *$HOME/.config/fzf/bin* ]]; then
|
||||||
PATH="${PATH:+${PATH}:}/Users/ivuorinen/.config/fzf/bin"
|
PATH="${PATH:+${PATH}:}$HOME/.config/fzf/bin"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Auto-completion
|
# Auto-completion
|
||||||
# ---------------
|
# ---------------
|
||||||
[[ $- == *i* ]] && source "/Users/ivuorinen/.config/fzf/shell/completion.zsh" 2> /dev/null
|
[[ $- == *i* ]] && source "$HOME/.config/fzf/shell/completion.zsh" 2> /dev/null
|
||||||
|
|
||||||
# Key bindings
|
# Key bindings
|
||||||
# ------------
|
# ------------
|
||||||
source "/Users/ivuorinen/.config/fzf/shell/key-bindings.zsh"
|
source "$HOME/.config/fzf/shell/key-bindings.zsh"
|
||||||
|
|||||||
@@ -11,9 +11,6 @@
|
|||||||
[pull]
|
[pull]
|
||||||
rebase = true
|
rebase = true
|
||||||
|
|
||||||
[gpg]
|
|
||||||
format = ssh
|
|
||||||
|
|
||||||
[alias]
|
[alias]
|
||||||
branchbydate = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)'
|
branchbydate = for-each-ref --count=30 --sort=-committerdate refs/heads/ --format='%(refname:short)'
|
||||||
branchcolor = "!for ref in $(git for-each-ref --sort=-committerdate --format=\"%(refname)\" refs/heads/ refs/remotes ); do git log -n1 $ref --pretty=format:\"%Cgreen%cr%Creset %C(yellow)%d%Creset %C(bold blue)<%an>%Creset%n\" | cat ; done | awk '! a[$0]++'"
|
branchcolor = "!for ref in $(git for-each-ref --sort=-committerdate --format=\"%(refname)\" refs/heads/ refs/remotes ); do git log -n1 $ref --pretty=format:\"%Cgreen%cr%Creset %C(yellow)%d%Creset %C(bold blue)<%an>%Creset%n\" | cat ; done | awk '! a[$0]++'"
|
||||||
@@ -22,6 +19,7 @@
|
|||||||
nah = !git reset --hard && git clean -df
|
nah = !git reset --hard && git clean -df
|
||||||
reset-origin = !git fetch origin && git reset --hard origin/master && git clean -f -d
|
reset-origin = !git fetch origin && git reset --hard origin/master && git clean -f -d
|
||||||
reset-upstream = !git fetch upstream && git reset --hard upstream/master && git clean -f -d
|
reset-upstream = !git fetch upstream && git reset --hard upstream/master && git clean -f -d
|
||||||
|
recent = "!r() { count=$1; git for-each-ref --sort=-committerdate refs/heads --format='%(HEAD)%(color:yellow)%(refname:short)|%(color:bold green)%(committerdate:relative)|%(color:blue)%(subject)|%(color:magenta)%(authorname)%(color:reset)' --color=always --count=${count:=10} | column -ts'|';}; r"
|
||||||
rl = reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
|
rl = reflog --format='%C(auto)%h %<|(20)%gd %C(blue)%cr%C(reset) %gs (%s)'
|
||||||
tagdate = log --date-order --graph --tags --simplify-by-decoration --pretty=format:\"%ai %h %d\"
|
tagdate = log --date-order --graph --tags --simplify-by-decoration --pretty=format:\"%ai %h %d\"
|
||||||
undo-commit = reset HEAD~ --soft
|
undo-commit = reset HEAD~ --soft
|
||||||
@@ -59,4 +57,5 @@
|
|||||||
|
|
||||||
# dotfiles special config
|
# dotfiles special config
|
||||||
[includeIf "hasconfig:remote.*.url:https://github.com/ivuorinen/dotfiles.git"]
|
[includeIf "hasconfig:remote.*.url:https://github.com/ivuorinen/dotfiles.git"]
|
||||||
path = ~/.dotfiles/config/git/special/dotfiles ;
|
path = ~/.dotfiles/config/git/special/dotfiles ;
|
||||||
|
|
||||||
|
|||||||
32
config/gpg-tui/gpg-tui.toml
Normal file
32
config/gpg-tui/gpg-tui.toml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
[general]
|
||||||
|
splash = false
|
||||||
|
tick_rate = 250
|
||||||
|
color = "gray"
|
||||||
|
style = "plain"
|
||||||
|
file_explorer = "xplr"
|
||||||
|
detail_level = "minimum"
|
||||||
|
# key_bindings = [
|
||||||
|
# { keys = [ "?" ], command = ":help" },
|
||||||
|
# { keys = [ "o" ], command = ":options" },
|
||||||
|
# { keys = [ "n" ], command = ":normal" },
|
||||||
|
# { keys = [ "v" ], command = ":visual" },
|
||||||
|
# { keys = [ "c" ], command = ":copy" },
|
||||||
|
# { keys = [ "p", "C-v" ], command = ":paste" },
|
||||||
|
# { keys = [ "x" ], command = ":export" },
|
||||||
|
# { keys = [ "s" ], command = ":set prompt :sign" },
|
||||||
|
# { keys = [ "e" ], command = ":set prompt :edit" },
|
||||||
|
# { keys = [ "i" ], command = ":set prompt :import"},
|
||||||
|
# { keys = [ "f" ], command = ":set prompt :receive" },
|
||||||
|
# { keys = [ "u" ], command = ":set prompt :send" },
|
||||||
|
# { keys = [ "g" ], command = ":generate" },
|
||||||
|
# { keys = [ "d", "backspace" ], command = ":delete" },
|
||||||
|
# { keys = [ "C-r" ], command = ":refresh" },
|
||||||
|
# ]
|
||||||
|
|
||||||
|
[gpg]
|
||||||
|
armor = false
|
||||||
|
# homedir = "~/.gnupg"
|
||||||
|
# outdir = "~/.gnupg/out"
|
||||||
|
# outfile = "{type}_{query}.{ext}"
|
||||||
|
# default_key = "0xA1B2C3XY"
|
||||||
|
|
||||||
@@ -6,9 +6,7 @@ tap "gesquive/tap"
|
|||||||
tap "github/gh"
|
tap "github/gh"
|
||||||
tap "homebrew/autoupdate"
|
tap "homebrew/autoupdate"
|
||||||
tap "homebrew/bundle"
|
tap "homebrew/bundle"
|
||||||
tap "homebrew/cask"
|
|
||||||
tap "homebrew/cask-fonts"
|
tap "homebrew/cask-fonts"
|
||||||
tap "homebrew/core"
|
|
||||||
tap "homebrew/services"
|
tap "homebrew/services"
|
||||||
tap "jesseduffield/lazygit"
|
tap "jesseduffield/lazygit"
|
||||||
tap "mongodb/brew"
|
tap "mongodb/brew"
|
||||||
@@ -16,20 +14,46 @@ tap "shivammathur/extensions"
|
|||||||
tap "shivammathur/php"
|
tap "shivammathur/php"
|
||||||
tap "teamookla/speedtest"
|
tap "teamookla/speedtest"
|
||||||
tap "xwmx/taps"
|
tap "xwmx/taps"
|
||||||
# Run your GitHub Actions locally 🚀
|
# Run your GitHub Actions locally
|
||||||
brew "act"
|
brew "act"
|
||||||
|
# Mozilla CA certificate store
|
||||||
|
brew "ca-certificates"
|
||||||
# Interpreted, interactive, object-oriented programming language
|
# Interpreted, interactive, object-oriented programming language
|
||||||
brew "python@3.11"
|
brew "python@3.11"
|
||||||
|
# YAML Parser
|
||||||
|
brew "libyaml"
|
||||||
# Automate deployment, configuration, and upgrading
|
# Automate deployment, configuration, and upgrading
|
||||||
brew "ansible"
|
brew "ansible"
|
||||||
# Checks ansible playbooks for practices and behaviour
|
# Checks ansible playbooks for practices and behaviour
|
||||||
brew "ansible-lint"
|
brew "ansible-lint"
|
||||||
|
# Generic-purpose lossless compression algorithm by Google
|
||||||
|
brew "brotli"
|
||||||
|
# Library and utilities for processing GIFs
|
||||||
|
brew "giflib"
|
||||||
|
# Performance-portable, length-agnostic SIMD with runtime dispatch
|
||||||
|
brew "highway"
|
||||||
|
# Library of 2D and 3D vector, matrix, and math operations
|
||||||
|
brew "imath"
|
||||||
|
# JPEG image codec that aids compression and decompression
|
||||||
|
brew "jpeg-turbo"
|
||||||
# Zstandard is a real-time compression algorithm
|
# Zstandard is a real-time compression algorithm
|
||||||
brew "zstd"
|
brew "zstd"
|
||||||
|
# New file format for still image compression
|
||||||
|
brew "jpeg-xl"
|
||||||
|
# Codec library for encoding and decoding AV1 video streams
|
||||||
|
brew "aom"
|
||||||
|
# Apache Portable Runtime library
|
||||||
|
brew "apr"
|
||||||
|
# Companion library to apr, the Apache Portable Runtime library
|
||||||
|
brew "apr-util"
|
||||||
|
# Password hashing library and CLI utility
|
||||||
|
brew "argon2"
|
||||||
# Open Source Kubernetes Marketplace
|
# Open Source Kubernetes Marketplace
|
||||||
brew "arkade"
|
brew "arkade"
|
||||||
# Automatic configure script builder
|
# Automatic configure script builder
|
||||||
brew "autoconf"
|
brew "autoconf"
|
||||||
|
# GNU multiple precision arithmetic library
|
||||||
|
brew "gmp"
|
||||||
# GNU File, Shell, and Text utilities
|
# GNU File, Shell, and Text utilities
|
||||||
brew "coreutils"
|
brew "coreutils"
|
||||||
# Extendable version manager with support for Ruby, Node.js, Erlang & more
|
# Extendable version manager with support for Ruby, Node.js, Erlang & more
|
||||||
@@ -38,14 +62,20 @@ brew "asdf"
|
|||||||
brew "aspell"
|
brew "aspell"
|
||||||
# Official Amazon AWS command-line interface
|
# Official Amazon AWS command-line interface
|
||||||
brew "awscli"
|
brew "awscli"
|
||||||
# Terminal bandwidth utilization tool
|
# Bourne-Again SHell, a UNIX command interpreter
|
||||||
brew "bandwhich"
|
brew "bash"
|
||||||
# Clone of cat(1) with syntax highlighting and Git integration
|
# Clone of cat(1) with syntax highlighting and Git integration
|
||||||
brew "bat"
|
brew "bat"
|
||||||
# Yet another cross-platform graphical process/system monitor
|
# Yet another cross-platform graphical process/system monitor
|
||||||
brew "bottom"
|
brew "bottom"
|
||||||
# Switch Apache / Valet / CLI configs between PHP versions
|
# Switch Apache / Valet / CLI configs between PHP versions
|
||||||
brew "brew-php-switcher"
|
brew "brew-php-switcher"
|
||||||
|
# Software library to render fonts
|
||||||
|
brew "freetype"
|
||||||
|
# XML-based font configuration API for X Windows
|
||||||
|
brew "fontconfig"
|
||||||
|
# GNU internationalization (i18n) and localization (l10n) library
|
||||||
|
brew "gettext"
|
||||||
# Core application library for C
|
# Core application library for C
|
||||||
brew "glib"
|
brew "glib"
|
||||||
# Manage compile and link flags for libraries
|
# Manage compile and link flags for libraries
|
||||||
@@ -76,8 +106,8 @@ brew "editorconfig-checker"
|
|||||||
brew "eg-examples"
|
brew "eg-examples"
|
||||||
# Run arbitrary commands when files change
|
# Run arbitrary commands when files change
|
||||||
brew "entr"
|
brew "entr"
|
||||||
# CLI for templating and/or deploying FaaS functions
|
# Perl lib for reading and writing EXIF metadata
|
||||||
brew "faas-cli"
|
brew "exiftool"
|
||||||
# Simple, fast and user-friendly alternative to find
|
# Simple, fast and user-friendly alternative to find
|
||||||
brew "fd"
|
brew "fd"
|
||||||
# Banner-like program prints strings as ASCII art
|
# Banner-like program prints strings as ASCII art
|
||||||
@@ -96,10 +126,10 @@ brew "gdu", link: false
|
|||||||
brew "gh"
|
brew "gh"
|
||||||
# Distributed revision control system
|
# Distributed revision control system
|
||||||
brew "git"
|
brew "git"
|
||||||
|
# Enable transparent encryption/decryption of files in a git repo
|
||||||
|
brew "git-crypt"
|
||||||
# Small git utilities
|
# Small git utilities
|
||||||
brew "git-extras"
|
brew "git-extras"
|
||||||
# AVH edition of git-flow
|
|
||||||
brew "git-flow-avh"
|
|
||||||
# See your latest local git branches, formatted real fancy
|
# See your latest local git branches, formatted real fancy
|
||||||
brew "git-recent"
|
brew "git-recent"
|
||||||
# Open-source GitLab command-line tool
|
# Open-source GitLab command-line tool
|
||||||
@@ -116,6 +146,10 @@ brew "gnutls"
|
|||||||
brew "gnupg"
|
brew "gnupg"
|
||||||
# Open source programming language to build simple/reliable/efficient software
|
# Open source programming language to build simple/reliable/efficient software
|
||||||
brew "go"
|
brew "go"
|
||||||
|
# Library access to GnuPG
|
||||||
|
brew "gpgme"
|
||||||
|
# Manage your GnuPG keys with ease!
|
||||||
|
brew "gpg-tui"
|
||||||
# Image manipulation
|
# Image manipulation
|
||||||
brew "netpbm"
|
brew "netpbm"
|
||||||
# C/C++ and Java libraries for Unicode and globalization
|
# C/C++ and Java libraries for Unicode and globalization
|
||||||
@@ -146,6 +180,8 @@ brew "libheif"
|
|||||||
brew "imagemagick"
|
brew "imagemagick"
|
||||||
# Lightweight and flexible command-line JSON processor
|
# Lightweight and flexible command-line JSON processor
|
||||||
brew "jq"
|
brew "jq"
|
||||||
|
# Network authentication protocol
|
||||||
|
brew "krb5"
|
||||||
# Lazier way to manage everything docker
|
# Lazier way to manage everything docker
|
||||||
brew "lazydocker"
|
brew "lazydocker"
|
||||||
# Postgres C API library
|
# Postgres C API library
|
||||||
@@ -160,18 +196,18 @@ brew "luarocks"
|
|||||||
brew "m-cli"
|
brew "m-cli"
|
||||||
# Mac App Store command-line interface
|
# Mac App Store command-line interface
|
||||||
brew "mas"
|
brew "mas"
|
||||||
# Terminal-based visual file manager
|
# NCurses Disk Usage
|
||||||
brew "midnight-commander"
|
brew "ncdu"
|
||||||
# Ambitious Vim-fork focused on extensibility and agility
|
# Ambitious Vim-fork focused on extensibility and agility
|
||||||
brew "neovim"
|
brew "neovim"
|
||||||
# No Nonsense Neovim Client in Rust
|
|
||||||
brew "neovide", link: false
|
|
||||||
# HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
|
# HTTP(S) server and reverse proxy, and IMAP/POP3 proxy server
|
||||||
brew "nginx"
|
brew "nginx"
|
||||||
# Port scanning utility for large networks
|
# Port scanning utility for large networks
|
||||||
brew "nmap"
|
brew "nmap"
|
||||||
# Manage multiple Node.js versions
|
# Manage multiple Node.js versions
|
||||||
brew "nvm"
|
brew "nvm"
|
||||||
|
# Development kit for the Java programming language
|
||||||
|
brew "openjdk@11"
|
||||||
# Generate clients, server & docs from an OpenAPI spec (v2, v3)
|
# Generate clients, server & docs from an OpenAPI spec (v2, v3)
|
||||||
brew "openapi-generator"
|
brew "openapi-generator"
|
||||||
# Development kit for the Java programming language
|
# Development kit for the Java programming language
|
||||||
@@ -194,28 +230,30 @@ brew "pyenv-virtualenv"
|
|||||||
brew "python@3.10"
|
brew "python@3.10"
|
||||||
# Interpreted, interactive, object-oriented programming language
|
# Interpreted, interactive, object-oriented programming language
|
||||||
brew "python@3.8"
|
brew "python@3.8"
|
||||||
|
# Ruby version manager
|
||||||
|
brew "rbenv"
|
||||||
# RC file (dotfile) management
|
# RC file (dotfile) management
|
||||||
brew "rcm"
|
brew "rcm"
|
||||||
# Search tool like grep and The Silver Searcher
|
# Search tool like grep and The Silver Searcher
|
||||||
brew "ripgrep"
|
brew "ripgrep"
|
||||||
# Powerful, clean, object-oriented scripting language
|
# Safe, concurrent, practical language
|
||||||
brew "ruby"
|
brew "rust"
|
||||||
# Static analysis and lint tool, for (ba)sh scripts
|
# Static analysis and lint tool, for (ba)sh scripts
|
||||||
brew "shellcheck"
|
brew "shellcheck"
|
||||||
# Autoformat shell script source code
|
# Autoformat shell script source code
|
||||||
brew "shfmt"
|
brew "shfmt"
|
||||||
# Cross-shell prompt for astronauts
|
# Support CI generation of SBOMs via golang tooling
|
||||||
brew "starship"
|
brew "spdx-sbom-generator"
|
||||||
# Version control system designed to be a better CVS
|
# Version control system designed to be a better CVS
|
||||||
brew "subversion"
|
brew "subversion"
|
||||||
# Feature-rich console based todo list manager
|
# Feature-rich console based todo list manager
|
||||||
brew "task"
|
brew "task"
|
||||||
# Terminal user interface for taskwarrior
|
# Terminal user interface for taskwarrior
|
||||||
brew "taskwarrior-tui"
|
brew "taskwarrior-tui"
|
||||||
|
# Very fast implementation of tldr in Rust
|
||||||
|
brew "tealdeer"
|
||||||
# Send macOS User Notifications from the command-line
|
# Send macOS User Notifications from the command-line
|
||||||
brew "terminal-notifier", link: false
|
brew "terminal-notifier"
|
||||||
# Tool to build, change, and version infrastructure
|
|
||||||
brew "terraform", link: false
|
|
||||||
# Thin wrapper for Terraform e.g. for locking state
|
# Thin wrapper for Terraform e.g. for locking state
|
||||||
brew "terragrunt"
|
brew "terragrunt"
|
||||||
# Tool which checks for the support of TLS/SSL ciphers and flaws
|
# Tool which checks for the support of TLS/SSL ciphers and flaws
|
||||||
@@ -226,8 +264,6 @@ brew "tfenv"
|
|||||||
brew "tfsec"
|
brew "tfsec"
|
||||||
# Programmatically correct mistyped console commands
|
# Programmatically correct mistyped console commands
|
||||||
brew "thefuck"
|
brew "thefuck"
|
||||||
# Simplified and community-driven man pages
|
|
||||||
brew "tldr"
|
|
||||||
# Terminal multiplexer
|
# Terminal multiplexer
|
||||||
brew "tmux"
|
brew "tmux"
|
||||||
# Display directories as trees (with optional color/HTML output)
|
# Display directories as trees (with optional color/HTML output)
|
||||||
@@ -247,7 +283,9 @@ brew "wget"
|
|||||||
# Personal information dashboard for your terminal
|
# Personal information dashboard for your terminal
|
||||||
brew "wtfutil"
|
brew "wtfutil"
|
||||||
# Check your $HOME for unwanted files and directories
|
# Check your $HOME for unwanted files and directories
|
||||||
brew "xdg-ninja"
|
brew "xdg-ninja", args: ["HEAD"]
|
||||||
|
# Hackable, minimal, fast TUI file explorer
|
||||||
|
brew "xplr"
|
||||||
# JavaScript package manager
|
# JavaScript package manager
|
||||||
brew "yarn"
|
brew "yarn"
|
||||||
# A vulnerability scanner for container images and filesystems
|
# A vulnerability scanner for container images and filesystems
|
||||||
@@ -288,8 +326,8 @@ cask "dbeaver-community"
|
|||||||
cask "dbngin"
|
cask "dbngin"
|
||||||
# App to build and share containerized applications and microservices
|
# App to build and share containerized applications and microservices
|
||||||
cask "docker"
|
cask "docker"
|
||||||
# Reimagine your terminal
|
# UI toolkit for building applications for mobile, web and desktop
|
||||||
cask "fig"
|
cask "flutter"
|
||||||
# Unofficial overcast.fm podcast app
|
# Unofficial overcast.fm podcast app
|
||||||
cask "fog"
|
cask "fog"
|
||||||
# Typeface made for developers
|
# Typeface made for developers
|
||||||
@@ -318,10 +356,10 @@ cask "jetbrains-toolbox"
|
|||||||
cask "lens"
|
cask "lens"
|
||||||
# Keep all tasks from your todo apps on your menu bar
|
# Keep all tasks from your todo apps on your menu bar
|
||||||
cask "monofocus"
|
cask "monofocus"
|
||||||
# Neovim Client
|
|
||||||
cask "neovide"
|
|
||||||
# Reverse proxy, secure introspectable tunnels to localhost
|
# Reverse proxy, secure introspectable tunnels to localhost
|
||||||
cask "ngrok"
|
cask "ngrok"
|
||||||
|
# Simple application that will prevent iTunes or Apple Music from launching
|
||||||
|
cask "notunes"
|
||||||
# Knowledge base that works on top of a local folder of plain text Markdown files
|
# Knowledge base that works on top of a local folder of plain text Markdown files
|
||||||
cask "obsidian"
|
cask "obsidian"
|
||||||
# Scheduling application focusing on organization
|
# Scheduling application focusing on organization
|
||||||
@@ -368,14 +406,82 @@ cask "vlc"
|
|||||||
cask "voikkospellservice"
|
cask "voikkospellservice"
|
||||||
# Rust-based terminal
|
# Rust-based terminal
|
||||||
cask "warp"
|
cask "warp"
|
||||||
# Mastodon, Pleroma, and Misskey client
|
|
||||||
cask "whalebird"
|
|
||||||
# View output from scripts in the menu bar
|
|
||||||
cask "xbar"
|
|
||||||
mas "1Password for Safari", id: 1569813296
|
mas "1Password for Safari", id: 1569813296
|
||||||
|
mas "Actions", id: 1586435171
|
||||||
mas "Audiobook Builder", id: 1437681957
|
mas "Audiobook Builder", id: 1437681957
|
||||||
mas "Flow", id: 1423210932
|
mas "Ivory", id: 6444602274
|
||||||
mas "Keynote", id: 409183694
|
mas "Keynote", id: 409183694
|
||||||
mas "Numbers", id: 409203825
|
mas "Numbers", id: 409203825
|
||||||
mas "Pages", id: 409201541
|
mas "Pages", id: 409201541
|
||||||
mas "Tailscale", id: 1475387142
|
mas "Tailscale", id: 1475387142
|
||||||
|
mas "Xcode", id: 497799835
|
||||||
|
vscode "akamud.vscode-theme-onelight"
|
||||||
|
vscode "amiralizadeh9480.laravel-extra-intellisense"
|
||||||
|
vscode "andrewleedham.vscode-css-modules"
|
||||||
|
vscode "andrewmcodes.tailwindcss-extension-pack"
|
||||||
|
vscode "austenc.tailwind-docs"
|
||||||
|
vscode "bmewburn.vscode-intelephense-client"
|
||||||
|
vscode "Box-Of-Hats.bemhelper"
|
||||||
|
vscode "bradlc.vscode-tailwindcss"
|
||||||
|
vscode "christian-kohler.npm-intellisense"
|
||||||
|
vscode "christian-kohler.path-intellisense"
|
||||||
|
vscode "DavidAnson.vscode-markdownlint"
|
||||||
|
vscode "dbaeumer.vscode-eslint"
|
||||||
|
vscode "DotJoshJohnson.xml"
|
||||||
|
vscode "eamodio.gitlens"
|
||||||
|
vscode "EditorConfig.EditorConfig"
|
||||||
|
vscode "esbenp.prettier-vscode"
|
||||||
|
vscode "formulahendry.auto-close-tag"
|
||||||
|
vscode "formulahendry.auto-rename-tag"
|
||||||
|
vscode "formulahendry.code-runner"
|
||||||
|
vscode "gencer.html-slim-scss-css-class-completion"
|
||||||
|
vscode "github.vscode-github-actions"
|
||||||
|
vscode "GitHub.vscode-pull-request-github"
|
||||||
|
vscode "GraphQL.vscode-graphql"
|
||||||
|
vscode "GraphQL.vscode-graphql-execution"
|
||||||
|
vscode "GraphQL.vscode-graphql-syntax"
|
||||||
|
vscode "heybourn.headwind"
|
||||||
|
vscode "JohnnyMorganz.stylua"
|
||||||
|
vscode "jumpinjackie.vscode-map-preview"
|
||||||
|
vscode "k--kato.intellij-idea-keybindings"
|
||||||
|
vscode "liamhammett.inline-parameters"
|
||||||
|
vscode "macieklad.tailwind-sass-syntax"
|
||||||
|
vscode "MehediDracula.php-namespace-resolver"
|
||||||
|
vscode "mikestead.dotenv"
|
||||||
|
vscode "MisterJ.vue-volar-extention-pack"
|
||||||
|
vscode "MrChetan.phpstorm-parameter-hints-in-vscode"
|
||||||
|
vscode "mrorz.language-gettext"
|
||||||
|
vscode "ms-azuretools.vscode-docker"
|
||||||
|
vscode "ms-python.python"
|
||||||
|
vscode "ms-python.vscode-pylance"
|
||||||
|
vscode "ms-toolsai.jupyter"
|
||||||
|
vscode "ms-toolsai.jupyter-renderers"
|
||||||
|
vscode "ms-toolsai.vscode-jupyter-cell-tags"
|
||||||
|
vscode "ms-toolsai.vscode-jupyter-slideshow"
|
||||||
|
vscode "ms-vscode-remote.remote-containers"
|
||||||
|
vscode "ms-vscode-remote.remote-wsl"
|
||||||
|
vscode "ms-vscode.cpptools"
|
||||||
|
vscode "msjsdiag.vscode-react-native"
|
||||||
|
vscode "mtxr.sqltools"
|
||||||
|
vscode "neilbrayfield.php-docblocker"
|
||||||
|
vscode "nhoizey.gremlins"
|
||||||
|
vscode "octref.vetur"
|
||||||
|
vscode "oderwat.indent-rainbow"
|
||||||
|
vscode "pflannery.vscode-versionlens"
|
||||||
|
vscode "phiter.phpstorm-snippets"
|
||||||
|
vscode "sibiraj-s.vscode-scss-formatter"
|
||||||
|
vscode "SonarSource.sonarlint-vscode"
|
||||||
|
vscode "stylelint.vscode-stylelint"
|
||||||
|
vscode "syler.sass-indented"
|
||||||
|
vscode "timonwong.shellcheck"
|
||||||
|
vscode "tootone.org-mode"
|
||||||
|
vscode "valeryanm.vscode-phpsab"
|
||||||
|
vscode "Vue.volar"
|
||||||
|
vscode "Vue.vscode-typescript-vue-plugin"
|
||||||
|
vscode "WakaTime.vscode-wakatime"
|
||||||
|
vscode "wix.vscode-import-cost"
|
||||||
|
vscode "xdebug.php-debug"
|
||||||
|
vscode "xdebug.php-pack"
|
||||||
|
vscode "yinfei.luahelper"
|
||||||
|
vscode "yoavbls.pretty-ts-errors"
|
||||||
|
vscode "ZainChen.json"
|
||||||
11
config/homebrew/brew.env
Normal file
11
config/homebrew/brew.env
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# shellcheck shell=bash
|
||||||
|
# vim: filetype=zsh
|
||||||
|
# dotenv-linter:off LowercaseKey, KeyWithoutValue, ExtraBlankLine, EndingBlankLine
|
||||||
|
#
|
||||||
|
# Homebrew configuration
|
||||||
|
|
||||||
|
export HOMEBREW_AUTOREMOVE=true
|
||||||
|
export HOMEBREW_AUTO_UPDATE_SECS=86400
|
||||||
|
export HOMEBREW_CLEANUP_MAX_AGE_DAYS=30
|
||||||
|
export HOMEBREW_NO_ENV_HINTS=1
|
||||||
|
|
||||||
@@ -2,14 +2,8 @@
|
|||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>AboutToPasteTabsWithCancel</key>
|
|
||||||
<true/>
|
|
||||||
<key>AboutToPasteTabsWithCancel_selection</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>AllowClipboardAccess</key>
|
<key>AllowClipboardAccess</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>AlternateMouseScroll</key>
|
|
||||||
<true/>
|
|
||||||
<key>AutoHideTmuxClientSession</key>
|
<key>AutoHideTmuxClientSession</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>Custom Color Presets</key>
|
<key>Custom Color Presets</key>
|
||||||
@@ -344,25 +338,29 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Default Bookmark Guid</key>
|
<key>Default Bookmark Guid</key>
|
||||||
<string>82636119-EA17-4A26-9AA7-408172F4A9C8</string>
|
<string>B563F48B-314D-48CC-908E-ACA971D430BE</string>
|
||||||
<key>DimBackgroundWindows</key>
|
<key>DimBackgroundWindows</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>DimOnlyText</key>
|
<key>DimOnlyText</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>DisableFullscreenTransparency</key>
|
<key>DisableFullscreenTransparency</key>
|
||||||
<true/>
|
<true/>
|
||||||
|
<key>EnableDivisionView</key>
|
||||||
|
<true/>
|
||||||
<key>HapticFeedbackForEsc</key>
|
<key>HapticFeedbackForEsc</key>
|
||||||
<false/>
|
<false/>
|
||||||
|
<key>HideActivityIndicator</key>
|
||||||
|
<false/>
|
||||||
|
<key>HideScrollbar</key>
|
||||||
|
<true/>
|
||||||
|
<key>HideTabNumber</key>
|
||||||
|
<false/>
|
||||||
<key>HotkeyMigratedFromSingleToMulti</key>
|
<key>HotkeyMigratedFromSingleToMulti</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>IRMemory</key>
|
<key>IRMemory</key>
|
||||||
<integer>4</integer>
|
<integer>4</integer>
|
||||||
<key>MaxVertically</key>
|
<key>MaxVertically</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NeverWarnAboutShortLivedSessions_82636119-EA17-4A26-9AA7-408172F4A9C8</key>
|
|
||||||
<true/>
|
|
||||||
<key>NeverWarnAboutShortLivedSessions_82636119-EA17-4A26-9AA7-408172F4A9C8_selection</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>New Bookmarks</key>
|
<key>New Bookmarks</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@@ -370,6 +368,8 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>ASCII Ligatures</key>
|
<key>ASCII Ligatures</key>
|
||||||
<false/>
|
<false/>
|
||||||
|
<key>Allow Title Reporting</key>
|
||||||
|
<true/>
|
||||||
<key>Ambiguous Double Width</key>
|
<key>Ambiguous Double Width</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>Ansi 0 Color</key>
|
<key>Ansi 0 Color</key>
|
||||||
@@ -377,208 +377,208 @@
|
|||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.35294117647058826</real>
|
<real>0.11764705926179886</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.27843137254901962</real>
|
<real>0.098039217293262482</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.27058823529411763</real>
|
<real>0.078431375324726105</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 1 Color</key>
|
<key>Ansi 1 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.6588235294117647</real>
|
<real>0.16300037503242493</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.54509803921568623</real>
|
<real>0.23660069704055786</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.95294117647058818</real>
|
<real>0.7074432373046875</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 10 Color</key>
|
<key>Ansi 10 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.63137254901960782</real>
|
<real>0.56541937589645386</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.8901960784313725</real>
|
<real>0.9042816162109375</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.65098039215686276</real>
|
<real>0.3450070321559906</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 11 Color</key>
|
<key>Ansi 11 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.68627450980392157</real>
|
<real>0.0</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.88627450980392153</real>
|
<real>0.8833775520324707</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.97647058823529409</real>
|
<real>0.9259033203125</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 12 Color</key>
|
<key>Ansi 12 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.98039215686274506</real>
|
<real>0.9485321044921875</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.70588235294117652</real>
|
<real>0.67044717073440552</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.53725490196078429</real>
|
<real>0.65349078178405762</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 13 Color</key>
|
<key>Ansi 13 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.90588235294117647</real>
|
<real>0.8821563720703125</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.76078431372549016</real>
|
<real>0.4927266538143158</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.96078431372549022</real>
|
<real>0.8821563720703125</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 14 Color</key>
|
<key>Ansi 14 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.83529411764705885</real>
|
<real>1</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.88627450980392153</real>
|
<real>0.99263292551040649</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.58039215686274515</real>
|
<real>0.37597531080245972</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 15 Color</key>
|
<key>Ansi 15 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.78431372549019607</real>
|
<real>1</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.67843137254901964</real>
|
<real>1</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.65098039215686276</real>
|
<real>0.99999600648880005</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 2 Color</key>
|
<key>Ansi 2 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.63137254901960782</real>
|
<real>0.0</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.8901960784313725</real>
|
<real>0.7607843279838562</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.65098039215686276</real>
|
<real>0.0</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 3 Color</key>
|
<key>Ansi 3 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.68627450980392157</real>
|
<real>0.0</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.88627450980392153</real>
|
<real>0.76959484815597534</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.97647058823529409</real>
|
<real>0.78058648109436035</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 4 Color</key>
|
<key>Ansi 4 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.98039215686274506</real>
|
<real>0.78216177225112915</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.70588235294117652</real>
|
<real>0.26474356651306152</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.53725490196078429</real>
|
<real>0.15404300391674042</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 5 Color</key>
|
<key>Ansi 5 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.90588235294117647</real>
|
<real>0.74494361877441406</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.76078431372549016</real>
|
<real>0.24931684136390686</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.96078431372549022</real>
|
<real>0.752197265625</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 6 Color</key>
|
<key>Ansi 6 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.83529411764705885</real>
|
<real>0.78166204690933228</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.88627450980392153</real>
|
<real>0.77425903081893921</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.58039215686274515</real>
|
<real>0.0</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 7 Color</key>
|
<key>Ansi 7 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.87058823529411766</real>
|
<real>0.78104829788208008</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.76078431372549016</real>
|
<real>0.78105825185775757</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.72941176470588232</real>
|
<real>0.7810397744178772</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 8 Color</key>
|
<key>Ansi 8 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.4392156862745098</real>
|
<real>0.4078223705291748</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.35686274509803922</real>
|
<real>0.40782788395881653</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.34509803921568627</real>
|
<real>0.40781760215759277</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Ansi 9 Color</key>
|
<key>Ansi 9 Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.6588235294117647</real>
|
<real>0.45833224058151245</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.54509803921568623</real>
|
<real>0.47524076700210571</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.95294117647058818</real>
|
<real>0.8659515380859375</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>BM Growl</key>
|
<key>BM Growl</key>
|
||||||
<true/>
|
<true/>
|
||||||
@@ -587,13 +587,13 @@
|
|||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.1803921568627451</real>
|
<real>0.12103271484375</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.11764705882352941</real>
|
<real>0.099111050367355347</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.11764705882352941</real>
|
<real>0.0806884765625</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Background Image Location</key>
|
<key>Background Image Location</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
@@ -602,96 +602,84 @@
|
|||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>0.5</real>
|
<real>0.5</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.0</real>
|
<real>1</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.14910030364990234</real>
|
<real>1</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Badge Font</key>
|
|
||||||
<string>JetBrainsMonoNerdFontCompleteM-Bold</string>
|
|
||||||
<key>Badge Max Height</key>
|
|
||||||
<real>0.10000000000000001</real>
|
|
||||||
<key>Badge Max Width</key>
|
|
||||||
<real>0.45000000000000001</real>
|
|
||||||
<key>Badge Right Margin</key>
|
|
||||||
<real>10</real>
|
|
||||||
<key>Badge Text</key>
|
|
||||||
<string></string>
|
|
||||||
<key>Badge Top Margin</key>
|
|
||||||
<real>10</real>
|
|
||||||
<key>Blend</key>
|
|
||||||
<real>0.24709154211956524</real>
|
|
||||||
<key>Blinking Cursor</key>
|
<key>Blinking Cursor</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>Blur</key>
|
<key>Blur</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>Blur Radius</key>
|
<key>Blur Radius</key>
|
||||||
<real>9.5927277260638313</real>
|
<real>20</real>
|
||||||
<key>Bold Color</key>
|
<key>Bold Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.95686274509803926</real>
|
<real>1</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.83921568627450982</real>
|
<real>1</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.80392156862745101</real>
|
<real>0.99999600648880005</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Character Encoding</key>
|
<key>Character Encoding</key>
|
||||||
<integer>4</integer>
|
<integer>4</integer>
|
||||||
<key>Close Sessions On End</key>
|
<key>Close Sessions On End</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>Columns</key>
|
<key>Columns</key>
|
||||||
<integer>120</integer>
|
<integer>130</integer>
|
||||||
<key>Command</key>
|
<key>Command</key>
|
||||||
<string></string>
|
<string></string>
|
||||||
<key>Cursor Boost</key>
|
<key>Cursor Boost</key>
|
||||||
<real>0.0</real>
|
<real>0.19958333333333333</real>
|
||||||
<key>Cursor Color</key>
|
<key>Cursor Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.86274509803921573</real>
|
<real>0.99998724460601807</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.8784313725490196</real>
|
<real>1</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.96078431372549022</real>
|
<real>0.99997633695602417</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Cursor Guide Color</key>
|
<key>Cursor Guide Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>0.070000000000000007</real>
|
<real>0.25</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.95686274509803926</real>
|
<real>1</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.83921568627450982</real>
|
<real>0.9268307089805603</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.80392156862745101</real>
|
<real>0.70213186740875244</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Cursor Text Color</key>
|
<key>Cursor Text Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.95686274509803926</real>
|
<real>0.0</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.83921568627450982</real>
|
<real>0.0</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.80392156862745101</real>
|
<real>0.0</real>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>Cursor Type</key>
|
||||||
|
<integer>1</integer>
|
||||||
<key>Custom Command</key>
|
<key>Custom Command</key>
|
||||||
<string>No</string>
|
<string>No</string>
|
||||||
<key>Custom Directory</key>
|
<key>Custom Directory</key>
|
||||||
@@ -711,16 +699,16 @@
|
|||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.95686274509803926</real>
|
<real>0.86198854446411133</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.83921568627450982</real>
|
<real>0.86199951171875</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.80392156862745101</real>
|
<real>0.86197912693023682</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Guid</key>
|
<key>Guid</key>
|
||||||
<string>82636119-EA17-4A26-9AA7-408172F4A9C8</string>
|
<string>B563F48B-314D-48CC-908E-ACA971D430BE</string>
|
||||||
<key>Horizontal Spacing</key>
|
<key>Horizontal Spacing</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Icon</key>
|
<key>Icon</key>
|
||||||
@@ -1022,16 +1010,16 @@
|
|||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.92156862745098034</real>
|
<real>0.9337158203125</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.86274509803921573</real>
|
<real>0.55789834260940552</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.53725490196078429</real>
|
<real>0.19802422821521759</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Minimum Contrast</key>
|
<key>Minimum Contrast</key>
|
||||||
<real>0.14973958333333334</real>
|
<real>0.49644531250000001</real>
|
||||||
<key>Mouse Reporting</key>
|
<key>Mouse Reporting</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>Name</key>
|
<key>Name</key>
|
||||||
@@ -1055,9 +1043,9 @@
|
|||||||
<key>Right Option Key Sends</key>
|
<key>Right Option Key Sends</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>Rows</key>
|
<key>Rows</key>
|
||||||
<integer>25</integer>
|
<integer>40</integer>
|
||||||
<key>Screen</key>
|
<key>Screen</key>
|
||||||
<integer>-2</integer>
|
<integer>-1</integer>
|
||||||
<key>Scrollback Lines</key>
|
<key>Scrollback Lines</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>Selected Text Color</key>
|
<key>Selected Text Color</key>
|
||||||
@@ -1065,40 +1053,40 @@
|
|||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.95686274509803926</real>
|
<real>0.0</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.83921568627450982</real>
|
<real>0.0</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.80392156862745101</real>
|
<real>0.0</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Selection Color</key>
|
<key>Selection Color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.4392156862745098</real>
|
<real>1</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.35686274509803922</real>
|
<real>0.84313726425170898</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.34509803921568627</real>
|
<real>0.70196080207824707</real>
|
||||||
</dict>
|
</dict>
|
||||||
<key>Send Code When Idle</key>
|
<key>Send Code When Idle</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>Set Local Environment Vars</key>
|
<key>Set Local Environment Vars</key>
|
||||||
<true/>
|
<false/>
|
||||||
<key>Shortcut</key>
|
<key>Shortcut</key>
|
||||||
<string>T</string>
|
<string></string>
|
||||||
|
<key>Show Mark Indicators</key>
|
||||||
|
<false/>
|
||||||
<key>Show Status Bar</key>
|
<key>Show Status Bar</key>
|
||||||
<true/>
|
<false/>
|
||||||
<key>Show Timestamps</key>
|
<key>Show Timestamps</key>
|
||||||
<integer>2</integer>
|
<integer>2</integer>
|
||||||
<key>Silence Bell</key>
|
<key>Silence Bell</key>
|
||||||
<false/>
|
|
||||||
<key>Smart Cursor Color</key>
|
|
||||||
<true/>
|
<true/>
|
||||||
<key>Status Bar Layout</key>
|
<key>Status Bar Layout</key>
|
||||||
<dict>
|
<dict>
|
||||||
@@ -1107,17 +1095,17 @@
|
|||||||
<key>algorithm</key>
|
<key>algorithm</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>auto-rainbow style</key>
|
<key>auto-rainbow style</key>
|
||||||
<integer>3</integer>
|
<integer>0</integer>
|
||||||
<key>font</key>
|
<key>font</key>
|
||||||
<string>.AppleSystemUIFont 12</string>
|
<string>.AppleSystemUIFont 12</string>
|
||||||
<key>remove empty components</key>
|
<key>remove empty components</key>
|
||||||
<false/>
|
<true/>
|
||||||
</dict>
|
</dict>
|
||||||
<key>components</key>
|
<key>components</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
<key>class</key>
|
<key>class</key>
|
||||||
<string>iTermStatusBarJobComponent</string>
|
<string>iTermStatusBarClockComponent</string>
|
||||||
<key>configuration</key>
|
<key>configuration</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>knobs</key>
|
<key>knobs</key>
|
||||||
@@ -1126,22 +1114,55 @@
|
|||||||
<integer>1</integer>
|
<integer>1</integer>
|
||||||
<key>base: priority</key>
|
<key>base: priority</key>
|
||||||
<real>5</real>
|
<real>5</real>
|
||||||
|
<key>format</key>
|
||||||
|
<string>YYYY-MM-dd HH:mm</string>
|
||||||
|
<key>localize</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>maxwidth</key>
|
||||||
|
<real>150</real>
|
||||||
|
<key>minwidth</key>
|
||||||
|
<real>150</real>
|
||||||
|
</dict>
|
||||||
|
<key>layout advanced configuration dictionary value</key>
|
||||||
|
<dict>
|
||||||
|
<key>algorithm</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>auto-rainbow style</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>remove empty components</key>
|
||||||
|
<false/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>class</key>
|
||||||
|
<string>iTermStatusBarHostnameComponent</string>
|
||||||
|
<key>configuration</key>
|
||||||
|
<dict>
|
||||||
|
<key>knobs</key>
|
||||||
|
<dict>
|
||||||
|
<key>abbreviate-localhost</key>
|
||||||
|
<string></string>
|
||||||
|
<key>base: compression resistance</key>
|
||||||
|
<real>1</real>
|
||||||
|
<key>base: priority</key>
|
||||||
|
<real>5</real>
|
||||||
<key>maxwidth</key>
|
<key>maxwidth</key>
|
||||||
<real>+infinity</real>
|
<real>+infinity</real>
|
||||||
<key>minwidth</key>
|
<key>minwidth</key>
|
||||||
<integer>0</integer>
|
<string>0</string>
|
||||||
<key>shared text color</key>
|
<key>shared text color</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Alpha Component</key>
|
<key>Alpha Component</key>
|
||||||
<real>1</real>
|
<real>1</real>
|
||||||
<key>Blue Component</key>
|
<key>Blue Component</key>
|
||||||
<real>0.63</real>
|
<real>0.43218994140625</real>
|
||||||
<key>Color Space</key>
|
<key>Color Space</key>
|
||||||
<string>sRGB</string>
|
<string>sRGB</string>
|
||||||
<key>Green Component</key>
|
<key>Green Component</key>
|
||||||
<real>0.63</real>
|
<real>0.34513998031616211</real>
|
||||||
<key>Red Component</key>
|
<key>Red Component</key>
|
||||||
<real>0.90000000000000002</real>
|
<real>0.0</real>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>layout advanced configuration dictionary value</key>
|
<key>layout advanced configuration dictionary value</key>
|
||||||
@@ -1149,10 +1170,66 @@
|
|||||||
<key>algorithm</key>
|
<key>algorithm</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>auto-rainbow style</key>
|
<key>auto-rainbow style</key>
|
||||||
<integer>3</integer>
|
<integer>0</integer>
|
||||||
<key>font</key>
|
<key>font</key>
|
||||||
<string>.AppleSystemUIFont 12</string>
|
<string>.AppleSystemUIFont 12</string>
|
||||||
<key>remove empty components</key>
|
<key>remove empty components</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>class</key>
|
||||||
|
<string>iTermStatusBarSpringComponent</string>
|
||||||
|
<key>configuration</key>
|
||||||
|
<dict>
|
||||||
|
<key>knobs</key>
|
||||||
|
<dict>
|
||||||
|
<key>base: compression resistance</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>base: priority</key>
|
||||||
|
<real>5</real>
|
||||||
|
<key>iTermStatusBarSpringComponentSizeMultipleKey</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>iTermStatusBarSpringComponentSpringConstantKey</key>
|
||||||
|
<real>0.01</real>
|
||||||
|
</dict>
|
||||||
|
<key>layout advanced configuration dictionary value</key>
|
||||||
|
<dict>
|
||||||
|
<key>algorithm</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>auto-rainbow style</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>font</key>
|
||||||
|
<string>.AppleSystemUIFont 12</string>
|
||||||
|
<key>remove empty components</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>class</key>
|
||||||
|
<string>iTermStatusBarSpringComponent</string>
|
||||||
|
<key>configuration</key>
|
||||||
|
<dict>
|
||||||
|
<key>knobs</key>
|
||||||
|
<dict>
|
||||||
|
<key>base: compression resistance</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>base: priority</key>
|
||||||
|
<real>5</real>
|
||||||
|
<key>iTermStatusBarSpringComponentSizeMultipleKey</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
<key>iTermStatusBarSpringComponentSpringConstantKey</key>
|
||||||
|
<real>0.01</real>
|
||||||
|
</dict>
|
||||||
|
<key>layout advanced configuration dictionary value</key>
|
||||||
|
<dict>
|
||||||
|
<key>algorithm</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>auto-rainbow style</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>remove empty components</key>
|
||||||
<false/>
|
<false/>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
@@ -1165,10 +1242,8 @@
|
|||||||
<array/>
|
<array/>
|
||||||
<key>Terminal Type</key>
|
<key>Terminal Type</key>
|
||||||
<string>xterm-256color</string>
|
<string>xterm-256color</string>
|
||||||
<key>Title Components</key>
|
|
||||||
<integer>512</integer>
|
|
||||||
<key>Transparency</key>
|
<key>Transparency</key>
|
||||||
<real>0.10293218085106381</real>
|
<real>0.14999999999999997</real>
|
||||||
<key>Unlimited Scrollback</key>
|
<key>Unlimited Scrollback</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>Use Bold Font</key>
|
<key>Use Bold Font</key>
|
||||||
@@ -1191,12 +1266,6 @@
|
|||||||
<string>/Users/ivuorinen/Code</string>
|
<string>/Users/ivuorinen/Code</string>
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>OpenArrangementAtStartup</key>
|
|
||||||
<false/>
|
|
||||||
<key>OpenNoWindowsAtStartup</key>
|
|
||||||
<false/>
|
|
||||||
<key>OpenTmuxWindowsIn</key>
|
|
||||||
<integer>1</integer>
|
|
||||||
<key>PointerActions</key>
|
<key>PointerActions</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>Button,1,1,,</key>
|
<key>Button,1,1,,</key>
|
||||||
@@ -1230,16 +1299,30 @@
|
|||||||
<string>kNextWindowPointerAction</string>
|
<string>kNextWindowPointerAction</string>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>PreserveWindowSizeWhenTabBarVisibilityChanges</key>
|
||||||
|
<true/>
|
||||||
|
<key>Print In Black And White</key>
|
||||||
|
<true/>
|
||||||
<key>PromptOnQuit</key>
|
<key>PromptOnQuit</key>
|
||||||
<false/>
|
<false/>
|
||||||
|
<key>SeparateStatusBarsPerPane</key>
|
||||||
|
<false/>
|
||||||
<key>SmartPlacement</key>
|
<key>SmartPlacement</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>SoundForEsc</key>
|
<key>SoundForEsc</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>SplitPaneDimmingAmount</key>
|
<key>SplitPaneDimmingAmount</key>
|
||||||
<real>0.59999999999999998</real>
|
<real>0.29999999999999993</real>
|
||||||
|
<key>StatusBarPosition</key>
|
||||||
|
<integer>0</integer>
|
||||||
<key>TabStyleWithAutomaticOption</key>
|
<key>TabStyleWithAutomaticOption</key>
|
||||||
<integer>5</integer>
|
<integer>5</integer>
|
||||||
|
<key>TabsHaveCloseButton</key>
|
||||||
|
<false/>
|
||||||
|
<key>ThreeFingerEmulates</key>
|
||||||
|
<true/>
|
||||||
|
<key>TmuxUnpauseAutomatically</key>
|
||||||
|
<true/>
|
||||||
<key>VisualIndicatorForEsc</key>
|
<key>VisualIndicatorForEsc</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>kCPKSelectionViewPreferredModeKey</key>
|
<key>kCPKSelectionViewPreferredModeKey</key>
|
||||||
|
|||||||
Submodule config/nvim deleted from 23bf3b2917
6
config/nvim/.gitignore
vendored
Normal file
6
config/nvim/.gitignore
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
tags
|
||||||
|
test.sh
|
||||||
|
.luarc.json
|
||||||
|
nvim
|
||||||
|
lazy-lock.json
|
||||||
|
session.vim
|
||||||
10
config/nvim/.stylua.toml
Normal file
10
config/nvim/.stylua.toml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
column_width = 160
|
||||||
|
line_endings = "Unix"
|
||||||
|
indent_type = "Spaces"
|
||||||
|
indent_width = 2
|
||||||
|
quote_style = "AutoPreferDouble"
|
||||||
|
call_parentheses = "Always"
|
||||||
|
collapse_simple_statement = "Always"
|
||||||
|
|
||||||
|
[sort_requires]
|
||||||
|
enabled = true
|
||||||
1
config/nvim/after/ftplugin/lua.lua
Normal file
1
config/nvim/after/ftplugin/lua.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
vim.api.nvim_command("set formatoptions-=cro")
|
||||||
30
config/nvim/init.lua
Normal file
30
config/nvim/init.lua
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
local key = vim.api.nvim_set_keymap
|
||||||
|
local remap = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
-- Set with normal Vim opts, 'Space' as mapleader
|
||||||
|
vim.g.mapleader = " "
|
||||||
|
vim.g.maplocalleader = " "
|
||||||
|
|
||||||
|
-- Set 'Space' as <NOP> key to leadermap key
|
||||||
|
key("n", "<Space>", "<NOP>", remap)
|
||||||
|
|
||||||
|
-- Filetype specialties.
|
||||||
|
require("filetype")
|
||||||
|
|
||||||
|
-- Global, windows options of neovim:
|
||||||
|
require("options")
|
||||||
|
|
||||||
|
-- To adminstrate packages:
|
||||||
|
require("plugin-manager")
|
||||||
|
|
||||||
|
-- LSP for editing.
|
||||||
|
require("lsp")
|
||||||
|
|
||||||
|
-- Autocmd commands from Vimscript
|
||||||
|
require("autocmd")
|
||||||
|
|
||||||
|
-- Personal Keymaps of neovim:
|
||||||
|
require("keymappings")
|
||||||
|
|
||||||
|
-- The line beneath this is called `modeline`. See `:help modeline`
|
||||||
|
-- vim: ts=2 sts=2 sw=2 et
|
||||||
31
config/nvim/lua/autocmd.lua
Normal file
31
config/nvim/lua/autocmd.lua
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
local vim = vim
|
||||||
|
local api = vim.api
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
--- function to create a list of commands and convert them to autocommands
|
||||||
|
--- This function is taken from https://github.com/norcalli/nvim_utils
|
||||||
|
function M.nvim_create_augroups(definitions)
|
||||||
|
for group_name, definition in pairs(definitions) do
|
||||||
|
api.nvim_command("augroup " .. group_name)
|
||||||
|
api.nvim_command("autocmd!")
|
||||||
|
for _, def in ipairs(definition) do
|
||||||
|
local command = table.concat(vim.tbl_flatten({ "autocmd", def }), " ")
|
||||||
|
api.nvim_command(command)
|
||||||
|
end
|
||||||
|
api.nvim_command("augroup END")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local autoCommands = {
|
||||||
|
-- To save the current session (may be restored later).
|
||||||
|
-- autocmd! VimLeavePre * :mks! ~/.config/nvim/session.vim
|
||||||
|
save_session = {
|
||||||
|
{ "VimLeavePre", "*", ":mks! ~/.local/state/nvim/session.vim" },
|
||||||
|
},
|
||||||
|
-- other autocommands
|
||||||
|
open_folds = {
|
||||||
|
{ "BufReadPost,FileReadPost", "*", "normal zR<cr>" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
M.nvim_create_augroups(autoCommands)
|
||||||
77
config/nvim/lua/filetype.lua
Normal file
77
config/nvim/lua/filetype.lua
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
-- To be used anywhere.
|
||||||
|
local function job(command) vim.api.nvim_command("call jobstart('" .. command .. "')") end
|
||||||
|
|
||||||
|
local function format()
|
||||||
|
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||||
|
pattern = "<buffer>",
|
||||||
|
callback = function() vim.lsp.buf.format() end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
local function yaml_ft(path, bufnr)
|
||||||
|
-- get content of buffer as string
|
||||||
|
local content = vim.filetype.getlines(bufnr)
|
||||||
|
if type(content) == "table" then content = table.concat(content, "\n") end
|
||||||
|
|
||||||
|
-- check if file is in roles, tasks, or handlers folder
|
||||||
|
local path_regex = vim.regex("(tasks\\|roles\\|handlers)/")
|
||||||
|
if path_regex and path_regex:match_str(path) then return "yaml.ansible" end
|
||||||
|
-- check for known ansible playbook text and if found, return yaml.ansible
|
||||||
|
local regex = vim.regex("hosts:\\|tasks:")
|
||||||
|
if regex and regex:match_str(content) then return "yaml.ansible" end
|
||||||
|
|
||||||
|
-- return yaml if nothing else
|
||||||
|
return "yaml"
|
||||||
|
end
|
||||||
|
|
||||||
|
-- In init.lua or filetype.nvim's config file
|
||||||
|
vim.filetype.add({
|
||||||
|
extension = {
|
||||||
|
|
||||||
|
h = function()
|
||||||
|
-- Use a lazy heuristic that #including a C++ header means it's a
|
||||||
|
-- C++ header
|
||||||
|
if vim.fn.search("\\C^#include <[^>.]\\+>$", "nw") == 1 then return "cpp" end
|
||||||
|
return "c"
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- Spelling fix.
|
||||||
|
md = function() vim.api.nvim_command("setlocal spell!") end,
|
||||||
|
|
||||||
|
yml = yaml_ft,
|
||||||
|
yaml = yaml_ft,
|
||||||
|
|
||||||
|
--
|
||||||
|
csv = "csv",
|
||||||
|
cl = "opencl",
|
||||||
|
env = "env",
|
||||||
|
sh = "zsh",
|
||||||
|
--
|
||||||
|
},
|
||||||
|
pattern = {
|
||||||
|
|
||||||
|
-- Go to root configuration of some projects.
|
||||||
|
-- [".*config/nvim/.*"] = function() vim.api.nvim_command "cd ~/.config/nvim/" end,
|
||||||
|
|
||||||
|
---- Typescript Projects
|
||||||
|
[".*/src/.*ts"] = function() format() end,
|
||||||
|
[".*/src/.*json"] = function() format() end,
|
||||||
|
[".*/src/.*scss"] = function() format() end,
|
||||||
|
[".*/src/.*html"] = function() format() end,
|
||||||
|
|
||||||
|
--[".*Code/ivuorinen/[project]/src/.*ts"] = function()
|
||||||
|
-- vim.api.nvim_command('cd ~/Code/ivuorinen/[project]/')
|
||||||
|
-- build('ts index')
|
||||||
|
--end,
|
||||||
|
},
|
||||||
|
|
||||||
|
filename = {
|
||||||
|
-- For eslint_d configuration file.
|
||||||
|
[".eslintrc"] = "jsonc",
|
||||||
|
|
||||||
|
-- For Typescript projects.
|
||||||
|
["tsconfig.json"] = "json5",
|
||||||
|
|
||||||
|
[".ignore"] = "gitignore",
|
||||||
|
},
|
||||||
|
})
|
||||||
279
config/nvim/lua/keymappings.lua
Normal file
279
config/nvim/lua/keymappings.lua
Normal file
@@ -0,0 +1,279 @@
|
|||||||
|
--[[
|
||||||
|
Keymappings for nvim experience.
|
||||||
|
|
||||||
|
I use combination of both nvim default vim.api.nvim_set_keymap
|
||||||
|
and WhichKey register. Slowly migrating to the WhichKey system,
|
||||||
|
and tweaking the groupings as I go.
|
||||||
|
--]]
|
||||||
|
|
||||||
|
local key = vim.api.nvim_set_keymap
|
||||||
|
local remap = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
-- ╭──────────────────────────────────────────────────────────╮
|
||||||
|
-- │ Register keybindings │
|
||||||
|
-- ╰──────────────────────────────────────────────────────────╯
|
||||||
|
|
||||||
|
-- Register in all modes, prefix <leader>
|
||||||
|
wk.register({
|
||||||
|
b = {
|
||||||
|
name = "Buffer",
|
||||||
|
n = {
|
||||||
|
"<cmd>tabnew<cr>",
|
||||||
|
"New tab",
|
||||||
|
},
|
||||||
|
c = {
|
||||||
|
name = "Comments",
|
||||||
|
b = {
|
||||||
|
"<cmd>lua require('comment-box').lbox()<cr>",
|
||||||
|
"Left aligned fixed size box with left aligned text",
|
||||||
|
},
|
||||||
|
c = {
|
||||||
|
"<cmd>lua require('comment-box').ccbox()<cr>",
|
||||||
|
desc = "Centered adapted box with centered text",
|
||||||
|
},
|
||||||
|
l = {
|
||||||
|
"<cmd>lua require('comment-box').cline()<cr>",
|
||||||
|
desc = "Centered line",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
d = {
|
||||||
|
name = "Delete buffers",
|
||||||
|
h = {
|
||||||
|
"<CMD>lua require('close_buffers').delete({type = 'hidden'})<CR>",
|
||||||
|
"Delete hidden buffers",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
D = {
|
||||||
|
name = "[D]iagnostics (Trouble)",
|
||||||
|
t = { ":TroubleToggle<CR>", "[D]iagnostics [t]oggle" },
|
||||||
|
-- Quick navigation between diagonostics.
|
||||||
|
f = { ":lua vim.diagnostic.open_float()<CR>", "[D]iagnostics: Open [f]loat" },
|
||||||
|
n = { ":lua vim.diagnostic.goto_next()<CR>", "[D]iagnostics: [n]ext" },
|
||||||
|
p = { ":lua vim.diagnostic.goto_prev()<CR>", "[D]iagnostics: [p]rev" },
|
||||||
|
},
|
||||||
|
f = {
|
||||||
|
name = "[f]ind",
|
||||||
|
-- Find recursively files across the root folder subfiles.
|
||||||
|
f = { ':lua require("telescope.builtin").find_files()<cr>', "[f]ind [f]iles" },
|
||||||
|
-- Find recursively a text across the root folder subfiles.
|
||||||
|
g = { ':lua require("telescope.builtin").live_grep()<cr>', "[f]ind text with [g]rep" },
|
||||||
|
},
|
||||||
|
h = {
|
||||||
|
name = "[h]arpoon",
|
||||||
|
a = { "<cmd>lua require('harpoon.mark').add_file()<cr>", "[h]arpoon: [A]dd file" },
|
||||||
|
r = { "<cmd>lua require('harpoon.mark').rm_file()<cr>", "[h]arpoon: [r]emove file" },
|
||||||
|
m = { "<cmd>lua require('harpoon.ui').toggle_quick_menu()<cr>", "[h]arpoon: harpoon [m]enu" },
|
||||||
|
n = { "<cmd>lua require('harpoon.ui').nav_next()<cr>", "[h]arpoon: [n]ext file" },
|
||||||
|
p = { "<cmd>lua require('harpoon.ui').nav_prev()<cr>", "[h]arpoon: [p]revious file" },
|
||||||
|
["1"] = { "<cmd> lua require('harpoon.ui').nav_file(1)<cr>", "[h]arpoon: file 1" },
|
||||||
|
["2"] = { "<cmd> lua require('harpoon.ui').nav_file(2)<cr>", "[h]arpoon: file 2" },
|
||||||
|
["3"] = { "<cmd> lua require('harpoon.ui').nav_file(3)<cr>", "[h]arpoon: file 3" },
|
||||||
|
},
|
||||||
|
--- Remap debugging to "H" from LV default of "h"
|
||||||
|
H = {
|
||||||
|
name = "[H]elp/Conceal/Telescope",
|
||||||
|
c = {
|
||||||
|
name = "[c]onceal",
|
||||||
|
h = { ":set conceallevel=1<cr>", "hide/conceal" },
|
||||||
|
s = { ":set conceallevel=0<cr>", "show/unconceal" },
|
||||||
|
},
|
||||||
|
t = {
|
||||||
|
name = "Treesitter",
|
||||||
|
t = { vim.treesitter.inspect_tree, "show tree" },
|
||||||
|
c = { ":=vim.treesitter.get_captures_at_cursor()<cr>", "show capture" },
|
||||||
|
n = { ":=vim.treesitter.get_node():type()<cr>", "show node" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
p = {
|
||||||
|
name = "[p]lugins",
|
||||||
|
i = { function() require("lazy").install() end, "[p]lugins [i]nstall" },
|
||||||
|
s = { function() require("lazy").home() end, "[p]lugins [s]tatus" },
|
||||||
|
S = { function() require("lazy").sync() end, "[p]lugins [S]ync" },
|
||||||
|
u = { function() require("lazy").check() end, "[p]lugins Check [u]pdates" },
|
||||||
|
U = { function() require("lazy").update() end, "[p]lugins [U]pdate" },
|
||||||
|
},
|
||||||
|
q = {
|
||||||
|
name = "[q]uit",
|
||||||
|
q = { ":qa<cr>", "[q]uit: [q]uit all" },
|
||||||
|
f = { ":qa!<cr>", "[q]uit: all with [f]orce" },
|
||||||
|
},
|
||||||
|
t = {
|
||||||
|
name = "[t]elescope",
|
||||||
|
-- Find recursively TODOs, NOTEs, FIXITs, ... across the root folder subfiles.
|
||||||
|
t = { ":TodoTelescope<cr>", "[t]elescope: [t]odo" },
|
||||||
|
},
|
||||||
|
x = { ":Bdelete<CR>", "[x]: Close current buffer" },
|
||||||
|
}, { prefix = "<leader>" })
|
||||||
|
|
||||||
|
-- Normal mode, prefix <leader>
|
||||||
|
wk.register({
|
||||||
|
b = { name = "Buffer" },
|
||||||
|
}, { mode = "n", prefix = "<leader>" })
|
||||||
|
|
||||||
|
-- Insert mode, prefix <leader>
|
||||||
|
wk.register({
|
||||||
|
b = { name = "Buffer" },
|
||||||
|
}, { mode = "i", prefix = "<leader>" })
|
||||||
|
|
||||||
|
-- Go to the next block.
|
||||||
|
--key('n', '<C-Down>', 'g%', remap )
|
||||||
|
|
||||||
|
-- Loop through brackets blocks.
|
||||||
|
--key('n', '<C-Up>', 'z%', remap )
|
||||||
|
|
||||||
|
-- Do just End on CTRL + End.
|
||||||
|
key("i", "<C-End>", "<End>", remap)
|
||||||
|
key("n", "<C-End>", "<End>", remap)
|
||||||
|
|
||||||
|
-- Do just Home on CTRL + Home.
|
||||||
|
key("i", "<C-Home>", "<End>", remap)
|
||||||
|
|
||||||
|
-- Highlight the word after pressing enter.
|
||||||
|
key(
|
||||||
|
"n",
|
||||||
|
"<CR>",
|
||||||
|
[[:let searchTerm = '\v<'.expand("<cword>").'>' <bar> let @/ = searchTerm <bar> echo '/'.@/ <bar> call histadd("search", searchTerm) <bar> set hls<cr>]],
|
||||||
|
remap
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Highlight the visual selection after pressing enter.
|
||||||
|
key(
|
||||||
|
"v",
|
||||||
|
"<CR>",
|
||||||
|
[["*y:silent! let searchTerm = '\V'.substitute(escape(@*, '\/'), "\n", '\\n', "g") <bar> let @/ = searchTerm <bar> echo '/'.@/ <bar> call histadd("search", searchTerm) <bar> set hls<cr>]],
|
||||||
|
remap
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Toggle highlight of search
|
||||||
|
key("n", "<C-c>", ":set hlsearch!<CR>", remap)
|
||||||
|
|
||||||
|
-- Toggle the sidebar tree of the root folder.
|
||||||
|
key("n", "<leader>e", "", {
|
||||||
|
noremap = true,
|
||||||
|
silent = true,
|
||||||
|
desc = "Open NeoTree without warnings",
|
||||||
|
callback = function() vim.cmd("Neotree toggle source=filesystem position=left") end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Try to correct the current word.
|
||||||
|
key("i", "<C-b>", "ea<C-x><C-s>", remap)
|
||||||
|
|
||||||
|
-- Toggle built-in nvim spell checking.
|
||||||
|
key("n", "<F5>", ":setlocal spell!<CR>", remap)
|
||||||
|
|
||||||
|
-- Move lines normally like an IDE when line wraps
|
||||||
|
key("i", "<Down>", [[v:count ? 'j' : '<c-o>gj']], { expr = true, noremap = true, silent = true })
|
||||||
|
key("i", "<Up>", [[v:count ? 'k' : '<c-o>gk']], { expr = true, noremap = true, silent = true })
|
||||||
|
key("n", "<Down>", [[v:count ? 'j' : 'gj']], { expr = true, noremap = true, silent = true })
|
||||||
|
key("n", "<Up>", [[v:count ? 'k' : 'gk']], { expr = true, noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- Set 'CTRL + v' as 'paster'
|
||||||
|
-- key('', '<C-v>', 'map"_d<Esc>i', remap )
|
||||||
|
key("v", "<C-v>", "p", remap)
|
||||||
|
|
||||||
|
-- Set 'CTRL + x' as 'cut'
|
||||||
|
key("v", "<C-x>", "mad`ai<Right>", { silent = true })
|
||||||
|
|
||||||
|
-- Set 'CTRL + c' as 'copier'
|
||||||
|
key("v", "<C-c>", "may`ai", remap)
|
||||||
|
key("i", "<C-v>", "<Esc>:Registers<CR>", remap)
|
||||||
|
|
||||||
|
-- Set 'CTRL + s as save'
|
||||||
|
key("n", "<C-s>", "<cmd>w<cr>", remap)
|
||||||
|
|
||||||
|
-- Create mark.
|
||||||
|
key("n", "'", "`", remap)
|
||||||
|
|
||||||
|
-- Move normaly bottom and up with C+Up and C+Down.
|
||||||
|
key("i", "<C-Up>", "<C-o>gk", remap)
|
||||||
|
key("i", "<C-Down>", "<C-o>gj", remap)
|
||||||
|
key("n", "<C-Up>", "gk", remap)
|
||||||
|
key("n", "<C-Down>", "gj", remap)
|
||||||
|
|
||||||
|
-- Set 'CTRL + z' as 'undo'
|
||||||
|
key("i", "<C-z>", "<Esc>ui", remap)
|
||||||
|
|
||||||
|
-- Set 'CTRL + y' as 'redo'
|
||||||
|
key("i", "<C-y>", "<Esc><C-r>", remap)
|
||||||
|
|
||||||
|
-- Set 'SHIFT + arrows' as 'select' like modern text-editor.
|
||||||
|
key("n", "<S-Up>", "v<Up>", remap)
|
||||||
|
key("n", "<S-Down>", "v<Down>", remap)
|
||||||
|
key("n", "<S-Left>", "v<Left>", remap)
|
||||||
|
key("n", "<S-Right>", "v<Right>", remap)
|
||||||
|
key("v", "<S-Up>", "<Up>", remap)
|
||||||
|
key("v", "<S-Down>", "<Down>", remap)
|
||||||
|
key("v", "<S-Left>", "<Left>", remap)
|
||||||
|
key("v", "<S-Right>", "<Right>", remap)
|
||||||
|
key("i", "<S-Up>", "<Esc>v<Up>", remap)
|
||||||
|
key("i", "<S-Down>", "<C-o>v<Down>", remap)
|
||||||
|
key("i", "<S-Left>", "<Esc>v<Left>", remap)
|
||||||
|
key("i", "<S-Right>", "<C-o>v<Right>", remap)
|
||||||
|
|
||||||
|
-- Set 'SHIFT + special-keys' as 'select' like a modern text editor.
|
||||||
|
key("i", "<S-Home>", "<Esc>v<Home>", remap)
|
||||||
|
key("i", "<S-End>", "<C-o>v<End><Left>", remap)
|
||||||
|
key("n", "<S-Home>", "v<Home>", remap)
|
||||||
|
key("n", "<S-End>", "v<End><Left>", remap)
|
||||||
|
key("n", "<S-PageUp>", "", remap)
|
||||||
|
key("n", "<S-PageDown>", "<Esc>:call Visual_Scroll_Down()<CR>i<Right><Left>", remap)
|
||||||
|
|
||||||
|
-- Indent the current visual selection.
|
||||||
|
key("v", "<", "<gv", remap)
|
||||||
|
key("v", ">", ">gv", remap)
|
||||||
|
|
||||||
|
-- Set 'Backspace' as 'delete selection' for the visual selection.
|
||||||
|
key("v", "<BS>", '"_di', remap)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
-- Barbar keymappings
|
||||||
|
|
||||||
|
local map = vim.api.nvim_set_keymap
|
||||||
|
local opts = { noremap = true, silent = true }
|
||||||
|
|
||||||
|
-- Move to previous/next
|
||||||
|
map("n", "<C-,>", "<Cmd>BufferPrevious<CR>", opts)
|
||||||
|
map("n", "<C-.>", "<Cmd>BufferNext<CR>", opts)
|
||||||
|
-- Re-order to previous/next
|
||||||
|
map("n", "<C-<>", "<Cmd>BufferMovePrevious<CR>", opts)
|
||||||
|
map("n", "<C->>", "<Cmd>BufferMoveNext<CR>", opts)
|
||||||
|
-- Goto buffer in position...
|
||||||
|
map("n", "<C-1>", "<Cmd>BufferGoto 1<CR>", opts)
|
||||||
|
map("n", "<C-2>", "<Cmd>BufferGoto 2<CR>", opts)
|
||||||
|
map("n", "<C-3>", "<Cmd>BufferGoto 3<CR>", opts)
|
||||||
|
map("n", "<C-4>", "<Cmd>BufferGoto 4<CR>", opts)
|
||||||
|
map("n", "<C-5>", "<Cmd>BufferGoto 5<CR>", opts)
|
||||||
|
map("n", "<C-6>", "<Cmd>BufferGoto 6<CR>", opts)
|
||||||
|
map("n", "<C-7>", "<Cmd>BufferGoto 7<CR>", opts)
|
||||||
|
map("n", "<C-8>", "<Cmd>BufferGoto 8<CR>", opts)
|
||||||
|
map("n", "<C-9>", "<Cmd>BufferGoto 9<CR>", opts)
|
||||||
|
map("n", "<C-0>", "<Cmd>BufferLast<CR>", opts)
|
||||||
|
-- Pin/unpin buffer
|
||||||
|
map("n", "<C-p>", "<Cmd>BufferPin<CR>", opts)
|
||||||
|
|
||||||
|
-- Close buffer
|
||||||
|
-- map('n', '<C-c>', '<Cmd>BufferClose<CR>', opts)
|
||||||
|
|
||||||
|
-- Wipeout buffer
|
||||||
|
-- :BufferWipeout
|
||||||
|
-- Close commands
|
||||||
|
-- :BufferCloseAllButCurrent
|
||||||
|
-- :BufferCloseAllButPinned
|
||||||
|
-- :BufferCloseAllButCurrentOrPinned
|
||||||
|
-- :BufferCloseBuffersLeft
|
||||||
|
-- :BufferCloseBuffersRight
|
||||||
|
-- Magic buffer-picking mode
|
||||||
|
map("n", "<C-p>", "<Cmd>BufferPick<CR>", opts)
|
||||||
|
-- Sort automatically by...
|
||||||
|
map("n", "<Space>bb", "<Cmd>BufferOrderByBufferNumber<CR>", opts)
|
||||||
|
map("n", "<Space>bd", "<Cmd>BufferOrderByDirectory<CR>", opts)
|
||||||
|
map("n", "<Space>bl", "<Cmd>BufferOrderByLanguage<CR>", opts)
|
||||||
|
map("n", "<Space>bw", "<Cmd>BufferOrderByWindowNumber<CR>", opts)
|
||||||
|
|
||||||
|
-- Other:
|
||||||
|
-- :BarbarEnable - enables barbar (enabled by default)
|
||||||
|
-- :BarbarDisable - very bad command, should never be used
|
||||||
146
config/nvim/lua/lsp.lua
Normal file
146
config/nvim/lua/lsp.lua
Normal file
@@ -0,0 +1,146 @@
|
|||||||
|
-- Completion for snippets.
|
||||||
|
CAPABILITIES = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
CAPABILITIES = require("cmp_nvim_lsp").default_capabilities(CAPABILITIES)
|
||||||
|
CAPABILITIES.textDocument.completion.completionItem.snippetSupport = true
|
||||||
|
|
||||||
|
--CAPABILITIES.offsetEncoding = 'utf-8'
|
||||||
|
|
||||||
|
-- [[ Configure LSP ]]
|
||||||
|
-- This function gets run when an LSP connects to a particular buffer.
|
||||||
|
local on_attach = function(_, bufnr)
|
||||||
|
local nmap = function(keys, func, desc)
|
||||||
|
if desc then desc = "LSP: " .. desc end
|
||||||
|
|
||||||
|
vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc })
|
||||||
|
end
|
||||||
|
|
||||||
|
local wk = require("which-key")
|
||||||
|
|
||||||
|
wk.register({
|
||||||
|
l = {
|
||||||
|
name = "LSP",
|
||||||
|
n = { vim.lsp.buf.rename, "Rename" },
|
||||||
|
c = { vim.lsp.buf.code_action, "Code Action" },
|
||||||
|
f = { "<cmd>Format", "Format current buffer with LSP" },
|
||||||
|
D = { vim.lsp.buf.declaration, "[G]oto [D]eclaration" },
|
||||||
|
w = {
|
||||||
|
name = "[w]orkspace",
|
||||||
|
a = { vim.lsp.buf.add_workspace_folder, "[w]orkspace: [a]dd folder" },
|
||||||
|
r = { vim.lsp.buf.remove_workspace_folder, "[w]orkspace: [r]emove folder" },
|
||||||
|
l = {
|
||||||
|
function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end,
|
||||||
|
"[w]orkspace [l]ist folders",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
g = {
|
||||||
|
name = "Goto",
|
||||||
|
d = { vim.lsp.buf.definition, "[G]oto [D]efinition" },
|
||||||
|
r = { require("telescope.builtin").lsp_references, "[G]oto [R]eferences" },
|
||||||
|
I = { vim.lsp.buf.implementation, "[G]oto [I]mplementation" },
|
||||||
|
D = { vim.lsp.buf.type_definition, "Type [D]efinition" },
|
||||||
|
s = { require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols" },
|
||||||
|
w = { require("telescope.builtin").lsp_dynamic_workspace_symbols, "[W]orkspace [S]ymbols" },
|
||||||
|
},
|
||||||
|
}, { prefix = "<leader>" })
|
||||||
|
|
||||||
|
-- See `:help K` for why this keymap
|
||||||
|
nmap("K", vim.lsp.buf.hover, "Hover Documentation")
|
||||||
|
nmap("<C-k>", vim.lsp.buf.signature_help, "Signature Documentation")
|
||||||
|
|
||||||
|
-- Create a command `:Format` local to the LSP buffer
|
||||||
|
vim.api.nvim_buf_create_user_command(
|
||||||
|
bufnr,
|
||||||
|
"Format",
|
||||||
|
function(_) vim.lsp.buf.format() end,
|
||||||
|
{ desc = "Format current buffer with LSP" }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Enable the following language servers
|
||||||
|
-- Feel free to add/remove any LSPs that you want here.
|
||||||
|
-- They will automatically be installed.
|
||||||
|
--
|
||||||
|
-- Add any additional override configuration in the following
|
||||||
|
-- tables. They will be passed to the `settings` field of the
|
||||||
|
-- server config. You must look up that documentation yourself.
|
||||||
|
--
|
||||||
|
-- If you want to override the default filetypes that your
|
||||||
|
-- language server will attach to you can define the property
|
||||||
|
-- 'filetypes' to the map in question.
|
||||||
|
local servers = {
|
||||||
|
ansiblels = {},
|
||||||
|
bashls = {},
|
||||||
|
clangd = {},
|
||||||
|
docker_compose_language_service = {},
|
||||||
|
dockerls = {},
|
||||||
|
eslint = {},
|
||||||
|
gopls = {},
|
||||||
|
html = { filetypes = { "html", "twig", "hbs" } },
|
||||||
|
intelephense = {},
|
||||||
|
jsonls = {},
|
||||||
|
lua_ls = {
|
||||||
|
Lua = {
|
||||||
|
workspace = { checkThirdParty = false },
|
||||||
|
telemetry = { enable = false },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
marksman = {},
|
||||||
|
pyright = {},
|
||||||
|
rust_analyzer = {},
|
||||||
|
terraformls = {},
|
||||||
|
tsserver = {},
|
||||||
|
vuels = {},
|
||||||
|
yamlls = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Setup neovim lua configuration
|
||||||
|
require("neodev").setup()
|
||||||
|
|
||||||
|
-- nvim-cmp supports additional completion capabilities,
|
||||||
|
-- so broadcast that to servers
|
||||||
|
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||||
|
capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities)
|
||||||
|
|
||||||
|
-- Ensure the servers above are installed
|
||||||
|
local mason_lspconfig = require("mason-lspconfig")
|
||||||
|
|
||||||
|
mason_lspconfig.setup({
|
||||||
|
ensure_installed = vim.tbl_keys(servers),
|
||||||
|
automatic_installation = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
mason_lspconfig.setup_handlers({
|
||||||
|
function(server_name)
|
||||||
|
require("lspconfig")[server_name].setup({
|
||||||
|
capabilities = capabilities,
|
||||||
|
on_attach = on_attach,
|
||||||
|
settings = servers[server_name],
|
||||||
|
filetypes = (servers[server_name] or {}).filetypes,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Bash Language Server
|
||||||
|
require("lsp.bash")
|
||||||
|
|
||||||
|
-- eslint_d + prettierd
|
||||||
|
-- require 'lsp.eslint_d_prettierd'
|
||||||
|
|
||||||
|
-- HTML
|
||||||
|
require("lsp.html")
|
||||||
|
|
||||||
|
-- JSON
|
||||||
|
require("lsp.json")
|
||||||
|
|
||||||
|
-- Python
|
||||||
|
require("lsp.python")
|
||||||
|
|
||||||
|
-- CSS + Less + SCSS
|
||||||
|
require("lsp.scss")
|
||||||
|
|
||||||
|
-- rome
|
||||||
|
require("lsp.rome")
|
||||||
|
|
||||||
|
-- Typescript + Javascript
|
||||||
|
require("lsp.typescript")
|
||||||
8
config/nvim/lua/lsp/bash.lua
Normal file
8
config/nvim/lua/lsp/bash.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
require("lspconfig").bashls.setup({
|
||||||
|
cmd = {
|
||||||
|
"bash-language-server",
|
||||||
|
"start",
|
||||||
|
},
|
||||||
|
filetypes = { "sh", "zsh" },
|
||||||
|
capabilities = CAPABILITIES,
|
||||||
|
})
|
||||||
25
config/nvim/lua/lsp/eslint_d_prettierd.lua
Normal file
25
config/nvim/lua/lsp/eslint_d_prettierd.lua
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
local eslint = require("eslint")
|
||||||
|
local null_ls = require("null-ls")
|
||||||
|
-- local sources = { null_ls.builtins.formatting.prettierd }
|
||||||
|
|
||||||
|
null_ls.setup()
|
||||||
|
|
||||||
|
eslint.setup({
|
||||||
|
bin = "eslint_d",
|
||||||
|
code_actions = {
|
||||||
|
enable = true,
|
||||||
|
apply_on_save = {
|
||||||
|
enable = true,
|
||||||
|
types = { "directive", "problem", "suggestion", "layout" },
|
||||||
|
},
|
||||||
|
disable_rule_comment = {
|
||||||
|
enable = true,
|
||||||
|
location = "separate_line", -- or `same_line`
|
||||||
|
},
|
||||||
|
},
|
||||||
|
diagnostics = {
|
||||||
|
enable = true,
|
||||||
|
report_unused_disable_directives = false,
|
||||||
|
run_on = "type", -- or `save`
|
||||||
|
},
|
||||||
|
})
|
||||||
1
config/nvim/lua/lsp/html.lua
Normal file
1
config/nvim/lua/lsp/html.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
require("lspconfig").html.setup({ capabilities = CAPABILITIES })
|
||||||
9
config/nvim/lua/lsp/json.lua
Normal file
9
config/nvim/lua/lsp/json.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
require("lspconfig").jsonls.setup({
|
||||||
|
settings = {
|
||||||
|
json = {
|
||||||
|
schemas = require("schemastore").json.schemas(),
|
||||||
|
validate = { enable = true },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
capabilities = CAPABILITIES,
|
||||||
|
})
|
||||||
1
config/nvim/lua/lsp/python.lua
Normal file
1
config/nvim/lua/lsp/python.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
require("lspconfig").pylsp.setup({})
|
||||||
31
config/nvim/lua/lsp/rome.lua
Normal file
31
config/nvim/lua/lsp/rome.lua
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
local util = require("lspconfig.util")
|
||||||
|
-- local config = require 'lspconfig.configs'
|
||||||
|
|
||||||
|
-- This duplicate exec is just a workaruond, if don't execute at first,
|
||||||
|
-- the nvim will stuck when you first init rome socket
|
||||||
|
-- local rome_cmd = { 'rome', 'lsp-proxy' }
|
||||||
|
|
||||||
|
-- local merged_table = vim.tbl_extend("keep", {
|
||||||
|
-- textDocument = {
|
||||||
|
-- formatting = {
|
||||||
|
-- dynamicRegistration = true
|
||||||
|
-- }
|
||||||
|
-- }
|
||||||
|
-- }, capabilities);
|
||||||
|
--
|
||||||
|
require("lspconfig").rome.setup({
|
||||||
|
-- cmd = rome_cmd,
|
||||||
|
-- filetypes = {
|
||||||
|
-- 'javascript',
|
||||||
|
-- 'javascriptreact',
|
||||||
|
-- 'typescript',
|
||||||
|
-- 'typescriptreact',
|
||||||
|
-- 'json'
|
||||||
|
-- },
|
||||||
|
root_dir = util.root_pattern("rome.json"),
|
||||||
|
single_file_support = true,
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
if client.server_capabilities.documentSymbolProvider then require("nvim-navic").attach(client, bufnr) end
|
||||||
|
end,
|
||||||
|
capabilities = CAPABILITIES,
|
||||||
|
})
|
||||||
22
config/nvim/lua/lsp/scss.lua
Normal file
22
config/nvim/lua/lsp/scss.lua
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
-- CSS + Less + SASS Language Server
|
||||||
|
require("lspconfig").cssls.setup({
|
||||||
|
cmd = { "vscode-css-language-server", "--stdio" },
|
||||||
|
filetypes = { "css", "scss", "less" },
|
||||||
|
-- root_dir = root_pattern("package.json", ".git") or bufdir,
|
||||||
|
settings = {
|
||||||
|
css = {
|
||||||
|
validate = true,
|
||||||
|
},
|
||||||
|
less = {
|
||||||
|
validate = true,
|
||||||
|
},
|
||||||
|
scss = {
|
||||||
|
validate = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
single_file_support = true,
|
||||||
|
capabilities = CAPABILITIES,
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
if client.server_capabilities.documentSymbolProvider then require("nvim-navic").attach(client, bufnr) end
|
||||||
|
end,
|
||||||
|
})
|
||||||
6
config/nvim/lua/lsp/typescript.lua
Normal file
6
config/nvim/lua/lsp/typescript.lua
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
require("lspconfig").tsserver.setup({
|
||||||
|
capabilities = CAPABILITIES,
|
||||||
|
on_attach = function(client, bufnr)
|
||||||
|
if client.server_capabilities.documentSymbolProvider then require("nvim-navic").attach(client, bufnr) end
|
||||||
|
end,
|
||||||
|
})
|
||||||
59
config/nvim/lua/lsp_signature.lua
Normal file
59
config/nvim/lua/lsp_signature.lua
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
-- Signature for LSP
|
||||||
|
|
||||||
|
return {
|
||||||
|
"ray-x/lsp_signature.nvim",
|
||||||
|
config = {
|
||||||
|
debug = false, -- set to true to enable debug logging
|
||||||
|
verbose = false, -- show debug line number
|
||||||
|
|
||||||
|
bind = true, -- This is mandatory, otherwise border config won't get registered.
|
||||||
|
-- If you want to hook lspsaga or other signature handler, pls set to false
|
||||||
|
doc_lines = 10, -- will show two lines of comment/doc(if there are more than two lines in doc, will be truncated);
|
||||||
|
-- set to 0 if you DO NOT want any API comments be shown
|
||||||
|
-- This setting only take effect in insert mode, it does not affect signature help in normal
|
||||||
|
-- mode, 10 by default
|
||||||
|
|
||||||
|
floating_window = true, -- show hint in a floating window, set to false for virtual text only mode
|
||||||
|
|
||||||
|
floating_window_above_cur_line = false, -- try to place the floating above the current line when possible Note:
|
||||||
|
-- will set to true when fully tested, set to false will use whichever side has more space
|
||||||
|
-- this setting will be helpful if you do not want the PUM and floating win overlap
|
||||||
|
close_timeout = 4000, -- close floating window after ms when laster parameter is entered
|
||||||
|
hint_enable = true, -- virtual hint enable
|
||||||
|
hint_prefix = "🐼", -- Panda for parameter
|
||||||
|
hint_scheme = "String",
|
||||||
|
use_lspsaga = false, -- set to true if you want to use lspsaga popup
|
||||||
|
|
||||||
|
hi_parameter = "LspSignatureActiveParameter", -- how your parameter will be highlight
|
||||||
|
|
||||||
|
max_height = 12, -- max height of signature floating_window, if content is more than max_height, you can scroll down
|
||||||
|
-- to view the hiding contents
|
||||||
|
max_width = 90, -- max_width of signature floating_window, line will be wrapped if exceed max_width
|
||||||
|
wrap = true,
|
||||||
|
handler_opts = {
|
||||||
|
border = "shadow", -- double, rounded, single, shadow, none
|
||||||
|
},
|
||||||
|
|
||||||
|
always_trigger = false, -- sometime show signature on new line or in middle of parameter can be confusing, set it to false for #58
|
||||||
|
|
||||||
|
floating_window_off_x = 0, -- adjust float windows x position.
|
||||||
|
-- can be either a number or function
|
||||||
|
floating_window_off_y = 2, -- adjust float windows y position. e.g -2 move window up 2 lines; 2 move down 2 lines
|
||||||
|
-- can be either number or function, see examples
|
||||||
|
|
||||||
|
auto_close_after = nil, -- autoclose signature float win after x sec, disabled if nil.
|
||||||
|
extra_trigger_chars = { "(", ",", ";", ")", "{", "}" }, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","}
|
||||||
|
zindex = 200, -- by default it will be on top of all floating windows, set to <= 50 send it to bottom
|
||||||
|
|
||||||
|
padding = "", -- character to pad on left and right of signature can be ' ', or '|' etc
|
||||||
|
|
||||||
|
transparency = 20, -- disabled by default, allow floating win transparent value 1~100
|
||||||
|
shadow_blend = 36, -- if you using shadow as border use this set the opacity
|
||||||
|
shadow_guibg = "Black", -- if you using shadow as border use this set the color e.g. 'Green' or '#121315'
|
||||||
|
timer_interval = 50, -- default timer check interval set to lower value if you want to reduce latency
|
||||||
|
toggle_key = "<C-n>", -- toggle signature on and off in insert mode, e.g. toggle_key = '<M-x>'
|
||||||
|
|
||||||
|
select_signature_key = nil, -- cycle to next signature, e.g. '<M-n>' function overloading
|
||||||
|
move_cursor_key = nil, -- imap, use nvim_set_current_win to move cursor between current win and floating
|
||||||
|
},
|
||||||
|
}
|
||||||
153
config/nvim/lua/options.lua
Normal file
153
config/nvim/lua/options.lua
Normal file
@@ -0,0 +1,153 @@
|
|||||||
|
local option = vim.api.nvim_set_option
|
||||||
|
local set = vim.api.nvim_set_var
|
||||||
|
|
||||||
|
-- Fix moving through lines 'gk' and 'gj'
|
||||||
|
vim.wo.linebreak = true
|
||||||
|
|
||||||
|
-- Enable break indent
|
||||||
|
vim.o.breakindent = true
|
||||||
|
|
||||||
|
-- Use the new FileType system of Neovim.
|
||||||
|
-- let g:do_filetype_lua = 1
|
||||||
|
|
||||||
|
-- Save undo history
|
||||||
|
vim.o.undofile = true
|
||||||
|
|
||||||
|
-- Show lines number (hybrid)
|
||||||
|
vim.wo.number = true
|
||||||
|
vim.wo.relativenumber = true
|
||||||
|
|
||||||
|
-- Keep signcolumn on by default
|
||||||
|
vim.wo.signcolumn = "yes"
|
||||||
|
|
||||||
|
-- Case-insensitive searching UNLESS \C or capital in search
|
||||||
|
vim.o.ignorecase = true
|
||||||
|
vim.o.smartcase = true
|
||||||
|
|
||||||
|
-- To have a extra line :)
|
||||||
|
vim.o.cmdheight = 0
|
||||||
|
|
||||||
|
-- Set wrap for words
|
||||||
|
vim.wo.wrap = true
|
||||||
|
|
||||||
|
-- Always show tabs
|
||||||
|
vim.o.showtabline = 2
|
||||||
|
|
||||||
|
-- Show xtra spaces
|
||||||
|
vim.opt.list = true
|
||||||
|
|
||||||
|
-- Set wildmenu for later use
|
||||||
|
vim.o.wildmenu = true
|
||||||
|
|
||||||
|
-- Highlighting search
|
||||||
|
vim.o.hlsearch = true
|
||||||
|
|
||||||
|
-- Set ruler for better look
|
||||||
|
vim.o.ruler = true
|
||||||
|
|
||||||
|
-- No nice message
|
||||||
|
vim.o.hidden = true
|
||||||
|
|
||||||
|
-- Partial commands only in the screen
|
||||||
|
vim.o.showcmd = true
|
||||||
|
|
||||||
|
-- Match braces when inserting new ones :)
|
||||||
|
vim.o.showmatch = true
|
||||||
|
|
||||||
|
-- Cursor line
|
||||||
|
---- Cursor column
|
||||||
|
vim.o.cursorline = true
|
||||||
|
vim.wo.cursorline = true
|
||||||
|
vim.o.cursorcolumn = true
|
||||||
|
vim.wo.cursorcolumn = true
|
||||||
|
|
||||||
|
-- Off scroll when moving through the buffer
|
||||||
|
vim.o.scrolloff = 40
|
||||||
|
|
||||||
|
-- For terminal RGB colours
|
||||||
|
vim.go.termguicolors = true
|
||||||
|
|
||||||
|
-- Colours, I believe
|
||||||
|
vim.go.t_Co = "256"
|
||||||
|
vim.go.t_ut = ""
|
||||||
|
|
||||||
|
-- Space for tabs
|
||||||
|
vim.o.laststatus = 3
|
||||||
|
|
||||||
|
-- Space for tabs
|
||||||
|
vim.o.softtabstop = 2
|
||||||
|
|
||||||
|
-- Expand tab to use spaces instead
|
||||||
|
vim.o.expandtab = true
|
||||||
|
|
||||||
|
-- Space for tabs
|
||||||
|
vim.o.tabstop = 2
|
||||||
|
|
||||||
|
-- Space for tabs
|
||||||
|
vim.bo.shiftwidth = 2
|
||||||
|
|
||||||
|
-- Space for tabs
|
||||||
|
vim.o.shiftwidth = 2
|
||||||
|
|
||||||
|
-- Format options to not create new lines with comments
|
||||||
|
vim.o.formatoptions = "tqj"
|
||||||
|
|
||||||
|
-- Mouse working with neovim
|
||||||
|
vim.o.mouse = "a"
|
||||||
|
|
||||||
|
-- viminfo file
|
||||||
|
-- vim.o.viminfo = vim.o.viminfo .. '~/.config/nvim/viminfo'
|
||||||
|
|
||||||
|
-- Spell language to English (UK)
|
||||||
|
vim.o.spelllang = "en_gb"
|
||||||
|
vim.bo.spelllang = "en_gb"
|
||||||
|
|
||||||
|
-- Global statusline.
|
||||||
|
vim.opt.laststatus = 3
|
||||||
|
|
||||||
|
-- When "on" the commands listed below move the cursor to the first non-blank
|
||||||
|
-- of the line. When off the cursor is kept in the same column (if possible).
|
||||||
|
-- https://neovim.io/doc/user/options.html#'startofline'
|
||||||
|
vim.opt.startofline = true
|
||||||
|
|
||||||
|
-- Columns line "limit"
|
||||||
|
-- vim.o.cc = '85'
|
||||||
|
|
||||||
|
-- Set path for better searching across the system
|
||||||
|
-- vim.o.path = vim.o.path .. '**'
|
||||||
|
|
||||||
|
-- Complete options
|
||||||
|
vim.o.completeopt = "menuone,longest,noselect"
|
||||||
|
vim.o.shortmess = vim.o.shortmess .. "c"
|
||||||
|
|
||||||
|
-- Menu Transparency.
|
||||||
|
vim.go.pumblend = 10
|
||||||
|
|
||||||
|
--------------------Variables-----------------
|
||||||
|
|
||||||
|
set("one_allow_itali:set cursorlinec:set cursorlines", 1)
|
||||||
|
set("do_filetype_lua", 1)
|
||||||
|
set("MRU_File", "~/.cache/vim_mru_files")
|
||||||
|
|
||||||
|
--------------------API------------------------
|
||||||
|
|
||||||
|
-- Change title accordingly.
|
||||||
|
-- option('title', true)
|
||||||
|
|
||||||
|
-- Set clipboard to be global across the system
|
||||||
|
option("clipboard", "unnamedplus")
|
||||||
|
|
||||||
|
-- Basic fold column
|
||||||
|
option("foldcolumn", "1")
|
||||||
|
|
||||||
|
-- Set dictionary to language spell
|
||||||
|
option("dictionary", "/usr/share/dict/words")
|
||||||
|
|
||||||
|
-- Wildignore for when opening files :0
|
||||||
|
option("wildignore", "*/tmp*/,*/node_modules/*,_site,*/__pycache__/,*/venv/*,*/target/*,*/.vim$,~$,*/.log")
|
||||||
|
|
||||||
|
-- Folding
|
||||||
|
option("foldmethod", "syntax")
|
||||||
|
|
||||||
|
-- File format for neovim reading
|
||||||
|
option("fileformat", "unix")
|
||||||
21
config/nvim/lua/plugin-manager.lua
Normal file
21
config/nvim/lua/plugin-manager.lua
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
-- Package manager https://github.com/folke/lazy.nvim
|
||||||
|
-- :help lazy.nvim.txt
|
||||||
|
|
||||||
|
-- To install lazy.nvim automatically.
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
|
||||||
|
if not vim.loop.fs_stat(lazypath) then
|
||||||
|
vim.fn.system({
|
||||||
|
"git",
|
||||||
|
"clone",
|
||||||
|
"--filter=blob:none",
|
||||||
|
"https://github.com/folke/lazy.nvim.git",
|
||||||
|
"--branch=stable", -- latest stable release
|
||||||
|
lazypath,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
-- Plugins start here:
|
||||||
|
require("lazy").setup("plugins")
|
||||||
90
config/nvim/lua/plugins/barbecue.lua
Normal file
90
config/nvim/lua/plugins/barbecue.lua
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
-- Winbar with context.
|
||||||
|
return {
|
||||||
|
"utilyre/barbecue.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
"SmiteshP/nvim-navic",
|
||||||
|
"kyazdani42/nvim-web-devicons", -- Optional
|
||||||
|
},
|
||||||
|
config = {
|
||||||
|
theme = "catppuccin",
|
||||||
|
|
||||||
|
-- If you set this to false, floating windows will look weird
|
||||||
|
exclude_float = true,
|
||||||
|
|
||||||
|
-- Instead of excluding countless number of filetypes, barbecue tries to only show on some buftypes
|
||||||
|
-- "": file buffer
|
||||||
|
-- "nofile": e.g. nvim-tree and nvim-dap-ui
|
||||||
|
-- "prompt": e.g. telescope.nvim and nvim-fzf
|
||||||
|
-- "terminal": e.g. fterm.nvim and toggleterm.nvim
|
||||||
|
-- ...
|
||||||
|
include_buftypes = { "" },
|
||||||
|
|
||||||
|
---Filetypes not to enable winbar in.
|
||||||
|
---
|
||||||
|
---@type string[]
|
||||||
|
exclude_filetypes = {
|
||||||
|
"",
|
||||||
|
"txt",
|
||||||
|
"markdown",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- :help events
|
||||||
|
-- :help [event] (like :help BufWinEnter)
|
||||||
|
update_events = {
|
||||||
|
"BufWinEnter",
|
||||||
|
"BufWritePost",
|
||||||
|
"CursorMoved",
|
||||||
|
"CursorMovedI",
|
||||||
|
"TextChanged",
|
||||||
|
"TextChangedI",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Show `~ ...` instead of `/ home user ...`
|
||||||
|
tilde_home = true,
|
||||||
|
|
||||||
|
-- Your winbar will have a little padding from the edge
|
||||||
|
prefix = " ",
|
||||||
|
|
||||||
|
-- The sign between each entry
|
||||||
|
separator = " ",
|
||||||
|
|
||||||
|
-- Show if lsp context is available but there is nothing to show
|
||||||
|
no_info_indicator = "…",
|
||||||
|
|
||||||
|
-- Symbol to show if file has been modified (not saved). It's usually `[+]` in vim
|
||||||
|
-- `nil` to disable
|
||||||
|
modified_indicator = nil,
|
||||||
|
|
||||||
|
-- Icons passed to nvim-navic
|
||||||
|
icons = {
|
||||||
|
File = " ",
|
||||||
|
Module = " ",
|
||||||
|
Namespace = " ",
|
||||||
|
Package = " ",
|
||||||
|
Class = " ",
|
||||||
|
Method = " ",
|
||||||
|
Property = " ",
|
||||||
|
Field = " ",
|
||||||
|
Constructor = " ",
|
||||||
|
Enum = "練",
|
||||||
|
Interface = "練",
|
||||||
|
Function = " ",
|
||||||
|
Variable = " ",
|
||||||
|
Constant = " ",
|
||||||
|
String = " ",
|
||||||
|
Number = " ",
|
||||||
|
Boolean = "◩ ",
|
||||||
|
Array = " ",
|
||||||
|
Object = " ",
|
||||||
|
Key = " ",
|
||||||
|
Null = "ﳠ ",
|
||||||
|
EnumMember = " ",
|
||||||
|
Struct = " ",
|
||||||
|
Event = " ",
|
||||||
|
Operator = " ",
|
||||||
|
TypeParameter = " ",
|
||||||
|
Define = " ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
1
config/nvim/lua/plugins/close-buffers.lua
Normal file
1
config/nvim/lua/plugins/close-buffers.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "kazhala/close-buffers.nvim" }
|
||||||
4
config/nvim/lua/plugins/commentbox.lua
Normal file
4
config/nvim/lua/plugins/commentbox.lua
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
"LudoPinelli/comment-box.nvim",
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
29
config/nvim/lua/plugins/fold-preview.lua
Normal file
29
config/nvim/lua/plugins/fold-preview.lua
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
return {
|
||||||
|
"anuvyklack/fold-preview.nvim",
|
||||||
|
dependencies = { "anuvyklack/keymap-amend.nvim", "ray-x/lsp_signature.nvim" },
|
||||||
|
config = function()
|
||||||
|
local fp = require("fold-preview")
|
||||||
|
local map = require("fold-preview").mapping
|
||||||
|
local keymap = vim.keymap
|
||||||
|
keymap.amend = require("keymap-amend")
|
||||||
|
|
||||||
|
fp.setup({
|
||||||
|
default_keybindings = false,
|
||||||
|
-- another settings
|
||||||
|
})
|
||||||
|
|
||||||
|
keymap.amend("n", "K", function(original)
|
||||||
|
if not fp.show_preview() then original() end
|
||||||
|
-- or
|
||||||
|
-- if not fp.toggle_preview() then original() end
|
||||||
|
-- to close preview on second press on K.
|
||||||
|
end)
|
||||||
|
keymap.amend("n", "h", map.close_preview_open_fold)
|
||||||
|
keymap.amend("n", "l", map.close_preview_open_fold)
|
||||||
|
keymap.amend("n", "zo", map.close_preview)
|
||||||
|
keymap.amend("n", "zO", map.close_preview)
|
||||||
|
keymap.amend("n", "zc", map.close_preview_without_defer)
|
||||||
|
keymap.amend("n", "zR", map.close_preview)
|
||||||
|
keymap.amend("n", "zM", map.close_preview_without_defer)
|
||||||
|
end,
|
||||||
|
}
|
||||||
87
config/nvim/lua/plugins/gitsigns.lua
Normal file
87
config/nvim/lua/plugins/gitsigns.lua
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
-- Show signs of GIT written in lua
|
||||||
|
return {
|
||||||
|
"lewis6991/gitsigns.nvim",
|
||||||
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
|
config = {
|
||||||
|
signs = {
|
||||||
|
add = { hl = "GitSignsAdd", text = "┃", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" },
|
||||||
|
change = { hl = "GitSignsChange", text = "┃", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
|
||||||
|
delete = { hl = "GitSignsDelete", text = "_", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
|
||||||
|
topdelete = { hl = "GitSignsDelete", text = "‾", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
|
||||||
|
changedelete = { hl = "GitSignsChange", text = "~", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
|
||||||
|
},
|
||||||
|
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
||||||
|
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
||||||
|
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
||||||
|
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
local gs = package.loaded.gitsigns
|
||||||
|
|
||||||
|
local function map(mode, l, r, opts)
|
||||||
|
opts = opts or {}
|
||||||
|
opts.buffer = bufnr
|
||||||
|
vim.keymap.set(mode, l, r, opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Navigation
|
||||||
|
map("n", "]c", function()
|
||||||
|
if vim.wo.diff then return "]c" end
|
||||||
|
vim.schedule(function() gs.next_hunk() end)
|
||||||
|
return "<Ignore>"
|
||||||
|
end, { expr = true })
|
||||||
|
|
||||||
|
map("n", "[c", function()
|
||||||
|
if vim.wo.diff then return "[c" end
|
||||||
|
vim.schedule(function() gs.prev_hunk() end)
|
||||||
|
return "<Ignore>"
|
||||||
|
end, { expr = true })
|
||||||
|
|
||||||
|
-- Actions
|
||||||
|
map("n", "<leader>hs", gs.stage_hunk, { desc = "Stage Hunk" })
|
||||||
|
map("n", "<leader>hr", gs.reset_hunk, { desc = "Reset Hunk" })
|
||||||
|
map("v", "<leader>hs", function() gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end)
|
||||||
|
map("v", "<leader>hr", function() gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end)
|
||||||
|
map("n", "<leader>hS", gs.stage_buffer, { desc = "Stage Buffer" })
|
||||||
|
map("n", "<leader>hu", gs.undo_stage_hunk, { desc = "Undo Stage Hunk" })
|
||||||
|
map("n", "<leader>hR", gs.reset_buffer, { desc = "Reset Buffer" })
|
||||||
|
map("n", "<leader>hp", gs.preview_hunk, { desc = "Preview Hunk" })
|
||||||
|
map("n", "<leader>hb", function() gs.blame_line({ full = true }) end, { desc = "Blame Line" })
|
||||||
|
map("n", "<leader>tb", gs.toggle_current_line_blame, { desc = "Toggle Current Line Blame" })
|
||||||
|
map("n", "<leader>hd", gs.diffthis, { desc = "Diff This" })
|
||||||
|
map("n", "<leader>hD", function() gs.diffthis("~") end)
|
||||||
|
map("n", "<leader>td", gs.toggle_deleted, { desc = "Toggle Deleted" })
|
||||||
|
|
||||||
|
-- Text object
|
||||||
|
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>")
|
||||||
|
end,
|
||||||
|
watch_gitdir = {
|
||||||
|
interval = 1000,
|
||||||
|
follow_files = true,
|
||||||
|
},
|
||||||
|
attach_to_untracked = true,
|
||||||
|
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
||||||
|
current_line_blame_opts = {
|
||||||
|
virt_text = true,
|
||||||
|
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
|
||||||
|
delay = 1000,
|
||||||
|
},
|
||||||
|
current_line_blame_formatter_opts = {
|
||||||
|
relative_time = false,
|
||||||
|
},
|
||||||
|
sign_priority = 6,
|
||||||
|
update_debounce = 100,
|
||||||
|
status_formatter = nil, -- Use default
|
||||||
|
max_file_length = 40000,
|
||||||
|
preview_config = {
|
||||||
|
-- Options passed to nvim_open_win
|
||||||
|
border = "single",
|
||||||
|
style = "minimal",
|
||||||
|
relative = "cursor",
|
||||||
|
row = 0,
|
||||||
|
col = 1,
|
||||||
|
},
|
||||||
|
yadm = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
1
config/nvim/lua/plugins/harpoon.lua
Normal file
1
config/nvim/lua/plugins/harpoon.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "ThePrimeagen/harpoon" }
|
||||||
70
config/nvim/lua/plugins/incline.lua
Normal file
70
config/nvim/lua/plugins/incline.lua
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
-- Floating statuslines for Neovim
|
||||||
|
-- https://github.com/b0o/incline.nvim
|
||||||
|
--
|
||||||
|
-- Lightweight floating statuslines, best used with
|
||||||
|
-- Neovim's global statusline (set laststatus=3).
|
||||||
|
|
||||||
|
return {
|
||||||
|
"b0o/incline.nvim",
|
||||||
|
config = {
|
||||||
|
debounce_threshold = {
|
||||||
|
falling = 50,
|
||||||
|
rising = 0,
|
||||||
|
},
|
||||||
|
hide = {
|
||||||
|
cursorline = true,
|
||||||
|
focused_win = false,
|
||||||
|
only_win = true,
|
||||||
|
},
|
||||||
|
highlight = {
|
||||||
|
groups = {
|
||||||
|
InclineNormal = {
|
||||||
|
default = true,
|
||||||
|
group = "NormalFloat",
|
||||||
|
},
|
||||||
|
InclineNormalNC = {
|
||||||
|
default = true,
|
||||||
|
group = "NormalFloat",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
ignore = {
|
||||||
|
buftypes = "special",
|
||||||
|
filetypes = {},
|
||||||
|
floating_wins = true,
|
||||||
|
unlisted_buffers = true,
|
||||||
|
wintypes = "special",
|
||||||
|
},
|
||||||
|
render = "basic",
|
||||||
|
window = {
|
||||||
|
margin = {
|
||||||
|
horizontal = 1,
|
||||||
|
vertical = 1,
|
||||||
|
},
|
||||||
|
options = {
|
||||||
|
signcolumn = "no",
|
||||||
|
wrap = false,
|
||||||
|
},
|
||||||
|
padding = 1,
|
||||||
|
padding_char = " ",
|
||||||
|
placement = {
|
||||||
|
horizontal = "right",
|
||||||
|
vertical = "top",
|
||||||
|
},
|
||||||
|
width = "fit",
|
||||||
|
winhighlight = {
|
||||||
|
active = {
|
||||||
|
EndOfBuffer = "None",
|
||||||
|
Normal = "InclineNormal",
|
||||||
|
Search = "None",
|
||||||
|
},
|
||||||
|
inactive = {
|
||||||
|
EndOfBuffer = "None",
|
||||||
|
Normal = "InclineNormalNC",
|
||||||
|
Search = "None",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
zindex = 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
25
config/nvim/lua/plugins/lazy.lua
Normal file
25
config/nvim/lua/plugins/lazy.lua
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
return {
|
||||||
|
--
|
||||||
|
-- Menu
|
||||||
|
--
|
||||||
|
-- Icons on menu
|
||||||
|
"onsails/lspkind-nvim",
|
||||||
|
|
||||||
|
-- Restore folds and cursor position
|
||||||
|
"senderle/restoreview",
|
||||||
|
|
||||||
|
--
|
||||||
|
-- Appearance
|
||||||
|
--
|
||||||
|
|
||||||
|
-- Status information for LSP.
|
||||||
|
"j-hui/fidget.nvim",
|
||||||
|
|
||||||
|
-- Close buffer without messing up with the window.
|
||||||
|
"famiu/bufdelete.nvim",
|
||||||
|
|
||||||
|
"nyoom-engineering/oxocarbon.nvim",
|
||||||
|
|
||||||
|
-- JSONLS
|
||||||
|
"b0o/schemastore.nvim",
|
||||||
|
}
|
||||||
9
config/nvim/lua/plugins/legendary.lua
Normal file
9
config/nvim/lua/plugins/legendary.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
"mrjones2014/legendary.nvim",
|
||||||
|
-- since legendary.nvim handles all your keymaps/commands,
|
||||||
|
-- its recommended to load legendary.nvim before other plugins
|
||||||
|
priority = 10000,
|
||||||
|
lazy = false,
|
||||||
|
-- sqlite is only needed if you want to use frecency sorting
|
||||||
|
-- dependencies = { 'kkharji/sqlite.lua' }
|
||||||
|
}
|
||||||
36
config/nvim/lua/plugins/marks.lua
Normal file
36
config/nvim/lua/plugins/marks.lua
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
-- Signs for built-in marks.
|
||||||
|
|
||||||
|
return {
|
||||||
|
"chentoast/marks.nvim",
|
||||||
|
config = {
|
||||||
|
-- whether to map keybinds or not. default true
|
||||||
|
default_mappings = true,
|
||||||
|
-- which builtin marks to show. default {}
|
||||||
|
builtin_marks = { ".", "<", ">", "^" },
|
||||||
|
-- whether movements cycle back to the beginning/end of buffer. default true
|
||||||
|
cyclic = true,
|
||||||
|
-- whether the shada file is updated after modifying uppercase marks. default false
|
||||||
|
force_write_shada = false,
|
||||||
|
-- how often (in ms) to redraw signs/recompute mark positions.
|
||||||
|
-- higher values will have better performance but may cause visual lag,
|
||||||
|
-- while lower values may cause performance penalties. default 150.
|
||||||
|
refresh_interval = 250,
|
||||||
|
-- sign priorities for each type of mark - builtin marks, uppercase marks, lowercase
|
||||||
|
-- marks, and bookmarks.
|
||||||
|
-- can be either a table with all/none of the keys, or a single number, in which case
|
||||||
|
-- the priority applies to all marks.
|
||||||
|
-- default 10.
|
||||||
|
sign_priority = { lower = 10, upper = 15, builtin = 8, bookmark = 20 },
|
||||||
|
-- disables mark tracking for specific filetypes. default {}
|
||||||
|
excluded_filetypes = {},
|
||||||
|
-- marks.nvim allows you to configure up to 10 bookmark groups, each with its own
|
||||||
|
-- sign/virttext. Bookmarks can be used to group together positions and quickly move
|
||||||
|
-- across multiple buffers. default sign is '!@#$%^&*()' (from 0 to 9), and
|
||||||
|
-- default virt_text is "".
|
||||||
|
bookmark_0 = {
|
||||||
|
sign = "⚑",
|
||||||
|
virt_text = "hello world",
|
||||||
|
},
|
||||||
|
mappings = {},
|
||||||
|
},
|
||||||
|
}
|
||||||
131
config/nvim/lua/plugins/mini.lua
Normal file
131
config/nvim/lua/plugins/mini.lua
Normal file
@@ -0,0 +1,131 @@
|
|||||||
|
return {
|
||||||
|
"echasnovski/mini.nvim",
|
||||||
|
version = "*",
|
||||||
|
config = function()
|
||||||
|
-- Common configuration presets
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-basics.md
|
||||||
|
require("mini.basics").setup()
|
||||||
|
|
||||||
|
-- Fast and flexible start screen
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-starter.md
|
||||||
|
local starter = require("mini.starter")
|
||||||
|
starter.setup({
|
||||||
|
header = table.concat({
|
||||||
|
" ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ",
|
||||||
|
" ▄▀░░░░░░░░░░░░▄░░░░░░░▀▄ ",
|
||||||
|
" █░░▄░░░░▄░░░░░░░░░░░░░░█ ",
|
||||||
|
" █░░░░░░░░░░░░▄█▄▄░░▄░░░█ ▄▄▄ ",
|
||||||
|
"▄▄▄▄▄ █░░░░░░▀░░░░▀█░░▀▄░░░░░█▀▀░██ ",
|
||||||
|
"██▄▀██▄█░░░▄░░░░░░░██░░░░▀▀▀▀▀░░░░██ ",
|
||||||
|
" ▀██▄▀██░░░░░░░░▀░██▀░░░░░░░░░░░░░▀██",
|
||||||
|
" ▀████░▀░░░░▄░░░██░░░▄█░░░░▄░▄█░░██",
|
||||||
|
" ▀█░░░░▄░░░░░██░░░░▄░░░▄░░▄░░░██",
|
||||||
|
" ▄█▄░░░░░░░░░░░▀▄░░▀▀▀▀▀▀▀▀░░▄▀ ",
|
||||||
|
" █▀▀█████████▀▀▀▀████████████▀ ",
|
||||||
|
" ████▀ ███▀ ▀███ ▀██▀ ",
|
||||||
|
}, "\n"),
|
||||||
|
evaluate_single = true,
|
||||||
|
items = {
|
||||||
|
starter.sections.telescope(),
|
||||||
|
starter.sections.builtin_actions(),
|
||||||
|
starter.sections.recent_files(5, true, true),
|
||||||
|
},
|
||||||
|
content_hooks = {
|
||||||
|
starter.gen_hook.adding_bullet(),
|
||||||
|
starter.gen_hook.aligning("center", "center"),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Miscellaneous useful functions
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-misc.md
|
||||||
|
require("mini.misc").setup()
|
||||||
|
|
||||||
|
-- Extend and create a/i textobjects
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-ai.md
|
||||||
|
require("mini.ai").setup()
|
||||||
|
|
||||||
|
-- Align text interactively
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-align.md
|
||||||
|
require("mini.align").setup()
|
||||||
|
|
||||||
|
-- Animate common Neovim actions
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-animate.md
|
||||||
|
require("mini.animate").setup()
|
||||||
|
|
||||||
|
-- Go forward/backward with square brackets
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-bracketed.md
|
||||||
|
require("mini.bracketed").setup()
|
||||||
|
|
||||||
|
-- Comment lines
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-comment.md
|
||||||
|
require("mini.comment").setup()
|
||||||
|
|
||||||
|
-- Autocompletion and signature help plugin
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-completion.md
|
||||||
|
require("mini.completion").setup()
|
||||||
|
|
||||||
|
-- Automatic highlighting of word under cursor
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-cursorword.md
|
||||||
|
require("mini.cursorword").setup()
|
||||||
|
|
||||||
|
-- Highlight patterns in text
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-hipatterns.md
|
||||||
|
local hipatterns = require("mini.hipatterns")
|
||||||
|
hipatterns.setup({
|
||||||
|
highlighters = {
|
||||||
|
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
|
||||||
|
fixme = { pattern = "%f[%w]()FIXME()%f[%W]", group = "MiniHipatternsFixme" },
|
||||||
|
hack = { pattern = "%f[%w]()HACK()%f[%W]", group = "MiniHipatternsHack" },
|
||||||
|
todo = { pattern = "%f[%w]()TODO()%f[%W]", group = "MiniHipatternsTodo" },
|
||||||
|
note = { pattern = "%f[%w]()NOTE()%f[%W]", group = "MiniHipatternsNote" },
|
||||||
|
|
||||||
|
-- Highlight hex color strings (`#rrggbb`) using that color
|
||||||
|
hex_color = hipatterns.gen_highlighter.hex_color(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Visualize and work with indent scope
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-indentscope.md
|
||||||
|
require("mini.indentscope").setup()
|
||||||
|
|
||||||
|
-- Jump to next/previous single character
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-jump.md
|
||||||
|
require("mini.jump").setup()
|
||||||
|
|
||||||
|
-- Jump within visible lines via iterative label filtering
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-jump2d.md
|
||||||
|
require("mini.jump2d").setup()
|
||||||
|
|
||||||
|
-- Window with buffer text overview, scrollbar, and highlights
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-map.md
|
||||||
|
require("mini.map").setup()
|
||||||
|
|
||||||
|
-- Move any selection in any direction
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-move.md
|
||||||
|
require("mini.move").setup()
|
||||||
|
|
||||||
|
-- Text edit operators
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-operators.md
|
||||||
|
-- require("mini.operators").setup()
|
||||||
|
|
||||||
|
-- Minimal and fast autopairs
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-pairs.md
|
||||||
|
require("mini.pairs").setup()
|
||||||
|
|
||||||
|
-- Split and join arguments
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-splitjoin.md
|
||||||
|
require("mini.splitjoin").setup()
|
||||||
|
|
||||||
|
-- Minimal and fast statusline module with opinionated default look
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-statusline.md
|
||||||
|
require("mini.statusline").setup()
|
||||||
|
|
||||||
|
-- Minimal and fast tabline showing listed buffers
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-tabline.md
|
||||||
|
require("mini.tabline").setup()
|
||||||
|
|
||||||
|
-- Work with trailing whitespace
|
||||||
|
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-trailspace.md
|
||||||
|
require("mini.trailspace").setup()
|
||||||
|
end,
|
||||||
|
}
|
||||||
415
config/nvim/lua/plugins/neo-tree.lua
Normal file
415
config/nvim/lua/plugins/neo-tree.lua
Normal file
@@ -0,0 +1,415 @@
|
|||||||
|
-- File-tree manager.
|
||||||
|
|
||||||
|
-- Unless you are still migrating, remove the deprecated commands from v1.x
|
||||||
|
vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]])
|
||||||
|
|
||||||
|
return {
|
||||||
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
"kyazdani42/nvim-web-devicons", -- not strictly required, but recommended
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
{
|
||||||
|
-- only needed if you want to use the commands with "_with_window_picker" suffix
|
||||||
|
"s1n7ax/nvim-window-picker",
|
||||||
|
config = function()
|
||||||
|
require("window-picker").setup({
|
||||||
|
autoselect_one = true,
|
||||||
|
include_current = false,
|
||||||
|
filter_rules = {
|
||||||
|
-- filter using buffer options
|
||||||
|
bo = {
|
||||||
|
-- if the file type is one of following, the window will be ignored
|
||||||
|
filetype = { "neo-tree", "neo-tree-popup", "notify" },
|
||||||
|
|
||||||
|
-- if the buffer type is one of following, the window will be ignored
|
||||||
|
buftype = { "terminal", "quickfix" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
other_win_hl_color = "#e35e4f",
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
-- If you want icons for diagnostic errors, you'll need to define them somewhere:
|
||||||
|
vim.fn.sign_define("DiagnosticSignError", { text = " ", texthl = "DiagnosticSignError" })
|
||||||
|
vim.fn.sign_define("DiagnosticSignWarn", { text = " ", texthl = "DiagnosticSignWarn" })
|
||||||
|
vim.fn.sign_define("DiagnosticSignInfo", { text = " ", texthl = "DiagnosticSignInfo" })
|
||||||
|
vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
|
||||||
|
|
||||||
|
require("neo-tree").setup({
|
||||||
|
close_if_last_window = true, -- Close Neo-tree if it is the last window left in the tab
|
||||||
|
popup_border_style = "rounded", -- "double", "none", "rounded", "shadow", "single" or "solid"
|
||||||
|
enable_git_status = true,
|
||||||
|
enable_diagnostics = true,
|
||||||
|
enable_normal_mode_for_inputs = false, -- Enable normal mode for input dialogs.
|
||||||
|
|
||||||
|
open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes
|
||||||
|
|
||||||
|
-- popup_border_style is for input and confirmation dialogs.
|
||||||
|
-- Configurtaion of floating window is done in the individual source sections.
|
||||||
|
-- "NC" is a special style that works well with NormalNC set
|
||||||
|
close_floats_on_escape_key = true,
|
||||||
|
default_source = "filesystem",
|
||||||
|
git_status_async = true,
|
||||||
|
log_level = "info", -- "trace", "debug", "info", "warn", "error", "fatal"
|
||||||
|
log_to_file = false, -- true, false, "/path/to/file.log", use :NeoTreeLogs to show the file
|
||||||
|
open_files_in_last_window = true, -- false = open files in top left window
|
||||||
|
resize_timer_interval = 100, -- in ms, needed for containers to redraw right aligned and faded content
|
||||||
|
sort_case_insensitive = true, -- used when sorting files and directories in the tree
|
||||||
|
use_popups_for_input = false, -- If false, inputs will use vim.ui.input() instead of custom floats.
|
||||||
|
sort_function = nil, -- use a custom function for sorting files and directories in the tree
|
||||||
|
|
||||||
|
event_handlers = {
|
||||||
|
-- {
|
||||||
|
-- event = "before_render",
|
||||||
|
-- handler = function (state)
|
||||||
|
-- -- add something to the state that can be used by custom components
|
||||||
|
-- end
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- event = "file_opened",
|
||||||
|
-- handler = function(file_path)
|
||||||
|
-- --auto close
|
||||||
|
-- require("neo-tree").close_all()
|
||||||
|
-- end
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- event = "file_opened",
|
||||||
|
-- handler = function(file_path)
|
||||||
|
-- --clear search after opening a file
|
||||||
|
-- require("neo-tree.sources.filesystem").reset_search()
|
||||||
|
-- end
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- event = "file_renamed",
|
||||||
|
-- handler = function(args)
|
||||||
|
-- -- fix references to file
|
||||||
|
-- print(args.source, " renamed to ", args.destination)
|
||||||
|
-- end
|
||||||
|
-- },
|
||||||
|
-- {
|
||||||
|
-- event = "file_moved",
|
||||||
|
-- handler = function(args)
|
||||||
|
-- -- fix references to file
|
||||||
|
-- print(args.source, " moved to ", args.destination)
|
||||||
|
-- end
|
||||||
|
-- },
|
||||||
|
{
|
||||||
|
event = "neo_tree_buffer_enter",
|
||||||
|
handler = function()
|
||||||
|
vim.cmd("set winbar=")
|
||||||
|
vim.cmd("highlight CursorLine gui='bold'")
|
||||||
|
vim.cmd("highlight CursorColumn guibg=NONE")
|
||||||
|
--vim.cmd("set guicursor+=a:InvisibleCursor")
|
||||||
|
--vim.cmd("highlight InvisibleCursor gui=reverse blend=100")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
event = "neo_tree_buffer_leave",
|
||||||
|
handler = function()
|
||||||
|
--vim.cmd("set guicursor-=a:InvisibleCursor")
|
||||||
|
vim.cmd("highlight CursorLine gui=NONE")
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
default_component_configs = {
|
||||||
|
container = {
|
||||||
|
enable_character_fade = true,
|
||||||
|
},
|
||||||
|
indent = {
|
||||||
|
indent_size = 2,
|
||||||
|
padding = 1, -- extra padding on left hand side
|
||||||
|
-- indent guides
|
||||||
|
with_markers = true,
|
||||||
|
indent_marker = "│",
|
||||||
|
last_indent_marker = "└",
|
||||||
|
highlight = "NeoTreeIndentMarker",
|
||||||
|
-- expander config, needed for nesting files
|
||||||
|
with_expanders = true, -- if nil and file nesting is enabled, will enable expanders
|
||||||
|
expander_collapsed = "",
|
||||||
|
expander_expanded = "",
|
||||||
|
expander_highlight = "NeoTreeExpander",
|
||||||
|
},
|
||||||
|
icon = {
|
||||||
|
folder_closed = "",
|
||||||
|
folder_open = "",
|
||||||
|
folder_empty = "-",
|
||||||
|
-- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there
|
||||||
|
-- then these will never be used.
|
||||||
|
default = "*",
|
||||||
|
highlight = "NeoTreeFileIcon",
|
||||||
|
},
|
||||||
|
modified = {
|
||||||
|
symbol = "[+]",
|
||||||
|
highlight = "NeoTreeModified",
|
||||||
|
},
|
||||||
|
name = {
|
||||||
|
trailing_slash = true,
|
||||||
|
use_git_status_colors = false,
|
||||||
|
highlight = "NeoTreeFileName",
|
||||||
|
},
|
||||||
|
git_status = {
|
||||||
|
symbols = {
|
||||||
|
-- Change type
|
||||||
|
added = "˖", -- or "✚", but this is redundant info if you use git_status_colors on the name
|
||||||
|
modified = "±", -- or "", but this is redundant info if you use git_status_colors on the name
|
||||||
|
deleted = "✕", -- this can only be used in the git_status source
|
||||||
|
renamed = "↪", -- this can only be used in the git_status source
|
||||||
|
-- Status type
|
||||||
|
untracked = "?",
|
||||||
|
ignored = "⍨",
|
||||||
|
unstaged = "·",
|
||||||
|
staged = "✓",
|
||||||
|
conflict = "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
renderers = {
|
||||||
|
directory = {
|
||||||
|
{ "indent" },
|
||||||
|
{ "icon" },
|
||||||
|
{ "current_filter" },
|
||||||
|
{
|
||||||
|
"container",
|
||||||
|
width = "100%",
|
||||||
|
right_padding = 0,
|
||||||
|
--max_width = 60,
|
||||||
|
content = {
|
||||||
|
{ "name", zindex = 10 },
|
||||||
|
-- {
|
||||||
|
-- "symlink_target",
|
||||||
|
-- zindex = 10,
|
||||||
|
-- highlight = "NeoTreeSymbolicLinkTarget",
|
||||||
|
-- },
|
||||||
|
{ "clipboard", zindex = 10 },
|
||||||
|
{ "diagnostics", errors_only = true, zindex = 20, align = "right" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
file = {
|
||||||
|
{ "indent" },
|
||||||
|
{ "icon" },
|
||||||
|
{
|
||||||
|
"container",
|
||||||
|
width = "100%",
|
||||||
|
right_padding = 0,
|
||||||
|
--max_width = 60,
|
||||||
|
content = {
|
||||||
|
{
|
||||||
|
"name",
|
||||||
|
use_git_status_colors = false,
|
||||||
|
zindex = 10,
|
||||||
|
},
|
||||||
|
-- {
|
||||||
|
-- "symlink_target",
|
||||||
|
-- zindex = 10,
|
||||||
|
-- highlight = "NeoTreeSymbolicLinkTarget",
|
||||||
|
-- },
|
||||||
|
{ "clipboard", zindex = 10 },
|
||||||
|
{ "bufnr", zindex = 10 },
|
||||||
|
-- { "harpoon_index" }, --> This is what actually adds the component in where you want it
|
||||||
|
{ "modified", zindex = 20, align = "right" },
|
||||||
|
{ "diagnostics", zindex = 20, align = "right" },
|
||||||
|
{ "git_status", zindex = 20, align = "right" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- A list of functions, each representing a global custom command
|
||||||
|
-- that will be available in all sources (if not overridden in `opts[source_name].commands`)
|
||||||
|
-- see `:h neo-tree-custom-commands-global`
|
||||||
|
commands = {},
|
||||||
|
window = { -- see https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/popup for
|
||||||
|
-- possible options. These can also be functions that return these options.
|
||||||
|
position = "left", -- left, right, float, current
|
||||||
|
width = 40, -- applies to left and right positions
|
||||||
|
mapping_options = {
|
||||||
|
noremap = true,
|
||||||
|
nowait = true,
|
||||||
|
},
|
||||||
|
popup = { -- settings that apply to float position only
|
||||||
|
size = {
|
||||||
|
height = "80%",
|
||||||
|
width = "50%",
|
||||||
|
},
|
||||||
|
position = "50%", -- 50% means center it
|
||||||
|
-- you can also specify border here, if you want a different setting from
|
||||||
|
-- the global popup_border_style.
|
||||||
|
},
|
||||||
|
-- Mappings for tree window. See `:h nep-tree-mappings` for a list of built-in commands.
|
||||||
|
-- You can also create your own commands by providing a function instead of a string.
|
||||||
|
mappings = {
|
||||||
|
["<space>"] = {
|
||||||
|
"toggle_node",
|
||||||
|
nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use
|
||||||
|
},
|
||||||
|
["<2-LeftMouse>"] = "open",
|
||||||
|
["<cr>"] = "open",
|
||||||
|
["<esc>"] = "cancel", -- close preview or floating neo-tree window
|
||||||
|
["P"] = { "toggle_preview", config = { use_float = true } },
|
||||||
|
["l"] = "focus_preview",
|
||||||
|
["S"] = "open_split",
|
||||||
|
["s"] = "open_vsplit",
|
||||||
|
-- ["S"] = "split_with_window_picker",
|
||||||
|
-- ["s"] = "vsplit_with_window_picker",
|
||||||
|
["t"] = "open_tabnew",
|
||||||
|
-- ["<cr>"] = "open_drop",
|
||||||
|
-- ["t"] = "open_tab_drop",
|
||||||
|
["w"] = "open_with_window_picker",
|
||||||
|
--["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing
|
||||||
|
["C"] = "close_node",
|
||||||
|
-- ['C'] = 'close_all_subnodes',
|
||||||
|
["z"] = "close_all_nodes",
|
||||||
|
--["Z"] = "expand_all_nodes",
|
||||||
|
["a"] = {
|
||||||
|
"add",
|
||||||
|
-- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details
|
||||||
|
-- some commands may take optional config options, see `:h neo-tree-mappings` for details
|
||||||
|
config = {
|
||||||
|
show_path = "none", -- "none", "relative", "absolute"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion.
|
||||||
|
["d"] = "delete",
|
||||||
|
["r"] = "rename",
|
||||||
|
["y"] = "copy_to_clipboard",
|
||||||
|
["x"] = "cut_to_clipboard",
|
||||||
|
["p"] = "paste_from_clipboard",
|
||||||
|
["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add":
|
||||||
|
-- ["c"] = {
|
||||||
|
-- "copy",
|
||||||
|
-- config = {
|
||||||
|
-- show_path = "none" -- "none", "relative", "absolute"
|
||||||
|
-- }
|
||||||
|
--}
|
||||||
|
["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add".
|
||||||
|
["q"] = "close_window",
|
||||||
|
["R"] = "refresh",
|
||||||
|
["?"] = "show_help",
|
||||||
|
["<"] = "prev_source",
|
||||||
|
[">"] = "next_source",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
nesting_rules = {},
|
||||||
|
filesystem = {
|
||||||
|
commands = {}, -- Add a custom command or override a global one using the same function name
|
||||||
|
components = {
|
||||||
|
harpoon_index = function(config, node, state)
|
||||||
|
local Marked = require("harpoon.mark")
|
||||||
|
local path = node:get_id()
|
||||||
|
local succuss, index = pcall(Marked.get_index_of, path)
|
||||||
|
if succuss and index and index > 0 then
|
||||||
|
return {
|
||||||
|
text = string.format(" ⥤ %d", index), -- <-- Add your favorite harpoon like arrow here
|
||||||
|
highlight = config.highlight or "NeoTreeDirectoryIcon",
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
filtered_items = {
|
||||||
|
visible = false, -- when true, they will just be displayed differently than normal items
|
||||||
|
hide_dotfiles = false,
|
||||||
|
hide_gitignored = false,
|
||||||
|
hide_hidden = true, -- only works on Windows for hidden files/directories
|
||||||
|
hide_by_name = {
|
||||||
|
".git",
|
||||||
|
".DS_Store",
|
||||||
|
"thumbs.db",
|
||||||
|
".idea",
|
||||||
|
".mypy_cache",
|
||||||
|
"node_modules",
|
||||||
|
},
|
||||||
|
hide_by_pattern = { -- uses glob style patterns
|
||||||
|
--"*.meta",
|
||||||
|
--"*/src/*/tsconfig.json",
|
||||||
|
"*-cache",
|
||||||
|
"*.cache",
|
||||||
|
".null-ls_*",
|
||||||
|
},
|
||||||
|
never_show = { -- remains hidden even if visible is toggled to true
|
||||||
|
".DS_Store",
|
||||||
|
"thumbs.db",
|
||||||
|
},
|
||||||
|
always_show = { -- remains visible even if other settings would normally hide it
|
||||||
|
".gitignore",
|
||||||
|
".gitkeep",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
find_by_full_path_words = true,
|
||||||
|
group_empty_dirs = false, -- when true, empty folders will be grouped together
|
||||||
|
bind_to_cwd = false, -- true creates a 2-way binding between vim's cwd and neo-tree's root
|
||||||
|
search_limit = 50, -- max number of search results when using filters
|
||||||
|
follow_current_file = {
|
||||||
|
enabled = false, -- This will find and focus the file in the active buffer every time
|
||||||
|
-- -- the current file is changed while the tree is open.
|
||||||
|
leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
|
||||||
|
},
|
||||||
|
hijack_netrw_behavior = "open_default", -- netrw disabled, opening a directory opens neo-tree
|
||||||
|
-- in whatever position is specified in window.position
|
||||||
|
-- "open_current", -- netrw disabled, opening a directory opens within the
|
||||||
|
-- window like netrw would, regardless of window.position
|
||||||
|
-- "disabled", -- netrw left alone, neo-tree does not handle opening dirs
|
||||||
|
use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes
|
||||||
|
-- instead of relying on nvim autocmd events.
|
||||||
|
window = {
|
||||||
|
mappings = {
|
||||||
|
["."] = "set_root",
|
||||||
|
["/"] = "fuzzy_finder",
|
||||||
|
["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm
|
||||||
|
["<bs>"] = "navigate_up",
|
||||||
|
["<c-up>"] = "navigate_up",
|
||||||
|
["<c-x>"] = "clear_filter",
|
||||||
|
["D"] = "fuzzy_finder_directory",
|
||||||
|
["f"] = "filter_on_submit",
|
||||||
|
["gn"] = "next_git_modified",
|
||||||
|
["gp"] = "prev_git_modified",
|
||||||
|
["H"] = "toggle_hidden",
|
||||||
|
},
|
||||||
|
fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode
|
||||||
|
["<down>"] = "move_cursor_down",
|
||||||
|
["<C-n>"] = "move_cursor_down",
|
||||||
|
["<up>"] = "move_cursor_up",
|
||||||
|
["<C-p>"] = "move_cursor_up",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
buffers = {
|
||||||
|
follow_current_file = {
|
||||||
|
enabled = true, -- This will find and focus the file in the active buffer every time
|
||||||
|
-- -- the current file is changed while the tree is open.
|
||||||
|
leave_dirs_open = true, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
|
||||||
|
},
|
||||||
|
group_empty_dirs = true, -- when true, empty folders will be grouped together
|
||||||
|
show_unloaded = true,
|
||||||
|
window = {
|
||||||
|
mappings = {
|
||||||
|
["bd"] = "buffer_delete",
|
||||||
|
["<bs>"] = "navigate_up",
|
||||||
|
["."] = "set_root",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
git_status = {
|
||||||
|
window = {
|
||||||
|
position = "float",
|
||||||
|
mappings = {
|
||||||
|
["A"] = "git_add_all",
|
||||||
|
["gu"] = "git_unstage_file",
|
||||||
|
["ga"] = "git_add_file",
|
||||||
|
["gr"] = "git_revert_file",
|
||||||
|
["gc"] = "git_commit",
|
||||||
|
["gp"] = "git_push",
|
||||||
|
["gg"] = "git_commit_and_push",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.cmd([[nnoremap \ :Neotree reveal<cr>]])
|
||||||
|
end,
|
||||||
|
}
|
||||||
20
config/nvim/lua/plugins/neogen.lua
Normal file
20
config/nvim/lua/plugins/neogen.lua
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
local prefix = "<leader>a"
|
||||||
|
return {
|
||||||
|
"danymat/neogen",
|
||||||
|
cmd = "Neogen",
|
||||||
|
opts = {
|
||||||
|
snippet_engine = "luasnip",
|
||||||
|
languages = {
|
||||||
|
lua = { template = { annotation_convention = "ldoc" } },
|
||||||
|
typescript = { template = { annotation_convention = "tsdoc" } },
|
||||||
|
typescriptreact = { template = { annotation_convention = "tsdoc" } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ prefix .. "<cr>", function() require("neogen").generate({ type = "current" }) end, desc = "Current" },
|
||||||
|
{ prefix .. "c", function() require("neogen").generate({ type = "class" }) end, desc = "Class" },
|
||||||
|
{ prefix .. "f", function() require("neogen").generate({ type = "func" }) end, desc = "Function" },
|
||||||
|
{ prefix .. "t", function() require("neogen").generate({ type = "type" }) end, desc = "Type" },
|
||||||
|
{ prefix .. "F", function() require("neogen").generate({ type = "file" }) end, desc = "File" },
|
||||||
|
},
|
||||||
|
}
|
||||||
56
config/nvim/lua/plugins/null-ls.lua
Normal file
56
config/nvim/lua/plugins/null-ls.lua
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
return {
|
||||||
|
"jose-elias-alvarez/null-ls.nvim",
|
||||||
|
config = function()
|
||||||
|
local null_ls = require("null-ls")
|
||||||
|
-- Check supported formatters and linters
|
||||||
|
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
|
||||||
|
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
|
||||||
|
|
||||||
|
-- Register any number of sources simultaneously
|
||||||
|
null_ls.setup({
|
||||||
|
-- filetypes = { "markdown", "text" },
|
||||||
|
sources = {
|
||||||
|
|
||||||
|
-- Code Actions
|
||||||
|
null_ls.builtins.code_actions.eslint,
|
||||||
|
null_ls.builtins.code_actions.gitsigns,
|
||||||
|
null_ls.builtins.code_actions.refactoring,
|
||||||
|
null_ls.builtins.code_actions.shellcheck,
|
||||||
|
|
||||||
|
-- Diagnostics
|
||||||
|
null_ls.builtins.diagnostics.actionlint,
|
||||||
|
null_ls.builtins.diagnostics.alex,
|
||||||
|
null_ls.builtins.diagnostics.ansiblelint,
|
||||||
|
null_ls.builtins.diagnostics.dotenv_linter,
|
||||||
|
null_ls.builtins.diagnostics.editorconfig_checker,
|
||||||
|
null_ls.builtins.diagnostics.eslint,
|
||||||
|
null_ls.builtins.diagnostics.jsonlint,
|
||||||
|
null_ls.builtins.diagnostics.luacheck,
|
||||||
|
null_ls.builtins.diagnostics.php,
|
||||||
|
null_ls.builtins.diagnostics.phpcs,
|
||||||
|
null_ls.builtins.diagnostics.phpstan,
|
||||||
|
null_ls.builtins.diagnostics.psalm,
|
||||||
|
null_ls.builtins.diagnostics.semgrep,
|
||||||
|
null_ls.builtins.diagnostics.shellcheck,
|
||||||
|
null_ls.builtins.diagnostics.stylelint,
|
||||||
|
null_ls.builtins.diagnostics.tfsec,
|
||||||
|
null_ls.builtins.diagnostics.trail_space,
|
||||||
|
null_ls.builtins.diagnostics.tsc,
|
||||||
|
null_ls.builtins.diagnostics.write_good,
|
||||||
|
null_ls.builtins.diagnostics.zsh,
|
||||||
|
|
||||||
|
-- Formatting
|
||||||
|
null_ls.builtins.formatting.clang_format,
|
||||||
|
null_ls.builtins.formatting.fixjson,
|
||||||
|
null_ls.builtins.formatting.isort,
|
||||||
|
null_ls.builtins.formatting.jq,
|
||||||
|
null_ls.builtins.formatting.phpcsfixer,
|
||||||
|
null_ls.builtins.formatting.prettier,
|
||||||
|
null_ls.builtins.formatting.rome,
|
||||||
|
null_ls.builtins.formatting.shfmt.with({
|
||||||
|
args = { "-i", "1", "-bn", "-ci", "-sr", "-kb", "-fn" },
|
||||||
|
}),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
257
config/nvim/lua/plugins/nvim-cmp.lua
Normal file
257
config/nvim/lua/plugins/nvim-cmp.lua
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
-- Completion menu.
|
||||||
|
|
||||||
|
-- Icons to display.
|
||||||
|
local icons = {
|
||||||
|
Text = " ",
|
||||||
|
Method = " ",
|
||||||
|
Function = " ",
|
||||||
|
Constructor = " ",
|
||||||
|
Field = " ﰠ ",
|
||||||
|
Variable = " ",
|
||||||
|
Class = " ﴯ ",
|
||||||
|
Interface = " ",
|
||||||
|
Module = " ",
|
||||||
|
Property = " ﰠ ",
|
||||||
|
Unit = " 塞 ",
|
||||||
|
Value = " ",
|
||||||
|
Enum = " ",
|
||||||
|
Keyword = " ",
|
||||||
|
Snippet = " ",
|
||||||
|
Color = " ",
|
||||||
|
File = " ",
|
||||||
|
Reference = " ",
|
||||||
|
Folder = " ",
|
||||||
|
EnumMember = " ",
|
||||||
|
Constant = " ",
|
||||||
|
Struct = " פּ ",
|
||||||
|
Event = " ",
|
||||||
|
Operator = " ",
|
||||||
|
TypeParameter = " T ",
|
||||||
|
Book = " ",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Load loaders from VSCode.
|
||||||
|
--require("luasnip.loaders.from_vscode").lazy_load({
|
||||||
|
-- paths = { "~/.local/share/lazy/friendly-snippets" }
|
||||||
|
--})
|
||||||
|
|
||||||
|
return {
|
||||||
|
"hrsh7th/nvim-cmp",
|
||||||
|
dependencies = {
|
||||||
|
{ "octaltree/cmp-look" },
|
||||||
|
--
|
||||||
|
{ "hrsh7th/cmp-nvim-lsp" },
|
||||||
|
--
|
||||||
|
{ "hrsh7th/cmp-nvim-lua" },
|
||||||
|
-- Buffer words.
|
||||||
|
{ "hrsh7th/cmp-buffer" },
|
||||||
|
-- Path autocompletion.
|
||||||
|
{ "hrsh7th/cmp-path" },
|
||||||
|
--
|
||||||
|
{ "hrsh7th/cmp-cmdline" },
|
||||||
|
--
|
||||||
|
{ "saadparwaiz1/cmp_luasnip" },
|
||||||
|
--
|
||||||
|
{ "hrsh7th/vim-vsnip" },
|
||||||
|
--
|
||||||
|
{ "rafamadriz/friendly-snippets" },
|
||||||
|
-- Snippets for lua.
|
||||||
|
{ "L3MON4D3/LuaSnip" }, --config = "luasnip" },
|
||||||
|
--
|
||||||
|
{ "hrsh7th/cmp-vsnip" },
|
||||||
|
--
|
||||||
|
-- Signature for functions.
|
||||||
|
--{ 'hrsh7th/cmp-nvim-lsp-signature-help' },
|
||||||
|
--
|
||||||
|
{ "hrsh7th/vim-vsnip-integ" },
|
||||||
|
-- Make arimathetic operations.
|
||||||
|
{ "hrsh7th/cmp-calc" },
|
||||||
|
-- Emoji.
|
||||||
|
{ "hrsh7th/cmp-emoji" },
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local cmp = require("cmp")
|
||||||
|
local luasnip = require("luasnip")
|
||||||
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
luasnip.config.setup({})
|
||||||
|
|
||||||
|
-- Load specialities from LuaSnip.
|
||||||
|
-- Set it with VSCode-like mode.
|
||||||
|
luasnip.config.set_config({
|
||||||
|
history = true,
|
||||||
|
updateevents = "TextChanged,TextChangedI",
|
||||||
|
})
|
||||||
|
|
||||||
|
cmp.setup({
|
||||||
|
|
||||||
|
-- Window documentation, for defining its dimensions.
|
||||||
|
window = {
|
||||||
|
-- Max 10 items on display for documentation.
|
||||||
|
max_height = 10,
|
||||||
|
completion = {
|
||||||
|
side_padding = 0,
|
||||||
|
col_offset = 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Snippet support.
|
||||||
|
snippet = {
|
||||||
|
expand = function(args) require("luasnip").lsp_expand(args.body) end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- How the match works based on the input.
|
||||||
|
matching = {
|
||||||
|
-- Whethever we allow fuzzy matching or not.
|
||||||
|
disallow_fuzzy_matching = false,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Mapping each keybind.
|
||||||
|
mapping = {
|
||||||
|
["<C-n>"] = cmp.mapping.select_next_item(),
|
||||||
|
["<C-p>"] = cmp.mapping.select_prev_item(),
|
||||||
|
|
||||||
|
["<C-d>"] = cmp.mapping.scroll_docs(-4),
|
||||||
|
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||||
|
["<C-Space>"] = cmp.mapping.complete(),
|
||||||
|
["<C-e>"] = cmp.mapping.close(),
|
||||||
|
["<CR>"] = cmp.mapping.confirm({
|
||||||
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
|
select = true,
|
||||||
|
}),
|
||||||
|
["<Tab>"] = function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif require("luasnip").expand_or_jumpable() then
|
||||||
|
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
["<S-Tab>"] = function(fallback)
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif require("luasnip").jumpable(-1) then
|
||||||
|
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Formatting the menu display.
|
||||||
|
formatting = {
|
||||||
|
fields = { "kind", "abbr", "menu" },
|
||||||
|
format = function(_, vim_item)
|
||||||
|
vim_item.menu = vim_item.kind
|
||||||
|
|
||||||
|
-- load lspkind icons
|
||||||
|
--vim_item.kind = string.format(
|
||||||
|
-- "%s %s",
|
||||||
|
-- icons[vim_item.kind],
|
||||||
|
-- vim_item.kind
|
||||||
|
--)
|
||||||
|
vim_item.kind = icons[vim_item.kind]
|
||||||
|
|
||||||
|
--vim_item.menu = string.format(
|
||||||
|
-- "%s %s",
|
||||||
|
-- ({
|
||||||
|
-- nvim_lsp = "力",
|
||||||
|
-- nvim_lua = "",
|
||||||
|
-- luasnip = icons.Color,
|
||||||
|
-- path = "",
|
||||||
|
-- buffer = " ",
|
||||||
|
-- look = icons.Book,
|
||||||
|
-- emoji = "😎",
|
||||||
|
-- })[entry.source.name],
|
||||||
|
-- name
|
||||||
|
--)
|
||||||
|
|
||||||
|
return vim_item
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Experimental features.
|
||||||
|
experimental = {
|
||||||
|
|
||||||
|
-- It will type a shadow text of the intended completion.
|
||||||
|
ghost_text = { hl_group = "Comment" },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Sources for completion, since it is modular; cmp accepts
|
||||||
|
-- Multiple modules.
|
||||||
|
sources = {
|
||||||
|
|
||||||
|
-- Simple signature, normally outside an object.
|
||||||
|
--{ name = 'nvim_lsp_signature_help', priority = 15 },
|
||||||
|
|
||||||
|
-- More snippets.
|
||||||
|
-- For all types of languages.
|
||||||
|
{
|
||||||
|
name = "friendly-snippets",
|
||||||
|
priority = 11,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- For the Nvim lua specifics commands.
|
||||||
|
{
|
||||||
|
name = "nvim_lua",
|
||||||
|
priority = 8,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Support with the current active LSP.
|
||||||
|
-- Anything that LSP supports and can share with CMP.
|
||||||
|
{
|
||||||
|
name = "nvim_lsp",
|
||||||
|
priority = 11,
|
||||||
|
--max_item_count = 10,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Snippets in general to facilitate life.
|
||||||
|
-- Type a often typed methods, like for in C.
|
||||||
|
-- { name = "luasnip", priority = 6 },
|
||||||
|
|
||||||
|
-- Show path based on the backslashes.
|
||||||
|
-- Type any path, relatively or globally.
|
||||||
|
{
|
||||||
|
name = "path",
|
||||||
|
priority = 9,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Words from buffer.
|
||||||
|
{
|
||||||
|
name = "buffer",
|
||||||
|
priority = 4,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Max item count.
|
||||||
|
|
||||||
|
-- Dictionary for words.
|
||||||
|
-- Type any word that is on the /usr/share/dict/words
|
||||||
|
--{
|
||||||
|
-- name = 'look',
|
||||||
|
-- priority = 1,
|
||||||
|
-- keyword_length = 3,
|
||||||
|
-- max_item_count = 4,
|
||||||
|
-- option = {
|
||||||
|
-- convert_case = true,
|
||||||
|
-- loud = true,
|
||||||
|
-- dict = '/usr/share/dict/words'
|
||||||
|
-- },
|
||||||
|
--},
|
||||||
|
|
||||||
|
-- Emoji.
|
||||||
|
-- Activate with ":".
|
||||||
|
{ name = "emoji", priority = 2, option = { insert = true } },
|
||||||
|
|
||||||
|
-- Calculate expressions based on the current line.
|
||||||
|
-- Activate with something like "4 + 5".
|
||||||
|
{
|
||||||
|
name = "calc",
|
||||||
|
priority = 10,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- The line beneath this is called `modeline`. See `:help modeline`
|
||||||
|
-- vim: ts=2 sts=2 sw=2 et
|
||||||
92
config/nvim/lua/plugins/nvim-dap.lua
Normal file
92
config/nvim/lua/plugins/nvim-dap.lua
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
--
|
||||||
|
-- Shows how to use the DAP plugin to debug your code.
|
||||||
|
--
|
||||||
|
-- Primarily focused on configuring the debugger for Go, but can
|
||||||
|
-- be extended to other languages as well. That's why it's called
|
||||||
|
-- kickstart.nvim and not kitchen-sink.nvim ;)
|
||||||
|
|
||||||
|
return {
|
||||||
|
"mfussenegger/nvim-dap",
|
||||||
|
dependencies = {
|
||||||
|
-- Creates a beautiful debugger UI
|
||||||
|
"rcarriga/nvim-dap-ui",
|
||||||
|
|
||||||
|
-- Installs the debug adapters for you
|
||||||
|
"williamboman/mason.nvim",
|
||||||
|
"jay-babu/mason-nvim-dap.nvim",
|
||||||
|
|
||||||
|
-- Add your own debuggers here
|
||||||
|
"leoluz/nvim-dap-go",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local dap = require("dap")
|
||||||
|
local dapui = require("dapui")
|
||||||
|
|
||||||
|
require("mason-nvim-dap").setup({
|
||||||
|
-- Makes a best effort to setup the various debuggers with
|
||||||
|
-- reasonable debug configurations
|
||||||
|
automatic_setup = true,
|
||||||
|
automatic_installation = true,
|
||||||
|
|
||||||
|
-- You can provide additional configuration to the handlers,
|
||||||
|
-- see mason-nvim-dap README for more information
|
||||||
|
handlers = {},
|
||||||
|
|
||||||
|
-- You'll need to check that you have the required things installed
|
||||||
|
-- online, please don't ask me how to install them :)
|
||||||
|
ensure_installed = {
|
||||||
|
-- Update this to ensure that you have the debuggers for the langs you want
|
||||||
|
"bash",
|
||||||
|
"delve",
|
||||||
|
"js",
|
||||||
|
"php",
|
||||||
|
"python",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Basic debugging keymaps, feel free to change to your liking!
|
||||||
|
vim.keymap.set("n", "<F5>", dap.continue, { desc = "Debug: Start/Continue" })
|
||||||
|
vim.keymap.set("n", "<F1>", dap.step_into, { desc = "Debug: Step Into" })
|
||||||
|
vim.keymap.set("n", "<F2>", dap.step_over, { desc = "Debug: Step Over" })
|
||||||
|
vim.keymap.set("n", "<F3>", dap.step_out, { desc = "Debug: Step Out" })
|
||||||
|
vim.keymap.set("n", "<leader>Db", dap.toggle_breakpoint, { desc = "Debug: Toggle Breakpoint" })
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>DB",
|
||||||
|
function() dap.set_breakpoint(vim.fn.input("Breakpoint condition: ")) end,
|
||||||
|
{ desc = "Debug: Set Breakpoint" }
|
||||||
|
)
|
||||||
|
|
||||||
|
-- Dap UI setup
|
||||||
|
-- For more information, see |:help nvim-dap-ui|
|
||||||
|
dapui.setup({
|
||||||
|
-- Set icons to characters that are more likely to work in every terminal.
|
||||||
|
-- Feel free to remove or use ones that you like more! :)
|
||||||
|
-- Don't feel like these are good choices.
|
||||||
|
icons = { expanded = "▾", collapsed = "▸", current_frame = "*" },
|
||||||
|
controls = {
|
||||||
|
icons = {
|
||||||
|
pause = "⏸",
|
||||||
|
play = "▶",
|
||||||
|
step_into = "⏎",
|
||||||
|
step_over = "⏭",
|
||||||
|
step_out = "⏮",
|
||||||
|
step_back = "b",
|
||||||
|
run_last = "▶▶",
|
||||||
|
terminate = "⏹",
|
||||||
|
disconnect = "⏏",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
|
||||||
|
vim.keymap.set("n", "<F7>", dapui.toggle, { desc = "Debug: See last session result." })
|
||||||
|
|
||||||
|
dap.listeners.after.event_initialized["dapui_config"] = dapui.open
|
||||||
|
dap.listeners.before.event_terminated["dapui_config"] = dapui.close
|
||||||
|
dap.listeners.before.event_exited["dapui_config"] = dapui.close
|
||||||
|
|
||||||
|
-- Install golang specific config
|
||||||
|
require("dap-go").setup()
|
||||||
|
end,
|
||||||
|
}
|
||||||
81
config/nvim/lua/plugins/nvim-lspconfig.lua
Normal file
81
config/nvim/lua/plugins/nvim-lspconfig.lua
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
return {
|
||||||
|
-- LSP auto-complete.
|
||||||
|
"neovim/nvim-lspconfig",
|
||||||
|
dependencies = {
|
||||||
|
-- Automatically install LSPs to stdpath for neovim
|
||||||
|
{ "williamboman/mason.nvim", config = true },
|
||||||
|
"williamboman/mason-lspconfig.nvim",
|
||||||
|
|
||||||
|
-- Useful status updates for LSP
|
||||||
|
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
|
||||||
|
{ "j-hui/fidget.nvim", tag = "legacy", opts = {} },
|
||||||
|
|
||||||
|
-- Additional lua configuration, makes nvim stuff amazing!
|
||||||
|
"folke/neodev.nvim",
|
||||||
|
},
|
||||||
|
init = function()
|
||||||
|
-- disable lsp watcher. Too slow on linux
|
||||||
|
local ok, wf = pcall(require, "vim.lsp._watchfiles")
|
||||||
|
if ok then wf._watchfunc = function()
|
||||||
|
return function() end
|
||||||
|
end end
|
||||||
|
end,
|
||||||
|
config = function()
|
||||||
|
-- Switch for controlling whether you want autoformatting.
|
||||||
|
-- Use :KickstartFormatToggle to toggle autoformatting on or off
|
||||||
|
local format_is_enabled = true
|
||||||
|
vim.api.nvim_create_user_command("KickstartFormatToggle", function()
|
||||||
|
format_is_enabled = not format_is_enabled
|
||||||
|
print("Setting autoformatting to: " .. tostring(format_is_enabled))
|
||||||
|
end, {})
|
||||||
|
|
||||||
|
-- Create an augroup that is used for managing our formatting autocmds.
|
||||||
|
-- We need one augroup per client to make sure that multiple clients
|
||||||
|
-- can attach to the same buffer without interfering with each other.
|
||||||
|
local _augroups = {}
|
||||||
|
local get_augroup = function(client)
|
||||||
|
if not _augroups[client.id] then
|
||||||
|
local group_name = "kickstart-lsp-format-" .. client.name
|
||||||
|
local id = vim.api.nvim_create_augroup(group_name, { clear = true })
|
||||||
|
_augroups[client.id] = id
|
||||||
|
end
|
||||||
|
|
||||||
|
return _augroups[client.id]
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Whenever an LSP attaches to a buffer, we will run this function.
|
||||||
|
--
|
||||||
|
-- See `:help LspAttach` for more information about this autocmd event.
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
group = vim.api.nvim_create_augroup("kickstart-lsp-attach-format", { clear = true }),
|
||||||
|
-- This is where we attach the autoformatting for reasonable clients
|
||||||
|
callback = function(args)
|
||||||
|
local client_id = args.data.client_id
|
||||||
|
local client = vim.lsp.get_client_by_id(client_id)
|
||||||
|
local bufnr = args.buf
|
||||||
|
|
||||||
|
-- Only attach to clients that support document formatting
|
||||||
|
if not client.server_capabilities.documentFormattingProvider then return end
|
||||||
|
|
||||||
|
-- Tsserver usually works poorly. Sorry you work with bad languages
|
||||||
|
-- You can remove this line if you know what you're doing :)
|
||||||
|
if client.name == "tsserver" then return end
|
||||||
|
|
||||||
|
-- Create an autocmd that will run *before* we save the buffer.
|
||||||
|
-- Run the formatting command for the LSP that has just attached.
|
||||||
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||||
|
group = get_augroup(client),
|
||||||
|
buffer = bufnr,
|
||||||
|
callback = function()
|
||||||
|
if not format_is_enabled then return end
|
||||||
|
|
||||||
|
vim.lsp.buf.format({
|
||||||
|
async = false,
|
||||||
|
filter = function(c) return c.id == client.id end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
9
config/nvim/lua/plugins/nvim-origami.lua
Normal file
9
config/nvim/lua/plugins/nvim-origami.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
"chrisgrieser/nvim-origami",
|
||||||
|
event = "BufReadPost", -- later or on keypress would prevent saving folds
|
||||||
|
opts = {
|
||||||
|
keepFoldsAcrossSessions = true,
|
||||||
|
pauseFoldsOnSearch = true,
|
||||||
|
setupFoldKeymaps = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
5
config/nvim/lua/plugins/nvim-regexplainer.lua
Normal file
5
config/nvim/lua/plugins/nvim-regexplainer.lua
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
return {
|
||||||
|
"bennypowers/nvim-regexplainer",
|
||||||
|
opts = {},
|
||||||
|
ft = { "html", "javascript", "javascriptreact", "typescript", "typescriptreact" },
|
||||||
|
}
|
||||||
17
config/nvim/lua/plugins/nvim-surround.lua
Normal file
17
config/nvim/lua/plugins/nvim-surround.lua
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
--[[
|
||||||
|
Old text Command New text
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
surround_words ysiw) (surround_words)
|
||||||
|
make strings ys$" "make strings"
|
||||||
|
[delete ar*ound me!] ds] delete around me!
|
||||||
|
"change quot*es" cs'" "change quotes"
|
||||||
|
<b>or tag* types</b> csth1<CR> <h1>or tag types</h1>
|
||||||
|
delete(functi*on calls) dsf function calls
|
||||||
|
]]
|
||||||
|
|
||||||
|
return {
|
||||||
|
"kylechui/nvim-surround",
|
||||||
|
version = "*", -- Use for stability; omit to use `main` branch for the latest features
|
||||||
|
event = "VeryLazy",
|
||||||
|
config = function() require("nvim-surround").setup() end,
|
||||||
|
}
|
||||||
9
config/nvim/lua/plugins/nvim-treesitter-context.lua
Normal file
9
config/nvim/lua/plugins/nvim-treesitter-context.lua
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
return {
|
||||||
|
"nvim-treesitter/nvim-treesitter-context",
|
||||||
|
lazy = false,
|
||||||
|
enabled = true,
|
||||||
|
opts = {
|
||||||
|
enable = true,
|
||||||
|
mode = "cursor", -- cursor, or topline
|
||||||
|
},
|
||||||
|
}
|
||||||
110
config/nvim/lua/plugins/nvim-treesitter.lua
Normal file
110
config/nvim/lua/plugins/nvim-treesitter.lua
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
-- Treesitter (more highlight for syntax_on).
|
||||||
|
|
||||||
|
return {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
build = ":TSUpdate",
|
||||||
|
config = function()
|
||||||
|
require("nvim-treesitter.configs").setup({
|
||||||
|
-- Add languages to be installed here that you want installed for treesitter
|
||||||
|
ensure_installed = {
|
||||||
|
"bash",
|
||||||
|
"c",
|
||||||
|
"cmake",
|
||||||
|
"comment",
|
||||||
|
"diff",
|
||||||
|
"dockerfile",
|
||||||
|
"gitignore",
|
||||||
|
"go",
|
||||||
|
"graphql",
|
||||||
|
"html",
|
||||||
|
"javascript",
|
||||||
|
"json",
|
||||||
|
"json5",
|
||||||
|
"latex",
|
||||||
|
"lua",
|
||||||
|
"markdown",
|
||||||
|
"php",
|
||||||
|
"phpdoc",
|
||||||
|
"python",
|
||||||
|
"regex",
|
||||||
|
"scss",
|
||||||
|
"terraform",
|
||||||
|
"todotxt",
|
||||||
|
"toml",
|
||||||
|
"tsx",
|
||||||
|
"typescript",
|
||||||
|
"vim",
|
||||||
|
"vimdoc",
|
||||||
|
"vue",
|
||||||
|
"yaml",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Autoinstall languages that are not installed.
|
||||||
|
auto_install = true,
|
||||||
|
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
disable = {},
|
||||||
|
--injections = {
|
||||||
|
-- python = {
|
||||||
|
-- docstrings: "markdown",
|
||||||
|
-- },
|
||||||
|
--}
|
||||||
|
},
|
||||||
|
indent = { enable = true },
|
||||||
|
incremental_selection = {
|
||||||
|
enable = true,
|
||||||
|
keymaps = {
|
||||||
|
init_selection = "<c-space>",
|
||||||
|
node_incremental = "<c-space>",
|
||||||
|
scope_incremental = "<c-s>",
|
||||||
|
node_decremental = "<M-space>",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
textobjects = {
|
||||||
|
select = {
|
||||||
|
enable = true,
|
||||||
|
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
|
||||||
|
keymaps = {
|
||||||
|
-- You can use the capture groups defined in textobjects.scm
|
||||||
|
["aa"] = "@parameter.outer",
|
||||||
|
["ia"] = "@parameter.inner",
|
||||||
|
["af"] = "@function.outer",
|
||||||
|
["if"] = "@function.inner",
|
||||||
|
["ac"] = "@class.outer",
|
||||||
|
["ic"] = "@class.inner",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
move = {
|
||||||
|
enable = true,
|
||||||
|
set_jumps = true, -- whether to set jumps in the jumplist
|
||||||
|
goto_next_start = {
|
||||||
|
["]m"] = "@function.outer",
|
||||||
|
["]]"] = "@class.outer",
|
||||||
|
},
|
||||||
|
goto_next_end = {
|
||||||
|
["]M"] = "@function.outer",
|
||||||
|
["]["] = "@class.outer",
|
||||||
|
},
|
||||||
|
goto_previous_start = {
|
||||||
|
["[m"] = "@function.outer",
|
||||||
|
["[["] = "@class.outer",
|
||||||
|
},
|
||||||
|
goto_previous_end = {
|
||||||
|
["[M"] = "@function.outer",
|
||||||
|
["[]"] = "@class.outer",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
swap = {
|
||||||
|
enable = true,
|
||||||
|
swap_next = {
|
||||||
|
["<leader>a"] = "@parameter.inner",
|
||||||
|
},
|
||||||
|
swap_previous = {
|
||||||
|
["<leader>A"] = "@parameter.inner",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
55
config/nvim/lua/plugins/pretty-fold.lua
Normal file
55
config/nvim/lua/plugins/pretty-fold.lua
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
-- Fold code.
|
||||||
|
|
||||||
|
return {
|
||||||
|
"anuvyklack/pretty-fold.nvim",
|
||||||
|
config = {
|
||||||
|
fill_char = "•",
|
||||||
|
sections = {
|
||||||
|
left = {
|
||||||
|
"content",
|
||||||
|
},
|
||||||
|
right = {
|
||||||
|
" ",
|
||||||
|
"number_of_folded_lines",
|
||||||
|
": ",
|
||||||
|
"percentage",
|
||||||
|
" ",
|
||||||
|
function(config) return config.fill_char:rep(3) end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
remove_fold_markers = false,
|
||||||
|
|
||||||
|
-- Keep the indentation of the content of the fold string.
|
||||||
|
keep_indentation = true,
|
||||||
|
|
||||||
|
-- Possible values:
|
||||||
|
-- "delete" : Delete all comment signs from the fold string.
|
||||||
|
-- "spaces" : Replace all comment signs with equal number of spaces.
|
||||||
|
-- false : Do nothing with comment signs.
|
||||||
|
process_comment_signs = "spaces",
|
||||||
|
|
||||||
|
-- Comment signs additional to the value of `&commentstring` option.
|
||||||
|
comment_signs = {
|
||||||
|
{ "/**", "*/" }, -- multiline comment
|
||||||
|
{ "<!--", "-->" }, -- multiline comment
|
||||||
|
{ "%--[[", "--]]" }, -- multiline comment
|
||||||
|
},
|
||||||
|
|
||||||
|
-- List of patterns that will be removed from content foldtext section.
|
||||||
|
stop_words = {
|
||||||
|
"@brief%s*", -- (for C++) Remove '@brief' and all spaces after.
|
||||||
|
},
|
||||||
|
|
||||||
|
add_close_pattern = true,
|
||||||
|
matchup_patterns = {
|
||||||
|
{ "{", "}" },
|
||||||
|
{ "%(", ")" }, -- % to escape lua pattern char
|
||||||
|
{ "%[", "]" }, -- % to escape lua pattern char
|
||||||
|
{ "if%s", "end" },
|
||||||
|
{ "do%s", "end" },
|
||||||
|
{ "for%s", "end" },
|
||||||
|
{ "function%s*%(", "end" }, -- 'function(' or 'function ('
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
14
config/nvim/lua/plugins/project.lua
Normal file
14
config/nvim/lua/plugins/project.lua
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"jay-babu/project.nvim",
|
||||||
|
name = "project_nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = { ignore_lsp = { "lua_ls" } },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
optional = true,
|
||||||
|
dependencies = { "project_nvim" },
|
||||||
|
opts = function() require("telescope").load_extension("projects") end,
|
||||||
|
},
|
||||||
|
}
|
||||||
97
config/nvim/lua/plugins/refactoring-nvim.lua
Normal file
97
config/nvim/lua/plugins/refactoring-nvim.lua
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
return {
|
||||||
|
"ThePrimeagen/refactoring.nvim",
|
||||||
|
dependencies = { "nvim-lua/plenary.nvim", "nvim-treesitter/nvim-treesitter" },
|
||||||
|
cmd = { "Refactor" },
|
||||||
|
opts = {},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<leader>re",
|
||||||
|
[[ <Esc><Cmd>lua require('refactoring').refactor('Extract Function')<CR>]],
|
||||||
|
{ silent = true, expr = false },
|
||||||
|
mode = {
|
||||||
|
"v",
|
||||||
|
"x",
|
||||||
|
},
|
||||||
|
desc = "Extract Function",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rf",
|
||||||
|
[[ <Esc><Cmd>lua require('refactoring').refactor('Extract Function To File')<CR>]],
|
||||||
|
{ silent = true, expr = false },
|
||||||
|
mode = {
|
||||||
|
"v",
|
||||||
|
"x",
|
||||||
|
},
|
||||||
|
desc = "Extract Function To File",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rv",
|
||||||
|
[[ <Esc><Cmd>lua require('refactoring').refactor('Extract Variable')<CR>]],
|
||||||
|
{ silent = true, expr = false },
|
||||||
|
mode = {
|
||||||
|
"v",
|
||||||
|
"x",
|
||||||
|
},
|
||||||
|
desc = "Extract Variable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>ri",
|
||||||
|
[[ <Esc><Cmd>lua require('refactoring').refactor('Inline Variable')<CR>]],
|
||||||
|
{ silent = true, expr = false },
|
||||||
|
mode = {
|
||||||
|
"n",
|
||||||
|
"v",
|
||||||
|
"x",
|
||||||
|
},
|
||||||
|
desc = "Inline Variable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rb",
|
||||||
|
function() require("refactoring").refactor("Extract Block") end,
|
||||||
|
{ silent = true, expr = false },
|
||||||
|
mode = {
|
||||||
|
"n",
|
||||||
|
},
|
||||||
|
desc = "Extract Block",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rbf",
|
||||||
|
function() require("refactoring").refactor("Extract Block To File") end,
|
||||||
|
{ silent = true, expr = false },
|
||||||
|
mode = {
|
||||||
|
"n",
|
||||||
|
},
|
||||||
|
desc = "Extract Block To File",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rr",
|
||||||
|
function() require("refactoring").select_refactor() end,
|
||||||
|
{ silent = true, expr = false },
|
||||||
|
desc = "Select Refactor",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rp",
|
||||||
|
function() require("refactoring").debug.printf({ below = false }) end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "Debug: Print Function",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rd",
|
||||||
|
function() require("refactoring").debug.print_var({ normal = true, below = false }) end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "Debug: Print Variable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rd",
|
||||||
|
function() require("refactoring").debug.print_var({ below = false }) end,
|
||||||
|
mode = { "v" },
|
||||||
|
desc = "Debug: Print Variable",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>rc",
|
||||||
|
function() require("refactoring").debug.cleanup({}) end,
|
||||||
|
mode = { "n" },
|
||||||
|
desc = "Debug: Clean Up",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
7
config/nvim/lua/plugins/smartcolumn.lua
Normal file
7
config/nvim/lua/plugins/smartcolumn.lua
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
return {
|
||||||
|
"m4xshen/smartcolumn.nvim",
|
||||||
|
opts = {
|
||||||
|
colorcolumn = { "80", "100", "120" },
|
||||||
|
disabled_filetypes = { "help", "text", "markdown", "json", "lazy", "starter", "neo-tree" },
|
||||||
|
},
|
||||||
|
}
|
||||||
1
config/nvim/lua/plugins/stickybuf.lua
Normal file
1
config/nvim/lua/plugins/stickybuf.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
return { "stevearc/stickybuf.nvim", opts = {} }
|
||||||
8
config/nvim/lua/plugins/tabnine.lua
Normal file
8
config/nvim/lua/plugins/tabnine.lua
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
return {
|
||||||
|
"codota/tabnine-nvim",
|
||||||
|
name = "tabnine",
|
||||||
|
build = vim.loop.os_uname().sysname == "Windows_NT" and "pwsh.exe -file .\\dl_binaries.ps1" or "./dl_binaries.sh",
|
||||||
|
cmd = { "TabnineStatus", "TabnineDisable", "TabnineEnable", "TabnineToggle" },
|
||||||
|
event = "User",
|
||||||
|
opts = { accept_keymap = "<C-e>" },
|
||||||
|
}
|
||||||
132
config/nvim/lua/plugins/telescope-nvim.lua
Normal file
132
config/nvim/lua/plugins/telescope-nvim.lua
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
-- Telescope, a see-all-through file manager.
|
||||||
|
return {
|
||||||
|
"nvim-telescope/telescope.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/popup.nvim",
|
||||||
|
"nvim-lua/plenary.nvim",
|
||||||
|
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
|
||||||
|
-- Only load if `make` is available. Make sure you have the system
|
||||||
|
-- requirements installed.
|
||||||
|
{
|
||||||
|
"nvim-telescope/telescope-fzf-native.nvim",
|
||||||
|
-- NOTE: If you are having trouble with this installation,
|
||||||
|
-- refer to the README for telescope-fzf-native for more instructions.
|
||||||
|
build = "make",
|
||||||
|
cond = function() return vim.fn.executable("make") == 1 end,
|
||||||
|
},
|
||||||
|
"nvim-telescope/telescope-file-browser.nvim",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local actions = require("telescope.actions")
|
||||||
|
local sorters = require("telescope.sorters")
|
||||||
|
local previewers = require("telescope.previewers")
|
||||||
|
|
||||||
|
require("telescope").setup({
|
||||||
|
defaults = {
|
||||||
|
mappings = {
|
||||||
|
i = {
|
||||||
|
["<ESC>"] = actions.close,
|
||||||
|
["<C-u>"] = false,
|
||||||
|
["<C-d>"] = false,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
vimgrep_arguments = {
|
||||||
|
"rg",
|
||||||
|
"-L",
|
||||||
|
"--color=never",
|
||||||
|
"--no-heading",
|
||||||
|
"--with-filename",
|
||||||
|
"--line-number",
|
||||||
|
"--column",
|
||||||
|
"--smart-case",
|
||||||
|
},
|
||||||
|
|
||||||
|
prompt_prefix = " ",
|
||||||
|
selection_caret = " ",
|
||||||
|
entry_prefix = " ",
|
||||||
|
initial_mode = "insert",
|
||||||
|
selection_strategy = "reset",
|
||||||
|
sorting_strategy = "ascending",
|
||||||
|
layout_strategy = "horizontal",
|
||||||
|
layout_config = {
|
||||||
|
horizontal = {
|
||||||
|
prompt_position = "top",
|
||||||
|
preview_width = 0.55,
|
||||||
|
results_width = 0.8,
|
||||||
|
},
|
||||||
|
vertical = {
|
||||||
|
mirror = false,
|
||||||
|
},
|
||||||
|
width = 0.87,
|
||||||
|
height = 0.80,
|
||||||
|
preview_cutoff = 120,
|
||||||
|
},
|
||||||
|
file_sorter = sorters.get_fuzzy_file,
|
||||||
|
file_ignore_patterns = { "node_modules", "dotbot" },
|
||||||
|
generic_sorter = sorters.get_generic_fuzzy_sorter,
|
||||||
|
path_display = { "truncate" },
|
||||||
|
winblend = 0,
|
||||||
|
border = {},
|
||||||
|
borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
|
||||||
|
color_devicons = true,
|
||||||
|
use_less = true,
|
||||||
|
set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,
|
||||||
|
file_previewer = previewers.vim_buffer_cat.new,
|
||||||
|
grep_previewer = previewers.vim_buffer_vimgrep.new,
|
||||||
|
qflist_previewer = previewers.vim_buffer_qflist.new,
|
||||||
|
-- Developer configurations: Not meant for general override
|
||||||
|
buffer_previewer_maker = previewers.buffer_previewer_maker,
|
||||||
|
},
|
||||||
|
|
||||||
|
extensions_list = { "themes", "terms" },
|
||||||
|
})
|
||||||
|
|
||||||
|
pcall(require("telescope").load_extension, "fzf")
|
||||||
|
pcall(require("telescope").load_extension, "file_browser")
|
||||||
|
|
||||||
|
-- See `:help telescope.builtin`
|
||||||
|
vim.keymap.set("n", "<leader>?", require("telescope.builtin").oldfiles, { desc = "[?] Find recently opened files" })
|
||||||
|
vim.keymap.set("n", "<leader><space>", require("telescope.builtin").buffers, { desc = "[ ] Find existing buffers" })
|
||||||
|
vim.keymap.set("n", "<leader>/", function()
|
||||||
|
-- You can pass additional configuration to telescope to change theme, layout, etc.
|
||||||
|
require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({
|
||||||
|
winblend = 10,
|
||||||
|
previewer = false,
|
||||||
|
}))
|
||||||
|
end, { desc = "[/] Fuzzily search in current buffer" })
|
||||||
|
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>tg",
|
||||||
|
require("telescope.builtin").git_files,
|
||||||
|
{ desc = "[T]elescope: Search [G]it files" }
|
||||||
|
)
|
||||||
|
vim.keymap.set("n", "<leader>tf", require("telescope.builtin").find_files, { desc = "[T]elescope: Search [F]iles" })
|
||||||
|
vim.keymap.set("n", "<leader>th", require("telescope.builtin").help_tags, { desc = "[T]elescope: Search [H]elp" })
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>tw",
|
||||||
|
require("telescope.builtin").grep_string,
|
||||||
|
{ desc = "[T]elescope: Search current [W]ord" }
|
||||||
|
)
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>tr",
|
||||||
|
require("telescope.builtin").live_grep,
|
||||||
|
{ desc = "[T]elescope: Search by G[r]ep" }
|
||||||
|
)
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>td",
|
||||||
|
require("telescope.builtin").diagnostics,
|
||||||
|
{ desc = "[T]elescope: Search [D]iagnostics" }
|
||||||
|
)
|
||||||
|
|
||||||
|
vim.keymap.set(
|
||||||
|
"n",
|
||||||
|
"<leader>tb",
|
||||||
|
":Telescope file_browser<CR>",
|
||||||
|
{ desc = "[T]elescope: File [B]rowser", noremap = true }
|
||||||
|
)
|
||||||
|
end,
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user