chore: Refactored symlink order
d0b90e6a
36 file(s) · +5400 −13
| 1 | + | # Exports |
|
| 2 | + | set -x MANPAGER 'nvim +Man!' |
|
| 3 | + | set -x TINTED_SHELL_ENABLE_BASE16_VARS "1" |
|
| 4 | + | set -x MANWIDTH 999 |
|
| 5 | + | set -x PATH "$HOME/.cargo/bin:$PATH" |
|
| 6 | + | set -x PATH "$HOME/.local/share/go/bin:$PATH" |
|
| 7 | + | set -x PATH "$HOME/.local/bin:$PATH" |
|
| 8 | + | set -x PATH "/Applications/Docker.app/Contents/Resources/bin:$PATH" |
|
| 9 | + | set -x GOPATH "$HOME/.local/share/go" |
|
| 10 | + | set -x PATH "/opt/homebrew/opt/llvm/bin:$PATH" |
|
| 11 | + | set -x PATH "/Users/stevedsimkins/.local/share/solana/install/active_release/bin:$PATH" |
|
| 12 | + | set -x BAT_THEME ansi |
|
| 13 | + | # pnpm |
|
| 14 | + | set -x PNPM_HOME "/Users/stevedsimkins/.local/share/pnpm" |
|
| 15 | + | set -x PATH "$PNPM_HOME:$PATH" |
|
| 16 | + | # pnpm end |
|
| 17 | + | set -x FZF_DEFAULT_OPTS "--height 60% --layout=reverse --inline-info --border" |
|
| 18 | + | set -x _ZO_DATA_DIR "$HOME/.local/share/zoxide" |
|
| 19 | + | ||
| 20 | + | # set -gx NVM_DIR (brew --prefix nvm) |
|
| 21 | + | # set -x PATH "/Users/stevedsimkins/solana"/bin:"$PATH" |
|
| 22 | + | # source $NVM_DIR/nvm.sh; and nvm use |
|
| 23 | + | # set -x PATH "/Users/stevedsimkins/.local/share/solana/install/active_release/bin:$PATH" |
|
| 24 | + | set -x BUN_INSTALL "$HOME/.bun" |
|
| 25 | + | set -x PATH "$BUN_INSTALL/bin:$PATH" |
|
| 26 | + | set -x PATH "/opt/homebrew/opt/curl/bin:$PATH" |
|
| 27 | + | set -x IPFS_GATEWAY "https://newonboardingflow.mypinata.cloud" |
|
| 28 | + | # ~/.tmux/plugins |
|
| 29 | + | set -x PATH $HOME/.tmux/plugins/t-smart-tmux-session-manager/bin:$PATH |
|
| 30 | + | # ~/.config/tmux/plugins |
|
| 31 | + | set -x PATH $HOME/.config/tmux/plugins/t-smart-tmux-session-manager/bin:$PATH |
|
| 32 | + | set -x ETHERSCAN_API_KEY $(prs show etherscan/secret) |
|
| 33 | + | set -x OATMEAL_THEME_FILE "/Users/stevedsimkins/.config/oatmeal/black-metal.tmTheme" |
|
| 34 | + | set -x nvm_default_version "20" |
|
| 35 | + | set -x LIBRARY_PATH "$LIBRARY_PATH:/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib" |
|
| 36 | + | set -x PATH "/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib:$PATH" |
|
| 37 | + | set -x PATH "/Users/stevedsimkins/.local/share/solana/install/active_release/bin:$PATH" |
| 1 | - | /Users/stevedylandev/.config/ghostty/config |
|
| 1 | + | font-family = CommitMono Nerd Font |
|
| 2 | + | font-family-bold = CommitMono Nerd Font |
|
| 3 | + | font-family-italic = CommitMono Nerd Font |
|
| 4 | + | font-family-bold-italic = CommitMono Nerd Font |
|
| 5 | + | font-size = 14 |
|
| 6 | + | ||
| 7 | + | confirm-close-surface = false |
|
| 8 | + | clipboard-read = allow |
|
| 9 | + | clipboard-write = allow |
|
| 10 | + | mouse-hide-while-typing = true |
|
| 11 | + | macos-titlebar-style = hidden |
|
| 12 | + | macos-window-shadow = false |
|
| 13 | + | window-padding-x = 6 |
|
| 14 | + | window-padding-balance = true |
|
| 15 | + | window-save-state = always |
|
| 16 | + | window-width = 85 |
|
| 17 | + | window-height = 30 |
|
| 18 | + | ||
| 19 | + | # Icon |
|
| 20 | + | macos-icon = custom-style |
|
| 21 | + | macos-icon-frame = plastic |
|
| 22 | + | macos-icon-screen-color = #000000 |
|
| 23 | + | macos-icon-ghost-color = #E78B52 |
|
| 24 | + | ||
| 25 | + | # Scheme: Black Metal (Bathory) |
|
| 26 | + | # Generated by Ghostty Base16 Converter |
|
| 27 | + | background = #000000 |
|
| 28 | + | foreground = #ffffff |
|
| 29 | + | ||
| 30 | + | selection-background = #222222 |
|
| 31 | + | selection-foreground = #000000 |
|
| 32 | + | ||
| 33 | + | palette = 0=#000000 |
|
| 34 | + | palette = 1=#5f8787 |
|
| 35 | + | palette = 2=#fbcb97 |
|
| 36 | + | palette = 3=#e78a53 |
|
| 37 | + | palette = 4=#888888 |
|
| 38 | + | palette = 5=#999999 |
|
| 39 | + | palette = 6=#aaaaaa |
|
| 40 | + | palette = 7=#c1c1c1 |
|
| 41 | + | palette = 8=#333333 |
|
| 42 | + | palette = 9=#5f8787 |
|
| 43 | + | palette = 10=#fbcb97 |
|
| 44 | + | palette = 11=#e78a53 |
|
| 45 | + | palette = 12=#888888 |
|
| 46 | + | palette = 13=#999999 |
|
| 47 | + | palette = 14=#aaaaaa |
|
| 48 | + | palette = 15=#c1c1c1 |
|
| 49 | + | palette = 16=#aaaaaa |
|
| 50 | + | palette = 17=#444444 |
|
| 51 | + | palette = 18=#121212 |
|
| 52 | + | palette = 19=#222222 |
|
| 53 | + | palette = 20=#999999 |
|
| 54 | + | palette = 21=#999999 |
|
| 55 | + | ||
| 56 | + | auto-update-channel = stable |
|
| 57 | + | click-repeat-interval = 500 |
|
| 58 | + | command = /opt/homebrew/bin/nu |
| 1 | - | /Users/stevedylandev/.config/ghostty/config.bak |
|
| 1 | + | # The font families to use. |
|
| 2 | + | # |
|
| 3 | + | # You can generate the list of valid values using the CLI: |
|
| 4 | + | # |
|
| 5 | + | # ghostty +list-fonts |
|
| 6 | + | # |
|
| 7 | + | # This configuration can be repeated multiple times to specify preferred |
|
| 8 | + | # fallback fonts when the requested codepoint is not available in the primary |
|
| 9 | + | # font. This is particularly useful for multiple languages, symbolic fonts, |
|
| 10 | + | # etc. |
|
| 11 | + | # |
|
| 12 | + | # Notes on emoji specifically: On macOS, Ghostty by default will always use |
|
| 13 | + | # Apple Color Emoji and on Linux will always use Noto Emoji. You can |
|
| 14 | + | # override this behavior by specifying a font family here that contains |
|
| 15 | + | # emoji glyphs. |
|
| 16 | + | # |
|
| 17 | + | # The specific styles (bold, italic, bold italic) do not need to be |
|
| 18 | + | # explicitly set. If a style is not set, then the regular style (font-family) |
|
| 19 | + | # will be searched for stylistic variants. If a stylistic variant is not |
|
| 20 | + | # found, Ghostty will use the regular style. This prevents falling back to a |
|
| 21 | + | # different font family just to get a style such as bold. This also applies |
|
| 22 | + | # if you explicitly specify a font family for a style. For example, if you |
|
| 23 | + | # set `font-family-bold = FooBar` and "FooBar" cannot be found, Ghostty will |
|
| 24 | + | # use whatever font is set for `font-family` for the bold style. |
|
| 25 | + | # |
|
| 26 | + | # Finally, some styles may be synthesized if they are not supported. |
|
| 27 | + | # For example, if a font does not have an italic style and no alternative |
|
| 28 | + | # italic font is specified, Ghostty will synthesize an italic style by |
|
| 29 | + | # applying a slant to the regular style. If you want to disable these |
|
| 30 | + | # synthesized styles then you can use the `font-style` configurations |
|
| 31 | + | # as documented below. |
|
| 32 | + | # |
|
| 33 | + | # You can disable styles completely by using the `font-style` set of |
|
| 34 | + | # configurations. See the documentation for `font-style` for more information. |
|
| 35 | + | # |
|
| 36 | + | # If you want to overwrite a previous set value rather than append a fallback, |
|
| 37 | + | # specify the value as `""` (empty string) to reset the list and then set the |
|
| 38 | + | # new values. For example: |
|
| 39 | + | # |
|
| 40 | + | # font-family = "" |
|
| 41 | + | # font-family = "My Favorite Font" |
|
| 42 | + | # |
|
| 43 | + | # Setting any of these as CLI arguments will automatically clear the |
|
| 44 | + | # values set in configuration files so you don't need to specify |
|
| 45 | + | # `--font-family=""` before setting a new value. You only need to specify |
|
| 46 | + | # this within config files if you want to clear previously set values in |
|
| 47 | + | # configuration files or on the CLI if you want to clear values set on the |
|
| 48 | + | # CLI. |
|
| 49 | + | # |
|
| 50 | + | # Changing this configuration at runtime will only affect new terminals, i.e. |
|
| 51 | + | # new windows, tabs, etc. |
|
| 52 | + | font-family = "CommitMono Nerd Font" |
|
| 53 | + | ||
| 54 | + | font-family-bold = |
|
| 55 | + | font-family-italic = |
|
| 56 | + | font-family-bold-italic = |
|
| 57 | + | ||
| 58 | + | keybind = super+alt+j=toggle_quick_terminal |
|
| 59 | + | ||
| 60 | + | # The named font style to use for each of the requested terminal font styles. |
|
| 61 | + | # This looks up the style based on the font style string advertised by the |
|
| 62 | + | # font itself. For example, "Iosevka Heavy" has a style of "Heavy". |
|
| 63 | + | # |
|
| 64 | + | # You can also use these fields to completely disable a font style. If you set |
|
| 65 | + | # the value of the configuration below to literal `false` then that font style |
|
| 66 | + | # will be disabled. If the running program in the terminal requests a disabled |
|
| 67 | + | # font style, the regular font style will be used instead. |
|
| 68 | + | # |
|
| 69 | + | # These are only valid if its corresponding font-family is also specified. If |
|
| 70 | + | # no font-family is specified, then the font-style is ignored unless you're |
|
| 71 | + | # disabling the font style. |
|
| 72 | + | font-style = default |
|
| 73 | + | ||
| 74 | + | font-style-bold = default |
|
| 75 | + | font-style-italic = default |
|
| 76 | + | font-style-bold-italic = default |
|
| 77 | + | # Control whether Ghostty should synthesize a style if the requested style is |
|
| 78 | + | # not available in the specified font-family. |
|
| 79 | + | # |
|
| 80 | + | # Ghostty can synthesize bold, italic, and bold italic styles if the font |
|
| 81 | + | # does not have a specific style. For bold, this is done by drawing an |
|
| 82 | + | # outline around the glyph of varying thickness. For italic, this is done by |
|
| 83 | + | # applying a slant to the glyph. For bold italic, both of these are applied. |
|
| 84 | + | # |
|
| 85 | + | # Synthetic styles are not perfect and will generally not look as good |
|
| 86 | + | # as a font that has the style natively. However, they are useful to |
|
| 87 | + | # provide styled text when the font does not have the style. |
|
| 88 | + | # |
|
| 89 | + | # Set this to "false" or "true" to disable or enable synthetic styles |
|
| 90 | + | # completely. You can disable specific styles using "no-bold", "no-italic", |
|
| 91 | + | # and "no-bold-italic". You can disable multiple styles by separating them |
|
| 92 | + | # with a comma. For example, "no-bold,no-italic". |
|
| 93 | + | # |
|
| 94 | + | # Available style keys are: `bold`, `italic`, `bold-italic`. |
|
| 95 | + | # |
|
| 96 | + | # If synthetic styles are disabled, then the regular style will be used |
|
| 97 | + | # instead if the requested style is not available. If the font has the |
|
| 98 | + | # requested style, then the font will be used as-is since the style is |
|
| 99 | + | # not synthetic. |
|
| 100 | + | # |
|
| 101 | + | # Warning: An easy mistake is to disable `bold` or `italic` but not |
|
| 102 | + | # `bold-italic`. Disabling only `bold` or `italic` will NOT disable either |
|
| 103 | + | # in the `bold-italic` style. If you want to disable `bold-italic`, you must |
|
| 104 | + | # explicitly disable it. You cannot partially disable `bold-italic`. |
|
| 105 | + | # |
|
| 106 | + | # By default, synthetic styles are enabled. |
|
| 107 | + | font-synthetic-style = bold,italic,bold-italic |
|
| 108 | + | ||
| 109 | + | # Apply a font feature. This can be repeated multiple times to enable multiple |
|
| 110 | + | # font features. You can NOT set multiple font features with a single value |
|
| 111 | + | # (yet). |
|
| 112 | + | # |
|
| 113 | + | # The font feature will apply to all fonts rendered by Ghostty. A future |
|
| 114 | + | # enhancement will allow targeting specific faces. |
|
| 115 | + | # |
|
| 116 | + | # A valid value is the name of a feature. Prefix the feature with a `-` to |
|
| 117 | + | # explicitly disable it. Example: `ss20` or `-ss20`. |
|
| 118 | + | # |
|
| 119 | + | # To disable programming ligatures, use `-calt` since this is the typical |
|
| 120 | + | # feature name for programming ligatures. To look into what font features |
|
| 121 | + | # your font has and what they do, use a font inspection tool such as |
|
| 122 | + | # [fontdrop.info](https://fontdrop.info). |
|
| 123 | + | # |
|
| 124 | + | # To generally disable most ligatures, use `-calt`, `-liga`, and `-dlig` (as |
|
| 125 | + | # separate repetitive entries in your config). |
|
| 126 | + | font-feature = |
|
| 127 | + | ||
| 128 | + | # Font size in points. This value can be a non-integer and the nearest integer |
|
| 129 | + | # pixel size will be selected. If you have a high dpi display where 1pt = 2px |
|
| 130 | + | # then you can get an odd numbered pixel size by specifying a half point. |
|
| 131 | + | # |
|
| 132 | + | # For example, 13.5pt @ 2px/pt = 27px |
|
| 133 | + | # |
|
| 134 | + | # Changing this configuration at runtime will only affect new terminals, |
|
| 135 | + | # i.e. new windows, tabs, etc. Note that you may still not see the change |
|
| 136 | + | # depending on your `window-inherit-font-size` setting. If that setting is |
|
| 137 | + | # true, only the first window will be affected by this change since all |
|
| 138 | + | # subsequent windows will inherit the font size of the previous window. |
|
| 139 | + | font-size = 13 |
|
| 140 | + | ||
| 141 | + | # A repeatable configuration to set one or more font variations values for |
|
| 142 | + | # a variable font. A variable font is a single font, usually with a filename |
|
| 143 | + | # ending in `-VF.ttf` or `-VF.otf` that contains one or more configurable axes |
|
| 144 | + | # for things such as weight, slant, etc. Not all fonts support variations; |
|
| 145 | + | # only fonts that explicitly state they are variable fonts will work. |
|
| 146 | + | # |
|
| 147 | + | # The format of this is `id=value` where `id` is the axis identifier. An axis |
|
| 148 | + | # identifier is always a 4 character string, such as `wght`. To get the list |
|
| 149 | + | # of supported axes, look at your font documentation or use a font inspection |
|
| 150 | + | # tool. |
|
| 151 | + | # |
|
| 152 | + | # Invalid ids and values are usually ignored. For example, if a font only |
|
| 153 | + | # supports weights from 100 to 700, setting `wght=800` will do nothing (it |
|
| 154 | + | # will not be clamped to 700). You must consult your font's documentation to |
|
| 155 | + | # see what values are supported. |
|
| 156 | + | # |
|
| 157 | + | # Common axes are: `wght` (weight), `slnt` (slant), `ital` (italic), `opsz` |
|
| 158 | + | # (optical size), `wdth` (width), `GRAD` (gradient), etc. |
|
| 159 | + | font-variation = |
|
| 160 | + | ||
| 161 | + | font-variation-bold = |
|
| 162 | + | font-variation-italic = |
|
| 163 | + | font-variation-bold-italic = |
|
| 164 | + | # Force one or a range of Unicode codepoints to map to a specific named font. |
|
| 165 | + | # This is useful if you want to support special symbols or if you want to use |
|
| 166 | + | # specific glyphs that render better for your specific font. |
|
| 167 | + | # |
|
| 168 | + | # The syntax is `codepoint=fontname` where `codepoint` is either a single |
|
| 169 | + | # codepoint or a range. Codepoints must be specified as full Unicode |
|
| 170 | + | # hex values, such as `U+ABCD`. Codepoints ranges are specified as |
|
| 171 | + | # `U+ABCD-U+DEFG`. You can specify multiple ranges for the same font separated |
|
| 172 | + | # by commas, such as `U+ABCD-U+DEFG,U+1234-U+5678=fontname`. The font name is |
|
| 173 | + | # the same value as you would use for `font-family`. |
|
| 174 | + | # |
|
| 175 | + | # This configuration can be repeated multiple times to specify multiple |
|
| 176 | + | # codepoint mappings. |
|
| 177 | + | # |
|
| 178 | + | # Changing this configuration at runtime will only affect new terminals, |
|
| 179 | + | # i.e. new windows, tabs, etc. |
|
| 180 | + | font-codepoint-map = |
|
| 181 | + | ||
| 182 | + | # Draw fonts with a thicker stroke, if supported. This is only supported |
|
| 183 | + | # currently on macOS. |
|
| 184 | + | font-thicken = false |
|
| 185 | + | ||
| 186 | + | # All of the configurations behavior adjust various metrics determined by the |
|
| 187 | + | # font. The values can be integers (1, -1, etc.) or a percentage (20%, -15%, |
|
| 188 | + | # etc.). In each case, the values represent the amount to change the original |
|
| 189 | + | # value. |
|
| 190 | + | # |
|
| 191 | + | # For example, a value of `1` increases the value by 1; it does not set it to |
|
| 192 | + | # literally 1. A value of `20%` increases the value by 20%. And so on. |
|
| 193 | + | # |
|
| 194 | + | # There is little to no validation on these values so the wrong values (i.e. |
|
| 195 | + | # `-100%`) can cause the terminal to be unusable. Use with caution and reason. |
|
| 196 | + | # |
|
| 197 | + | # Some values are clamped to minimum or maximum values. This can make it |
|
| 198 | + | # appear that certain values are ignored. For example, many `*-thickness` |
|
| 199 | + | # adjustments cannot go below 1px. |
|
| 200 | + | # |
|
| 201 | + | # `adjust-cell-height` has some additional behaviors to describe: |
|
| 202 | + | # |
|
| 203 | + | # * The font will be centered vertically in the cell. |
|
| 204 | + | # |
|
| 205 | + | # * The cursor will remain the same size as the font, but may be |
|
| 206 | + | # adjusted separately with `adjust-cursor-height`. |
|
| 207 | + | # |
|
| 208 | + | # * Powerline glyphs will be adjusted along with the cell height so |
|
| 209 | + | # that things like status lines continue to look aligned. |
|
| 210 | + | adjust-cell-width = |
|
| 211 | + | ||
| 212 | + | adjust-cell-height = |
|
| 213 | + | # Distance in pixels from the bottom of the cell to the text baseline. |
|
| 214 | + | # Increase to move baseline UP, decrease to move baseline DOWN. |
|
| 215 | + | adjust-font-baseline = |
|
| 216 | + | ||
| 217 | + | # Distance in pixels from the top of the cell to the top of the underline. |
|
| 218 | + | # Increase to move underline DOWN, decrease to move underline UP. |
|
| 219 | + | adjust-underline-position = |
|
| 220 | + | ||
| 221 | + | # Thickness in pixels of the underline. |
|
| 222 | + | adjust-underline-thickness = |
|
| 223 | + | ||
| 224 | + | # Distance in pixels from the top of the cell to the top of the strikethrough. |
|
| 225 | + | # Increase to move strikethrough DOWN, decrease to move underline UP. |
|
| 226 | + | adjust-strikethrough-position = |
|
| 227 | + | ||
| 228 | + | # Thickness in pixels of the strikethrough. |
|
| 229 | + | adjust-strikethrough-thickness = |
|
| 230 | + | ||
| 231 | + | # Distance in pixels from the top of the cell to the top of the overline. |
|
| 232 | + | # Increase to move overline DOWN, decrease to move underline UP. |
|
| 233 | + | adjust-overline-position = |
|
| 234 | + | ||
| 235 | + | # Thickness in pixels of the overline. |
|
| 236 | + | adjust-overline-thickness = |
|
| 237 | + | ||
| 238 | + | # Thickness in pixels of the bar cursor and outlined rect cursor. |
|
| 239 | + | adjust-cursor-thickness = |
|
| 240 | + | ||
| 241 | + | # Height in pixels of the cursor. Currently applies to all cursor types: |
|
| 242 | + | # bar, rect, and outlined rect. |
|
| 243 | + | adjust-cursor-height = |
|
| 244 | + | ||
| 245 | + | # Thickness in pixels of box drawing characters. |
|
| 246 | + | adjust-box-thickness = |
|
| 247 | + | ||
| 248 | + | # The method to use for calculating the cell width of a grapheme cluster. |
|
| 249 | + | # The default value is `unicode` which uses the Unicode standard to determine |
|
| 250 | + | # grapheme width. This results in correct grapheme width but may result in |
|
| 251 | + | # cursor-desync issues with some programs (such as shells) that may use a |
|
| 252 | + | # legacy method such as `wcswidth`. |
|
| 253 | + | # |
|
| 254 | + | # Valid values are: |
|
| 255 | + | # |
|
| 256 | + | # * `legacy` - Use a legacy method to determine grapheme width, such as |
|
| 257 | + | # wcswidth This maximizes compatibility with legacy programs but may result |
|
| 258 | + | # in incorrect grapheme width for certain graphemes such as skin-tone |
|
| 259 | + | # emoji, non-English characters, etc. |
|
| 260 | + | # |
|
| 261 | + | # This is called "legacy" and not something more specific because the |
|
| 262 | + | # behavior is undefined and we want to retain the ability to modify it. |
|
| 263 | + | # For example, we may or may not use libc `wcswidth` now or in the future. |
|
| 264 | + | # |
|
| 265 | + | # * `unicode` - Use the Unicode standard to determine grapheme width. |
|
| 266 | + | # |
|
| 267 | + | # If a running program explicitly enables terminal mode 2027, then `unicode` |
|
| 268 | + | # width will be forced regardless of this configuration. When mode 2027 is |
|
| 269 | + | # reset, this configuration will be used again. |
|
| 270 | + | # |
|
| 271 | + | # This configuration can be changed at runtime but will not affect existing |
|
| 272 | + | # terminals. Only new terminals will use the new configuration. |
|
| 273 | + | grapheme-width-method = unicode |
|
| 274 | + | ||
| 275 | + | # FreeType load flags to enable. The format of this is a list of flags to |
|
| 276 | + | # enable separated by commas. If you prefix a flag with `no-` then it is |
|
| 277 | + | # disabled. If you omit a flag, it's default value is used, so you must |
|
| 278 | + | # explicitly disable flags you don't want. You can also use `true` or `false` |
|
| 279 | + | # to turn all flags on or off. |
|
| 280 | + | # |
|
| 281 | + | # This configuration only applies to Ghostty builds that use FreeType. |
|
| 282 | + | # This is usually the case only for Linux builds. macOS uses CoreText |
|
| 283 | + | # and does not have an equivalent configuration. |
|
| 284 | + | # |
|
| 285 | + | # Available flags: |
|
| 286 | + | # |
|
| 287 | + | # * `hinting` - Enable or disable hinting, enabled by default. |
|
| 288 | + | # * `force-autohint` - Use the freetype auto-hinter rather than the |
|
| 289 | + | # font's native hinter. Enabled by default. |
|
| 290 | + | # * `monochrome` - Instructs renderer to use 1-bit monochrome |
|
| 291 | + | # rendering. This option doesn't impact the hinter. |
|
| 292 | + | # Enabled by default. |
|
| 293 | + | # * `autohint` - Use the freetype auto-hinter. Enabled by default. |
|
| 294 | + | # |
|
| 295 | + | # Example: `hinting`, `no-hinting`, `force-autohint`, `no-force-autohint` |
|
| 296 | + | freetype-load-flags = hinting,force-autohint,monochrome,autohint |
|
| 297 | + | ||
| 298 | + | # A theme to use. This can be a built-in theme name, a custom theme |
|
| 299 | + | # name, or an absolute path to a custom theme file. Ghostty also supports |
|
| 300 | + | # specifying a different theme to use for light and dark mode. Each |
|
| 301 | + | # option is documented below. |
|
| 302 | + | # |
|
| 303 | + | # If the theme is an absolute pathname, Ghostty will attempt to load that |
|
| 304 | + | # file as a theme. If that file does not exist or is inaccessible, an error |
|
| 305 | + | # will be logged and no other directories will be searched. |
|
| 306 | + | # |
|
| 307 | + | # If the theme is not an absolute pathname, two different directories will be |
|
| 308 | + | # searched for a file name that matches the theme. This is case sensitive on |
|
| 309 | + | # systems with case-sensitive filesystems. It is an error for a theme name to |
|
| 310 | + | # include path separators unless it is an absolute pathname. |
|
| 311 | + | # |
|
| 312 | + | # The first directory is the `themes` subdirectory of your Ghostty |
|
| 313 | + | # configuration directory. This is `$XDG_CONFIG_DIR/ghostty/themes` or |
|
| 314 | + | # `~/.config/ghostty/themes`. |
|
| 315 | + | # |
|
| 316 | + | # The second directory is the `themes` subdirectory of the Ghostty resources |
|
| 317 | + | # directory. Ghostty ships with a multitude of themes that will be installed |
|
| 318 | + | # into this directory. On macOS, this list is in the `Ghostty.app/Contents/ |
|
| 319 | + | # Resources/ghostty/themes` directory. On Linux, this list is in the `share/ |
|
| 320 | + | # ghostty/themes` directory (wherever you installed the Ghostty "share" |
|
| 321 | + | # directory. |
|
| 322 | + | # |
|
| 323 | + | # To see a list of available themes, run `ghostty +list-themes`. |
|
| 324 | + | # |
|
| 325 | + | # A theme file is simply another Ghostty configuration file. They share |
|
| 326 | + | # the same syntax and same configuration options. A theme can set any valid |
|
| 327 | + | # configuration option so please do not use a theme file from an untrusted |
|
| 328 | + | # source. The built-in themes are audited to only set safe configuration |
|
| 329 | + | # options. |
|
| 330 | + | # |
|
| 331 | + | # Some options cannot be set within theme files. The reason these are not |
|
| 332 | + | # supported should be self-evident. A theme file cannot set `theme` or |
|
| 333 | + | # `config-file`. At the time of writing this, Ghostty will not show any |
|
| 334 | + | # warnings or errors if you set these options in a theme file but they will |
|
| 335 | + | # be silently ignored. |
|
| 336 | + | # |
|
| 337 | + | # Any additional colors specified via background, foreground, palette, etc. |
|
| 338 | + | # will override the colors specified in the theme. |
|
| 339 | + | # |
|
| 340 | + | # To specify a different theme for light and dark mode, use the following |
|
| 341 | + | # syntax: `light:theme-name,dark:theme-name`. For example: |
|
| 342 | + | # `light:rose-pine-dawn,dark:rose-pine`. Whitespace around all values are |
|
| 343 | + | # trimmed and order of light and dark does not matter. Both light and dark |
|
| 344 | + | # must be specified in this form. In this form, the theme used will be |
|
| 345 | + | # based on the current desktop environment theme. |
|
| 346 | + | # |
|
| 347 | + | # There are some known bugs with light/dark mode theming. These will |
|
| 348 | + | # be fixed in a future update: |
|
| 349 | + | # |
|
| 350 | + | # - macOS: titlebar tabs style is not updated when switching themes. |
|
| 351 | + | # |
|
| 352 | + | theme = |
|
| 353 | + | ||
| 354 | + | # Background color for the window. |
|
| 355 | + | background = #282c34 |
|
| 356 | + | ||
| 357 | + | # Foreground color for the window. |
|
| 358 | + | foreground = #ffffff |
|
| 359 | + | ||
| 360 | + | # The foreground and background color for selection. If this is not set, then |
|
| 361 | + | # the selection color is just the inverted window background and foreground |
|
| 362 | + | # (note: not to be confused with the cell bg/fg). |
|
| 363 | + | selection-foreground = |
|
| 364 | + | ||
| 365 | + | selection-background = |
|
| 366 | + | # Swap the foreground and background colors of cells for selection. This |
|
| 367 | + | # option overrides the `selection-foreground` and `selection-background` |
|
| 368 | + | # options. |
|
| 369 | + | # |
|
| 370 | + | # If you select across cells with differing foregrounds and backgrounds, the |
|
| 371 | + | # selection color will vary across the selection. |
|
| 372 | + | selection-invert-fg-bg = false |
|
| 373 | + | ||
| 374 | + | # The minimum contrast ratio between the foreground and background colors. |
|
| 375 | + | # The contrast ratio is a value between 1 and 21. A value of 1 allows for no |
|
| 376 | + | # contrast (i.e. black on black). This value is the contrast ratio as defined |
|
| 377 | + | # by the [WCAG 2.0 specification](https://www.w3.org/TR/WCAG20/). |
|
| 378 | + | # |
|
| 379 | + | # If you want to avoid invisible text (same color as background), a value of |
|
| 380 | + | # 1.1 is a good value. If you want to avoid text that is difficult to read, a |
|
| 381 | + | # value of 3 or higher is a good value. The higher the value, the more likely |
|
| 382 | + | # that text will become black or white. |
|
| 383 | + | # |
|
| 384 | + | # This value does not apply to Emoji or images. |
|
| 385 | + | minimum-contrast = 1 |
|
| 386 | + | ||
| 387 | + | # Color palette for the 256 color form that many terminal applications use. |
|
| 388 | + | # The syntax of this configuration is `N=HEXCODE` where `N` is 0 to 255 (for |
|
| 389 | + | # the 256 colors in the terminal color table) and `HEXCODE` is a typical RGB |
|
| 390 | + | # color code such as `#AABBCC`. |
|
| 391 | + | # |
|
| 392 | + | # For definitions on all the codes [see this cheat |
|
| 393 | + | # sheet](https://www.ditig.com/256-colors-cheat-sheet). |
|
| 394 | + | palette = 0=#1d1f21 |
|
| 395 | + | palette = 1=#cc6666 |
|
| 396 | + | palette = 2=#b5bd68 |
|
| 397 | + | palette = 3=#f0c674 |
|
| 398 | + | palette = 4=#81a2be |
|
| 399 | + | palette = 5=#b294bb |
|
| 400 | + | palette = 6=#8abeb7 |
|
| 401 | + | palette = 7=#c5c8c6 |
|
| 402 | + | palette = 8=#666666 |
|
| 403 | + | palette = 9=#d54e53 |
|
| 404 | + | palette = 10=#b9ca4a |
|
| 405 | + | palette = 11=#e7c547 |
|
| 406 | + | palette = 12=#7aa6da |
|
| 407 | + | palette = 13=#c397d8 |
|
| 408 | + | palette = 14=#70c0b1 |
|
| 409 | + | palette = 15=#eaeaea |
|
| 410 | + | palette = 16=#000000 |
|
| 411 | + | palette = 17=#00005f |
|
| 412 | + | palette = 18=#000087 |
|
| 413 | + | palette = 19=#0000af |
|
| 414 | + | palette = 20=#0000d7 |
|
| 415 | + | palette = 21=#0000ff |
|
| 416 | + | palette = 22=#005f00 |
|
| 417 | + | palette = 23=#005f5f |
|
| 418 | + | palette = 24=#005f87 |
|
| 419 | + | palette = 25=#005faf |
|
| 420 | + | palette = 26=#005fd7 |
|
| 421 | + | palette = 27=#005fff |
|
| 422 | + | palette = 28=#008700 |
|
| 423 | + | palette = 29=#00875f |
|
| 424 | + | palette = 30=#008787 |
|
| 425 | + | palette = 31=#0087af |
|
| 426 | + | palette = 32=#0087d7 |
|
| 427 | + | palette = 33=#0087ff |
|
| 428 | + | palette = 34=#00af00 |
|
| 429 | + | palette = 35=#00af5f |
|
| 430 | + | palette = 36=#00af87 |
|
| 431 | + | palette = 37=#00afaf |
|
| 432 | + | palette = 38=#00afd7 |
|
| 433 | + | palette = 39=#00afff |
|
| 434 | + | palette = 40=#00d700 |
|
| 435 | + | palette = 41=#00d75f |
|
| 436 | + | palette = 42=#00d787 |
|
| 437 | + | palette = 43=#00d7af |
|
| 438 | + | palette = 44=#00d7d7 |
|
| 439 | + | palette = 45=#00d7ff |
|
| 440 | + | palette = 46=#00ff00 |
|
| 441 | + | palette = 47=#00ff5f |
|
| 442 | + | palette = 48=#00ff87 |
|
| 443 | + | palette = 49=#00ffaf |
|
| 444 | + | palette = 50=#00ffd7 |
|
| 445 | + | palette = 51=#00ffff |
|
| 446 | + | palette = 52=#5f0000 |
|
| 447 | + | palette = 53=#5f005f |
|
| 448 | + | palette = 54=#5f0087 |
|
| 449 | + | palette = 55=#5f00af |
|
| 450 | + | palette = 56=#5f00d7 |
|
| 451 | + | palette = 57=#5f00ff |
|
| 452 | + | palette = 58=#5f5f00 |
|
| 453 | + | palette = 59=#5f5f5f |
|
| 454 | + | palette = 60=#5f5f87 |
|
| 455 | + | palette = 61=#5f5faf |
|
| 456 | + | palette = 62=#5f5fd7 |
|
| 457 | + | palette = 63=#5f5fff |
|
| 458 | + | palette = 64=#5f8700 |
|
| 459 | + | palette = 65=#5f875f |
|
| 460 | + | palette = 66=#5f8787 |
|
| 461 | + | palette = 67=#5f87af |
|
| 462 | + | palette = 68=#5f87d7 |
|
| 463 | + | palette = 69=#5f87ff |
|
| 464 | + | palette = 70=#5faf00 |
|
| 465 | + | palette = 71=#5faf5f |
|
| 466 | + | palette = 72=#5faf87 |
|
| 467 | + | palette = 73=#5fafaf |
|
| 468 | + | palette = 74=#5fafd7 |
|
| 469 | + | palette = 75=#5fafff |
|
| 470 | + | palette = 76=#5fd700 |
|
| 471 | + | palette = 77=#5fd75f |
|
| 472 | + | palette = 78=#5fd787 |
|
| 473 | + | palette = 79=#5fd7af |
|
| 474 | + | palette = 80=#5fd7d7 |
|
| 475 | + | palette = 81=#5fd7ff |
|
| 476 | + | palette = 82=#5fff00 |
|
| 477 | + | palette = 83=#5fff5f |
|
| 478 | + | palette = 84=#5fff87 |
|
| 479 | + | palette = 85=#5fffaf |
|
| 480 | + | palette = 86=#5fffd7 |
|
| 481 | + | palette = 87=#5fffff |
|
| 482 | + | palette = 88=#870000 |
|
| 483 | + | palette = 89=#87005f |
|
| 484 | + | palette = 90=#870087 |
|
| 485 | + | palette = 91=#8700af |
|
| 486 | + | palette = 92=#8700d7 |
|
| 487 | + | palette = 93=#8700ff |
|
| 488 | + | palette = 94=#875f00 |
|
| 489 | + | palette = 95=#875f5f |
|
| 490 | + | palette = 96=#875f87 |
|
| 491 | + | palette = 97=#875faf |
|
| 492 | + | palette = 98=#875fd7 |
|
| 493 | + | palette = 99=#875fff |
|
| 494 | + | palette = 100=#878700 |
|
| 495 | + | palette = 101=#87875f |
|
| 496 | + | palette = 102=#878787 |
|
| 497 | + | palette = 103=#8787af |
|
| 498 | + | palette = 104=#8787d7 |
|
| 499 | + | palette = 105=#8787ff |
|
| 500 | + | palette = 106=#87af00 |
|
| 501 | + | palette = 107=#87af5f |
|
| 502 | + | palette = 108=#87af87 |
|
| 503 | + | palette = 109=#87afaf |
|
| 504 | + | palette = 110=#87afd7 |
|
| 505 | + | palette = 111=#87afff |
|
| 506 | + | palette = 112=#87d700 |
|
| 507 | + | palette = 113=#87d75f |
|
| 508 | + | palette = 114=#87d787 |
|
| 509 | + | palette = 115=#87d7af |
|
| 510 | + | palette = 116=#87d7d7 |
|
| 511 | + | palette = 117=#87d7ff |
|
| 512 | + | palette = 118=#87ff00 |
|
| 513 | + | palette = 119=#87ff5f |
|
| 514 | + | palette = 120=#87ff87 |
|
| 515 | + | palette = 121=#87ffaf |
|
| 516 | + | palette = 122=#87ffd7 |
|
| 517 | + | palette = 123=#87ffff |
|
| 518 | + | palette = 124=#af0000 |
|
| 519 | + | palette = 125=#af005f |
|
| 520 | + | palette = 126=#af0087 |
|
| 521 | + | palette = 127=#af00af |
|
| 522 | + | palette = 128=#af00d7 |
|
| 523 | + | palette = 129=#af00ff |
|
| 524 | + | palette = 130=#af5f00 |
|
| 525 | + | palette = 131=#af5f5f |
|
| 526 | + | palette = 132=#af5f87 |
|
| 527 | + | palette = 133=#af5faf |
|
| 528 | + | palette = 134=#af5fd7 |
|
| 529 | + | palette = 135=#af5fff |
|
| 530 | + | palette = 136=#af8700 |
|
| 531 | + | palette = 137=#af875f |
|
| 532 | + | palette = 138=#af8787 |
|
| 533 | + | palette = 139=#af87af |
|
| 534 | + | palette = 140=#af87d7 |
|
| 535 | + | palette = 141=#af87ff |
|
| 536 | + | palette = 142=#afaf00 |
|
| 537 | + | palette = 143=#afaf5f |
|
| 538 | + | palette = 144=#afaf87 |
|
| 539 | + | palette = 145=#afafaf |
|
| 540 | + | palette = 146=#afafd7 |
|
| 541 | + | palette = 147=#afafff |
|
| 542 | + | palette = 148=#afd700 |
|
| 543 | + | palette = 149=#afd75f |
|
| 544 | + | palette = 150=#afd787 |
|
| 545 | + | palette = 151=#afd7af |
|
| 546 | + | palette = 152=#afd7d7 |
|
| 547 | + | palette = 153=#afd7ff |
|
| 548 | + | palette = 154=#afff00 |
|
| 549 | + | palette = 155=#afff5f |
|
| 550 | + | palette = 156=#afff87 |
|
| 551 | + | palette = 157=#afffaf |
|
| 552 | + | palette = 158=#afffd7 |
|
| 553 | + | palette = 159=#afffff |
|
| 554 | + | palette = 160=#d70000 |
|
| 555 | + | palette = 161=#d7005f |
|
| 556 | + | palette = 162=#d70087 |
|
| 557 | + | palette = 163=#d700af |
|
| 558 | + | palette = 164=#d700d7 |
|
| 559 | + | palette = 165=#d700ff |
|
| 560 | + | palette = 166=#d75f00 |
|
| 561 | + | palette = 167=#d75f5f |
|
| 562 | + | palette = 168=#d75f87 |
|
| 563 | + | palette = 169=#d75faf |
|
| 564 | + | palette = 170=#d75fd7 |
|
| 565 | + | palette = 171=#d75fff |
|
| 566 | + | palette = 172=#d78700 |
|
| 567 | + | palette = 173=#d7875f |
|
| 568 | + | palette = 174=#d78787 |
|
| 569 | + | palette = 175=#d787af |
|
| 570 | + | palette = 176=#d787d7 |
|
| 571 | + | palette = 177=#d787ff |
|
| 572 | + | palette = 178=#d7af00 |
|
| 573 | + | palette = 179=#d7af5f |
|
| 574 | + | palette = 180=#d7af87 |
|
| 575 | + | palette = 181=#d7afaf |
|
| 576 | + | palette = 182=#d7afd7 |
|
| 577 | + | palette = 183=#d7afff |
|
| 578 | + | palette = 184=#d7d700 |
|
| 579 | + | palette = 185=#d7d75f |
|
| 580 | + | palette = 186=#d7d787 |
|
| 581 | + | palette = 187=#d7d7af |
|
| 582 | + | palette = 188=#d7d7d7 |
|
| 583 | + | palette = 189=#d7d7ff |
|
| 584 | + | palette = 190=#d7ff00 |
|
| 585 | + | palette = 191=#d7ff5f |
|
| 586 | + | palette = 192=#d7ff87 |
|
| 587 | + | palette = 193=#d7ffaf |
|
| 588 | + | palette = 194=#d7ffd7 |
|
| 589 | + | palette = 195=#d7ffff |
|
| 590 | + | palette = 196=#ff0000 |
|
| 591 | + | palette = 197=#ff005f |
|
| 592 | + | palette = 198=#ff0087 |
|
| 593 | + | palette = 199=#ff00af |
|
| 594 | + | palette = 200=#ff00d7 |
|
| 595 | + | palette = 201=#ff00ff |
|
| 596 | + | palette = 202=#ff5f00 |
|
| 597 | + | palette = 203=#ff5f5f |
|
| 598 | + | palette = 204=#ff5f87 |
|
| 599 | + | palette = 205=#ff5faf |
|
| 600 | + | palette = 206=#ff5fd7 |
|
| 601 | + | palette = 207=#ff5fff |
|
| 602 | + | palette = 208=#ff8700 |
|
| 603 | + | palette = 209=#ff875f |
|
| 604 | + | palette = 210=#ff8787 |
|
| 605 | + | palette = 211=#ff87af |
|
| 606 | + | palette = 212=#ff87d7 |
|
| 607 | + | palette = 213=#ff87ff |
|
| 608 | + | palette = 214=#ffaf00 |
|
| 609 | + | palette = 215=#ffaf5f |
|
| 610 | + | palette = 216=#ffaf87 |
|
| 611 | + | palette = 217=#ffafaf |
|
| 612 | + | palette = 218=#ffafd7 |
|
| 613 | + | palette = 219=#ffafff |
|
| 614 | + | palette = 220=#ffd700 |
|
| 615 | + | palette = 221=#ffd75f |
|
| 616 | + | palette = 222=#ffd787 |
|
| 617 | + | palette = 223=#ffd7af |
|
| 618 | + | palette = 224=#ffd7d7 |
|
| 619 | + | palette = 225=#ffd7ff |
|
| 620 | + | palette = 226=#ffff00 |
|
| 621 | + | palette = 227=#ffff5f |
|
| 622 | + | palette = 228=#ffff87 |
|
| 623 | + | palette = 229=#ffffaf |
|
| 624 | + | palette = 230=#ffffd7 |
|
| 625 | + | palette = 231=#ffffff |
|
| 626 | + | palette = 232=#080808 |
|
| 627 | + | palette = 233=#121212 |
|
| 628 | + | palette = 234=#1c1c1c |
|
| 629 | + | palette = 235=#262626 |
|
| 630 | + | palette = 236=#303030 |
|
| 631 | + | palette = 237=#3a3a3a |
|
| 632 | + | palette = 238=#444444 |
|
| 633 | + | palette = 239=#4e4e4e |
|
| 634 | + | palette = 240=#585858 |
|
| 635 | + | palette = 241=#626262 |
|
| 636 | + | palette = 242=#6c6c6c |
|
| 637 | + | palette = 243=#767676 |
|
| 638 | + | palette = 244=#808080 |
|
| 639 | + | palette = 245=#8a8a8a |
|
| 640 | + | palette = 246=#949494 |
|
| 641 | + | palette = 247=#9e9e9e |
|
| 642 | + | palette = 248=#a8a8a8 |
|
| 643 | + | palette = 249=#b2b2b2 |
|
| 644 | + | palette = 250=#bcbcbc |
|
| 645 | + | palette = 251=#c6c6c6 |
|
| 646 | + | palette = 252=#d0d0d0 |
|
| 647 | + | palette = 253=#dadada |
|
| 648 | + | palette = 254=#e4e4e4 |
|
| 649 | + | palette = 255=#eeeeee |
|
| 650 | + | ||
| 651 | + | # The color of the cursor. If this is not set, a default will be chosen. |
|
| 652 | + | cursor-color = |
|
| 653 | + | ||
| 654 | + | # Swap the foreground and background colors of the cell under the cursor. This |
|
| 655 | + | # option overrides the `cursor-color` and `cursor-text` options. |
|
| 656 | + | cursor-invert-fg-bg = false |
|
| 657 | + | ||
| 658 | + | # The opacity level (opposite of transparency) of the cursor. A value of 1 |
|
| 659 | + | # is fully opaque and a value of 0 is fully transparent. A value less than 0 |
|
| 660 | + | # or greater than 1 will be clamped to the nearest valid value. Note that a |
|
| 661 | + | # sufficiently small value such as 0.3 may be effectively invisible and may |
|
| 662 | + | # make it difficult to find the cursor. |
|
| 663 | + | cursor-opacity = 1 |
|
| 664 | + | ||
| 665 | + | # The style of the cursor. This sets the default style. A running program can |
|
| 666 | + | # still request an explicit cursor style using escape sequences (such as `CSI |
|
| 667 | + | # q`). Shell configurations will often request specific cursor styles. |
|
| 668 | + | # |
|
| 669 | + | # Note that shell integration will automatically set the cursor to a bar at |
|
| 670 | + | # a prompt, regardless of this configuration. You can disable that behavior |
|
| 671 | + | # by specifying `shell-integration-features = no-cursor` or disabling shell |
|
| 672 | + | # integration entirely. |
|
| 673 | + | # |
|
| 674 | + | # Valid values are: |
|
| 675 | + | # |
|
| 676 | + | # * `block` |
|
| 677 | + | # * `bar` |
|
| 678 | + | # * `underline` |
|
| 679 | + | # * `block_hollow` |
|
| 680 | + | # |
|
| 681 | + | cursor-style = block |
|
| 682 | + | ||
| 683 | + | # Sets the default blinking state of the cursor. This is just the default |
|
| 684 | + | # state; running programs may override the cursor style using `DECSCUSR` (`CSI |
|
| 685 | + | # q`). |
|
| 686 | + | # |
|
| 687 | + | # If this is not set, the cursor blinks by default. Note that this is not the |
|
| 688 | + | # same as a "true" value, as noted below. |
|
| 689 | + | # |
|
| 690 | + | # If this is not set at all (`null`), then Ghostty will respect DEC Mode 12 |
|
| 691 | + | # (AT&T cursor blink) as an alternate approach to turning blinking on/off. If |
|
| 692 | + | # this is set to any value other than null, DEC mode 12 will be ignored but |
|
| 693 | + | # `DECSCUSR` will still be respected. |
|
| 694 | + | # |
|
| 695 | + | # Valid values are: |
|
| 696 | + | # |
|
| 697 | + | # * `` (blank) |
|
| 698 | + | # * `true` |
|
| 699 | + | # * `false` |
|
| 700 | + | # |
|
| 701 | + | cursor-style-blink = |
|
| 702 | + | ||
| 703 | + | # The color of the text under the cursor. If this is not set, a default will |
|
| 704 | + | # be chosen. |
|
| 705 | + | cursor-text = |
|
| 706 | + | ||
| 707 | + | # Enables the ability to move the cursor at prompts by using `alt+click` on |
|
| 708 | + | # Linux and `option+click` on macOS. |
|
| 709 | + | # |
|
| 710 | + | # This feature requires shell integration (specifically prompt marking |
|
| 711 | + | # via `OSC 133`) and only works in primary screen mode. Alternate screen |
|
| 712 | + | # applications like vim usually have their own version of this feature but |
|
| 713 | + | # this configuration doesn't control that. |
|
| 714 | + | # |
|
| 715 | + | # It should be noted that this feature works by translating your desired |
|
| 716 | + | # position into a series of synthetic arrow key movements, so some weird |
|
| 717 | + | # behavior around edge cases are to be expected. This is unfortunately how |
|
| 718 | + | # this feature is implemented across terminals because there isn't any other |
|
| 719 | + | # way to implement it. |
|
| 720 | + | cursor-click-to-move = true |
|
| 721 | + | ||
| 722 | + | # Hide the mouse immediately when typing. The mouse becomes visible again |
|
| 723 | + | # when the mouse is used (button, movement, etc.). Platform-specific behavior |
|
| 724 | + | # may dictate other scenarios where the mouse is shown. For example on macOS, |
|
| 725 | + | # the mouse is shown again when a new window, tab, or split is created. |
|
| 726 | + | mouse-hide-while-typing = false |
|
| 727 | + | ||
| 728 | + | # Determines whether running programs can detect the shift key pressed with a |
|
| 729 | + | # mouse click. Typically, the shift key is used to extend mouse selection. |
|
| 730 | + | # |
|
| 731 | + | # The default value of `false` means that the shift key is not sent with |
|
| 732 | + | # the mouse protocol and will extend the selection. This value can be |
|
| 733 | + | # conditionally overridden by the running program with the `XTSHIFTESCAPE` |
|
| 734 | + | # sequence. |
|
| 735 | + | # |
|
| 736 | + | # The value `true` means that the shift key is sent with the mouse protocol |
|
| 737 | + | # but the running program can override this behavior with `XTSHIFTESCAPE`. |
|
| 738 | + | # |
|
| 739 | + | # The value `never` is the same as `false` but the running program cannot |
|
| 740 | + | # override this behavior with `XTSHIFTESCAPE`. The value `always` is the |
|
| 741 | + | # same as `true` but the running program cannot override this behavior with |
|
| 742 | + | # `XTSHIFTESCAPE`. |
|
| 743 | + | # |
|
| 744 | + | # If you always want shift to extend mouse selection even if the program |
|
| 745 | + | # requests otherwise, set this to `never`. |
|
| 746 | + | # |
|
| 747 | + | # Valid values are: |
|
| 748 | + | # |
|
| 749 | + | # * `true` |
|
| 750 | + | # * `false` |
|
| 751 | + | # * `always` |
|
| 752 | + | # * `never` |
|
| 753 | + | # |
|
| 754 | + | mouse-shift-capture = false |
|
| 755 | + | ||
| 756 | + | # Multiplier for scrolling distance with the mouse wheel. Any value less |
|
| 757 | + | # than 0.01 or greater than 10,000 will be clamped to the nearest valid |
|
| 758 | + | # value. |
|
| 759 | + | # |
|
| 760 | + | # A value of "1" (default) scrolls te default amount. A value of "2" scrolls |
|
| 761 | + | # double the default amount. A value of "0.5" scrolls half the default amount. |
|
| 762 | + | # Et cetera. |
|
| 763 | + | mouse-scroll-multiplier = 1 |
|
| 764 | + | ||
| 765 | + | # The opacity level (opposite of transparency) of the background. A value of |
|
| 766 | + | # 1 is fully opaque and a value of 0 is fully transparent. A value less than 0 |
|
| 767 | + | # or greater than 1 will be clamped to the nearest valid value. |
|
| 768 | + | # |
|
| 769 | + | # On macOS, background opacity is disabled when the terminal enters native |
|
| 770 | + | # fullscreen. This is because the background becomes gray and it can cause |
|
| 771 | + | # widgets to show through which isn't generally desirable. |
|
| 772 | + | background-opacity = 1 |
|
| 773 | + | ||
| 774 | + | # A positive value enables blurring of the background when background-opacity |
|
| 775 | + | # is less than 1. The value is the blur radius to apply. A value of 20 |
|
| 776 | + | # is reasonable for a good looking blur. Higher values will cause strange |
|
| 777 | + | # rendering issues as well as performance issues. |
|
| 778 | + | # |
|
| 779 | + | # This is only supported on macOS. |
|
| 780 | + | background-blur-radius = 0 |
|
| 781 | + | ||
| 782 | + | # The opacity level (opposite of transparency) of an unfocused split. |
|
| 783 | + | # Unfocused splits by default are slightly faded out to make it easier to see |
|
| 784 | + | # which split is focused. To disable this feature, set this value to 1. |
|
| 785 | + | # |
|
| 786 | + | # A value of 1 is fully opaque and a value of 0 is fully transparent. Because |
|
| 787 | + | # "0" is not useful (it makes the window look very weird), the minimum value |
|
| 788 | + | # is 0.15. This value still looks weird but you can at least see what's going |
|
| 789 | + | # on. A value outside of the range 0.15 to 1 will be clamped to the nearest |
|
| 790 | + | # valid value. |
|
| 791 | + | unfocused-split-opacity = 0.7 |
|
| 792 | + | ||
| 793 | + | # The color to dim the unfocused split. Unfocused splits are dimmed by |
|
| 794 | + | # rendering a semi-transparent rectangle over the split. This sets the color of |
|
| 795 | + | # that rectangle and can be used to carefully control the dimming effect. |
|
| 796 | + | # |
|
| 797 | + | # This will default to the background color. |
|
| 798 | + | unfocused-split-fill = |
|
| 799 | + | ||
| 800 | + | # The command to run, usually a shell. If this is not an absolute path, it'll |
|
| 801 | + | # be looked up in the `PATH`. If this is not set, a default will be looked up |
|
| 802 | + | # from your system. The rules for the default lookup are: |
|
| 803 | + | # |
|
| 804 | + | # * `SHELL` environment variable |
|
| 805 | + | # |
|
| 806 | + | # * `passwd` entry (user information) |
|
| 807 | + | # |
|
| 808 | + | # This can contain additional arguments to run the command with. If additional |
|
| 809 | + | # arguments are provided, the command will be executed using `/bin/sh -c`. |
|
| 810 | + | # Ghostty does not do any shell command parsing. |
|
| 811 | + | # |
|
| 812 | + | # This command will be used for all new terminal surfaces, i.e. new windows, |
|
| 813 | + | # tabs, etc. If you want to run a command only for the first terminal surface |
|
| 814 | + | # created when Ghostty starts, use the `initial-command` configuration. |
|
| 815 | + | # |
|
| 816 | + | # Ghostty supports the common `-e` flag for executing a command with |
|
| 817 | + | # arguments. For example, `ghostty -e fish --with --custom --args`. |
|
| 818 | + | # This flag sets the `initial-command` configuration, see that for more |
|
| 819 | + | # information. |
|
| 820 | + | command = |
|
| 821 | + | ||
| 822 | + | # This is the same as "command", but only applies to the first terminal |
|
| 823 | + | # surface created when Ghostty starts. Subsequent terminal surfaces will use |
|
| 824 | + | # the `command` configuration. |
|
| 825 | + | # |
|
| 826 | + | # After the first terminal surface is created (or closed), there is no |
|
| 827 | + | # way to run this initial command again automatically. As such, setting |
|
| 828 | + | # this at runtime works but will only affect the next terminal surface |
|
| 829 | + | # if it is the first one ever created. |
|
| 830 | + | # |
|
| 831 | + | # If you're using the `ghostty` CLI there is also a shortcut to set this |
|
| 832 | + | # with arguments directly: you can use the `-e` flag. For example: `ghostty -e |
|
| 833 | + | # fish --with --custom --args`. The `-e` flag automatically forces some |
|
| 834 | + | # other behaviors as well: |
|
| 835 | + | # |
|
| 836 | + | # * `gtk-single-instance=false` - This ensures that a new instance is |
|
| 837 | + | # launched and the CLI args are respected. |
|
| 838 | + | # |
|
| 839 | + | # * `quit-after-last-window-closed=true` - This ensures that the Ghostty |
|
| 840 | + | # process will exit when the command exits. Additionally, the |
|
| 841 | + | # `quit-after-last-window-closed-delay` is unset. |
|
| 842 | + | # |
|
| 843 | + | # * `shell-integration=detect` (if not `none`) - This prevents forcibly |
|
| 844 | + | # injecting any configured shell integration into the command's |
|
| 845 | + | # environment. With `-e` its highly unlikely that you're executing a |
|
| 846 | + | # shell and forced shell integration is likely to cause problems |
|
| 847 | + | # (i.e. by wrapping your command in a shell, setting env vars, etc.). |
|
| 848 | + | # This is a safety measure to prevent unexpected behavior. If you want |
|
| 849 | + | # shell integration with a `-e`-executed command, you must either |
|
| 850 | + | # name your binary appopriately or source the shell integration script |
|
| 851 | + | # manually. |
|
| 852 | + | # |
|
| 853 | + | initial-command = |
|
| 854 | + | ||
| 855 | + | # If true, keep the terminal open after the command exits. Normally, the |
|
| 856 | + | # terminal window closes when the running command (such as a shell) exits. |
|
| 857 | + | # With this true, the terminal window will stay open until any keypress is |
|
| 858 | + | # received. |
|
| 859 | + | # |
|
| 860 | + | # This is primarily useful for scripts or debugging. |
|
| 861 | + | wait-after-command = false |
|
| 862 | + | ||
| 863 | + | # The number of milliseconds of runtime below which we consider a process exit |
|
| 864 | + | # to be abnormal. This is used to show an error message when the process exits |
|
| 865 | + | # too quickly. |
|
| 866 | + | # |
|
| 867 | + | # On Linux, this must be paired with a non-zero exit code. On macOS, we allow |
|
| 868 | + | # any exit code because of the way shell processes are launched via the login |
|
| 869 | + | # command. |
|
| 870 | + | abnormal-command-exit-runtime = 250 |
|
| 871 | + | ||
| 872 | + | # The size of the scrollback buffer in bytes. This also includes the active |
|
| 873 | + | # screen. No matter what this is set to, enough memory will always be |
|
| 874 | + | # allocated for the visible screen and anything leftover is the limit for |
|
| 875 | + | # the scrollback. |
|
| 876 | + | # |
|
| 877 | + | # When this limit is reached, the oldest lines are removed from the |
|
| 878 | + | # scrollback. |
|
| 879 | + | # |
|
| 880 | + | # Scrollback currently exists completely in memory. This means that the |
|
| 881 | + | # larger this value, the larger potential memory usage. Scrollback is |
|
| 882 | + | # allocated lazily up to this limit, so if you set this to a very large |
|
| 883 | + | # value, it will not immediately consume a lot of memory. |
|
| 884 | + | # |
|
| 885 | + | # This size is per terminal surface, not for the entire application. |
|
| 886 | + | # |
|
| 887 | + | # It is not currently possible to set an unlimited scrollback buffer. |
|
| 888 | + | # This is a future planned feature. |
|
| 889 | + | # |
|
| 890 | + | # This can be changed at runtime but will only affect new terminal surfaces. |
|
| 891 | + | scrollback-limit = 10000000 |
|
| 892 | + | ||
| 893 | + | # Match a regular expression against the terminal text and associate clicking |
|
| 894 | + | # it with an action. This can be used to match URLs, file paths, etc. Actions |
|
| 895 | + | # can be opening using the system opener (i.e. `open` or `xdg-open`) or |
|
| 896 | + | # executing any arbitrary binding action. |
|
| 897 | + | # |
|
| 898 | + | # Links that are configured earlier take precedence over links that are |
|
| 899 | + | # configured later. |
|
| 900 | + | # |
|
| 901 | + | # A default link that matches a URL and opens it in the system opener always |
|
| 902 | + | # exists. This can be disabled using `link-url`. |
|
| 903 | + | # |
|
| 904 | + | # TODO: This can't currently be set! |
|
| 905 | + | ||
| 906 | + | # Enable URL matching. URLs are matched on hover with control (Linux) or |
|
| 907 | + | # super (macOS) pressed and open using the default system application for |
|
| 908 | + | # the linked URL. |
|
| 909 | + | # |
|
| 910 | + | # The URL matcher is always lowest priority of any configured links (see |
|
| 911 | + | # `link`). If you want to customize URL matching, use `link` and disable this. |
|
| 912 | + | link-url = true |
|
| 913 | + | ||
| 914 | + | # Start new windows in fullscreen. This setting applies to new windows and |
|
| 915 | + | # does not apply to tabs, splits, etc. However, this setting will apply to all |
|
| 916 | + | # new windows, not just the first one. |
|
| 917 | + | # |
|
| 918 | + | # On macOS, this setting does not work if window-decoration is set to |
|
| 919 | + | # "false", because native fullscreen on macOS requires window decorations |
|
| 920 | + | # to be set. |
|
| 921 | + | fullscreen = false |
|
| 922 | + | ||
| 923 | + | # The title Ghostty will use for the window. This will force the title of the |
|
| 924 | + | # window to be this title at all times and Ghostty will ignore any set title |
|
| 925 | + | # escape sequences programs (such as Neovim) may send. |
|
| 926 | + | # |
|
| 927 | + | # If you want a blank title, set this to one or more spaces by quoting |
|
| 928 | + | # the value. For example, `title = " "`. This effectively hides the title. |
|
| 929 | + | # This is necessary because setting a blank value resets the title to the |
|
| 930 | + | # default value of the running program. |
|
| 931 | + | # |
|
| 932 | + | # This configuration can be reloaded at runtime. If it is set, the title |
|
| 933 | + | # will update for all windows. If it is unset, the next title change escape |
|
| 934 | + | # sequence will be honored but previous changes will not retroactively |
|
| 935 | + | # be set. This latter case may require you restart programs such as neovim |
|
| 936 | + | # to get the new title. |
|
| 937 | + | title = |
|
| 938 | + | ||
| 939 | + | # The setting that will change the application class value. |
|
| 940 | + | # |
|
| 941 | + | # This controls the class field of the `WM_CLASS` X11 property (when running |
|
| 942 | + | # under X11), and the Wayland application ID (when running under Wayland). |
|
| 943 | + | # |
|
| 944 | + | # Note that changing this value between invocations will create new, separate |
|
| 945 | + | # instances, of Ghostty when running with `gtk-single-instance=true`. See that |
|
| 946 | + | # option for more details. |
|
| 947 | + | # |
|
| 948 | + | # The class name must follow the requirements defined [in the GTK |
|
| 949 | + | # documentation](https://docs.gtk.org/gio/type_func.Application.id_is_valid.html). |
|
| 950 | + | # |
|
| 951 | + | # The default is `com.mitchellh.ghostty`. |
|
| 952 | + | # |
|
| 953 | + | # This only affects GTK builds. |
|
| 954 | + | class = |
|
| 955 | + | ||
| 956 | + | # This controls the instance name field of the `WM_CLASS` X11 property when |
|
| 957 | + | # running under X11. It has no effect otherwise. |
|
| 958 | + | # |
|
| 959 | + | # The default is `ghostty`. |
|
| 960 | + | # |
|
| 961 | + | # This only affects GTK builds. |
|
| 962 | + | x11-instance-name = |
|
| 963 | + | ||
| 964 | + | # The directory to change to after starting the command. |
|
| 965 | + | # |
|
| 966 | + | # This setting is secondary to the `window-inherit-working-directory` |
|
| 967 | + | # setting. If a previous Ghostty terminal exists in the same process, |
|
| 968 | + | # `window-inherit-working-directory` will take precedence. Otherwise, this |
|
| 969 | + | # setting will be used. Typically, this setting is used only for the first |
|
| 970 | + | # window. |
|
| 971 | + | # |
|
| 972 | + | # The default is `inherit` except in special scenarios listed next. On macOS, |
|
| 973 | + | # if Ghostty can detect it is launched from launchd (double-clicked) or |
|
| 974 | + | # `open`, then it defaults to `home`. On Linux with GTK, if Ghostty can detect |
|
| 975 | + | # it was launched from a desktop launcher, then it defaults to `home`. |
|
| 976 | + | # |
|
| 977 | + | # The value of this must be an absolute value or one of the special values |
|
| 978 | + | # below: |
|
| 979 | + | # |
|
| 980 | + | # * `home` - The home directory of the executing user. |
|
| 981 | + | # |
|
| 982 | + | # * `inherit` - The working directory of the launching process. |
|
| 983 | + | working-directory = |
|
| 984 | + | ||
| 985 | + | # Key bindings. The format is `trigger=action`. Duplicate triggers will |
|
| 986 | + | # overwrite previously set values. The list of actions is available in |
|
| 987 | + | # the documentation or using the `ghostty +list-actions` command. |
|
| 988 | + | # |
|
| 989 | + | # Trigger: `+`-separated list of keys and modifiers. Example: `ctrl+a`, |
|
| 990 | + | # `ctrl+shift+b`, `up`. Some notes: |
|
| 991 | + | # |
|
| 992 | + | # * modifiers cannot repeat, `ctrl+ctrl+a` is invalid. |
|
| 993 | + | # |
|
| 994 | + | # * modifiers and keys can be in any order, `shift+a+ctrl` is *weird*, |
|
| 995 | + | # but valid. |
|
| 996 | + | # |
|
| 997 | + | # * only a single key input is allowed, `ctrl+a+b` is invalid. |
|
| 998 | + | # |
|
| 999 | + | # * the key input can be prefixed with `physical:` to specify a |
|
| 1000 | + | # physical key mapping rather than a logical one. A physical key |
|
| 1001 | + | # mapping responds to the hardware keycode and not the keycode |
|
| 1002 | + | # translated by any system keyboard layouts. Example: "ctrl+physical:a" |
|
| 1003 | + | # |
|
| 1004 | + | # Valid modifiers are `shift`, `ctrl` (alias: `control`), `alt` (alias: `opt`, |
|
| 1005 | + | # `option`), and `super` (alias: `cmd`, `command`). You may use the modifier |
|
| 1006 | + | # or the alias. When debugging keybinds, the non-aliased modifier will always |
|
| 1007 | + | # be used in output. |
|
| 1008 | + | # |
|
| 1009 | + | # Note: The fn or "globe" key on keyboards are not supported as a |
|
| 1010 | + | # modifier. This is a limitation of the operating systems and GUI toolkits |
|
| 1011 | + | # that Ghostty uses. |
|
| 1012 | + | # |
|
| 1013 | + | # You may also specify multiple triggers separated by `>` to require a |
|
| 1014 | + | # sequence of triggers to activate the action. For example, |
|
| 1015 | + | # `ctrl+a>n=new_window` will only trigger the `new_window` action if the |
|
| 1016 | + | # user presses `ctrl+a` followed separately by `n`. In other software, this |
|
| 1017 | + | # is sometimes called a leader key, a key chord, a key table, etc. There |
|
| 1018 | + | # is no hardcoded limit on the number of parts in a sequence. |
|
| 1019 | + | # |
|
| 1020 | + | # Warning: If you define a sequence as a CLI argument to `ghostty`, |
|
| 1021 | + | # you probably have to quote the keybind since `>` is a special character |
|
| 1022 | + | # in most shells. Example: ghostty --keybind='ctrl+a>n=new_window' |
|
| 1023 | + | # |
|
| 1024 | + | # A trigger sequence has some special handling: |
|
| 1025 | + | # |
|
| 1026 | + | # * Ghostty will wait an indefinite amount of time for the next key in |
|
| 1027 | + | # the sequence. There is no way to specify a timeout. The only way to |
|
| 1028 | + | # force the output of a prefix key is to assign another keybind to |
|
| 1029 | + | # specifically output that key (i.e. `ctrl+a>ctrl+a=text:foo`) or |
|
| 1030 | + | # press an unbound key which will send both keys to the program. |
|
| 1031 | + | # |
|
| 1032 | + | # * If a prefix in a sequence is previously bound, the sequence will |
|
| 1033 | + | # override the previous binding. For example, if `ctrl+a` is bound to |
|
| 1034 | + | # `new_window` and `ctrl+a>n` is bound to `new_tab`, pressing `ctrl+a` |
|
| 1035 | + | # will do nothing. |
|
| 1036 | + | # |
|
| 1037 | + | # * Adding to the above, if a previously bound sequence prefix is |
|
| 1038 | + | # used in a new, non-sequence binding, the entire previously bound |
|
| 1039 | + | # sequence will be unbound. For example, if you bind `ctrl+a>n` and |
|
| 1040 | + | # `ctrl+a>t`, and then bind `ctrl+a` directly, both `ctrl+a>n` and |
|
| 1041 | + | # `ctrl+a>t` will become unbound. |
|
| 1042 | + | # |
|
| 1043 | + | # * Trigger sequences are not allowed for `global:` or `all:`-prefixed |
|
| 1044 | + | # triggers. This is a limitation we could remove in the future. |
|
| 1045 | + | # |
|
| 1046 | + | # Action is the action to take when the trigger is satisfied. It takes the |
|
| 1047 | + | # format `action` or `action:param`. The latter form is only valid if the |
|
| 1048 | + | # action requires a parameter. |
|
| 1049 | + | # |
|
| 1050 | + | # * `ignore` - Do nothing, ignore the key input. This can be used to |
|
| 1051 | + | # black hole certain inputs to have no effect. |
|
| 1052 | + | # |
|
| 1053 | + | # * `unbind` - Remove the binding. This makes it so the previous action |
|
| 1054 | + | # is removed, and the key will be sent through to the child command |
|
| 1055 | + | # if it is printable. |
|
| 1056 | + | # |
|
| 1057 | + | # * `csi:text` - Send a CSI sequence. i.e. `csi:A` sends "cursor up". |
|
| 1058 | + | # |
|
| 1059 | + | # * `esc:text` - Send an escape sequence. i.e. `esc:d` deletes to the |
|
| 1060 | + | # end of the word to the right. |
|
| 1061 | + | # |
|
| 1062 | + | # * `text:text` - Send a string. Uses Zig string literal syntax. |
|
| 1063 | + | # i.e. `text:\x15` sends Ctrl-U. |
|
| 1064 | + | # |
|
| 1065 | + | # * All other actions can be found in the documentation or by using the |
|
| 1066 | + | # `ghostty +list-actions` command. |
|
| 1067 | + | # |
|
| 1068 | + | # Some notes for the action: |
|
| 1069 | + | # |
|
| 1070 | + | # * The parameter is taken as-is after the `:`. Double quotes or |
|
| 1071 | + | # other mechanisms are included and NOT parsed. If you want to |
|
| 1072 | + | # send a string value that includes spaces, wrap the entire |
|
| 1073 | + | # trigger/action in double quotes. Example: `--keybind="up=csi:A B"` |
|
| 1074 | + | # |
|
| 1075 | + | # There are some additional special values that can be specified for |
|
| 1076 | + | # keybind: |
|
| 1077 | + | # |
|
| 1078 | + | # * `keybind=clear` will clear all set keybindings. Warning: this |
|
| 1079 | + | # removes ALL keybindings up to this point, including the default |
|
| 1080 | + | # keybindings. |
|
| 1081 | + | # |
|
| 1082 | + | # The keybind trigger can be prefixed with some special values to change |
|
| 1083 | + | # the behavior of the keybind. These are: |
|
| 1084 | + | # |
|
| 1085 | + | # * `all:` - Make the keybind apply to all terminal surfaces. By default, |
|
| 1086 | + | # keybinds only apply to the focused terminal surface. If this is true, |
|
| 1087 | + | # then the keybind will be sent to all terminal surfaces. This only |
|
| 1088 | + | # applies to actions that are surface-specific. For actions that |
|
| 1089 | + | # are already global (i.e. `quit`), this prefix has no effect. |
|
| 1090 | + | # |
|
| 1091 | + | # * `global:` - Make the keybind global. By default, keybinds only work |
|
| 1092 | + | # within Ghostty and under the right conditions (application focused, |
|
| 1093 | + | # sometimes terminal focused, etc.). If you want a keybind to work |
|
| 1094 | + | # globally across your system (i.e. even when Ghostty is not focused), |
|
| 1095 | + | # specify this prefix. This prefix implies `all:`. Note: this does not |
|
| 1096 | + | # work in all environments; see the additional notes below for more |
|
| 1097 | + | # information. |
|
| 1098 | + | # |
|
| 1099 | + | # * `unconsumed:` - Do not consume the input. By default, a keybind |
|
| 1100 | + | # will consume the input, meaning that the associated encoding (if |
|
| 1101 | + | # any) will not be sent to the running program in the terminal. If |
|
| 1102 | + | # you wish to send the encoded value to the program, specify the |
|
| 1103 | + | # `unconsumed:` prefix before the entire keybind. For example: |
|
| 1104 | + | # `unconsumed:ctrl+a=reload_config`. `global:` and `all:`-prefixed |
|
| 1105 | + | # keybinds will always consume the input regardless of this setting. |
|
| 1106 | + | # Since they are not associated with a specific terminal surface, |
|
| 1107 | + | # they're never encoded. |
|
| 1108 | + | # |
|
| 1109 | + | # Keybind triggers are not unique per prefix combination. For example, |
|
| 1110 | + | # `ctrl+a` and `global:ctrl+a` are not two separate keybinds. The keybind |
|
| 1111 | + | # set later will overwrite the keybind set earlier. In this case, the |
|
| 1112 | + | # `global:` keybind will be used. |
|
| 1113 | + | # |
|
| 1114 | + | # Multiple prefixes can be specified. For example, |
|
| 1115 | + | # `global:unconsumed:ctrl+a=reload_config` will make the keybind global |
|
| 1116 | + | # and not consume the input to reload the config. |
|
| 1117 | + | # |
|
| 1118 | + | # Note: `global:` is only supported on macOS. On macOS, |
|
| 1119 | + | # this feature requires accessibility permissions to be granted to Ghostty. |
|
| 1120 | + | # When a `global:` keybind is specified and Ghostty is launched or reloaded, |
|
| 1121 | + | # Ghostty will attempt to request these permissions. If the permissions are |
|
| 1122 | + | # not granted, the keybind will not work. On macOS, you can find these |
|
| 1123 | + | # permissions in System Preferences -> Privacy & Security -> Accessibility. |
|
| 1124 | + | keybind = super+page_up=scroll_page_up |
|
| 1125 | + | keybind = super+ctrl+equal=equalize_splits |
|
| 1126 | + | keybind = super+physical:four=goto_tab:4 |
|
| 1127 | + | keybind = super+shift+down=jump_to_prompt:1 |
|
| 1128 | + | keybind = super+shift+w=close_window |
|
| 1129 | + | keybind = super+shift+left_bracket=previous_tab |
|
| 1130 | + | keybind = super+alt+i=inspector:toggle |
|
| 1131 | + | keybind = super+w=close_surface |
|
| 1132 | + | keybind = super+physical:eight=goto_tab:8 |
|
| 1133 | + | keybind = super+alt+right=goto_split:right |
|
| 1134 | + | keybind = shift+up=adjust_selection:up |
|
| 1135 | + | keybind = super+down=jump_to_prompt:1 |
|
| 1136 | + | keybind = super+enter=toggle_fullscreen |
|
| 1137 | + | keybind = super+t=new_tab |
|
| 1138 | + | keybind = super+c=copy_to_clipboard |
|
| 1139 | + | keybind = super+shift+right_bracket=next_tab |
|
| 1140 | + | keybind = super+physical:one=goto_tab:1 |
|
| 1141 | + | keybind = shift+left=adjust_selection:left |
|
| 1142 | + | keybind = super+equal=increase_font_size:1 |
|
| 1143 | + | keybind = shift+page_up=adjust_selection:page_up |
|
| 1144 | + | keybind = super+physical:three=goto_tab:3 |
|
| 1145 | + | keybind = super+physical:zero=last_tab |
|
| 1146 | + | keybind = super+right=text:\x05 |
|
| 1147 | + | keybind = super+d=new_split:right |
|
| 1148 | + | keybind = super+ctrl+down=resize_split:down,10 |
|
| 1149 | + | keybind = shift+end=adjust_selection:end |
|
| 1150 | + | keybind = super+plus=increase_font_size:1 |
|
| 1151 | + | keybind = super+q=quit |
|
| 1152 | + | keybind = super+home=scroll_to_top |
|
| 1153 | + | keybind = super+ctrl+left=resize_split:left,10 |
|
| 1154 | + | keybind = alt+left=esc:b |
|
| 1155 | + | keybind = super+ctrl+up=resize_split:up,10 |
|
| 1156 | + | keybind = super+left=text:\x01 |
|
| 1157 | + | keybind = super+shift+up=jump_to_prompt:-1 |
|
| 1158 | + | keybind = shift+right=adjust_selection:right |
|
| 1159 | + | keybind = super+comma=open_config |
|
| 1160 | + | keybind = super+shift+comma=reload_config |
|
| 1161 | + | keybind = super+minus=decrease_font_size:1 |
|
| 1162 | + | keybind = shift+page_down=adjust_selection:page_down |
|
| 1163 | + | keybind = ctrl+tab=next_tab |
|
| 1164 | + | keybind = super+a=select_all |
|
| 1165 | + | keybind = alt+right=esc:f |
|
| 1166 | + | keybind = super+shift+enter=toggle_split_zoom |
|
| 1167 | + | keybind = super+alt+down=goto_split:bottom |
|
| 1168 | + | keybind = super+ctrl+f=toggle_fullscreen |
|
| 1169 | + | keybind = super+ctrl+right=resize_split:right,10 |
|
| 1170 | + | keybind = super+alt+shift+j=write_scrollback_file:open |
|
| 1171 | + | keybind = shift+down=adjust_selection:down |
|
| 1172 | + | keybind = ctrl+shift+tab=previous_tab |
|
| 1173 | + | keybind = super+n=new_window |
|
| 1174 | + | keybind = super+alt+left=goto_split:left |
|
| 1175 | + | keybind = super+page_down=scroll_page_down |
|
| 1176 | + | keybind = super+alt+shift+w=close_all_windows |
|
| 1177 | + | keybind = super+alt+up=goto_split:top |
|
| 1178 | + | keybind = super+left_bracket=goto_split:previous |
|
| 1179 | + | keybind = super+physical:nine=goto_tab:9 |
|
| 1180 | + | keybind = super+right_bracket=goto_split:next |
|
| 1181 | + | keybind = super+end=scroll_to_bottom |
|
| 1182 | + | keybind = super+shift+j=write_scrollback_file:paste |
|
| 1183 | + | keybind = super+shift+d=new_split:down |
|
| 1184 | + | keybind = super+zero=reset_font_size |
|
| 1185 | + | keybind = super+physical:five=goto_tab:5 |
|
| 1186 | + | keybind = shift+home=adjust_selection:home |
|
| 1187 | + | keybind = super+physical:seven=goto_tab:7 |
|
| 1188 | + | keybind = super+up=jump_to_prompt:-1 |
|
| 1189 | + | keybind = super+k=clear_screen |
|
| 1190 | + | keybind = super+physical:two=goto_tab:2 |
|
| 1191 | + | keybind = super+physical:six=goto_tab:6 |
|
| 1192 | + | keybind = super+v=paste_from_clipboard |
|
| 1193 | + | ||
| 1194 | + | # Horizontal window padding. This applies padding between the terminal cells |
|
| 1195 | + | # and the left and right window borders. The value is in points, meaning that |
|
| 1196 | + | # it will be scaled appropriately for screen DPI. |
|
| 1197 | + | # |
|
| 1198 | + | # If this value is set too large, the screen will render nothing, because the |
|
| 1199 | + | # grid will be completely squished by the padding. It is up to you as the user |
|
| 1200 | + | # to pick a reasonable value. If you pick an unreasonable value, a warning |
|
| 1201 | + | # will appear in the logs. |
|
| 1202 | + | # |
|
| 1203 | + | # Changing this configuration at runtime will only affect new terminals, i.e. |
|
| 1204 | + | # new windows, tabs, etc. |
|
| 1205 | + | # |
|
| 1206 | + | # To set a different left and right padding, specify two numerical values |
|
| 1207 | + | # separated by a comma. For example, `window-padding-x = 2,4` will set the |
|
| 1208 | + | # left padding to 2 and the right padding to 4. If you want to set both |
|
| 1209 | + | # paddings to the same value, you can use a single value. For example, |
|
| 1210 | + | # `window-padding-x = 2` will set both paddings to 2. |
|
| 1211 | + | window-padding-x = 6 |
|
| 1212 | + | ||
| 1213 | + | # Vertical window padding. This applies padding between the terminal cells and |
|
| 1214 | + | # the top and bottom window borders. The value is in points, meaning that it |
|
| 1215 | + | # will be scaled appropriately for screen DPI. |
|
| 1216 | + | # |
|
| 1217 | + | # If this value is set too large, the screen will render nothing, because the |
|
| 1218 | + | # grid will be completely squished by the padding. It is up to you as the user |
|
| 1219 | + | # to pick a reasonable value. If you pick an unreasonable value, a warning |
|
| 1220 | + | # will appear in the logs. |
|
| 1221 | + | # |
|
| 1222 | + | # Changing this configuration at runtime will only affect new terminals, |
|
| 1223 | + | # i.e. new windows, tabs, etc. |
|
| 1224 | + | # |
|
| 1225 | + | # To set a different top and bottom padding, specify two numerical values |
|
| 1226 | + | # separated by a comma. For example, `window-padding-y = 2,4` will set the |
|
| 1227 | + | # top padding to 2 and the bottom padding to 4. If you want to set both |
|
| 1228 | + | # paddings to the same value, you can use a single value. For example, |
|
| 1229 | + | # `window-padding-y = 2` will set both paddings to 2. |
|
| 1230 | + | window-padding-y = 2 |
|
| 1231 | + | ||
| 1232 | + | # The viewport dimensions are usually not perfectly divisible by the cell |
|
| 1233 | + | # size. In this case, some extra padding on the end of a column and the bottom |
|
| 1234 | + | # of the final row may exist. If this is `true`, then this extra padding |
|
| 1235 | + | # is automatically balanced between all four edges to minimize imbalance on |
|
| 1236 | + | # one side. If this is `false`, the top left grid cell will always hug the |
|
| 1237 | + | # edge with zero padding other than what may be specified with the other |
|
| 1238 | + | # `window-padding` options. |
|
| 1239 | + | # |
|
| 1240 | + | # If other `window-padding` fields are set and this is `true`, this will still |
|
| 1241 | + | # apply. The other padding is applied first and may affect how many grid cells |
|
| 1242 | + | # actually exist, and this is applied last in order to balance the padding |
|
| 1243 | + | # given a certain viewport size and grid cell size. |
|
| 1244 | + | window-padding-balance = false |
|
| 1245 | + | ||
| 1246 | + | # The color of the padding area of the window. Valid values are: |
|
| 1247 | + | # |
|
| 1248 | + | # * `background` - The background color specified in `background`. |
|
| 1249 | + | # * `extend` - Extend the background color of the nearest grid cell. |
|
| 1250 | + | # * `extend-always` - Same as "extend" but always extends without applying |
|
| 1251 | + | # any of the heuristics that disable extending noted below. |
|
| 1252 | + | # |
|
| 1253 | + | # The "extend" value will be disabled in certain scenarios. On primary |
|
| 1254 | + | # screen applications (i.e. not something like Neovim), the color will not |
|
| 1255 | + | # be extended vertically if any of the following are true: |
|
| 1256 | + | # |
|
| 1257 | + | # * The nearest row has any cells that have the default background color. |
|
| 1258 | + | # The thinking is that in this case, the default background color looks |
|
| 1259 | + | # fine as a padding color. |
|
| 1260 | + | # * The nearest row is a prompt row (requires shell integration). The |
|
| 1261 | + | # thinking here is that prompts often contain powerline glyphs that |
|
| 1262 | + | # do not look good extended. |
|
| 1263 | + | # * The nearest row contains a perfect fit powerline character. These |
|
| 1264 | + | # don't look good extended. |
|
| 1265 | + | # |
|
| 1266 | + | window-padding-color = background |
|
| 1267 | + | ||
| 1268 | + | # Synchronize rendering with the screen refresh rate. If true, this will |
|
| 1269 | + | # minimize tearing and align redraws with the screen but may cause input |
|
| 1270 | + | # latency. If false, this will maximize redraw frequency but may cause tearing, |
|
| 1271 | + | # and under heavy load may use more CPU and power. |
|
| 1272 | + | # |
|
| 1273 | + | # This defaults to true because out-of-sync rendering on macOS can |
|
| 1274 | + | # cause kernel panics (macOS 14.4+) and performance issues for external |
|
| 1275 | + | # displays over some hardware such as DisplayLink. If you want to minimize |
|
| 1276 | + | # input latency, set this to false with the known aforementioned risks. |
|
| 1277 | + | # |
|
| 1278 | + | # Changing this value at runtime will only affect new terminals. |
|
| 1279 | + | # |
|
| 1280 | + | # This setting is only supported currently on macOS. |
|
| 1281 | + | window-vsync = true |
|
| 1282 | + | ||
| 1283 | + | # If true, new windows and tabs will inherit the working directory of the |
|
| 1284 | + | # previously focused window. If no window was previously focused, the default |
|
| 1285 | + | # working directory will be used (the `working-directory` option). |
|
| 1286 | + | window-inherit-working-directory = true |
|
| 1287 | + | ||
| 1288 | + | # If true, new windows and tabs will inherit the font size of the previously |
|
| 1289 | + | # focused window. If no window was previously focused, the default font size |
|
| 1290 | + | # will be used. If this is false, the default font size specified in the |
|
| 1291 | + | # configuration `font-size` will be used. |
|
| 1292 | + | window-inherit-font-size = true |
|
| 1293 | + | ||
| 1294 | + | # Valid values: |
|
| 1295 | + | # |
|
| 1296 | + | # * `true` |
|
| 1297 | + | # * `false` - windows won't have native decorations, i.e. titlebar and |
|
| 1298 | + | # borders. On macOS this also disables tabs and tab overview. |
|
| 1299 | + | # |
|
| 1300 | + | # The "toggle_window_decorations" keybind action can be used to create |
|
| 1301 | + | # a keybinding to toggle this setting at runtime. |
|
| 1302 | + | # |
|
| 1303 | + | # Changing this configuration in your configuration and reloading will |
|
| 1304 | + | # only affect new windows. Existing windows will not be affected. |
|
| 1305 | + | # |
|
| 1306 | + | # macOS: To hide the titlebar without removing the native window borders |
|
| 1307 | + | # or rounded corners, use `mghostty +show-config --default --docsacos-titlebar-style = hidden` instead. |
|
| 1308 | + | window-decoration = true |
|
| 1309 | + | ||
| 1310 | + | # The font that will be used for the application's window and tab titles. |
|
| 1311 | + | # |
|
| 1312 | + | # This is currently only supported on macOS. |
|
| 1313 | + | window-title-font-family = |
|
| 1314 | + | ||
| 1315 | + | # The theme to use for the windows. Valid values: |
|
| 1316 | + | # |
|
| 1317 | + | # * `auto` - Determine the theme based on the configured terminal |
|
| 1318 | + | # background color. This has no effect if the "theme" configuration |
|
| 1319 | + | # has separate light and dark themes. In that case, the behavior |
|
| 1320 | + | # of "auto" is equivalent to "system". |
|
| 1321 | + | # * `system` - Use the system theme. |
|
| 1322 | + | # * `light` - Use the light theme regardless of system theme. |
|
| 1323 | + | # * `dark` - Use the dark theme regardless of system theme. |
|
| 1324 | + | # * `ghostty` - Use the background and foreground colors specified in the |
|
| 1325 | + | # Ghostty configuration. This is only supported on Linux builds with |
|
| 1326 | + | # Adwaita and `gtk-adwaita` enabled. |
|
| 1327 | + | # |
|
| 1328 | + | # On macOS, if `macos-titlebar-style` is "tabs", the window theme will be |
|
| 1329 | + | # automatically set based on the luminosity of the terminal background color. |
|
| 1330 | + | # This only applies to terminal windows. This setting will still apply to |
|
| 1331 | + | # non-terminal windows within Ghostty. |
|
| 1332 | + | # |
|
| 1333 | + | # This is currently only supported on macOS and Linux. |
|
| 1334 | + | window-theme = auto |
|
| 1335 | + | ||
| 1336 | + | # The colorspace to use for the terminal window. The default is `srgb` but |
|
| 1337 | + | # this can also be set to `display-p3` to use the Display P3 colorspace. |
|
| 1338 | + | # |
|
| 1339 | + | # Changing this value at runtime will only affect new windows. |
|
| 1340 | + | # |
|
| 1341 | + | # This setting is only supported on macOS. |
|
| 1342 | + | window-colorspace = srgb |
|
| 1343 | + | ||
| 1344 | + | # The initial window size. This size is in terminal grid cells by default. |
|
| 1345 | + | # Both values must be set to take effect. If only one value is set, it is |
|
| 1346 | + | # ignored. |
|
| 1347 | + | # |
|
| 1348 | + | # We don't currently support specifying a size in pixels but a future change |
|
| 1349 | + | # can enable that. If this isn't specified, the app runtime will determine |
|
| 1350 | + | # some default size. |
|
| 1351 | + | # |
|
| 1352 | + | # Note that the window manager may put limits on the size or override the |
|
| 1353 | + | # size. For example, a tiling window manager may force the window to be a |
|
| 1354 | + | # certain size to fit within the grid. There is nothing Ghostty will do about |
|
| 1355 | + | # this, but it will make an effort. |
|
| 1356 | + | # |
|
| 1357 | + | # Sizes larger than the screen size will be clamped to the screen size. |
|
| 1358 | + | # This can be used to create a maximized-by-default window size. |
|
| 1359 | + | # |
|
| 1360 | + | # This will not affect new tabs, splits, or other nested terminal elements. |
|
| 1361 | + | # This only affects the initial window size of any new window. Changing this |
|
| 1362 | + | # value will not affect the size of the window after it has been created. This |
|
| 1363 | + | # is only used for the initial size. |
|
| 1364 | + | # |
|
| 1365 | + | # BUG: On Linux with GTK, the calculated window size will not properly take |
|
| 1366 | + | # into account window decorations. As a result, the grid dimensions will not |
|
| 1367 | + | # exactly match this configuration. If window decorations are disabled (see |
|
| 1368 | + | # window-decorations), then this will work as expected. |
|
| 1369 | + | # |
|
| 1370 | + | # Windows smaller than 10 wide by 4 high are not allowed. |
|
| 1371 | + | window-height = 0 |
|
| 1372 | + | ||
| 1373 | + | window-width = 0 |
|
| 1374 | + | # Whether to enable saving and restoring window state. Window state includes |
|
| 1375 | + | # their position, size, tabs, splits, etc. Some window state requires shell |
|
| 1376 | + | # integration, such as preserving working directories. See `shell-integration` |
|
| 1377 | + | # for more information. |
|
| 1378 | + | # |
|
| 1379 | + | # There are three valid values for this configuration: |
|
| 1380 | + | # |
|
| 1381 | + | # * `default` will use the default system behavior. On macOS, this |
|
| 1382 | + | # will only save state if the application is forcibly terminated |
|
| 1383 | + | # or if it is configured systemwide via Settings.app. |
|
| 1384 | + | # |
|
| 1385 | + | # * `never` will never save window state. |
|
| 1386 | + | # |
|
| 1387 | + | # * `always` will always save window state whenever Ghostty is exited. |
|
| 1388 | + | # |
|
| 1389 | + | # If you change this value to `never` while Ghostty is not running, the next |
|
| 1390 | + | # Ghostty launch will NOT restore the window state. |
|
| 1391 | + | # |
|
| 1392 | + | # If you change this value to `default` while Ghostty is not running and the |
|
| 1393 | + | # previous exit saved state, the next Ghostty launch will still restore the |
|
| 1394 | + | # window state. This is because Ghostty cannot know if the previous exit was |
|
| 1395 | + | # due to a forced save or not (macOS doesn't provide this information). |
|
| 1396 | + | # |
|
| 1397 | + | # If you change this value so that window state is saved while Ghostty is not |
|
| 1398 | + | # running, the previous window state will not be restored because Ghostty only |
|
| 1399 | + | # saves state on exit if this is enabled. |
|
| 1400 | + | # |
|
| 1401 | + | # The default value is `default`. |
|
| 1402 | + | # |
|
| 1403 | + | # This is currently only supported on macOS. This has no effect on Linux. |
|
| 1404 | + | window-save-state = default |
|
| 1405 | + | ||
| 1406 | + | # Resize the window in discrete increments of the focused surface's cell size. |
|
| 1407 | + | # If this is disabled, surfaces are resized in pixel increments. Currently |
|
| 1408 | + | # only supported on macOS. |
|
| 1409 | + | window-step-resize = false |
|
| 1410 | + | ||
| 1411 | + | # The position where new tabs are created. Valid values: |
|
| 1412 | + | # |
|
| 1413 | + | # * `current` - Insert the new tab after the currently focused tab, |
|
| 1414 | + | # or at the end if there are no focused tabs. |
|
| 1415 | + | # |
|
| 1416 | + | # * `end` - Insert the new tab at the end of the tab list. |
|
| 1417 | + | window-new-tab-position = current |
|
| 1418 | + | ||
| 1419 | + | # This controls when resize overlays are shown. Resize overlays are a |
|
| 1420 | + | # transient popup that shows the size of the terminal while the surfaces are |
|
| 1421 | + | # being resized. The possible options are: |
|
| 1422 | + | # |
|
| 1423 | + | # * `always` - Always show resize overlays. |
|
| 1424 | + | # * `never` - Never show resize overlays. |
|
| 1425 | + | # * `after-first` - The resize overlay will not appear when the surface |
|
| 1426 | + | # is first created, but will show up if the surface is |
|
| 1427 | + | # subsequently resized. |
|
| 1428 | + | # |
|
| 1429 | + | # The default is `after-first`. |
|
| 1430 | + | resize-overlay = after-first |
|
| 1431 | + | ||
| 1432 | + | # If resize overlays are enabled, this controls the position of the overlay. |
|
| 1433 | + | # The possible options are: |
|
| 1434 | + | # |
|
| 1435 | + | # * `center` |
|
| 1436 | + | # * `top-left` |
|
| 1437 | + | # * `top-center` |
|
| 1438 | + | # * `top-right` |
|
| 1439 | + | # * `bottom-left` |
|
| 1440 | + | # * `bottom-center` |
|
| 1441 | + | # * `bottom-right` |
|
| 1442 | + | # |
|
| 1443 | + | # The default is `center`. |
|
| 1444 | + | resize-overlay-position = center |
|
| 1445 | + | ||
| 1446 | + | # If resize overlays are enabled, this controls how long the overlay is |
|
| 1447 | + | # visible on the screen before it is hidden. The default is ¾ of a second or |
|
| 1448 | + | # 750 ms. |
|
| 1449 | + | # |
|
| 1450 | + | # The duration is specified as a series of numbers followed by time units. |
|
| 1451 | + | # Whitespace is allowed between numbers and units. Each number and unit will |
|
| 1452 | + | # be added together to form the total duration. |
|
| 1453 | + | # |
|
| 1454 | + | # The allowed time units are as follows: |
|
| 1455 | + | # |
|
| 1456 | + | # * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments |
|
| 1457 | + | # are made for leap years or leap seconds. |
|
| 1458 | + | # * `d` - one SI day, or 86400 seconds. |
|
| 1459 | + | # * `h` - one hour, or 3600 seconds. |
|
| 1460 | + | # * `m` - one minute, or 60 seconds. |
|
| 1461 | + | # * `s` - one second. |
|
| 1462 | + | # * `ms` - one millisecond, or 0.001 second. |
|
| 1463 | + | # * `us` or `µs` - one microsecond, or 0.000001 second. |
|
| 1464 | + | # * `ns` - one nanosecond, or 0.000000001 second. |
|
| 1465 | + | # |
|
| 1466 | + | # Examples: |
|
| 1467 | + | # * `1h30m` |
|
| 1468 | + | # * `45s` |
|
| 1469 | + | # |
|
| 1470 | + | # Units can be repeated and will be added together. This means that |
|
| 1471 | + | # `1h1h` is equivalent to `2h`. This is confusing and should be avoided. |
|
| 1472 | + | # A future update may disallow this. |
|
| 1473 | + | # |
|
| 1474 | + | # The maximum value is `584y 49w 23h 34m 33s 709ms 551µs 615ns`. Any |
|
| 1475 | + | # value larger than this will be clamped to the maximum value. |
|
| 1476 | + | resize-overlay-duration = 750ms |
|
| 1477 | + | ||
| 1478 | + | focus-follows-mouse = false |
|
| 1479 | + | # Whether to allow programs running in the terminal to read/write to the |
|
| 1480 | + | # system clipboard (OSC 52, for googling). The default is to allow clipboard |
|
| 1481 | + | # reading after prompting the user and allow writing unconditionally. |
|
| 1482 | + | # |
|
| 1483 | + | # Valid values are: |
|
| 1484 | + | # |
|
| 1485 | + | # * `ask` |
|
| 1486 | + | # * `allow` |
|
| 1487 | + | # * `deny` |
|
| 1488 | + | # |
|
| 1489 | + | clipboard-read = ask |
|
| 1490 | + | ||
| 1491 | + | clipboard-write = allow |
|
| 1492 | + | # Trims trailing whitespace on data that is copied to the clipboard. This does |
|
| 1493 | + | # not affect data sent to the clipboard via `clipboard-write`. |
|
| 1494 | + | clipboard-trim-trailing-spaces = true |
|
| 1495 | + | ||
| 1496 | + | # Require confirmation before pasting text that appears unsafe. This helps |
|
| 1497 | + | # prevent a "copy/paste attack" where a user may accidentally execute unsafe |
|
| 1498 | + | # commands by pasting text with newlines. |
|
| 1499 | + | clipboard-paste-protection = true |
|
| 1500 | + | ||
| 1501 | + | # If true, bracketed pastes will be considered safe. By default, bracketed |
|
| 1502 | + | # pastes are considered safe. "Bracketed" pastes are pastes while the running |
|
| 1503 | + | # program has bracketed paste mode enabled (a setting set by the running |
|
| 1504 | + | # program, not the terminal emulator). |
|
| 1505 | + | clipboard-paste-bracketed-safe = true |
|
| 1506 | + | ||
| 1507 | + | # The total amount of bytes that can be used for image data (i.e. the Kitty |
|
| 1508 | + | # image protocol) per terminal screen. The maximum value is 4,294,967,295 |
|
| 1509 | + | # (4GiB). The default is 320MB. If this is set to zero, then all image |
|
| 1510 | + | # protocols will be disabled. |
|
| 1511 | + | # |
|
| 1512 | + | # This value is separate for primary and alternate screens so the effective |
|
| 1513 | + | # limit per surface is double. |
|
| 1514 | + | image-storage-limit = 320000000 |
|
| 1515 | + | ||
| 1516 | + | # Whether to automatically copy selected text to the clipboard. `true` |
|
| 1517 | + | # will prefer to copy to the selection clipboard if supported by the |
|
| 1518 | + | # OS, otherwise it will copy to the system clipboard. |
|
| 1519 | + | # |
|
| 1520 | + | # The value `clipboard` will always copy text to the selection clipboard |
|
| 1521 | + | # (for supported systems) as well as the system clipboard. This is sometimes |
|
| 1522 | + | # a preferred behavior on Linux. |
|
| 1523 | + | # |
|
| 1524 | + | # Middle-click paste will always use the selection clipboard on Linux |
|
| 1525 | + | # and the system clipboard on macOS. Middle-click paste is always enabled |
|
| 1526 | + | # even if this is `false`. |
|
| 1527 | + | # |
|
| 1528 | + | # The default value is true on Linux and false on macOS. macOS copy on |
|
| 1529 | + | # select behavior is not typical for applications so it is disabled by |
|
| 1530 | + | # default. On Linux, this is a standard behavior so it is enabled by |
|
| 1531 | + | # default. |
|
| 1532 | + | copy-on-select = false |
|
| 1533 | + | ||
| 1534 | + | # The time in milliseconds between clicks to consider a click a repeat |
|
| 1535 | + | # (double, triple, etc.) or an entirely new single click. A value of zero will |
|
| 1536 | + | # use a platform-specific default. The default on macOS is determined by the |
|
| 1537 | + | # OS settings. On every other platform it is 500ms. |
|
| 1538 | + | click-repeat-interval = 0 |
|
| 1539 | + | ||
| 1540 | + | # Additional configuration files to read. This configuration can be repeated |
|
| 1541 | + | # to read multiple configuration files. Configuration files themselves can |
|
| 1542 | + | # load more configuration files. Paths are relative to the file containing the |
|
| 1543 | + | # `config-file` directive. For command-line arguments, paths are relative to |
|
| 1544 | + | # the current working directory. |
|
| 1545 | + | # |
|
| 1546 | + | # Prepend a ? character to the file path to suppress errors if the file does |
|
| 1547 | + | # not exist. If you want to include a file that begins with a literal ? |
|
| 1548 | + | # character, surround the file path in double quotes ("). |
|
| 1549 | + | # |
|
| 1550 | + | # Cycles are not allowed. If a cycle is detected, an error will be logged and |
|
| 1551 | + | # the configuration file will be ignored. |
|
| 1552 | + | # |
|
| 1553 | + | # Configuration files are loaded after the configuration they're defined |
|
| 1554 | + | # within in the order they're defined. **THIS IS A VERY SUBTLE BUT IMPORTANT |
|
| 1555 | + | # POINT.** To put it another way: configuration files do not take effect |
|
| 1556 | + | # until after the entire configuration is loaded. For example, in the |
|
| 1557 | + | # configuration below: |
|
| 1558 | + | # |
|
| 1559 | + | # ``` |
|
| 1560 | + | # config-file = "foo" |
|
| 1561 | + | # a = 1 |
|
| 1562 | + | # ``` |
|
| 1563 | + | # |
|
| 1564 | + | # If "foo" contains `a = 2`, the final value of `a` will be 2, because |
|
| 1565 | + | # `foo` is loaded after the configuration file that configures the |
|
| 1566 | + | # nested `config-file` value. |
|
| 1567 | + | config-file = |
|
| 1568 | + | ||
| 1569 | + | # When this is true, the default configuration file paths will be loaded. |
|
| 1570 | + | # The default configuration file paths are currently only the XDG |
|
| 1571 | + | # config path ($XDG_CONFIG_HOME/ghostty/config). |
|
| 1572 | + | # |
|
| 1573 | + | # If this is false, the default configuration paths will not be loaded. |
|
| 1574 | + | # This is targeted directly at using Ghostty from the CLI in a way |
|
| 1575 | + | # that minimizes external effects. |
|
| 1576 | + | # |
|
| 1577 | + | # This is a CLI-only configuration. Setting this in a configuration file |
|
| 1578 | + | # will have no effect. It is not an error, but it will not do anything. |
|
| 1579 | + | # This configuration can only be set via CLI arguments. |
|
| 1580 | + | config-default-files = true |
|
| 1581 | + | ||
| 1582 | + | # Confirms that a surface should be closed before closing it. This defaults to |
|
| 1583 | + | # true. If set to false, surfaces will close without any confirmation. |
|
| 1584 | + | confirm-close-surface = true |
|
| 1585 | + | ||
| 1586 | + | # Whether or not to quit after the last surface is closed. |
|
| 1587 | + | # |
|
| 1588 | + | # This defaults to `false` on macOS since that is standard behavior for |
|
| 1589 | + | # a macOS application. On Linux, this defaults to `true` since that is |
|
| 1590 | + | # generally expected behavior. |
|
| 1591 | + | # |
|
| 1592 | + | # On Linux, if this is `true`, Ghostty can delay quitting fully until a |
|
| 1593 | + | # configurable amount of time has passed after the last window is closed. |
|
| 1594 | + | # See the documentation of `quit-after-last-window-closed-delay`. |
|
| 1595 | + | quit-after-last-window-closed = false |
|
| 1596 | + | ||
| 1597 | + | # Controls how long Ghostty will stay running after the last open surface has |
|
| 1598 | + | # been closed. This only has an effect if `quit-after-last-window-closed` is |
|
| 1599 | + | # also set to `true`. |
|
| 1600 | + | # |
|
| 1601 | + | # The minimum value for this configuration is `1s`. Any values lower than |
|
| 1602 | + | # this will be clamped to `1s`. |
|
| 1603 | + | # |
|
| 1604 | + | # The duration is specified as a series of numbers followed by time units. |
|
| 1605 | + | # Whitespace is allowed between numbers and units. Each number and unit will |
|
| 1606 | + | # be added together to form the total duration. |
|
| 1607 | + | # |
|
| 1608 | + | # The allowed time units are as follows: |
|
| 1609 | + | # |
|
| 1610 | + | # * `y` - 365 SI days, or 8760 hours, or 31536000 seconds. No adjustments |
|
| 1611 | + | # are made for leap years or leap seconds. |
|
| 1612 | + | # * `d` - one SI day, or 86400 seconds. |
|
| 1613 | + | # * `h` - one hour, or 3600 seconds. |
|
| 1614 | + | # * `m` - one minute, or 60 seconds. |
|
| 1615 | + | # * `s` - one second. |
|
| 1616 | + | # * `ms` - one millisecond, or 0.001 second. |
|
| 1617 | + | # * `us` or `µs` - one microsecond, or 0.000001 second. |
|
| 1618 | + | # * `ns` - one nanosecond, or 0.000000001 second. |
|
| 1619 | + | # |
|
| 1620 | + | # Examples: |
|
| 1621 | + | # * `1h30m` |
|
| 1622 | + | # * `45s` |
|
| 1623 | + | # |
|
| 1624 | + | # Units can be repeated and will be added together. This means that |
|
| 1625 | + | # `1h1h` is equivalent to `2h`. This is confusing and should be avoided. |
|
| 1626 | + | # A future update may disallow this. |
|
| 1627 | + | # |
|
| 1628 | + | # The maximum value is `584y 49w 23h 34m 33s 709ms 551µs 615ns`. Any |
|
| 1629 | + | # value larger than this will be clamped to the maximum value. |
|
| 1630 | + | # |
|
| 1631 | + | # By default `quit-after-last-window-closed-delay` is unset and |
|
| 1632 | + | # Ghostty will quit immediately after the last window is closed if |
|
| 1633 | + | # `quit-after-last-window-closed` is `true`. |
|
| 1634 | + | # |
|
| 1635 | + | # Only implemented on Linux. |
|
| 1636 | + | quit-after-last-window-closed-delay = |
|
| 1637 | + | ||
| 1638 | + | # This controls whether an initial window is created when Ghostty |
|
| 1639 | + | # is run. Note that if `quit-after-last-window-closed` is `true` and |
|
| 1640 | + | # `quit-after-last-window-closed-delay` is set, setting `initial-window` to |
|
| 1641 | + | # `false` will mean that Ghostty will quit after the configured delay if no |
|
| 1642 | + | # window is ever created. Only implemented on Linux and macOS. |
|
| 1643 | + | initial-window = true |
|
| 1644 | + | ||
| 1645 | + | # The position of the "quick" terminal window. To learn more about the |
|
| 1646 | + | # quick terminal, see the documentation for the `toggle_quick_terminal` |
|
| 1647 | + | # binding action. |
|
| 1648 | + | # |
|
| 1649 | + | # Valid values are: |
|
| 1650 | + | # |
|
| 1651 | + | # * `top` - Terminal appears at the top of the screen. |
|
| 1652 | + | # * `bottom` - Terminal appears at the bottom of the screen. |
|
| 1653 | + | # * `left` - Terminal appears at the left of the screen. |
|
| 1654 | + | # * `right` - Terminal appears at the right of the screen. |
|
| 1655 | + | # * `center` - Terminal appears at the center of the screen. |
|
| 1656 | + | # |
|
| 1657 | + | # Changing this configuration requires restarting Ghostty completely. |
|
| 1658 | + | quick-terminal-position = top |
|
| 1659 | + | ||
| 1660 | + | # The screen where the quick terminal should show up. |
|
| 1661 | + | # |
|
| 1662 | + | # Valid values are: |
|
| 1663 | + | # |
|
| 1664 | + | # * `main` - The screen that the operating system recommends as the main |
|
| 1665 | + | # screen. On macOS, this is the screen that is currently receiving |
|
| 1666 | + | # keyboard input. This screen is defined by the operating system and |
|
| 1667 | + | # not chosen by Ghostty. |
|
| 1668 | + | # |
|
| 1669 | + | # * `mouse` - The screen that the mouse is currently hovered over. |
|
| 1670 | + | # |
|
| 1671 | + | # * `macos-menu-bar` - The screen that contains the macOS menu bar as |
|
| 1672 | + | # set in the display settings on macOS. This is a bit confusing because |
|
| 1673 | + | # every screen on macOS has a menu bar, but this is the screen that |
|
| 1674 | + | # contains the primary menu bar. |
|
| 1675 | + | # |
|
| 1676 | + | # The default value is `main` because this is the recommended screen |
|
| 1677 | + | # by the operating system. |
|
| 1678 | + | quick-terminal-screen = main |
|
| 1679 | + | ||
| 1680 | + | # Duration (in seconds) of the quick terminal enter and exit animation. |
|
| 1681 | + | # Set it to 0 to disable animation completely. This can be changed at |
|
| 1682 | + | # runtime. |
|
| 1683 | + | quick-terminal-animation-duration = 0.2 |
|
| 1684 | + | ||
| 1685 | + | # Automatically hide the quick terminal when focus shifts to another window. |
|
| 1686 | + | # Set it to false for the quick terminal to remain open even when it loses focus. |
|
| 1687 | + | quick-terminal-autohide = true |
|
| 1688 | + | ||
| 1689 | + | # Whether to enable shell integration auto-injection or not. Shell integration |
|
| 1690 | + | # greatly enhances the terminal experience by enabling a number of features: |
|
| 1691 | + | # |
|
| 1692 | + | # * Working directory reporting so new tabs, splits inherit the |
|
| 1693 | + | # previous terminal's working directory. |
|
| 1694 | + | # |
|
| 1695 | + | # * Prompt marking that enables the "jump_to_prompt" keybinding. |
|
| 1696 | + | # |
|
| 1697 | + | # * If you're sitting at a prompt, closing a terminal will not ask |
|
| 1698 | + | # for confirmation. |
|
| 1699 | + | # |
|
| 1700 | + | # * Resizing the window with a complex prompt usually paints much |
|
| 1701 | + | # better. |
|
| 1702 | + | # |
|
| 1703 | + | # Allowable values are: |
|
| 1704 | + | # |
|
| 1705 | + | # * `none` - Do not do any automatic injection. You can still manually |
|
| 1706 | + | # configure your shell to enable the integration. |
|
| 1707 | + | # |
|
| 1708 | + | # * `detect` - Detect the shell based on the filename. |
|
| 1709 | + | # |
|
| 1710 | + | # * `bash`, `elvish`, `fish`, `zsh` - Use this specific shell injection scheme. |
|
| 1711 | + | # |
|
| 1712 | + | # The default value is `detect`. |
|
| 1713 | + | shell-integration = detect |
|
| 1714 | + | ||
| 1715 | + | # Shell integration features to enable if shell integration itself is enabled. |
|
| 1716 | + | # The format of this is a list of features to enable separated by commas. If |
|
| 1717 | + | # you prefix a feature with `no-` then it is disabled. If you omit a feature, |
|
| 1718 | + | # its default value is used, so you must explicitly disable features you don't |
|
| 1719 | + | # want. You can also use `true` or `false` to turn all features on or off. |
|
| 1720 | + | # |
|
| 1721 | + | # Available features: |
|
| 1722 | + | # |
|
| 1723 | + | # * `cursor` - Set the cursor to a blinking bar at the prompt. |
|
| 1724 | + | # |
|
| 1725 | + | # * `sudo` - Set sudo wrapper to preserve terminfo. |
|
| 1726 | + | # |
|
| 1727 | + | # * `title` - Set the window title via shell integration. |
|
| 1728 | + | # |
|
| 1729 | + | # Example: `cursor`, `no-cursor`, `sudo`, `no-sudo`, `title`, `no-title` |
|
| 1730 | + | shell-integration-features = cursor,no-sudo,title |
|
| 1731 | + | ||
| 1732 | + | # Sets the reporting format for OSC sequences that request color information. |
|
| 1733 | + | # Ghostty currently supports OSC 10 (foreground), OSC 11 (background), and |
|
| 1734 | + | # OSC 4 (256 color palette) queries, and by default the reported values |
|
| 1735 | + | # are scaled-up RGB values, where each component are 16 bits. This is how |
|
| 1736 | + | # most terminals report these values. However, some legacy applications may |
|
| 1737 | + | # require 8-bit, unscaled, components. We also support turning off reporting |
|
| 1738 | + | # altogether. The components are lowercase hex values. |
|
| 1739 | + | # |
|
| 1740 | + | # Allowable values are: |
|
| 1741 | + | # |
|
| 1742 | + | # * `none` - OSC 4/10/11 queries receive no reply |
|
| 1743 | + | # |
|
| 1744 | + | # * `8-bit` - Color components are return unscaled, i.e. `rr/gg/bb` |
|
| 1745 | + | # |
|
| 1746 | + | # * `16-bit` - Color components are returned scaled, e.g. `rrrr/gggg/bbbb` |
|
| 1747 | + | # |
|
| 1748 | + | # The default value is `16-bit`. |
|
| 1749 | + | osc-color-report-format = 16-bit |
|
| 1750 | + | ||
| 1751 | + | # If true, allows the "KAM" mode (ANSI mode 2) to be used within |
|
| 1752 | + | # the terminal. KAM disables keyboard input at the request of the |
|
| 1753 | + | # application. This is not a common feature and is not recommended |
|
| 1754 | + | # to be enabled. This will not be documented further because |
|
| 1755 | + | # if you know you need KAM, you know. If you don't know if you |
|
| 1756 | + | # need KAM, you don't need it. |
|
| 1757 | + | vt-kam-allowed = false |
|
| 1758 | + | ||
| 1759 | + | # Custom shaders to run after the default shaders. This is a file path |
|
| 1760 | + | # to a GLSL-syntax shader for all platforms. |
|
| 1761 | + | # |
|
| 1762 | + | # Warning: Invalid shaders can cause Ghostty to become unusable such as by |
|
| 1763 | + | # causing the window to be completely black. If this happens, you can |
|
| 1764 | + | # unset this configuration to disable the shader. |
|
| 1765 | + | # |
|
| 1766 | + | # On Linux, this requires OpenGL 4.2. Ghostty typically only requires |
|
| 1767 | + | # OpenGL 3.3, but custom shaders push that requirement up to 4.2. |
|
| 1768 | + | # |
|
| 1769 | + | # The shader API is identical to the Shadertoy API: you specify a `mainImage` |
|
| 1770 | + | # function and the available uniforms match Shadertoy. The iChannel0 uniform |
|
| 1771 | + | # is a texture containing the rendered terminal screen. |
|
| 1772 | + | # |
|
| 1773 | + | # If the shader fails to compile, the shader will be ignored. Any errors |
|
| 1774 | + | # related to shader compilation will not show up as configuration errors |
|
| 1775 | + | # and only show up in the log, since shader compilation happens after |
|
| 1776 | + | # configuration loading on the dedicated render thread. For interactive |
|
| 1777 | + | # development, use [shadertoy.com](https://shadertoy.com). |
|
| 1778 | + | # |
|
| 1779 | + | # This can be repeated multiple times to load multiple shaders. The shaders |
|
| 1780 | + | # will be run in the order they are specified. |
|
| 1781 | + | # |
|
| 1782 | + | # Changing this value at runtime and reloading the configuration will only |
|
| 1783 | + | # affect new windows, tabs, and splits. |
|
| 1784 | + | custom-shader = |
|
| 1785 | + | ||
| 1786 | + | # If `true` (default), the focused terminal surface will run an animation |
|
| 1787 | + | # loop when custom shaders are used. This uses slightly more CPU (generally |
|
| 1788 | + | # less than 10%) but allows the shader to animate. This only runs if there |
|
| 1789 | + | # are custom shaders and the terminal is focused. |
|
| 1790 | + | # |
|
| 1791 | + | # If this is set to `false`, the terminal and custom shader will only render |
|
| 1792 | + | # when the terminal is updated. This is more efficient but the shader will |
|
| 1793 | + | # not animate. |
|
| 1794 | + | # |
|
| 1795 | + | # This can also be set to `always`, which will always run the animation |
|
| 1796 | + | # loop regardless of whether the terminal is focused or not. The animation |
|
| 1797 | + | # loop will still only run when custom shaders are used. Note that this |
|
| 1798 | + | # will use more CPU per terminal surface and can become quite expensive |
|
| 1799 | + | # depending on the shader and your terminal usage. |
|
| 1800 | + | # |
|
| 1801 | + | # This value can be changed at runtime and will affect all currently |
|
| 1802 | + | # open terminals. |
|
| 1803 | + | custom-shader-animation = true |
|
| 1804 | + | ||
| 1805 | + | # If anything other than false, fullscreen mode on macOS will not use the |
|
| 1806 | + | # native fullscreen, but make the window fullscreen without animations and |
|
| 1807 | + | # using a new space. It's faster than the native fullscreen mode since it |
|
| 1808 | + | # doesn't use animations. |
|
| 1809 | + | # |
|
| 1810 | + | # Important: tabs DO NOT WORK in this mode. Non-native fullscreen removes |
|
| 1811 | + | # the titlebar and macOS native tabs require the titlebar. If you use tabs, |
|
| 1812 | + | # you should not use this mode. |
|
| 1813 | + | # |
|
| 1814 | + | # If you fullscreen a window with tabs, the currently focused tab will |
|
| 1815 | + | # become fullscreen while the others will remain in a separate window in |
|
| 1816 | + | # the background. You can switch to that window using normal window-switching |
|
| 1817 | + | # keybindings such as command+tilde. When you exit fullscreen, the window |
|
| 1818 | + | # will return to the tabbed state it was in before. |
|
| 1819 | + | # |
|
| 1820 | + | # Allowable values are: |
|
| 1821 | + | # |
|
| 1822 | + | # * `visible-menu` - Use non-native macOS fullscreen, keep the menu bar visible |
|
| 1823 | + | # * `true` - Use non-native macOS fullscreen, hide the menu bar |
|
| 1824 | + | # * `false` - Use native macOS fullscreen |
|
| 1825 | + | # |
|
| 1826 | + | # Changing this option at runtime works, but will only apply to the next |
|
| 1827 | + | # time the window is made fullscreen. If a window is already fullscreen, |
|
| 1828 | + | # it will retain the previous setting until fullscreen is exited. |
|
| 1829 | + | macos-non-native-fullscreen = false |
|
| 1830 | + | ||
| 1831 | + | # The style of the macOS titlebar. Available values are: "native", |
|
| 1832 | + | # "transparent", "tabs", and "hidden". |
|
| 1833 | + | # |
|
| 1834 | + | # The "native" style uses the native macOS titlebar with zero customization. |
|
| 1835 | + | # The titlebar will match your window theme (see `window-theme`). |
|
| 1836 | + | # |
|
| 1837 | + | # The "transparent" style is the same as "native" but the titlebar will |
|
| 1838 | + | # be transparent and allow your window background color to come through. |
|
| 1839 | + | # This makes a more seamless window appearance but looks a little less |
|
| 1840 | + | # typical for a macOS application and may not work well with all themes. |
|
| 1841 | + | # |
|
| 1842 | + | # The "transparent" style will also update in real-time to dynamic |
|
| 1843 | + | # changes to the window background color, i.e. via OSC 11. To make this |
|
| 1844 | + | # more aesthetically pleasing, this only happens if the terminal is |
|
| 1845 | + | # a window, tab, or split that borders the top of the window. This |
|
| 1846 | + | # avoids a disjointed appearance where the titlebar color changes |
|
| 1847 | + | # but all the topmost terminals don't match. |
|
| 1848 | + | # |
|
| 1849 | + | # The "tabs" style is a completely custom titlebar that integrates the |
|
| 1850 | + | # tab bar into the titlebar. This titlebar always matches the background |
|
| 1851 | + | # color of the terminal. There are some limitations to this style: |
|
| 1852 | + | # On macOS 13 and below, saved window state will not restore tabs correctly. |
|
| 1853 | + | # macOS 14 does not have this issue and any other macOS version has not |
|
| 1854 | + | # been tested. |
|
| 1855 | + | # |
|
| 1856 | + | # The "hidden" style hides the titlebar. Unlike `window-decoration = false`, |
|
| 1857 | + | # however, it does not remove the frame from the window or cause it to have |
|
| 1858 | + | # squared corners. Changing to or from this option at run-time may affect |
|
| 1859 | + | # existing windows in buggy ways. The top titlebar area of the window will |
|
| 1860 | + | # continue to drag the window around and you will not be able to use |
|
| 1861 | + | # the mouse for terminal events in this space. |
|
| 1862 | + | # |
|
| 1863 | + | # The default value is "transparent". This is an opinionated choice |
|
| 1864 | + | # but its one I think is the most aesthetically pleasing and works in |
|
| 1865 | + | # most cases. |
|
| 1866 | + | # |
|
| 1867 | + | # Changing this option at runtime only applies to new windows. |
|
| 1868 | + | macos-titlebar-style = hidden |
|
| 1869 | + | ||
| 1870 | + | # Whether the proxy icon in the macOS titlebar is visible. The proxy icon |
|
| 1871 | + | # is the icon that represents the folder of the current working directory. |
|
| 1872 | + | # You can see this very clearly in the macOS built-in Terminal.app |
|
| 1873 | + | # titlebar. |
|
| 1874 | + | # |
|
| 1875 | + | # The proxy icon is only visible with the native macOS titlebar style. |
|
| 1876 | + | # |
|
| 1877 | + | # Valid values are: |
|
| 1878 | + | # |
|
| 1879 | + | # * `visible` - Show the proxy icon. |
|
| 1880 | + | # * `hidden` - Hide the proxy icon. |
|
| 1881 | + | # |
|
| 1882 | + | # The default value is `visible`. |
|
| 1883 | + | # |
|
| 1884 | + | # This setting can be changed at runtime and will affect all currently |
|
| 1885 | + | # open windows but only after their working directory changes again. |
|
| 1886 | + | # Therefore, to make this work after changing the setting, you must |
|
| 1887 | + | # usually `cd` to a different directory, open a different file in an |
|
| 1888 | + | # editor, etc. |
|
| 1889 | + | macos-titlebar-proxy-icon = visible |
|
| 1890 | + | ||
| 1891 | + | # macOS doesn't have a distinct "alt" key and instead has the "option" |
|
| 1892 | + | # key which behaves slightly differently. On macOS by default, the |
|
| 1893 | + | # option key plus a character will sometimes produces a Unicode character. |
|
| 1894 | + | # For example, on US standard layouts option-b produces "∫". This may be |
|
| 1895 | + | # undesirable if you want to use "option" as an "alt" key for keybindings |
|
| 1896 | + | # in terminal programs or shells. |
|
| 1897 | + | # |
|
| 1898 | + | # This configuration lets you change the behavior so that option is treated |
|
| 1899 | + | # as alt. |
|
| 1900 | + | # |
|
| 1901 | + | # The default behavior (unset) will depend on your active keyboard |
|
| 1902 | + | # layout. If your keyboard layout is one of the keyboard layouts listed |
|
| 1903 | + | # below, then the default value is "true". Otherwise, the default |
|
| 1904 | + | # value is "false". Keyboard layouts with a default value of "true" are: |
|
| 1905 | + | # |
|
| 1906 | + | # - U.S. Standard |
|
| 1907 | + | # - U.S. International |
|
| 1908 | + | # |
|
| 1909 | + | # Note that if an *Option*-sequence doesn't produce a printable character, it |
|
| 1910 | + | # will be treated as *Alt* regardless of this setting. (i.e. `alt+ctrl+a`). |
|
| 1911 | + | # |
|
| 1912 | + | # Explicit values that can be set: |
|
| 1913 | + | # |
|
| 1914 | + | # If `true`, the *Option* key will be treated as *Alt*. This makes terminal |
|
| 1915 | + | # sequences expecting *Alt* to work properly, but will break Unicode input |
|
| 1916 | + | # sequences on macOS if you use them via the *Alt* key. |
|
| 1917 | + | # |
|
| 1918 | + | # You may set this to `false` to restore the macOS *Alt* key unicode |
|
| 1919 | + | # sequences but this will break terminal sequences expecting *Alt* to work. |
|
| 1920 | + | # |
|
| 1921 | + | # The values `left` or `right` enable this for the left or right *Option* |
|
| 1922 | + | # key, respectively. |
|
| 1923 | + | # |
|
| 1924 | + | # This does not work with GLFW builds. |
|
| 1925 | + | macos-option-as-alt = |
|
| 1926 | + | ||
| 1927 | + | # Whether to enable the macOS window shadow. The default value is true. |
|
| 1928 | + | # With some window managers and window transparency settings, you may |
|
| 1929 | + | # find false more visually appealing. |
|
| 1930 | + | macos-window-shadow = false |
|
| 1931 | + | ||
| 1932 | + | # If true, Ghostty on macOS will automatically enable the "Secure Input" |
|
| 1933 | + | # feature when it detects that a password prompt is being displayed. |
|
| 1934 | + | # |
|
| 1935 | + | # "Secure Input" is a macOS security feature that prevents applications from |
|
| 1936 | + | # reading keyboard events. This can always be enabled manually using the |
|
| 1937 | + | # `Ghostty > Secure Keyboard Entry` menu item. |
|
| 1938 | + | # |
|
| 1939 | + | # Note that automatic password prompt detection is based on heuristics |
|
| 1940 | + | # and may not always work as expected. Specifically, it does not work |
|
| 1941 | + | # over SSH connections, but there may be other cases where it also |
|
| 1942 | + | # doesn't work. |
|
| 1943 | + | # |
|
| 1944 | + | # A reason to disable this feature is if you find that it is interfering |
|
| 1945 | + | # with legitimate accessibility software (or software that uses the |
|
| 1946 | + | # accessibility APIs), since secure input prevents any application from |
|
| 1947 | + | # reading keyboard events. |
|
| 1948 | + | macos-auto-secure-input = true |
|
| 1949 | + | ||
| 1950 | + | # If true, Ghostty will show a graphical indication when secure input is |
|
| 1951 | + | # enabled. This indication is generally recommended to know when secure input |
|
| 1952 | + | # is enabled. |
|
| 1953 | + | # |
|
| 1954 | + | # Normally, secure input is only active when a password prompt is displayed |
|
| 1955 | + | # or it is manually (and typically temporarily) enabled. However, if you |
|
| 1956 | + | # always have secure input enabled, the indication can be distracting and |
|
| 1957 | + | # you may want to disable it. |
|
| 1958 | + | macos-secure-input-indication = true |
|
| 1959 | + | ||
| 1960 | + | # Customize the macOS app icon. |
|
| 1961 | + | # |
|
| 1962 | + | # This only affects the icon that appears in the dock, application |
|
| 1963 | + | # switcher, etc. This does not affect the icon in Finder because |
|
| 1964 | + | # that is controlled by a hardcoded value in the signed application |
|
| 1965 | + | # bundle and can't be changed at runtime. For more details on what |
|
| 1966 | + | # exactly is affected, see the `NSApplication.icon` Apple documentation; |
|
| 1967 | + | # that is the API that is being used to set the icon. |
|
| 1968 | + | # |
|
| 1969 | + | # Valid values: |
|
| 1970 | + | # |
|
| 1971 | + | # * `official` - Use the official Ghostty icon. |
|
| 1972 | + | # * `custom-style` - Use the official Ghostty icon but with custom |
|
| 1973 | + | # styles applied to various layers. The custom styles must be |
|
| 1974 | + | # specified using the additional `macos-icon`-prefixed configurations. |
|
| 1975 | + | # The `macos-icon-ghost-color` and `macos-icon-screen-color` |
|
| 1976 | + | # configurations are required for this style. |
|
| 1977 | + | # |
|
| 1978 | + | # WARNING: The `custom-style` option is _experimental_. We may change |
|
| 1979 | + | # the format of the custom styles in the future. We're still finalizing |
|
| 1980 | + | # the exact layers and customization options that will be available. |
|
| 1981 | + | # |
|
| 1982 | + | # Other caveats: |
|
| 1983 | + | # |
|
| 1984 | + | # * The icon in the update dialog will always be the official icon. |
|
| 1985 | + | # This is because the update dialog is managed through a |
|
| 1986 | + | # separate framework and cannot be customized without significant |
|
| 1987 | + | # effort. |
|
| 1988 | + | # |
|
| 1989 | + | macos-icon = official |
|
| 1990 | + | ||
| 1991 | + | # The material to use for the frame of the macOS app icon. |
|
| 1992 | + | # |
|
| 1993 | + | # Valid values: |
|
| 1994 | + | # |
|
| 1995 | + | # * `aluminum` - A brushed aluminum frame. This is the default. |
|
| 1996 | + | # * `beige` - A classic 90's computer beige frame. |
|
| 1997 | + | # * `plastic` - A glossy, dark plastic frame. |
|
| 1998 | + | # * `chrome` - A shiny chrome frame. |
|
| 1999 | + | # |
|
| 2000 | + | # This only has an effect when `macos-icon` is set to `custom-style`. |
|
| 2001 | + | macos-icon-frame = aluminum |
|
| 2002 | + | ||
| 2003 | + | # The color of the ghost in the macOS app icon. |
|
| 2004 | + | # |
|
| 2005 | + | # The format of the color is the same as the `background` configuration; |
|
| 2006 | + | # see that for more information. |
|
| 2007 | + | # |
|
| 2008 | + | # Note: This configuration is required when `macos-icon` is set to |
|
| 2009 | + | # `custom-style`. |
|
| 2010 | + | # |
|
| 2011 | + | # This only has an effect when `macos-icon` is set to `custom-style`. |
|
| 2012 | + | macos-icon-ghost-color = |
|
| 2013 | + | ||
| 2014 | + | # The color of the screen in the macOS app icon. |
|
| 2015 | + | # |
|
| 2016 | + | # The screen is a gradient so you can specify multiple colors that |
|
| 2017 | + | # make up the gradient. Colors should be separated by commas. The |
|
| 2018 | + | # format of the color is the same as the `background` configuration; |
|
| 2019 | + | # see that for more information. |
|
| 2020 | + | # |
|
| 2021 | + | # Note: This configuration is required when `macos-icon` is set to |
|
| 2022 | + | # `custom-style`. |
|
| 2023 | + | # |
|
| 2024 | + | # This only has an effect when `macos-icon` is set to `custom-style`. |
|
| 2025 | + | macos-icon-screen-color = |
|
| 2026 | + | ||
| 2027 | + | # Put every surface (tab, split, window) into a dedicated Linux cgroup. |
|
| 2028 | + | # |
|
| 2029 | + | # This makes it so that resource management can be done on a per-surface |
|
| 2030 | + | # granularity. For example, if a shell program is using too much memory, |
|
| 2031 | + | # only that shell will be killed by the oom monitor instead of the entire |
|
| 2032 | + | # Ghostty process. Similarly, if a shell program is using too much CPU, |
|
| 2033 | + | # only that surface will be CPU-throttled. |
|
| 2034 | + | # |
|
| 2035 | + | # This will cause startup times to be slower (a hundred milliseconds or so), |
|
| 2036 | + | # so the default value is "single-instance." In single-instance mode, only |
|
| 2037 | + | # one instance of Ghostty is running (see gtk-single-instance) so the startup |
|
| 2038 | + | # time is a one-time cost. Additionally, single instance Ghostty is much |
|
| 2039 | + | # more likely to have many windows, tabs, etc. so cgroup isolation is a |
|
| 2040 | + | # big benefit. |
|
| 2041 | + | # |
|
| 2042 | + | # This feature requires systemd. If systemd is unavailable, cgroup |
|
| 2043 | + | # initialization will fail. By default, this will not prevent Ghostty |
|
| 2044 | + | # from working (see linux-cgroup-hard-fail). |
|
| 2045 | + | # |
|
| 2046 | + | # Valid values are: |
|
| 2047 | + | # |
|
| 2048 | + | # * `never` - Never use cgroups. |
|
| 2049 | + | # * `always` - Always use cgroups. |
|
| 2050 | + | # * `single-instance` - Enable cgroups only for Ghostty instances launched |
|
| 2051 | + | # as single-instance applications (see gtk-single-instance). |
|
| 2052 | + | # |
|
| 2053 | + | linux-cgroup = single-instance |
|
| 2054 | + | ||
| 2055 | + | # Memory limit for any individual terminal process (tab, split, window, |
|
| 2056 | + | # etc.) in bytes. If this is unset then no memory limit will be set. |
|
| 2057 | + | # |
|
| 2058 | + | # Note that this sets the "memory.high" configuration for the memory |
|
| 2059 | + | # controller, which is a soft limit. You should configure something like |
|
| 2060 | + | # systemd-oom to handle killing processes that have too much memory |
|
| 2061 | + | # pressure. |
|
| 2062 | + | linux-cgroup-memory-limit = |
|
| 2063 | + | ||
| 2064 | + | # Number of processes limit for any individual terminal process (tab, split, |
|
| 2065 | + | # window, etc.). If this is unset then no limit will be set. |
|
| 2066 | + | # |
|
| 2067 | + | # Note that this sets the "pids.max" configuration for the process number |
|
| 2068 | + | # controller, which is a hard limit. |
|
| 2069 | + | linux-cgroup-processes-limit = |
|
| 2070 | + | ||
| 2071 | + | # If this is false, then any cgroup initialization (for linux-cgroup) |
|
| 2072 | + | # will be allowed to fail and the failure is ignored. This is useful if |
|
| 2073 | + | # you view cgroup isolation as a "nice to have" and not a critical resource |
|
| 2074 | + | # management feature, because Ghostty startup will not fail if cgroup APIs |
|
| 2075 | + | # fail. |
|
| 2076 | + | # |
|
| 2077 | + | # If this is true, then any cgroup initialization failure will cause |
|
| 2078 | + | # Ghostty to exit or new surfaces to not be created. |
|
| 2079 | + | # |
|
| 2080 | + | # Note: This currently only affects cgroup initialization. Subprocesses |
|
| 2081 | + | # must always be able to move themselves into an isolated cgroup. |
|
| 2082 | + | linux-cgroup-hard-fail = false |
|
| 2083 | + | ||
| 2084 | + | # If `true`, the Ghostty GTK application will run in single-instance mode: |
|
| 2085 | + | # each new `ghostty` process launched will result in a new window if there is |
|
| 2086 | + | # already a running process. |
|
| 2087 | + | # |
|
| 2088 | + | # If `false`, each new ghostty process will launch a separate application. |
|
| 2089 | + | # |
|
| 2090 | + | # The default value is `detect` which will default to `true` if Ghostty |
|
| 2091 | + | # detects that it was launched from the `.desktop` file such as an app |
|
| 2092 | + | # launcher (like Gnome Shell) or by D-Bus activation. If Ghostty is launched |
|
| 2093 | + | # from the command line, it will default to `false`. |
|
| 2094 | + | # |
|
| 2095 | + | # Note that debug builds of Ghostty have a separate single-instance ID |
|
| 2096 | + | # so you can test single instance without conflicting with release builds. |
|
| 2097 | + | gtk-single-instance = desktop |
|
| 2098 | + | ||
| 2099 | + | # When enabled, the full GTK titlebar is displayed instead of your window |
|
| 2100 | + | # manager's simple titlebar. The behavior of this option will vary with your |
|
| 2101 | + | # window manager. |
|
| 2102 | + | # |
|
| 2103 | + | # This option does nothing when `window-decoration` is false or when running |
|
| 2104 | + | # under macOS. |
|
| 2105 | + | # |
|
| 2106 | + | # Changing this value at runtime and reloading the configuration will only |
|
| 2107 | + | # affect new windows. |
|
| 2108 | + | gtk-titlebar = true |
|
| 2109 | + | ||
| 2110 | + | # Determines the side of the screen that the GTK tab bar will stick to. |
|
| 2111 | + | # Top, bottom, left, right, and hidden are supported. The default is top. |
|
| 2112 | + | # |
|
| 2113 | + | # If this option has value `left` or `right` when using Adwaita, it falls |
|
| 2114 | + | # back to `top`. `hidden`, meaning that tabs don't exist, is not supported |
|
| 2115 | + | # without using Adwaita, falling back to `top`. |
|
| 2116 | + | # |
|
| 2117 | + | # When `hidden` is set and Adwaita is enabled, a tab button displaying the |
|
| 2118 | + | # number of tabs will appear in the title bar. It has the ability to open a |
|
| 2119 | + | # tab overview for displaying tabs. Alternatively, you can use the |
|
| 2120 | + | # `toggle_tab_overview` action in a keybind if your window doesn't have a |
|
| 2121 | + | # title bar, or you can switch tabs with keybinds. |
|
| 2122 | + | gtk-tabs-location = top |
|
| 2123 | + | ||
| 2124 | + | # Determines the appearance of the top and bottom bars when using the |
|
| 2125 | + | # Adwaita tab bar. This requires `gtk-adwaita` to be enabled (it is |
|
| 2126 | + | # by default). |
|
| 2127 | + | # |
|
| 2128 | + | # Valid values are: |
|
| 2129 | + | # |
|
| 2130 | + | # * `flat` - Top and bottom bars are flat with the terminal window. |
|
| 2131 | + | # * `raised` - Top and bottom bars cast a shadow on the terminal area. |
|
| 2132 | + | # * `raised-border` - Similar to `raised` but the shadow is replaced with a |
|
| 2133 | + | # more subtle border. |
|
| 2134 | + | # |
|
| 2135 | + | # Changing this value at runtime will only affect new windows. |
|
| 2136 | + | adw-toolbar-style = raised |
|
| 2137 | + | ||
| 2138 | + | # If `true` (default), then the Ghostty GTK tabs will be "wide." Wide tabs |
|
| 2139 | + | # are the new typical Gnome style where tabs fill their available space. |
|
| 2140 | + | # If you set this to `false` then tabs will only take up space they need, |
|
| 2141 | + | # which is the old style. |
|
| 2142 | + | gtk-wide-tabs = true |
|
| 2143 | + | ||
| 2144 | + | # If `true` (default), Ghostty will enable Adwaita theme support. This |
|
| 2145 | + | # will make `window-theme` work properly and will also allow Ghostty to |
|
| 2146 | + | # properly respond to system theme changes, light/dark mode changing, etc. |
|
| 2147 | + | # This requires a GTK4 desktop with a GTK4 theme. |
|
| 2148 | + | # |
|
| 2149 | + | # If you are running GTK3 or have a GTK3 theme, you may have to set this |
|
| 2150 | + | # to false to get your theme picked up properly. Having this set to true |
|
| 2151 | + | # with GTK3 should not cause any problems, but it may not work exactly as |
|
| 2152 | + | # expected. |
|
| 2153 | + | # |
|
| 2154 | + | # This configuration only has an effect if Ghostty was built with |
|
| 2155 | + | # Adwaita support. |
|
| 2156 | + | gtk-adwaita = true |
|
| 2157 | + | ||
| 2158 | + | # If `true` (default), applications running in the terminal can show desktop |
|
| 2159 | + | # notifications using certain escape sequences such as OSC 9 or OSC 777. |
|
| 2160 | + | desktop-notifications = true |
|
| 2161 | + | ||
| 2162 | + | # If `true`, the bold text will use the bright color palette. |
|
| 2163 | + | bold-is-bright = false |
|
| 2164 | + | ||
| 2165 | + | # This will be used to set the `TERM` environment variable. |
|
| 2166 | + | # HACK: We set this with an `xterm` prefix because vim uses that to enable key |
|
| 2167 | + | # protocols (specifically this will enable `modifyOtherKeys`), among other |
|
| 2168 | + | # features. An option exists in vim to modify this: `:set |
|
| 2169 | + | # keyprotocol=ghostty:kitty`, however a bug in the implementation prevents it |
|
| 2170 | + | # from working properly. https://github.com/vim/vim/pull/13211 fixes this. |
|
| 2171 | + | term = xterm-ghostty |
|
| 2172 | + | ||
| 2173 | + | # String to send when we receive `ENQ` (`0x05`) from the command that we are |
|
| 2174 | + | # running. Defaults to an empty string if not set. |
|
| 2175 | + | enquiry-response = |
|
| 2176 | + | ||
| 2177 | + | # Control the auto-update functionality of Ghostty. This is only supported |
|
| 2178 | + | # on macOS currently, since Linux builds are distributed via package |
|
| 2179 | + | # managers that are not centrally controlled by Ghostty. |
|
| 2180 | + | # |
|
| 2181 | + | # Checking or downloading an update does not send any information to |
|
| 2182 | + | # the project beyond standard network information mandated by the |
|
| 2183 | + | # underlying protocols. To put it another way: Ghostty doesn't explicitly |
|
| 2184 | + | # add any tracking to the update process. The update process works by |
|
| 2185 | + | # downloading information about the latest version and comparing it |
|
| 2186 | + | # client-side to the current version. |
|
| 2187 | + | # |
|
| 2188 | + | # Valid values are: |
|
| 2189 | + | # |
|
| 2190 | + | # * `off` - Disable auto-updates. |
|
| 2191 | + | # * `check` - Check for updates and notify the user if an update is |
|
| 2192 | + | # available, but do not automatically download or install the update. |
|
| 2193 | + | # * `download` - Check for updates, automatically download the update, |
|
| 2194 | + | # notify the user, but do not automatically install the update. |
|
| 2195 | + | # |
|
| 2196 | + | # The default value is `check`. |
|
| 2197 | + | # |
|
| 2198 | + | # Changing this value at runtime works after a small delay. |
|
| 2199 | + | auto-update = check |
|
| 2200 | + | ||
| 2201 | + | # The release channel to use for auto-updates. |
|
| 2202 | + | # |
|
| 2203 | + | # The default value of this matches the release channel of the currently |
|
| 2204 | + | # running Ghostty version. If you download a pre-release version of Ghostty |
|
| 2205 | + | # then this will be set to `tip` and you will receive pre-release updates. |
|
| 2206 | + | # If you download a stable version of Ghostty then this will be set to |
|
| 2207 | + | # `stable` and you will receive stable updates. |
|
| 2208 | + | # |
|
| 2209 | + | # Valid values are: |
|
| 2210 | + | # |
|
| 2211 | + | # * `stable` - Stable, tagged releases such as "1.0.0". |
|
| 2212 | + | # * `tip` - Pre-release versions generated from each commit to the |
|
| 2213 | + | # main branch. This is the version that was in use during private |
|
| 2214 | + | # beta testing by thousands of people. It is generally stable but |
|
| 2215 | + | # will likely have more bugs than the stable channel. |
|
| 2216 | + | # |
|
| 2217 | + | # Changing this configuration requires a full restart of |
|
| 2218 | + | # Ghostty to take effect. |
|
| 2219 | + | # |
|
| 2220 | + | # This only works on macOS since only macOS has an auto-update feature. |
|
| 2221 | + | auto-update-channel = |
|
| 2222 | + |
| 1 | - | /Users/stevedylandev/.config/lazygit/config.yml |
| 1 | - | /Users/stevedylandev/.config/lazygit/state.yml |
|
| 1 | + | lastupdatecheck: 0 |
|
| 2 | + | recentrepos: |
|
| 3 | + | - /Users/stevedsimkins/Developer/steve-dylan-photo-nextjs |
|
| 4 | + | startuppopupversion: 5 |
|
| 5 | + | customcommandshistory: [] |
|
| 6 | + | hidecommandlog: false |
| 1 | - | /Users/stevedylandev/.config/nushell/black-metal-bathory.nu |
|
| 1 | + | # Retrieve the theme settings |
|
| 2 | + | export def main [] { |
|
| 3 | + | return { |
|
| 4 | + | binary: '#999999' |
|
| 5 | + | block: '#888888' |
|
| 6 | + | cell-path: '#c1c1c1' |
|
| 7 | + | closure: '#aaaaaa' |
|
| 8 | + | custom: '#c1c1c1' |
|
| 9 | + | duration: '#e78a53' |
|
| 10 | + | float: '#5f8787' |
|
| 11 | + | glob: '#c1c1c1' |
|
| 12 | + | int: '#999999' |
|
| 13 | + | list: '#aaaaaa' |
|
| 14 | + | nothing: '#5f8787' |
|
| 15 | + | range: '#e78a53' |
|
| 16 | + | record: '#aaaaaa' |
|
| 17 | + | string: '#fbcb97' |
|
| 18 | + | ||
| 19 | + | bool: {|| if $in { '#aaaaaa' } else { '#e78a53' } } |
|
| 20 | + | ||
| 21 | + | date: {|| (date now) - $in | |
|
| 22 | + | if $in < 1hr { |
|
| 23 | + | { fg: '#5f8787' attr: 'b' } |
|
| 24 | + | } else if $in < 6hr { |
|
| 25 | + | '#5f8787' |
|
| 26 | + | } else if $in < 1day { |
|
| 27 | + | '#e78a53' |
|
| 28 | + | } else if $in < 3day { |
|
| 29 | + | '#fbcb97' |
|
| 30 | + | } else if $in < 1wk { |
|
| 31 | + | { fg: '#fbcb97' attr: 'b' } |
|
| 32 | + | } else if $in < 6wk { |
|
| 33 | + | '#aaaaaa' |
|
| 34 | + | } else if $in < 52wk { |
|
| 35 | + | '#888888' |
|
| 36 | + | } else { 'dark_gray' } |
|
| 37 | + | } |
|
| 38 | + | ||
| 39 | + | filesize: {|e| |
|
| 40 | + | if $e == 0b { |
|
| 41 | + | '#c1c1c1' |
|
| 42 | + | } else if $e < 1mb { |
|
| 43 | + | '#aaaaaa' |
|
| 44 | + | } else {{ fg: '#888888' }} |
|
| 45 | + | } |
|
| 46 | + | ||
| 47 | + | shape_and: { fg: '#999999' attr: 'b' } |
|
| 48 | + | shape_binary: { fg: '#999999' attr: 'b' } |
|
| 49 | + | shape_block: { fg: '#888888' attr: 'b' } |
|
| 50 | + | shape_bool: '#aaaaaa' |
|
| 51 | + | shape_closure: { fg: '#aaaaaa' attr: 'b' } |
|
| 52 | + | shape_custom: '#fbcb97' |
|
| 53 | + | shape_datetime: { fg: '#aaaaaa' attr: 'b' } |
|
| 54 | + | shape_directory: '#aaaaaa' |
|
| 55 | + | shape_external: '#aaaaaa' |
|
| 56 | + | shape_external_resolved: '#aaaaaa' |
|
| 57 | + | shape_externalarg: { fg: '#fbcb97' attr: 'b' } |
|
| 58 | + | shape_filepath: '#aaaaaa' |
|
| 59 | + | shape_flag: { fg: '#888888' attr: 'b' } |
|
| 60 | + | shape_float: { fg: '#5f8787' attr: 'b' } |
|
| 61 | + | shape_garbage: { fg: '#FFFFFF' bg: '#FF0000' attr: 'b' } |
|
| 62 | + | shape_glob_interpolation: { fg: '#aaaaaa' attr: 'b' } |
|
| 63 | + | shape_globpattern: { fg: '#aaaaaa' attr: 'b' } |
|
| 64 | + | shape_int: { fg: '#999999' attr: 'b' } |
|
| 65 | + | shape_internalcall: { fg: '#aaaaaa' attr: 'b' } |
|
| 66 | + | shape_keyword: { fg: '#999999' attr: 'b' } |
|
| 67 | + | shape_list: { fg: '#aaaaaa' attr: 'b' } |
|
| 68 | + | shape_literal: '#888888' |
|
| 69 | + | shape_match_pattern: '#fbcb97' |
|
| 70 | + | shape_matching_brackets: { attr: 'u' } |
|
| 71 | + | shape_nothing: '#5f8787' |
|
| 72 | + | shape_operator: '#e78a53' |
|
| 73 | + | shape_or: { fg: '#999999' attr: 'b' } |
|
| 74 | + | shape_pipe: { fg: '#999999' attr: 'b' } |
|
| 75 | + | shape_range: { fg: '#e78a53' attr: 'b' } |
|
| 76 | + | shape_raw_string: { fg: '#c1c1c1' attr: 'b' } |
|
| 77 | + | shape_record: { fg: '#aaaaaa' attr: 'b' } |
|
| 78 | + | shape_redirection: { fg: '#999999' attr: 'b' } |
|
| 79 | + | shape_signature: { fg: '#fbcb97' attr: 'b' } |
|
| 80 | + | shape_string: '#fbcb97' |
|
| 81 | + | shape_string_interpolation: { fg: '#aaaaaa' attr: 'b' } |
|
| 82 | + | shape_table: { fg: '#888888' attr: 'b' } |
|
| 83 | + | shape_vardecl: { fg: '#888888' attr: 'u' } |
|
| 84 | + | shape_variable: '#999999' |
|
| 85 | + | ||
| 86 | + | foreground: '#c1c1c1' |
|
| 87 | + | background: '#000000' |
|
| 88 | + | cursor: '#c1c1c1' |
|
| 89 | + | ||
| 90 | + | empty: '#888888' |
|
| 91 | + | header: { fg: '#fbcb97' attr: 'b' } |
|
| 92 | + | hints: '#333333' |
|
| 93 | + | leading_trailing_space_bg: { attr: 'n' } |
|
| 94 | + | row_index: { fg: '#fbcb97' attr: 'b' } |
|
| 95 | + | search_result: { fg: '#5f8787' bg: '#c1c1c1' } |
|
| 96 | + | separator: '#c1c1c1' |
|
| 97 | + | } |
|
| 98 | + | } |
|
| 99 | + | ||
| 100 | + | # Update the Nushell configuration |
|
| 101 | + | export def --env "set color_config" [] { |
|
| 102 | + | $env.config.color_config = (main) |
|
| 103 | + | } |
|
| 104 | + | ||
| 105 | + | # Update terminal colors |
|
| 106 | + | export def "update terminal" [] { |
|
| 107 | + | let theme = (main) |
|
| 108 | + | ||
| 109 | + | # Set terminal colors |
|
| 110 | + | let osc_screen_foreground_color = '10;' |
|
| 111 | + | let osc_screen_background_color = '11;' |
|
| 112 | + | let osc_cursor_color = '12;' |
|
| 113 | + | ||
| 114 | + | $" |
|
| 115 | + | (ansi -o $osc_screen_foreground_color)($theme.foreground)(char bel) |
|
| 116 | + | (ansi -o $osc_screen_background_color)($theme.background)(char bel) |
|
| 117 | + | (ansi -o $osc_cursor_color)($theme.cursor)(char bel) |
|
| 118 | + | " |
|
| 119 | + | # Line breaks above are just for source readability |
|
| 120 | + | # but create extra whitespace when activating. Collapse |
|
| 121 | + | # to one line and print with no-newline |
|
| 122 | + | | str replace --all "\n" '' |
|
| 123 | + | | print -n $"($in)\r" |
|
| 124 | + | } |
|
| 125 | + | ||
| 126 | + | export module activate { |
|
| 127 | + | export-env { |
|
| 128 | + | set color_config |
|
| 129 | + | update terminal |
|
| 130 | + | } |
|
| 131 | + | } |
|
| 132 | + | ||
| 133 | + | # Activate the theme when sourced |
|
| 134 | + | use activate |
| 1 | - | /Users/stevedylandev/.config/nushell/config.nu |
|
| 1 | + | # Nushell Config File |
|
| 2 | + | # |
|
| 3 | + | # version = "0.99.1" |
|
| 4 | + | ||
| 5 | + | # For more information on defining custom themes, see |
|
| 6 | + | # https://www.nushell.sh/book/coloring_and_theming.html |
|
| 7 | + | # And here is the theme collection |
|
| 8 | + | # https://github.com/nushell/nu_scripts/tree/main/themes |
|
| 9 | + | let dark_theme = { |
|
| 10 | + | # color for nushell primitives |
|
| 11 | + | separator: white |
|
| 12 | + | leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off |
|
| 13 | + | header: green_bold |
|
| 14 | + | empty: blue |
|
| 15 | + | # Closures can be used to choose colors for specific values. |
|
| 16 | + | # The value (in this case, a bool) is piped into the closure. |
|
| 17 | + | # eg) {|| if $in { 'light_cyan' } else { 'light_gray' } } |
|
| 18 | + | bool: light_cyan |
|
| 19 | + | int: white |
|
| 20 | + | filesize: cyan |
|
| 21 | + | duration: white |
|
| 22 | + | date: purple |
|
| 23 | + | range: white |
|
| 24 | + | float: white |
|
| 25 | + | string: white |
|
| 26 | + | nothing: white |
|
| 27 | + | binary: white |
|
| 28 | + | cell-path: white |
|
| 29 | + | row_index: green_bold |
|
| 30 | + | record: white |
|
| 31 | + | list: white |
|
| 32 | + | block: white |
|
| 33 | + | hints: dark_gray |
|
| 34 | + | search_result: { bg: red fg: white } |
|
| 35 | + | shape_and: purple_bold |
|
| 36 | + | shape_binary: purple_bold |
|
| 37 | + | shape_block: blue_bold |
|
| 38 | + | shape_bool: light_cyan |
|
| 39 | + | shape_closure: green_bold |
|
| 40 | + | shape_custom: green |
|
| 41 | + | shape_datetime: cyan_bold |
|
| 42 | + | shape_directory: cyan |
|
| 43 | + | shape_external: cyan |
|
| 44 | + | shape_externalarg: green_bold |
|
| 45 | + | shape_external_resolved: light_yellow_bold |
|
| 46 | + | shape_filepath: cyan |
|
| 47 | + | shape_flag: blue_bold |
|
| 48 | + | shape_float: purple_bold |
|
| 49 | + | # shapes are used to change the cli syntax highlighting |
|
| 50 | + | shape_garbage: { fg: white bg: red attr: b } |
|
| 51 | + | shape_glob_interpolation: cyan_bold |
|
| 52 | + | shape_globpattern: cyan_bold |
|
| 53 | + | shape_int: purple_bold |
|
| 54 | + | shape_internalcall: cyan_bold |
|
| 55 | + | shape_keyword: cyan_bold |
|
| 56 | + | shape_list: cyan_bold |
|
| 57 | + | shape_literal: blue |
|
| 58 | + | shape_match_pattern: green |
|
| 59 | + | shape_matching_brackets: { attr: u } |
|
| 60 | + | shape_nothing: light_cyan |
|
| 61 | + | shape_operator: yellow |
|
| 62 | + | shape_or: purple_bold |
|
| 63 | + | shape_pipe: purple_bold |
|
| 64 | + | shape_range: yellow_bold |
|
| 65 | + | shape_record: cyan_bold |
|
| 66 | + | shape_redirection: purple_bold |
|
| 67 | + | shape_signature: green_bold |
|
| 68 | + | shape_string: green |
|
| 69 | + | shape_string_interpolation: cyan_bold |
|
| 70 | + | shape_table: blue_bold |
|
| 71 | + | shape_variable: purple |
|
| 72 | + | shape_vardecl: purple |
|
| 73 | + | shape_raw_string: light_purple |
|
| 74 | + | } |
|
| 75 | + | ||
| 76 | + | let light_theme = { |
|
| 77 | + | # color for nushell primitives |
|
| 78 | + | separator: dark_gray |
|
| 79 | + | leading_trailing_space_bg: { attr: n } # no fg, no bg, attr none effectively turns this off |
|
| 80 | + | header: green_bold |
|
| 81 | + | empty: blue |
|
| 82 | + | # Closures can be used to choose colors for specific values. |
|
| 83 | + | # The value (in this case, a bool) is piped into the closure. |
|
| 84 | + | # eg) {|| if $in { 'dark_cyan' } else { 'dark_gray' } } |
|
| 85 | + | bool: dark_cyan |
|
| 86 | + | int: dark_gray |
|
| 87 | + | filesize: cyan_bold |
|
| 88 | + | duration: dark_gray |
|
| 89 | + | date: purple |
|
| 90 | + | range: dark_gray |
|
| 91 | + | float: dark_gray |
|
| 92 | + | string: dark_gray |
|
| 93 | + | nothing: dark_gray |
|
| 94 | + | binary: dark_gray |
|
| 95 | + | cell-path: dark_gray |
|
| 96 | + | row_index: green_bold |
|
| 97 | + | record: dark_gray |
|
| 98 | + | list: dark_gray |
|
| 99 | + | block: dark_gray |
|
| 100 | + | hints: dark_gray |
|
| 101 | + | search_result: { fg: white bg: red } |
|
| 102 | + | shape_and: purple_bold |
|
| 103 | + | shape_binary: purple_bold |
|
| 104 | + | shape_block: blue_bold |
|
| 105 | + | shape_bool: light_cyan |
|
| 106 | + | shape_closure: green_bold |
|
| 107 | + | shape_custom: green |
|
| 108 | + | shape_datetime: cyan_bold |
|
| 109 | + | shape_directory: cyan |
|
| 110 | + | shape_external: cyan |
|
| 111 | + | shape_externalarg: green_bold |
|
| 112 | + | shape_external_resolved: light_purple_bold |
|
| 113 | + | shape_filepath: cyan |
|
| 114 | + | shape_flag: blue_bold |
|
| 115 | + | shape_float: purple_bold |
|
| 116 | + | # shapes are used to change the cli syntax highlighting |
|
| 117 | + | shape_garbage: { fg: white bg: red attr: b } |
|
| 118 | + | shape_glob_interpolation: cyan_bold |
|
| 119 | + | shape_globpattern: cyan_bold |
|
| 120 | + | shape_int: purple_bold |
|
| 121 | + | shape_internalcall: cyan_bold |
|
| 122 | + | shape_keyword: cyan_bold |
|
| 123 | + | shape_list: cyan_bold |
|
| 124 | + | shape_literal: blue |
|
| 125 | + | shape_match_pattern: green |
|
| 126 | + | shape_matching_brackets: { attr: u } |
|
| 127 | + | shape_nothing: light_cyan |
|
| 128 | + | shape_operator: yellow |
|
| 129 | + | shape_or: purple_bold |
|
| 130 | + | shape_pipe: purple_bold |
|
| 131 | + | shape_range: yellow_bold |
|
| 132 | + | shape_record: cyan_bold |
|
| 133 | + | shape_redirection: purple_bold |
|
| 134 | + | shape_signature: green_bold |
|
| 135 | + | shape_string: green |
|
| 136 | + | shape_string_interpolation: cyan_bold |
|
| 137 | + | shape_table: blue_bold |
|
| 138 | + | shape_variable: purple |
|
| 139 | + | shape_vardecl: purple |
|
| 140 | + | shape_raw_string: light_purple |
|
| 141 | + | } |
|
| 142 | + | ||
| 143 | + | # External completer example |
|
| 144 | + | # let carapace_completer = {|spans| |
|
| 145 | + | # carapace $spans.0 nushell ...$spans | from json |
|
| 146 | + | # } |
|
| 147 | + | ||
| 148 | + | # The default config record. This is where much of your global configuration is setup. |
|
| 149 | + | $env.config = { |
|
| 150 | + | show_banner: false # true or false to enable or disable the welcome banner at startup |
|
| 151 | + | ||
| 152 | + | ls: { |
|
| 153 | + | use_ls_colors: false # use the LS_COLORS environment variable to colorize output |
|
| 154 | + | clickable_links: true # enable or disable clickable links. Your terminal has to support links. |
|
| 155 | + | } |
|
| 156 | + | ||
| 157 | + | rm: { |
|
| 158 | + | always_trash: true # always act as if -t was given. Can be overridden with -p |
|
| 159 | + | } |
|
| 160 | + | ||
| 161 | + | table: { |
|
| 162 | + | mode: rounded # basic, compact, compact_double, light, thin, with_love, rounded, reinforced, heavy, none, other |
|
| 163 | + | index_mode: always # "always" show indexes, "never" show indexes, "auto" = show indexes when a table has "index" column |
|
| 164 | + | show_empty: true # show 'empty list' and 'empty record' placeholders for command output |
|
| 165 | + | padding: { left: 1, right: 1 } # a left right padding of each column in a table |
|
| 166 | + | trim: { |
|
| 167 | + | methodology: wrapping # wrapping or truncating |
|
| 168 | + | wrapping_try_keep_words: true # A strategy used by the 'wrapping' methodology |
|
| 169 | + | truncating_suffix: "..." # A suffix used by the 'truncating' methodology |
|
| 170 | + | } |
|
| 171 | + | header_on_separator: false # show header text on separator/border line |
|
| 172 | + | # abbreviated_row_count: 10 # limit data rows from top and bottom after reaching a set point |
|
| 173 | + | } |
|
| 174 | + | ||
| 175 | + | error_style: "fancy" # "fancy" or "plain" for screen reader-friendly error messages |
|
| 176 | + | ||
| 177 | + | # Whether an error message should be printed if an error of a certain kind is triggered. |
|
| 178 | + | display_errors: { |
|
| 179 | + | exit_code: false # assume the external command prints an error message |
|
| 180 | + | # Core dump errors are always printed, and SIGPIPE never triggers an error. |
|
| 181 | + | # The setting below controls message printing for termination by all other signals. |
|
| 182 | + | termination_signal: true |
|
| 183 | + | } |
|
| 184 | + | ||
| 185 | + | # datetime_format determines what a datetime rendered in the shell would look like. |
|
| 186 | + | # Behavior without this configuration point will be to "humanize" the datetime display, |
|
| 187 | + | # showing something like "a day ago." |
|
| 188 | + | datetime_format: { |
|
| 189 | + | # normal: '%a, %d %b %Y %H:%M:%S %z' # shows up in displays of variables or other datetime's outside of tables |
|
| 190 | + | # table: '%m/%d/%y %I:%M:%S%p' # generally shows up in tabular outputs such as ls. commenting this out will change it to the default human readable datetime format |
|
| 191 | + | } |
|
| 192 | + | ||
| 193 | + | explore: { |
|
| 194 | + | status_bar_background: { fg: "#1D1F21", bg: "#C4C9C6" }, |
|
| 195 | + | command_bar_text: { fg: "#C4C9C6" }, |
|
| 196 | + | highlight: { fg: "black", bg: "yellow" }, |
|
| 197 | + | status: { |
|
| 198 | + | error: { fg: "white", bg: "red" }, |
|
| 199 | + | warn: {} |
|
| 200 | + | info: {} |
|
| 201 | + | }, |
|
| 202 | + | selected_cell: { bg: light_blue }, |
|
| 203 | + | } |
|
| 204 | + | ||
| 205 | + | history: { |
|
| 206 | + | max_size: 100_000 # Session has to be reloaded for this to take effect |
|
| 207 | + | sync_on_enter: true # Enable to share history between multiple sessions, else you have to close the session to write history to file |
|
| 208 | + | file_format: "plaintext" # "sqlite" or "plaintext" |
|
| 209 | + | isolation: false # only available with sqlite file_format. true enables history isolation, false disables it. true will allow the history to be isolated to the current session using up/down arrows. false will allow the history to be shared across all sessions. |
|
| 210 | + | } |
|
| 211 | + | ||
| 212 | + | completions: { |
|
| 213 | + | case_sensitive: false # set to true to enable case-sensitive completions |
|
| 214 | + | quick: true # set this to false to prevent auto-selecting completions when only one remains |
|
| 215 | + | partial: true # set this to false to prevent partial filling of the prompt |
|
| 216 | + | algorithm: "prefix" # prefix or fuzzy |
|
| 217 | + | sort: "smart" # "smart" (alphabetical for prefix matching, fuzzy score for fuzzy matching) or "alphabetical" |
|
| 218 | + | external: { |
|
| 219 | + | enable: true # set to false to prevent nushell looking into $env.PATH to find more suggestions, `false` recommended for WSL users as this look up may be very slow |
|
| 220 | + | max_results: 100 # setting it lower can improve completion performance at the cost of omitting some options |
|
| 221 | + | completer: null # check 'carapace_completer' above as an example |
|
| 222 | + | } |
|
| 223 | + | use_ls_colors: true # set this to true to enable file/path/directory completions using LS_COLORS |
|
| 224 | + | } |
|
| 225 | + | ||
| 226 | + | ||
| 227 | + | cursor_shape: { |
|
| 228 | + | emacs: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (line is the default) |
|
| 229 | + | vi_insert: block # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (block is the default) |
|
| 230 | + | vi_normal: line # block, underscore, line, blink_block, blink_underscore, blink_line, inherit to skip setting cursor shape (underscore is the default) |
|
| 231 | + | } |
|
| 232 | + | ||
| 233 | + | color_config: $dark_theme # if you want a more interesting theme, you can replace the empty record with `$dark_theme`, `$light_theme` or another custom record |
|
| 234 | + | footer_mode: 25 # always, never, number_of_rows, auto |
|
| 235 | + | float_precision: 2 # the precision for displaying floats in tables |
|
| 236 | + | buffer_editor: null # command that will be used to edit the current line buffer with ctrl+o, if unset fallback to $env.EDITOR and $env.VISUAL |
|
| 237 | + | use_ansi_coloring: true |
|
| 238 | + | bracketed_paste: true # enable bracketed paste, currently useless on windows |
|
| 239 | + | edit_mode: vi # emacs, vi |
|
| 240 | + | shell_integration: { |
|
| 241 | + | # osc2 abbreviates the path if in the home_dir, sets the tab/window title, shows the running command in the tab/window title |
|
| 242 | + | osc2: true |
|
| 243 | + | # osc7 is a way to communicate the path to the terminal, this is helpful for spawning new tabs in the same directory |
|
| 244 | + | osc7: true |
|
| 245 | + | # osc8 is also implemented as the deprecated setting ls.show_clickable_links, it shows clickable links in ls output if your terminal supports it. show_clickable_links is deprecated in favor of osc8 |
|
| 246 | + | osc8: true |
|
| 247 | + | # osc9_9 is from ConEmu and is starting to get wider support. It's similar to osc7 in that it communicates the path to the terminal |
|
| 248 | + | osc9_9: false |
|
| 249 | + | # osc133 is several escapes invented by Final Term which include the supported ones below. |
|
| 250 | + | # 133;A - Mark prompt start |
|
| 251 | + | # 133;B - Mark prompt end |
|
| 252 | + | # 133;C - Mark pre-execution |
|
| 253 | + | # 133;D;exit - Mark execution finished with exit code |
|
| 254 | + | # This is used to enable terminals to know where the prompt is, the command is, where the command finishes, and where the output of the command is |
|
| 255 | + | osc133: true |
|
| 256 | + | # osc633 is closely related to osc133 but only exists in visual studio code (vscode) and supports their shell integration features |
|
| 257 | + | # 633;A - Mark prompt start |
|
| 258 | + | # 633;B - Mark prompt end |
|
| 259 | + | # 633;C - Mark pre-execution |
|
| 260 | + | # 633;D;exit - Mark execution finished with exit code |
|
| 261 | + | # 633;E - Explicitly set the command line with an optional nonce |
|
| 262 | + | # 633;P;Cwd=<path> - Mark the current working directory and communicate it to the terminal |
|
| 263 | + | # and also helps with the run recent menu in vscode |
|
| 264 | + | osc633: true |
|
| 265 | + | # reset_application_mode is escape \x1b[?1l and was added to help ssh work better |
|
| 266 | + | reset_application_mode: true |
|
| 267 | + | } |
|
| 268 | + | render_right_prompt_on_last_line: false # true or false to enable or disable right prompt to be rendered on last line of the prompt. |
|
| 269 | + | use_kitty_protocol: false # enables keyboard enhancement protocol implemented by kitty console, only if your terminal support this. |
|
| 270 | + | highlight_resolved_externals: false # true enables highlighting of external commands in the repl resolved by which. |
|
| 271 | + | recursion_limit: 50 # the maximum number of times nushell allows recursion before stopping it |
|
| 272 | + | ||
| 273 | + | plugins: {} # Per-plugin configuration. See https://www.nushell.sh/contributor-book/plugins.html#configuration. |
|
| 274 | + | ||
| 275 | + | plugin_gc: { |
|
| 276 | + | # Configuration for plugin garbage collection |
|
| 277 | + | default: { |
|
| 278 | + | enabled: true # true to enable stopping of inactive plugins |
|
| 279 | + | stop_after: 10sec # how long to wait after a plugin is inactive to stop it |
|
| 280 | + | } |
|
| 281 | + | plugins: { |
|
| 282 | + | # alternate configuration for specific plugins, by name, for example: |
|
| 283 | + | # |
|
| 284 | + | # gstat: { |
|
| 285 | + | # enabled: false |
|
| 286 | + | # } |
|
| 287 | + | } |
|
| 288 | + | } |
|
| 289 | + | ||
| 290 | + | hooks: { |
|
| 291 | + | pre_prompt: [{ null }] # run before the prompt is shown |
|
| 292 | + | pre_execution: [{ null }] # run before the repl input is run |
|
| 293 | + | env_change: { |
|
| 294 | + | PWD: [{|before, after| null }] # run if the PWD environment is different since the last repl input |
|
| 295 | + | } |
|
| 296 | + | display_output: "if (term size).columns >= 100 { table -e } else { table }" # run to display the output of a pipeline |
|
| 297 | + | command_not_found: { null } # return an error message when a command is not found |
|
| 298 | + | } |
|
| 299 | + | ||
| 300 | + | menus: [ |
|
| 301 | + | # Configuration for default nushell menus |
|
| 302 | + | # Note the lack of source parameter |
|
| 303 | + | { |
|
| 304 | + | name: completion_menu |
|
| 305 | + | only_buffer_difference: false |
|
| 306 | + | marker: "| " |
|
| 307 | + | type: { |
|
| 308 | + | layout: columnar |
|
| 309 | + | columns: 4 |
|
| 310 | + | col_width: 20 # Optional value. If missing all the screen width is used to calculate column width |
|
| 311 | + | col_padding: 2 |
|
| 312 | + | } |
|
| 313 | + | style: { |
|
| 314 | + | text: green |
|
| 315 | + | selected_text: { attr: r } |
|
| 316 | + | description_text: yellow |
|
| 317 | + | match_text: { attr: u } |
|
| 318 | + | selected_match_text: { attr: ur } |
|
| 319 | + | } |
|
| 320 | + | } |
|
| 321 | + | { |
|
| 322 | + | name: ide_completion_menu |
|
| 323 | + | only_buffer_difference: false |
|
| 324 | + | marker: "| " |
|
| 325 | + | type: { |
|
| 326 | + | layout: ide |
|
| 327 | + | min_completion_width: 0, |
|
| 328 | + | max_completion_width: 50, |
|
| 329 | + | max_completion_height: 10, # will be limited by the available lines in the terminal |
|
| 330 | + | padding: 0, |
|
| 331 | + | border: true, |
|
| 332 | + | cursor_offset: 0, |
|
| 333 | + | description_mode: "prefer_right" |
|
| 334 | + | min_description_width: 0 |
|
| 335 | + | max_description_width: 50 |
|
| 336 | + | max_description_height: 10 |
|
| 337 | + | description_offset: 1 |
|
| 338 | + | # If true, the cursor pos will be corrected, so the suggestions match up with the typed text |
|
| 339 | + | # |
|
| 340 | + | # C:\> str |
|
| 341 | + | # str join |
|
| 342 | + | # str trim |
|
| 343 | + | # str split |
|
| 344 | + | correct_cursor_pos: false |
|
| 345 | + | } |
|
| 346 | + | style: { |
|
| 347 | + | text: green |
|
| 348 | + | selected_text: { attr: r } |
|
| 349 | + | description_text: yellow |
|
| 350 | + | match_text: { attr: u } |
|
| 351 | + | selected_match_text: { attr: ur } |
|
| 352 | + | } |
|
| 353 | + | } |
|
| 354 | + | { |
|
| 355 | + | name: history_menu |
|
| 356 | + | only_buffer_difference: true |
|
| 357 | + | marker: "? " |
|
| 358 | + | type: { |
|
| 359 | + | layout: list |
|
| 360 | + | page_size: 10 |
|
| 361 | + | } |
|
| 362 | + | style: { |
|
| 363 | + | text: green |
|
| 364 | + | selected_text: green_reverse |
|
| 365 | + | description_text: yellow |
|
| 366 | + | } |
|
| 367 | + | } |
|
| 368 | + | { |
|
| 369 | + | name: help_menu |
|
| 370 | + | only_buffer_difference: true |
|
| 371 | + | marker: "? " |
|
| 372 | + | type: { |
|
| 373 | + | layout: description |
|
| 374 | + | columns: 4 |
|
| 375 | + | col_width: 20 # Optional value. If missing all the screen width is used to calculate column width |
|
| 376 | + | col_padding: 2 |
|
| 377 | + | selection_rows: 4 |
|
| 378 | + | description_rows: 10 |
|
| 379 | + | } |
|
| 380 | + | style: { |
|
| 381 | + | text: green |
|
| 382 | + | selected_text: green_reverse |
|
| 383 | + | description_text: yellow |
|
| 384 | + | } |
|
| 385 | + | } |
|
| 386 | + | ] |
|
| 387 | + | ||
| 388 | + | keybindings: [ |
|
| 389 | + | { |
|
| 390 | + | name: completion_menu |
|
| 391 | + | modifier: none |
|
| 392 | + | keycode: tab |
|
| 393 | + | mode: [emacs vi_normal vi_insert] |
|
| 394 | + | event: { |
|
| 395 | + | until: [ |
|
| 396 | + | { send: menu name: completion_menu } |
|
| 397 | + | { send: menunext } |
|
| 398 | + | { edit: complete } |
|
| 399 | + | ] |
|
| 400 | + | } |
|
| 401 | + | } |
|
| 402 | + | { |
|
| 403 | + | name: completion_previous_menu |
|
| 404 | + | modifier: shift |
|
| 405 | + | keycode: backtab |
|
| 406 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 407 | + | event: { send: menuprevious } |
|
| 408 | + | } |
|
| 409 | + | { |
|
| 410 | + | name: ide_completion_menu |
|
| 411 | + | modifier: control |
|
| 412 | + | keycode: space |
|
| 413 | + | mode: [emacs vi_normal vi_insert] |
|
| 414 | + | event: { |
|
| 415 | + | until: [ |
|
| 416 | + | { send: menu name: ide_completion_menu } |
|
| 417 | + | { send: menunext } |
|
| 418 | + | { edit: complete } |
|
| 419 | + | ] |
|
| 420 | + | } |
|
| 421 | + | } |
|
| 422 | + | { |
|
| 423 | + | name: history_menu |
|
| 424 | + | modifier: control |
|
| 425 | + | keycode: char_r |
|
| 426 | + | mode: [emacs, vi_insert, vi_normal] |
|
| 427 | + | event: { send: menu name: history_menu } |
|
| 428 | + | } |
|
| 429 | + | { |
|
| 430 | + | name: help_menu |
|
| 431 | + | modifier: none |
|
| 432 | + | keycode: f1 |
|
| 433 | + | mode: [emacs, vi_insert, vi_normal] |
|
| 434 | + | event: { send: menu name: help_menu } |
|
| 435 | + | } |
|
| 436 | + | { |
|
| 437 | + | name: next_page_menu |
|
| 438 | + | modifier: control |
|
| 439 | + | keycode: char_x |
|
| 440 | + | mode: emacs |
|
| 441 | + | event: { send: menupagenext } |
|
| 442 | + | } |
|
| 443 | + | { |
|
| 444 | + | name: undo_or_previous_page_menu |
|
| 445 | + | modifier: control |
|
| 446 | + | keycode: char_z |
|
| 447 | + | mode: emacs |
|
| 448 | + | event: { |
|
| 449 | + | until: [ |
|
| 450 | + | { send: menupageprevious } |
|
| 451 | + | { edit: undo } |
|
| 452 | + | ] |
|
| 453 | + | } |
|
| 454 | + | } |
|
| 455 | + | { |
|
| 456 | + | name: escape |
|
| 457 | + | modifier: none |
|
| 458 | + | keycode: escape |
|
| 459 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 460 | + | event: { send: esc } # NOTE: does not appear to work |
|
| 461 | + | } |
|
| 462 | + | { |
|
| 463 | + | name: cancel_command |
|
| 464 | + | modifier: control |
|
| 465 | + | keycode: char_c |
|
| 466 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 467 | + | event: { send: ctrlc } |
|
| 468 | + | } |
|
| 469 | + | { |
|
| 470 | + | name: quit_shell |
|
| 471 | + | modifier: control |
|
| 472 | + | keycode: char_d |
|
| 473 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 474 | + | event: { send: ctrld } |
|
| 475 | + | } |
|
| 476 | + | { |
|
| 477 | + | name: clear_screen |
|
| 478 | + | modifier: control |
|
| 479 | + | keycode: char_l |
|
| 480 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 481 | + | event: { send: clearscreen } |
|
| 482 | + | } |
|
| 483 | + | { |
|
| 484 | + | name: search_history |
|
| 485 | + | modifier: control |
|
| 486 | + | keycode: char_q |
|
| 487 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 488 | + | event: { send: searchhistory } |
|
| 489 | + | } |
|
| 490 | + | { |
|
| 491 | + | name: open_command_editor |
|
| 492 | + | modifier: control |
|
| 493 | + | keycode: char_o |
|
| 494 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 495 | + | event: { send: openeditor } |
|
| 496 | + | } |
|
| 497 | + | { |
|
| 498 | + | name: move_up |
|
| 499 | + | modifier: none |
|
| 500 | + | keycode: up |
|
| 501 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 502 | + | event: { |
|
| 503 | + | until: [ |
|
| 504 | + | { send: menuup } |
|
| 505 | + | { send: up } |
|
| 506 | + | ] |
|
| 507 | + | } |
|
| 508 | + | } |
|
| 509 | + | { |
|
| 510 | + | name: move_down |
|
| 511 | + | modifier: none |
|
| 512 | + | keycode: down |
|
| 513 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 514 | + | event: { |
|
| 515 | + | until: [ |
|
| 516 | + | { send: menudown } |
|
| 517 | + | { send: down } |
|
| 518 | + | ] |
|
| 519 | + | } |
|
| 520 | + | } |
|
| 521 | + | { |
|
| 522 | + | name: move_left |
|
| 523 | + | modifier: none |
|
| 524 | + | keycode: left |
|
| 525 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 526 | + | event: { |
|
| 527 | + | until: [ |
|
| 528 | + | { send: menuleft } |
|
| 529 | + | { send: left } |
|
| 530 | + | ] |
|
| 531 | + | } |
|
| 532 | + | } |
|
| 533 | + | { |
|
| 534 | + | name: move_right_or_take_history_hint |
|
| 535 | + | modifier: none |
|
| 536 | + | keycode: right |
|
| 537 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 538 | + | event: { |
|
| 539 | + | until: [ |
|
| 540 | + | { send: historyhintcomplete } |
|
| 541 | + | { send: menuright } |
|
| 542 | + | { send: right } |
|
| 543 | + | ] |
|
| 544 | + | } |
|
| 545 | + | } |
|
| 546 | + | { |
|
| 547 | + | name: move_one_word_left |
|
| 548 | + | modifier: control |
|
| 549 | + | keycode: left |
|
| 550 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 551 | + | event: { edit: movewordleft } |
|
| 552 | + | } |
|
| 553 | + | { |
|
| 554 | + | name: move_one_word_right_or_take_history_hint |
|
| 555 | + | modifier: control |
|
| 556 | + | keycode: right |
|
| 557 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 558 | + | event: { |
|
| 559 | + | until: [ |
|
| 560 | + | { send: historyhintwordcomplete } |
|
| 561 | + | { edit: movewordright } |
|
| 562 | + | ] |
|
| 563 | + | } |
|
| 564 | + | } |
|
| 565 | + | { |
|
| 566 | + | name: move_to_line_start |
|
| 567 | + | modifier: none |
|
| 568 | + | keycode: home |
|
| 569 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 570 | + | event: { edit: movetolinestart } |
|
| 571 | + | } |
|
| 572 | + | { |
|
| 573 | + | name: move_to_line_start |
|
| 574 | + | modifier: control |
|
| 575 | + | keycode: char_a |
|
| 576 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 577 | + | event: { edit: movetolinestart } |
|
| 578 | + | } |
|
| 579 | + | { |
|
| 580 | + | name: move_to_line_end_or_take_history_hint |
|
| 581 | + | modifier: none |
|
| 582 | + | keycode: end |
|
| 583 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 584 | + | event: { |
|
| 585 | + | until: [ |
|
| 586 | + | { send: historyhintcomplete } |
|
| 587 | + | { edit: movetolineend } |
|
| 588 | + | ] |
|
| 589 | + | } |
|
| 590 | + | } |
|
| 591 | + | { |
|
| 592 | + | name: move_to_line_end_or_take_history_hint |
|
| 593 | + | modifier: control |
|
| 594 | + | keycode: char_e |
|
| 595 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 596 | + | event: { |
|
| 597 | + | until: [ |
|
| 598 | + | { send: historyhintcomplete } |
|
| 599 | + | { edit: movetolineend } |
|
| 600 | + | ] |
|
| 601 | + | } |
|
| 602 | + | } |
|
| 603 | + | { |
|
| 604 | + | name: move_to_line_start |
|
| 605 | + | modifier: control |
|
| 606 | + | keycode: home |
|
| 607 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 608 | + | event: { edit: movetolinestart } |
|
| 609 | + | } |
|
| 610 | + | { |
|
| 611 | + | name: move_to_line_end |
|
| 612 | + | modifier: control |
|
| 613 | + | keycode: end |
|
| 614 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 615 | + | event: { edit: movetolineend } |
|
| 616 | + | } |
|
| 617 | + | { |
|
| 618 | + | name: move_down |
|
| 619 | + | modifier: control |
|
| 620 | + | keycode: char_n |
|
| 621 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 622 | + | event: { |
|
| 623 | + | until: [ |
|
| 624 | + | { send: menudown } |
|
| 625 | + | { send: down } |
|
| 626 | + | ] |
|
| 627 | + | } |
|
| 628 | + | } |
|
| 629 | + | { |
|
| 630 | + | name: move_up |
|
| 631 | + | modifier: control |
|
| 632 | + | keycode: char_p |
|
| 633 | + | mode: [emacs, vi_normal, vi_insert] |
|
| 634 | + | event: { |
|
| 635 | + | until: [ |
|
| 636 | + | { send: menuup } |
|
| 637 | + | { send: up } |
|
| 638 | + | ] |
|
| 639 | + | } |
|
| 640 | + | } |
|
| 641 | + | { |
|
| 642 | + | name: delete_one_character_backward |
|
| 643 | + | modifier: none |
|
| 644 | + | keycode: backspace |
|
| 645 | + | mode: [emacs, vi_insert] |
|
| 646 | + | event: { edit: backspace } |
|
| 647 | + | } |
|
| 648 | + | { |
|
| 649 | + | name: delete_one_word_backward |
|
| 650 | + | modifier: control |
|
| 651 | + | keycode: backspace |
|
| 652 | + | mode: [emacs, vi_insert] |
|
| 653 | + | event: { edit: backspaceword } |
|
| 654 | + | } |
|
| 655 | + | { |
|
| 656 | + | name: delete_one_character_forward |
|
| 657 | + | modifier: none |
|
| 658 | + | keycode: delete |
|
| 659 | + | mode: [emacs, vi_insert] |
|
| 660 | + | event: { edit: delete } |
|
| 661 | + | } |
|
| 662 | + | { |
|
| 663 | + | name: delete_one_character_forward |
|
| 664 | + | modifier: control |
|
| 665 | + | keycode: delete |
|
| 666 | + | mode: [emacs, vi_insert] |
|
| 667 | + | event: { edit: delete } |
|
| 668 | + | } |
|
| 669 | + | { |
|
| 670 | + | name: delete_one_character_backward |
|
| 671 | + | modifier: control |
|
| 672 | + | keycode: char_h |
|
| 673 | + | mode: [emacs, vi_insert] |
|
| 674 | + | event: { edit: backspace } |
|
| 675 | + | } |
|
| 676 | + | { |
|
| 677 | + | name: delete_one_word_backward |
|
| 678 | + | modifier: control |
|
| 679 | + | keycode: char_w |
|
| 680 | + | mode: [emacs, vi_insert] |
|
| 681 | + | event: { edit: backspaceword } |
|
| 682 | + | } |
|
| 683 | + | { |
|
| 684 | + | name: move_left |
|
| 685 | + | modifier: none |
|
| 686 | + | keycode: backspace |
|
| 687 | + | mode: vi_normal |
|
| 688 | + | event: { edit: moveleft } |
|
| 689 | + | } |
|
| 690 | + | { |
|
| 691 | + | name: newline_or_run_command |
|
| 692 | + | modifier: none |
|
| 693 | + | keycode: enter |
|
| 694 | + | mode: emacs |
|
| 695 | + | event: { send: enter } |
|
| 696 | + | } |
|
| 697 | + | { |
|
| 698 | + | name: move_left |
|
| 699 | + | modifier: control |
|
| 700 | + | keycode: char_b |
|
| 701 | + | mode: emacs |
|
| 702 | + | event: { |
|
| 703 | + | until: [ |
|
| 704 | + | { send: menuleft } |
|
| 705 | + | { send: left } |
|
| 706 | + | ] |
|
| 707 | + | } |
|
| 708 | + | } |
|
| 709 | + | { |
|
| 710 | + | name: move_right_or_take_history_hint |
|
| 711 | + | modifier: control |
|
| 712 | + | keycode: char_f |
|
| 713 | + | mode: emacs |
|
| 714 | + | event: { |
|
| 715 | + | until: [ |
|
| 716 | + | { send: historyhintcomplete } |
|
| 717 | + | { send: menuright } |
|
| 718 | + | { send: right } |
|
| 719 | + | ] |
|
| 720 | + | } |
|
| 721 | + | } |
|
| 722 | + | { |
|
| 723 | + | name: redo_change |
|
| 724 | + | modifier: control |
|
| 725 | + | keycode: char_g |
|
| 726 | + | mode: emacs |
|
| 727 | + | event: { edit: redo } |
|
| 728 | + | } |
|
| 729 | + | { |
|
| 730 | + | name: undo_change |
|
| 731 | + | modifier: control |
|
| 732 | + | keycode: char_z |
|
| 733 | + | mode: emacs |
|
| 734 | + | event: { edit: undo } |
|
| 735 | + | } |
|
| 736 | + | { |
|
| 737 | + | name: paste_before |
|
| 738 | + | modifier: control |
|
| 739 | + | keycode: char_y |
|
| 740 | + | mode: emacs |
|
| 741 | + | event: { edit: pastecutbufferbefore } |
|
| 742 | + | } |
|
| 743 | + | { |
|
| 744 | + | name: cut_word_left |
|
| 745 | + | modifier: control |
|
| 746 | + | keycode: char_w |
|
| 747 | + | mode: emacs |
|
| 748 | + | event: { edit: cutwordleft } |
|
| 749 | + | } |
|
| 750 | + | { |
|
| 751 | + | name: cut_line_to_end |
|
| 752 | + | modifier: control |
|
| 753 | + | keycode: char_k |
|
| 754 | + | mode: emacs |
|
| 755 | + | event: { edit: cuttolineend } |
|
| 756 | + | } |
|
| 757 | + | { |
|
| 758 | + | name: cut_line_from_start |
|
| 759 | + | modifier: control |
|
| 760 | + | keycode: char_u |
|
| 761 | + | mode: emacs |
|
| 762 | + | event: { edit: cutfromstart } |
|
| 763 | + | } |
|
| 764 | + | { |
|
| 765 | + | name: swap_graphemes |
|
| 766 | + | modifier: control |
|
| 767 | + | keycode: char_t |
|
| 768 | + | mode: emacs |
|
| 769 | + | event: { edit: swapgraphemes } |
|
| 770 | + | } |
|
| 771 | + | { |
|
| 772 | + | name: move_one_word_left |
|
| 773 | + | modifier: alt |
|
| 774 | + | keycode: left |
|
| 775 | + | mode: emacs |
|
| 776 | + | event: { edit: movewordleft } |
|
| 777 | + | } |
|
| 778 | + | { |
|
| 779 | + | name: move_one_word_right_or_take_history_hint |
|
| 780 | + | modifier: alt |
|
| 781 | + | keycode: right |
|
| 782 | + | mode: emacs |
|
| 783 | + | event: { |
|
| 784 | + | until: [ |
|
| 785 | + | { send: historyhintwordcomplete } |
|
| 786 | + | { edit: movewordright } |
|
| 787 | + | ] |
|
| 788 | + | } |
|
| 789 | + | } |
|
| 790 | + | { |
|
| 791 | + | name: move_one_word_left |
|
| 792 | + | modifier: alt |
|
| 793 | + | keycode: char_b |
|
| 794 | + | mode: emacs |
|
| 795 | + | event: { edit: movewordleft } |
|
| 796 | + | } |
|
| 797 | + | { |
|
| 798 | + | name: move_one_word_right_or_take_history_hint |
|
| 799 | + | modifier: alt |
|
| 800 | + | keycode: char_f |
|
| 801 | + | mode: emacs |
|
| 802 | + | event: { |
|
| 803 | + | until: [ |
|
| 804 | + | { send: historyhintwordcomplete } |
|
| 805 | + | { edit: movewordright } |
|
| 806 | + | ] |
|
| 807 | + | } |
|
| 808 | + | } |
|
| 809 | + | { |
|
| 810 | + | name: delete_one_word_forward |
|
| 811 | + | modifier: alt |
|
| 812 | + | keycode: delete |
|
| 813 | + | mode: emacs |
|
| 814 | + | event: { edit: deleteword } |
|
| 815 | + | } |
|
| 816 | + | { |
|
| 817 | + | name: delete_one_word_backward |
|
| 818 | + | modifier: alt |
|
| 819 | + | keycode: backspace |
|
| 820 | + | mode: emacs |
|
| 821 | + | event: { edit: backspaceword } |
|
| 822 | + | } |
|
| 823 | + | { |
|
| 824 | + | name: delete_one_word_backward |
|
| 825 | + | modifier: alt |
|
| 826 | + | keycode: char_m |
|
| 827 | + | mode: emacs |
|
| 828 | + | event: { edit: backspaceword } |
|
| 829 | + | } |
|
| 830 | + | { |
|
| 831 | + | name: cut_word_to_right |
|
| 832 | + | modifier: alt |
|
| 833 | + | keycode: char_d |
|
| 834 | + | mode: emacs |
|
| 835 | + | event: { edit: cutwordright } |
|
| 836 | + | } |
|
| 837 | + | { |
|
| 838 | + | name: upper_case_word |
|
| 839 | + | modifier: alt |
|
| 840 | + | keycode: char_u |
|
| 841 | + | mode: emacs |
|
| 842 | + | event: { edit: uppercaseword } |
|
| 843 | + | } |
|
| 844 | + | { |
|
| 845 | + | name: lower_case_word |
|
| 846 | + | modifier: alt |
|
| 847 | + | keycode: char_l |
|
| 848 | + | mode: emacs |
|
| 849 | + | event: { edit: lowercaseword } |
|
| 850 | + | } |
|
| 851 | + | { |
|
| 852 | + | name: capitalize_char |
|
| 853 | + | modifier: alt |
|
| 854 | + | keycode: char_c |
|
| 855 | + | mode: emacs |
|
| 856 | + | event: { edit: capitalizechar } |
|
| 857 | + | } |
|
| 858 | + | # The following bindings with `*system` events require that Nushell has |
|
| 859 | + | # been compiled with the `system-clipboard` feature. |
|
| 860 | + | # If you want to use the system clipboard for visual selection or to |
|
| 861 | + | # paste directly, uncomment the respective lines and replace the version |
|
| 862 | + | # using the internal clipboard. |
|
| 863 | + | { |
|
| 864 | + | name: copy_selection |
|
| 865 | + | modifier: control_shift |
|
| 866 | + | keycode: char_c |
|
| 867 | + | mode: emacs |
|
| 868 | + | event: { edit: copyselection } |
|
| 869 | + | # event: { edit: copyselectionsystem } |
|
| 870 | + | } |
|
| 871 | + | { |
|
| 872 | + | name: cut_selection |
|
| 873 | + | modifier: control_shift |
|
| 874 | + | keycode: char_x |
|
| 875 | + | mode: emacs |
|
| 876 | + | event: { edit: cutselection } |
|
| 877 | + | # event: { edit: cutselectionsystem } |
|
| 878 | + | } |
|
| 879 | + | # { |
|
| 880 | + | # name: paste_system |
|
| 881 | + | # modifier: control_shift |
|
| 882 | + | # keycode: char_v |
|
| 883 | + | # mode: emacs |
|
| 884 | + | # event: { edit: pastesystem } |
|
| 885 | + | # } |
|
| 886 | + | { |
|
| 887 | + | name: select_all |
|
| 888 | + | modifier: control_shift |
|
| 889 | + | keycode: char_a |
|
| 890 | + | mode: emacs |
|
| 891 | + | event: { edit: selectall } |
|
| 892 | + | } |
|
| 893 | + | ] |
|
| 894 | + | } |
|
| 895 | + | ||
| 896 | + | $env.config.hooks.env_change.PWD = [...$env.config.hooks.env_change.PWD |
|
| 897 | + | { |_, after| |
|
| 898 | + | if (($after | path join .node-version | path exists) or ($after | path join .nvmrc | path exists)) { |
|
| 899 | + | fnm use --silent-if-unchanged |
|
| 900 | + | } |
|
| 901 | + | }] |
|
| 902 | + | ||
| 903 | + | # Function to open sesh |
|
| 904 | + | def t [] { |
|
| 905 | + | let selected = (sesh list -i | gum filter --limit 1 --placeholder "Choose a session" --height 50 --prompt="⚡") |
|
| 906 | + | if ($selected | is-empty) { |
|
| 907 | + | echo "No session selected" |
|
| 908 | + | } else { |
|
| 909 | + | sesh connect $selected |
|
| 910 | + | } |
|
| 911 | + | } |
|
| 912 | + | ||
| 913 | + | # Custom git init with .gitignore template |
|
| 914 | + | def ginit [ |
|
| 915 | + | --template (-t): string = "node,macos,linux,windows" # The template to use for .gitignore, comma separated values |
|
| 916 | + | ] { |
|
| 917 | + | git init |
|
| 918 | + | echo $"Fetching .gitignore template for ($template)..." |
|
| 919 | + | curl -sL $"https://www.toptal.com/developers/gitignore/api/($template)" | save .gitignore |
|
| 920 | + | git add .gitignore |
|
| 921 | + | git commit -m "Initial commit with .gitignore" |
|
| 922 | + | echo "Repository initialized with .gitignore template!" |
|
| 923 | + | } |
|
| 924 | + | ||
| 925 | + | alias ll = ls -l |
|
| 926 | + | alias la = ls -a |
|
| 927 | + | alias lg = lazygit |
|
| 928 | + | alias nf = neofetch |
|
| 929 | + | alias fl = fastfetch -c ~/.config/fastfetch/presets/examples/8.jsonc |
|
| 930 | + | alias ff = fastfetch -c ~/.config/fastfetch/presets/examples/20.jsonc |
|
| 931 | + | alias shitter = ssh itter |
|
| 932 | + | alias tailscale = /Applications/Tailscale.app/Contents/MacOS/Tailscale |
|
| 933 | + | ||
| 934 | + | use ~/.cache/starship/init.nu |
| 1 | - | /Users/stevedylandev/.config/nushell/env.nu |
|
| 1 | + | # Nushell Environment Config File |
|
| 2 | + | # |
|
| 3 | + | # version = "0.99.1" |
|
| 4 | + | ||
| 5 | + | # The prompt indicators are environmental variables that represent |
|
| 6 | + | # the state of the prompt |
|
| 7 | + | $env.PROMPT_INDICATOR = {|| "> " } |
|
| 8 | + | $env.PROMPT_INDICATOR_VI_INSERT = {|| "" } |
|
| 9 | + | $env.PROMPT_INDICATOR_VI_NORMAL = {|| "" } |
|
| 10 | + | $env.PROMPT_MULTILINE_INDICATOR = {|| "::: " } |
|
| 11 | + | $env.STARSHIP_SHELL = "nu" |
|
| 12 | + | ||
| 13 | + | # Specifies how environment variables are: |
|
| 14 | + | # - converted from a string to a value on Nushell startup (from_string) |
|
| 15 | + | # - converted from a value back to a string when running external commands (to_string) |
|
| 16 | + | # Note: The conversions happen *after* config.nu is loaded |
|
| 17 | + | $env.ENV_CONVERSIONS = { |
|
| 18 | + | "PATH": { |
|
| 19 | + | from_string: { |s| $s | split row (char esep) | path expand --no-symlink } |
|
| 20 | + | to_string: { |v| $v | path expand --no-symlink | str join (char esep) } |
|
| 21 | + | } |
|
| 22 | + | "Path": { |
|
| 23 | + | from_string: { |s| $s | split row (char esep) | path expand --no-symlink } |
|
| 24 | + | to_string: { |v| $v | path expand --no-symlink | str join (char esep) } |
|
| 25 | + | } |
|
| 26 | + | } |
|
| 27 | + | ||
| 28 | + | # Directories to search for scripts when calling source or use |
|
| 29 | + | # The default for this is $nu.default-config-dir/scripts |
|
| 30 | + | $env.NU_LIB_DIRS = [ |
|
| 31 | + | ($nu.default-config-dir | path join 'scripts') # add <nushell-config-dir>/scripts |
|
| 32 | + | ($nu.data-dir | path join 'completions') # default home for nushell completions |
|
| 33 | + | ] |
|
| 34 | + | ||
| 35 | + | # Directories to search for plugin binaries when calling register |
|
| 36 | + | # The default for this is $nu.default-config-dir/plugins |
|
| 37 | + | $env.NU_PLUGIN_DIRS = [ |
|
| 38 | + | ($nu.default-config-dir | path join 'plugins') # add <nushell-config-dir>/plugins |
|
| 39 | + | ] |
|
| 40 | + | ||
| 41 | + | ||
| 42 | + | # To add entries to PATH (on Windows you might use Path), you can use the following pattern: |
|
| 43 | + | # $env.PATH = ($env.PATH | split row (char esep) | prepend '/some/path') |
|
| 44 | + | # An alternate way to add entries to $env.PATH is to use the custom command `path add` |
|
| 45 | + | # which is built into the nushell stdlib: |
|
| 46 | + | use std "path add" |
|
| 47 | + | ||
| 48 | + | # $env.PATH = ($env.PATH | split row (char esep)) |
|
| 49 | + | # path add /some/path |
|
| 50 | + | # path add ($env.CARGO_HOME | path join "bin") |
|
| 51 | + | # path add ($env.HOME | path join ".local" "bin") |
|
| 52 | + | # $env.PATH = ($env.PATH | uniq) |
|
| 53 | + | ||
| 54 | + | path add /opt/homebrew/bin |
|
| 55 | + | path add /usr/local/go/bin |
|
| 56 | + | path add ~/.cargo/bin |
|
| 57 | + | path add ~/.local/share/go/bin |
|
| 58 | + | path add ~/.local/bin |
|
| 59 | + | path add /usr/local/bin |
|
| 60 | + | path add ~/.bun/bin |
|
| 61 | + | path add /Applications/Docker.app/Contents/Resources/bin |
|
| 62 | + | $env.GOROOT = "/usr/local/go" |
|
| 63 | + | $env.GOPATH = "/Users/stevedylandev/.local/share/go" |
|
| 64 | + | $env.GOMODCACHE = "/Users/stevedylandev/.local/share/go-mod-cache" |
|
| 65 | + | # $env.GITHUB_TOKEN = "" |
|
| 66 | + | path add ~/.tmux/plugins/t-smart-tmux-session-manager/bin |
|
| 67 | + | path add ~/.deno/bin |
|
| 68 | + | path add ~/.foundry/bin |
|
| 69 | + | path add ~/.local/share/pinata-go-cli |
|
| 70 | + | path add ~/.local/share/ |
|
| 71 | + | path add ~/.local/share/solana/install/active_release/bin |
|
| 72 | + | path add /Users/stevedylandev/.local/share/pinata |
|
| 73 | + | path add ~/.sp1/bin |
|
| 74 | + | path add ~/.aztec/bin |
|
| 75 | + | path add ~/.nargo/bin |
|
| 76 | + | $env.ANDROID_HOME = "~/Library/Android/sdk" |
|
| 77 | + | path add ~/Library/Android/sdk/emulator |
|
| 78 | + | path add ~/Library/Android/sdk/platform-tools |
|
| 79 | + | $env.JAVA_HOME = "/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home" |
|
| 80 | + | $env.RUSTUP_TOOLCHAIN = "nightly-2025-01-05" |
|
| 81 | + | $env.config.filesize.unit = "MB" |
|
| 82 | + | $env.BAT_THEME_DARK = "base16" |
|
| 83 | + | $env.BAT_THEME_LIGHT = "base16" |
|
| 84 | + | $env.BAT_THEME = "base16" |
|
| 85 | + | # $env.FNM_DIR = "/Users/stevedsimkins/Library/Application Support/fnm" |
|
| 86 | + | # $env.FNM_ARCH = "arm64" |
|
| 87 | + | # $env.FNM_LOGLEVEL = "info" |
|
| 88 | + | # $env.FNM_COREPACK_ENABLED = "false" |
|
| 89 | + | # $env.FNM_RESOLVE_ENGINES = "false" |
|
| 90 | + | # $env.FNM_VERSION_FILE_STRATEGY = "local" |
|
| 91 | + | # $env.FNM_MULTISHELL_PATH = "/Users/stevedsimkins/.local/state/fnm_multishells/96094_1730946598404" |
|
| 92 | + | # $env.FNM_NODE_DIST_MIRROR = "https://nodejs.org/dist" |
|
| 93 | + | fnm env --json | from json | load-env |
|
| 94 | + | path add ($env.FNM_MULTISHELL_PATH + "/bin") |
|
| 95 | + | ||
| 96 | + | # To load from a custom file you can use: |
|
| 97 | + | # source ~/.config/nushell/env.nu |
|
| 98 | + | ||
| 99 | + | source ~/.config/nushell/black-metal-bathory.nu |
|
| 100 | + | # source ~/.config/nushell/zoxide.nu |
|
| 101 | + | source ~/.config/nushell/git-completions.nu |
|
| 102 | + | source ~/.cargo/env.nu |
|
| 103 | + | source ~/.config/nushell/zoxide.nu |
|
| 104 | + | ||
| 105 | + | $env.EDITOR = "nvim" |
|
| 106 | + | ||
| 107 | + | mkdir ~/.cache/starship |
|
| 108 | + | starship init nu | save -f ~/.cache/starship/init.nu |
| 1 | - | /Users/stevedylandev/.config/nushell/git-completions.nu |
|
| 1 | + | def "nu-complete git available upstream" [] { |
|
| 2 | + | ^git branch --no-color -a | lines | each { |line| $line | str replace '* ' "" | str trim } |
|
| 3 | + | } |
|
| 4 | + | ||
| 5 | + | def "nu-complete git remotes" [] { |
|
| 6 | + | ^git remote | lines | each { |line| $line | str trim } |
|
| 7 | + | } |
|
| 8 | + | ||
| 9 | + | def "nu-complete git log" [] { |
|
| 10 | + | ^git log --pretty=%h | lines | each { |line| $line | str trim } |
|
| 11 | + | } |
|
| 12 | + | ||
| 13 | + | # Yield all existing commits in descending chronological order. |
|
| 14 | + | def "nu-complete git commits all" [] { |
|
| 15 | + | ^git rev-list --all --remotes --pretty=oneline | lines | parse "{value} {description}" |
|
| 16 | + | } |
|
| 17 | + | ||
| 18 | + | # Yield commits of current branch only. This is useful for e.g. cut points in |
|
| 19 | + | # `git rebase`. |
|
| 20 | + | def "nu-complete git commits current branch" [] { |
|
| 21 | + | ^git log --pretty="%h %s" | lines | parse "{value} {description}" |
|
| 22 | + | } |
|
| 23 | + | ||
| 24 | + | # Yield local branches like `main`, `feature/typo_fix` |
|
| 25 | + | def "nu-complete git local branches" [] { |
|
| 26 | + | ^git branch --no-color | lines | each { |line| $line | str replace '* ' "" | str trim } |
|
| 27 | + | } |
|
| 28 | + | ||
| 29 | + | # Yield remote branches like `origin/main`, `upstream/feature-a` |
|
| 30 | + | def "nu-complete git remote branches with prefix" [] { |
|
| 31 | + | ^git branch --no-color -r | lines | parse -r '^\*?(\s*|\s*\S* -> )(?P<branch>\S*$)' | get branch | uniq |
|
| 32 | + | } |
|
| 33 | + | ||
| 34 | + | # Yield remote branches *without* prefix which do not have a local counterpart. |
|
| 35 | + | # E.g. `upstream/feature-a` as `feature-a` to checkout and track in one command |
|
| 36 | + | # with `git checkout` or `git switch`. |
|
| 37 | + | def "nu-complete git remote branches nonlocal without prefix" [] { |
|
| 38 | + | # Get regex to strip remotes prefixes. It will look like `(origin|upstream)` |
|
| 39 | + | # for the two remotes `origin` and `upstream`. |
|
| 40 | + | let remotes_regex = (["(", ((nu-complete git remotes | each {|r| [$r, '/'] | str join}) | str join "|"), ")"] | str join) |
|
| 41 | + | let local_branches = (nu-complete git local branches) |
|
| 42 | + | ^git branch --no-color -r | lines | parse -r (['^[\* ]+', $remotes_regex, '?(?P<branch>\S+)'] | flatten | str join) | get branch | uniq | where {|branch| $branch != "HEAD"} | where {|branch| $branch not-in $local_branches } |
|
| 43 | + | } |
|
| 44 | + | ||
| 45 | + | def "nu-complete git switch" [] { |
|
| 46 | + | (nu-complete git local branches) |
|
| 47 | + | | parse "{value}" |
|
| 48 | + | | insert description "local branch" |
|
| 49 | + | | append (nu-complete git remote branches nonlocal without prefix |
|
| 50 | + | | parse "{value}" |
|
| 51 | + | | insert description "remote branch") |
|
| 52 | + | } |
|
| 53 | + | ||
| 54 | + | def "nu-complete git checkout" [] { |
|
| 55 | + | (nu-complete git local branches) |
|
| 56 | + | | parse "{value}" |
|
| 57 | + | | insert description "local branch" |
|
| 58 | + | | append (nu-complete git remote branches nonlocal without prefix |
|
| 59 | + | | parse "{value}" |
|
| 60 | + | | insert description "remote branch") |
|
| 61 | + | | append (nu-complete git remote branches with prefix |
|
| 62 | + | | parse "{value}" |
|
| 63 | + | | insert description "remote branch") |
|
| 64 | + | | append (nu-complete git commits all) |
|
| 65 | + | | append (nu-complete git files | where description != "Untracked" | select value) |
|
| 66 | + | } |
|
| 67 | + | ||
| 68 | + | # Arguments to `git rebase --onto <arg1> <arg2>` |
|
| 69 | + | def "nu-complete git rebase" [] { |
|
| 70 | + | (nu-complete git local branches) |
|
| 71 | + | | parse "{value}" |
|
| 72 | + | | insert description "local branch" |
|
| 73 | + | | append (nu-complete git remote branches with prefix |
|
| 74 | + | | parse "{value}" |
|
| 75 | + | | insert description "remote branch") |
|
| 76 | + | | append (nu-complete git commits all) |
|
| 77 | + | } |
|
| 78 | + | ||
| 79 | + | def "nu-complete git stash-list" [] { |
|
| 80 | + | git stash list | lines | parse "{value}: {description}" |
|
| 81 | + | } |
|
| 82 | + | ||
| 83 | + | def "nu-complete git tags" [] { |
|
| 84 | + | ^git tag --no-color | lines |
|
| 85 | + | } |
|
| 86 | + | ||
| 87 | + | # See `man git-status` under "Short Format" |
|
| 88 | + | # This is incomplete, but should cover the most common cases. |
|
| 89 | + | const short_status_descriptions = { |
|
| 90 | + | ".D": "Deleted" |
|
| 91 | + | ".M": "Modified" |
|
| 92 | + | "!" : "Ignored" |
|
| 93 | + | "?" : "Untracked" |
|
| 94 | + | "AU": "Staged, not merged" |
|
| 95 | + | "MD": "Some modifications staged, file deleted in work tree" |
|
| 96 | + | "MM": "Some modifications staged, some modifications untracked" |
|
| 97 | + | "R.": "Renamed" |
|
| 98 | + | "UU": "Both modified (in merge conflict)" |
|
| 99 | + | } |
|
| 100 | + | ||
| 101 | + | def "nu-complete git files" [] { |
|
| 102 | + | let relevant_statuses = ["?",".M", "MM", "MD", ".D", "UU"] |
|
| 103 | + | ^git status -uall --porcelain=2 |
|
| 104 | + | | lines |
|
| 105 | + | | each { |$it| |
|
| 106 | + | if $it starts-with "1 " { |
|
| 107 | + | $it | parse --regex "1 (?P<short_status>\\S+) (?:\\S+\\s?){6} (?P<value>\\S+)" |
|
| 108 | + | } else if $it starts-with "2 " { |
|
| 109 | + | $it | parse --regex "2 (?P<short_status>\\S+) (?:\\S+\\s?){6} (?P<value>\\S+)" |
|
| 110 | + | } else if $it starts-with "u " { |
|
| 111 | + | $it | parse --regex "u (?P<short_status>\\S+) (?:\\S+\\s?){8} (?P<value>\\S+)" |
|
| 112 | + | } else if $it starts-with "? " { |
|
| 113 | + | $it | parse --regex "(?P<short_status>.{1}) (?P<value>.+)" |
|
| 114 | + | } else { |
|
| 115 | + | { short_status: 'unknown', value: $it } |
|
| 116 | + | } |
|
| 117 | + | } |
|
| 118 | + | | flatten |
|
| 119 | + | | where $it.short_status in $relevant_statuses |
|
| 120 | + | | insert "description" { |e| $short_status_descriptions | get $e.short_status} |
|
| 121 | + | } |
|
| 122 | + | ||
| 123 | + | def "nu-complete git built-in-refs" [] { |
|
| 124 | + | [HEAD FETCH_HEAD ORIG_HEAD] |
|
| 125 | + | } |
|
| 126 | + | ||
| 127 | + | def "nu-complete git refs" [] { |
|
| 128 | + | nu-complete git local branches |
|
| 129 | + | | parse "{value}" |
|
| 130 | + | | insert description Branch |
|
| 131 | + | | append (nu-complete git tags | parse "{value}" | insert description Tag) |
|
| 132 | + | | append (nu-complete git built-in-refs) |
|
| 133 | + | } |
|
| 134 | + | ||
| 135 | + | def "nu-complete git files-or-refs" [] { |
|
| 136 | + | nu-complete git local branches |
|
| 137 | + | | parse "{value}" |
|
| 138 | + | | insert description Branch |
|
| 139 | + | | append (nu-complete git files | where description == "Modified" | select value) |
|
| 140 | + | | append (nu-complete git tags | parse "{value}" | insert description Tag) |
|
| 141 | + | | append (nu-complete git built-in-refs) |
|
| 142 | + | } |
|
| 143 | + | ||
| 144 | + | def "nu-complete git subcommands" [] { |
|
| 145 | + | ^git help -a | lines | where $it starts-with " " | parse -r '\s*(?P<value>[^ ]+) \s*(?P<description>\w.*)' |
|
| 146 | + | } |
|
| 147 | + | ||
| 148 | + | def "nu-complete git add" [] { |
|
| 149 | + | nu-complete git files |
|
| 150 | + | } |
|
| 151 | + | ||
| 152 | + | def "nu-complete git pull rebase" [] { |
|
| 153 | + | ["false","true","merges","interactive"] |
|
| 154 | + | } |
|
| 155 | + | ||
| 156 | + | ||
| 157 | + | # Check out git branches and files |
|
| 158 | + | export extern "git checkout" [ |
|
| 159 | + | ...targets: string@"nu-complete git checkout" # name of the branch or files to checkout |
|
| 160 | + | --conflict: string # conflict style (merge or diff3) |
|
| 161 | + | --detach(-d) # detach HEAD at named commit |
|
| 162 | + | --force(-f) # force checkout (throw away local modifications) |
|
| 163 | + | --guess # second guess 'git checkout <no-such-branch>' (default) |
|
| 164 | + | --ignore-other-worktrees # do not check if another worktree is holding the given ref |
|
| 165 | + | --ignore-skip-worktree-bits # do not limit pathspecs to sparse entries only |
|
| 166 | + | --merge(-m) # perform a 3-way merge with the new branch |
|
| 167 | + | --orphan: string # new unparented branch |
|
| 168 | + | --ours(-2) # checkout our version for unmerged files |
|
| 169 | + | --overlay # use overlay mode (default) |
|
| 170 | + | --overwrite-ignore # update ignored files (default) |
|
| 171 | + | --patch(-p) # select hunks interactively |
|
| 172 | + | --pathspec-from-file: string # read pathspec from file |
|
| 173 | + | --progress # force progress reporting |
|
| 174 | + | --quiet(-q) # suppress progress reporting |
|
| 175 | + | --recurse-submodules # control recursive updating of submodules |
|
| 176 | + | --theirs(-3) # checkout their version for unmerged files |
|
| 177 | + | --track(-t) # set upstream info for new branch |
|
| 178 | + | -b # create and checkout a new branch |
|
| 179 | + | -B: string # create/reset and checkout a branch |
|
| 180 | + | -l # create reflog for new branch |
|
| 181 | + | ] |
|
| 182 | + | ||
| 183 | + | # Download objects and refs from another repository |
|
| 184 | + | export extern "git fetch" [ |
|
| 185 | + | repository?: string@"nu-complete git remotes" # name of the branch to fetch |
|
| 186 | + | --all # Fetch all remotes |
|
| 187 | + | --append(-a) # Append ref names and object names to .git/FETCH_HEAD |
|
| 188 | + | --atomic # Use an atomic transaction to update local refs. |
|
| 189 | + | --depth: int # Limit fetching to n commits from the tip |
|
| 190 | + | --deepen: int # Limit fetching to n commits from the current shallow boundary |
|
| 191 | + | --shallow-since: string # Deepen or shorten the history by date |
|
| 192 | + | --shallow-exclude: string # Deepen or shorten the history by branch/tag |
|
| 193 | + | --unshallow # Fetch all available history |
|
| 194 | + | --update-shallow # Update .git/shallow to accept new refs |
|
| 195 | + | --negotiation-tip: string # Specify which commit/glob to report while fetching |
|
| 196 | + | --negotiate-only # Do not fetch, only print common ancestors |
|
| 197 | + | --dry-run # Show what would be done |
|
| 198 | + | --write-fetch-head # Write fetched refs in FETCH_HEAD (default) |
|
| 199 | + | --no-write-fetch-head # Do not write FETCH_HEAD |
|
| 200 | + | --force(-f) # Always update the local branch |
|
| 201 | + | --keep(-k) # Keep downloaded pack |
|
| 202 | + | --multiple # Allow several arguments to be specified |
|
| 203 | + | --auto-maintenance # Run 'git maintenance run --auto' at the end (default) |
|
| 204 | + | --no-auto-maintenance # Don't run 'git maintenance' at the end |
|
| 205 | + | --auto-gc # Run 'git maintenance run --auto' at the end (default) |
|
| 206 | + | --no-auto-gc # Don't run 'git maintenance' at the end |
|
| 207 | + | --write-commit-graph # Write a commit-graph after fetching |
|
| 208 | + | --no-write-commit-graph # Don't write a commit-graph after fetching |
|
| 209 | + | --prefetch # Place all refs into the refs/prefetch/ namespace |
|
| 210 | + | --prune(-p) # Remove obsolete remote-tracking references |
|
| 211 | + | --prune-tags(-P) # Remove any local tags that do not exist on the remote |
|
| 212 | + | --no-tags(-n) # Disable automatic tag following |
|
| 213 | + | --refmap: string # Use this refspec to map the refs to remote-tracking branches |
|
| 214 | + | --tags(-t) # Fetch all tags |
|
| 215 | + | --recurse-submodules: string # Fetch new commits of populated submodules (yes/on-demand/no) |
|
| 216 | + | --jobs(-j): int # Number of parallel children |
|
| 217 | + | --no-recurse-submodules # Disable recursive fetching of submodules |
|
| 218 | + | --set-upstream # Add upstream (tracking) reference |
|
| 219 | + | --submodule-prefix: string # Prepend to paths printed in informative messages |
|
| 220 | + | --upload-pack: string # Non-default path for remote command |
|
| 221 | + | --quiet(-q) # Silence internally used git commands |
|
| 222 | + | --verbose(-v) # Be verbose |
|
| 223 | + | --progress # Report progress on stderr |
|
| 224 | + | --server-option(-o): string # Pass options for the server to handle |
|
| 225 | + | --show-forced-updates # Check if a branch is force-updated |
|
| 226 | + | --no-show-forced-updates # Don't check if a branch is force-updated |
|
| 227 | + | -4 # Use IPv4 addresses, ignore IPv6 addresses |
|
| 228 | + | -6 # Use IPv6 addresses, ignore IPv4 addresses |
|
| 229 | + | ] |
|
| 230 | + | ||
| 231 | + | # Push changes |
|
| 232 | + | export extern "git push" [ |
|
| 233 | + | remote?: string@"nu-complete git remotes", # the name of the remote |
|
| 234 | + | ...refs: string@"nu-complete git local branches" # the branch / refspec |
|
| 235 | + | --all # push all refs |
|
| 236 | + | --atomic # request atomic transaction on remote side |
|
| 237 | + | --delete(-d) # delete refs |
|
| 238 | + | --dry-run(-n) # dry run |
|
| 239 | + | --exec: string # receive pack program |
|
| 240 | + | --follow-tags # push missing but relevant tags |
|
| 241 | + | --force-with-lease # require old value of ref to be at this value |
|
| 242 | + | --force(-f) # force updates |
|
| 243 | + | --ipv4(-4) # use IPv4 addresses only |
|
| 244 | + | --ipv6(-6) # use IPv6 addresses only |
|
| 245 | + | --mirror # mirror all refs |
|
| 246 | + | --no-verify # bypass pre-push hook |
|
| 247 | + | --porcelain # machine-readable output |
|
| 248 | + | --progress # force progress reporting |
|
| 249 | + | --prune # prune locally removed refs |
|
| 250 | + | --push-option(-o): string # option to transmit |
|
| 251 | + | --quiet(-q) # be more quiet |
|
| 252 | + | --receive-pack: string # receive pack program |
|
| 253 | + | --recurse-submodules: string # control recursive pushing of submodules |
|
| 254 | + | --repo: string # repository |
|
| 255 | + | --set-upstream(-u) # set upstream for git pull/status |
|
| 256 | + | --signed: string # GPG sign the push |
|
| 257 | + | --tags # push tags (can't be used with --all or --mirror) |
|
| 258 | + | --thin # use thin pack |
|
| 259 | + | --verbose(-v) # be more verbose |
|
| 260 | + | ] |
|
| 261 | + | ||
| 262 | + | # Pull changes |
|
| 263 | + | export extern "git pull" [ |
|
| 264 | + | remote?: string@"nu-complete git remotes", # the name of the remote |
|
| 265 | + | ...refs: string@"nu-complete git local branches", # the branch / refspec |
|
| 266 | + | --rebase(-r): string@"nu-complete git pull rebase", # rebase current branch on top of upstream after fetching |
|
| 267 | + | --quiet(-q) # suppress output during transfer and merge |
|
| 268 | + | --verbose(-v) # be more verbose |
|
| 269 | + | --commit # perform the merge and commit the result |
|
| 270 | + | --no-commit # perform the merge but do not commit the result |
|
| 271 | + | --edit(-e) # edit the merge commit message |
|
| 272 | + | --no-edit # use the auto-generated merge commit message |
|
| 273 | + | --cleanup: string # specify how to clean up the merge commit message |
|
| 274 | + | --ff # fast-forward if possible |
|
| 275 | + | --no-ff # create a merge commit in all cases |
|
| 276 | + | --gpg-sign(-S) # GPG-sign the resulting merge commit |
|
| 277 | + | --no-gpg-sign # do not GPG-sign the resulting merge commit |
|
| 278 | + | --log: int # include log messages from merged commits |
|
| 279 | + | --no-log # do not include log messages from merged commits |
|
| 280 | + | --signoff # add Signed-off-by trailer |
|
| 281 | + | --no-signoff # do not add Signed-off-by trailer |
|
| 282 | + | --stat(-n) # show a diffstat at the end of the merge |
|
| 283 | + | --no-stat # do not show a diffstat at the end of the merge |
|
| 284 | + | --squash # produce working tree and index state as if a merge happened |
|
| 285 | + | --no-squash # perform the merge and commit the result |
|
| 286 | + | --verify # run pre-merge and commit-msg hooks |
|
| 287 | + | --no-verify # do not run pre-merge and commit-msg hooks |
|
| 288 | + | --strategy(-s): string # use the given merge strategy |
|
| 289 | + | --strategy-option(-X): string # pass merge strategy-specific option |
|
| 290 | + | --verify-signatures # verify the tip commit of the side branch being merged |
|
| 291 | + | --no-verify-signatures # do not verify the tip commit of the side branch being merged |
|
| 292 | + | --summary # show a summary of the merge |
|
| 293 | + | --no-summary # do not show a summary of the merge |
|
| 294 | + | --autostash # create a temporary stash entry before the operation |
|
| 295 | + | --no-autostash # do not create a temporary stash entry before the operation |
|
| 296 | + | --allow-unrelated-histories # allow merging histories without a common ancestor |
|
| 297 | + | --no-rebase # do not rebase the current branch on top of the upstream branch |
|
| 298 | + | --all # fetch all remotes |
|
| 299 | + | --append(-a) # append fetched refs to existing contents of FETCH_HEAD |
|
| 300 | + | --atomic # use an atomic transaction to update local refs |
|
| 301 | + | --depth: int # limit fetching to the specified number of commits |
|
| 302 | + | --deepen: int # deepen the history by the specified number of commits |
|
| 303 | + | --shallow-since: string # deepen or shorten the history since a specified date |
|
| 304 | + | --shallow-exclude: string # exclude commits reachable from a specified branch or tag |
|
| 305 | + | --unshallow # convert a shallow repository to a complete one |
|
| 306 | + | --update-shallow # update .git/shallow with new refs |
|
| 307 | + | --tags(-t) # fetch all tags from the remote |
|
| 308 | + | --jobs(-j): int # number of parallel children for fetching |
|
| 309 | + | --set-upstream # add upstream (tracking) reference |
|
| 310 | + | --upload-pack: string # specify non-default path for upload-pack on the remote |
|
| 311 | + | --progress # force progress status even if stderr is not a terminal |
|
| 312 | + | --server-option(-o): string # transmit the given string to the server |
|
| 313 | + | ] |
|
| 314 | + | ||
| 315 | + | # Switch between branches and commits |
|
| 316 | + | export extern "git switch" [ |
|
| 317 | + | switch?: string@"nu-complete git switch" # name of branch to switch to |
|
| 318 | + | --create(-c) # create a new branch |
|
| 319 | + | --detach(-d): string@"nu-complete git log" # switch to a commit in a detached state |
|
| 320 | + | --force-create(-C): string # forces creation of new branch, if it exists then the existing branch will be reset to starting point |
|
| 321 | + | --force(-f) # alias for --discard-changes |
|
| 322 | + | --guess # if there is no local branch which matches then name but there is a remote one then this is checked out |
|
| 323 | + | --ignore-other-worktrees # switch even if the ref is held by another worktree |
|
| 324 | + | --merge(-m) # attempts to merge changes when switching branches if there are local changes |
|
| 325 | + | --no-guess # do not attempt to match remote branch names |
|
| 326 | + | --no-progress # do not report progress |
|
| 327 | + | --no-recurse-submodules # do not update the contents of sub-modules |
|
| 328 | + | --no-track # do not set "upstream" configuration |
|
| 329 | + | --orphan: string # create a new orphaned branch |
|
| 330 | + | --progress # report progress status |
|
| 331 | + | --quiet(-q) # suppress feedback messages |
|
| 332 | + | --recurse-submodules # update the contents of sub-modules |
|
| 333 | + | --track(-t) # set "upstream" configuration |
|
| 334 | + | ] |
|
| 335 | + | ||
| 336 | + | # Apply the change introduced by an existing commit |
|
| 337 | + | export extern "git cherry-pick" [ |
|
| 338 | + | commit?: string@"nu-complete git commits all" # The commit ID to be cherry-picked |
|
| 339 | + | --edit(-e) # Edit the commit message prior to committing |
|
| 340 | + | --no-commit(-n) # Apply changes without making any commit |
|
| 341 | + | --signoff(-s) # Add Signed-off-by line to the commit message |
|
| 342 | + | --ff # Fast-forward if possible |
|
| 343 | + | --continue # Continue the operation in progress |
|
| 344 | + | --abort # Cancel the operation |
|
| 345 | + | --skip # Skip the current commit and continue with the rest of the sequence |
|
| 346 | + | ] |
|
| 347 | + | ||
| 348 | + | # Rebase the current branch |
|
| 349 | + | export extern "git rebase" [ |
|
| 350 | + | branch?: string@"nu-complete git rebase" # name of the branch to rebase onto |
|
| 351 | + | upstream?: string@"nu-complete git rebase" # upstream branch to compare against |
|
| 352 | + | --continue # restart rebasing process after editing/resolving a conflict |
|
| 353 | + | --abort # abort rebase and reset HEAD to original branch |
|
| 354 | + | --quit # abort rebase but do not reset HEAD |
|
| 355 | + | --interactive(-i) # rebase interactively with list of commits in editor |
|
| 356 | + | --onto?: string@"nu-complete git rebase" # starting point at which to create the new commits |
|
| 357 | + | --root # start rebase from root commit |
|
| 358 | + | ] |
|
| 359 | + | ||
| 360 | + | # List or change branches |
|
| 361 | + | export extern "git branch" [ |
|
| 362 | + | branch?: string@"nu-complete git local branches" # name of branch to operate on |
|
| 363 | + | --abbrev # use short commit hash prefixes |
|
| 364 | + | --edit-description # open editor to edit branch description |
|
| 365 | + | --merged # list reachable branches |
|
| 366 | + | --no-merged # list unreachable branches |
|
| 367 | + | --set-upstream-to: string@"nu-complete git available upstream" # set upstream for branch |
|
| 368 | + | --unset-upstream # remote upstream for branch |
|
| 369 | + | --all # list both remote and local branches |
|
| 370 | + | --copy # copy branch together with config and reflog |
|
| 371 | + | --format # specify format for listing branches |
|
| 372 | + | --move # rename branch |
|
| 373 | + | --points-at # list branches that point at an object |
|
| 374 | + | --show-current # print the name of the current branch |
|
| 375 | + | --verbose # show commit and upstream for each branch |
|
| 376 | + | --color # use color in output |
|
| 377 | + | --quiet # suppress messages except errors |
|
| 378 | + | --delete(-d) # delete branch |
|
| 379 | + | --list # list branches |
|
| 380 | + | --contains: string@"nu-complete git commits all" # show only branches that contain the specified commit |
|
| 381 | + | --no-contains # show only branches that don't contain specified commit |
|
| 382 | + | --track(-t) # when creating a branch, set upstream |
|
| 383 | + | ] |
|
| 384 | + | ||
| 385 | + | # List or change tracked repositories |
|
| 386 | + | export extern "git remote" [ |
|
| 387 | + | --verbose(-v) # Show URL for remotes |
|
| 388 | + | ] |
|
| 389 | + | ||
| 390 | + | # Add a new tracked repository |
|
| 391 | + | export extern "git remote add" [ |
|
| 392 | + | ] |
|
| 393 | + | ||
| 394 | + | # Rename a tracked repository |
|
| 395 | + | export extern "git remote rename" [ |
|
| 396 | + | remote: string@"nu-complete git remotes" # remote to rename |
|
| 397 | + | new_name: string # new name for remote |
|
| 398 | + | ] |
|
| 399 | + | ||
| 400 | + | # Remove a tracked repository |
|
| 401 | + | export extern "git remote remove" [ |
|
| 402 | + | remote: string@"nu-complete git remotes" # remote to remove |
|
| 403 | + | ] |
|
| 404 | + | ||
| 405 | + | # Get the URL for a tracked repository |
|
| 406 | + | export extern "git remote get-url" [ |
|
| 407 | + | remote: string@"nu-complete git remotes" # remote to get URL for |
|
| 408 | + | ] |
|
| 409 | + | ||
| 410 | + | # Set the URL for a tracked repository |
|
| 411 | + | export extern "git remote set-url" [ |
|
| 412 | + | remote: string@"nu-complete git remotes" # remote to set URL for |
|
| 413 | + | url: string # new URL for remote |
|
| 414 | + | ] |
|
| 415 | + | ||
| 416 | + | # Show changes between commits, working tree etc |
|
| 417 | + | export extern "git diff" [ |
|
| 418 | + | rev1_or_file?: string@"nu-complete git files-or-refs" |
|
| 419 | + | rev2?: string@"nu-complete git refs" |
|
| 420 | + | --cached # show staged changes |
|
| 421 | + | --name-only # only show names of changed files |
|
| 422 | + | --name-status # show changed files and kind of change |
|
| 423 | + | --no-color # disable color output |
|
| 424 | + | ] |
|
| 425 | + | ||
| 426 | + | # Commit changes |
|
| 427 | + | export extern "git commit" [ |
|
| 428 | + | --all(-a) # automatically stage all modified and deleted files |
|
| 429 | + | --amend # amend the previous commit rather than adding a new one |
|
| 430 | + | --message(-m): string # specify the commit message rather than opening an editor |
|
| 431 | + | --no-edit # don't edit the commit message (useful with --amend) |
|
| 432 | + | --reuse-message(-C): string # reuse the message from a previous commit |
|
| 433 | + | --reedit-message(-c): string # reuse and edit message from a commit |
|
| 434 | + | --fixup: string # create a fixup/amend commit |
|
| 435 | + | --squash: string # squash commit for autosquash rebase |
|
| 436 | + | --reset-author # reset author information |
|
| 437 | + | --short # short-format output for dry-run |
|
| 438 | + | --branch # show branch info in short-format |
|
| 439 | + | --porcelain # porcelain-ready format for dry-run |
|
| 440 | + | --long # long-format output for dry-run |
|
| 441 | + | --null(-z) # use NUL instead of LF in output |
|
| 442 | + | --file(-F): string # read commit message from file |
|
| 443 | + | --author: string # override commit author |
|
| 444 | + | --date: string # override author date |
|
| 445 | + | --template(-t): string # use commit message template file |
|
| 446 | + | --signoff(-s) # add Signed-off-by trailer |
|
| 447 | + | --no-signoff # do not add Signed-off-by trailer |
|
| 448 | + | --trailer: string # add trailer to commit message |
|
| 449 | + | --no-verify(-n) # bypass pre-commit and commit-msg hooks |
|
| 450 | + | --verify # do not bypass pre-commit and commit-msg hooks |
|
| 451 | + | --allow-empty # allow commit with no changes |
|
| 452 | + | --allow-empty-message # allow commit with empty message |
|
| 453 | + | --cleanup: string # cleanup commit message |
|
| 454 | + | --edit(-e) # edit commit message |
|
| 455 | + | --no-edit # do not edit commit message |
|
| 456 | + | --include(-i) # include given paths in commit |
|
| 457 | + | --only(-o) # commit only specified paths |
|
| 458 | + | --pathspec-from-file: string # read pathspec from file |
|
| 459 | + | --pathspec-file-nul # use NUL character for pathspec file |
|
| 460 | + | --untracked-files(-u): string # show untracked files |
|
| 461 | + | --verbose(-v) # show diff in commit message template |
|
| 462 | + | --quiet(-q) # suppress commit summary |
|
| 463 | + | --dry-run # show paths to be committed without committing |
|
| 464 | + | --status # include git-status output in commit message |
|
| 465 | + | --no-status # do not include git-status output |
|
| 466 | + | --gpg-sign(-S):string # GPG-sign commit |
|
| 467 | + | --no-gpg-sign # do not GPG-sign commit |
|
| 468 | + | ...pathspec: string # commit files matching pathspec |
|
| 469 | + | ] |
|
| 470 | + | ||
| 471 | + | # List commits |
|
| 472 | + | export extern "git log" [ |
|
| 473 | + | # Ideally we'd allow completion of revisions here, but that would make completion of filenames not work. |
|
| 474 | + | -U # show diffs |
|
| 475 | + | --follow # show history beyond renames (single file only) |
|
| 476 | + | --grep: string # show log entries matching supplied regular expression |
|
| 477 | + | ] |
|
| 478 | + | ||
| 479 | + | # Show or change the reflog |
|
| 480 | + | export extern "git reflog" [ |
|
| 481 | + | ] |
|
| 482 | + | ||
| 483 | + | # Stage files |
|
| 484 | + | export extern "git add" [ |
|
| 485 | + | ...file: string@"nu-complete git add" # file to add |
|
| 486 | + | --all(-A) # add all files |
|
| 487 | + | --dry-run(-n) # don't actually add the file(s), just show if they exist and/or will be ignored |
|
| 488 | + | --edit(-e) # open the diff vs. the index in an editor and let the user edit it |
|
| 489 | + | --force(-f) # allow adding otherwise ignored files |
|
| 490 | + | --interactive(-i) # add modified contents in the working tree interactively to the index |
|
| 491 | + | --patch(-p) # interactively choose hunks to stage |
|
| 492 | + | --verbose(-v) # be verbose |
|
| 493 | + | ] |
|
| 494 | + | ||
| 495 | + | # Delete file from the working tree and the index |
|
| 496 | + | export extern "git rm" [ |
|
| 497 | + | -r # recursive |
|
| 498 | + | --force(-f) # override the up-to-date check |
|
| 499 | + | --dry-run(-n) # Don't actually remove any file(s) |
|
| 500 | + | --cached # unstage and remove paths only from the index |
|
| 501 | + | ] |
|
| 502 | + | ||
| 503 | + | # Show the working tree status |
|
| 504 | + | export extern "git status" [ |
|
| 505 | + | --verbose(-v) # be verbose |
|
| 506 | + | --short(-s) # show status concisely |
|
| 507 | + | --branch(-b) # show branch information |
|
| 508 | + | --show-stash # show stash information |
|
| 509 | + | ] |
|
| 510 | + | ||
| 511 | + | # Stash changes for later |
|
| 512 | + | export extern "git stash push" [ |
|
| 513 | + | --patch(-p) # interactively choose hunks to stash |
|
| 514 | + | ] |
|
| 515 | + | ||
| 516 | + | # Unstash previously stashed changes |
|
| 517 | + | export extern "git stash pop" [ |
|
| 518 | + | stash?: string@"nu-complete git stash-list" # stash to pop |
|
| 519 | + | --index(-i) # try to reinstate not only the working tree's changes, but also the index's ones |
|
| 520 | + | ] |
|
| 521 | + | ||
| 522 | + | # List stashed changes |
|
| 523 | + | export extern "git stash list" [ |
|
| 524 | + | ] |
|
| 525 | + | ||
| 526 | + | # Show a stashed change |
|
| 527 | + | export extern "git stash show" [ |
|
| 528 | + | stash?: string@"nu-complete git stash-list" |
|
| 529 | + | -U # show diff |
|
| 530 | + | ] |
|
| 531 | + | ||
| 532 | + | # Drop a stashed change |
|
| 533 | + | export extern "git stash drop" [ |
|
| 534 | + | stash?: string@"nu-complete git stash-list" |
|
| 535 | + | ] |
|
| 536 | + | ||
| 537 | + | # Create a new git repository |
|
| 538 | + | export extern "git init" [ |
|
| 539 | + | --initial-branch(-b): string # initial branch name |
|
| 540 | + | ] |
|
| 541 | + | ||
| 542 | + | # List or manipulate tags |
|
| 543 | + | export extern "git tag" [ |
|
| 544 | + | --delete(-d): string@"nu-complete git tags" # delete a tag |
|
| 545 | + | ] |
|
| 546 | + | ||
| 547 | + | # Prune all unreachable objects |
|
| 548 | + | export extern "git prune" [ |
|
| 549 | + | --dry-run(-n) # dry run |
|
| 550 | + | --expire: string # expire objects older than |
|
| 551 | + | --progress # show progress |
|
| 552 | + | --verbose(-v) # report all removed objects |
|
| 553 | + | ] |
|
| 554 | + | ||
| 555 | + | # Start a binary search to find the commit that introduced a bug |
|
| 556 | + | export extern "git bisect start" [ |
|
| 557 | + | bad?: string # a commit that has the bug |
|
| 558 | + | good?: string # a commit that doesn't have the bug |
|
| 559 | + | ] |
|
| 560 | + | ||
| 561 | + | # Mark the current (or specified) revision as bad |
|
| 562 | + | export extern "git bisect bad" [ |
|
| 563 | + | ] |
|
| 564 | + | ||
| 565 | + | # Mark the current (or specified) revision as good |
|
| 566 | + | export extern "git bisect good" [ |
|
| 567 | + | ] |
|
| 568 | + | ||
| 569 | + | # Skip the current (or specified) revision |
|
| 570 | + | export extern "git bisect skip" [ |
|
| 571 | + | ] |
|
| 572 | + | ||
| 573 | + | # End bisection |
|
| 574 | + | export extern "git bisect reset" [ |
|
| 575 | + | ] |
|
| 576 | + | ||
| 577 | + | # Show help for a git subcommand |
|
| 578 | + | export extern "git help" [ |
|
| 579 | + | command: string@"nu-complete git subcommands" # subcommand to show help for |
|
| 580 | + | ] |
|
| 581 | + | ||
| 582 | + | # git worktree |
|
| 583 | + | export extern "git worktree" [ |
|
| 584 | + | --help(-h) # display the help message for this command |
|
| 585 | + | ...args |
|
| 586 | + | ] |
|
| 587 | + | ||
| 588 | + | # create a new working tree |
|
| 589 | + | export extern "git worktree add" [ |
|
| 590 | + | path: path # directory to clone the branch |
|
| 591 | + | branch: string@"nu-complete git available upstream" # Branch to clone |
|
| 592 | + | --help(-h) # display the help message for this command |
|
| 593 | + | --force(-f) # checkout <branch> even if already checked out in other worktree |
|
| 594 | + | -b # create a new branch |
|
| 595 | + | -B # create or reset a branch |
|
| 596 | + | --detach(-d) # detach HEAD at named commit |
|
| 597 | + | --checkout # populate the new working tree |
|
| 598 | + | --lock # keep the new working tree locked |
|
| 599 | + | --reason # reason for locking |
|
| 600 | + | --quiet(-q) # suppress progress reporting |
|
| 601 | + | --track # set up tracking mode (see git-branch(1)) |
|
| 602 | + | --guess-remote # try to match the new branch name with a remote-tracking branch |
|
| 603 | + | ...args |
|
| 604 | + | ] |
|
| 605 | + | ||
| 606 | + | # list details of each worktree |
|
| 607 | + | export extern "git worktree list" [ |
|
| 608 | + | --help(-h) # display the help message for this command |
|
| 609 | + | --porcelain # machine-readable output |
|
| 610 | + | --verbose(-v) # show extended annotations and reasons, if available |
|
| 611 | + | --expire # add 'prunable' annotation to worktrees older than <time> |
|
| 612 | + | -z # terminate records with a NUL character |
|
| 613 | + | ...args |
|
| 614 | + | ] |
|
| 615 | + | ||
| 616 | + | def "nu-complete worktree list" [] { |
|
| 617 | + | ^git worktree list | to text | parse --regex '(?P<value>\S+)\s+(?P<commit>\w+)\s+(?P<description>\S.*)' |
|
| 618 | + | } |
|
| 619 | + | ||
| 620 | + | # prevent a working tree from being pruned |
|
| 621 | + | export extern "git worktree lock" [ |
|
| 622 | + | worktree: string@"nu-complete worktree list" |
|
| 623 | + | --reason: string # reason because the tree is locked |
|
| 624 | + | --help(-h) # display the help message for this command |
|
| 625 | + | --reason # reason for locking |
|
| 626 | + | ...args |
|
| 627 | + | ] |
|
| 628 | + | ||
| 629 | + | # move a working tree to a new location |
|
| 630 | + | export extern "git worktree move" [ |
|
| 631 | + | --help(-h) # display the help message for this command |
|
| 632 | + | --force(-f) # force move even if worktree is dirty or locked |
|
| 633 | + | ...args |
|
| 634 | + | ] |
|
| 635 | + | ||
| 636 | + | # prune working tree information |
|
| 637 | + | export extern "git worktree prune" [ |
|
| 638 | + | --help(-h) # display the help message for this command |
|
| 639 | + | --dry-run(-n) # do not remove, show only |
|
| 640 | + | --verbose(-v) # report pruned working trees |
|
| 641 | + | --expire # expire working trees older than <time> |
|
| 642 | + | ...args |
|
| 643 | + | ] |
|
| 644 | + | ||
| 645 | + | # remove a working tree |
|
| 646 | + | export extern "git worktree remove" [ |
|
| 647 | + | worktree: string@"nu-complete worktree list" |
|
| 648 | + | --help(-h) # display the help message for this command |
|
| 649 | + | --force(-f) # force removal even if worktree is dirty or locked |
|
| 650 | + | ] |
|
| 651 | + | ||
| 652 | + | # allow working tree to be pruned, moved or deleted |
|
| 653 | + | export extern "git worktree unlock" [ |
|
| 654 | + | worktree: string@"nu-complete worktree list" |
|
| 655 | + | ...args |
|
| 656 | + | ] |
|
| 657 | + | ||
| 658 | + | # clones a repo |
|
| 659 | + | export extern "git clone" [ |
|
| 660 | + | --help(-h) # display the help message for this command |
|
| 661 | + | --local(-l) # cloning from the local machine |
|
| 662 | + | --no-local # use the git transport mechanism even if cloning from a local path |
|
| 663 | + | --no-hardlinks # force git to copy files when cloning from the local machine |
|
| 664 | + | --shared(-s) # setup .git/objects/info/alternates to share objects with the source local repo |
|
| 665 | + | --reference: string # setup .git/objects/info/alternates to share objects with the =<reference> local repo |
|
| 666 | + | --reference-if-able: string # same as --reference, but skips empty folders |
|
| 667 | + | --dissociate # borrow objects from the referenced repo (--reference) |
|
| 668 | + | --quiet(-q) # suppress progress reporting |
|
| 669 | + | --verbose(-v) # be verbose |
|
| 670 | + | --progress # report progress unless --quiet |
|
| 671 | + | --server-option: string # transmit the =<option> to the server |
|
| 672 | + | --no-checkout(-n) # no checkout of HEAD |
|
| 673 | + | --reject-shallow # reject shallow repository as source |
|
| 674 | + | --no-reject-shallow # do not reject shallow repository as source |
|
| 675 | + | --bare # make a bare git repo |
|
| 676 | + | --sparse # initialize the sparse-checkout file |
|
| 677 | + | --filter: string # partial clone using the given =<filter-spec> |
|
| 678 | + | --mirror # mirror the source repo |
|
| 679 | + | --origin(-o): string # use <name> as the name for the remote origin |
|
| 680 | + | --branch(-b): string # point HEAD to <name> branch |
|
| 681 | + | --upload-pack(-u): string # use <upload-pack> as the path in the other end when using ssh |
|
| 682 | + | --template: string # use <template-dir> as the templates directory |
|
| 683 | + | --config(-c): string # set a <key>=<value> config variable |
|
| 684 | + | --depth: int # shallow clone <depth> commits |
|
| 685 | + | --shallow-since: string # shallow clone commits newer than =<date> |
|
| 686 | + | --shallow-exclude: string # do not clone commits reachable from <revision> (branch or tag) |
|
| 687 | + | --single-branch # clone commit history from a single branch |
|
| 688 | + | --no-single-Branch # do not clone only one branch |
|
| 689 | + | --no-tags # do not clone any tags |
|
| 690 | + | --recurse-submodules: string # clone the submodules |
|
| 691 | + | --shallow-submodules # shallow clone submodules with depth 1 |
|
| 692 | + | --no-shallow-submodules # do not shallow clone submodules |
|
| 693 | + | --remote-submodules # submodules are updating using their remote tracking branch |
|
| 694 | + | --no-remote-submodules # do not track submodules remote |
|
| 695 | + | --separate-git-dir: string # place the clone at =<git dir> and link it here |
|
| 696 | + | --jobs(-j): int # number of simultaneous submodules fetch |
|
| 697 | + | ...args |
|
| 698 | + | ] |
|
| 699 | + | ||
| 700 | + | # Restores files in working tree or index to previous versions |
|
| 701 | + | export extern "git restore" [ |
|
| 702 | + | --help(-h) # Display the help message for this command |
|
| 703 | + | --source(-s) # Restore the working tree files with the content from the given tree |
|
| 704 | + | --patch(-p) # Interactively choose hunks to restore |
|
| 705 | + | --worktree(-W) # Restore working tree (default if neither --worktree or --staged is used) |
|
| 706 | + | --staged(-S) # Restore index |
|
| 707 | + | --quiet(-q) # Quiet, suppress feedback messages |
|
| 708 | + | --progress # Force progress reporting |
|
| 709 | + | --no-progress # Suppress progress reporting |
|
| 710 | + | --ours # Restore from index using our version for unmerged files |
|
| 711 | + | --theirs # Restore from index using their version for unmerged files |
|
| 712 | + | --merge(-m) # Restore from index and recreate the conflicted merge in unmerged files |
|
| 713 | + | --conflict: string # Like --merge but changes the conflict presentation with =<style> |
|
| 714 | + | --ignore-unmerged # Restore from index and ignore unmerged entries (unmerged files are left as is) |
|
| 715 | + | --ignore-skip-worktree-bits # Ignore sparse checkout patterns and unconditionally restores any files in <pathspec> |
|
| 716 | + | --recurse-submodules # Restore the contents of sub-modules in working tree |
|
| 717 | + | --no-recurse-submodules # Do not restore the contents of sub-modules in working tree (default) |
|
| 718 | + | --overlay # Do not remove files that don't exist when restoring from tree with --source |
|
| 719 | + | --no-overlay # Remove files that don't exist when restoring from tree with --source (default) |
|
| 720 | + | --pathspec-from-file: string # Read pathspec from file |
|
| 721 | + | --pathspec-file-nul # Separate pathspec elements with NUL character when reading from file |
|
| 722 | + | ...pathspecs: string@"nu-complete git files" # Target pathspecs to restore |
|
| 723 | + | ] |
|
| 724 | + | ||
| 725 | + | # Print lines matching a pattern |
|
| 726 | + | export extern "git grep" [ |
|
| 727 | + | --help(-h) # Display the help message for this command |
|
| 728 | + | --cached # Search blobs registered in the index file instead of worktree |
|
| 729 | + | --untracked # Include untracked files in search |
|
| 730 | + | --no-index # Similar to `grep -r`, but with additional benefits, such as using pathspec patterns to limit paths; Cannot be used together with --cached or --untracked |
|
| 731 | + | --no-exclude-standard # Include ignored files in search (only useful with --untracked) |
|
| 732 | + | --exclude-standard # No not include ignored files in search (only useful with --no-index) |
|
| 733 | + | --recurse-submodules # Recursively search in each submodule that is active and checked out |
|
| 734 | + | --text(-a) # Process binary files as if they were text |
|
| 735 | + | --textconv # Honor textconv filter settings |
|
| 736 | + | --no-textconv # Do not honor textconv filter settings (default) |
|
| 737 | + | --ignore-case(-i) # Ignore case differences between patterns and files |
|
| 738 | + | -I # Don’t match the pattern in binary files |
|
| 739 | + | --max-depth: int # Max <depth> to descend down directories for each pathspec. A value of -1 means no limit. |
|
| 740 | + | --recursive(-r) # Same as --max-depth=-1 |
|
| 741 | + | --no-recursive # Same as --max-depth=0 |
|
| 742 | + | --word-regexp(-w) # Match the pattern only at word boundary |
|
| 743 | + | --invert-match(-v) # Select non-matching lines |
|
| 744 | + | -H # Suppress filename in output of matched lines |
|
| 745 | + | --full-name # Force relative path to filename from top directory |
|
| 746 | + | --extended-regexp(-E) # Use POSIX extended regexp for patterns |
|
| 747 | + | --basic-regexp(-G) # Use POSIX basic regexp for patterns (default) |
|
| 748 | + | --perl-regexp(-P) # Use Perl-compatible regular expressions for patterns |
|
| 749 | + | --line-number(-n) # Prefix the line number to matching lines |
|
| 750 | + | --column # Prefix the 1-indexed byte-offset of the first match from the start of the matching line |
|
| 751 | + | --files-with-matches(-l) # Print filenames of files that contains matches |
|
| 752 | + | --name-only # Same as --files-with-matches |
|
| 753 | + | --files-without-match(-L) # Print filenames of files that do not contain matches |
|
| 754 | + | --null(-z) # Use \0 as the delimiter for pathnames in the output, and print them verbatim |
|
| 755 | + | --only-matching(-o) # Print only the matched (non-empty) parts of a matching line, with each such part on a separate output line |
|
| 756 | + | --count(-c) # Instead of showing every matched line, show the number of lines that match |
|
| 757 | + | --no-color # Same as --color=never |
|
| 758 | + | --break # Print an empty line between matches from different files. |
|
| 759 | + | --heading # Show the filename above the matches in that file instead of at the start of each shown line. |
|
| 760 | + | --show-function(-p) # Show the preceding line that contains the function name of the match, unless the matching line is a function name itself. |
|
| 761 | + | --context(-C): int # Show <num> leading and trailing lines, and place a line containing -- between contiguous groups of matches. |
|
| 762 | + | --after-context(-A): int # Show <num> trailing lines, and place a line containing -- between contiguous groups of matches. |
|
| 763 | + | --before-context(-B): int # Show <num> leading lines, and place a line containing -- between contiguous groups of matches. |
|
| 764 | + | --function-context(-W) # Show the surrounding text from the previous line containing a function name up to the one before the next function name |
|
| 765 | + | --max-count(-m): int # Limit the amount of matches per file. When using the -v or --invert-match option, the search stops after the specified number of non-matches. |
|
| 766 | + | --threads: int # Number of grep worker threads to use. Use --help for more information on grep threads. |
|
| 767 | + | -f: string # Read patterns from <file>, one per line. |
|
| 768 | + | -e: string # Next parameter is the pattern. Multiple patterns are combined by --or. |
|
| 769 | + | --and # Search for lines that match multiple patterns. |
|
| 770 | + | --or # Search for lines that match at least one of multiple patterns. --or is implied between patterns without --and or --not. |
|
| 771 | + | --not # Search for lines that does not match pattern. |
|
| 772 | + | --all-match # When giving multiple pattern expressions combined with --or, this flag is specified to limit the match to files that have lines to match all of them. |
|
| 773 | + | --quiet(-q) # Do not output matched lines; instead, exit with status 0 when there is a match and with non-zero status when there isn’t. |
|
| 774 | + | ...pathspecs: string # Target pathspecs to limit the scope of the search. |
|
| 775 | + | ] |
| 1 | - | /Users/stevedylandev/.config/nushell/zoxide.nu |
|
| 1 | + | # Code generated by zoxide. DO NOT EDIT. |
|
| 2 | + | ||
| 3 | + | # ============================================================================= |
|
| 4 | + | # |
|
| 5 | + | # Hook configuration for zoxide. |
|
| 6 | + | # |
|
| 7 | + | ||
| 8 | + | # Initialize hook to add new entries to the database. |
|
| 9 | + | $env.__zoxide_hooked = true |
|
| 10 | + | $env.config = ($env | default {} config).config |
|
| 11 | + | $env.config = ($env.config | default {} hooks) |
|
| 12 | + | $env.config = ($env.config | update hooks ($env.config.hooks | default {} env_change)) |
|
| 13 | + | $env.config = ($env.config | update hooks.env_change ($env.config.hooks.env_change | default [] PWD)) |
|
| 14 | + | $env.config = ($env.config | update hooks.env_change.PWD ($env.config.hooks.env_change.PWD | append {|_, dir| |
|
| 15 | + | zoxide add -- $dir |
|
| 16 | + | })) |
|
| 17 | + | ||
| 18 | + | # ============================================================================= |
|
| 19 | + | # |
|
| 20 | + | # When using zoxide with --no-cmd, alias these internal functions as desired. |
|
| 21 | + | # |
|
| 22 | + | ||
| 23 | + | # Jump to a directory using only keywords. |
|
| 24 | + | def --env --wrapped __zoxide_z [...rest:string] { |
|
| 25 | + | let arg0 = ($rest | append '~').0 |
|
| 26 | + | let arg0_is_dir = (try {$arg0 | path expand | path type}) == 'dir' |
|
| 27 | + | let path = if (($rest | length) <= 1) and ($arg0 == '-' or $arg0_is_dir) { |
|
| 28 | + | $arg0 |
|
| 29 | + | } else { |
|
| 30 | + | (zoxide query --exclude $env.PWD -- ...$rest | str trim -r -c "\n") |
|
| 31 | + | } |
|
| 32 | + | cd $path |
|
| 33 | + | } |
|
| 34 | + | ||
| 35 | + | # Jump to a directory using interactive search. |
|
| 36 | + | def --env --wrapped __zoxide_zi [...rest:string] { |
|
| 37 | + | cd $'(zoxide query --interactive -- ...$rest | str trim -r -c "\n")' |
|
| 38 | + | } |
|
| 39 | + | ||
| 40 | + | # ============================================================================= |
|
| 41 | + | # |
|
| 42 | + | # Commands for zoxide. Disable these using --no-cmd. |
|
| 43 | + | # |
|
| 44 | + | ||
| 45 | + | alias z = __zoxide_z |
|
| 46 | + | alias zi = __zoxide_zi |
|
| 47 | + | ||
| 48 | + | # ============================================================================= |
|
| 49 | + | # |
|
| 50 | + | # Add this to your env file (find it by running `$nu.env-path` in Nushell): |
|
| 51 | + | # |
|
| 52 | + | # zoxide init nushell | save -f ~/.zoxide.nu |
|
| 53 | + | # |
|
| 54 | + | # Now, add this to the end of your config file (find it by running |
|
| 55 | + | # `$nu.config-path` in Nushell): |
|
| 56 | + | # |
|
| 57 | + | # source ~/.zoxide.nu |
|
| 58 | + | # |
|
| 59 | + | # Note: zoxide only supports Nushell v0.89.0+. |
| 1 | - | /Users/stevedylandev/.config/nvim/init.lua |
|
| 1 | + | -- Suppress vim.tbl_islist deprecation warning |
|
| 2 | + | local original_deprecate = vim.deprecate |
|
| 3 | + | ---@diagnostic disable-next-line: duplicate-set-field |
|
| 4 | + | vim.deprecate = function(name, alternative, version, plugin, backtrace) |
|
| 5 | + | if name == "vim.tbl_islist" then |
|
| 6 | + | return |
|
| 7 | + | end |
|
| 8 | + | return original_deprecate(name, alternative, version, plugin, backtrace) |
|
| 9 | + | end |
|
| 10 | + | ||
| 11 | + | require("config.options") |
|
| 12 | + | require("core.lazy") |
|
| 13 | + | require("core.lsp") |
|
| 14 | + | require("config.keymaps") |
|
| 15 | + | require("config.autocmds") |
| 1 | - | /Users/stevedylandev/.config/nvim/lazy-lock.json |
|
| 1 | + | { |
|
| 2 | + | "Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" }, |
|
| 3 | + | "LuaSnip": { "branch": "master", "commit": "faf3c94a44508cec1b961406d36cc65113ff3b98" }, |
|
| 4 | + | "base16-nvim": { "branch": "master", "commit": "f9ce7474c54803cb0fa308b0b91549d394a07940" }, |
|
| 5 | + | "blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" }, |
|
| 6 | + | "conform.nvim": { "branch": "master", "commit": "6feb2f28f9a9385e401857b21eeac3c1b66dd628" }, |
|
| 7 | + | "friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" }, |
|
| 8 | + | "gitsigns.nvim": { "branch": "main", "commit": "8bdaccdb897945a3c99c1ad8df94db0ddf5c8790" }, |
|
| 9 | + | "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, |
|
| 10 | + | "lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" }, |
|
| 11 | + | "lualine.nvim": { "branch": "master", "commit": "0c6cca9f2c63dadeb9225c45bc92bb95a151d4af" }, |
|
| 12 | + | "neo-tree.nvim": { "branch": "v3.x", "commit": "f481de16a0eb59c985abac8985e3f2e2f75b4875" }, |
|
| 13 | + | "nui.nvim": { "branch": "main", "commit": "7cd18e73cfbd70e1546931b7268b3eebaeff9391" }, |
|
| 14 | + | "nvim-surround": { "branch": "main", "commit": "8dd9150ca7eae5683660ea20cec86edcd5ca4046" }, |
|
| 15 | + | "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, |
|
| 16 | + | "nvim-treesitter-textobjects": { "branch": "master", "commit": "0f051e9813a36481f48ca1f833897210dbcfffde" }, |
|
| 17 | + | "nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" }, |
|
| 18 | + | "plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" }, |
|
| 19 | + | "telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" }, |
|
| 20 | + | "vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" }, |
|
| 21 | + | "vim-startuptime": { "branch": "master", "commit": "b6f0d93f6b8cf6eee0b4c94450198ba2d6a05ff6" }, |
|
| 22 | + | "vim-tmux-navigator": { "branch": "master", "commit": "96da8e10ce83b754f442c3e25d1bf74451d220f2" } |
|
| 23 | + | } |
| 1 | - | /Users/stevedylandev/.config/nvim/lsp |
| 1 | + | return { |
|
| 2 | + | cmd = { "gopls" }, -- Command to start the language server |
|
| 3 | + | filetypes = { "go", "gomod", "gowork", "gotmpl", "gosum" }, -- File types that this server will handle |
|
| 4 | + | root_markers = { "go.mod", "go.work", ".git" }, -- Markers to identify the root of the project |
|
| 5 | + | settings = { -- Settings for the language server |
|
| 6 | + | gopls = { |
|
| 7 | + | gofumpt = true, |
|
| 8 | + | codelenses = { |
|
| 9 | + | gc_details = false, |
|
| 10 | + | generate = true, |
|
| 11 | + | regenerate_cgo = true, |
|
| 12 | + | run_govulncheck = true, |
|
| 13 | + | test = true, |
|
| 14 | + | tidy = true, |
|
| 15 | + | upgrade_dependency = true, |
|
| 16 | + | vendor = true, |
|
| 17 | + | }, |
|
| 18 | + | hints = { |
|
| 19 | + | assignVariableTypes = false, |
|
| 20 | + | compositeLiteralFields = false, |
|
| 21 | + | compositeLiteralTypes = false, |
|
| 22 | + | constantValues = false, |
|
| 23 | + | functionTypeParameters = false, |
|
| 24 | + | parameterNames = false, |
|
| 25 | + | rangeVariableTypes = false, |
|
| 26 | + | }, |
|
| 27 | + | analyses = { |
|
| 28 | + | nilness = true, |
|
| 29 | + | unusedparams = true, |
|
| 30 | + | unusedwrite = true, |
|
| 31 | + | useany = true, |
|
| 32 | + | unreachable = true, |
|
| 33 | + | modernize = true, |
|
| 34 | + | stylecheck = true, |
|
| 35 | + | appends = true, |
|
| 36 | + | asmdecl = true, |
|
| 37 | + | assign = true, |
|
| 38 | + | atomic = true, |
|
| 39 | + | bools = true, |
|
| 40 | + | buildtag = true, |
|
| 41 | + | cgocall = true, |
|
| 42 | + | composite = true, |
|
| 43 | + | contextcheck = true, |
|
| 44 | + | deba = true, |
|
| 45 | + | atomicalign = true, |
|
| 46 | + | composites = true, |
|
| 47 | + | copylocks = true, |
|
| 48 | + | deepequalerrors = true, |
|
| 49 | + | defers = true, |
|
| 50 | + | deprecated = true, |
|
| 51 | + | directive = true, |
|
| 52 | + | embed = true, |
|
| 53 | + | errorsas = true, |
|
| 54 | + | fillreturns = true, |
|
| 55 | + | framepointer = true, |
|
| 56 | + | gofix = true, |
|
| 57 | + | hostport = true, |
|
| 58 | + | infertypeargs = true, |
|
| 59 | + | lostcancel = true, |
|
| 60 | + | httpresponse = true, |
|
| 61 | + | ifaceassert = true, |
|
| 62 | + | loopclosure = true, |
|
| 63 | + | nilfunc = true, |
|
| 64 | + | nonewvars = true, |
|
| 65 | + | noresultvalues = true, |
|
| 66 | + | printf = true, |
|
| 67 | + | shadow = true, |
|
| 68 | + | shift = true, |
|
| 69 | + | sigchanyzer = true, |
|
| 70 | + | simplifycompositelit = true, |
|
| 71 | + | simplifyrange = true, |
|
| 72 | + | simplifyslice = true, |
|
| 73 | + | slog = true, |
|
| 74 | + | sortslice = true, |
|
| 75 | + | stdmethods = true, |
|
| 76 | + | stdversion = true, |
|
| 77 | + | stringintconv = true, |
|
| 78 | + | structtag = true, |
|
| 79 | + | testinggoroutine = true, |
|
| 80 | + | tests = true, |
|
| 81 | + | timeformat = true, |
|
| 82 | + | unmarshal = true, |
|
| 83 | + | unsafeptr = true, |
|
| 84 | + | unusedfunc = true, |
|
| 85 | + | unusedresult = true, |
|
| 86 | + | waitgroup = true, |
|
| 87 | + | yield = true, |
|
| 88 | + | unusedvariable = true, |
|
| 89 | + | }, |
|
| 90 | + | usePlaceholders = true, |
|
| 91 | + | completeUnimported = true, |
|
| 92 | + | staticcheck = true, |
|
| 93 | + | directoryFilters = { "-.git", "-.vscode", "-.idea", "-.vscode-test", "-node_modules" }, |
|
| 94 | + | semanticTokens = true, |
|
| 95 | + | }, |
|
| 96 | + | }, |
|
| 97 | + | } |
| 1 | + | return { |
|
| 2 | + | cmd = { |
|
| 3 | + | "lua-language-server", |
|
| 4 | + | }, |
|
| 5 | + | filetypes = { |
|
| 6 | + | "lua", |
|
| 7 | + | }, |
|
| 8 | + | root_markers = { |
|
| 9 | + | ".git", |
|
| 10 | + | ".luacheckrc", |
|
| 11 | + | ".luarc.json", |
|
| 12 | + | ".luarc.jsonc", |
|
| 13 | + | ".stylua.toml", |
|
| 14 | + | "selene.toml", |
|
| 15 | + | "selene.yml", |
|
| 16 | + | "stylua.toml", |
|
| 17 | + | }, |
|
| 18 | + | -- settings = { |
|
| 19 | + | -- Lua = { |
|
| 20 | + | -- diagnostics = { |
|
| 21 | + | -- -- disable = { "missing-parameters", "missing-fields" }, |
|
| 22 | + | -- }, |
|
| 23 | + | -- }, |
|
| 24 | + | -- }, |
|
| 25 | + | ||
| 26 | + | single_file_support = true, |
|
| 27 | + | log_level = vim.lsp.protocol.MessageType.Warning, |
|
| 28 | + | } |
| 1 | + | return { |
|
| 2 | + | cmd = { |
|
| 3 | + | "vtsls", "--stdio" |
|
| 4 | + | }, |
|
| 5 | + | filetypes = { |
|
| 6 | + | 'javascript', |
|
| 7 | + | 'javascriptreact', |
|
| 8 | + | 'javascript.jsx', |
|
| 9 | + | 'typescript', |
|
| 10 | + | 'typescriptreact', |
|
| 11 | + | 'typescript.tsx', |
|
| 12 | + | }, |
|
| 13 | + | root_markers = { |
|
| 14 | + | 'tsconfig.json', 'jsconfig.json', 'package.json', '.git' }, |
|
| 15 | + | -- settings = { |
|
| 16 | + | -- Lua = { |
|
| 17 | + | -- diagnostics = { |
|
| 18 | + | -- -- disable = { "missing-parameters", "missing-fields" }, |
|
| 19 | + | -- }, |
|
| 20 | + | -- }, |
|
| 21 | + | -- }, |
|
| 22 | + | ||
| 23 | + | single_file_support = true, |
|
| 24 | + | log_level = vim.lsp.protocol.MessageType.Warning, |
|
| 25 | + | } |
| 1 | - | /Users/stevedylandev/.config/nvim/lua |
| 1 | + | vim.api.nvim_create_autocmd('TextYankPost', { |
|
| 2 | + | desc = 'Highlight when yanking (copying) text', |
|
| 3 | + | group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), |
|
| 4 | + | callback = function() |
|
| 5 | + | vim.highlight.on_yank() |
|
| 6 | + | end, |
|
| 7 | + | }) |
|
| 8 | + | ||
| 9 | + | vim.api.nvim_create_autocmd("LspAttach", { |
|
| 10 | + | group = vim.api.nvim_create_augroup('lsp-attach', { clear = true }), |
|
| 11 | + | callback = function(event) |
|
| 12 | + | local map = function(keys, func, desc) |
|
| 13 | + | vim.keymap.set("n", keys, func, { buffer = event.buf, desc = "LSP: " .. desc }) |
|
| 14 | + | end |
|
| 15 | + | ||
| 16 | + | -- defaults: |
|
| 17 | + | -- https://neovim.io/doc/user/news-0.11.html#_defaults |
|
| 18 | + | ||
| 19 | + | map("gl", vim.diagnostic.open_float, "Open Diagnostic Float") |
|
| 20 | + | map("K", vim.lsp.buf.hover, "Hover Documentation") |
|
| 21 | + | map("gs", vim.lsp.buf.signature_help, "Signature Documentation") |
|
| 22 | + | map("gD", vim.lsp.buf.declaration, "Goto Declaration") |
|
| 23 | + | map("<leader>la", vim.lsp.buf.code_action, "Code Action") |
|
| 24 | + | map("<leader>lr", vim.lsp.buf.rename, "Rename all references") |
|
| 25 | + | map("<leader>lf", vim.lsp.buf.format, "Format") |
|
| 26 | + | map("<leader>v", "<cmd>vsplit | lua vim.lsp.buf.definition()<cr>", "Goto Definition in Vertical Split") |
|
| 27 | + | map("<leader>d", "<cmd>Telescope diagnostics bufnr=0<CR>", "Open diagnostsics in telescope") |
|
| 28 | + | ||
| 29 | + | local function client_supports_method(client, method, bufnr) |
|
| 30 | + | if vim.fn.has 'nvim-0.11' == 1 then |
|
| 31 | + | return client:supports_method(method, bufnr) |
|
| 32 | + | else |
|
| 33 | + | return client.supports_method(method, { bufnr = bufnr }) |
|
| 34 | + | end |
|
| 35 | + | end |
|
| 36 | + | ||
| 37 | + | local client = vim.lsp.get_client_by_id(event.data.client_id) |
|
| 38 | + | if client and client_supports_method(client, vim.lsp.protocol.Methods.textDocument_documentHighlight, event.buf) then |
|
| 39 | + | local highlight_augroup = vim.api.nvim_create_augroup('lsp-highlight', { clear = false }) |
|
| 40 | + | ||
| 41 | + | -- When cursor stops moving: Highlights all instances of the symbol under the cursor |
|
| 42 | + | -- When cursor moves: Clears the highlighting |
|
| 43 | + | vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { |
|
| 44 | + | buffer = event.buf, |
|
| 45 | + | group = highlight_augroup, |
|
| 46 | + | callback = vim.lsp.buf.document_highlight, |
|
| 47 | + | }) |
|
| 48 | + | vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { |
|
| 49 | + | buffer = event.buf, |
|
| 50 | + | group = highlight_augroup, |
|
| 51 | + | callback = vim.lsp.buf.clear_references, |
|
| 52 | + | }) |
|
| 53 | + | ||
| 54 | + | -- When LSP detaches: Clears the highlighting |
|
| 55 | + | vim.api.nvim_create_autocmd('LspDetach', { |
|
| 56 | + | group = vim.api.nvim_create_augroup('lsp-detach', { clear = true }), |
|
| 57 | + | callback = function(event2) |
|
| 58 | + | vim.lsp.buf.clear_references() |
|
| 59 | + | vim.api.nvim_clear_autocmds { group = 'lsp-highlight', buffer = event2.buf } |
|
| 60 | + | end, |
|
| 61 | + | }) |
|
| 62 | + | end |
|
| 63 | + | end, |
|
| 64 | + | ||
| 65 | + | }) |
|
| 66 | + | ||
| 67 | + | vim.api.nvim_create_autocmd("VimEnter", { |
|
| 68 | + | callback = function() |
|
| 69 | + | if vim.fn.argv(0) == "" then |
|
| 70 | + | require("telescope.builtin").find_files() |
|
| 71 | + | end |
|
| 72 | + | end, |
|
| 73 | + | }) |
|
| 74 | + | ||
| 75 | + | ||
| 76 | + | require("conform").setup({ |
|
| 77 | + | format_on_save = { |
|
| 78 | + | -- These options will be passed to conform.format() |
|
| 79 | + | timeout_ms = 500, |
|
| 80 | + | lsp_format = "fallback", |
|
| 81 | + | }, |
|
| 82 | + | }) |
| 1 | + | local opts = { noremap = true, silent = true } |
|
| 2 | + | local map = vim.api.nvim_set_keymap |
|
| 3 | + | ||
| 4 | + | -- format |
|
| 5 | + | -- Fast saving |
|
| 6 | + | map("n", "++", "<cmd>write!<CR>", opts) |
|
| 7 | + | ||
| 8 | + | -- Some useful quickfix shortcuts for quickfix |
|
| 9 | + | map("n", "<C-n>", "<cmd>cnext<CR>zz", opts) |
|
| 10 | + | map("n", "<C-m>", "<cmd>cprev<CR>zz", opts) |
|
| 11 | + | map("n", "<leader>a", "<cmd>cclose<CR>", opts) |
|
| 12 | + | ||
| 13 | + | -- Exit on jj and jk |
|
| 14 | + | map("n", "j", "gj", opts) |
|
| 15 | + | map("n", "k", "gk", opts) |
|
| 16 | + | ||
| 17 | + | -- Exit on jj and jk |
|
| 18 | + | map("i", "jj", "<ESC>", opts) |
|
| 19 | + | map("i", "jk", "<ESC>", opts) |
|
| 20 | + | ||
| 21 | + | -- Remove search highlight |
|
| 22 | + | map("n", "<leader>h", "<cmd>nohlsearch<CR>", opts) |
|
| 23 | + | ||
| 24 | + | -- Grab text between curly braces |
|
| 25 | + | map("n", "YY", "va{Vy", opts) |
|
| 26 | + | ||
| 27 | + | -- goodies |
|
| 28 | + | map("n", "n", "nzzzv", opts) |
|
| 29 | + | map("n", "N", "Nzzzv", opts) |
|
| 30 | + | map("n", "J", "mzJ`z", opts) |
|
| 31 | + | map("n", "<C-d>", "<C-d>zz", opts) |
|
| 32 | + | map("n", "<C-u>", "<C-u>zz", opts) |
|
| 33 | + | ||
| 34 | + | -- Navigate buffers |
|
| 35 | + | map("n", "<S-l>", ":bnext<CR>", opts) |
|
| 36 | + | map("n", "<S-h>", ":bprevious<CR>", opts) |
|
| 37 | + | ||
| 38 | + | -- If I visually select words and paste from clipboard, don't replace my |
|
| 39 | + | -- clipboard with the selected word, instead keep my old word in the |
|
| 40 | + | -- clipboard |
|
| 41 | + | map("x", "p", '"_dP', opts) |
|
| 42 | + | ||
| 43 | + | -- Better split switching |
|
| 44 | + | -- map("n", "<C-h>", "<C-w>h", opts) |
|
| 45 | + | -- map("n", "<C-j>", "<C-w>j", opts) |
|
| 46 | + | -- map("n", "<C-k>", "<C-w>k", opts) |
|
| 47 | + | -- map("n", "<C-l>", "<C-w>l", opts) |
|
| 48 | + | ||
| 49 | + | -- Visual -- |
|
| 50 | + | -- Stay in indent mode |
|
| 51 | + | map("v", "<", "<gv", opts) |
|
| 52 | + | map("v", ">", ">gv", opts) |
|
| 53 | + | ||
| 54 | + | -- Visually select lines, and move them up/down |
|
| 55 | + | map("v", "J", ":m '>+1<CR>gv=gv", opts) |
|
| 56 | + | map("v", "K", ":m '<-2<CR>gv=gv", opts) |
|
| 57 | + | ||
| 58 | + | map("n", "<leader>c", ":bd<cr>", opts) |
| 1 | + | vim.g.mapleader = " " |
|
| 2 | + | vim.g.maplocalleader = "\\" |
|
| 3 | + | ||
| 4 | + | vim.g.autoformat = true |
|
| 5 | + | ||
| 6 | + | vim.g.root_spec = { "lsp", { ".git", "lua" }, "cwd" } |
|
| 7 | + | ||
| 8 | + | local opt = vim.opt |
|
| 9 | + | ||
| 10 | + | vim.opt.swapfile = false |
|
| 11 | + | opt.autowrite = true -- Enable auto write |
|
| 12 | + | opt.clipboard = "unnamedplus" -- Sync with system clipboard |
|
| 13 | + | opt.completeopt = "menu,menuone,noselect" |
|
| 14 | + | opt.conceallevel = 3 -- Hide * markup for bold and italic |
|
| 15 | + | opt.confirm = true -- Confirm to save changes before exiting modified buffer |
|
| 16 | + | opt.cursorline = true -- Enable highlighting of the current line |
|
| 17 | + | opt.expandtab = true -- Use spaces instead of tabs |
|
| 18 | + | opt.formatoptions = "jcroqlnt" -- tcqj |
|
| 19 | + | opt.grepformat = "%f:%l:%c:%m" |
|
| 20 | + | opt.grepprg = "rg --vimgrep" |
|
| 21 | + | opt.ignorecase = true -- Ignore case |
|
| 22 | + | opt.inccommand = "nosplit" -- preview incremental substitute |
|
| 23 | + | opt.laststatus = 3 -- global statusline |
|
| 24 | + | opt.list = true -- Show some invisible characters (tabs... |
|
| 25 | + | opt.mouse = "a" -- Enable mouse mode |
|
| 26 | + | opt.number = true -- Print line number |
|
| 27 | + | opt.pumblend = 10 -- Popup blend |
|
| 28 | + | opt.pumheight = 10 -- Maximum number of entries in a popup |
|
| 29 | + | opt.relativenumber = true -- Relative line numbers |
|
| 30 | + | opt.scrolloff = 4 -- Lines of context |
|
| 31 | + | opt.sessionoptions = { "buffers", "curdir", "tabpages", "winsize", "help", "globals", "skiprtp", "folds" } |
|
| 32 | + | opt.shiftround = true -- Round indent |
|
| 33 | + | opt.shiftwidth = 2 -- Size of an indent |
|
| 34 | + | opt.shortmess:append({ W = true, I = true, c = true, C = true }) |
|
| 35 | + | opt.showmode = false -- Dont show mode since we have a statusline |
|
| 36 | + | opt.sidescrolloff = 8 -- Columns of context |
|
| 37 | + | opt.signcolumn = "yes" -- Always show the signcolumn, otherwise it would shift the text each time |
|
| 38 | + | opt.smartcase = true -- Don't ignore case with capitals |
|
| 39 | + | opt.smartindent = true -- Insert indents automatically |
|
| 40 | + | opt.spelllang = { "en" } |
|
| 41 | + | opt.splitbelow = true -- Put new windows below current |
|
| 42 | + | opt.splitkeep = "screen" |
|
| 43 | + | opt.splitright = true -- Put new windows right of current |
|
| 44 | + | opt.tabstop = 2 -- Number of spaces tabs count for |
|
| 45 | + | opt.termguicolors = true -- True color support |
|
| 46 | + | opt.timeoutlen = 300 |
|
| 47 | + | opt.undofile = true |
|
| 48 | + | opt.undolevels = 10000 |
|
| 49 | + | opt.updatetime = 200 -- Save swap file and trigger CursorHold |
|
| 50 | + | opt.virtualedit = "block" -- Allow cursor to move where there is no text in visual block mode |
|
| 51 | + | opt.wildmode = "longest:full,full" -- Command-line completion mode |
|
| 52 | + | opt.winminwidth = 5 -- Minimum window width |
|
| 53 | + | opt.wrap = false -- Disable line wrap |
|
| 54 | + | opt.fillchars = { |
|
| 55 | + | foldopen = "", |
|
| 56 | + | foldclose = "", |
|
| 57 | + | -- fold = "⸱", |
|
| 58 | + | fold = " ", |
|
| 59 | + | foldsep = " ", |
|
| 60 | + | diff = "╱", |
|
| 61 | + | eob = " ", |
|
| 62 | + | } |
|
| 63 | + | opt.list = false |
|
| 64 | + | ||
| 65 | + | if vim.fn.has("nvim-0.10") == 1 then |
|
| 66 | + | opt.smoothscroll = true |
|
| 67 | + | end |
|
| 68 | + | ||
| 69 | + | -- Fix markdown indentation settings |
|
| 70 | + | vim.g.markdown_recommended_style = 0 |
|
| 71 | + | vim.filetype.add({ extension = { mdx = "mdx", }, }) |
|
| 72 | + | vim.treesitter.language.register("markdown", "mdx") |
|
| 73 | + |
| 1 | + | local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' |
|
| 2 | + | if not (vim.uv or vim.loop).fs_stat(lazypath) then |
|
| 3 | + | local lazyrepo = 'https://github.com/folke/lazy.nvim.git' |
|
| 4 | + | local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } |
|
| 5 | + | if vim.v.shell_error ~= 0 then |
|
| 6 | + | error('Error cloning lazy.nvim:\n' .. out) |
|
| 7 | + | end |
|
| 8 | + | end ---@diagnostic disable-next-line: undefined-field |
|
| 9 | + | vim.opt.rtp:prepend(lazypath) |
|
| 10 | + | ||
| 11 | + | require("lazy").setup({ import = "plugins" }, { |
|
| 12 | + | install = { |
|
| 13 | + | missing = true, |
|
| 14 | + | colorscheme = { "habamax" } |
|
| 15 | + | }, |
|
| 16 | + | checker = { |
|
| 17 | + | enabled = true, |
|
| 18 | + | notify = false, |
|
| 19 | + | }, |
|
| 20 | + | change_detection = { |
|
| 21 | + | enabled = true, |
|
| 22 | + | notify = false, |
|
| 23 | + | }, |
|
| 24 | + | ui = { |
|
| 25 | + | -- border = "rounded" |
|
| 26 | + | }, |
|
| 27 | + | performance = { |
|
| 28 | + | rtp = { |
|
| 29 | + | disabled_plugins = { |
|
| 30 | + | "gzip", |
|
| 31 | + | "tarPlugin", |
|
| 32 | + | "tohtml", |
|
| 33 | + | "tutor", |
|
| 34 | + | "zipPlugin", |
|
| 35 | + | }, |
|
| 36 | + | }, |
|
| 37 | + | }, |
|
| 38 | + | }) |
| 1 | + | vim.lsp.enable({ |
|
| 2 | + | "gopls", |
|
| 3 | + | "lua_ls", |
|
| 4 | + | "tsserver" |
|
| 5 | + | }) |
|
| 6 | + | ||
| 7 | + | vim.diagnostic.config({ |
|
| 8 | + | virtual_lines = false, |
|
| 9 | + | -- virtual_text = true, |
|
| 10 | + | underline = true, |
|
| 11 | + | update_in_insert = false, |
|
| 12 | + | severity_sort = true, |
|
| 13 | + | float = { |
|
| 14 | + | border = "rounded", |
|
| 15 | + | source = true, |
|
| 16 | + | }, |
|
| 17 | + | signs = { |
|
| 18 | + | text = { |
|
| 19 | + | [vim.diagnostic.severity.ERROR] = " ", |
|
| 20 | + | [vim.diagnostic.severity.WARN] = " ", |
|
| 21 | + | [vim.diagnostic.severity.INFO] = " ", |
|
| 22 | + | [vim.diagnostic.severity.HINT] = " ", |
|
| 23 | + | }, |
|
| 24 | + | numhl = { |
|
| 25 | + | [vim.diagnostic.severity.ERROR] = "ErrorMsg", |
|
| 26 | + | [vim.diagnostic.severity.WARN] = "WarningMsg", |
|
| 27 | + | }, |
|
| 28 | + | }, |
|
| 29 | + | }) |
| 1 | + | return { |
|
| 2 | + | { "L3MON4D3/LuaSnip", keys = {} }, |
|
| 3 | + | { |
|
| 4 | + | "saghen/blink.cmp", |
|
| 5 | + | event = "InsertEnter", -- Only load when entering insert mode |
|
| 6 | + | dependencies = { |
|
| 7 | + | "rafamadriz/friendly-snippets", |
|
| 8 | + | }, |
|
| 9 | + | version = "*", |
|
| 10 | + | config = function() |
|
| 11 | + | require("blink.cmp").setup({ |
|
| 12 | + | snippets = { preset = "default" }, |
|
| 13 | + | signature = { enabled = true }, |
|
| 14 | + | appearance = { |
|
| 15 | + | use_nvim_cmp_as_default = false, |
|
| 16 | + | nerd_font_variant = "normal", |
|
| 17 | + | }, |
|
| 18 | + | sources = { |
|
| 19 | + | default = { "lsp", "path", "snippets", "buffer" }, |
|
| 20 | + | providers = { |
|
| 21 | + | cmdline = { |
|
| 22 | + | min_keyword_length = 2, |
|
| 23 | + | }, |
|
| 24 | + | }, |
|
| 25 | + | }, |
|
| 26 | + | keymap = { |
|
| 27 | + | ["<C-f>"] = {}, |
|
| 28 | + | }, |
|
| 29 | + | cmdline = { |
|
| 30 | + | enabled = false, |
|
| 31 | + | completion = { menu = { auto_show = true } }, |
|
| 32 | + | keymap = { |
|
| 33 | + | ["<CR>"] = { "accept_and_enter", "fallback" }, |
|
| 34 | + | }, |
|
| 35 | + | }, |
|
| 36 | + | completion = { |
|
| 37 | + | menu = { |
|
| 38 | + | border = nil, |
|
| 39 | + | scrolloff = 1, |
|
| 40 | + | scrollbar = false, |
|
| 41 | + | draw = { |
|
| 42 | + | columns = { |
|
| 43 | + | { "kind_icon" }, |
|
| 44 | + | { "label", "label_description", gap = 1 }, |
|
| 45 | + | { "kind" }, |
|
| 46 | + | { "source_name" }, |
|
| 47 | + | }, |
|
| 48 | + | }, |
|
| 49 | + | }, |
|
| 50 | + | documentation = { |
|
| 51 | + | window = { |
|
| 52 | + | border = nil, |
|
| 53 | + | scrollbar = false, |
|
| 54 | + | winhighlight = 'Normal:BlinkCmpDoc,FloatBorder:BlinkCmpDocBorder,EndOfBuffer:BlinkCmpDoc', |
|
| 55 | + | }, |
|
| 56 | + | auto_show = true, |
|
| 57 | + | auto_show_delay_ms = 500, |
|
| 58 | + | }, |
|
| 59 | + | }, |
|
| 60 | + | }) |
|
| 61 | + | end, |
|
| 62 | + | }, |
|
| 63 | + | } |
| 1 | + | return { |
|
| 2 | + | "RRethy/base16-nvim", |
|
| 3 | + | lazy = false, |
|
| 4 | + | priority = 1000, |
|
| 5 | + | config = function() |
|
| 6 | + | vim.cmd.colorscheme "base16-black-metal-bathory" |
|
| 7 | + | end, |
|
| 8 | + | } |
| 1 | + | return { |
|
| 2 | + | "numToStr/Comment.nvim", |
|
| 3 | + | opts = {}, |
|
| 4 | + | config = function() |
|
| 5 | + | require("Comment").setup() |
|
| 6 | + | end, |
|
| 7 | + | } |
|
| 8 | + |
| 1 | + | return { |
|
| 2 | + | "stevearc/conform.nvim", |
|
| 3 | + | opts = {}, |
|
| 4 | + | config = function() |
|
| 5 | + | require("conform").setup({ |
|
| 6 | + | formatters_by_ft = { |
|
| 7 | + | lua = { "stylua" }, |
|
| 8 | + | go = { "goimports", "golines", "gofmt" }, |
|
| 9 | + | }, |
|
| 10 | + | -- format_on_save = { |
|
| 11 | + | -- lsp_fallback = true, |
|
| 12 | + | -- async = false, |
|
| 13 | + | -- }, |
|
| 14 | + | }) |
|
| 15 | + | end, |
|
| 16 | + | } |
| 1 | + | return { |
|
| 2 | + | "stevearc/conform.nvim", |
|
| 3 | + | config = function() |
|
| 4 | + | require("conform").setup({ |
|
| 5 | + | formatters_by_ft = { |
|
| 6 | + | lua = { "lua_ls" }, |
|
| 7 | + | -- Conform will run multiple formatters sequentially |
|
| 8 | + | python = { "isort", "black" }, |
|
| 9 | + | -- Use a sub-list to run only the first available formatter |
|
| 10 | + | javascript = { { "prettier" } }, |
|
| 11 | + | }, |
|
| 12 | + | }) |
|
| 13 | + | end, |
|
| 14 | + | } |
| 1 | + | return { |
|
| 2 | + | "lewis6991/gitsigns.nvim", |
|
| 3 | + | config = function() |
|
| 4 | + | require("gitsigns").setup({ |
|
| 5 | + | signs = { |
|
| 6 | + | add = { text = "+" }, |
|
| 7 | + | change = { text = "~" }, |
|
| 8 | + | delete = { text = "-" }, |
|
| 9 | + | topdelete = { text = "" }, |
|
| 10 | + | changedelete = { text = "▎" }, |
|
| 11 | + | untracked = { text = "+" }, |
|
| 12 | + | }, |
|
| 13 | + | }) |
|
| 14 | + | end, |
|
| 15 | + | } |
| 1 | + | return { |
|
| 2 | + | { |
|
| 3 | + | "folke/lazydev.nvim", |
|
| 4 | + | ft = "lua", -- only load on lua files |
|
| 5 | + | opts = { |
|
| 6 | + | library = { |
|
| 7 | + | -- See the configuration section for more details |
|
| 8 | + | -- Load luvit types when the `vim.uv` word is found |
|
| 9 | + | { path = "${3rd}/luv/library", words = { "vim%.uv" } }, |
|
| 10 | + | }, |
|
| 11 | + | }, |
|
| 12 | + | }, |
|
| 13 | + | { |
|
| 14 | + | "saghen/blink.cmp", |
|
| 15 | + | opts = { |
|
| 16 | + | sources = { |
|
| 17 | + | -- add lazydev to your completion providers |
|
| 18 | + | default = { "lazydev", "lsp", "path", "snippets", "buffer" }, |
|
| 19 | + | providers = { |
|
| 20 | + | lazydev = { |
|
| 21 | + | name = "LazyDev", |
|
| 22 | + | module = "lazydev.integrations.blink", |
|
| 23 | + | -- make lazydev completions top priority (see `:h blink.cmp`) |
|
| 24 | + | score_offset = 100, |
|
| 25 | + | }, |
|
| 26 | + | }, |
|
| 27 | + | }, |
|
| 28 | + | }, |
|
| 29 | + | } |
|
| 30 | + | } |
| 1 | + | return { |
|
| 2 | + | "nvim-lualine/lualine.nvim", |
|
| 3 | + | enabled = true, |
|
| 4 | + | lazy = true, |
|
| 5 | + | event = { "BufReadPost", "BufNewFile", "VeryLazy" }, |
|
| 6 | + | config = function() |
|
| 7 | + | require("lualine").setup({ |
|
| 8 | + | options = { |
|
| 9 | + | theme = "auto", |
|
| 10 | + | icons_enabled = true, |
|
| 11 | + | section_separators = "", |
|
| 12 | + | component_separators = "", |
|
| 13 | + | disabled_filetypes = { |
|
| 14 | + | statusline = { |
|
| 15 | + | "help", |
|
| 16 | + | "startify", |
|
| 17 | + | "dashboard", |
|
| 18 | + | "neo-tree", |
|
| 19 | + | "packer", |
|
| 20 | + | "neogitstatus", |
|
| 21 | + | "NvimTree", |
|
| 22 | + | "Trouble", |
|
| 23 | + | "alpha", |
|
| 24 | + | "lir", |
|
| 25 | + | "Outline", |
|
| 26 | + | "spectre_panel", |
|
| 27 | + | "toggleterm", |
|
| 28 | + | "qf", |
|
| 29 | + | }, |
|
| 30 | + | winbar = {}, |
|
| 31 | + | }, |
|
| 32 | + | }, |
|
| 33 | + | sections = { |
|
| 34 | + | lualine_a = {}, |
|
| 35 | + | lualine_b = {}, |
|
| 36 | + | lualine_c = { |
|
| 37 | + | -- "filename", |
|
| 38 | + | { |
|
| 39 | + | "filetype", |
|
| 40 | + | icon_only = true, |
|
| 41 | + | separator = "", |
|
| 42 | + | padding = { |
|
| 43 | + | left = 1, |
|
| 44 | + | right = 0, |
|
| 45 | + | }, |
|
| 46 | + | }, |
|
| 47 | + | { |
|
| 48 | + | "filename", |
|
| 49 | + | path = 1, |
|
| 50 | + | symbols = { |
|
| 51 | + | modified = " ", |
|
| 52 | + | readonly = "", |
|
| 53 | + | unnamed = "", |
|
| 54 | + | }, |
|
| 55 | + | }, |
|
| 56 | + | { "diagnostics", sources = { "nvim_lsp" }, symbols = { error = " ", warn = " ", info = " " } }, |
|
| 57 | + | { "diff" }, |
|
| 58 | + | { "searchcount" }, |
|
| 59 | + | }, |
|
| 60 | + | lualine_x = { { "b:gitsigns_head", icon = "" } }, |
|
| 61 | + | lualine_y = { "progress" }, |
|
| 62 | + | lualine_z = { |
|
| 63 | + | -- function() |
|
| 64 | + | -- return " " .. os.date("%R") |
|
| 65 | + | -- end, |
|
| 66 | + | }, |
|
| 67 | + | }, |
|
| 68 | + | inactive_sections = { |
|
| 69 | + | lualine_a = {}, |
|
| 70 | + | lualine_b = {}, |
|
| 71 | + | lualine_c = { "filename" }, |
|
| 72 | + | lualine_x = { "location" }, |
|
| 73 | + | lualine_y = {}, |
|
| 74 | + | lualine_z = {}, |
|
| 75 | + | }, |
|
| 76 | + | tabline = {}, |
|
| 77 | + | extensions = { "neo-tree", "lazy" }, |
|
| 78 | + | }) |
|
| 79 | + | end, |
|
| 80 | + | } |
| 1 | + | return { |
|
| 2 | + | "nvim-neo-tree/neo-tree.nvim", |
|
| 3 | + | branch = "v3.x", |
|
| 4 | + | dependencies = { |
|
| 5 | + | "nvim-lua/plenary.nvim", |
|
| 6 | + | "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended |
|
| 7 | + | "MunifTanjim/nui.nvim", |
|
| 8 | + | -- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information |
|
| 9 | + | }, |
|
| 10 | + | config = function() |
|
| 11 | + | local opts = { noremap = true, silent = true } |
|
| 12 | + | local map = vim.api.nvim_set_keymap |
|
| 13 | + | map("n", "<leader>e", ":Neotree toggle<CR>", opts) |
|
| 14 | + | require("neo-tree").setup({ |
|
| 15 | + | popup_border_style = "rounded", |
|
| 16 | + | enable_git_status = true, |
|
| 17 | + | window = { |
|
| 18 | + | position = "float", |
|
| 19 | + | }, |
|
| 20 | + | filesystem = { |
|
| 21 | + | filtered_items = { |
|
| 22 | + | hide_dotfiles = false, |
|
| 23 | + | always_show = { |
|
| 24 | + | "*.env", |
|
| 25 | + | }, |
|
| 26 | + | }, |
|
| 27 | + | }, |
|
| 28 | + | default_component_configs = { |
|
| 29 | + | git_status = { |
|
| 30 | + | symbols = { |
|
| 31 | + | -- Change type |
|
| 32 | + | added = "", -- or "✚", but this is redundant info if you use git_status_colors on the name |
|
| 33 | + | modified = "", -- or "", but this is redundant info if you use git_status_colors on the name |
|
| 34 | + | deleted = "✖", -- this can only be used in the git_status source |
|
| 35 | + | renamed = "", -- this can only be used in the git_status source |
|
| 36 | + | -- Status type |
|
| 37 | + | untracked = "", |
|
| 38 | + | ignored = "", |
|
| 39 | + | unstaged = "", |
|
| 40 | + | staged = "", |
|
| 41 | + | conflict = "", |
|
| 42 | + | }, |
|
| 43 | + | }, |
|
| 44 | + | }, |
|
| 45 | + | }) |
|
| 46 | + | end, |
|
| 47 | + | } |
| 1 | + | return { |
|
| 2 | + | "kylechui/nvim-surround", |
|
| 3 | + | version = "*", -- Use for stability; omit to use `main` branch for the latest features |
|
| 4 | + | config = function() |
|
| 5 | + | require("nvim-surround").setup({ |
|
| 6 | + | -- Configuration here, or leave empty to use defaults |
|
| 7 | + | }) |
|
| 8 | + | end |
|
| 9 | + | } |
| 1 | + | return { |
|
| 2 | + | "nvim-telescope/telescope.nvim", |
|
| 3 | + | tag = "0.1.5", |
|
| 4 | + | config = function() |
|
| 5 | + | local builtin = require('telescope.builtin') |
|
| 6 | + | vim.keymap.set('n', '<leader>ff', builtin.find_files, {}) |
|
| 7 | + | vim.keymap.set('n', '<leader>/', builtin.live_grep, {}) |
|
| 8 | + | vim.keymap.set('n', '<leader>fb', builtin.buffers, {}) |
|
| 9 | + | vim.keymap.set('n', '<leader>fh', builtin.help_tags, {}) |
|
| 10 | + | vim.keymap.set('n', '<leader>sd', ":Telescope diagnostics bufnr=0<cr>", {}) |
|
| 11 | + | vim.keymap.set('n', "<leader>sD", "<cmd>Telescope diagnostics<cr>", {}) |
|
| 12 | + | vim.keymap.set('n', "<Leader>o", ":Telescope buffers theme=dropdown<CR>", {}) |
|
| 13 | + | vim.keymap.set('n', "<leader><leader>", ":Telescope smart_open<CR>", {}) |
|
| 14 | + | vim.keymap.set('n', "<leader>gc", "<cmd>Telescope git_commits<CR>", {}) |
|
| 15 | + | vim.keymap.set('n', "<leader>gs", "<cmd>Telescope git_status<CR>", {}) |
|
| 16 | + | vim.keymap.set('n', "<leader>sb", "<cmd>Telescope current_buffer_fuzzy_find<cr>", {}) |
|
| 17 | + | ||
| 18 | + | ||
| 19 | + | ||
| 20 | + | local telescope = require("telescope") |
|
| 21 | + | local actions = require("telescope.actions") |
|
| 22 | + | telescope.setup({ |
|
| 23 | + | file_ignore_patterns = { "%.git/.", "node_modules" }, |
|
| 24 | + | defaults = { |
|
| 25 | + | mappings = { |
|
| 26 | + | i = { |
|
| 27 | + | ["<esc>"] = actions.close, |
|
| 28 | + | }, |
|
| 29 | + | }, |
|
| 30 | + | previewer = false, |
|
| 31 | + | hidden = true, |
|
| 32 | + | prompt_prefix = " ", |
|
| 33 | + | file_ignore_patterns = { "node_modules", "package-lock.json" }, |
|
| 34 | + | initial_mode = "insert", |
|
| 35 | + | select_strategy = "reset", |
|
| 36 | + | sorting_strategy = "ascending", |
|
| 37 | + | -- layout_strategy = "horizontal", |
|
| 38 | + | layout_config = { |
|
| 39 | + | -- width = 0.5, |
|
| 40 | + | -- height = 0.4, |
|
| 41 | + | prompt_position = "top", |
|
| 42 | + | preview_cutoff = 120, |
|
| 43 | + | }, |
|
| 44 | + | }, |
|
| 45 | + | pickers = { |
|
| 46 | + | find_files = { |
|
| 47 | + | -- theme = "dropdown", |
|
| 48 | + | previewer = true, |
|
| 49 | + | layout_config = { |
|
| 50 | + | -- width = 0.5, |
|
| 51 | + | height = 0.8, |
|
| 52 | + | prompt_position = "top", |
|
| 53 | + | preview_cutoff = 120, |
|
| 54 | + | }, |
|
| 55 | + | }, |
|
| 56 | + | git_files = { |
|
| 57 | + | previewer = true, |
|
| 58 | + | layout_config = { |
|
| 59 | + | height = 0.8, |
|
| 60 | + | prompt_position = "top", |
|
| 61 | + | preview_cutoff = 120, |
|
| 62 | + | }, |
|
| 63 | + | }, |
|
| 64 | + | buffers = { |
|
| 65 | + | mappings = { |
|
| 66 | + | i = { |
|
| 67 | + | ["<c-d>"] = actions.delete_buffer, |
|
| 68 | + | ["<c-j>"] = actions.move_selection_next, |
|
| 69 | + | ["<c-k>"] = actions.move_selection_previous, |
|
| 70 | + | }, |
|
| 71 | + | n = { |
|
| 72 | + | ["<c-d>"] = actions.delete_buffer, |
|
| 73 | + | ["<c-j>"] = actions.move_selection_next, |
|
| 74 | + | ["<c-k>"] = actions.move_selection_previous, |
|
| 75 | + | }, |
|
| 76 | + | }, |
|
| 77 | + | previewer = false, |
|
| 78 | + | initial_mode = "insert", |
|
| 79 | + | theme = "dropdown", |
|
| 80 | + | layout_config = { |
|
| 81 | + | width = 0.5, |
|
| 82 | + | height = 0.4, |
|
| 83 | + | prompt_position = "top", |
|
| 84 | + | preview_cutoff = 120, |
|
| 85 | + | }, |
|
| 86 | + | }, |
|
| 87 | + | current_buffer_fuzzy_find = { |
|
| 88 | + | previewer = true, |
|
| 89 | + | -- theme = "dropdown", |
|
| 90 | + | layout_config = { |
|
| 91 | + | -- width = 0.5, |
|
| 92 | + | height = 0.8, |
|
| 93 | + | prompt_position = "top", |
|
| 94 | + | preview_cutoff = 120, |
|
| 95 | + | }, |
|
| 96 | + | }, |
|
| 97 | + | live_grep = { |
|
| 98 | + | file_ignore_patterns = { "node_modules", "package-lock.json" }, |
|
| 99 | + | only_sort_text = true, |
|
| 100 | + | previewer = true, |
|
| 101 | + | layout_config = { |
|
| 102 | + | horizontal = { |
|
| 103 | + | width = 0.9, |
|
| 104 | + | height = 0.75, |
|
| 105 | + | preview_width = 0.6, |
|
| 106 | + | }, |
|
| 107 | + | }, |
|
| 108 | + | }, |
|
| 109 | + | grep_string = { |
|
| 110 | + | only_sort_text = true, |
|
| 111 | + | previewer = true, |
|
| 112 | + | layout_config = { |
|
| 113 | + | horizontal = { |
|
| 114 | + | width = 0.9, |
|
| 115 | + | height = 0.75, |
|
| 116 | + | preview_width = 0.6, |
|
| 117 | + | }, |
|
| 118 | + | }, |
|
| 119 | + | }, |
|
| 120 | + | lsp_references = { |
|
| 121 | + | show_line = false, |
|
| 122 | + | previewer = true, |
|
| 123 | + | layout_config = { |
|
| 124 | + | horizontal = { |
|
| 125 | + | width = 0.9, |
|
| 126 | + | height = 0.75, |
|
| 127 | + | preview_width = 0.6, |
|
| 128 | + | }, |
|
| 129 | + | }, |
|
| 130 | + | }, |
|
| 131 | + | treesitter = { |
|
| 132 | + | show_line = false, |
|
| 133 | + | previewer = true, |
|
| 134 | + | layout_config = { |
|
| 135 | + | horizontal = { |
|
| 136 | + | width = 0.9, |
|
| 137 | + | height = 0.75, |
|
| 138 | + | preview_width = 0.6, |
|
| 139 | + | }, |
|
| 140 | + | }, |
|
| 141 | + | }, |
|
| 142 | + | }, |
|
| 143 | + | extensions = { |
|
| 144 | + | fzf = { |
|
| 145 | + | fuzzy = true, -- false will only do exact matching |
|
| 146 | + | override_generic_sorter = true, -- override the generic sorter |
|
| 147 | + | override_file_sorter = true, -- override the file sorter |
|
| 148 | + | case_mode = "smart_case", -- or "ignore_case" or "respect_case" |
|
| 149 | + | }, |
|
| 150 | + | ["ui-select"] = { |
|
| 151 | + | require("telescope.themes").get_dropdown({ |
|
| 152 | + | previewer = false, |
|
| 153 | + | initial_mode = "normal", |
|
| 154 | + | sorting_strategy = "ascending", |
|
| 155 | + | layout_strategy = "horizontal", |
|
| 156 | + | layout_config = { |
|
| 157 | + | horizontal = { |
|
| 158 | + | width = 0.5, |
|
| 159 | + | height = 0.4, |
|
| 160 | + | preview_width = 0.6, |
|
| 161 | + | }, |
|
| 162 | + | }, |
|
| 163 | + | }), |
|
| 164 | + | }, |
|
| 165 | + | frecency = { |
|
| 166 | + | default_workspace = "CWD", |
|
| 167 | + | show_scores = true, |
|
| 168 | + | show_unindexed = true, |
|
| 169 | + | disable_devicons = false, |
|
| 170 | + | ignore_patterns = { |
|
| 171 | + | "*.git/*", |
|
| 172 | + | "*/tmp/*", |
|
| 173 | + | "*/lua-language-server/*", |
|
| 174 | + | }, |
|
| 175 | + | }, |
|
| 176 | + | -- file_browser = { |
|
| 177 | + | -- -- theme = "", |
|
| 178 | + | -- previewer = true, |
|
| 179 | + | -- -- disables netrw and use telescope-file-browser in its place |
|
| 180 | + | -- hijack_netrw = true, |
|
| 181 | + | -- -- mappings = { |
|
| 182 | + | -- -- ["i"] = { |
|
| 183 | + | -- -- -- your custom insert mode mappings |
|
| 184 | + | -- -- }, |
|
| 185 | + | -- -- ["n"] = { |
|
| 186 | + | -- -- -- your custom normal mode mappings |
|
| 187 | + | -- -- }, |
|
| 188 | + | -- -- }, |
|
| 189 | + | -- }, |
|
| 190 | + | }, |
|
| 191 | + | }) |
|
| 192 | + | -- telescope.load_extension("file_browser") |
|
| 193 | + | end, |
|
| 194 | + | } |
| 1 | + | return { |
|
| 2 | + | "christoomey/vim-tmux-navigator", |
|
| 3 | + | config = function() |
|
| 4 | + | vim.keymap.set("n", "<C-h>", "<cmd>TmuxNavigateLeft<CR>", opts) |
|
| 5 | + | vim.keymap.set("n", "<C-j>", "<cmd>TmuxNavigateDown<CR>", opts) |
|
| 6 | + | vim.keymap.set("n", "<C-k>", "<cmd>TmuxNavigateUp<CR>", opts) |
|
| 7 | + | vim.keymap.set("n", "<C-l>", "<cmd>TmuxNavigateRight<CR>", opts) |
|
| 8 | + | end, |
|
| 9 | + | } |
| 1 | + | return { |
|
| 2 | + | "nvim-treesitter/nvim-treesitter", |
|
| 3 | + | version = false, |
|
| 4 | + | build = ":TSUpdate", |
|
| 5 | + | event = { "BufReadPost", "BufNewFile" }, |
|
| 6 | + | dependencies = { |
|
| 7 | + | "nvim-treesitter/nvim-treesitter-textobjects", |
|
| 8 | + | }, |
|
| 9 | + | config = function() |
|
| 10 | + | require("nvim-treesitter.configs").setup({ |
|
| 11 | + | sync_install = false, |
|
| 12 | + | ignore_install = { "javascript" }, |
|
| 13 | + | modules = {}, |
|
| 14 | + | highlight = { |
|
| 15 | + | enable = true, |
|
| 16 | + | additional_vim_regex_highlighting = false, |
|
| 17 | + | }, |
|
| 18 | + | indent = { enable = true }, |
|
| 19 | + | auto_install = true, |
|
| 20 | + | ensure_installed = { |
|
| 21 | + | "bash", |
|
| 22 | + | "c", |
|
| 23 | + | "html", |
|
| 24 | + | "javascript", |
|
| 25 | + | "json", |
|
| 26 | + | "lua", |
|
| 27 | + | "luadoc", |
|
| 28 | + | "luap", |
|
| 29 | + | "query", |
|
| 30 | + | "regex", |
|
| 31 | + | "vim", |
|
| 32 | + | "vimdoc", |
|
| 33 | + | "yaml", |
|
| 34 | + | "rust", |
|
| 35 | + | "go", |
|
| 36 | + | "gomod", |
|
| 37 | + | "gowork", |
|
| 38 | + | "gosum", |
|
| 39 | + | }, |
|
| 40 | + | incremental_selection = { |
|
| 41 | + | enable = true, |
|
| 42 | + | keymaps = { |
|
| 43 | + | init_selection = "<leader>vv", |
|
| 44 | + | node_incremental = "+", |
|
| 45 | + | scope_incremental = false, |
|
| 46 | + | node_decremental = "_", |
|
| 47 | + | }, |
|
| 48 | + | }, |
|
| 49 | + | textobjects = { |
|
| 50 | + | select = { |
|
| 51 | + | enable = true, |
|
| 52 | + | lookahead = true, |
|
| 53 | + | ||
| 54 | + | keymaps = { |
|
| 55 | + | -- You can use the capture groups defined in textobjects.scm |
|
| 56 | + | ["af"] = { query = "@function.outer", desc = "around a function" }, |
|
| 57 | + | ["if"] = { query = "@function.inner", desc = "inner part of a function" }, |
|
| 58 | + | ["ac"] = { query = "@class.outer", desc = "around a class" }, |
|
| 59 | + | ["ic"] = { query = "@class.inner", desc = "inner part of a class" }, |
|
| 60 | + | ["ai"] = { query = "@conditional.outer", desc = "around an if statement" }, |
|
| 61 | + | ["ii"] = { query = "@conditional.inner", desc = "inner part of an if statement" }, |
|
| 62 | + | ["al"] = { query = "@loop.outer", desc = "around a loop" }, |
|
| 63 | + | ["il"] = { query = "@loop.inner", desc = "inner part of a loop" }, |
|
| 64 | + | ["ap"] = { query = "@parameter.outer", desc = "around parameter" }, |
|
| 65 | + | ["ip"] = { query = "@parameter.inner", desc = "inside a parameter" }, |
|
| 66 | + | }, |
|
| 67 | + | selection_modes = { |
|
| 68 | + | ["@parameter.outer"] = "v", -- charwise |
|
| 69 | + | ["@parameter.inner"] = "v", -- charwise |
|
| 70 | + | ["@function.outer"] = "v", -- charwise |
|
| 71 | + | ["@conditional.outer"] = "V", -- linewise |
|
| 72 | + | ["@loop.outer"] = "V", -- linewise |
|
| 73 | + | ["@class.outer"] = "<c-v>", -- blockwise |
|
| 74 | + | }, |
|
| 75 | + | include_surrounding_whitespace = false, |
|
| 76 | + | }, |
|
| 77 | + | move = { |
|
| 78 | + | enable = true, |
|
| 79 | + | set_jumps = true, -- whether to set jumps in the jumplist |
|
| 80 | + | goto_previous_start = { |
|
| 81 | + | ["[f"] = { query = "@function.outer", desc = "Previous function" }, |
|
| 82 | + | ["[c"] = { query = "@class.outer", desc = "Previous class" }, |
|
| 83 | + | ["[p"] = { query = "@parameter.inner", desc = "Previous parameter" }, |
|
| 84 | + | }, |
|
| 85 | + | goto_next_start = { |
|
| 86 | + | ["]f"] = { query = "@function.outer", desc = "Next function" }, |
|
| 87 | + | ["]c"] = { query = "@class.outer", desc = "Next class" }, |
|
| 88 | + | ["]p"] = { query = "@parameter.inner", desc = "Next parameter" }, |
|
| 89 | + | }, |
|
| 90 | + | }, |
|
| 91 | + | swap = { |
|
| 92 | + | enable = true, |
|
| 93 | + | swap_next = { |
|
| 94 | + | ["<leader>a"] = "@parameter.inner", |
|
| 95 | + | }, |
|
| 96 | + | swap_previous = { |
|
| 97 | + | ["<leader>A"] = "@parameter.inner", |
|
| 98 | + | }, |
|
| 99 | + | }, |
|
| 100 | + | }, |
|
| 101 | + | }) |
|
| 102 | + | end, |
|
| 103 | + | } |
| 1 | + | return { |
|
| 2 | + | "tpope/vim-sleuth", |
|
| 3 | + | } |