Update Neovim and Emacs configurations
This commit is contained in:
122
emacs/.emacs
122
emacs/.emacs
@@ -1,44 +1,78 @@
|
|||||||
;; Initial greeting for debugging
|
;; Initial greeting for debugging
|
||||||
(message "Welcome to Emacs")
|
(message "Welcome to Emacs")
|
||||||
(message "Loading user configuration...")
|
(message "Loading user configuration...")
|
||||||
|
|
||||||
;; Setting variables
|
;; Setting variables
|
||||||
;; (setq os-packages-path "/home/fscotto/.emacs.d/packages/")
|
(setq vc-follow-symlinks 't)
|
||||||
(setq vc-follow-symlinks 't)
|
(prefer-coding-system 'utf-8-unix)
|
||||||
(prefer-coding-system 'utf-8-unix)
|
(setq custom-file (null-device))
|
||||||
|
|
||||||
;; Initialize package system via use-package
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
(package-initialize)
|
;; PACKAGES ;;
|
||||||
(require 'use-package)
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(use-package package
|
;; Initialize package system via use-package
|
||||||
:config
|
(package-initialize)
|
||||||
;; Setting repo priorities
|
(require 'use-package)
|
||||||
(setq package-archive-priorities
|
|
||||||
'(("melpa-stable" . 2)
|
(use-package package
|
||||||
("MELPA" . 1)
|
:config
|
||||||
("gnu" . 0)))
|
;; Setting repo priorities
|
||||||
;; Setting repo URL
|
(setq package-archive-priorities
|
||||||
(setq package-archives
|
'(("melpa-stable" . 2)
|
||||||
'(("melpa-stable" . "https://stable.melpa.org/packages/")
|
("MELPA" . 1)
|
||||||
("MELPA" . "https://melpa.org/packages/")
|
("gnu" . 0)))
|
||||||
("gnu" . "https://elpa.gnu.org/packages/")))
|
;; Setting repo URL
|
||||||
)
|
(setq package-archives
|
||||||
|
'(("melpa-stable" . "https://stable.melpa.org/packages/")
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
("MELPA" . "https://melpa.org/packages/")
|
||||||
;; LOOK AND FEEL ;;
|
("gnu" . "https://elpa.gnu.org/packages/")))
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
)
|
||||||
|
|
||||||
;; Setting default theme
|
(use-package catppuccin-theme
|
||||||
(load-theme 'catppuccin :no-confirm)
|
:ensure t)
|
||||||
|
|
||||||
;; Setting default font
|
(use-package hl-todo
|
||||||
(set-frame-font "JetBrainsMono Nerd Font 16" nil t)
|
:ensure t)
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
(setq hl-todo-keyword-faces
|
||||||
;; PACKAGES ;;
|
'(("TODO" . "#94e2d5")
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
("FIXME" . "#f38ba8")
|
||||||
|
("DEBUG" . "#cba6f7")
|
||||||
;;
|
("GOTCHA" . "#eba0ac")
|
||||||
|
("STUB" . "#89b4fa")))
|
||||||
(message "...user configuration loaded")
|
|
||||||
|
(with-eval-after-load 'magit
|
||||||
|
(add-hook 'magit-log-wash-summary-hook
|
||||||
|
#'hl-todo-search-and-highlight t)
|
||||||
|
(add-hook 'magit-revision-wash-message-hook
|
||||||
|
#'hl-todo-search-and-highlighthl t))
|
||||||
|
|
||||||
|
;; TODO adding lsp-mode, dap-mode, autocomplete and project handling for C, Go, Bash and Python
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;; LOOK AND FEEL ;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
;; Setting default theme
|
||||||
|
(load-theme 'catppuccin :no-confirm)
|
||||||
|
|
||||||
|
;; Setting default font
|
||||||
|
(set-frame-font "0xProto Nerd Font 16" nil t)
|
||||||
|
|
||||||
|
;; Remove toolbar
|
||||||
|
(tool-bar-mode -1)
|
||||||
|
|
||||||
|
;; Remove menu
|
||||||
|
(menu-bar-mode -1)
|
||||||
|
|
||||||
|
;; Disable startup screen
|
||||||
|
(setq inhibit-startup-screen t)
|
||||||
|
|
||||||
|
;; Disable splash screen
|
||||||
|
(setq inhibit-splash-screen t)
|
||||||
|
|
||||||
|
;; Enable line numbers in the programming mode only
|
||||||
|
(add-hook 'prog-mode-hook 'display-line-numbers-mode)
|
||||||
|
|
||||||
|
(message "...user configuration loaded")
|
||||||
|
|||||||
@@ -1,468 +1,468 @@
|
|||||||
# Config relating to the Lazygit UI
|
# Config relating to the Lazygit UI
|
||||||
gui:
|
gui:
|
||||||
# The number of lines you scroll by when scrolling the main window
|
# The number of lines you scroll by when scrolling the main window
|
||||||
scrollHeight: 2
|
scrollHeight: 2
|
||||||
# If true, allow scrolling past the bottom of the content in the main window
|
# If true, allow scrolling past the bottom of the content in the main window
|
||||||
scrollPastBottom: true
|
scrollPastBottom: true
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin
|
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin
|
||||||
scrollOffMargin: 2
|
scrollOffMargin: 2
|
||||||
# One of: 'margin' (default) | 'jump'
|
# One of: 'margin' (default) | 'jump'
|
||||||
scrollOffBehavior: margin
|
scrollOffBehavior: margin
|
||||||
# If true, capture mouse events.
|
# If true, capture mouse events.
|
||||||
# When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS.
|
# When mouse events are captured, it's a little harder to select text: e.g. requiring you to hold the option key when on macOS.
|
||||||
mouseEvents: true
|
mouseEvents: true
|
||||||
# If true, do not show a warning when discarding changes in the staging view.
|
# If true, do not show a warning when discarding changes in the staging view.
|
||||||
skipDiscardChangeWarning: false
|
skipDiscardChangeWarning: false
|
||||||
# If true, do not show warning when applying/popping the stash
|
# If true, do not show warning when applying/popping the stash
|
||||||
skipStashWarning: false
|
skipStashWarning: false
|
||||||
# If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files.
|
# If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files.
|
||||||
skipNoStagedFilesWarning: false
|
skipNoStagedFilesWarning: false
|
||||||
# If true, do not show a warning when rewording a commit via an external editor
|
# If true, do not show a warning when rewording a commit via an external editor
|
||||||
skipRewordInEditorWarning: false
|
skipRewordInEditorWarning: false
|
||||||
# Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section.
|
# Fraction of the total screen width to use for the left side section. You may want to pick a small number (e.g. 0.2) if you're using a narrow screen, so that you can see more of the main section.
|
||||||
# Number from 0 to 1.0.
|
# Number from 0 to 1.0.
|
||||||
sidePanelWidth: 0.3333
|
sidePanelWidth: 0.3333
|
||||||
# If true, increase the height of the focused side window; creating an accordion effect.
|
# If true, increase the height of the focused side window; creating an accordion effect.
|
||||||
expandFocusedSidePanel: false
|
expandFocusedSidePanel: false
|
||||||
# The weight of the expanded side panel, relative to the other panels. 2 means
|
# The weight of the expanded side panel, relative to the other panels. 2 means
|
||||||
# twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true.
|
# twice as tall as the other panels. Only relevant if `expandFocusedSidePanel` is true.
|
||||||
expandedSidePanelWeight: 2
|
expandedSidePanelWeight: 2
|
||||||
# Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split.
|
# Sometimes the main window is split in two (e.g. when the selected file has both staged and unstaged changes). This setting controls how the two sections are split.
|
||||||
# Options are:
|
# Options are:
|
||||||
# - 'horizontal': split the window horizontally
|
# - 'horizontal': split the window horizontally
|
||||||
# - 'vertical': split the window vertically
|
# - 'vertical': split the window vertically
|
||||||
# - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically
|
# - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically
|
||||||
mainPanelSplitMode: flexible
|
mainPanelSplitMode: flexible
|
||||||
# How the window is split when in half screen mode (i.e. after hitting '+' once).
|
# How the window is split when in half screen mode (i.e. after hitting '+' once).
|
||||||
# Possible values:
|
# Possible values:
|
||||||
# - 'left': split the window horizontally (side panel on the left, main view on the right)
|
# - 'left': split the window horizontally (side panel on the left, main view on the right)
|
||||||
# - 'top': split the window vertically (side panel on top, main view below)
|
# - 'top': split the window vertically (side panel on top, main view below)
|
||||||
enlargedSideViewLocation: left
|
enlargedSideViewLocation: left
|
||||||
# One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru'
|
# One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru'
|
||||||
language: auto
|
language: auto
|
||||||
# Format used when displaying time e.g. commit time.
|
# Format used when displaying time e.g. commit time.
|
||||||
# Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
|
# Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
|
||||||
timeFormat: 02 Jan 06
|
timeFormat: 02 Jan 06
|
||||||
# Format used when displaying time if the time is less than 24 hours ago.
|
# Format used when displaying time if the time is less than 24 hours ago.
|
||||||
# Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
|
# Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format
|
||||||
shortTimeFormat: 3:04PM
|
shortTimeFormat: 3:04PM
|
||||||
# Config relating to colors and styles.
|
# Config relating to colors and styles.
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes
|
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes
|
||||||
theme:
|
theme:
|
||||||
# Border color of focused window
|
# Border color of focused window
|
||||||
activeBorderColor:
|
activeBorderColor:
|
||||||
- "#8caaee"
|
- "#8caaee"
|
||||||
- bold
|
- bold
|
||||||
# Border color of non-focused windows
|
# Border color of non-focused windows
|
||||||
inactiveBorderColor:
|
inactiveBorderColor:
|
||||||
- "#a5adce"
|
- "#a5adce"
|
||||||
# Border color of focused window when searching in that window
|
# Border color of focused window when searching in that window
|
||||||
searchingActiveBorderColor:
|
searchingActiveBorderColor:
|
||||||
- "#e5c890"
|
- "#e5c890"
|
||||||
# Color of keybindings help text in the bottom line
|
# Color of keybindings help text in the bottom line
|
||||||
optionsTextColor:
|
optionsTextColor:
|
||||||
- "#8caaee"
|
- "#8caaee"
|
||||||
# Background color of selected line.
|
# Background color of selected line.
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#highlighting-the-selected-line
|
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#highlighting-the-selected-line
|
||||||
selectedLineBgColor:
|
selectedLineBgColor:
|
||||||
- "#414559"
|
- "#414559"
|
||||||
# Foreground color of copied commit
|
# Foreground color of copied commit
|
||||||
cherryPickedCommitFgColor:
|
cherryPickedCommitFgColor:
|
||||||
- "#8caaee"
|
- "#8caaee"
|
||||||
# Background color of copied commit
|
# Background color of copied commit
|
||||||
cherryPickedCommitBgColor:
|
cherryPickedCommitBgColor:
|
||||||
- "#51576d"
|
- "#51576d"
|
||||||
# Color for file with unstaged changes
|
# Color for file with unstaged changes
|
||||||
unstagedChangesColor:
|
unstagedChangesColor:
|
||||||
- "#e78284"
|
- "#e78284"
|
||||||
# Default text color
|
# Default text color
|
||||||
defaultFgColor:
|
defaultFgColor:
|
||||||
- "#c6d0f5"
|
- "#c6d0f5"
|
||||||
authorColors:
|
authorColors:
|
||||||
"Fabio Scotto di Santolo": "#babbf1"
|
"Fabio Scotto di Santolo": "#babbf1"
|
||||||
branchColors:
|
branchColors:
|
||||||
develop: yellow
|
develop: yellow
|
||||||
feature: blue
|
feature: blue
|
||||||
fix: red
|
fix: red
|
||||||
hotfix: red
|
hotfix: red
|
||||||
# Config relating to the commit length indicator
|
# Config relating to the commit length indicator
|
||||||
commitLength:
|
commitLength:
|
||||||
# If true, show an indicator of commit message length
|
# If true, show an indicator of commit message length
|
||||||
show: true
|
show: true
|
||||||
# If true, show the '5 of 20' footer at the bottom of list views
|
# If true, show the '5 of 20' footer at the bottom of list views
|
||||||
showListFooter: true
|
showListFooter: true
|
||||||
# If true, display the files in the file views as a tree. If false, display the files as a flat list.
|
# If true, display the files in the file views as a tree. If false, display the files as a flat list.
|
||||||
# This can be toggled from within Lazygit with the '~' key, but that will not change the default.
|
# This can be toggled from within Lazygit with the '~' key, but that will not change the default.
|
||||||
showFileTree: true
|
showFileTree: true
|
||||||
# If true, show a random tip in the command log when Lazygit starts
|
# If true, show a random tip in the command log when Lazygit starts
|
||||||
showRandomTip: true
|
showRandomTip: true
|
||||||
# If true, show the command log
|
# If true, show the command log
|
||||||
showCommandLog: true
|
showCommandLog: true
|
||||||
# If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action.
|
# If true, show the bottom line that contains keybinding info and useful buttons. If false, this line will be hidden except to display a loader for an in-progress action.
|
||||||
showBottomLine: true
|
showBottomLine: true
|
||||||
# If true, show jump-to-window keybindings in window titles.
|
# If true, show jump-to-window keybindings in window titles.
|
||||||
showPanelJumps: true
|
showPanelJumps: true
|
||||||
# Deprecated: use nerdFontsVersion instead
|
# Deprecated: use nerdFontsVersion instead
|
||||||
showIcons: false
|
showIcons: false
|
||||||
# Nerd fonts version to use.
|
# Nerd fonts version to use.
|
||||||
# One of: '2' | '3' | empty string (default)
|
# One of: '2' | '3' | empty string (default)
|
||||||
# If empty, do not show icons.
|
# If empty, do not show icons.
|
||||||
nerdFontsVersion: "3"
|
nerdFontsVersion: "3"
|
||||||
# If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.
|
# If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty.
|
||||||
showFileIcons: true
|
showFileIcons: true
|
||||||
# Length of author name in (non-expanded) commits view. 2 means show initials only.
|
# Length of author name in (non-expanded) commits view. 2 means show initials only.
|
||||||
commitAuthorShortLength: 2
|
commitAuthorShortLength: 2
|
||||||
# Length of author name in expanded commits view. 2 means show initials only.
|
# Length of author name in expanded commits view. 2 means show initials only.
|
||||||
commitAuthorLongLength: 17
|
commitAuthorLongLength: 17
|
||||||
# Length of commit hash in commits view. 0 shows '*' if NF icons aren't on.
|
# Length of commit hash in commits view. 0 shows '*' if NF icons aren't on.
|
||||||
commitHashLength: 8
|
commitHashLength: 8
|
||||||
# If true, show commit hashes alongside branch names in the branches view.
|
# If true, show commit hashes alongside branch names in the branches view.
|
||||||
showBranchCommitHash: false
|
showBranchCommitHash: false
|
||||||
# Whether to show the divergence from the base branch in the branches view.
|
# Whether to show the divergence from the base branch in the branches view.
|
||||||
# One of: 'none' | 'onlyArrow' | 'arrowAndNumber'
|
# One of: 'none' | 'onlyArrow' | 'arrowAndNumber'
|
||||||
showDivergenceFromBaseBranch: none
|
showDivergenceFromBaseBranch: none
|
||||||
# Height of the command log view
|
# Height of the command log view
|
||||||
commandLogSize: 8
|
commandLogSize: 8
|
||||||
# Whether to split the main window when viewing file changes.
|
# Whether to split the main window when viewing file changes.
|
||||||
# One of: 'auto' | 'always'
|
# One of: 'auto' | 'always'
|
||||||
# If 'auto', only split the main window when a file has both staged and unstaged changes
|
# If 'auto', only split the main window when a file has both staged and unstaged changes
|
||||||
splitDiff: auto
|
splitDiff: auto
|
||||||
# Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default).
|
# Default size for focused window. Window size can be changed from within Lazygit with '+' and '_' (but this won't change the default).
|
||||||
# One of: 'normal' (default) | 'half' | 'full'
|
# One of: 'normal' (default) | 'half' | 'full'
|
||||||
screenMode: normal
|
screenMode: normal
|
||||||
# Window border style.
|
# Window border style.
|
||||||
# One of 'rounded' (default) | 'single' | 'double' | 'hidden'
|
# One of 'rounded' (default) | 'single' | 'double' | 'hidden'
|
||||||
border: rounded
|
border: rounded
|
||||||
# If true, show a seriously epic explosion animation when nuking the working tree.
|
# If true, show a seriously epic explosion animation when nuking the working tree.
|
||||||
animateExplosion: true
|
animateExplosion: true
|
||||||
# Whether to stack UI components on top of each other.
|
# Whether to stack UI components on top of each other.
|
||||||
# One of 'auto' (default) | 'always' | 'never'
|
# One of 'auto' (default) | 'always' | 'never'
|
||||||
portraitMode: auto
|
portraitMode: auto
|
||||||
# How things are filtered when typing '/'.
|
# How things are filtered when typing '/'.
|
||||||
# One of 'substring' (default) | 'fuzzy'
|
# One of 'substring' (default) | 'fuzzy'
|
||||||
filterMode: substring
|
filterMode: substring
|
||||||
# Config relating to the spinner.
|
# Config relating to the spinner.
|
||||||
spinner:
|
spinner:
|
||||||
# The frames of the spinner animation.
|
# The frames of the spinner animation.
|
||||||
frames:
|
frames:
|
||||||
- "|"
|
- "|"
|
||||||
- /
|
- /
|
||||||
- "-"
|
- "-"
|
||||||
- \
|
- \
|
||||||
# The "speed" of the spinner in milliseconds.
|
# The "speed" of the spinner in milliseconds.
|
||||||
rate: 50
|
rate: 50
|
||||||
# Status panel view.
|
# Status panel view.
|
||||||
# One of 'dashboard' (default) | 'allBranchesLog'
|
# One of 'dashboard' (default) | 'allBranchesLog'
|
||||||
statusPanelView: dashboard
|
statusPanelView: dashboard
|
||||||
# Config relating to git
|
# Config relating to git
|
||||||
git:
|
git:
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md
|
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md
|
||||||
paging:
|
paging:
|
||||||
# Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never'
|
# Value of the --color arg in the git diff command. Some pagers want this to be set to 'always' and some want it set to 'never'
|
||||||
colorArg: always
|
colorArg: always
|
||||||
# e.g.
|
# e.g.
|
||||||
# diff-so-fancy
|
# diff-so-fancy
|
||||||
# delta --dark --paging=never
|
# delta --dark --paging=never
|
||||||
# ydiff -p cat -s --wrap --width={{columnWidth}}
|
# ydiff -p cat -s --wrap --width={{columnWidth}}
|
||||||
pager: "delta --paging=never"
|
pager: "delta --paging=never"
|
||||||
# If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager).
|
# If true, Lazygit will use whatever pager is specified in `$GIT_PAGER`, `$PAGER`, or your *git config*. If the pager ends with something like ` | less` we will strip that part out, because less doesn't play nice with our rendering approach. If the custom pager uses less under the hood, that will also break rendering (hence the `--paging=never` flag for the `delta` pager).
|
||||||
useConfig: false
|
useConfig: false
|
||||||
# e.g. 'difft --color=always'
|
# e.g. 'difft --color=always'
|
||||||
externalDiffCommand: ""
|
externalDiffCommand: ""
|
||||||
# Config relating to committing
|
# Config relating to committing
|
||||||
commit:
|
commit:
|
||||||
# If true, pass '--signoff' flag when committing
|
# If true, pass '--signoff' flag when committing
|
||||||
signOff: false
|
signOff: false
|
||||||
# Automatic WYSIWYG wrapping of the commit message as you type
|
# Automatic WYSIWYG wrapping of the commit message as you type
|
||||||
autoWrapCommitMessage: true
|
autoWrapCommitMessage: true
|
||||||
# If autoWrapCommitMessage is true, the width to wrap to
|
# If autoWrapCommitMessage is true, the width to wrap to
|
||||||
autoWrapWidth: 72
|
autoWrapWidth: 72
|
||||||
# Config relating to merging
|
# Config relating to merging
|
||||||
merging:
|
merging:
|
||||||
# If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang
|
# If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang
|
||||||
# Only applicable to unix users.
|
# Only applicable to unix users.
|
||||||
manualCommit: false
|
manualCommit: false
|
||||||
# Extra args passed to `git merge`, e.g. --no-ff
|
# Extra args passed to `git merge`, e.g. --no-ff
|
||||||
args: "--no-ff"
|
args: "--no-ff"
|
||||||
# The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders.
|
# The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders.
|
||||||
squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}}
|
squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}}
|
||||||
# list of branches that are considered 'main' branches, used when displaying commits
|
# list of branches that are considered 'main' branches, used when displaying commits
|
||||||
mainBranches:
|
mainBranches:
|
||||||
- master
|
- master
|
||||||
- main
|
- main
|
||||||
# Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP'
|
# Prefix to use when skipping hooks. E.g. if set to 'WIP', then pre-commit hooks will be skipped when the commit message starts with 'WIP'
|
||||||
skipHookPrefix: WIP
|
skipHookPrefix: WIP
|
||||||
# If true, periodically fetch from remote
|
# If true, periodically fetch from remote
|
||||||
autoFetch: true
|
autoFetch: true
|
||||||
# If true, periodically refresh files and submodules
|
# If true, periodically refresh files and submodules
|
||||||
autoRefresh: true
|
autoRefresh: true
|
||||||
# If true, pass the --all arg to git fetch
|
# If true, pass the --all arg to git fetch
|
||||||
fetchAll: true
|
fetchAll: true
|
||||||
# Command used when displaying the current branch git log in the main window
|
# Command used when displaying the current branch git log in the main window
|
||||||
branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --
|
branchLogCmd: git log --graph --color=always --abbrev-commit --decorate --date=relative --pretty=medium {{branchName}} --
|
||||||
# If true, do not spawn a separate process when using GPG
|
# If true, do not spawn a separate process when using GPG
|
||||||
overrideGpg: false
|
overrideGpg: false
|
||||||
# If true, do not allow force pushes
|
# If true, do not allow force pushes
|
||||||
disableForcePushing: false
|
disableForcePushing: false
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix
|
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix
|
||||||
commitPrefix:
|
commitPrefix:
|
||||||
- # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*"
|
- # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*"
|
||||||
pattern: ""
|
pattern: ""
|
||||||
# Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] "
|
# Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] "
|
||||||
replace: ""
|
replace: ""
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix
|
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix
|
||||||
branchPrefix: ""
|
branchPrefix: ""
|
||||||
# If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀
|
# If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀
|
||||||
# (This should really be under 'gui', not 'git')
|
# (This should really be under 'gui', not 'git')
|
||||||
parseEmoji: true
|
parseEmoji: true
|
||||||
# Config for showing the log in the commits view
|
# Config for showing the log in the commits view
|
||||||
log:
|
log:
|
||||||
# One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default'
|
# One of: 'date-order' | 'author-date-order' | 'topo-order' | 'default'
|
||||||
# 'topo-order' makes it easier to read the git log graph, but commits may not
|
# 'topo-order' makes it easier to read the git log graph, but commits may not
|
||||||
# appear chronologically. See https://git-scm.com/docs/
|
# appear chronologically. See https://git-scm.com/docs/
|
||||||
#
|
#
|
||||||
# Deprecated: Configure this with `Log menu -> Commit sort order` (<c-l> in the commits window by default).
|
# Deprecated: Configure this with `Log menu -> Commit sort order` (<c-l> in the commits window by default).
|
||||||
order: topo-order
|
order: topo-order
|
||||||
# This determines whether the git graph is rendered in the commits panel
|
# This determines whether the git graph is rendered in the commits panel
|
||||||
# One of 'always' | 'never' | 'when-maximised'
|
# One of 'always' | 'never' | 'when-maximised'
|
||||||
#
|
#
|
||||||
# Deprecated: Configure this with `Log menu -> Show git graph` (<c-l> in the commits window by default).
|
# Deprecated: Configure this with `Log menu -> Show git graph` (<c-l> in the commits window by default).
|
||||||
showGraph: always
|
showGraph: always
|
||||||
# displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`)
|
# displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`)
|
||||||
showWholeGraph: false
|
showWholeGraph: false
|
||||||
# When copying commit hashes to the clipboard, truncate them to this
|
# When copying commit hashes to the clipboard, truncate them to this
|
||||||
# length. Set to 40 to disable truncation.
|
# length. Set to 40 to disable truncation.
|
||||||
truncateCopiedCommitHashesTo: 12
|
truncateCopiedCommitHashesTo: 12
|
||||||
allBranchesLogCmds:
|
allBranchesLogCmds:
|
||||||
- git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium
|
- git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium
|
||||||
# Periodic update checks
|
# Periodic update checks
|
||||||
update:
|
update:
|
||||||
# One of: 'prompt' (default) | 'background' | 'never'
|
# One of: 'prompt' (default) | 'background' | 'never'
|
||||||
method: prompt
|
method: prompt
|
||||||
# Period in days between update checks
|
# Period in days between update checks
|
||||||
days: 14
|
days: 14
|
||||||
# Background refreshes
|
# Background refreshes
|
||||||
refresher:
|
refresher:
|
||||||
# File/submodule refresh interval in seconds.
|
# File/submodule refresh interval in seconds.
|
||||||
# Auto-refresh can be disabled via option 'git.autoRefresh'.
|
# Auto-refresh can be disabled via option 'git.autoRefresh'.
|
||||||
refreshInterval: 10
|
refreshInterval: 10
|
||||||
# Re-fetch interval in seconds.
|
# Re-fetch interval in seconds.
|
||||||
# Auto-fetch can be disabled via option 'git.autoFetch'.
|
# Auto-fetch can be disabled via option 'git.autoFetch'.
|
||||||
fetchInterval: 60
|
fetchInterval: 60
|
||||||
# If true, show a confirmation popup before quitting Lazygit
|
# If true, show a confirmation popup before quitting Lazygit
|
||||||
confirmOnQuit: false
|
confirmOnQuit: false
|
||||||
# If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close
|
# If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close
|
||||||
quitOnTopLevelReturn: false
|
quitOnTopLevelReturn: false
|
||||||
# Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc
|
# Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc
|
||||||
os:
|
os:
|
||||||
# Command for editing a file. Should contain "{{filename}}".
|
# Command for editing a file. Should contain "{{filename}}".
|
||||||
edit: ""
|
edit: ""
|
||||||
# Command for editing a file at a given line number. Should contain
|
# Command for editing a file at a given line number. Should contain
|
||||||
# "{{filename}}", and may optionally contain "{{line}}".
|
# "{{filename}}", and may optionally contain "{{line}}".
|
||||||
editAtLine: ""
|
editAtLine: ""
|
||||||
# Same as EditAtLine, except that the command needs to wait until the
|
# Same as EditAtLine, except that the command needs to wait until the
|
||||||
# window is closed.
|
# window is closed.
|
||||||
editAtLineAndWait: ""
|
editAtLineAndWait: ""
|
||||||
# For opening a directory in an editor
|
# For opening a directory in an editor
|
||||||
openDirInEditor: ""
|
openDirInEditor: ""
|
||||||
# A built-in preset that sets all of the above settings. Supported presets
|
# A built-in preset that sets all of the above settings. Supported presets
|
||||||
# are defined in the getPreset function in editor_presets.go.
|
# are defined in the getPreset function in editor_presets.go.
|
||||||
editPreset: ""
|
editPreset: ""
|
||||||
# Command for opening a file, as if the file is double-clicked. Should
|
# Command for opening a file, as if the file is double-clicked. Should
|
||||||
# contain "{{filename}}", but doesn't support "{{line}}".
|
# contain "{{filename}}", but doesn't support "{{line}}".
|
||||||
open: ""
|
open: ""
|
||||||
# Command for opening a link. Should contain "{{link}}".
|
# Command for opening a link. Should contain "{{link}}".
|
||||||
openLink: ""
|
openLink: ""
|
||||||
# EditCommand is the command for editing a file.
|
# EditCommand is the command for editing a file.
|
||||||
# Deprecated: use Edit instead. Note that semantics are different:
|
# Deprecated: use Edit instead. Note that semantics are different:
|
||||||
# EditCommand is just the command itself, whereas Edit contains a
|
# EditCommand is just the command itself, whereas Edit contains a
|
||||||
# "{{filename}}" variable.
|
# "{{filename}}" variable.
|
||||||
editCommand: ""
|
editCommand: ""
|
||||||
# EditCommandTemplate is the command template for editing a file
|
# EditCommandTemplate is the command template for editing a file
|
||||||
# Deprecated: use EditAtLine instead.
|
# Deprecated: use EditAtLine instead.
|
||||||
editCommandTemplate: ""
|
editCommandTemplate: ""
|
||||||
# OpenCommand is the command for opening a file
|
# OpenCommand is the command for opening a file
|
||||||
# Deprecated: use Open instead.
|
# Deprecated: use Open instead.
|
||||||
openCommand: ""
|
openCommand: ""
|
||||||
# OpenLinkCommand is the command for opening a link
|
# OpenLinkCommand is the command for opening a link
|
||||||
# Deprecated: use OpenLink instead.
|
# Deprecated: use OpenLink instead.
|
||||||
openLinkCommand: ""
|
openLinkCommand: ""
|
||||||
# CopyToClipboardCmd is the command for copying to clipboard.
|
# CopyToClipboardCmd is the command for copying to clipboard.
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
|
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
|
||||||
copyToClipboardCmd: ""
|
copyToClipboardCmd: ""
|
||||||
# ReadFromClipboardCmd is the command for reading the clipboard.
|
# ReadFromClipboardCmd is the command for reading the clipboard.
|
||||||
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
|
# See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#custom-command-for-copying-to-and-pasting-from-clipboard
|
||||||
readFromClipboardCmd: ""
|
readFromClipboardCmd: ""
|
||||||
# If true, don't display introductory popups upon opening Lazygit.
|
# If true, don't display introductory popups upon opening Lazygit.
|
||||||
disableStartupPopups: true
|
disableStartupPopups: true
|
||||||
# What to do when opening Lazygit outside of a git repo.
|
# What to do when opening Lazygit outside of a git repo.
|
||||||
# - 'prompt': (default) ask whether to initialize a new repo or open in the most recent repo
|
# - 'prompt': (default) ask whether to initialize a new repo or open in the most recent repo
|
||||||
# - 'create': initialize a new repo
|
# - 'create': initialize a new repo
|
||||||
# - 'skip': open most recent repo
|
# - 'skip': open most recent repo
|
||||||
# - 'quit': exit Lazygit
|
# - 'quit': exit Lazygit
|
||||||
notARepository: prompt
|
notARepository: prompt
|
||||||
# If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit.
|
# If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit.
|
||||||
promptToReturnFromSubprocess: true
|
promptToReturnFromSubprocess: true
|
||||||
# Keybindings
|
# Keybindings
|
||||||
keybinding:
|
keybinding:
|
||||||
universal:
|
universal:
|
||||||
quit: q
|
quit: q
|
||||||
quit-alt1: <c-c>
|
quit-alt1: <c-c>
|
||||||
return: <esc>
|
return: <esc>
|
||||||
quitWithoutChangingDirectory: Q
|
quitWithoutChangingDirectory: Q
|
||||||
togglePanel: <tab>
|
togglePanel: <tab>
|
||||||
prevItem: <up>
|
prevItem: <up>
|
||||||
nextItem: <down>
|
nextItem: <down>
|
||||||
prevItem-alt: k
|
prevItem-alt: k
|
||||||
nextItem-alt: j
|
nextItem-alt: j
|
||||||
prevPage: ","
|
prevPage: ","
|
||||||
nextPage: .
|
nextPage: .
|
||||||
scrollLeft: H
|
scrollLeft: H
|
||||||
scrollRight: L
|
scrollRight: L
|
||||||
gotoTop: <
|
gotoTop: <
|
||||||
gotoBottom: ">"
|
gotoBottom: ">"
|
||||||
toggleRangeSelect: v
|
toggleRangeSelect: v
|
||||||
rangeSelectDown: <s-down>
|
rangeSelectDown: <s-down>
|
||||||
rangeSelectUp: <s-up>
|
rangeSelectUp: <s-up>
|
||||||
prevBlock: <left>
|
prevBlock: <left>
|
||||||
nextBlock: <right>
|
nextBlock: <right>
|
||||||
prevBlock-alt: h
|
prevBlock-alt: h
|
||||||
nextBlock-alt: l
|
nextBlock-alt: l
|
||||||
nextBlock-alt2: <tab>
|
nextBlock-alt2: <tab>
|
||||||
prevBlock-alt2: <backtab>
|
prevBlock-alt2: <backtab>
|
||||||
jumpToBlock:
|
jumpToBlock:
|
||||||
- "1"
|
- "1"
|
||||||
- "2"
|
- "2"
|
||||||
- "3"
|
- "3"
|
||||||
- "4"
|
- "4"
|
||||||
- "5"
|
- "5"
|
||||||
nextMatch: "n"
|
nextMatch: "n"
|
||||||
prevMatch: "N"
|
prevMatch: "N"
|
||||||
startSearch: /
|
startSearch: /
|
||||||
optionMenu: <disabled>
|
optionMenu: <disabled>
|
||||||
optionMenu-alt1: "?"
|
optionMenu-alt1: "?"
|
||||||
select: <space>
|
select: <space>
|
||||||
goInto: <enter>
|
goInto: <enter>
|
||||||
confirm: <enter>
|
confirm: <enter>
|
||||||
confirmInEditor: <a-enter>
|
confirmInEditor: <a-enter>
|
||||||
remove: d
|
remove: d
|
||||||
new: "n"
|
new: "n"
|
||||||
edit: e
|
edit: e
|
||||||
openFile: o
|
openFile: o
|
||||||
scrollUpMain: <pgup>
|
scrollUpMain: <pgup>
|
||||||
scrollDownMain: <pgdown>
|
scrollDownMain: <pgdown>
|
||||||
scrollUpMain-alt1: K
|
scrollUpMain-alt1: K
|
||||||
scrollDownMain-alt1: J
|
scrollDownMain-alt1: J
|
||||||
scrollUpMain-alt2: <c-u>
|
scrollUpMain-alt2: <c-u>
|
||||||
scrollDownMain-alt2: <c-d>
|
scrollDownMain-alt2: <c-d>
|
||||||
executeShellCommand: ":"
|
executeShellCommand: ":"
|
||||||
createRebaseOptionsMenu: m
|
createRebaseOptionsMenu: m
|
||||||
# 'Files' appended for legacy reasons
|
# 'Files' appended for legacy reasons
|
||||||
pushFiles: P
|
pushFiles: P
|
||||||
# 'Files' appended for legacy reasons
|
# 'Files' appended for legacy reasons
|
||||||
pullFiles: p
|
pullFiles: p
|
||||||
refresh: R
|
refresh: R
|
||||||
createPatchOptionsMenu: <c-p>
|
createPatchOptionsMenu: <c-p>
|
||||||
nextTab: "]"
|
nextTab: "]"
|
||||||
prevTab: "["
|
prevTab: "["
|
||||||
nextScreenMode: +
|
nextScreenMode: +
|
||||||
prevScreenMode: _
|
prevScreenMode: _
|
||||||
undo: z
|
undo: z
|
||||||
redo: <c-z>
|
redo: <c-z>
|
||||||
filteringMenu: <c-s>
|
filteringMenu: <c-s>
|
||||||
diffingMenu: W
|
diffingMenu: W
|
||||||
diffingMenu-alt: <c-e>
|
diffingMenu-alt: <c-e>
|
||||||
copyToClipboard: <c-o>
|
copyToClipboard: <c-o>
|
||||||
openRecentRepos: <c-r>
|
openRecentRepos: <c-r>
|
||||||
submitEditorText: <enter>
|
submitEditorText: <enter>
|
||||||
extrasMenu: "@"
|
extrasMenu: "@"
|
||||||
toggleWhitespaceInDiffView: <c-w>
|
toggleWhitespaceInDiffView: <c-w>
|
||||||
increaseContextInDiffView: "}"
|
increaseContextInDiffView: "}"
|
||||||
decreaseContextInDiffView: "{"
|
decreaseContextInDiffView: "{"
|
||||||
increaseRenameSimilarityThreshold: )
|
increaseRenameSimilarityThreshold: )
|
||||||
decreaseRenameSimilarityThreshold: (
|
decreaseRenameSimilarityThreshold: (
|
||||||
openDiffTool: <c-t>
|
openDiffTool: <c-t>
|
||||||
status:
|
status:
|
||||||
checkForUpdate: u
|
checkForUpdate: u
|
||||||
recentRepos: <enter>
|
recentRepos: <enter>
|
||||||
allBranchesLogGraph: a
|
allBranchesLogGraph: a
|
||||||
files:
|
files:
|
||||||
commitChanges: c
|
commitChanges: c
|
||||||
commitChangesWithoutHook: w
|
commitChangesWithoutHook: w
|
||||||
amendLastCommit: A
|
amendLastCommit: A
|
||||||
commitChangesWithEditor: C
|
commitChangesWithEditor: C
|
||||||
findBaseCommitForFixup: <c-f>
|
findBaseCommitForFixup: <c-f>
|
||||||
confirmDiscard: x
|
confirmDiscard: x
|
||||||
ignoreFile: i
|
ignoreFile: i
|
||||||
refreshFiles: r
|
refreshFiles: r
|
||||||
stashAllChanges: s
|
stashAllChanges: s
|
||||||
viewStashOptions: S
|
viewStashOptions: S
|
||||||
toggleStagedAll: a
|
toggleStagedAll: a
|
||||||
viewResetOptions: D
|
viewResetOptions: D
|
||||||
fetch: f
|
fetch: f
|
||||||
toggleTreeView: "`"
|
toggleTreeView: "`"
|
||||||
openMergeTool: M
|
openMergeTool: M
|
||||||
openStatusFilter: <c-b>
|
openStatusFilter: <c-b>
|
||||||
copyFileInfoToClipboard: "y"
|
copyFileInfoToClipboard: "y"
|
||||||
branches:
|
branches:
|
||||||
createPullRequest: o
|
createPullRequest: o
|
||||||
viewPullRequestOptions: O
|
viewPullRequestOptions: O
|
||||||
copyPullRequestURL: <c-y>
|
copyPullRequestURL: <c-y>
|
||||||
checkoutBranchByName: c
|
checkoutBranchByName: c
|
||||||
forceCheckoutBranch: F
|
forceCheckoutBranch: F
|
||||||
rebaseBranch: r
|
rebaseBranch: r
|
||||||
renameBranch: R
|
renameBranch: R
|
||||||
mergeIntoCurrentBranch: M
|
mergeIntoCurrentBranch: M
|
||||||
viewGitFlowOptions: i
|
viewGitFlowOptions: i
|
||||||
fastForward: f
|
fastForward: f
|
||||||
createTag: T
|
createTag: T
|
||||||
pushTag: P
|
pushTag: P
|
||||||
setUpstream: u
|
setUpstream: u
|
||||||
fetchRemote: f
|
fetchRemote: f
|
||||||
sortOrder: s
|
sortOrder: s
|
||||||
worktrees:
|
worktrees:
|
||||||
viewWorktreeOptions: w
|
viewWorktreeOptions: w
|
||||||
commits:
|
commits:
|
||||||
squashDown: s
|
squashDown: s
|
||||||
renameCommit: r
|
renameCommit: r
|
||||||
renameCommitWithEditor: R
|
renameCommitWithEditor: R
|
||||||
viewResetOptions: g
|
viewResetOptions: g
|
||||||
markCommitAsFixup: f
|
markCommitAsFixup: f
|
||||||
createFixupCommit: F
|
createFixupCommit: F
|
||||||
squashAboveCommits: S
|
squashAboveCommits: S
|
||||||
moveDownCommit: <c-j>
|
moveDownCommit: <c-j>
|
||||||
moveUpCommit: <c-k>
|
moveUpCommit: <c-k>
|
||||||
amendToCommit: A
|
amendToCommit: A
|
||||||
resetCommitAuthor: a
|
resetCommitAuthor: a
|
||||||
pickCommit: p
|
pickCommit: p
|
||||||
revertCommit: t
|
revertCommit: t
|
||||||
cherryPickCopy: C
|
cherryPickCopy: C
|
||||||
pasteCommits: V
|
pasteCommits: V
|
||||||
markCommitAsBaseForRebase: B
|
markCommitAsBaseForRebase: B
|
||||||
tagCommit: T
|
tagCommit: T
|
||||||
checkoutCommit: <space>
|
checkoutCommit: <space>
|
||||||
resetCherryPick: <c-R>
|
resetCherryPick: <c-R>
|
||||||
copyCommitAttributeToClipboard: "y"
|
copyCommitAttributeToClipboard: "y"
|
||||||
openLogMenu: <c-l>
|
openLogMenu: <c-l>
|
||||||
openInBrowser: o
|
openInBrowser: o
|
||||||
viewBisectOptions: b
|
viewBisectOptions: b
|
||||||
startInteractiveRebase: i
|
startInteractiveRebase: i
|
||||||
amendAttribute:
|
amendAttribute:
|
||||||
resetAuthor: a
|
resetAuthor: a
|
||||||
setAuthor: A
|
setAuthor: A
|
||||||
addCoAuthor: c
|
addCoAuthor: c
|
||||||
stash:
|
stash:
|
||||||
popStash: g
|
popStash: g
|
||||||
renameStash: r
|
renameStash: r
|
||||||
commitFiles:
|
commitFiles:
|
||||||
checkoutCommitFile: c
|
checkoutCommitFile: c
|
||||||
main:
|
main:
|
||||||
toggleSelectHunk: a
|
toggleSelectHunk: a
|
||||||
pickBothHunks: b
|
pickBothHunks: b
|
||||||
editSelectHunk: E
|
editSelectHunk: E
|
||||||
submodules:
|
submodules:
|
||||||
init: i
|
init: i
|
||||||
update: u
|
update: u
|
||||||
bulkMenu: b
|
bulkMenu: b
|
||||||
commitMessage:
|
commitMessage:
|
||||||
commitMenu: <c-o>
|
commitMenu: <c-o>
|
||||||
|
|||||||
16
lazyvim/.config/nvim/.gitignore
vendored
16
lazyvim/.config/nvim/.gitignore
vendored
@@ -1,8 +1,8 @@
|
|||||||
tt.*
|
tt.*
|
||||||
.tests
|
.tests
|
||||||
doc/tags
|
doc/tags
|
||||||
debug
|
debug
|
||||||
.repro
|
.repro
|
||||||
foo.*
|
foo.*
|
||||||
*.log
|
*.log
|
||||||
data
|
data
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
{
|
{
|
||||||
"neodev": {
|
"neodev": {
|
||||||
"library": {
|
"library": {
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"plugins": true
|
"plugins": true
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"neoconf": {
|
"neoconf": {
|
||||||
"plugins": {
|
"plugins": {
|
||||||
"lua_ls": {
|
"lua_ls": {
|
||||||
"enabled": true
|
"enabled": true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,201 +1,201 @@
|
|||||||
Apache License
|
Apache License
|
||||||
Version 2.0, January 2004
|
Version 2.0, January 2004
|
||||||
http://www.apache.org/licenses/
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
1. Definitions.
|
1. Definitions.
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction,
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
and distribution as defined by Sections 1 through 9 of this document.
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
"Licensor" shall mean the copyright owner or entity authorized by
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
the copyright owner that is granting the License.
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
"Legal Entity" shall mean the union of the acting entity and all
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
other entities that control, are controlled by, or are under common
|
other entities that control, are controlled by, or are under common
|
||||||
control with that entity. For the purposes of this definition,
|
control with that entity. For the purposes of this definition,
|
||||||
"control" means (i) the power, direct or indirect, to cause the
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
direction or management of such entity, whether by contract or
|
direction or management of such entity, whether by contract or
|
||||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
"You" (or "Your") shall mean an individual or Legal Entity
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
exercising permissions granted by this License.
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
"Source" form shall mean the preferred form for making modifications,
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
including but not limited to software source code, documentation
|
including but not limited to software source code, documentation
|
||||||
source, and configuration files.
|
source, and configuration files.
|
||||||
|
|
||||||
"Object" form shall mean any form resulting from mechanical
|
"Object" form shall mean any form resulting from mechanical
|
||||||
transformation or translation of a Source form, including but
|
transformation or translation of a Source form, including but
|
||||||
not limited to compiled object code, generated documentation,
|
not limited to compiled object code, generated documentation,
|
||||||
and conversions to other media types.
|
and conversions to other media types.
|
||||||
|
|
||||||
"Work" shall mean the work of authorship, whether in Source or
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
Object form, made available under the License, as indicated by a
|
Object form, made available under the License, as indicated by a
|
||||||
copyright notice that is included in or attached to the work
|
copyright notice that is included in or attached to the work
|
||||||
(an example is provided in the Appendix below).
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
"Derivative Works" shall mean any work, whether in Source or Object
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
form, that is based on (or derived from) the Work and for which the
|
form, that is based on (or derived from) the Work and for which the
|
||||||
editorial revisions, annotations, elaborations, or other modifications
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
represent, as a whole, an original work of authorship. For the purposes
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
of this License, Derivative Works shall not include works that remain
|
of this License, Derivative Works shall not include works that remain
|
||||||
separable from, or merely link (or bind by name) to the interfaces of,
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
the Work and Derivative Works thereof.
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
"Contribution" shall mean any work of authorship, including
|
"Contribution" shall mean any work of authorship, including
|
||||||
the original version of the Work and any modifications or additions
|
the original version of the Work and any modifications or additions
|
||||||
to that Work or Derivative Works thereof, that is intentionally
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
or by an individual or Legal Entity authorized to submit on behalf of
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
the copyright owner. For the purposes of this definition, "submitted"
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
means any form of electronic, verbal, or written communication sent
|
means any form of electronic, verbal, or written communication sent
|
||||||
to the Licensor or its representatives, including but not limited to
|
to the Licensor or its representatives, including but not limited to
|
||||||
communication on electronic mailing lists, source code control systems,
|
communication on electronic mailing lists, source code control systems,
|
||||||
and issue tracking systems that are managed by, or on behalf of, the
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
Licensor for the purpose of discussing and improving the Work, but
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
excluding communication that is conspicuously marked or otherwise
|
excluding communication that is conspicuously marked or otherwise
|
||||||
designated in writing by the copyright owner as "Not a Contribution."
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
on behalf of whom a Contribution has been received by Licensor and
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
subsequently incorporated within the Work.
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
copyright license to reproduce, prepare Derivative Works of,
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
publicly display, publicly perform, sublicense, and distribute the
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
Work and such Derivative Works in Source or Object form.
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
3. Grant of Patent License. Subject to the terms and conditions of
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
this License, each Contributor hereby grants to You a perpetual,
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
(except as stated in this section) patent license to make, have made,
|
(except as stated in this section) patent license to make, have made,
|
||||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
where such license applies only to those patent claims licensable
|
where such license applies only to those patent claims licensable
|
||||||
by such Contributor that are necessarily infringed by their
|
by such Contributor that are necessarily infringed by their
|
||||||
Contribution(s) alone or by combination of their Contribution(s)
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
with the Work to which such Contribution(s) was submitted. If You
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
institute patent litigation against any entity (including a
|
institute patent litigation against any entity (including a
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
or a Contribution incorporated within the Work constitutes direct
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
or contributory patent infringement, then any patent licenses
|
or contributory patent infringement, then any patent licenses
|
||||||
granted to You under this License for that Work shall terminate
|
granted to You under this License for that Work shall terminate
|
||||||
as of the date such litigation is filed.
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
4. Redistribution. You may reproduce and distribute copies of the
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
Work or Derivative Works thereof in any medium, with or without
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
modifications, and in Source or Object form, provided that You
|
modifications, and in Source or Object form, provided that You
|
||||||
meet the following conditions:
|
meet the following conditions:
|
||||||
|
|
||||||
(a) You must give any other recipients of the Work or
|
(a) You must give any other recipients of the Work or
|
||||||
Derivative Works a copy of this License; and
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
(b) You must cause any modified files to carry prominent notices
|
(b) You must cause any modified files to carry prominent notices
|
||||||
stating that You changed the files; and
|
stating that You changed the files; and
|
||||||
|
|
||||||
(c) You must retain, in the Source form of any Derivative Works
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
that You distribute, all copyright, patent, trademark, and
|
that You distribute, all copyright, patent, trademark, and
|
||||||
attribution notices from the Source form of the Work,
|
attribution notices from the Source form of the Work,
|
||||||
excluding those notices that do not pertain to any part of
|
excluding those notices that do not pertain to any part of
|
||||||
the Derivative Works; and
|
the Derivative Works; and
|
||||||
|
|
||||||
(d) If the Work includes a "NOTICE" text file as part of its
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
distribution, then any Derivative Works that You distribute must
|
distribution, then any Derivative Works that You distribute must
|
||||||
include a readable copy of the attribution notices contained
|
include a readable copy of the attribution notices contained
|
||||||
within such NOTICE file, excluding those notices that do not
|
within such NOTICE file, excluding those notices that do not
|
||||||
pertain to any part of the Derivative Works, in at least one
|
pertain to any part of the Derivative Works, in at least one
|
||||||
of the following places: within a NOTICE text file distributed
|
of the following places: within a NOTICE text file distributed
|
||||||
as part of the Derivative Works; within the Source form or
|
as part of the Derivative Works; within the Source form or
|
||||||
documentation, if provided along with the Derivative Works; or,
|
documentation, if provided along with the Derivative Works; or,
|
||||||
within a display generated by the Derivative Works, if and
|
within a display generated by the Derivative Works, if and
|
||||||
wherever such third-party notices normally appear. The contents
|
wherever such third-party notices normally appear. The contents
|
||||||
of the NOTICE file are for informational purposes only and
|
of the NOTICE file are for informational purposes only and
|
||||||
do not modify the License. You may add Your own attribution
|
do not modify the License. You may add Your own attribution
|
||||||
notices within Derivative Works that You distribute, alongside
|
notices within Derivative Works that You distribute, alongside
|
||||||
or as an addendum to the NOTICE text from the Work, provided
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
that such additional attribution notices cannot be construed
|
that such additional attribution notices cannot be construed
|
||||||
as modifying the License.
|
as modifying the License.
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and
|
You may add Your own copyright statement to Your modifications and
|
||||||
may provide additional or different license terms and conditions
|
may provide additional or different license terms and conditions
|
||||||
for use, reproduction, or distribution of Your modifications, or
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
for any such Derivative Works as a whole, provided Your use,
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
reproduction, and distribution of the Work otherwise complies with
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
the conditions stated in this License.
|
the conditions stated in this License.
|
||||||
|
|
||||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
any Contribution intentionally submitted for inclusion in the Work
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
by You to the Licensor shall be under the terms and conditions of
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
this License, without any additional terms or conditions.
|
this License, without any additional terms or conditions.
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
the terms of any separate license agreement you may have executed
|
the terms of any separate license agreement you may have executed
|
||||||
with Licensor regarding such Contributions.
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
6. Trademarks. This License does not grant permission to use the trade
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
names, trademarks, service marks, or product names of the Licensor,
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
except as required for reasonable and customary use in describing the
|
except as required for reasonable and customary use in describing the
|
||||||
origin of the Work and reproducing the content of the NOTICE file.
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
agreed to in writing, Licensor provides the Work (and each
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
implied, including, without limitation, any warranties or conditions
|
implied, including, without limitation, any warranties or conditions
|
||||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
appropriateness of using or redistributing the Work and assume any
|
appropriateness of using or redistributing the Work and assume any
|
||||||
risks associated with Your exercise of permissions under this License.
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
8. Limitation of Liability. In no event and under no legal theory,
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
whether in tort (including negligence), contract, or otherwise,
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
unless required by applicable law (such as deliberate and grossly
|
unless required by applicable law (such as deliberate and grossly
|
||||||
negligent acts) or agreed to in writing, shall any Contributor be
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
liable to You for damages, including any direct, indirect, special,
|
liable to You for damages, including any direct, indirect, special,
|
||||||
incidental, or consequential damages of any character arising as a
|
incidental, or consequential damages of any character arising as a
|
||||||
result of this License or out of the use or inability to use the
|
result of this License or out of the use or inability to use the
|
||||||
Work (including but not limited to damages for loss of goodwill,
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
work stoppage, computer failure or malfunction, or any and all
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
other commercial damages or losses), even if such Contributor
|
other commercial damages or losses), even if such Contributor
|
||||||
has been advised of the possibility of such damages.
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
9. Accepting Warranty or Additional Liability. While redistributing
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
the Work or Derivative Works thereof, You may choose to offer,
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
or other liability obligations and/or rights consistent with this
|
or other liability obligations and/or rights consistent with this
|
||||||
License. However, in accepting such obligations, You may act only
|
License. However, in accepting such obligations, You may act only
|
||||||
on Your own behalf and on Your sole responsibility, not on behalf
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
of any other Contributor, and only if You agree to indemnify,
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
defend, and hold each Contributor harmless for any liability
|
defend, and hold each Contributor harmless for any liability
|
||||||
incurred by, or claims asserted against, such Contributor by reason
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
of your accepting any such warranty or additional liability.
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
END OF TERMS AND CONDITIONS
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
APPENDIX: How to apply the Apache License to your work.
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
To apply the Apache License to your work, attach the following
|
||||||
boilerplate notice, with the fields enclosed by brackets "[]"
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
replaced with your own identifying information. (Don't include
|
replaced with your own identifying information. (Don't include
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
comment syntax for the file format. We also recommend that a
|
comment syntax for the file format. We also recommend that a
|
||||||
file or class name and description of purpose be included on the
|
file or class name and description of purpose be included on the
|
||||||
same "printed page" as the copyright notice for easier
|
same "printed page" as the copyright notice for easier
|
||||||
identification within third-party archives.
|
identification within third-party archives.
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
You may obtain a copy of the License at
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
Unless required by applicable law or agreed to in writing, software
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
See the License for the specific language governing permissions and
|
See the License for the specific language governing permissions and
|
||||||
limitations under the License.
|
limitations under the License.
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
-- bootstrap lazy.nvim, LazyVim and your plugins
|
-- bootstrap lazy.nvim, LazyVim and your plugins
|
||||||
require("config.lazy")
|
require("config.lazy")
|
||||||
require("user.utils")
|
require("user.utils")
|
||||||
|
|||||||
@@ -1,18 +1,17 @@
|
|||||||
{
|
{
|
||||||
"LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" },
|
"LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" },
|
||||||
"SchemaStore.nvim": { "branch": "main", "commit": "8e74c08998fd786239caba373344f4e4601e21fe" },
|
"SchemaStore.nvim": { "branch": "main", "commit": "dc34600801650c2c8bf62125b1f70f6cfffcc057" },
|
||||||
"alpha-nvim": { "branch": "main", "commit": "2b3cbcdd980cae1e022409289245053f62fb50f6" },
|
"alpha-nvim": { "branch": "main", "commit": "2b3cbcdd980cae1e022409289245053f62fb50f6" },
|
||||||
"blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" },
|
"blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" },
|
||||||
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||||
"catppuccin": { "branch": "main", "commit": "30fa4d122d9b22ad8b2e0ab1b533c8c26c4dde86" },
|
"catppuccin": { "branch": "main", "commit": "30fa4d122d9b22ad8b2e0ab1b533c8c26c4dde86" },
|
||||||
"clangd_extensions.nvim": { "branch": "main", "commit": "b67cc417d9020fb4b83d46662351b4d16894905e" },
|
"clangd_extensions.nvim": { "branch": "main", "commit": "b67cc417d9020fb4b83d46662351b4d16894905e" },
|
||||||
"conform.nvim": { "branch": "master", "commit": "b4aab989db276993ea5dcb78872be494ce546521" },
|
"conform.nvim": { "branch": "master", "commit": "b4aab989db276993ea5dcb78872be494ce546521" },
|
||||||
"dial.nvim": { "branch": "master", "commit": "78bd73aaf2b9c8f80715a878feaf56f7ffa8b6ff" },
|
"dial.nvim": { "branch": "master", "commit": "f0404ec1f83a03f2c3457e60087c6331d1cbb83f" },
|
||||||
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
|
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
|
||||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||||
"fzf-lua": { "branch": "main", "commit": "2c4c75e71eedbedd55ea13ab3400f72a2336e672" },
|
"fzf-lua": { "branch": "main", "commit": "091bcd0c925199b1371ea81ec79278611d299627" },
|
||||||
"gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" },
|
"gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" },
|
||||||
"glow.nvim": { "branch": "main", "commit": "5d5954b2f22e109d4a6eba8b2618c5b96e4ee7a2" },
|
|
||||||
"grug-far.nvim": { "branch": "main", "commit": "385d1949dc21d0c39e7a74b4f4a25da18817bc86" },
|
"grug-far.nvim": { "branch": "main", "commit": "385d1949dc21d0c39e7a74b4f4a25da18817bc86" },
|
||||||
"hardtime.nvim": { "branch": "main", "commit": "6d7664d5bdfaea44c5f50b29f5239fab7b00c273" },
|
"hardtime.nvim": { "branch": "main", "commit": "6d7664d5bdfaea44c5f50b29f5239fab7b00c273" },
|
||||||
"harpoon": { "branch": "harpoon2", "commit": "ed1f853847ffd04b2b61c314865665e1dadf22c7" },
|
"harpoon": { "branch": "harpoon2", "commit": "ed1f853847ffd04b2b61c314865665e1dadf22c7" },
|
||||||
@@ -24,29 +23,31 @@
|
|||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" },
|
||||||
"mason-nvim-dap.nvim": { "branch": "main", "commit": "86389a3dd687cfaa647b6f44731e492970034baa" },
|
"mason-nvim-dap.nvim": { "branch": "main", "commit": "86389a3dd687cfaa647b6f44731e492970034baa" },
|
||||||
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
|
"mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" },
|
||||||
"mini.ai": { "branch": "main", "commit": "50994f55b6de0c2781e217c2d5e4a613312e460e" },
|
"mini.ai": { "branch": "main", "commit": "45a26d032d8703f280c69c2ed9fb4e1bfc8f24f9" },
|
||||||
"mini.icons": { "branch": "main", "commit": "b8f6fa6f5a3fd0c56936252edcd691184e5aac0c" },
|
"mini.icons": { "branch": "main", "commit": "f9a177c11daa7829389b7b6eaaec8b8a5c47052d" },
|
||||||
"mini.pairs": { "branch": "main", "commit": "1e1ca3f60f58d4050bf814902b472eec9963a5dd" },
|
"mini.nvim": { "branch": "main", "commit": "ddb70da6ec6aa896cfde87350d1e8dffb57ddef0" },
|
||||||
|
"mini.pairs": { "branch": "main", "commit": "6e1cc569130f25b2c6fa16d8b21b31ddb1420a4a" },
|
||||||
"multicursors.nvim": { "branch": "main", "commit": "72225ea9e4443c3f4b9df91d0193e07c4ee8d382" },
|
"multicursors.nvim": { "branch": "main", "commit": "72225ea9e4443c3f4b9df91d0193e07c4ee8d382" },
|
||||||
"neo-tree.nvim": { "branch": "main", "commit": "46fa0c22ca39e05fe15744102d21feb07fe9a94a" },
|
"neo-tree.nvim": { "branch": "main", "commit": "46fa0c22ca39e05fe15744102d21feb07fe9a94a" },
|
||||||
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
|
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
|
||||||
"none-ls.nvim": { "branch": "main", "commit": "53ec77181d96494b9dc9457110dd62dc623cc78d" },
|
"none-ls.nvim": { "branch": "main", "commit": "53ec77181d96494b9dc9457110dd62dc623cc78d" },
|
||||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
"nvim-dap": { "branch": "master", "commit": "968f89f8aac11b6bdbfc942c71d3436658c1435f" },
|
"nvim-dap": { "branch": "master", "commit": "7891b01beedc37cef4eaf2e92563bd0a5b6e9c58" },
|
||||||
"nvim-dap-go": { "branch": "main", "commit": "b4421153ead5d726603b02743ea40cf26a51ed5f" },
|
"nvim-dap-go": { "branch": "main", "commit": "b4421153ead5d726603b02743ea40cf26a51ed5f" },
|
||||||
"nvim-dap-python": { "branch": "master", "commit": "030385d03363988370adaa5cf21fa465daddb088" },
|
"nvim-dap-python": { "branch": "master", "commit": "030385d03363988370adaa5cf21fa465daddb088" },
|
||||||
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
|
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
|
||||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
||||||
"nvim-lint": { "branch": "master", "commit": "ee04d481d4e6089892c2fb2ad8924b1a053591e1" },
|
"nvim-lint": { "branch": "master", "commit": "f126af5345c7472e9a0cdbe1d1a29209be72c4c4" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "3d97ec4174bcc750d70718ddedabf150536a5891" },
|
"nvim-lspconfig": { "branch": "master", "commit": "a3deebbd110016f50cc66b7b256120072f3804db" },
|
||||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" },
|
"nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" },
|
||||||
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
|
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
|
||||||
|
"nvim-web-devicons": { "branch": "master", "commit": "f66cdfef5e84112045b9ebc3119fee9bddb3c687" },
|
||||||
"persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" },
|
"persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||||
"refactoring.nvim": { "branch": "master", "commit": "74b608dfee827c2372250519d433cc21cb083407" },
|
"refactoring.nvim": { "branch": "master", "commit": "74b608dfee827c2372250519d433cc21cb083407" },
|
||||||
"render-markdown.nvim": { "branch": "main", "commit": "f626e90bbc4b3d8f4fd29c909d958b165af13f4a" },
|
"render-markdown.nvim": { "branch": "main", "commit": "e76eb2e4262f0f0a1a7bd7a454dd7d44f1299afd" },
|
||||||
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
|
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
|
||||||
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||||
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
||||||
@@ -55,5 +56,5 @@
|
|||||||
"ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" },
|
"ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" },
|
||||||
"venv-selector.nvim": { "branch": "regexp", "commit": "d2326e7433fdeb10f7d0d1237c18b91b353f9f8b" },
|
"venv-selector.nvim": { "branch": "regexp", "commit": "d2326e7433fdeb10f7d0d1237c18b91b353f9f8b" },
|
||||||
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" },
|
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" },
|
||||||
"yazi.nvim": { "branch": "main", "commit": "66a659291f85517994886bb641567ce7c7d5368b" }
|
"yazi.nvim": { "branch": "main", "commit": "8ce0abb50c30fdc486c465ddfab28510346e6bd7" }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
{
|
{
|
||||||
"extras": [
|
"extras": [
|
||||||
"lazyvim.plugins.extras.dap.core",
|
"lazyvim.plugins.extras.dap.core",
|
||||||
"lazyvim.plugins.extras.editor.dial",
|
"lazyvim.plugins.extras.editor.dial",
|
||||||
"lazyvim.plugins.extras.editor.fzf",
|
"lazyvim.plugins.extras.editor.fzf",
|
||||||
"lazyvim.plugins.extras.editor.refactoring",
|
"lazyvim.plugins.extras.editor.refactoring",
|
||||||
"lazyvim.plugins.extras.editor.telescope",
|
"lazyvim.plugins.extras.editor.telescope",
|
||||||
"lazyvim.plugins.extras.lang.clangd",
|
"lazyvim.plugins.extras.lang.clangd",
|
||||||
"lazyvim.plugins.extras.lang.git",
|
"lazyvim.plugins.extras.lang.git",
|
||||||
"lazyvim.plugins.extras.lang.go",
|
"lazyvim.plugins.extras.lang.go",
|
||||||
"lazyvim.plugins.extras.lang.json",
|
"lazyvim.plugins.extras.lang.json",
|
||||||
"lazyvim.plugins.extras.lang.markdown",
|
"lazyvim.plugins.extras.lang.markdown",
|
||||||
"lazyvim.plugins.extras.lang.python",
|
"lazyvim.plugins.extras.lang.python",
|
||||||
"lazyvim.plugins.extras.lang.toml",
|
"lazyvim.plugins.extras.lang.toml",
|
||||||
"lazyvim.plugins.extras.lang.yaml",
|
"lazyvim.plugins.extras.lang.yaml",
|
||||||
"lazyvim.plugins.extras.lang.zig",
|
"lazyvim.plugins.extras.lang.zig",
|
||||||
"lazyvim.plugins.extras.lsp.none-ls",
|
"lazyvim.plugins.extras.lsp.none-ls",
|
||||||
"lazyvim.plugins.extras.ui.alpha"
|
"lazyvim.plugins.extras.ui.alpha"
|
||||||
],
|
],
|
||||||
"install_version": 7,
|
"install_version": 7,
|
||||||
"news": {
|
"news": {
|
||||||
"NEWS.md": "10960"
|
"NEWS.md": "10960"
|
||||||
},
|
},
|
||||||
"version": 8
|
"version": 8
|
||||||
}
|
}
|
||||||
@@ -1,33 +1,33 @@
|
|||||||
-- Autocmds are automatically loaded on the VeryLazy event
|
-- Autocmds are automatically loaded on the VeryLazy event
|
||||||
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
|
||||||
-- Add any additional autocmds here
|
-- Add any additional autocmds here
|
||||||
|
|
||||||
local augroup = vim.api.nvim_create_augroup
|
local augroup = vim.api.nvim_create_augroup
|
||||||
local autocmd = vim.api.nvim_create_autocmd
|
local autocmd = vim.api.nvim_create_autocmd
|
||||||
local view_group = augroup("auto_view", { clear = true })
|
local view_group = augroup("auto_view", { clear = true })
|
||||||
|
|
||||||
autocmd({ "BufWinLeave", "BufWritePost", "WinLeave" }, {
|
autocmd({ "BufWinLeave", "BufWritePost", "WinLeave" }, {
|
||||||
desc = "Save view with mkview for real files",
|
desc = "Save view with mkview for real files",
|
||||||
group = view_group,
|
group = view_group,
|
||||||
callback = function(args)
|
callback = function(args)
|
||||||
if vim.b[args.buf].view_activated then
|
if vim.b[args.buf].view_activated then
|
||||||
vim.cmd.mkview({ mods = { emsg_silent = true } })
|
vim.cmd.mkview({ mods = { emsg_silent = true } })
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
autocmd("BufWinEnter", {
|
autocmd("BufWinEnter", {
|
||||||
desc = "Try to load file view if available and enable view saving for real files",
|
desc = "Try to load file view if available and enable view saving for real files",
|
||||||
group = view_group,
|
group = view_group,
|
||||||
callback = function(args)
|
callback = function(args)
|
||||||
if not vim.b[args.buf].view_activated then
|
if not vim.b[args.buf].view_activated then
|
||||||
local filetype = vim.api.nvim_get_option_value("filetype", { buf = args.buf })
|
local filetype = vim.api.nvim_get_option_value("filetype", { buf = args.buf })
|
||||||
local buftype = vim.api.nvim_get_option_value("buftype", { buf = args.buf })
|
local buftype = vim.api.nvim_get_option_value("buftype", { buf = args.buf })
|
||||||
local ignore_filetypes = { "gitcommit", "gitrebase", "svg", "hgcommit" }
|
local ignore_filetypes = { "gitcommit", "gitrebase", "svg", "hgcommit" }
|
||||||
if buftype == "" and filetype and filetype ~= "" and not vim.tbl_contains(ignore_filetypes, filetype) then
|
if buftype == "" and filetype and filetype ~= "" and not vim.tbl_contains(ignore_filetypes, filetype) then
|
||||||
vim.b[args.buf].view_activated = true
|
vim.b[args.buf].view_activated = true
|
||||||
vim.cmd.loadview({ mods = { emsg_silent = true } })
|
vim.cmd.loadview({ mods = { emsg_silent = true } })
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -1,45 +1,42 @@
|
|||||||
-- Keymaps are automatically loaded on the VeryLazy event
|
-- Keymaps are automatically loaded on the VeryLazy event
|
||||||
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
-- Default keymaps that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/keymaps.lua
|
||||||
-- Add any additional keymaps here
|
-- Add any additional keymaps here
|
||||||
|
|
||||||
local map = vim.keymap.set
|
local map = vim.keymap.set
|
||||||
|
|
||||||
-- Buffer management
|
-- Buffer management
|
||||||
map("n", "<leader>bn", ":bnext<CR>", { noremap = true, silent = true, desc = "Next buffer" })
|
map("n", "<leader>bn", ":bnext<CR>", { noremap = true, silent = true, desc = "Next buffer" })
|
||||||
map("n", "<leader>bp", ":bprevious<CR>", { noremap = true, silent = true, desc = "Previous buffer" })
|
map("n", "<leader>bp", ":bprevious<CR>", { noremap = true, silent = true, desc = "Previous buffer" })
|
||||||
map("n", "<leader>bd", ":bdelete<CR>", { noremap = true, silent = true, desc = "Delete buffer" })
|
map("n", "<leader>bd", ":bdelete<CR>", { noremap = true, silent = true, desc = "Delete buffer" })
|
||||||
|
|
||||||
-- Copy to system clipboard (if not already mapped)
|
-- Copy to system clipboard (if not already mapped)
|
||||||
map({ "n", "v" }, "<leader>y", [["+y]], { noremap = true, silent = true, desc = "Copy to system clipboard" })
|
map({ "n", "v" }, "<leader>y", [["+y]], { noremap = true, silent = true, desc = "Copy to system clipboard" })
|
||||||
|
|
||||||
-- Paste from system clipboard
|
-- Paste from system clipboard
|
||||||
map("n", "<leader>p", [["+p]], { noremap = true, silent = true, desc = "Paste from system clipboard" })
|
map("n", "<leader>p", [["+p]], { noremap = true, silent = true, desc = "Paste from system clipboard" })
|
||||||
|
|
||||||
-- Markdown menu
|
vim.keymap.set("n", "<leader>cc", function()
|
||||||
map("n", "<leader>M", [["+M]], { noremap = true, silent = true, desc = "Markdown" })
|
local file1 = vim.fn.expand("%")
|
||||||
|
|
||||||
vim.keymap.set("n", "<leader>cc", function()
|
local project_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1]
|
||||||
local file1 = vim.fn.expand("%")
|
if project_root == "" then
|
||||||
|
project_root = vim.fn.getcwd()
|
||||||
local project_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1]
|
end
|
||||||
if project_root == "" then
|
|
||||||
project_root = vim.fn.getcwd()
|
require("telescope.builtin").find_files({
|
||||||
end
|
prompt_title = "Compare with...",
|
||||||
|
cwd = project_root,
|
||||||
require("telescope.builtin").find_files({
|
hidden = true,
|
||||||
prompt_title = "Compare with...",
|
follow = true,
|
||||||
cwd = project_root,
|
attach_mappings = function(_, map)
|
||||||
hidden = true,
|
map("i", "<CR>", function(prompt_bufnr)
|
||||||
follow = true,
|
local actions = require("telescope.actions")
|
||||||
attach_mappings = function(_, map)
|
local action_state = require("telescope.actions.state")
|
||||||
map("i", "<CR>", function(prompt_bufnr)
|
local file2 = action_state.get_selected_entry().path
|
||||||
local actions = require("telescope.actions")
|
actions.close(prompt_bufnr)
|
||||||
local action_state = require("telescope.actions.state")
|
require("user.utils").meld_diff(file1, file2)
|
||||||
local file2 = action_state.get_selected_entry().path
|
end)
|
||||||
actions.close(prompt_bufnr)
|
return true
|
||||||
require("user.utils").meld_diff(file1, file2)
|
end,
|
||||||
end)
|
})
|
||||||
return true
|
end, { desc = "Compare with" })
|
||||||
end,
|
|
||||||
})
|
|
||||||
end, { desc = "Compare with" })
|
|
||||||
|
|||||||
@@ -1,50 +1,170 @@
|
|||||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||||
if vim.v.shell_error ~= 0 then
|
if vim.v.shell_error ~= 0 then
|
||||||
vim.api.nvim_echo({
|
vim.api.nvim_echo({
|
||||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||||
{ out, "WarningMsg" },
|
{ out, "WarningMsg" },
|
||||||
{ "\nPress any key to exit..." },
|
{ "\nPress any key to exit..." },
|
||||||
}, true, {})
|
}, true, {})
|
||||||
vim.fn.getchar()
|
vim.fn.getchar()
|
||||||
os.exit(1)
|
os.exit(1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
vim.opt.rtp:prepend(lazypath)
|
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
require("lazy").setup({
|
|
||||||
spec = {
|
-- Start LazyVim plugins
|
||||||
-- add LazyVim and import its plugins
|
require("lazy").setup({
|
||||||
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
spec = {
|
||||||
-- import/override with your plugins
|
-- add LazyVim and import its plugins
|
||||||
{ import = "plugins" },
|
{ "LazyVim/LazyVim", import = "lazyvim.plugins" },
|
||||||
},
|
-- import/override with your plugins
|
||||||
defaults = {
|
{ import = "plugins" },
|
||||||
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
},
|
||||||
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
defaults = {
|
||||||
lazy = false,
|
-- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup.
|
||||||
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
-- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default.
|
||||||
-- have outdated releases, which may break your Neovim install.
|
lazy = false,
|
||||||
version = false, -- always use the latest git commit
|
-- It's recommended to leave version=false for now, since a lot the plugin that support versioning,
|
||||||
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
-- have outdated releases, which may break your Neovim install.
|
||||||
},
|
version = false, -- always use the latest git commit
|
||||||
checker = { enabled = true }, -- automatically check for plugin updates
|
-- version = "*", -- try installing the latest stable version for plugins that support semver
|
||||||
performance = {
|
},
|
||||||
rtp = {
|
checker = { enabled = true }, -- automatically check for plugin updates
|
||||||
-- disable some rtp plugins
|
performance = {
|
||||||
disabled_plugins = {
|
rtp = {
|
||||||
"gzip",
|
-- disable some rtp plugins
|
||||||
"matchit",
|
disabled_plugins = {
|
||||||
"matchparen",
|
"gzip",
|
||||||
"netrwPlugin",
|
"matchit",
|
||||||
"tarPlugin",
|
"matchparen",
|
||||||
"tohtml",
|
"netrwPlugin",
|
||||||
"tutor",
|
"tarPlugin",
|
||||||
"zipPlugin",
|
"tohtml",
|
||||||
},
|
"tutor",
|
||||||
},
|
"zipPlugin",
|
||||||
},
|
},
|
||||||
cache = true,
|
},
|
||||||
})
|
},
|
||||||
|
cache = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Configure status bar
|
||||||
|
require("config.statusline")
|
||||||
|
|
||||||
|
-- Configure Markdown rendering rules
|
||||||
|
require("render-markdown").setup({
|
||||||
|
heading = { position = "inline" },
|
||||||
|
quote = { repeat_linebreak = true },
|
||||||
|
win_options = {
|
||||||
|
showbreak = {
|
||||||
|
default = "",
|
||||||
|
rendered = " ",
|
||||||
|
},
|
||||||
|
breakindent = {
|
||||||
|
default = false,
|
||||||
|
rendered = true,
|
||||||
|
},
|
||||||
|
breakindentopt = {
|
||||||
|
default = "",
|
||||||
|
rendered = "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
checkbox = {
|
||||||
|
unchecked = { icon = "✘ " },
|
||||||
|
checked = { icon = "✔ " },
|
||||||
|
},
|
||||||
|
code = {
|
||||||
|
position = "right",
|
||||||
|
width = "block",
|
||||||
|
right_pad = 10,
|
||||||
|
},
|
||||||
|
latex = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
link = {
|
||||||
|
custom = {
|
||||||
|
c = {
|
||||||
|
pattern = "%.[ch]$",
|
||||||
|
icon = " ",
|
||||||
|
},
|
||||||
|
golang = {
|
||||||
|
pattern = "%.go$",
|
||||||
|
icon = " ",
|
||||||
|
},
|
||||||
|
python = {
|
||||||
|
pattern = "%.py$",
|
||||||
|
icon = " ",
|
||||||
|
},
|
||||||
|
lua = {
|
||||||
|
pattern = "%.lua$",
|
||||||
|
icon = " ",
|
||||||
|
},
|
||||||
|
-- shell = {
|
||||||
|
-- pattern = "%.[sh|zsh]$",
|
||||||
|
-- icon = " ",
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Configure TreeSitter syntax parsers
|
||||||
|
require("nvim-treesitter.configs").setup({
|
||||||
|
-- A list of parser names, or "all" (the listed parsers MUST always be installed)
|
||||||
|
ensure_installed = {
|
||||||
|
"c",
|
||||||
|
"lua",
|
||||||
|
"bash",
|
||||||
|
"go",
|
||||||
|
"gomod",
|
||||||
|
"gowork",
|
||||||
|
"gosum",
|
||||||
|
"json",
|
||||||
|
"markdown",
|
||||||
|
"markdown_inline",
|
||||||
|
"python",
|
||||||
|
"zig",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Install parsers synchronously (only applied to `ensure_installed`)
|
||||||
|
sync_install = false,
|
||||||
|
|
||||||
|
-- Automatically install missing parsers when entering buffer
|
||||||
|
-- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
|
||||||
|
auto_install = true,
|
||||||
|
|
||||||
|
-- List of parsers to ignore installing (or "all")
|
||||||
|
ignore_install = { "javascript" },
|
||||||
|
|
||||||
|
---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
|
||||||
|
-- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
|
||||||
|
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
|
||||||
|
-- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
|
||||||
|
-- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
|
||||||
|
-- the name of the parser)
|
||||||
|
-- list of language that will be disabled
|
||||||
|
disable = {},
|
||||||
|
-- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
|
||||||
|
disable = function(lang, buf)
|
||||||
|
local max_filesize = 100 * 1024 -- 100 KB
|
||||||
|
local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
|
||||||
|
if ok and stats and stats.size > max_filesize then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
|
||||||
|
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
|
||||||
|
-- Using this option may slow down your editor, and you may see some duplicate highlights.
|
||||||
|
-- Instead of true it can also be a list of languages
|
||||||
|
additional_vim_regex_highlighting = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Configure Mini.AI for textobjects command
|
||||||
|
require("mini.ai").setup()
|
||||||
|
|||||||
@@ -1,57 +1,57 @@
|
|||||||
-- Options are automatically loaded before lazy.nvim startup
|
-- Options are automatically loaded before lazy.nvim startup
|
||||||
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
|
||||||
-- Add any additional options here
|
-- Add any additional options here
|
||||||
|
|
||||||
local opt = vim.opt
|
local opt = vim.opt
|
||||||
|
|
||||||
-- Encoding
|
-- Encoding
|
||||||
opt.encoding = "utf-8"
|
opt.encoding = "utf-8"
|
||||||
opt.fileencoding = "utf-8"
|
opt.fileencoding = "utf-8"
|
||||||
|
|
||||||
-- Line numbers
|
-- Line numbers
|
||||||
opt.number = true
|
opt.number = true
|
||||||
opt.relativenumber = true
|
opt.relativenumber = true
|
||||||
|
|
||||||
-- Enable mouse in all modes
|
-- Enable mouse in all modes
|
||||||
opt.mouse = "a"
|
opt.mouse = "a"
|
||||||
|
|
||||||
-- Better searching
|
-- Better searching
|
||||||
opt.ignorecase = true
|
opt.ignorecase = true
|
||||||
opt.smartcase = true
|
opt.smartcase = true
|
||||||
|
|
||||||
-- Highlight current line
|
-- Highlight current line
|
||||||
opt.cursorline = true
|
opt.cursorline = true
|
||||||
opt.cursorlineopt = "number"
|
opt.cursorlineopt = "number"
|
||||||
|
|
||||||
-- Enable true color support
|
-- Enable true color support
|
||||||
opt.termguicolors = true
|
opt.termguicolors = true
|
||||||
|
|
||||||
-- Enable system clipboard
|
-- Enable system clipboard
|
||||||
opt.clipboard = "unnamedplus"
|
opt.clipboard = "unnamedplus"
|
||||||
|
|
||||||
-- Indentation
|
-- Indentation
|
||||||
opt.softtabstop = 8
|
-- opt.softtabstop = 8
|
||||||
opt.shiftwidth = 8
|
-- opt.shiftwidth = 8
|
||||||
opt.tabstop = 8
|
-- opt.tabstop = 8
|
||||||
opt.expandtab = true
|
opt.expandtab = true
|
||||||
opt.smartindent = true
|
opt.smartindent = true
|
||||||
|
|
||||||
-- Split behavior
|
-- Split behavior
|
||||||
opt.splitright = true
|
opt.splitright = true
|
||||||
opt.splitbelow = true
|
opt.splitbelow = true
|
||||||
|
|
||||||
-- Enable undo file to persist undo history
|
-- Enable undo file to persist undo history
|
||||||
opt.undofile = true
|
opt.undofile = true
|
||||||
|
|
||||||
-- Set upbar similar to statusline (optional)
|
-- Set upbar similar to statusline (optional)
|
||||||
opt.statusline = "%f %m %r %=%-14.(%l,%c%V%) %P"
|
opt.statusline = "%f %m %r %=%-14.(%l,%c%V%) %P"
|
||||||
|
|
||||||
-- Persistent signcolumn to avoid text shifting
|
-- Persistent signcolumn to avoid text shifting
|
||||||
opt.signcolumn = "yes"
|
opt.signcolumn = "yes"
|
||||||
|
|
||||||
-- Show file name and modified flag in the window bar
|
-- Show file name and modified flag in the window bar
|
||||||
opt.winbar = "%=%m %f"
|
opt.winbar = "%=%m %f"
|
||||||
|
|
||||||
-- Backup files
|
-- Backup files
|
||||||
opt.swapfile = false
|
opt.swapfile = false
|
||||||
opt.backup = false
|
opt.backup = false
|
||||||
|
|||||||
219
lazyvim/.config/nvim/lua/config/statusline.lua
Executable file
219
lazyvim/.config/nvim/lua/config/statusline.lua
Executable file
@@ -0,0 +1,219 @@
|
|||||||
|
-- Eviline config for lualine
|
||||||
|
-- Author: shadmansaleh
|
||||||
|
-- Credit: glepnir
|
||||||
|
local lualine = require("lualine")
|
||||||
|
|
||||||
|
-- Color table for highlights
|
||||||
|
-- stylua: ignore
|
||||||
|
local colors = {
|
||||||
|
bg = '#202328',
|
||||||
|
fg = '#bbc2cf',
|
||||||
|
yellow = '#ECBE7B',
|
||||||
|
cyan = '#008080',
|
||||||
|
darkblue = '#081633',
|
||||||
|
green = '#98be65',
|
||||||
|
orange = '#FF8800',
|
||||||
|
violet = '#a9a1e1',
|
||||||
|
magenta = '#c678dd',
|
||||||
|
blue = '#51afef',
|
||||||
|
red = '#ec5f67',
|
||||||
|
}
|
||||||
|
|
||||||
|
local conditions = {
|
||||||
|
buffer_not_empty = function()
|
||||||
|
return vim.fn.empty(vim.fn.expand("%:t")) ~= 1
|
||||||
|
end,
|
||||||
|
hide_in_width = function()
|
||||||
|
return vim.fn.winwidth(0) > 80
|
||||||
|
end,
|
||||||
|
check_git_workspace = function()
|
||||||
|
local filepath = vim.fn.expand("%:p:h")
|
||||||
|
local gitdir = vim.fn.finddir(".git", filepath .. ";")
|
||||||
|
return gitdir and #gitdir > 0 and #gitdir < #filepath
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Config
|
||||||
|
local config = {
|
||||||
|
options = {
|
||||||
|
-- Disable sections and component separators
|
||||||
|
component_separators = "",
|
||||||
|
section_separators = "",
|
||||||
|
theme = "catppuccin",
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
-- these are to remove the defaults
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
-- These will be filled later
|
||||||
|
lualine_c = {},
|
||||||
|
lualine_x = {},
|
||||||
|
},
|
||||||
|
inactive_sections = {
|
||||||
|
-- these are to remove the defaults
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
lualine_c = {},
|
||||||
|
lualine_x = {},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Inserts a component in lualine_c at left section
|
||||||
|
local function ins_left(component)
|
||||||
|
table.insert(config.sections.lualine_c, component)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Inserts a component in lualine_x at right section
|
||||||
|
local function ins_right(component)
|
||||||
|
table.insert(config.sections.lualine_x, component)
|
||||||
|
end
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
function()
|
||||||
|
return "▊"
|
||||||
|
end,
|
||||||
|
color = { fg = colors.blue }, -- Sets highlighting of component
|
||||||
|
padding = { left = 0, right = 1 }, -- We don't need space before this
|
||||||
|
})
|
||||||
|
|
||||||
|
-- -- Function to get the current mode indicator as a single character
|
||||||
|
local function mode()
|
||||||
|
-- Map of modes to their respective shorthand indicators
|
||||||
|
local mode_map = {
|
||||||
|
n = "NORMAL", -- Normal mode
|
||||||
|
v = "VISUAL", -- Visual mode
|
||||||
|
[""] = "VISUAL BLOCK", -- Visual block mode
|
||||||
|
V = "VISUAL LINE", -- Visual line mode
|
||||||
|
c = "COMMAND", -- Command-line mode
|
||||||
|
no = "N-INSERT", -- NInsert mode
|
||||||
|
s = "SELECT", -- Select mode
|
||||||
|
S = "SELECT-LINE", -- Select line mode
|
||||||
|
ic = "INSERT", -- Insert mode (completion)
|
||||||
|
R = "REPLACE", -- Replace mode
|
||||||
|
Rv = "VISUAL REPLACE", -- Virtual Replace mode
|
||||||
|
cv = "COMMAND-LINE", -- Command-line mode
|
||||||
|
ce = "C", -- Ex mode
|
||||||
|
r = "R", -- Prompt mode
|
||||||
|
rm = "M", -- More mode
|
||||||
|
["r?"] = "?", -- Confirm mode
|
||||||
|
["!"] = "!", -- Shell mode
|
||||||
|
t = "TERMINAL", -- Terminal mode
|
||||||
|
}
|
||||||
|
-- Return the mode shorthand or [UNKNOWN] if no match
|
||||||
|
return mode_map[vim.fn.mode()] or "[UNKNOWN]"
|
||||||
|
end
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
-- mode component
|
||||||
|
mode,
|
||||||
|
color = function()
|
||||||
|
-- auto change color according to neovims mode
|
||||||
|
local mode_color = {
|
||||||
|
n = colors.red,
|
||||||
|
i = colors.green,
|
||||||
|
v = colors.blue,
|
||||||
|
[""] = colors.blue,
|
||||||
|
V = colors.blue,
|
||||||
|
c = colors.magenta,
|
||||||
|
no = colors.red,
|
||||||
|
s = colors.orange,
|
||||||
|
S = colors.orange,
|
||||||
|
[""] = colors.orange,
|
||||||
|
ic = colors.yellow,
|
||||||
|
R = colors.violet,
|
||||||
|
Rv = colors.violet,
|
||||||
|
cv = colors.red,
|
||||||
|
ce = colors.red,
|
||||||
|
r = colors.cyan,
|
||||||
|
rm = colors.cyan,
|
||||||
|
["r?"] = colors.cyan,
|
||||||
|
["!"] = colors.red,
|
||||||
|
t = colors.red,
|
||||||
|
}
|
||||||
|
return { fg = mode_color[vim.fn.mode()] }
|
||||||
|
end,
|
||||||
|
padding = { right = 1 },
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
-- filesize component
|
||||||
|
"filesize",
|
||||||
|
cond = conditions.buffer_not_empty,
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
"filename",
|
||||||
|
cond = conditions.buffer_not_empty,
|
||||||
|
color = { fg = colors.magenta, gui = "bold" },
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_left({ "location" })
|
||||||
|
|
||||||
|
ins_left({ "progress", color = { fg = colors.fg, gui = "bold" } })
|
||||||
|
|
||||||
|
ins_left({
|
||||||
|
"diagnostics",
|
||||||
|
sources = { "nvim_diagnostic" },
|
||||||
|
symbols = { error = " ", warn = " ", info = " " },
|
||||||
|
diagnostics_color = {
|
||||||
|
error = { fg = colors.red },
|
||||||
|
warn = { fg = colors.yellow },
|
||||||
|
info = { fg = colors.cyan },
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Insert mid section. You can make any number of sections in neovim :)
|
||||||
|
-- for lualine it's any number greater then 2
|
||||||
|
ins_left({
|
||||||
|
function()
|
||||||
|
return "%="
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Add components to right sections
|
||||||
|
ins_right({
|
||||||
|
"o:encoding", -- option component same as &encoding in viml
|
||||||
|
fmt = string.upper, -- I'm not sure why it's upper case either ;)
|
||||||
|
cond = conditions.hide_in_width,
|
||||||
|
color = { fg = colors.green, gui = "bold" },
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_right({
|
||||||
|
"fileformat",
|
||||||
|
fmt = string.upper,
|
||||||
|
icons_enabled = false, -- I think icons are cool but Eviline doesn't have them. sigh
|
||||||
|
color = { fg = colors.green, gui = "bold" },
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_right({
|
||||||
|
"branch",
|
||||||
|
icon = "",
|
||||||
|
color = { fg = colors.violet, gui = "bold" },
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_right({
|
||||||
|
"diff",
|
||||||
|
-- Is it me or the symbol for modified us really weird
|
||||||
|
symbols = { added = " ", modified = " ", removed = " " },
|
||||||
|
diff_color = {
|
||||||
|
added = { fg = colors.green },
|
||||||
|
modified = { fg = colors.orange },
|
||||||
|
removed = { fg = colors.red },
|
||||||
|
},
|
||||||
|
cond = conditions.hide_in_width,
|
||||||
|
})
|
||||||
|
|
||||||
|
ins_right({
|
||||||
|
function()
|
||||||
|
return "▊"
|
||||||
|
end,
|
||||||
|
color = { fg = colors.blue },
|
||||||
|
padding = { left = 1 },
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Now don't forget to initialize lualine
|
||||||
|
lualine.setup(config)
|
||||||
@@ -1,16 +1,16 @@
|
|||||||
return {
|
return {
|
||||||
"goolord/alpha-nvim",
|
"goolord/alpha-nvim",
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
local logo = [[
|
local logo = [[
|
||||||
███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗
|
███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗
|
||||||
████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║
|
████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║
|
||||||
██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║
|
██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║
|
||||||
██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║
|
██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║
|
||||||
██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║
|
██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║
|
||||||
╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝
|
╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝
|
||||||
|
|
||||||
[ @elijahmanor ]
|
[ @elijahmanor ]
|
||||||
]]
|
]]
|
||||||
opts.section.header.val = vim.split(logo, "\n", { trimempty = true })
|
opts.section.header.val = vim.split(logo, "\n", { trimempty = true })
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,96 +1,96 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
"mason-org/mason.nvim",
|
"mason-org/mason.nvim",
|
||||||
opts = {
|
opts = {
|
||||||
ui = {
|
ui = {
|
||||||
icons = {
|
icons = {
|
||||||
package_installed = "✓",
|
package_installed = "✓",
|
||||||
package_pending = "➜",
|
package_pending = "➜",
|
||||||
package_uninstalled = "✗",
|
package_uninstalled = "✗",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
-- LSP servers
|
-- LSP servers
|
||||||
"clangd", -- C / C++
|
"clangd", -- C / C++
|
||||||
"gopls", -- Go
|
"gopls", -- Go
|
||||||
"python-lsp-server", -- Python
|
"python-lsp-server", -- Python
|
||||||
"bash-language-server", -- Bash
|
"bash-language-server", -- Bash
|
||||||
"zls", -- Zig
|
"zls", -- Zig
|
||||||
"lua-language-server", -- Lua
|
"lua-language-server", -- Lua
|
||||||
-- Formatters / Linters
|
-- Formatters / Linters
|
||||||
"stylua", -- Lua formatter
|
"stylua", -- Lua formatter
|
||||||
"shfmt", -- Shell formatter
|
"shfmt", -- Shell formatter
|
||||||
"black", -- Python formatter
|
"black", -- Python formatter
|
||||||
"clang-format", -- C/C++ formatter
|
"clang-format", -- C/C++ formatter
|
||||||
"goimports", -- Go formatter
|
"goimports", -- Go formatter
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"hrsh7th/nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"hrsh7th/cmp-nvim-lsp",
|
"hrsh7th/cmp-nvim-lsp",
|
||||||
"hrsh7th/cmp-buffer",
|
"hrsh7th/cmp-buffer",
|
||||||
"hrsh7th/cmp-path",
|
"hrsh7th/cmp-path",
|
||||||
"hrsh7th/cmp-nvim-lua",
|
"hrsh7th/cmp-nvim-lua",
|
||||||
"saadparwaiz1/cmp_luasnip",
|
"saadparwaiz1/cmp_luasnip",
|
||||||
"L3MON4D3/LuaSnip",
|
"L3MON4D3/LuaSnip",
|
||||||
"onsails/lspkind.nvim", -- icone carine nel completamento
|
"onsails/lspkind.nvim", -- icone carine nel completamento
|
||||||
},
|
},
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
local cmp = require("cmp")
|
local cmp = require("cmp")
|
||||||
local luasnip = require("luasnip")
|
local luasnip = require("luasnip")
|
||||||
local lspkind = require("lspkind")
|
local lspkind = require("lspkind")
|
||||||
|
|
||||||
-- Carica snippet
|
-- Carica snippet
|
||||||
require("luasnip.loaders.from_vscode").lazy_load()
|
require("luasnip.loaders.from_vscode").lazy_load()
|
||||||
|
|
||||||
opts.snippet = {
|
opts.snippet = {
|
||||||
expand = function(args)
|
expand = function(args)
|
||||||
luasnip.lsp_expand(args.body)
|
luasnip.lsp_expand(args.body)
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
opts.mapping = vim.tbl_extend("force", opts.mapping, {
|
opts.mapping = vim.tbl_extend("force", opts.mapping, {
|
||||||
["<C-Space>"] = cmp.mapping.complete(),
|
["<C-Space>"] = cmp.mapping.complete(),
|
||||||
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
||||||
["<Tab>"] = cmp.mapping(function(fallback)
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then
|
if cmp.visible() then
|
||||||
cmp.select_next_item()
|
cmp.select_next_item()
|
||||||
elseif luasnip.expand_or_jumpable() then
|
elseif luasnip.expand_or_jumpable() then
|
||||||
luasnip.expand_or_jump()
|
luasnip.expand_or_jump()
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, { "i", "s" }),
|
end, { "i", "s" }),
|
||||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then
|
if cmp.visible() then
|
||||||
cmp.select_prev_item()
|
cmp.select_prev_item()
|
||||||
elseif luasnip.jumpable(-1) then
|
elseif luasnip.jumpable(-1) then
|
||||||
luasnip.jump(-1)
|
luasnip.jump(-1)
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, { "i", "s" }),
|
end, { "i", "s" }),
|
||||||
})
|
})
|
||||||
|
|
||||||
opts.sources = cmp.config.sources({
|
opts.sources = cmp.config.sources({
|
||||||
{ name = "nvim_lsp" },
|
{ name = "nvim_lsp" },
|
||||||
{ name = "luasnip" },
|
{ name = "luasnip" },
|
||||||
{ name = "nvim_lua" },
|
{ name = "nvim_lua" },
|
||||||
{ name = "buffer" },
|
{ name = "buffer" },
|
||||||
{ name = "path" },
|
{ name = "path" },
|
||||||
})
|
})
|
||||||
|
|
||||||
opts.formatting = {
|
opts.formatting = {
|
||||||
format = lspkind.cmp_format({
|
format = lspkind.cmp_format({
|
||||||
mode = "symbol_text",
|
mode = "symbol_text",
|
||||||
maxwidth = 50,
|
maxwidth = 50,
|
||||||
ellipsis_char = "...",
|
ellipsis_char = "...",
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
return opts
|
return opts
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
return {
|
return {
|
||||||
"catppuccin/nvim",
|
"catppuccin/nvim",
|
||||||
name = "catppuccin",
|
name = "catppuccin",
|
||||||
lazy = false,
|
lazy = false,
|
||||||
priority = 1000,
|
priority = 1000,
|
||||||
opts = {
|
opts = {
|
||||||
flavour = "mocha",
|
flavour = "mocha",
|
||||||
transparent_background = false,
|
transparent_background = false,
|
||||||
},
|
},
|
||||||
config = function(_, opts)
|
config = function(_, opts)
|
||||||
require("catppuccin").setup(opts)
|
require("catppuccin").setup(opts)
|
||||||
-- vim.cmd.colorscheme("catppuccin")
|
-- vim.cmd.colorscheme("catppuccin-mocha")
|
||||||
vim.cmd.colorscheme("tokyonight-night")
|
vim.cmd.colorscheme("tokyonight-night")
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,108 +1,108 @@
|
|||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
"mfussenegger/nvim-dap",
|
"mfussenegger/nvim-dap",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"leoluz/nvim-dap-go",
|
"leoluz/nvim-dap-go",
|
||||||
"rcarriga/nvim-dap-ui",
|
"rcarriga/nvim-dap-ui",
|
||||||
"theHamsta/nvim-dap-virtual-text",
|
"theHamsta/nvim-dap-virtual-text",
|
||||||
"nvim-neotest/nvim-nio",
|
"nvim-neotest/nvim-nio",
|
||||||
"williamboman/mason.nvim",
|
"williamboman/mason.nvim",
|
||||||
"jay-babu/mason-nvim-dap.nvim", -- Dependency for managing DAP adapters with Mason
|
"jay-babu/mason-nvim-dap.nvim", -- Dependency for managing DAP adapters with Mason
|
||||||
"mfussenegger/nvim-dap-python", -- Dependency for Python debugging
|
"mfussenegger/nvim-dap-python", -- Dependency for Python debugging
|
||||||
},
|
},
|
||||||
config = function()
|
config = function()
|
||||||
local dap = require("dap")
|
local dap = require("dap")
|
||||||
local dapui = require("dapui")
|
local dapui = require("dapui")
|
||||||
local mason_dap = require("mason-nvim-dap")
|
local mason_dap = require("mason-nvim-dap")
|
||||||
|
|
||||||
-- Configure mason-nvim-dap to automatically install DAP adapters
|
-- Configure mason-nvim-dap to automatically install DAP adapters
|
||||||
mason_dap.setup({
|
mason_dap.setup({
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
"delve", -- Go Debugger Adapter
|
"delve", -- Go Debugger Adapter
|
||||||
"codelldb", -- C/C++ Debugger Adapter
|
"codelldb", -- C/C++ Debugger Adapter
|
||||||
"debugpy", -- Python Debugger Adapter
|
"debugpy", -- Python Debugger Adapter
|
||||||
},
|
},
|
||||||
handlers = {},
|
handlers = {},
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Set up the DAP UI
|
-- Set up the DAP UI
|
||||||
dapui.setup()
|
dapui.setup()
|
||||||
|
|
||||||
-- Set up the Go debugging configurations
|
-- Set up the Go debugging configurations
|
||||||
require("dap-go").setup()
|
require("dap-go").setup()
|
||||||
|
|
||||||
-- Set up the Python debugging configurations
|
-- Set up the Python debugging configurations
|
||||||
require("dap-python").setup()
|
require("dap-python").setup()
|
||||||
|
|
||||||
-- Configure nvim-dap-virtual-text
|
-- Configure nvim-dap-virtual-text
|
||||||
require("nvim-dap-virtual-text").setup({
|
require("nvim-dap-virtual-text").setup({
|
||||||
display_callback = function(variable)
|
display_callback = function(variable)
|
||||||
local name = string.lower(variable.name)
|
local name = string.lower(variable.name)
|
||||||
local value = string.lower(variable.value)
|
local value = string.lower(variable.value)
|
||||||
if name:match("secret") or name:match("api") or value:match("secret") or value:match("api") then
|
if name:match("secret") or name:match("api") or value:match("secret") or value:match("api") then
|
||||||
return "*****"
|
return "*****"
|
||||||
end
|
end
|
||||||
|
|
||||||
if #variable.value > 15 then
|
if #variable.value > 15 then
|
||||||
return " " .. string.sub(variable.value, 1, 15) .. "... "
|
return " " .. string.sub(variable.value, 1, 15) .. "... "
|
||||||
end
|
end
|
||||||
|
|
||||||
return " " .. variable.value
|
return " " .. variable.value
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Configure the CodeLLDB adapter for C/C++
|
-- Configure the CodeLLDB adapter for C/C++
|
||||||
dap.adapters.codelldb = {
|
dap.adapters.codelldb = {
|
||||||
type = "server",
|
type = "server",
|
||||||
port = "${port}",
|
port = "${port}",
|
||||||
executable = {
|
executable = {
|
||||||
command = vim.fn.stdpath("data") .. "/mason/bin/codelldb",
|
command = vim.fn.stdpath("data") .. "/mason/bin/codelldb",
|
||||||
args = { "--port", "${port}" },
|
args = { "--port", "${port}" },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Define launch configurations for C/C++
|
-- Define launch configurations for C/C++
|
||||||
dap.configurations.c = {
|
dap.configurations.c = {
|
||||||
{
|
{
|
||||||
name = "Launch C",
|
name = "Launch C",
|
||||||
type = "codelldb",
|
type = "codelldb",
|
||||||
request = "launch",
|
request = "launch",
|
||||||
program = function()
|
program = function()
|
||||||
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file")
|
||||||
end,
|
end,
|
||||||
cwd = "${workspaceFolder}",
|
cwd = "${workspaceFolder}",
|
||||||
stopOnEntry = false,
|
stopOnEntry = false,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
dap.configurations.cpp = dap.configurations.c
|
dap.configurations.cpp = dap.configurations.c
|
||||||
|
|
||||||
-- Your keyboard shortcuts for debugging
|
-- Your keyboard shortcuts for debugging
|
||||||
vim.keymap.set("n", "<space>b", dap.toggle_breakpoint)
|
vim.keymap.set("n", "<space>b", dap.toggle_breakpoint)
|
||||||
vim.keymap.set("n", "<space>gb", dap.run_to_cursor)
|
vim.keymap.set("n", "<space>gb", dap.run_to_cursor)
|
||||||
vim.keymap.set("n", "<space>?", function()
|
vim.keymap.set("n", "<space>?", function()
|
||||||
dapui.eval(nil, { enter = true })
|
dapui.eval(nil, { enter = true })
|
||||||
end)
|
end)
|
||||||
vim.keymap.set("n", "<F9>", dap.continue)
|
vim.keymap.set("n", "<F9>", dap.continue)
|
||||||
vim.keymap.set("n", "<F7>", dap.step_into)
|
vim.keymap.set("n", "<F7>", dap.step_into)
|
||||||
vim.keymap.set("n", "<F8>", dap.step_over)
|
vim.keymap.set("n", "<F8>", dap.step_over)
|
||||||
vim.keymap.set("n", "<F6>", dap.step_out)
|
vim.keymap.set("n", "<F6>", dap.step_out)
|
||||||
vim.keymap.set("n", "<F5>", dap.step_back)
|
vim.keymap.set("n", "<F5>", dap.step_back)
|
||||||
vim.keymap.set("n", "<F12>", dap.restart)
|
vim.keymap.set("n", "<F12>", dap.restart)
|
||||||
|
|
||||||
-- Listeners to open and close the DAP UI automatically
|
-- Listeners to open and close the DAP UI automatically
|
||||||
dap.listeners.before.attach.dapui_config = function()
|
dap.listeners.before.attach.dapui_config = function()
|
||||||
dapui.open()
|
dapui.open()
|
||||||
end
|
end
|
||||||
dap.listeners.before.launch.dapui_config = function()
|
dap.listeners.before.launch.dapui_config = function()
|
||||||
dapui.open()
|
dapui.open()
|
||||||
end
|
end
|
||||||
dap.listeners.before.event_terminated.dapui_config = function()
|
dap.listeners.before.event_terminated.dapui_config = function()
|
||||||
dapui.close()
|
dapui.close()
|
||||||
end
|
end
|
||||||
dap.listeners.before.event_exited.dapui_config = function()
|
dap.listeners.before.event_exited.dapui_config = function()
|
||||||
dapui.close()
|
dapui.close()
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
return {
|
return {
|
||||||
{ "windwp/nvim-spectre", enabled = false },
|
{ "windwp/nvim-spectre", enabled = false },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,57 +1,57 @@
|
|||||||
return {
|
return {
|
||||||
"nvimtools/none-ls.nvim",
|
"nvimtools/none-ls.nvim",
|
||||||
config = function()
|
config = function()
|
||||||
local null_ls = require("null-ls")
|
local null_ls = require("null-ls")
|
||||||
|
|
||||||
null_ls.setup({
|
null_ls.setup({
|
||||||
sources = {
|
sources = {
|
||||||
-- C
|
-- C
|
||||||
null_ls.builtins.formatting.clang_format.with({
|
null_ls.builtins.formatting.clang_format.with({
|
||||||
extra_args = {
|
extra_args = {
|
||||||
"--style={BasedOnStyle: LLVM, IndentWidth: 8, TabWith: 8, UseTab: Always, BreakBeforeBraces: Linux, AllowShortIfStatementsOnASingleLine: false, AllowShortLoopsOnASingleLine: false, AllowShortFunctionsOnASingleLine: InlineOnly, ColumnLimit: 80, AlignConsecutiveDeclarations: false, AlignConsecutiveAssignments: false, AlignEscapedNewlines: Left, AlignOperands: false, IndentCaseLabels: false, SpaceBeforeParens: ControlStatements }",
|
"--style={BasedOnStyle: LLVM, IndentWidth: 8, TabWith: 8, UseTab: Always, BreakBeforeBraces: Linux, AllowShortIfStatementsOnASingleLine: false, AllowShortLoopsOnASingleLine: false, AllowShortFunctionsOnASingleLine: InlineOnly, ColumnLimit: 80, AlignConsecutiveDeclarations: false, AlignConsecutiveAssignments: false, AlignEscapedNewlines: Left, AlignOperands: false, IndentCaseLabels: false, SpaceBeforeParens: ControlStatements }",
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|
||||||
-- Go
|
-- Go
|
||||||
null_ls.builtins.formatting.goimports,
|
null_ls.builtins.formatting.goimports,
|
||||||
|
|
||||||
-- Zig
|
-- Zig
|
||||||
-- null_ls.builtins.formatting.zigfmt,
|
-- null_ls.builtins.formatting.zigfmt,
|
||||||
|
|
||||||
-- Lua
|
-- Lua
|
||||||
null_ls.builtins.formatting.stylua.with({
|
null_ls.builtins.formatting.stylua.with({
|
||||||
extra_args = {
|
extra_args = {
|
||||||
"--indent-type",
|
"--indent-type",
|
||||||
"Spaces",
|
"Spaces",
|
||||||
"--indent-width",
|
"--indent-width",
|
||||||
"2",
|
"2",
|
||||||
"--column-width",
|
"--column-width",
|
||||||
"120",
|
"120",
|
||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
|
|
||||||
-- Python
|
-- Python
|
||||||
null_ls.builtins.formatting.black.with({
|
null_ls.builtins.formatting.black.with({
|
||||||
extra_args = { "--line-length", "79" },
|
extra_args = { "--line-length", "79" },
|
||||||
}),
|
}),
|
||||||
|
|
||||||
-- Shell
|
-- Shell
|
||||||
null_ls.builtins.formatting.shfmt.with({
|
null_ls.builtins.formatting.shfmt.with({
|
||||||
extra_args = { "-i", "2", "-ci", "-bn", "-sr", "-p" },
|
extra_args = { "-i", "2", "-ci", "-bn", "-sr", "-p" },
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
|
|
||||||
-- Auto-format on save
|
-- Auto-format on save
|
||||||
on_attach = function(client, bufnr)
|
on_attach = function(client, bufnr)
|
||||||
if client.supports_method("textDocument/formatting") then
|
if client.supports_method("textDocument/formatting") then
|
||||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||||
buffer = bufnr,
|
buffer = bufnr,
|
||||||
callback = function()
|
callback = function()
|
||||||
vim.lsp.buf.format({ async = false })
|
vim.lsp.buf.format({ async = false })
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
return {
|
return {
|
||||||
"m4xshen/hardtime.nvim",
|
"m4xshen/hardtime.nvim",
|
||||||
lazy = false,
|
lazy = false,
|
||||||
dependencies = { "MunifTanjim/nui.nvim" },
|
dependencies = { "MunifTanjim/nui.nvim" },
|
||||||
enabled = false,
|
enabled = false,
|
||||||
opts = {},
|
opts = {},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
return {
|
return {
|
||||||
"ThePrimeagen/harpoon",
|
"ThePrimeagen/harpoon",
|
||||||
branch = "harpoon2",
|
branch = "harpoon2",
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,58 +1,58 @@
|
|||||||
return {
|
return {
|
||||||
"neovim/nvim-lspconfig",
|
"neovim/nvim-lspconfig",
|
||||||
|
|
||||||
-- How to add an LSP for a specific programming language?
|
-- How to add an LSP for a specific programming language?
|
||||||
-- 1. Use `:Mason` to install the corresponding LSP.
|
-- 1. Use `:Mason` to install the corresponding LSP.
|
||||||
-- 2. Add the configuration below. The syntax is `lspconfig.<name>.setup(...)`
|
-- 2. Add the configuration below. The syntax is `lspconfig.<name>.setup(...)`
|
||||||
-- Hint (find <name> here): https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md
|
-- Hint (find <name> here): https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md
|
||||||
config = function()
|
config = function()
|
||||||
-- Set different settings for different languages' LSP.
|
-- Set different settings for different languages' LSP.
|
||||||
-- Support List: https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md
|
-- Support List: https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md
|
||||||
local lspconfig = require("lspconfig")
|
local lspconfig = require("lspconfig")
|
||||||
|
|
||||||
-- Case 1. For CMake Users
|
-- Case 1. For CMake Users
|
||||||
-- $ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
|
-- $ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .
|
||||||
-- Case 2. For Bazel Users, use https://github.com/hedronvision/bazel-compile-commands-extractor
|
-- Case 2. For Bazel Users, use https://github.com/hedronvision/bazel-compile-commands-extractor
|
||||||
-- Case 3. If you don't use any build tool and all files in a project use the same build flags
|
-- Case 3. If you don't use any build tool and all files in a project use the same build flags
|
||||||
-- Place your compiler flags in the compile_flags.txt file, located in the root directory
|
-- Place your compiler flags in the compile_flags.txt file, located in the root directory
|
||||||
-- of your project. Each line in the file should contain a single compiler flag.
|
-- of your project. Each line in the file should contain a single compiler flag.
|
||||||
-- src: https://clangd.llvm.org/installation#compile_commandsjson
|
-- src: https://clangd.llvm.org/installation#compile_commandsjson
|
||||||
lspconfig.clangd.setup({})
|
lspconfig.clangd.setup({})
|
||||||
lspconfig.gopls.setup({})
|
lspconfig.gopls.setup({})
|
||||||
lspconfig.bashls.setup({})
|
lspconfig.bashls.setup({})
|
||||||
lspconfig.zls.setup({})
|
lspconfig.zls.setup({})
|
||||||
lspconfig.pylsp.setup({
|
lspconfig.pylsp.setup({
|
||||||
settings = {
|
settings = {
|
||||||
-- configure plugins in pylsp
|
-- configure plugins in pylsp
|
||||||
pylsp = {
|
pylsp = {
|
||||||
plugins = {
|
plugins = {
|
||||||
pyflakes = { enabled = false },
|
pyflakes = { enabled = false },
|
||||||
pycodestyle = { enabled = false },
|
pycodestyle = { enabled = false },
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
lspconfig.lua_ls.setup({
|
lspconfig.lua_ls.setup({
|
||||||
settings = {
|
settings = {
|
||||||
Lua = {
|
Lua = {
|
||||||
runtime = {
|
runtime = {
|
||||||
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim).
|
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim).
|
||||||
version = "LuaJIT",
|
version = "LuaJIT",
|
||||||
},
|
},
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
-- Get the language server to recognize the `vim` global.
|
-- Get the language server to recognize the `vim` global.
|
||||||
globals = { "vim" },
|
globals = { "vim" },
|
||||||
},
|
},
|
||||||
workspace = {
|
workspace = {
|
||||||
-- Make the server aware of Neovim runtime files.
|
-- Make the server aware of Neovim runtime files.
|
||||||
library = vim.api.nvim_get_runtime_file("", true),
|
library = vim.api.nvim_get_runtime_file("", true),
|
||||||
},
|
},
|
||||||
-- Do not send telemetry data containing a randomized but unique identifier.
|
-- Do not send telemetry data containing a randomized but unique identifier.
|
||||||
telemetry = {
|
telemetry = {
|
||||||
enable = false,
|
enable = false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|||||||
4
lazyvim/.config/nvim/lua/plugins/lualine.lua
Executable file
4
lazyvim/.config/nvim/lua/plugins/lualine.lua
Executable file
@@ -0,0 +1,4 @@
|
|||||||
|
return {
|
||||||
|
"nvim-lualine/lualine.nvim",
|
||||||
|
dependencies = { "nvim-tree/nvim-web-devicons" },
|
||||||
|
}
|
||||||
@@ -1,37 +1,9 @@
|
|||||||
return {
|
return {
|
||||||
-- Browser preview plugin
|
"MeanderingProgrammer/render-markdown.nvim",
|
||||||
{
|
dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite
|
||||||
"iamcco/markdown-preview.nvim",
|
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins
|
||||||
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
-- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons
|
||||||
build = "cd app && yarn install",
|
---@module 'render-markdown'
|
||||||
init = function()
|
---@type render.md.UserConfig
|
||||||
vim.g.mkdp_filetypes = { "markdown" }
|
opts = {},
|
||||||
vim.g.mkdp_auto_start = 0
|
}
|
||||||
vim.g.mkdp_browser = "firefox" -- use your preferred browser
|
|
||||||
vim.g.mkdp_sync_scroll_type = "middle"
|
|
||||||
end,
|
|
||||||
ft = { "markdown" },
|
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
"<leader>Mp",
|
|
||||||
"<cmd>MarkdownPreviewToggle<CR>",
|
|
||||||
desc = "Preview Markdown (Browser)",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Terminal-based preview with Glow
|
|
||||||
{
|
|
||||||
"ellisonleao/glow.nvim",
|
|
||||||
config = true, -- uses default config
|
|
||||||
cmd = "Glow",
|
|
||||||
ft = { "markdown" },
|
|
||||||
keys = {
|
|
||||||
{
|
|
||||||
"<leader>Mg",
|
|
||||||
"<cmd>Glow<CR>",
|
|
||||||
desc = "Preview Markdown (Glow)",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
return {
|
return {
|
||||||
"smoka7/multicursors.nvim",
|
"smoka7/multicursors.nvim",
|
||||||
event = "VeryLazy",
|
event = "VeryLazy",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
"nvimtools/hydra.nvim",
|
"nvimtools/hydra.nvim",
|
||||||
},
|
},
|
||||||
opts = {},
|
opts = {},
|
||||||
cmd = { "MCstart", "MCvisual", "MCclear", "MCpattern", "MCvisualPattern", "MCunderCursor" },
|
cmd = { "MCstart", "MCvisual", "MCclear", "MCpattern", "MCvisualPattern", "MCunderCursor" },
|
||||||
keys = {
|
keys = {
|
||||||
{
|
{
|
||||||
mode = { "v", "n" },
|
mode = { "v", "n" },
|
||||||
"<Leader>m",
|
"<Leader>m",
|
||||||
"<cmd>MCstart<cr>",
|
"<cmd>MCstart<cr>",
|
||||||
desc = "Create a selection for selected text or word under the cursor",
|
desc = "Create a selection for selected text or word under the cursor",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
return {
|
return {
|
||||||
"nvim-neo-tree/neo-tree.nvim",
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
enabled = false,
|
enabled = false,
|
||||||
}
|
}
|
||||||
|
|||||||
522
lazyvim/.config/nvim/lua/plugins/snacks.lua
Executable file
522
lazyvim/.config/nvim/lua/plugins/snacks.lua
Executable file
@@ -0,0 +1,522 @@
|
|||||||
|
return {
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
lazy = false,
|
||||||
|
---@type snacks.Config
|
||||||
|
opts = {
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
dashboard = { enabled = false },
|
||||||
|
explorer = { enabled = false },
|
||||||
|
indent = { enabled = true },
|
||||||
|
input = { enabled = true },
|
||||||
|
notifier = {
|
||||||
|
enabled = true,
|
||||||
|
timeout = 3000,
|
||||||
|
},
|
||||||
|
picker = { enabled = true },
|
||||||
|
quickfile = { enabled = true },
|
||||||
|
scope = { enabled = true },
|
||||||
|
scroll = { enabled = true },
|
||||||
|
statuscolumn = { enabled = true },
|
||||||
|
words = { enabled = true },
|
||||||
|
styles = {
|
||||||
|
notification = {
|
||||||
|
-- wo = { wrap = true } -- Wrap notifications
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
-- Top Pickers & Explorer
|
||||||
|
{
|
||||||
|
"<leader><space>",
|
||||||
|
function()
|
||||||
|
Snacks.picker.smart()
|
||||||
|
end,
|
||||||
|
desc = "Smart Find Files",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>,",
|
||||||
|
function()
|
||||||
|
Snacks.picker.buffers()
|
||||||
|
end,
|
||||||
|
desc = "Buffers",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>/",
|
||||||
|
function()
|
||||||
|
Snacks.picker.grep()
|
||||||
|
end,
|
||||||
|
desc = "Grep",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>:",
|
||||||
|
function()
|
||||||
|
Snacks.picker.command_history()
|
||||||
|
end,
|
||||||
|
desc = "Command History",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>n",
|
||||||
|
function()
|
||||||
|
Snacks.picker.notifications()
|
||||||
|
end,
|
||||||
|
desc = "Notification History",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>fb",
|
||||||
|
function()
|
||||||
|
Snacks.picker.buffers()
|
||||||
|
end,
|
||||||
|
desc = "Buffers",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>fc",
|
||||||
|
function()
|
||||||
|
Snacks.picker.files({ cwd = vim.fn.stdpath("config") })
|
||||||
|
end,
|
||||||
|
desc = "Find Config File",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>ff",
|
||||||
|
function()
|
||||||
|
Snacks.picker.files()
|
||||||
|
end,
|
||||||
|
desc = "Find Files",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>fg",
|
||||||
|
function()
|
||||||
|
Snacks.picker.git_files()
|
||||||
|
end,
|
||||||
|
desc = "Find Git Files",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>fp",
|
||||||
|
function()
|
||||||
|
Snacks.picker.projects()
|
||||||
|
end,
|
||||||
|
desc = "Projects",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>fr",
|
||||||
|
function()
|
||||||
|
Snacks.picker.recent()
|
||||||
|
end,
|
||||||
|
desc = "Recent",
|
||||||
|
},
|
||||||
|
-- git
|
||||||
|
{
|
||||||
|
"<leader>gb",
|
||||||
|
function()
|
||||||
|
Snacks.picker.git_branches()
|
||||||
|
end,
|
||||||
|
desc = "Git Branches",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gl",
|
||||||
|
function()
|
||||||
|
Snacks.picker.git_log()
|
||||||
|
end,
|
||||||
|
desc = "Git Log",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gL",
|
||||||
|
function()
|
||||||
|
Snacks.picker.git_log_line()
|
||||||
|
end,
|
||||||
|
desc = "Git Log Line",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gs",
|
||||||
|
function()
|
||||||
|
Snacks.picker.git_status()
|
||||||
|
end,
|
||||||
|
desc = "Git Status",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gS",
|
||||||
|
function()
|
||||||
|
Snacks.picker.git_stash()
|
||||||
|
end,
|
||||||
|
desc = "Git Stash",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gd",
|
||||||
|
function()
|
||||||
|
Snacks.picker.git_diff()
|
||||||
|
end,
|
||||||
|
desc = "Git Diff (Hunks)",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gf",
|
||||||
|
function()
|
||||||
|
Snacks.picker.git_log_file()
|
||||||
|
end,
|
||||||
|
desc = "Git Log File",
|
||||||
|
},
|
||||||
|
-- Grep
|
||||||
|
{
|
||||||
|
"<leader>sb",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lines()
|
||||||
|
end,
|
||||||
|
desc = "Buffer Lines",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sB",
|
||||||
|
function()
|
||||||
|
Snacks.picker.grep_buffers()
|
||||||
|
end,
|
||||||
|
desc = "Grep Open Buffers",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sg",
|
||||||
|
function()
|
||||||
|
Snacks.picker.grep()
|
||||||
|
end,
|
||||||
|
desc = "Grep",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sw",
|
||||||
|
function()
|
||||||
|
Snacks.picker.grep_word()
|
||||||
|
end,
|
||||||
|
desc = "Visual selection or word",
|
||||||
|
mode = { "n", "x" },
|
||||||
|
},
|
||||||
|
-- search
|
||||||
|
{
|
||||||
|
'<leader>s"',
|
||||||
|
function()
|
||||||
|
Snacks.picker.registers()
|
||||||
|
end,
|
||||||
|
desc = "Registers",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>s/",
|
||||||
|
function()
|
||||||
|
Snacks.picker.search_history()
|
||||||
|
end,
|
||||||
|
desc = "Search History",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sa",
|
||||||
|
function()
|
||||||
|
Snacks.picker.autocmds()
|
||||||
|
end,
|
||||||
|
desc = "Autocmds",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sb",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lines()
|
||||||
|
end,
|
||||||
|
desc = "Buffer Lines",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sc",
|
||||||
|
function()
|
||||||
|
Snacks.picker.command_history()
|
||||||
|
end,
|
||||||
|
desc = "Command History",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sC",
|
||||||
|
function()
|
||||||
|
Snacks.picker.commands()
|
||||||
|
end,
|
||||||
|
desc = "Commands",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sd",
|
||||||
|
function()
|
||||||
|
Snacks.picker.diagnostics()
|
||||||
|
end,
|
||||||
|
desc = "Diagnostics",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sD",
|
||||||
|
function()
|
||||||
|
Snacks.picker.diagnostics_buffer()
|
||||||
|
end,
|
||||||
|
desc = "Buffer Diagnostics",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sh",
|
||||||
|
function()
|
||||||
|
Snacks.picker.help()
|
||||||
|
end,
|
||||||
|
desc = "Help Pages",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sH",
|
||||||
|
function()
|
||||||
|
Snacks.picker.highlights()
|
||||||
|
end,
|
||||||
|
desc = "Highlights",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>si",
|
||||||
|
function()
|
||||||
|
Snacks.picker.icons()
|
||||||
|
end,
|
||||||
|
desc = "Icons",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sj",
|
||||||
|
function()
|
||||||
|
Snacks.picker.jumps()
|
||||||
|
end,
|
||||||
|
desc = "Jumps",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sk",
|
||||||
|
function()
|
||||||
|
Snacks.picker.keymaps()
|
||||||
|
end,
|
||||||
|
desc = "Keymaps",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sl",
|
||||||
|
function()
|
||||||
|
Snacks.picker.loclist()
|
||||||
|
end,
|
||||||
|
desc = "Location List",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sm",
|
||||||
|
function()
|
||||||
|
Snacks.picker.marks()
|
||||||
|
end,
|
||||||
|
desc = "Marks",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sM",
|
||||||
|
function()
|
||||||
|
Snacks.picker.man()
|
||||||
|
end,
|
||||||
|
desc = "Man Pages",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sp",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lazy()
|
||||||
|
end,
|
||||||
|
desc = "Search for Plugin Spec",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sq",
|
||||||
|
function()
|
||||||
|
Snacks.picker.qflist()
|
||||||
|
end,
|
||||||
|
desc = "Quickfix List",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sR",
|
||||||
|
function()
|
||||||
|
Snacks.picker.resume()
|
||||||
|
end,
|
||||||
|
desc = "Resume",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>su",
|
||||||
|
function()
|
||||||
|
Snacks.picker.undo()
|
||||||
|
end,
|
||||||
|
desc = "Undo History",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>uC",
|
||||||
|
function()
|
||||||
|
Snacks.picker.colorschemes()
|
||||||
|
end,
|
||||||
|
desc = "Colorschemes",
|
||||||
|
},
|
||||||
|
-- LSP
|
||||||
|
{
|
||||||
|
"gd",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lsp_definitions()
|
||||||
|
end,
|
||||||
|
desc = "Goto Definition",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gD",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lsp_declarations()
|
||||||
|
end,
|
||||||
|
desc = "Goto Declaration",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gr",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lsp_references()
|
||||||
|
end,
|
||||||
|
nowait = true,
|
||||||
|
desc = "References",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gI",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lsp_implementations()
|
||||||
|
end,
|
||||||
|
desc = "Goto Implementation",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"gy",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lsp_type_definitions()
|
||||||
|
end,
|
||||||
|
desc = "Goto T[y]pe Definition",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>ss",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lsp_symbols()
|
||||||
|
end,
|
||||||
|
desc = "LSP Symbols",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>sS",
|
||||||
|
function()
|
||||||
|
Snacks.picker.lsp_workspace_symbols()
|
||||||
|
end,
|
||||||
|
desc = "LSP Workspace Symbols",
|
||||||
|
},
|
||||||
|
-- Other
|
||||||
|
{
|
||||||
|
"<leader>z",
|
||||||
|
function()
|
||||||
|
Snacks.zen()
|
||||||
|
end,
|
||||||
|
desc = "Toggle Zen Mode",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>Z",
|
||||||
|
function()
|
||||||
|
Snacks.zen.zoom()
|
||||||
|
end,
|
||||||
|
desc = "Toggle Zoom",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>.",
|
||||||
|
function()
|
||||||
|
Snacks.scratch()
|
||||||
|
end,
|
||||||
|
desc = "Toggle Scratch Buffer",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>S",
|
||||||
|
function()
|
||||||
|
Snacks.scratch.select()
|
||||||
|
end,
|
||||||
|
desc = "Select Scratch Buffer",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>n",
|
||||||
|
function()
|
||||||
|
Snacks.notifier.show_history()
|
||||||
|
end,
|
||||||
|
desc = "Notification History",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>bd",
|
||||||
|
function()
|
||||||
|
Snacks.bufdelete()
|
||||||
|
end,
|
||||||
|
desc = "Delete Buffer",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>cR",
|
||||||
|
function()
|
||||||
|
Snacks.rename.rename_file()
|
||||||
|
end,
|
||||||
|
desc = "Rename File",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gB",
|
||||||
|
function()
|
||||||
|
Snacks.gitbrowse()
|
||||||
|
end,
|
||||||
|
desc = "Git Browse",
|
||||||
|
mode = { "n", "v" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>gg",
|
||||||
|
function()
|
||||||
|
Snacks.lazygit()
|
||||||
|
end,
|
||||||
|
desc = "Lazygit",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>un",
|
||||||
|
function()
|
||||||
|
Snacks.notifier.hide()
|
||||||
|
end,
|
||||||
|
desc = "Dismiss All Notifications",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<c-/>",
|
||||||
|
function()
|
||||||
|
Snacks.terminal()
|
||||||
|
end,
|
||||||
|
desc = "Toggle Terminal",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<c-_>",
|
||||||
|
function()
|
||||||
|
Snacks.terminal()
|
||||||
|
end,
|
||||||
|
desc = "which_key_ignore",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"]]",
|
||||||
|
function()
|
||||||
|
Snacks.words.jump(vim.v.count1)
|
||||||
|
end,
|
||||||
|
desc = "Next Reference",
|
||||||
|
mode = { "n", "t" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"[[",
|
||||||
|
function()
|
||||||
|
Snacks.words.jump(-vim.v.count1)
|
||||||
|
end,
|
||||||
|
desc = "Prev Reference",
|
||||||
|
mode = { "n", "t" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>N",
|
||||||
|
desc = "Neovim News",
|
||||||
|
function()
|
||||||
|
Snacks.win({
|
||||||
|
file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1],
|
||||||
|
width = 0.6,
|
||||||
|
height = 0.6,
|
||||||
|
wo = {
|
||||||
|
spell = false,
|
||||||
|
wrap = false,
|
||||||
|
signcolumn = "yes",
|
||||||
|
statuscolumn = " ",
|
||||||
|
conceallevel = 3,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
init = function()
|
||||||
|
vim.api.nvim_create_autocmd("User", {
|
||||||
|
pattern = "VeryLazy",
|
||||||
|
callback = function()
|
||||||
|
-- Setup some globals for debugging (lazy-loaded)
|
||||||
|
_G.dd = function(...)
|
||||||
|
Snacks.debug.inspect(...)
|
||||||
|
end
|
||||||
|
_G.bt = function()
|
||||||
|
Snacks.debug.backtrace()
|
||||||
|
end
|
||||||
|
vim.print = _G.dd -- Override print to use snacks for `:=` command
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
return {
|
return {
|
||||||
"nvim-telescope/telescope.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
tag = "0.1.8",
|
tag = "0.1.8",
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
return {
|
return {
|
||||||
"mikavilpas/yazi.nvim",
|
"mikavilpas/yazi.nvim",
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
dependencies = { "nvim-lua/plenary.nvim" },
|
||||||
opts = {},
|
opts = {},
|
||||||
keys = {
|
keys = {
|
||||||
{ "<leader>e", "<cmd>Yazi<cr>", desc = "Open Yazi" },
|
{ "<leader>e", "<cmd>Yazi<cr>", desc = "Open Yazi" },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|||||||
13
lazyvim/.config/nvim/lua/scripts/meld_diff_fzf.sh
Executable file
13
lazyvim/.config/nvim/lua/scripts/meld_diff_fzf.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
file1=$(fzf --prompt="Select first file: " < <(find . -type f))
|
||||||
|
[ -z "$file1" ] && echo "Aborted." && exit 1
|
||||||
|
|
||||||
|
file2=$(fzf --prompt="Select second file: " < <(find . -type f))
|
||||||
|
[ -z "$file2" ] && echo "Aborted." && exit 1
|
||||||
|
|
||||||
|
echo "🔍 Comparing:"
|
||||||
|
echo " 1: $file1"
|
||||||
|
echo " 2: $file2"
|
||||||
|
|
||||||
|
meld "$file1" "$file2" &
|
||||||
@@ -1,15 +1,15 @@
|
|||||||
-- This file contains all custom functions for integrate external tools.
|
-- This file contains all custom functions for integrate external tools.
|
||||||
|
|
||||||
-- Meld for comparing and merging files
|
-- Meld for comparing and merging files
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
function M.meld_diff(file1, file2)
|
function M.meld_diff(file1, file2)
|
||||||
if not file1 or not file2 then
|
if not file1 or not file2 then
|
||||||
print("Usage: :lua require'user.utils'.meld_diff('file1', 'file2')")
|
print("Usage: :lua require'user.utils'.meld_diff('file1', 'file2')")
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local cmd = string.format("meld '%s' '%s' &", file1, file2)
|
local cmd = string.format("meld '%s' '%s' &", file1, file2)
|
||||||
os.execute(cmd)
|
os.execute(cmd)
|
||||||
end
|
end
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
indent_type = "Spaces"
|
indent_type = "Spaces"
|
||||||
indent_width = 2
|
indent_width = 2
|
||||||
column_width = 120
|
column_width = 120
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user