From 4090aa6d0668663f58a9d2594200c4f9f3bee4b0 Mon Sep 17 00:00:00 2001 From: Fabio Scotto di Santolo Date: Tue, 2 Sep 2025 09:40:17 +0200 Subject: [PATCH] Update Neovim and Emacs configurations --- emacs/.emacs | 122 ++- lazygit/.config/lazygit/config.yml | 936 +++++++++--------- lazyvim/.config/nvim/.gitignore | 16 +- lazyvim/.config/nvim/.neoconf.json | 30 +- lazyvim/.config/nvim/LICENSE | 402 ++++---- lazyvim/.config/nvim/init.lua | 6 +- lazyvim/.config/nvim/lazy-lock.json | 25 +- lazyvim/.config/nvim/lazyvim.json | 48 +- lazyvim/.config/nvim/lua/config/autocmds.lua | 66 +- lazyvim/.config/nvim/lua/config/keymaps.lua | 87 +- lazyvim/.config/nvim/lua/config/lazy.lua | 220 +++- lazyvim/.config/nvim/lua/config/options.lua | 114 +-- .../.config/nvim/lua/config/statusline.lua | 219 ++++ lazyvim/.config/nvim/lua/plugins/alpha.lua | 32 +- lazyvim/.config/nvim/lua/plugins/cmp.lua | 192 ++-- .../.config/nvim/lua/plugins/colorscheme.lua | 30 +- lazyvim/.config/nvim/lua/plugins/dap.lua | 216 ++-- lazyvim/.config/nvim/lua/plugins/disabled.lua | 6 +- .../.config/nvim/lua/plugins/formatter.lua | 114 +-- lazyvim/.config/nvim/lua/plugins/hardtime.lua | 14 +- lazyvim/.config/nvim/lua/plugins/harpoon.lua | 10 +- lazyvim/.config/nvim/lua/plugins/lsp.lua | 116 +-- lazyvim/.config/nvim/lua/plugins/lualine.lua | 4 + .../nvim/lua/plugins/markdown-preview.lua | 46 +- .../.config/nvim/lua/plugins/multicursors.lua | 34 +- lazyvim/.config/nvim/lua/plugins/neo-tree.lua | 8 +- lazyvim/.config/nvim/lua/plugins/snacks.lua | 522 ++++++++++ .../.config/nvim/lua/plugins/telescope.lua | 10 +- lazyvim/.config/nvim/lua/plugins/yazi.lua | 16 +- .../.config/nvim/lua/scripts/meld_diff_fzf.sh | 13 + lazyvim/.config/nvim/lua/user/utils.lua | 30 +- lazyvim/.config/nvim/stylua.toml | 8 +- 32 files changed, 2297 insertions(+), 1415 deletions(-) create mode 100755 lazyvim/.config/nvim/lua/config/statusline.lua create mode 100755 lazyvim/.config/nvim/lua/plugins/lualine.lua create mode 100755 lazyvim/.config/nvim/lua/plugins/snacks.lua create mode 100755 lazyvim/.config/nvim/lua/scripts/meld_diff_fzf.sh diff --git a/emacs/.emacs b/emacs/.emacs index f3e5d86..3954edb 100644 --- a/emacs/.emacs +++ b/emacs/.emacs @@ -1,44 +1,78 @@ -;; Initial greeting for debugging -(message "Welcome to Emacs") -(message "Loading user configuration...") - -;; Setting variables -;; (setq os-packages-path "/home/fscotto/.emacs.d/packages/") -(setq vc-follow-symlinks 't) -(prefer-coding-system 'utf-8-unix) - -;; Initialize package system via use-package -(package-initialize) -(require 'use-package) - -(use-package package - :config - ;; Setting repo priorities - (setq package-archive-priorities - '(("melpa-stable" . 2) - ("MELPA" . 1) - ("gnu" . 0))) - ;; Setting repo URL - (setq package-archives - '(("melpa-stable" . "https://stable.melpa.org/packages/") - ("MELPA" . "https://melpa.org/packages/") - ("gnu" . "https://elpa.gnu.org/packages/"))) - ) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; LOOK AND FEEL ;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; Setting default theme -(load-theme 'catppuccin :no-confirm) - -;; Setting default font -(set-frame-font "JetBrainsMono Nerd Font 16" nil t) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; PACKAGES ;; -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -;; - -(message "...user configuration loaded") +;; Initial greeting for debugging +(message "Welcome to Emacs") +(message "Loading user configuration...") + +;; Setting variables +(setq vc-follow-symlinks 't) +(prefer-coding-system 'utf-8-unix) +(setq custom-file (null-device)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; PACKAGES ;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Initialize package system via use-package +(package-initialize) +(require 'use-package) + +(use-package package + :config + ;; Setting repo priorities + (setq package-archive-priorities + '(("melpa-stable" . 2) + ("MELPA" . 1) + ("gnu" . 0))) + ;; Setting repo URL + (setq package-archives + '(("melpa-stable" . "https://stable.melpa.org/packages/") + ("MELPA" . "https://melpa.org/packages/") + ("gnu" . "https://elpa.gnu.org/packages/"))) + ) + +(use-package catppuccin-theme + :ensure t) + +(use-package hl-todo + :ensure t) + +(setq hl-todo-keyword-faces + '(("TODO" . "#94e2d5") + ("FIXME" . "#f38ba8") + ("DEBUG" . "#cba6f7") + ("GOTCHA" . "#eba0ac") + ("STUB" . "#89b4fa"))) + +(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") diff --git a/lazygit/.config/lazygit/config.yml b/lazygit/.config/lazygit/config.yml index d099cbd..4e882d8 100644 --- a/lazygit/.config/lazygit/config.yml +++ b/lazygit/.config/lazygit/config.yml @@ -1,468 +1,468 @@ -# Config relating to the Lazygit UI -gui: - # The number of lines you scroll by when scrolling the main window - scrollHeight: 2 - # If true, allow scrolling past the bottom of the content in the main window - scrollPastBottom: true - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin - scrollOffMargin: 2 - # One of: 'margin' (default) | 'jump' - scrollOffBehavior: margin - # 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. - mouseEvents: true - # If true, do not show a warning when discarding changes in the staging view. - skipDiscardChangeWarning: false - # If true, do not show warning when applying/popping the stash - skipStashWarning: false - # If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files. - skipNoStagedFilesWarning: false - # If true, do not show a warning when rewording a commit via an external editor - 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. - # Number from 0 to 1.0. - sidePanelWidth: 0.3333 - # If true, increase the height of the focused side window; creating an accordion effect. - expandFocusedSidePanel: false - # 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. - 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. - # Options are: - # - 'horizontal': split the window horizontally - # - 'vertical': split the window vertically - # - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically - mainPanelSplitMode: flexible - # How the window is split when in half screen mode (i.e. after hitting '+' once). - # Possible values: - # - '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) - enlargedSideViewLocation: left - # One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' - language: auto - # Format used when displaying time e.g. commit time. - # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format - timeFormat: 02 Jan 06 - # 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 - shortTimeFormat: 3:04PM - # Config relating to colors and styles. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes - theme: - # Border color of focused window - activeBorderColor: - - "#8caaee" - - bold - # Border color of non-focused windows - inactiveBorderColor: - - "#a5adce" - # Border color of focused window when searching in that window - searchingActiveBorderColor: - - "#e5c890" - # Color of keybindings help text in the bottom line - optionsTextColor: - - "#8caaee" - # Background color of selected line. - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#highlighting-the-selected-line - selectedLineBgColor: - - "#414559" - # Foreground color of copied commit - cherryPickedCommitFgColor: - - "#8caaee" - # Background color of copied commit - cherryPickedCommitBgColor: - - "#51576d" - # Color for file with unstaged changes - unstagedChangesColor: - - "#e78284" - # Default text color - defaultFgColor: - - "#c6d0f5" - authorColors: - "Fabio Scotto di Santolo": "#babbf1" - branchColors: - develop: yellow - feature: blue - fix: red - hotfix: red - # Config relating to the commit length indicator - commitLength: - # If true, show an indicator of commit message length - show: true - # If true, show the '5 of 20' footer at the bottom of list views - showListFooter: true - # 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. - showFileTree: true - # If true, show a random tip in the command log when Lazygit starts - showRandomTip: true - # If true, show the command log - 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. - showBottomLine: true - # If true, show jump-to-window keybindings in window titles. - showPanelJumps: true - # Deprecated: use nerdFontsVersion instead - showIcons: false - # Nerd fonts version to use. - # One of: '2' | '3' | empty string (default) - # If empty, do not show icons. - nerdFontsVersion: "3" - # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. - showFileIcons: true - # Length of author name in (non-expanded) commits view. 2 means show initials only. - commitAuthorShortLength: 2 - # Length of author name in expanded commits view. 2 means show initials only. - commitAuthorLongLength: 17 - # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. - commitHashLength: 8 - # If true, show commit hashes alongside branch names in the branches view. - showBranchCommitHash: false - # Whether to show the divergence from the base branch in the branches view. - # One of: 'none' | 'onlyArrow' | 'arrowAndNumber' - showDivergenceFromBaseBranch: none - # Height of the command log view - commandLogSize: 8 - # Whether to split the main window when viewing file changes. - # One of: 'auto' | 'always' - # If 'auto', only split the main window when a file has both staged and unstaged changes - splitDiff: auto - # 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' - screenMode: normal - # Window border style. - # One of 'rounded' (default) | 'single' | 'double' | 'hidden' - border: rounded - # If true, show a seriously epic explosion animation when nuking the working tree. - animateExplosion: true - # Whether to stack UI components on top of each other. - # One of 'auto' (default) | 'always' | 'never' - portraitMode: auto - # How things are filtered when typing '/'. - # One of 'substring' (default) | 'fuzzy' - filterMode: substring - # Config relating to the spinner. - spinner: - # The frames of the spinner animation. - frames: - - "|" - - / - - "-" - - \ - # The "speed" of the spinner in milliseconds. - rate: 50 - # Status panel view. - # One of 'dashboard' (default) | 'allBranchesLog' - statusPanelView: dashboard -# Config relating to git -git: - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md - 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' - colorArg: always - # e.g. - # diff-so-fancy - # delta --dark --paging=never - # ydiff -p cat -s --wrap --width={{columnWidth}} - 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). - useConfig: false - # e.g. 'difft --color=always' - externalDiffCommand: "" - # Config relating to committing - commit: - # If true, pass '--signoff' flag when committing - signOff: false - # Automatic WYSIWYG wrapping of the commit message as you type - autoWrapCommitMessage: true - # If autoWrapCommitMessage is true, the width to wrap to - autoWrapWidth: 72 - # Config relating to merging - merging: - # If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang - # Only applicable to unix users. - manualCommit: false - # Extra args passed to `git merge`, e.g. --no-ff - args: "--no-ff" - # The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders. - squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}} - # list of branches that are considered 'main' branches, used when displaying commits - mainBranches: - - master - - 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' - skipHookPrefix: WIP - # If true, periodically fetch from remote - autoFetch: true - # If true, periodically refresh files and submodules - autoRefresh: true - # If true, pass the --all arg to git fetch - fetchAll: true - # 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}} -- - # If true, do not spawn a separate process when using GPG - overrideGpg: false - # If true, do not allow force pushes - disableForcePushing: false - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix - commitPrefix: - - # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*" - pattern: "" - # Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] " - replace: "" - # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix - branchPrefix: "" - # If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 - # (This should really be under 'gui', not 'git') - parseEmoji: true - # Config for showing the log in the commits view - log: - # 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 - # appear chronologically. See https://git-scm.com/docs/ - # - # Deprecated: Configure this with `Log menu -> Commit sort order` ( in the commits window by default). - order: topo-order - # This determines whether the git graph is rendered in the commits panel - # One of 'always' | 'never' | 'when-maximised' - # - # Deprecated: Configure this with `Log menu -> Show git graph` ( in the commits window by default). - showGraph: always - # displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`) - showWholeGraph: false - # When copying commit hashes to the clipboard, truncate them to this - # length. Set to 40 to disable truncation. - truncateCopiedCommitHashesTo: 12 - allBranchesLogCmds: - - git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium -# Periodic update checks -update: - # One of: 'prompt' (default) | 'background' | 'never' - method: prompt - # Period in days between update checks - days: 14 -# Background refreshes -refresher: - # File/submodule refresh interval in seconds. - # Auto-refresh can be disabled via option 'git.autoRefresh'. - refreshInterval: 10 - # Re-fetch interval in seconds. - # Auto-fetch can be disabled via option 'git.autoFetch'. - fetchInterval: 60 -# If true, show a confirmation popup before quitting Lazygit -confirmOnQuit: false -# If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close -quitOnTopLevelReturn: false -# Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc -os: - # Command for editing a file. Should contain "{{filename}}". - edit: "" - # Command for editing a file at a given line number. Should contain - # "{{filename}}", and may optionally contain "{{line}}". - editAtLine: "" - # Same as EditAtLine, except that the command needs to wait until the - # window is closed. - editAtLineAndWait: "" - # For opening a directory in an editor - openDirInEditor: "" - # A built-in preset that sets all of the above settings. Supported presets - # are defined in the getPreset function in editor_presets.go. - editPreset: "" - # Command for opening a file, as if the file is double-clicked. Should - # contain "{{filename}}", but doesn't support "{{line}}". - open: "" - # Command for opening a link. Should contain "{{link}}". - openLink: "" - # EditCommand is the command for editing a file. - # Deprecated: use Edit instead. Note that semantics are different: - # EditCommand is just the command itself, whereas Edit contains a - # "{{filename}}" variable. - editCommand: "" - # EditCommandTemplate is the command template for editing a file - # Deprecated: use EditAtLine instead. - editCommandTemplate: "" - # OpenCommand is the command for opening a file - # Deprecated: use Open instead. - openCommand: "" - # OpenLinkCommand is the command for opening a link - # Deprecated: use OpenLink instead. - openLinkCommand: "" - # 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 - copyToClipboardCmd: "" - # 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 - readFromClipboardCmd: "" -# If true, don't display introductory popups upon opening Lazygit. -disableStartupPopups: true -# 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 -# - 'create': initialize a new repo -# - 'skip': open most recent repo -# - 'quit': exit Lazygit -notARepository: prompt -# If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit. -promptToReturnFromSubprocess: true -# Keybindings -keybinding: - universal: - quit: q - quit-alt1: - return: - quitWithoutChangingDirectory: Q - togglePanel: - prevItem: - nextItem: - prevItem-alt: k - nextItem-alt: j - prevPage: "," - nextPage: . - scrollLeft: H - scrollRight: L - gotoTop: < - gotoBottom: ">" - toggleRangeSelect: v - rangeSelectDown: - rangeSelectUp: - prevBlock: - nextBlock: - prevBlock-alt: h - nextBlock-alt: l - nextBlock-alt2: - prevBlock-alt2: - jumpToBlock: - - "1" - - "2" - - "3" - - "4" - - "5" - nextMatch: "n" - prevMatch: "N" - startSearch: / - optionMenu: - optionMenu-alt1: "?" - select: - goInto: - confirm: - confirmInEditor: - remove: d - new: "n" - edit: e - openFile: o - scrollUpMain: - scrollDownMain: - scrollUpMain-alt1: K - scrollDownMain-alt1: J - scrollUpMain-alt2: - scrollDownMain-alt2: - executeShellCommand: ":" - createRebaseOptionsMenu: m - # 'Files' appended for legacy reasons - pushFiles: P - # 'Files' appended for legacy reasons - pullFiles: p - refresh: R - createPatchOptionsMenu: - nextTab: "]" - prevTab: "[" - nextScreenMode: + - prevScreenMode: _ - undo: z - redo: - filteringMenu: - diffingMenu: W - diffingMenu-alt: - copyToClipboard: - openRecentRepos: - submitEditorText: - extrasMenu: "@" - toggleWhitespaceInDiffView: - increaseContextInDiffView: "}" - decreaseContextInDiffView: "{" - increaseRenameSimilarityThreshold: ) - decreaseRenameSimilarityThreshold: ( - openDiffTool: - status: - checkForUpdate: u - recentRepos: - allBranchesLogGraph: a - files: - commitChanges: c - commitChangesWithoutHook: w - amendLastCommit: A - commitChangesWithEditor: C - findBaseCommitForFixup: - confirmDiscard: x - ignoreFile: i - refreshFiles: r - stashAllChanges: s - viewStashOptions: S - toggleStagedAll: a - viewResetOptions: D - fetch: f - toggleTreeView: "`" - openMergeTool: M - openStatusFilter: - copyFileInfoToClipboard: "y" - branches: - createPullRequest: o - viewPullRequestOptions: O - copyPullRequestURL: - checkoutBranchByName: c - forceCheckoutBranch: F - rebaseBranch: r - renameBranch: R - mergeIntoCurrentBranch: M - viewGitFlowOptions: i - fastForward: f - createTag: T - pushTag: P - setUpstream: u - fetchRemote: f - sortOrder: s - worktrees: - viewWorktreeOptions: w - commits: - squashDown: s - renameCommit: r - renameCommitWithEditor: R - viewResetOptions: g - markCommitAsFixup: f - createFixupCommit: F - squashAboveCommits: S - moveDownCommit: - moveUpCommit: - amendToCommit: A - resetCommitAuthor: a - pickCommit: p - revertCommit: t - cherryPickCopy: C - pasteCommits: V - markCommitAsBaseForRebase: B - tagCommit: T - checkoutCommit: - resetCherryPick: - copyCommitAttributeToClipboard: "y" - openLogMenu: - openInBrowser: o - viewBisectOptions: b - startInteractiveRebase: i - amendAttribute: - resetAuthor: a - setAuthor: A - addCoAuthor: c - stash: - popStash: g - renameStash: r - commitFiles: - checkoutCommitFile: c - main: - toggleSelectHunk: a - pickBothHunks: b - editSelectHunk: E - submodules: - init: i - update: u - bulkMenu: b - commitMessage: - commitMenu: +# Config relating to the Lazygit UI +gui: + # The number of lines you scroll by when scrolling the main window + scrollHeight: 2 + # If true, allow scrolling past the bottom of the content in the main window + scrollPastBottom: true + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#scroll-off-margin + scrollOffMargin: 2 + # One of: 'margin' (default) | 'jump' + scrollOffBehavior: margin + # 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. + mouseEvents: true + # If true, do not show a warning when discarding changes in the staging view. + skipDiscardChangeWarning: false + # If true, do not show warning when applying/popping the stash + skipStashWarning: false + # If true, do not show a warning when attempting to commit without any staged files; instead stage all unstaged files. + skipNoStagedFilesWarning: false + # If true, do not show a warning when rewording a commit via an external editor + 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. + # Number from 0 to 1.0. + sidePanelWidth: 0.3333 + # If true, increase the height of the focused side window; creating an accordion effect. + expandFocusedSidePanel: false + # 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. + 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. + # Options are: + # - 'horizontal': split the window horizontally + # - 'vertical': split the window vertically + # - 'flexible': (default) split the window horizontally if the window is wide enough, otherwise split vertically + mainPanelSplitMode: flexible + # How the window is split when in half screen mode (i.e. after hitting '+' once). + # Possible values: + # - '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) + enlargedSideViewLocation: left + # One of 'auto' (default) | 'en' | 'zh-CN' | 'zh-TW' | 'pl' | 'nl' | 'ja' | 'ko' | 'ru' + language: auto + # Format used when displaying time e.g. commit time. + # Uses Go's time format syntax: https://pkg.go.dev/time#Time.Format + timeFormat: 02 Jan 06 + # 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 + shortTimeFormat: 3:04PM + # Config relating to colors and styles. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#color-attributes + theme: + # Border color of focused window + activeBorderColor: + - "#8caaee" + - bold + # Border color of non-focused windows + inactiveBorderColor: + - "#a5adce" + # Border color of focused window when searching in that window + searchingActiveBorderColor: + - "#e5c890" + # Color of keybindings help text in the bottom line + optionsTextColor: + - "#8caaee" + # Background color of selected line. + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#highlighting-the-selected-line + selectedLineBgColor: + - "#414559" + # Foreground color of copied commit + cherryPickedCommitFgColor: + - "#8caaee" + # Background color of copied commit + cherryPickedCommitBgColor: + - "#51576d" + # Color for file with unstaged changes + unstagedChangesColor: + - "#e78284" + # Default text color + defaultFgColor: + - "#c6d0f5" + authorColors: + "Fabio Scotto di Santolo": "#babbf1" + branchColors: + develop: yellow + feature: blue + fix: red + hotfix: red + # Config relating to the commit length indicator + commitLength: + # If true, show an indicator of commit message length + show: true + # If true, show the '5 of 20' footer at the bottom of list views + showListFooter: true + # 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. + showFileTree: true + # If true, show a random tip in the command log when Lazygit starts + showRandomTip: true + # If true, show the command log + 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. + showBottomLine: true + # If true, show jump-to-window keybindings in window titles. + showPanelJumps: true + # Deprecated: use nerdFontsVersion instead + showIcons: false + # Nerd fonts version to use. + # One of: '2' | '3' | empty string (default) + # If empty, do not show icons. + nerdFontsVersion: "3" + # If true (default), file icons are shown in the file views. Only relevant if NerdFontsVersion is not empty. + showFileIcons: true + # Length of author name in (non-expanded) commits view. 2 means show initials only. + commitAuthorShortLength: 2 + # Length of author name in expanded commits view. 2 means show initials only. + commitAuthorLongLength: 17 + # Length of commit hash in commits view. 0 shows '*' if NF icons aren't on. + commitHashLength: 8 + # If true, show commit hashes alongside branch names in the branches view. + showBranchCommitHash: false + # Whether to show the divergence from the base branch in the branches view. + # One of: 'none' | 'onlyArrow' | 'arrowAndNumber' + showDivergenceFromBaseBranch: none + # Height of the command log view + commandLogSize: 8 + # Whether to split the main window when viewing file changes. + # One of: 'auto' | 'always' + # If 'auto', only split the main window when a file has both staged and unstaged changes + splitDiff: auto + # 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' + screenMode: normal + # Window border style. + # One of 'rounded' (default) | 'single' | 'double' | 'hidden' + border: rounded + # If true, show a seriously epic explosion animation when nuking the working tree. + animateExplosion: true + # Whether to stack UI components on top of each other. + # One of 'auto' (default) | 'always' | 'never' + portraitMode: auto + # How things are filtered when typing '/'. + # One of 'substring' (default) | 'fuzzy' + filterMode: substring + # Config relating to the spinner. + spinner: + # The frames of the spinner animation. + frames: + - "|" + - / + - "-" + - \ + # The "speed" of the spinner in milliseconds. + rate: 50 + # Status panel view. + # One of 'dashboard' (default) | 'allBranchesLog' + statusPanelView: dashboard +# Config relating to git +git: + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Custom_Pagers.md + 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' + colorArg: always + # e.g. + # diff-so-fancy + # delta --dark --paging=never + # ydiff -p cat -s --wrap --width={{columnWidth}} + 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). + useConfig: false + # e.g. 'difft --color=always' + externalDiffCommand: "" + # Config relating to committing + commit: + # If true, pass '--signoff' flag when committing + signOff: false + # Automatic WYSIWYG wrapping of the commit message as you type + autoWrapCommitMessage: true + # If autoWrapCommitMessage is true, the width to wrap to + autoWrapWidth: 72 + # Config relating to merging + merging: + # If true, run merges in a subprocess so that if a commit message is required, Lazygit will not hang + # Only applicable to unix users. + manualCommit: false + # Extra args passed to `git merge`, e.g. --no-ff + args: "--no-ff" + # The commit message to use for a squash merge commit. Can contain "{{selectedRef}}" and "{{currentBranch}}" placeholders. + squashMergeMessage: Squash merge {{selectedRef}} into {{currentBranch}} + # list of branches that are considered 'main' branches, used when displaying commits + mainBranches: + - master + - 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' + skipHookPrefix: WIP + # If true, periodically fetch from remote + autoFetch: true + # If true, periodically refresh files and submodules + autoRefresh: true + # If true, pass the --all arg to git fetch + fetchAll: true + # 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}} -- + # If true, do not spawn a separate process when using GPG + overrideGpg: false + # If true, do not allow force pushes + disableForcePushing: false + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-commit-message-prefix + commitPrefix: + - # pattern to match on. E.g. for 'feature/AB-123' to match on the AB-123 use "^\\w+\\/(\\w+-\\w+).*" + pattern: "" + # Replace directive. E.g. for 'feature/AB-123' to start the commit message with 'AB-123 ' use "[$1] " + replace: "" + # See https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md#predefined-branch-name-prefix + branchPrefix: "" + # If true, parse emoji strings in commit messages e.g. render :rocket: as 🚀 + # (This should really be under 'gui', not 'git') + parseEmoji: true + # Config for showing the log in the commits view + log: + # 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 + # appear chronologically. See https://git-scm.com/docs/ + # + # Deprecated: Configure this with `Log menu -> Commit sort order` ( in the commits window by default). + order: topo-order + # This determines whether the git graph is rendered in the commits panel + # One of 'always' | 'never' | 'when-maximised' + # + # Deprecated: Configure this with `Log menu -> Show git graph` ( in the commits window by default). + showGraph: always + # displays the whole git graph by default in the commits view (equivalent to passing the `--all` argument to `git log`) + showWholeGraph: false + # When copying commit hashes to the clipboard, truncate them to this + # length. Set to 40 to disable truncation. + truncateCopiedCommitHashesTo: 12 + allBranchesLogCmds: + - git log --graph --all --color=always --abbrev-commit --decorate --date=relative --pretty=medium +# Periodic update checks +update: + # One of: 'prompt' (default) | 'background' | 'never' + method: prompt + # Period in days between update checks + days: 14 +# Background refreshes +refresher: + # File/submodule refresh interval in seconds. + # Auto-refresh can be disabled via option 'git.autoRefresh'. + refreshInterval: 10 + # Re-fetch interval in seconds. + # Auto-fetch can be disabled via option 'git.autoFetch'. + fetchInterval: 60 +# If true, show a confirmation popup before quitting Lazygit +confirmOnQuit: false +# If true, exit Lazygit when the user presses escape in a context where there is nothing to cancel/close +quitOnTopLevelReturn: false +# Config relating to things outside of Lazygit like how files are opened, copying to clipboard, etc +os: + # Command for editing a file. Should contain "{{filename}}". + edit: "" + # Command for editing a file at a given line number. Should contain + # "{{filename}}", and may optionally contain "{{line}}". + editAtLine: "" + # Same as EditAtLine, except that the command needs to wait until the + # window is closed. + editAtLineAndWait: "" + # For opening a directory in an editor + openDirInEditor: "" + # A built-in preset that sets all of the above settings. Supported presets + # are defined in the getPreset function in editor_presets.go. + editPreset: "" + # Command for opening a file, as if the file is double-clicked. Should + # contain "{{filename}}", but doesn't support "{{line}}". + open: "" + # Command for opening a link. Should contain "{{link}}". + openLink: "" + # EditCommand is the command for editing a file. + # Deprecated: use Edit instead. Note that semantics are different: + # EditCommand is just the command itself, whereas Edit contains a + # "{{filename}}" variable. + editCommand: "" + # EditCommandTemplate is the command template for editing a file + # Deprecated: use EditAtLine instead. + editCommandTemplate: "" + # OpenCommand is the command for opening a file + # Deprecated: use Open instead. + openCommand: "" + # OpenLinkCommand is the command for opening a link + # Deprecated: use OpenLink instead. + openLinkCommand: "" + # 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 + copyToClipboardCmd: "" + # 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 + readFromClipboardCmd: "" +# If true, don't display introductory popups upon opening Lazygit. +disableStartupPopups: true +# 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 +# - 'create': initialize a new repo +# - 'skip': open most recent repo +# - 'quit': exit Lazygit +notARepository: prompt +# If true, display a confirmation when subprocess terminates. This allows you to view the output of the subprocess before returning to Lazygit. +promptToReturnFromSubprocess: true +# Keybindings +keybinding: + universal: + quit: q + quit-alt1: + return: + quitWithoutChangingDirectory: Q + togglePanel: + prevItem: + nextItem: + prevItem-alt: k + nextItem-alt: j + prevPage: "," + nextPage: . + scrollLeft: H + scrollRight: L + gotoTop: < + gotoBottom: ">" + toggleRangeSelect: v + rangeSelectDown: + rangeSelectUp: + prevBlock: + nextBlock: + prevBlock-alt: h + nextBlock-alt: l + nextBlock-alt2: + prevBlock-alt2: + jumpToBlock: + - "1" + - "2" + - "3" + - "4" + - "5" + nextMatch: "n" + prevMatch: "N" + startSearch: / + optionMenu: + optionMenu-alt1: "?" + select: + goInto: + confirm: + confirmInEditor: + remove: d + new: "n" + edit: e + openFile: o + scrollUpMain: + scrollDownMain: + scrollUpMain-alt1: K + scrollDownMain-alt1: J + scrollUpMain-alt2: + scrollDownMain-alt2: + executeShellCommand: ":" + createRebaseOptionsMenu: m + # 'Files' appended for legacy reasons + pushFiles: P + # 'Files' appended for legacy reasons + pullFiles: p + refresh: R + createPatchOptionsMenu: + nextTab: "]" + prevTab: "[" + nextScreenMode: + + prevScreenMode: _ + undo: z + redo: + filteringMenu: + diffingMenu: W + diffingMenu-alt: + copyToClipboard: + openRecentRepos: + submitEditorText: + extrasMenu: "@" + toggleWhitespaceInDiffView: + increaseContextInDiffView: "}" + decreaseContextInDiffView: "{" + increaseRenameSimilarityThreshold: ) + decreaseRenameSimilarityThreshold: ( + openDiffTool: + status: + checkForUpdate: u + recentRepos: + allBranchesLogGraph: a + files: + commitChanges: c + commitChangesWithoutHook: w + amendLastCommit: A + commitChangesWithEditor: C + findBaseCommitForFixup: + confirmDiscard: x + ignoreFile: i + refreshFiles: r + stashAllChanges: s + viewStashOptions: S + toggleStagedAll: a + viewResetOptions: D + fetch: f + toggleTreeView: "`" + openMergeTool: M + openStatusFilter: + copyFileInfoToClipboard: "y" + branches: + createPullRequest: o + viewPullRequestOptions: O + copyPullRequestURL: + checkoutBranchByName: c + forceCheckoutBranch: F + rebaseBranch: r + renameBranch: R + mergeIntoCurrentBranch: M + viewGitFlowOptions: i + fastForward: f + createTag: T + pushTag: P + setUpstream: u + fetchRemote: f + sortOrder: s + worktrees: + viewWorktreeOptions: w + commits: + squashDown: s + renameCommit: r + renameCommitWithEditor: R + viewResetOptions: g + markCommitAsFixup: f + createFixupCommit: F + squashAboveCommits: S + moveDownCommit: + moveUpCommit: + amendToCommit: A + resetCommitAuthor: a + pickCommit: p + revertCommit: t + cherryPickCopy: C + pasteCommits: V + markCommitAsBaseForRebase: B + tagCommit: T + checkoutCommit: + resetCherryPick: + copyCommitAttributeToClipboard: "y" + openLogMenu: + openInBrowser: o + viewBisectOptions: b + startInteractiveRebase: i + amendAttribute: + resetAuthor: a + setAuthor: A + addCoAuthor: c + stash: + popStash: g + renameStash: r + commitFiles: + checkoutCommitFile: c + main: + toggleSelectHunk: a + pickBothHunks: b + editSelectHunk: E + submodules: + init: i + update: u + bulkMenu: b + commitMessage: + commitMenu: diff --git a/lazyvim/.config/nvim/.gitignore b/lazyvim/.config/nvim/.gitignore index cc5457a..18df58e 100644 --- a/lazyvim/.config/nvim/.gitignore +++ b/lazyvim/.config/nvim/.gitignore @@ -1,8 +1,8 @@ -tt.* -.tests -doc/tags -debug -.repro -foo.* -*.log -data +tt.* +.tests +doc/tags +debug +.repro +foo.* +*.log +data diff --git a/lazyvim/.config/nvim/.neoconf.json b/lazyvim/.config/nvim/.neoconf.json index 7c48087..6e89f00 100644 --- a/lazyvim/.config/nvim/.neoconf.json +++ b/lazyvim/.config/nvim/.neoconf.json @@ -1,15 +1,15 @@ -{ - "neodev": { - "library": { - "enabled": true, - "plugins": true - } - }, - "neoconf": { - "plugins": { - "lua_ls": { - "enabled": true - } - } - } -} +{ + "neodev": { + "library": { + "enabled": true, + "plugins": true + } + }, + "neoconf": { + "plugins": { + "lua_ls": { + "enabled": true + } + } + } +} diff --git a/lazyvim/.config/nvim/LICENSE b/lazyvim/.config/nvim/LICENSE index 261eeb9..29f81d8 100644 --- a/lazyvim/.config/nvim/LICENSE +++ b/lazyvim/.config/nvim/LICENSE @@ -1,201 +1,201 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "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 - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - 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 - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - 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 stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "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 + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + 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 + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + 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 stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/lazyvim/.config/nvim/init.lua b/lazyvim/.config/nvim/init.lua index 27d6b7c..0f95a11 100644 --- a/lazyvim/.config/nvim/init.lua +++ b/lazyvim/.config/nvim/init.lua @@ -1,3 +1,3 @@ --- bootstrap lazy.nvim, LazyVim and your plugins -require("config.lazy") -require("user.utils") +-- bootstrap lazy.nvim, LazyVim and your plugins +require("config.lazy") +require("user.utils") diff --git a/lazyvim/.config/nvim/lazy-lock.json b/lazyvim/.config/nvim/lazy-lock.json index 7baf3be..e7b32e9 100644 --- a/lazyvim/.config/nvim/lazy-lock.json +++ b/lazyvim/.config/nvim/lazy-lock.json @@ -1,18 +1,17 @@ { "LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" }, - "SchemaStore.nvim": { "branch": "main", "commit": "8e74c08998fd786239caba373344f4e4601e21fe" }, + "SchemaStore.nvim": { "branch": "main", "commit": "dc34600801650c2c8bf62125b1f70f6cfffcc057" }, "alpha-nvim": { "branch": "main", "commit": "2b3cbcdd980cae1e022409289245053f62fb50f6" }, "blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" }, "bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" }, "catppuccin": { "branch": "main", "commit": "30fa4d122d9b22ad8b2e0ab1b533c8c26c4dde86" }, "clangd_extensions.nvim": { "branch": "main", "commit": "b67cc417d9020fb4b83d46662351b4d16894905e" }, "conform.nvim": { "branch": "master", "commit": "b4aab989db276993ea5dcb78872be494ce546521" }, - "dial.nvim": { "branch": "master", "commit": "78bd73aaf2b9c8f80715a878feaf56f7ffa8b6ff" }, + "dial.nvim": { "branch": "master", "commit": "f0404ec1f83a03f2c3457e60087c6331d1cbb83f" }, "flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" }, "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, - "fzf-lua": { "branch": "main", "commit": "2c4c75e71eedbedd55ea13ab3400f72a2336e672" }, + "fzf-lua": { "branch": "main", "commit": "091bcd0c925199b1371ea81ec79278611d299627" }, "gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" }, - "glow.nvim": { "branch": "main", "commit": "5d5954b2f22e109d4a6eba8b2618c5b96e4ee7a2" }, "grug-far.nvim": { "branch": "main", "commit": "385d1949dc21d0c39e7a74b4f4a25da18817bc86" }, "hardtime.nvim": { "branch": "main", "commit": "6d7664d5bdfaea44c5f50b29f5239fab7b00c273" }, "harpoon": { "branch": "harpoon2", "commit": "ed1f853847ffd04b2b61c314865665e1dadf22c7" }, @@ -24,29 +23,31 @@ "mason-lspconfig.nvim": { "branch": "main", "commit": "1a31f824b9cd5bc6f342fc29e9a53b60d74af245" }, "mason-nvim-dap.nvim": { "branch": "main", "commit": "86389a3dd687cfaa647b6f44731e492970034baa" }, "mason.nvim": { "branch": "main", "commit": "fc98833b6da5de5a9c5b1446ac541577059555be" }, - "mini.ai": { "branch": "main", "commit": "50994f55b6de0c2781e217c2d5e4a613312e460e" }, - "mini.icons": { "branch": "main", "commit": "b8f6fa6f5a3fd0c56936252edcd691184e5aac0c" }, - "mini.pairs": { "branch": "main", "commit": "1e1ca3f60f58d4050bf814902b472eec9963a5dd" }, + "mini.ai": { "branch": "main", "commit": "45a26d032d8703f280c69c2ed9fb4e1bfc8f24f9" }, + "mini.icons": { "branch": "main", "commit": "f9a177c11daa7829389b7b6eaaec8b8a5c47052d" }, + "mini.nvim": { "branch": "main", "commit": "ddb70da6ec6aa896cfde87350d1e8dffb57ddef0" }, + "mini.pairs": { "branch": "main", "commit": "6e1cc569130f25b2c6fa16d8b21b31ddb1420a4a" }, "multicursors.nvim": { "branch": "main", "commit": "72225ea9e4443c3f4b9df91d0193e07c4ee8d382" }, "neo-tree.nvim": { "branch": "main", "commit": "46fa0c22ca39e05fe15744102d21feb07fe9a94a" }, "noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" }, "none-ls.nvim": { "branch": "main", "commit": "53ec77181d96494b9dc9457110dd62dc623cc78d" }, "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-python": { "branch": "master", "commit": "030385d03363988370adaa5cf21fa465daddb088" }, "nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" }, "nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" }, - "nvim-lint": { "branch": "master", "commit": "ee04d481d4e6089892c2fb2ad8924b1a053591e1" }, - "nvim-lspconfig": { "branch": "master", "commit": "3d97ec4174bcc750d70718ddedabf150536a5891" }, + "nvim-lint": { "branch": "master", "commit": "f126af5345c7472e9a0cdbe1d1a29209be72c4c4" }, + "nvim-lspconfig": { "branch": "master", "commit": "a3deebbd110016f50cc66b7b256120072f3804db" }, "nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" }, "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, + "nvim-web-devicons": { "branch": "master", "commit": "f66cdfef5e84112045b9ebc3119fee9bddb3c687" }, "persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "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" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" }, @@ -55,5 +56,5 @@ "ts-comments.nvim": { "branch": "main", "commit": "1bd9d0ba1d8b336c3db50692ffd0955fe1bb9f0c" }, "venv-selector.nvim": { "branch": "regexp", "commit": "d2326e7433fdeb10f7d0d1237c18b91b353f9f8b" }, "which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }, - "yazi.nvim": { "branch": "main", "commit": "66a659291f85517994886bb641567ce7c7d5368b" } + "yazi.nvim": { "branch": "main", "commit": "8ce0abb50c30fdc486c465ddfab28510346e6bd7" } } diff --git a/lazyvim/.config/nvim/lazyvim.json b/lazyvim/.config/nvim/lazyvim.json index 52e4551..6039f21 100644 --- a/lazyvim/.config/nvim/lazyvim.json +++ b/lazyvim/.config/nvim/lazyvim.json @@ -1,25 +1,25 @@ -{ - "extras": [ - "lazyvim.plugins.extras.dap.core", - "lazyvim.plugins.extras.editor.dial", - "lazyvim.plugins.extras.editor.fzf", - "lazyvim.plugins.extras.editor.refactoring", - "lazyvim.plugins.extras.editor.telescope", - "lazyvim.plugins.extras.lang.clangd", - "lazyvim.plugins.extras.lang.git", - "lazyvim.plugins.extras.lang.go", - "lazyvim.plugins.extras.lang.json", - "lazyvim.plugins.extras.lang.markdown", - "lazyvim.plugins.extras.lang.python", - "lazyvim.plugins.extras.lang.toml", - "lazyvim.plugins.extras.lang.yaml", - "lazyvim.plugins.extras.lang.zig", - "lazyvim.plugins.extras.lsp.none-ls", - "lazyvim.plugins.extras.ui.alpha" - ], - "install_version": 7, - "news": { - "NEWS.md": "10960" - }, - "version": 8 +{ + "extras": [ + "lazyvim.plugins.extras.dap.core", + "lazyvim.plugins.extras.editor.dial", + "lazyvim.plugins.extras.editor.fzf", + "lazyvim.plugins.extras.editor.refactoring", + "lazyvim.plugins.extras.editor.telescope", + "lazyvim.plugins.extras.lang.clangd", + "lazyvim.plugins.extras.lang.git", + "lazyvim.plugins.extras.lang.go", + "lazyvim.plugins.extras.lang.json", + "lazyvim.plugins.extras.lang.markdown", + "lazyvim.plugins.extras.lang.python", + "lazyvim.plugins.extras.lang.toml", + "lazyvim.plugins.extras.lang.yaml", + "lazyvim.plugins.extras.lang.zig", + "lazyvim.plugins.extras.lsp.none-ls", + "lazyvim.plugins.extras.ui.alpha" + ], + "install_version": 7, + "news": { + "NEWS.md": "10960" + }, + "version": 8 } \ No newline at end of file diff --git a/lazyvim/.config/nvim/lua/config/autocmds.lua b/lazyvim/.config/nvim/lua/config/autocmds.lua index 1930c44..789eadf 100644 --- a/lazyvim/.config/nvim/lua/config/autocmds.lua +++ b/lazyvim/.config/nvim/lua/config/autocmds.lua @@ -1,33 +1,33 @@ --- 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 --- Add any additional autocmds here - -local augroup = vim.api.nvim_create_augroup -local autocmd = vim.api.nvim_create_autocmd -local view_group = augroup("auto_view", { clear = true }) - -autocmd({ "BufWinLeave", "BufWritePost", "WinLeave" }, { - desc = "Save view with mkview for real files", - group = view_group, - callback = function(args) - if vim.b[args.buf].view_activated then - vim.cmd.mkview({ mods = { emsg_silent = true } }) - end - end, -}) - -autocmd("BufWinEnter", { - desc = "Try to load file view if available and enable view saving for real files", - group = view_group, - callback = function(args) - if not vim.b[args.buf].view_activated then - 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 ignore_filetypes = { "gitcommit", "gitrebase", "svg", "hgcommit" } - if buftype == "" and filetype and filetype ~= "" and not vim.tbl_contains(ignore_filetypes, filetype) then - vim.b[args.buf].view_activated = true - vim.cmd.loadview({ mods = { emsg_silent = true } }) - end - end - end, -}) +-- 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 +-- Add any additional autocmds here + +local augroup = vim.api.nvim_create_augroup +local autocmd = vim.api.nvim_create_autocmd +local view_group = augroup("auto_view", { clear = true }) + +autocmd({ "BufWinLeave", "BufWritePost", "WinLeave" }, { + desc = "Save view with mkview for real files", + group = view_group, + callback = function(args) + if vim.b[args.buf].view_activated then + vim.cmd.mkview({ mods = { emsg_silent = true } }) + end + end, +}) + +autocmd("BufWinEnter", { + desc = "Try to load file view if available and enable view saving for real files", + group = view_group, + callback = function(args) + if not vim.b[args.buf].view_activated then + 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 ignore_filetypes = { "gitcommit", "gitrebase", "svg", "hgcommit" } + if buftype == "" and filetype and filetype ~= "" and not vim.tbl_contains(ignore_filetypes, filetype) then + vim.b[args.buf].view_activated = true + vim.cmd.loadview({ mods = { emsg_silent = true } }) + end + end + end, +}) diff --git a/lazyvim/.config/nvim/lua/config/keymaps.lua b/lazyvim/.config/nvim/lua/config/keymaps.lua index 820b31c..5996b43 100644 --- a/lazyvim/.config/nvim/lua/config/keymaps.lua +++ b/lazyvim/.config/nvim/lua/config/keymaps.lua @@ -1,45 +1,42 @@ --- 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 --- Add any additional keymaps here - -local map = vim.keymap.set - --- Buffer management -map("n", "bn", ":bnext", { noremap = true, silent = true, desc = "Next buffer" }) -map("n", "bp", ":bprevious", { noremap = true, silent = true, desc = "Previous buffer" }) -map("n", "bd", ":bdelete", { noremap = true, silent = true, desc = "Delete buffer" }) - --- Copy to system clipboard (if not already mapped) -map({ "n", "v" }, "y", [["+y]], { noremap = true, silent = true, desc = "Copy to system clipboard" }) - --- Paste from system clipboard -map("n", "p", [["+p]], { noremap = true, silent = true, desc = "Paste from system clipboard" }) - --- Markdown menu -map("n", "M", [["+M]], { noremap = true, silent = true, desc = "Markdown" }) - -vim.keymap.set("n", "cc", function() - local file1 = vim.fn.expand("%") - - local project_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1] - if project_root == "" then - project_root = vim.fn.getcwd() - end - - require("telescope.builtin").find_files({ - prompt_title = "Compare with...", - cwd = project_root, - hidden = true, - follow = true, - attach_mappings = function(_, map) - map("i", "", function(prompt_bufnr) - local actions = require("telescope.actions") - local action_state = require("telescope.actions.state") - local file2 = action_state.get_selected_entry().path - actions.close(prompt_bufnr) - require("user.utils").meld_diff(file1, file2) - end) - return true - end, - }) -end, { desc = "Compare with" }) +-- 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 +-- Add any additional keymaps here + +local map = vim.keymap.set + +-- Buffer management +map("n", "bn", ":bnext", { noremap = true, silent = true, desc = "Next buffer" }) +map("n", "bp", ":bprevious", { noremap = true, silent = true, desc = "Previous buffer" }) +map("n", "bd", ":bdelete", { noremap = true, silent = true, desc = "Delete buffer" }) + +-- Copy to system clipboard (if not already mapped) +map({ "n", "v" }, "y", [["+y]], { noremap = true, silent = true, desc = "Copy to system clipboard" }) + +-- Paste from system clipboard +map("n", "p", [["+p]], { noremap = true, silent = true, desc = "Paste from system clipboard" }) + +vim.keymap.set("n", "cc", function() + local file1 = vim.fn.expand("%") + + local project_root = vim.fn.systemlist("git rev-parse --show-toplevel")[1] + if project_root == "" then + project_root = vim.fn.getcwd() + end + + require("telescope.builtin").find_files({ + prompt_title = "Compare with...", + cwd = project_root, + hidden = true, + follow = true, + attach_mappings = function(_, map) + map("i", "", function(prompt_bufnr) + local actions = require("telescope.actions") + local action_state = require("telescope.actions.state") + local file2 = action_state.get_selected_entry().path + actions.close(prompt_bufnr) + require("user.utils").meld_diff(file1, file2) + end) + return true + end, + }) +end, { desc = "Compare with" }) diff --git a/lazyvim/.config/nvim/lua/config/lazy.lua b/lazyvim/.config/nvim/lua/config/lazy.lua index 617924b..25d91d7 100644 --- a/lazyvim/.config/nvim/lua/config/lazy.lua +++ b/lazyvim/.config/nvim/lua/config/lazy.lua @@ -1,50 +1,170 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end -end -vim.opt.rtp:prepend(lazypath) - -require("lazy").setup({ - spec = { - -- add LazyVim and import its plugins - { "LazyVim/LazyVim", import = "lazyvim.plugins" }, - -- import/override with your plugins - { import = "plugins" }, - }, - defaults = { - -- 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. - lazy = false, - -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, - -- have outdated releases, which may break your Neovim install. - version = false, -- always use the latest git commit - -- version = "*", -- try installing the latest stable version for plugins that support semver - }, - checker = { enabled = true }, -- automatically check for plugin updates - performance = { - rtp = { - -- disable some rtp plugins - disabled_plugins = { - "gzip", - "matchit", - "matchparen", - "netrwPlugin", - "tarPlugin", - "tohtml", - "tutor", - "zipPlugin", - }, - }, - }, - cache = true, -}) +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end + +vim.opt.rtp:prepend(lazypath) + +-- Start LazyVim plugins +require("lazy").setup({ + spec = { + -- add LazyVim and import its plugins + { "LazyVim/LazyVim", import = "lazyvim.plugins" }, + -- import/override with your plugins + { import = "plugins" }, + }, + defaults = { + -- 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. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver + }, + checker = { enabled = true }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + "matchit", + "matchparen", + "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + }, + }, + }, + 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() diff --git a/lazyvim/.config/nvim/lua/config/options.lua b/lazyvim/.config/nvim/lua/config/options.lua index e5fbefc..6815354 100644 --- a/lazyvim/.config/nvim/lua/config/options.lua +++ b/lazyvim/.config/nvim/lua/config/options.lua @@ -1,57 +1,57 @@ --- 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 --- Add any additional options here - -local opt = vim.opt - --- Encoding -opt.encoding = "utf-8" -opt.fileencoding = "utf-8" - --- Line numbers -opt.number = true -opt.relativenumber = true - --- Enable mouse in all modes -opt.mouse = "a" - --- Better searching -opt.ignorecase = true -opt.smartcase = true - --- Highlight current line -opt.cursorline = true -opt.cursorlineopt = "number" - --- Enable true color support -opt.termguicolors = true - --- Enable system clipboard -opt.clipboard = "unnamedplus" - --- Indentation -opt.softtabstop = 8 -opt.shiftwidth = 8 -opt.tabstop = 8 -opt.expandtab = true -opt.smartindent = true - --- Split behavior -opt.splitright = true -opt.splitbelow = true - --- Enable undo file to persist undo history -opt.undofile = true - --- Set upbar similar to statusline (optional) -opt.statusline = "%f %m %r %=%-14.(%l,%c%V%) %P" - --- Persistent signcolumn to avoid text shifting -opt.signcolumn = "yes" - --- Show file name and modified flag in the window bar -opt.winbar = "%=%m %f" - --- Backup files -opt.swapfile = false -opt.backup = false +-- 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 +-- Add any additional options here + +local opt = vim.opt + +-- Encoding +opt.encoding = "utf-8" +opt.fileencoding = "utf-8" + +-- Line numbers +opt.number = true +opt.relativenumber = true + +-- Enable mouse in all modes +opt.mouse = "a" + +-- Better searching +opt.ignorecase = true +opt.smartcase = true + +-- Highlight current line +opt.cursorline = true +opt.cursorlineopt = "number" + +-- Enable true color support +opt.termguicolors = true + +-- Enable system clipboard +opt.clipboard = "unnamedplus" + +-- Indentation +-- opt.softtabstop = 8 +-- opt.shiftwidth = 8 +-- opt.tabstop = 8 +opt.expandtab = true +opt.smartindent = true + +-- Split behavior +opt.splitright = true +opt.splitbelow = true + +-- Enable undo file to persist undo history +opt.undofile = true + +-- Set upbar similar to statusline (optional) +opt.statusline = "%f %m %r %=%-14.(%l,%c%V%) %P" + +-- Persistent signcolumn to avoid text shifting +opt.signcolumn = "yes" + +-- Show file name and modified flag in the window bar +opt.winbar = "%=%m %f" + +-- Backup files +opt.swapfile = false +opt.backup = false diff --git a/lazyvim/.config/nvim/lua/config/statusline.lua b/lazyvim/.config/nvim/lua/config/statusline.lua new file mode 100755 index 0000000..9c9acfa --- /dev/null +++ b/lazyvim/.config/nvim/lua/config/statusline.lua @@ -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) diff --git a/lazyvim/.config/nvim/lua/plugins/alpha.lua b/lazyvim/.config/nvim/lua/plugins/alpha.lua index 055a3b8..18ea6cb 100644 --- a/lazyvim/.config/nvim/lua/plugins/alpha.lua +++ b/lazyvim/.config/nvim/lua/plugins/alpha.lua @@ -1,16 +1,16 @@ -return { - "goolord/alpha-nvim", - opts = function(_, opts) - local logo = [[ - ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ - ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ - ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ - ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ - ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ - ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ - - [ @elijahmanor ] - ]] - opts.section.header.val = vim.split(logo, "\n", { trimempty = true }) - end, -} +return { + "goolord/alpha-nvim", + opts = function(_, opts) + local logo = [[ + ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ + ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ + ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ + ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ + ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ + ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ + + [ @elijahmanor ] + ]] + opts.section.header.val = vim.split(logo, "\n", { trimempty = true }) + end, +} diff --git a/lazyvim/.config/nvim/lua/plugins/cmp.lua b/lazyvim/.config/nvim/lua/plugins/cmp.lua index f786926..1b1b7f2 100644 --- a/lazyvim/.config/nvim/lua/plugins/cmp.lua +++ b/lazyvim/.config/nvim/lua/plugins/cmp.lua @@ -1,96 +1,96 @@ -return { - { - "mason-org/mason.nvim", - opts = { - ui = { - icons = { - package_installed = "✓", - package_pending = "➜", - package_uninstalled = "✗", - }, - }, - ensure_installed = { - -- LSP servers - "clangd", -- C / C++ - "gopls", -- Go - "python-lsp-server", -- Python - "bash-language-server", -- Bash - "zls", -- Zig - "lua-language-server", -- Lua - -- Formatters / Linters - "stylua", -- Lua formatter - "shfmt", -- Shell formatter - "black", -- Python formatter - "clang-format", -- C/C++ formatter - "goimports", -- Go formatter - }, - }, - }, - { - "hrsh7th/nvim-cmp", - dependencies = { - "hrsh7th/cmp-nvim-lsp", - "hrsh7th/cmp-buffer", - "hrsh7th/cmp-path", - "hrsh7th/cmp-nvim-lua", - "saadparwaiz1/cmp_luasnip", - "L3MON4D3/LuaSnip", - "onsails/lspkind.nvim", -- icone carine nel completamento - }, - opts = function(_, opts) - local cmp = require("cmp") - local luasnip = require("luasnip") - local lspkind = require("lspkind") - - -- Carica snippet - require("luasnip.loaders.from_vscode").lazy_load() - - opts.snippet = { - expand = function(args) - luasnip.lsp_expand(args.body) - end, - } - - opts.mapping = vim.tbl_extend("force", opts.mapping, { - [""] = cmp.mapping.complete(), - [""] = cmp.mapping.confirm({ select = true }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_next_item() - elseif luasnip.expand_or_jumpable() then - luasnip.expand_or_jump() - else - fallback() - end - end, { "i", "s" }), - [""] = cmp.mapping(function(fallback) - if cmp.visible() then - cmp.select_prev_item() - elseif luasnip.jumpable(-1) then - luasnip.jump(-1) - else - fallback() - end - end, { "i", "s" }), - }) - - opts.sources = cmp.config.sources({ - { name = "nvim_lsp" }, - { name = "luasnip" }, - { name = "nvim_lua" }, - { name = "buffer" }, - { name = "path" }, - }) - - opts.formatting = { - format = lspkind.cmp_format({ - mode = "symbol_text", - maxwidth = 50, - ellipsis_char = "...", - }), - } - - return opts - end, - }, -} +return { + { + "mason-org/mason.nvim", + opts = { + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗", + }, + }, + ensure_installed = { + -- LSP servers + "clangd", -- C / C++ + "gopls", -- Go + "python-lsp-server", -- Python + "bash-language-server", -- Bash + "zls", -- Zig + "lua-language-server", -- Lua + -- Formatters / Linters + "stylua", -- Lua formatter + "shfmt", -- Shell formatter + "black", -- Python formatter + "clang-format", -- C/C++ formatter + "goimports", -- Go formatter + }, + }, + }, + { + "hrsh7th/nvim-cmp", + dependencies = { + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "hrsh7th/cmp-nvim-lua", + "saadparwaiz1/cmp_luasnip", + "L3MON4D3/LuaSnip", + "onsails/lspkind.nvim", -- icone carine nel completamento + }, + opts = function(_, opts) + local cmp = require("cmp") + local luasnip = require("luasnip") + local lspkind = require("lspkind") + + -- Carica snippet + require("luasnip.loaders.from_vscode").lazy_load() + + opts.snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + } + + opts.mapping = vim.tbl_extend("force", opts.mapping, { + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.confirm({ select = true }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }) + + opts.sources = cmp.config.sources({ + { name = "nvim_lsp" }, + { name = "luasnip" }, + { name = "nvim_lua" }, + { name = "buffer" }, + { name = "path" }, + }) + + opts.formatting = { + format = lspkind.cmp_format({ + mode = "symbol_text", + maxwidth = 50, + ellipsis_char = "...", + }), + } + + return opts + end, + }, +} diff --git a/lazyvim/.config/nvim/lua/plugins/colorscheme.lua b/lazyvim/.config/nvim/lua/plugins/colorscheme.lua index 8842268..1ababe8 100644 --- a/lazyvim/.config/nvim/lua/plugins/colorscheme.lua +++ b/lazyvim/.config/nvim/lua/plugins/colorscheme.lua @@ -1,15 +1,15 @@ -return { - "catppuccin/nvim", - name = "catppuccin", - lazy = false, - priority = 1000, - opts = { - flavour = "mocha", - transparent_background = false, - }, - config = function(_, opts) - require("catppuccin").setup(opts) - -- vim.cmd.colorscheme("catppuccin") - vim.cmd.colorscheme("tokyonight-night") - end, -} +return { + "catppuccin/nvim", + name = "catppuccin", + lazy = false, + priority = 1000, + opts = { + flavour = "mocha", + transparent_background = false, + }, + config = function(_, opts) + require("catppuccin").setup(opts) + -- vim.cmd.colorscheme("catppuccin-mocha") + vim.cmd.colorscheme("tokyonight-night") + end, +} diff --git a/lazyvim/.config/nvim/lua/plugins/dap.lua b/lazyvim/.config/nvim/lua/plugins/dap.lua index 0a1991e..0834917 100644 --- a/lazyvim/.config/nvim/lua/plugins/dap.lua +++ b/lazyvim/.config/nvim/lua/plugins/dap.lua @@ -1,108 +1,108 @@ -return { - { - "mfussenegger/nvim-dap", - dependencies = { - "leoluz/nvim-dap-go", - "rcarriga/nvim-dap-ui", - "theHamsta/nvim-dap-virtual-text", - "nvim-neotest/nvim-nio", - "williamboman/mason.nvim", - "jay-babu/mason-nvim-dap.nvim", -- Dependency for managing DAP adapters with Mason - "mfussenegger/nvim-dap-python", -- Dependency for Python debugging - }, - config = function() - local dap = require("dap") - local dapui = require("dapui") - local mason_dap = require("mason-nvim-dap") - - -- Configure mason-nvim-dap to automatically install DAP adapters - mason_dap.setup({ - ensure_installed = { - "delve", -- Go Debugger Adapter - "codelldb", -- C/C++ Debugger Adapter - "debugpy", -- Python Debugger Adapter - }, - handlers = {}, - }) - - -- Set up the DAP UI - dapui.setup() - - -- Set up the Go debugging configurations - require("dap-go").setup() - - -- Set up the Python debugging configurations - require("dap-python").setup() - - -- Configure nvim-dap-virtual-text - require("nvim-dap-virtual-text").setup({ - display_callback = function(variable) - local name = string.lower(variable.name) - local value = string.lower(variable.value) - if name:match("secret") or name:match("api") or value:match("secret") or value:match("api") then - return "*****" - end - - if #variable.value > 15 then - return " " .. string.sub(variable.value, 1, 15) .. "... " - end - - return " " .. variable.value - end, - }) - - -- Configure the CodeLLDB adapter for C/C++ - dap.adapters.codelldb = { - type = "server", - port = "${port}", - executable = { - command = vim.fn.stdpath("data") .. "/mason/bin/codelldb", - args = { "--port", "${port}" }, - }, - } - - -- Define launch configurations for C/C++ - dap.configurations.c = { - { - name = "Launch C", - type = "codelldb", - request = "launch", - program = function() - return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") - end, - cwd = "${workspaceFolder}", - stopOnEntry = false, - }, - } - - dap.configurations.cpp = dap.configurations.c - - -- Your keyboard shortcuts for debugging - vim.keymap.set("n", "b", dap.toggle_breakpoint) - vim.keymap.set("n", "gb", dap.run_to_cursor) - vim.keymap.set("n", "?", function() - dapui.eval(nil, { enter = true }) - end) - vim.keymap.set("n", "", dap.continue) - vim.keymap.set("n", "", dap.step_into) - vim.keymap.set("n", "", dap.step_over) - vim.keymap.set("n", "", dap.step_out) - vim.keymap.set("n", "", dap.step_back) - vim.keymap.set("n", "", dap.restart) - - -- Listeners to open and close the DAP UI automatically - dap.listeners.before.attach.dapui_config = function() - dapui.open() - end - dap.listeners.before.launch.dapui_config = function() - dapui.open() - end - dap.listeners.before.event_terminated.dapui_config = function() - dapui.close() - end - dap.listeners.before.event_exited.dapui_config = function() - dapui.close() - end - end, - }, -} +return { + { + "mfussenegger/nvim-dap", + dependencies = { + "leoluz/nvim-dap-go", + "rcarriga/nvim-dap-ui", + "theHamsta/nvim-dap-virtual-text", + "nvim-neotest/nvim-nio", + "williamboman/mason.nvim", + "jay-babu/mason-nvim-dap.nvim", -- Dependency for managing DAP adapters with Mason + "mfussenegger/nvim-dap-python", -- Dependency for Python debugging + }, + config = function() + local dap = require("dap") + local dapui = require("dapui") + local mason_dap = require("mason-nvim-dap") + + -- Configure mason-nvim-dap to automatically install DAP adapters + mason_dap.setup({ + ensure_installed = { + "delve", -- Go Debugger Adapter + "codelldb", -- C/C++ Debugger Adapter + "debugpy", -- Python Debugger Adapter + }, + handlers = {}, + }) + + -- Set up the DAP UI + dapui.setup() + + -- Set up the Go debugging configurations + require("dap-go").setup() + + -- Set up the Python debugging configurations + require("dap-python").setup() + + -- Configure nvim-dap-virtual-text + require("nvim-dap-virtual-text").setup({ + display_callback = function(variable) + local name = string.lower(variable.name) + local value = string.lower(variable.value) + if name:match("secret") or name:match("api") or value:match("secret") or value:match("api") then + return "*****" + end + + if #variable.value > 15 then + return " " .. string.sub(variable.value, 1, 15) .. "... " + end + + return " " .. variable.value + end, + }) + + -- Configure the CodeLLDB adapter for C/C++ + dap.adapters.codelldb = { + type = "server", + port = "${port}", + executable = { + command = vim.fn.stdpath("data") .. "/mason/bin/codelldb", + args = { "--port", "${port}" }, + }, + } + + -- Define launch configurations for C/C++ + dap.configurations.c = { + { + name = "Launch C", + type = "codelldb", + request = "launch", + program = function() + return vim.fn.input("Path to executable: ", vim.fn.getcwd() .. "/", "file") + end, + cwd = "${workspaceFolder}", + stopOnEntry = false, + }, + } + + dap.configurations.cpp = dap.configurations.c + + -- Your keyboard shortcuts for debugging + vim.keymap.set("n", "b", dap.toggle_breakpoint) + vim.keymap.set("n", "gb", dap.run_to_cursor) + vim.keymap.set("n", "?", function() + dapui.eval(nil, { enter = true }) + end) + vim.keymap.set("n", "", dap.continue) + vim.keymap.set("n", "", dap.step_into) + vim.keymap.set("n", "", dap.step_over) + vim.keymap.set("n", "", dap.step_out) + vim.keymap.set("n", "", dap.step_back) + vim.keymap.set("n", "", dap.restart) + + -- Listeners to open and close the DAP UI automatically + dap.listeners.before.attach.dapui_config = function() + dapui.open() + end + dap.listeners.before.launch.dapui_config = function() + dapui.open() + end + dap.listeners.before.event_terminated.dapui_config = function() + dapui.close() + end + dap.listeners.before.event_exited.dapui_config = function() + dapui.close() + end + end, + }, +} diff --git a/lazyvim/.config/nvim/lua/plugins/disabled.lua b/lazyvim/.config/nvim/lua/plugins/disabled.lua index cabc4f0..9344974 100644 --- a/lazyvim/.config/nvim/lua/plugins/disabled.lua +++ b/lazyvim/.config/nvim/lua/plugins/disabled.lua @@ -1,3 +1,3 @@ -return { - { "windwp/nvim-spectre", enabled = false }, -} +return { + { "windwp/nvim-spectre", enabled = false }, +} diff --git a/lazyvim/.config/nvim/lua/plugins/formatter.lua b/lazyvim/.config/nvim/lua/plugins/formatter.lua index 31a676e..c958f6d 100644 --- a/lazyvim/.config/nvim/lua/plugins/formatter.lua +++ b/lazyvim/.config/nvim/lua/plugins/formatter.lua @@ -1,57 +1,57 @@ -return { - "nvimtools/none-ls.nvim", - config = function() - local null_ls = require("null-ls") - - null_ls.setup({ - sources = { - -- C - null_ls.builtins.formatting.clang_format.with({ - 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 }", - }, - }), - - -- Go - null_ls.builtins.formatting.goimports, - - -- Zig - -- null_ls.builtins.formatting.zigfmt, - - -- Lua - null_ls.builtins.formatting.stylua.with({ - extra_args = { - "--indent-type", - "Spaces", - "--indent-width", - "2", - "--column-width", - "120", - }, - }), - - -- Python - null_ls.builtins.formatting.black.with({ - extra_args = { "--line-length", "79" }, - }), - - -- Shell - null_ls.builtins.formatting.shfmt.with({ - extra_args = { "-i", "2", "-ci", "-bn", "-sr", "-p" }, - }), - }, - - -- Auto-format on save - on_attach = function(client, bufnr) - if client.supports_method("textDocument/formatting") then - vim.api.nvim_create_autocmd("BufWritePre", { - buffer = bufnr, - callback = function() - vim.lsp.buf.format({ async = false }) - end, - }) - end - end, - }) - end, -} +return { + "nvimtools/none-ls.nvim", + config = function() + local null_ls = require("null-ls") + + null_ls.setup({ + sources = { + -- C + null_ls.builtins.formatting.clang_format.with({ + 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 }", + }, + }), + + -- Go + null_ls.builtins.formatting.goimports, + + -- Zig + -- null_ls.builtins.formatting.zigfmt, + + -- Lua + null_ls.builtins.formatting.stylua.with({ + extra_args = { + "--indent-type", + "Spaces", + "--indent-width", + "2", + "--column-width", + "120", + }, + }), + + -- Python + null_ls.builtins.formatting.black.with({ + extra_args = { "--line-length", "79" }, + }), + + -- Shell + null_ls.builtins.formatting.shfmt.with({ + extra_args = { "-i", "2", "-ci", "-bn", "-sr", "-p" }, + }), + }, + + -- Auto-format on save + on_attach = function(client, bufnr) + if client.supports_method("textDocument/formatting") then + vim.api.nvim_create_autocmd("BufWritePre", { + buffer = bufnr, + callback = function() + vim.lsp.buf.format({ async = false }) + end, + }) + end + end, + }) + end, +} diff --git a/lazyvim/.config/nvim/lua/plugins/hardtime.lua b/lazyvim/.config/nvim/lua/plugins/hardtime.lua index 231ee23..b80caef 100644 --- a/lazyvim/.config/nvim/lua/plugins/hardtime.lua +++ b/lazyvim/.config/nvim/lua/plugins/hardtime.lua @@ -1,7 +1,7 @@ -return { - "m4xshen/hardtime.nvim", - lazy = false, - dependencies = { "MunifTanjim/nui.nvim" }, - enabled = false, - opts = {}, -} +return { + "m4xshen/hardtime.nvim", + lazy = false, + dependencies = { "MunifTanjim/nui.nvim" }, + enabled = false, + opts = {}, +} diff --git a/lazyvim/.config/nvim/lua/plugins/harpoon.lua b/lazyvim/.config/nvim/lua/plugins/harpoon.lua index e4d1233..f625372 100644 --- a/lazyvim/.config/nvim/lua/plugins/harpoon.lua +++ b/lazyvim/.config/nvim/lua/plugins/harpoon.lua @@ -1,5 +1,5 @@ -return { - "ThePrimeagen/harpoon", - branch = "harpoon2", - dependencies = { "nvim-lua/plenary.nvim" }, -} +return { + "ThePrimeagen/harpoon", + branch = "harpoon2", + dependencies = { "nvim-lua/plenary.nvim" }, +} diff --git a/lazyvim/.config/nvim/lua/plugins/lsp.lua b/lazyvim/.config/nvim/lua/plugins/lsp.lua index 9877c1a..e14b99e 100644 --- a/lazyvim/.config/nvim/lua/plugins/lsp.lua +++ b/lazyvim/.config/nvim/lua/plugins/lsp.lua @@ -1,58 +1,58 @@ -return { - "neovim/nvim-lspconfig", - - -- How to add an LSP for a specific programming language? - -- 1. Use `:Mason` to install the corresponding LSP. - -- 2. Add the configuration below. The syntax is `lspconfig..setup(...)` - -- Hint (find here): https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md - config = function() - -- Set different settings for different languages' LSP. - -- Support List: https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md - local lspconfig = require("lspconfig") - - -- Case 1. For CMake Users - -- $ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON . - -- 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 - -- 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. - -- src: https://clangd.llvm.org/installation#compile_commandsjson - lspconfig.clangd.setup({}) - lspconfig.gopls.setup({}) - lspconfig.bashls.setup({}) - lspconfig.zls.setup({}) - lspconfig.pylsp.setup({ - settings = { - -- configure plugins in pylsp - pylsp = { - plugins = { - pyflakes = { enabled = false }, - pycodestyle = { enabled = false }, - }, - }, - }, - }) - lspconfig.lua_ls.setup({ - settings = { - Lua = { - runtime = { - -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim). - version = "LuaJIT", - }, - diagnostics = { - -- Get the language server to recognize the `vim` global. - globals = { "vim" }, - }, - workspace = { - -- Make the server aware of Neovim runtime files. - library = vim.api.nvim_get_runtime_file("", true), - }, - -- Do not send telemetry data containing a randomized but unique identifier. - telemetry = { - enable = false, - }, - }, - }, - }) - end, -} +return { + "neovim/nvim-lspconfig", + + -- How to add an LSP for a specific programming language? + -- 1. Use `:Mason` to install the corresponding LSP. + -- 2. Add the configuration below. The syntax is `lspconfig..setup(...)` + -- Hint (find here): https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md + config = function() + -- Set different settings for different languages' LSP. + -- Support List: https://github.com/neovim/nvim-lspconfig/blob/master/doc/configs.md + local lspconfig = require("lspconfig") + + -- Case 1. For CMake Users + -- $ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON . + -- 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 + -- 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. + -- src: https://clangd.llvm.org/installation#compile_commandsjson + lspconfig.clangd.setup({}) + lspconfig.gopls.setup({}) + lspconfig.bashls.setup({}) + lspconfig.zls.setup({}) + lspconfig.pylsp.setup({ + settings = { + -- configure plugins in pylsp + pylsp = { + plugins = { + pyflakes = { enabled = false }, + pycodestyle = { enabled = false }, + }, + }, + }, + }) + lspconfig.lua_ls.setup({ + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim). + version = "LuaJIT", + }, + diagnostics = { + -- Get the language server to recognize the `vim` global. + globals = { "vim" }, + }, + workspace = { + -- Make the server aware of Neovim runtime files. + library = vim.api.nvim_get_runtime_file("", true), + }, + -- Do not send telemetry data containing a randomized but unique identifier. + telemetry = { + enable = false, + }, + }, + }, + }) + end, +} diff --git a/lazyvim/.config/nvim/lua/plugins/lualine.lua b/lazyvim/.config/nvim/lua/plugins/lualine.lua new file mode 100755 index 0000000..e8aac06 --- /dev/null +++ b/lazyvim/.config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,4 @@ +return { + "nvim-lualine/lualine.nvim", + dependencies = { "nvim-tree/nvim-web-devicons" }, +} diff --git a/lazyvim/.config/nvim/lua/plugins/markdown-preview.lua b/lazyvim/.config/nvim/lua/plugins/markdown-preview.lua index 8eaeeb6..3e46bec 100644 --- a/lazyvim/.config/nvim/lua/plugins/markdown-preview.lua +++ b/lazyvim/.config/nvim/lua/plugins/markdown-preview.lua @@ -1,37 +1,9 @@ -return { - -- Browser preview plugin - { - "iamcco/markdown-preview.nvim", - cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" }, - build = "cd app && yarn install", - init = function() - vim.g.mkdp_filetypes = { "markdown" } - 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 = { - { - "Mp", - "MarkdownPreviewToggle", - desc = "Preview Markdown (Browser)", - }, - }, - }, - - -- Terminal-based preview with Glow - { - "ellisonleao/glow.nvim", - config = true, -- uses default config - cmd = "Glow", - ft = { "markdown" }, - keys = { - { - "Mg", - "Glow", - desc = "Preview Markdown (Glow)", - }, - }, - }, -} +return { + "MeanderingProgrammer/render-markdown.nvim", + dependencies = { "nvim-treesitter/nvim-treesitter", "echasnovski/mini.nvim" }, -- if you use the mini.nvim suite + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'echasnovski/mini.icons' }, -- if you use standalone mini plugins + -- dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-tree/nvim-web-devicons' }, -- if you prefer nvim-web-devicons + ---@module 'render-markdown' + ---@type render.md.UserConfig + opts = {}, +} diff --git a/lazyvim/.config/nvim/lua/plugins/multicursors.lua b/lazyvim/.config/nvim/lua/plugins/multicursors.lua index 80183e6..1d4b828 100644 --- a/lazyvim/.config/nvim/lua/plugins/multicursors.lua +++ b/lazyvim/.config/nvim/lua/plugins/multicursors.lua @@ -1,17 +1,17 @@ -return { - "smoka7/multicursors.nvim", - event = "VeryLazy", - dependencies = { - "nvimtools/hydra.nvim", - }, - opts = {}, - cmd = { "MCstart", "MCvisual", "MCclear", "MCpattern", "MCvisualPattern", "MCunderCursor" }, - keys = { - { - mode = { "v", "n" }, - "m", - "MCstart", - desc = "Create a selection for selected text or word under the cursor", - }, - }, -} +return { + "smoka7/multicursors.nvim", + event = "VeryLazy", + dependencies = { + "nvimtools/hydra.nvim", + }, + opts = {}, + cmd = { "MCstart", "MCvisual", "MCclear", "MCpattern", "MCvisualPattern", "MCunderCursor" }, + keys = { + { + mode = { "v", "n" }, + "m", + "MCstart", + desc = "Create a selection for selected text or word under the cursor", + }, + }, +} diff --git a/lazyvim/.config/nvim/lua/plugins/neo-tree.lua b/lazyvim/.config/nvim/lua/plugins/neo-tree.lua index 3ce0ca2..3c88091 100644 --- a/lazyvim/.config/nvim/lua/plugins/neo-tree.lua +++ b/lazyvim/.config/nvim/lua/plugins/neo-tree.lua @@ -1,4 +1,4 @@ -return { - "nvim-neo-tree/neo-tree.nvim", - enabled = false, -} +return { + "nvim-neo-tree/neo-tree.nvim", + enabled = false, +} diff --git a/lazyvim/.config/nvim/lua/plugins/snacks.lua b/lazyvim/.config/nvim/lua/plugins/snacks.lua new file mode 100755 index 0000000..6766b3d --- /dev/null +++ b/lazyvim/.config/nvim/lua/plugins/snacks.lua @@ -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 + { + "", + function() + Snacks.picker.smart() + end, + desc = "Smart Find Files", + }, + { + ",", + function() + Snacks.picker.buffers() + end, + desc = "Buffers", + }, + { + "/", + function() + Snacks.picker.grep() + end, + desc = "Grep", + }, + { + ":", + function() + Snacks.picker.command_history() + end, + desc = "Command History", + }, + { + "n", + function() + Snacks.picker.notifications() + end, + desc = "Notification History", + }, + { + "fb", + function() + Snacks.picker.buffers() + end, + desc = "Buffers", + }, + { + "fc", + function() + Snacks.picker.files({ cwd = vim.fn.stdpath("config") }) + end, + desc = "Find Config File", + }, + { + "ff", + function() + Snacks.picker.files() + end, + desc = "Find Files", + }, + { + "fg", + function() + Snacks.picker.git_files() + end, + desc = "Find Git Files", + }, + { + "fp", + function() + Snacks.picker.projects() + end, + desc = "Projects", + }, + { + "fr", + function() + Snacks.picker.recent() + end, + desc = "Recent", + }, + -- git + { + "gb", + function() + Snacks.picker.git_branches() + end, + desc = "Git Branches", + }, + { + "gl", + function() + Snacks.picker.git_log() + end, + desc = "Git Log", + }, + { + "gL", + function() + Snacks.picker.git_log_line() + end, + desc = "Git Log Line", + }, + { + "gs", + function() + Snacks.picker.git_status() + end, + desc = "Git Status", + }, + { + "gS", + function() + Snacks.picker.git_stash() + end, + desc = "Git Stash", + }, + { + "gd", + function() + Snacks.picker.git_diff() + end, + desc = "Git Diff (Hunks)", + }, + { + "gf", + function() + Snacks.picker.git_log_file() + end, + desc = "Git Log File", + }, + -- Grep + { + "sb", + function() + Snacks.picker.lines() + end, + desc = "Buffer Lines", + }, + { + "sB", + function() + Snacks.picker.grep_buffers() + end, + desc = "Grep Open Buffers", + }, + { + "sg", + function() + Snacks.picker.grep() + end, + desc = "Grep", + }, + { + "sw", + function() + Snacks.picker.grep_word() + end, + desc = "Visual selection or word", + mode = { "n", "x" }, + }, + -- search + { + 's"', + function() + Snacks.picker.registers() + end, + desc = "Registers", + }, + { + "s/", + function() + Snacks.picker.search_history() + end, + desc = "Search History", + }, + { + "sa", + function() + Snacks.picker.autocmds() + end, + desc = "Autocmds", + }, + { + "sb", + function() + Snacks.picker.lines() + end, + desc = "Buffer Lines", + }, + { + "sc", + function() + Snacks.picker.command_history() + end, + desc = "Command History", + }, + { + "sC", + function() + Snacks.picker.commands() + end, + desc = "Commands", + }, + { + "sd", + function() + Snacks.picker.diagnostics() + end, + desc = "Diagnostics", + }, + { + "sD", + function() + Snacks.picker.diagnostics_buffer() + end, + desc = "Buffer Diagnostics", + }, + { + "sh", + function() + Snacks.picker.help() + end, + desc = "Help Pages", + }, + { + "sH", + function() + Snacks.picker.highlights() + end, + desc = "Highlights", + }, + { + "si", + function() + Snacks.picker.icons() + end, + desc = "Icons", + }, + { + "sj", + function() + Snacks.picker.jumps() + end, + desc = "Jumps", + }, + { + "sk", + function() + Snacks.picker.keymaps() + end, + desc = "Keymaps", + }, + { + "sl", + function() + Snacks.picker.loclist() + end, + desc = "Location List", + }, + { + "sm", + function() + Snacks.picker.marks() + end, + desc = "Marks", + }, + { + "sM", + function() + Snacks.picker.man() + end, + desc = "Man Pages", + }, + { + "sp", + function() + Snacks.picker.lazy() + end, + desc = "Search for Plugin Spec", + }, + { + "sq", + function() + Snacks.picker.qflist() + end, + desc = "Quickfix List", + }, + { + "sR", + function() + Snacks.picker.resume() + end, + desc = "Resume", + }, + { + "su", + function() + Snacks.picker.undo() + end, + desc = "Undo History", + }, + { + "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", + }, + { + "ss", + function() + Snacks.picker.lsp_symbols() + end, + desc = "LSP Symbols", + }, + { + "sS", + function() + Snacks.picker.lsp_workspace_symbols() + end, + desc = "LSP Workspace Symbols", + }, + -- Other + { + "z", + function() + Snacks.zen() + end, + desc = "Toggle Zen Mode", + }, + { + "Z", + function() + Snacks.zen.zoom() + end, + desc = "Toggle Zoom", + }, + { + ".", + function() + Snacks.scratch() + end, + desc = "Toggle Scratch Buffer", + }, + { + "S", + function() + Snacks.scratch.select() + end, + desc = "Select Scratch Buffer", + }, + { + "n", + function() + Snacks.notifier.show_history() + end, + desc = "Notification History", + }, + { + "bd", + function() + Snacks.bufdelete() + end, + desc = "Delete Buffer", + }, + { + "cR", + function() + Snacks.rename.rename_file() + end, + desc = "Rename File", + }, + { + "gB", + function() + Snacks.gitbrowse() + end, + desc = "Git Browse", + mode = { "n", "v" }, + }, + { + "gg", + function() + Snacks.lazygit() + end, + desc = "Lazygit", + }, + { + "un", + function() + Snacks.notifier.hide() + end, + desc = "Dismiss All Notifications", + }, + { + "", + function() + Snacks.terminal() + end, + desc = "Toggle Terminal", + }, + { + "", + 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" }, + }, + { + "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, +} diff --git a/lazyvim/.config/nvim/lua/plugins/telescope.lua b/lazyvim/.config/nvim/lua/plugins/telescope.lua index 5ca85ed..9bfb67e 100644 --- a/lazyvim/.config/nvim/lua/plugins/telescope.lua +++ b/lazyvim/.config/nvim/lua/plugins/telescope.lua @@ -1,5 +1,5 @@ -return { - "nvim-telescope/telescope.nvim", - tag = "0.1.8", - dependencies = { "nvim-lua/plenary.nvim" }, -} +return { + "nvim-telescope/telescope.nvim", + tag = "0.1.8", + dependencies = { "nvim-lua/plenary.nvim" }, +} diff --git a/lazyvim/.config/nvim/lua/plugins/yazi.lua b/lazyvim/.config/nvim/lua/plugins/yazi.lua index 04891a0..15700a7 100644 --- a/lazyvim/.config/nvim/lua/plugins/yazi.lua +++ b/lazyvim/.config/nvim/lua/plugins/yazi.lua @@ -1,8 +1,8 @@ -return { - "mikavilpas/yazi.nvim", - dependencies = { "nvim-lua/plenary.nvim" }, - opts = {}, - keys = { - { "e", "Yazi", desc = "Open Yazi" }, - }, -} +return { + "mikavilpas/yazi.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + opts = {}, + keys = { + { "e", "Yazi", desc = "Open Yazi" }, + }, +} diff --git a/lazyvim/.config/nvim/lua/scripts/meld_diff_fzf.sh b/lazyvim/.config/nvim/lua/scripts/meld_diff_fzf.sh new file mode 100755 index 0000000..96851d1 --- /dev/null +++ b/lazyvim/.config/nvim/lua/scripts/meld_diff_fzf.sh @@ -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" & diff --git a/lazyvim/.config/nvim/lua/user/utils.lua b/lazyvim/.config/nvim/lua/user/utils.lua index 205792a..948aeae 100644 --- a/lazyvim/.config/nvim/lua/user/utils.lua +++ b/lazyvim/.config/nvim/lua/user/utils.lua @@ -1,15 +1,15 @@ --- This file contains all custom functions for integrate external tools. - --- Meld for comparing and merging files -local M = {} - -function M.meld_diff(file1, file2) - if not file1 or not file2 then - print("Usage: :lua require'user.utils'.meld_diff('file1', 'file2')") - return - end - local cmd = string.format("meld '%s' '%s' &", file1, file2) - os.execute(cmd) -end - -return M +-- This file contains all custom functions for integrate external tools. + +-- Meld for comparing and merging files +local M = {} + +function M.meld_diff(file1, file2) + if not file1 or not file2 then + print("Usage: :lua require'user.utils'.meld_diff('file1', 'file2')") + return + end + local cmd = string.format("meld '%s' '%s' &", file1, file2) + os.execute(cmd) +end + +return M diff --git a/lazyvim/.config/nvim/stylua.toml b/lazyvim/.config/nvim/stylua.toml index 4524aeb..0ea7091 100644 --- a/lazyvim/.config/nvim/stylua.toml +++ b/lazyvim/.config/nvim/stylua.toml @@ -1,4 +1,4 @@ -indent_type = "Spaces" -indent_width = 2 -column_width = 120 - +indent_type = "Spaces" +indent_width = 2 +column_width = 120 +