init: new dotfile configuration
Remove all org files using a new script to more config over, The old org file configuaration were great but required org. This new version only requires the scripts that is included in the repo. The configuration are all done but have not ported the theming system yet. Signed-off-by: Steve Beaulac <steve@sagacity.ca> Change-Id: I14cd7fe058a71c8ba9d6d35397dc8d7e6a6a6964
This commit is contained in:
@@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
if [[ -z "${DOTFILE_DIR:-}" ]]; then
|
||||||
|
export DOTFILE_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
|
||||||
|
fi
|
||||||
|
|
||||||
|
script_dir="$script_dir/installer"
|
||||||
|
|
||||||
|
shopt -s nullglob
|
||||||
|
|
||||||
|
ran_any=false
|
||||||
|
for script in "$script_dir"/*.sh; do
|
||||||
|
if [[ -f "$script" && -x "$script" ]]; then
|
||||||
|
"$script"
|
||||||
|
ran_any=true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if ! $ran_any; then
|
||||||
|
echo "No executable .sh scripts found in $script_dir"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,272 @@
|
|||||||
|
#? Config file for btop v.1.4.6
|
||||||
|
|
||||||
|
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||||
|
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||||
|
color_theme = "current"
|
||||||
|
|
||||||
|
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||||
|
theme_background = true
|
||||||
|
|
||||||
|
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||||
|
truecolor = true
|
||||||
|
|
||||||
|
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||||
|
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||||
|
force_tty = false
|
||||||
|
|
||||||
|
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||||
|
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||||
|
#* Use whitespace " " as separator between different presets.
|
||||||
|
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
||||||
|
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
||||||
|
|
||||||
|
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||||
|
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||||
|
vim_keys = false
|
||||||
|
|
||||||
|
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||||
|
rounded_corners = true
|
||||||
|
|
||||||
|
#* Use terminal synchronized output sequences to reduce flickering on supported terminals.
|
||||||
|
terminal_sync = true
|
||||||
|
|
||||||
|
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||||
|
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||||
|
#* "block" has half the resolution of braille but uses more common characters.
|
||||||
|
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
||||||
|
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
||||||
|
graph_symbol = "braille"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_cpu = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_gpu = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_mem = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_net = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_proc = "default"
|
||||||
|
|
||||||
|
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
|
||||||
|
shown_boxes = "cpu mem net proc"
|
||||||
|
|
||||||
|
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||||
|
update_ms = 2000
|
||||||
|
|
||||||
|
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||||
|
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||||
|
proc_sorting = "cpu lazy"
|
||||||
|
|
||||||
|
#* Reverse sorting order, True or False.
|
||||||
|
proc_reversed = false
|
||||||
|
|
||||||
|
#* Show processes as a tree.
|
||||||
|
proc_tree = false
|
||||||
|
|
||||||
|
#* Use the cpu graph colors in the process list.
|
||||||
|
proc_colors = true
|
||||||
|
|
||||||
|
#* Use a darkening gradient in the process list.
|
||||||
|
proc_gradient = true
|
||||||
|
|
||||||
|
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||||
|
proc_per_core = false
|
||||||
|
|
||||||
|
#* Show process memory as bytes instead of percent.
|
||||||
|
proc_mem_bytes = true
|
||||||
|
|
||||||
|
#* Show cpu graph for each process.
|
||||||
|
proc_cpu_graphs = true
|
||||||
|
|
||||||
|
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||||
|
proc_info_smaps = false
|
||||||
|
|
||||||
|
#* Show proc box on left side of screen instead of right.
|
||||||
|
proc_left = true
|
||||||
|
|
||||||
|
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||||
|
proc_filter_kernel = false
|
||||||
|
|
||||||
|
#* In tree-view, always accumulate child process resources in the parent process.
|
||||||
|
proc_aggregate = false
|
||||||
|
|
||||||
|
#* Should cpu and memory usage display be preserved for dead processes when paused.
|
||||||
|
keep_dead_proc_usage = false
|
||||||
|
|
||||||
|
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||||
|
#* Select from a list of detected attributes from the options menu.
|
||||||
|
cpu_graph_upper = "Auto"
|
||||||
|
|
||||||
|
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
||||||
|
#* Select from a list of detected attributes from the options menu.
|
||||||
|
cpu_graph_lower = "Auto"
|
||||||
|
|
||||||
|
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
|
||||||
|
show_gpu_info = "Auto"
|
||||||
|
|
||||||
|
#* Toggles if the lower CPU graph should be inverted.
|
||||||
|
cpu_invert_lower = true
|
||||||
|
|
||||||
|
#* Set to True to completely disable the lower CPU graph.
|
||||||
|
cpu_single_graph = false
|
||||||
|
|
||||||
|
#* Show cpu box at bottom of screen instead of top.
|
||||||
|
cpu_bottom = false
|
||||||
|
|
||||||
|
#* Shows the system uptime in the CPU box.
|
||||||
|
show_uptime = true
|
||||||
|
|
||||||
|
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
|
||||||
|
show_cpu_watts = true
|
||||||
|
|
||||||
|
#* Show cpu temperature.
|
||||||
|
check_temp = true
|
||||||
|
|
||||||
|
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||||
|
cpu_sensor = "Auto"
|
||||||
|
|
||||||
|
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||||
|
show_coretemp = true
|
||||||
|
|
||||||
|
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||||
|
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||||
|
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
||||||
|
#* Example: "4:0 5:1 6:3"
|
||||||
|
cpu_core_map = ""
|
||||||
|
|
||||||
|
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
||||||
|
temp_scale = "celsius"
|
||||||
|
|
||||||
|
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||||
|
base_10_sizes = false
|
||||||
|
|
||||||
|
#* Show CPU frequency.
|
||||||
|
show_cpu_freq = true
|
||||||
|
|
||||||
|
#* How to calculate CPU frequency, available values: "first", "range", "lowest", "highest" and "average".
|
||||||
|
freq_mode = "first"
|
||||||
|
|
||||||
|
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||||
|
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||||
|
clock_format = "%X"
|
||||||
|
|
||||||
|
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||||
|
background_update = true
|
||||||
|
|
||||||
|
#* Custom cpu model name, empty string to disable.
|
||||||
|
custom_cpu_name = ""
|
||||||
|
|
||||||
|
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||||
|
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
|
||||||
|
disks_filter = ""
|
||||||
|
|
||||||
|
#* Show graphs instead of meters for memory values.
|
||||||
|
mem_graphs = true
|
||||||
|
|
||||||
|
#* Show mem box below net box instead of above.
|
||||||
|
mem_below_net = false
|
||||||
|
|
||||||
|
#* Count ZFS ARC in cached and available memory.
|
||||||
|
zfs_arc_cached = true
|
||||||
|
|
||||||
|
#* If swap memory should be shown in memory box.
|
||||||
|
show_swap = true
|
||||||
|
|
||||||
|
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||||
|
swap_disk = true
|
||||||
|
|
||||||
|
#* If mem box should be split to also show disks info.
|
||||||
|
show_disks = true
|
||||||
|
|
||||||
|
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||||
|
only_physical = true
|
||||||
|
|
||||||
|
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||||
|
use_fstab = true
|
||||||
|
|
||||||
|
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||||
|
zfs_hide_datasets = false
|
||||||
|
|
||||||
|
#* Set to true to show available disk space for privileged users.
|
||||||
|
disk_free_priv = false
|
||||||
|
|
||||||
|
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||||
|
show_io_stat = true
|
||||||
|
|
||||||
|
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||||
|
io_mode = false
|
||||||
|
|
||||||
|
#* Set to True to show combined read/write io graphs in io mode.
|
||||||
|
io_graph_combined = false
|
||||||
|
|
||||||
|
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||||
|
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||||
|
io_graph_speeds = ""
|
||||||
|
|
||||||
|
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||||
|
net_download = 100
|
||||||
|
|
||||||
|
net_upload = 100
|
||||||
|
|
||||||
|
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||||
|
net_auto = true
|
||||||
|
|
||||||
|
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||||
|
net_sync = true
|
||||||
|
|
||||||
|
#* Starts with the Network Interface specified here.
|
||||||
|
net_iface = ""
|
||||||
|
|
||||||
|
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
|
||||||
|
base_10_bitrate = "Auto"
|
||||||
|
|
||||||
|
#* Show battery stats in top right if battery is present.
|
||||||
|
show_battery = true
|
||||||
|
|
||||||
|
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||||
|
selected_battery = "Auto"
|
||||||
|
|
||||||
|
#* Show power stats of battery next to charge indicator.
|
||||||
|
show_battery_watts = true
|
||||||
|
|
||||||
|
#* Set loglevel for "~/.local/state/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||||
|
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||||
|
log_level = "WARNING"
|
||||||
|
|
||||||
|
#* Automatically save current settings to config file on exit.
|
||||||
|
save_config_on_exit = true
|
||||||
|
|
||||||
|
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
||||||
|
nvml_measure_pcie_speeds = true
|
||||||
|
|
||||||
|
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
|
||||||
|
rsmi_measure_pcie_speeds = true
|
||||||
|
|
||||||
|
#* Horizontally mirror the GPU graph.
|
||||||
|
gpu_mirror_graph = true
|
||||||
|
|
||||||
|
#* Set which GPU vendors to show. Available values are "nvidia amd intel"
|
||||||
|
shown_gpus = "nvidia amd intel"
|
||||||
|
|
||||||
|
#* Custom gpu0 model name, empty string to disable.
|
||||||
|
custom_gpu_name0 = ""
|
||||||
|
|
||||||
|
#* Custom gpu1 model name, empty string to disable.
|
||||||
|
custom_gpu_name1 = ""
|
||||||
|
|
||||||
|
#* Custom gpu2 model name, empty string to disable.
|
||||||
|
custom_gpu_name2 = ""
|
||||||
|
|
||||||
|
#* Custom gpu3 model name, empty string to disable.
|
||||||
|
custom_gpu_name3 = ""
|
||||||
|
|
||||||
|
#* Custom gpu4 model name, empty string to disable.
|
||||||
|
custom_gpu_name4 = ""
|
||||||
|
|
||||||
|
#* Custom gpu5 model name, empty string to disable.
|
||||||
|
custom_gpu_name5 = ""
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
--ozone-platform=wayland
|
||||||
|
--ozone-platform-hint=wayland
|
||||||
|
--enable-features=TouchpadOverscrollHistoryNavigation
|
||||||
|
--disable-features=WaylandWpColorManagerV1
|
||||||
@@ -0,0 +1,312 @@
|
|||||||
|
;;; early-init.el --- Early Init -*- no-byte-compile: t; lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Author: James Cherti
|
||||||
|
;; URL: https://github.com/jamescherti/minimal-emacs.d
|
||||||
|
;; Package-Requires: ((emacs "29.1"))
|
||||||
|
;; Keywords: maint
|
||||||
|
;; Version: 1.1.0
|
||||||
|
;; SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;; The minimal-emacs.d starter kit provides improved Emacs defaults and
|
||||||
|
;; optimized startup, intended to serve as a solid foundation for your vanilla
|
||||||
|
;; Emacs configuration and enhance your overall Emacs experience.
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
;;; Variables
|
||||||
|
|
||||||
|
(defvar minimal-emacs-ui-features '()
|
||||||
|
"List of user interface features to disable in minimal Emacs setup.
|
||||||
|
|
||||||
|
This variable holds a list Emacs UI features that can be enabled:
|
||||||
|
- `context-menu`: Enables the context menu in graphical environments.
|
||||||
|
- `tool-bar`: Enables the tool bar in graphical environments.
|
||||||
|
- `menu-bar`: Enables the menu bar in graphical environments.
|
||||||
|
- `dialogs`: Enables both file dialogs and dialog boxes.
|
||||||
|
- `tooltips`: Enables tooltips.
|
||||||
|
|
||||||
|
Each feature in the list corresponds to a specific UI component that can be
|
||||||
|
turned on.")
|
||||||
|
|
||||||
|
(defvar minimal-emacs-frame-title-format "%b – Emacs"
|
||||||
|
"Template for displaying the title bar of visible and iconified frame.")
|
||||||
|
|
||||||
|
(defvar minimal-emacs-debug nil
|
||||||
|
"Non-nil to enable debug.")
|
||||||
|
|
||||||
|
(defvar minimal-emacs-gc-cons-threshold (* 16 1024 1024)
|
||||||
|
"The value of `gc-cons-threshold' after Emacs startup.")
|
||||||
|
|
||||||
|
(defvar minimal-emacs-package-initialize-and-refresh t
|
||||||
|
"Whether to automatically initialize and refresh packages.
|
||||||
|
When set to non-nil, Emacs will automatically call `package-initialize' and
|
||||||
|
`package-refresh-contents' to set up and update the package system.")
|
||||||
|
|
||||||
|
(defvar minimal-emacs-user-directory user-emacs-directory
|
||||||
|
"The default value of the `user-emacs-directory' variable.")
|
||||||
|
|
||||||
|
;;; Load pre-early-init.el
|
||||||
|
|
||||||
|
(defun minimal-emacs-load-user-init (filename)
|
||||||
|
"Execute a file of Lisp code named FILENAME."
|
||||||
|
(let ((user-init-file
|
||||||
|
(expand-file-name filename
|
||||||
|
minimal-emacs-user-directory)))
|
||||||
|
(when (file-exists-p user-init-file)
|
||||||
|
(load user-init-file nil t))))
|
||||||
|
|
||||||
|
(minimal-emacs-load-user-init "pre-early-init.el")
|
||||||
|
|
||||||
|
(setq custom-theme-directory
|
||||||
|
(expand-file-name "themes/" minimal-emacs-user-directory))
|
||||||
|
(setq custom-file (expand-file-name "custom.el" minimal-emacs-user-directory))
|
||||||
|
|
||||||
|
;;; Misc
|
||||||
|
|
||||||
|
(set-language-environment "UTF-8")
|
||||||
|
|
||||||
|
;; Set-language-environment sets default-input-method, which is unwanted.
|
||||||
|
(setq default-input-method nil)
|
||||||
|
|
||||||
|
;; Some features that are not represented as packages can be found in
|
||||||
|
;; `features', but this can be inconsistent. The following enforce consistency:
|
||||||
|
(if (fboundp #'json-parse-string)
|
||||||
|
(push 'jansson features))
|
||||||
|
(if (string-match-p "HARFBUZZ" system-configuration-features) ; no alternative
|
||||||
|
(push 'harfbuzz features))
|
||||||
|
(if (bound-and-true-p module-file-suffix)
|
||||||
|
(push 'dynamic-modules features))
|
||||||
|
|
||||||
|
;;; Garbage collection
|
||||||
|
;; Garbage collection significantly affects startup times. This setting delays
|
||||||
|
;; garbage collection during startup but will be reset later.
|
||||||
|
|
||||||
|
(setq gc-cons-threshold most-positive-fixnum)
|
||||||
|
|
||||||
|
(add-hook 'emacs-startup-hook
|
||||||
|
(lambda ()
|
||||||
|
(setq gc-cons-threshold minimal-emacs-gc-cons-threshold)))
|
||||||
|
|
||||||
|
;;; Performance
|
||||||
|
|
||||||
|
;; Prefer loading newer compiled files
|
||||||
|
(setq load-prefer-newer t)
|
||||||
|
|
||||||
|
;; Increase how much is read from processes in a single chunk (default is 4kb).
|
||||||
|
(setq read-process-output-max (* 512 1024)) ; 512kb
|
||||||
|
|
||||||
|
;; Reduce rendering/line scan work by not rendering cursors or regions in
|
||||||
|
;; non-focused windows.
|
||||||
|
(setq-default cursor-in-non-selected-windows nil)
|
||||||
|
(setq highlight-nonselected-windows nil)
|
||||||
|
|
||||||
|
;; Disable warnings from the legacy advice API. They aren't useful.
|
||||||
|
(setq ad-redefinition-action 'accept)
|
||||||
|
|
||||||
|
(setq warning-suppress-types '((lexical-binding)))
|
||||||
|
|
||||||
|
;; Don't ping things that look like domain names.
|
||||||
|
(setq ffap-machine-p-known 'reject)
|
||||||
|
|
||||||
|
;; By default, Emacs "updates" its ui more often than it needs to
|
||||||
|
(setq idle-update-delay 1.0)
|
||||||
|
|
||||||
|
;; Font compacting can be very resource-intensive, especially when rendering
|
||||||
|
;; icon fonts on Windows. This will increase memory usage.
|
||||||
|
(setq inhibit-compacting-font-caches t)
|
||||||
|
|
||||||
|
(unless (daemonp)
|
||||||
|
(let ((old-value (default-toplevel-value 'file-name-handler-alist)))
|
||||||
|
(set-default-toplevel-value
|
||||||
|
'file-name-handler-alist
|
||||||
|
;; Determine the state of bundled libraries using calc-loaddefs.el.
|
||||||
|
;; If compressed, retain the gzip handler in `file-name-handler-alist`.
|
||||||
|
;; If compiled or neither, omit the gzip handler during startup for
|
||||||
|
;; improved startup and package load time.
|
||||||
|
(if (eval-when-compile
|
||||||
|
(locate-file-internal "calc-loaddefs.el" load-path))
|
||||||
|
nil
|
||||||
|
(list (rassq 'jka-compr-handler old-value))))
|
||||||
|
;; Ensure the new value persists through any current let-binding.
|
||||||
|
(set-default-toplevel-value 'file-name-handler-alist
|
||||||
|
file-name-handler-alist)
|
||||||
|
;; Remember the old value to reset it as needed.
|
||||||
|
(add-hook 'emacs-startup-hook
|
||||||
|
(lambda ()
|
||||||
|
(set-default-toplevel-value
|
||||||
|
'file-name-handler-alist
|
||||||
|
;; Merge instead of overwrite to preserve any changes made
|
||||||
|
;; since startup.
|
||||||
|
(delete-dups (append file-name-handler-alist old-value))))
|
||||||
|
101))
|
||||||
|
|
||||||
|
(unless noninteractive
|
||||||
|
(progn
|
||||||
|
;; Disable mode-line-format during init
|
||||||
|
(defun minimal-emacs--reset-inhibited-vars-h ()
|
||||||
|
(setq-default inhibit-redisplay nil
|
||||||
|
;; Inhibiting `message' only prevents redraws and
|
||||||
|
inhibit-message nil)
|
||||||
|
(redraw-frame))
|
||||||
|
|
||||||
|
(defvar minimal-emacs--default-mode-line-format mode-line-format
|
||||||
|
"Default value of `mode-line-format'.")
|
||||||
|
(setq-default mode-line-format nil)
|
||||||
|
|
||||||
|
(defun minimal-emacs--startup-load-user-init-file (fn &rest args)
|
||||||
|
"Advice for startup--load-user-init-file to reset mode-line-format."
|
||||||
|
(let (init)
|
||||||
|
(unwind-protect
|
||||||
|
(progn
|
||||||
|
(apply fn args) ; Start up as normal
|
||||||
|
(setq init t))
|
||||||
|
(unless init
|
||||||
|
;; If we don't undo inhibit-{message, redisplay} and there's an
|
||||||
|
;; error, we'll see nothing but a blank Emacs frame.
|
||||||
|
(minimal-emacs--reset-inhibited-vars-h))
|
||||||
|
(unless (default-toplevel-value 'mode-line-format)
|
||||||
|
(setq-default mode-line-format
|
||||||
|
minimal-emacs--default-mode-line-format)))))
|
||||||
|
|
||||||
|
(advice-add 'startup--load-user-init-file :around
|
||||||
|
#'minimal-emacs--startup-load-user-init-file))
|
||||||
|
|
||||||
|
;; Without this, Emacs will try to resize itself to a specific column size
|
||||||
|
(setq frame-inhibit-implied-resize t)
|
||||||
|
|
||||||
|
;; A second, case-insensitive pass over `auto-mode-alist' is time wasted.
|
||||||
|
;; No second pass of case-insensitive search over auto-mode-alist.
|
||||||
|
(setq auto-mode-case-fold nil)
|
||||||
|
|
||||||
|
;; Reduce *Message* noise at startup. An empty scratch buffer (or the
|
||||||
|
;; dashboard) is more than enough, and faster to display.
|
||||||
|
(setq inhibit-startup-screen t
|
||||||
|
inhibit-startup-echo-area-message user-login-name)
|
||||||
|
(setq initial-buffer-choice nil
|
||||||
|
inhibit-startup-buffer-menu t
|
||||||
|
inhibit-x-resources t)
|
||||||
|
|
||||||
|
;; Disable bidirectional text scanning for a modest performance boost.
|
||||||
|
(setq-default bidi-display-reordering 'left-to-right
|
||||||
|
bidi-paragraph-direction 'left-to-right)
|
||||||
|
|
||||||
|
;; Give up some bidirectional functionality for slightly faster re-display.
|
||||||
|
(setq bidi-inhibit-bpa t)
|
||||||
|
|
||||||
|
;; Remove "For information about GNU Emacs..." message at startup
|
||||||
|
(advice-add #'display-startup-echo-area-message :override #'ignore)
|
||||||
|
|
||||||
|
;; Suppress the vanilla startup screen completely. We've disabled it with
|
||||||
|
;; `inhibit-startup-screen', but it would still initialize anyway.
|
||||||
|
(advice-add #'display-startup-screen :override #'ignore)
|
||||||
|
|
||||||
|
;; Shave seconds off startup time by starting the scratch buffer in
|
||||||
|
;; `fundamental-mode'
|
||||||
|
(setq initial-major-mode 'fundamental-mode
|
||||||
|
initial-scratch-message nil)
|
||||||
|
|
||||||
|
(unless minimal-emacs-debug
|
||||||
|
;; Unset command line options irrelevant to the current OS. These options
|
||||||
|
;; are still processed by `command-line-1` but have no effect.
|
||||||
|
(unless (eq system-type 'darwin)
|
||||||
|
(setq command-line-ns-option-alist nil))
|
||||||
|
(unless (memq initial-window-system '(x pgtk))
|
||||||
|
(setq command-line-x-option-alist nil)))))
|
||||||
|
|
||||||
|
;;; Native compilation and Byte compilation
|
||||||
|
|
||||||
|
(if (and (featurep 'native-compile)
|
||||||
|
(fboundp 'native-comp-available-p)
|
||||||
|
(native-comp-available-p))
|
||||||
|
;; Activate `native-compile'
|
||||||
|
(setq native-comp-jit-compilation t
|
||||||
|
native-comp-deferred-compilation t ; Obsolete since Emacs 29.1
|
||||||
|
package-native-compile t)
|
||||||
|
;; Deactivate the `native-compile' feature if it is not available
|
||||||
|
(setq features (delq 'native-compile features)))
|
||||||
|
|
||||||
|
;; Suppress compiler warnings and don't inundate users with their popups.
|
||||||
|
(setq native-comp-async-report-warnings-errors
|
||||||
|
(or minimal-emacs-debug 'silent))
|
||||||
|
(setq native-comp-warning-on-missing-source minimal-emacs-debug)
|
||||||
|
|
||||||
|
(setq debug-on-error minimal-emacs-debug
|
||||||
|
jka-compr-verbose minimal-emacs-debug)
|
||||||
|
|
||||||
|
(setq byte-compile-warnings minimal-emacs-debug)
|
||||||
|
(setq byte-compile-verbose minimal-emacs-debug)
|
||||||
|
|
||||||
|
;;; UI elements
|
||||||
|
|
||||||
|
(setq frame-title-format minimal-emacs-frame-title-format
|
||||||
|
icon-title-format minimal-emacs-frame-title-format)
|
||||||
|
|
||||||
|
;; Disable startup screens and messages
|
||||||
|
(setq inhibit-splash-screen t)
|
||||||
|
|
||||||
|
;; I intentionally avoid calling `menu-bar-mode', `tool-bar-mode', and
|
||||||
|
;; `scroll-bar-mode' because manipulating frame parameters can trigger or queue
|
||||||
|
;; a superfluous and potentially expensive frame redraw at startup, depending
|
||||||
|
;; on the window system. The variables must also be set to `nil' so users don't
|
||||||
|
;; have to call the functions twice to re-enable them.
|
||||||
|
(unless (memq 'menu-bar minimal-emacs-ui-features)
|
||||||
|
(push '(menu-bar-lines . 0) default-frame-alist)
|
||||||
|
(unless (memq window-system '(mac ns))
|
||||||
|
(setq menu-bar-mode nil)))
|
||||||
|
|
||||||
|
(unless (daemonp)
|
||||||
|
(unless noninteractive
|
||||||
|
(when (fboundp 'tool-bar-setup)
|
||||||
|
;; Temporarily override the tool-bar-setup function to prevent it from
|
||||||
|
;; running during the initial stages of startup
|
||||||
|
(advice-add #'tool-bar-setup :override #'ignore)
|
||||||
|
(define-advice startup--load-user-init-file
|
||||||
|
(:before (&rest _) minimal-emacs-setup-toolbar)
|
||||||
|
(advice-remove #'tool-bar-setup #'ignore)
|
||||||
|
(tool-bar-setup)))))
|
||||||
|
(unless (memq 'tool-bar minimal-emacs-ui-features)
|
||||||
|
(push '(tool-bar-lines . 0) default-frame-alist)
|
||||||
|
(setq tool-bar-mode nil))
|
||||||
|
|
||||||
|
(push '(vertical-scroll-bars) default-frame-alist)
|
||||||
|
(push '(horizontal-scroll-bars) default-frame-alist)
|
||||||
|
(setq scroll-bar-mode nil)
|
||||||
|
(when (fboundp 'horizontal-scroll-bar-mode)
|
||||||
|
(horizontal-scroll-bar-mode -1))
|
||||||
|
|
||||||
|
(unless (memq 'tooltips minimal-emacs-ui-features)
|
||||||
|
(when (bound-and-true-p tooltip-mode)
|
||||||
|
(tooltip-mode -1)))
|
||||||
|
|
||||||
|
;; Disable GUIs because they are inconsistent across systems, desktop
|
||||||
|
;; environments, and themes, and they don't match the look of Emacs.
|
||||||
|
(unless (memq 'dialogs minimal-emacs-ui-features)
|
||||||
|
(setq use-file-dialog nil)
|
||||||
|
(setq use-dialog-box nil))
|
||||||
|
|
||||||
|
;; Allow for shorter responses: "y" for yes and "n" for no.
|
||||||
|
(if (boundp 'use-short-answers)
|
||||||
|
(setq use-short-answers t)
|
||||||
|
(advice-add #'yes-or-no-p :override #'y-or-n-p))
|
||||||
|
(defalias #'view-hello-file #'ignore) ; Never show the hello file
|
||||||
|
|
||||||
|
;;; package.el
|
||||||
|
(setq package-enable-at-startup nil)
|
||||||
|
(setq package-quickstart nil)
|
||||||
|
(setq use-package-always-ensure t)
|
||||||
|
(setq package-archives '(("melpa" . "https://melpa.org/packages/")
|
||||||
|
("melpa-stable" . "https://stable.melpa.org/packages/")
|
||||||
|
("gnu" . "https://elpa.gnu.org/packages/")
|
||||||
|
("nongnu" . "https://elpa.nongnu.org/nongnu/")))
|
||||||
|
(customize-set-variable 'package-archive-priorities '(("gnu" . 99)
|
||||||
|
("nongnu" . 80)
|
||||||
|
("stable" . 70)
|
||||||
|
("melpa" . 0)))
|
||||||
|
|
||||||
|
;;; Load post-early-init.el
|
||||||
|
(minimal-emacs-load-user-init "post-early-init.el")
|
||||||
|
|
||||||
|
(provide 'early-init)
|
||||||
|
|
||||||
|
;;; early-init.el ends here
|
||||||
@@ -0,0 +1,356 @@
|
|||||||
|
;;; init.el --- Init -*- no-byte-compile: t; lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; Author: James Cherti
|
||||||
|
;; URL: https://github.com/jamescherti/minimal-emacs.d
|
||||||
|
;; Package-Requires: ((emacs "29.1"))
|
||||||
|
;; Keywords: maint
|
||||||
|
;; Version: 1.1.0
|
||||||
|
;; SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;; The minimal-emacs.d starter kit provides improved Emacs defaults and
|
||||||
|
;; optimized startup, intended to serve as a solid foundation for your vanilla
|
||||||
|
;; Emacs configuration and enhance your overall Emacs experience.
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
;;; Load pre-init.el
|
||||||
|
(minimal-emacs-load-user-init "pre-init.el")
|
||||||
|
|
||||||
|
;;; package.el
|
||||||
|
(when (bound-and-true-p minimal-emacs-package-initialize-and-refresh)
|
||||||
|
;; Initialize and refresh package contents again if needed
|
||||||
|
(package-initialize)
|
||||||
|
(unless package-archive-contents
|
||||||
|
(package-refresh-contents))
|
||||||
|
|
||||||
|
;; Install use-package if necessary
|
||||||
|
(unless (package-installed-p 'use-package)
|
||||||
|
(package-install 'use-package))
|
||||||
|
|
||||||
|
;; Ensure use-package is available at compile time
|
||||||
|
(eval-when-compile
|
||||||
|
(require 'use-package)))
|
||||||
|
|
||||||
|
;; Ensure the 'use-package' package is installed and loaded
|
||||||
|
|
||||||
|
;;; Minibuffer
|
||||||
|
;; Allow nested minibuffers
|
||||||
|
(setq enable-recursive-minibuffers t)
|
||||||
|
|
||||||
|
;; Keep the cursor out of the read-only portions of the.minibuffer
|
||||||
|
(setq minibuffer-prompt-properties
|
||||||
|
'(read-only t intangible t cursor-intangible t face
|
||||||
|
minibuffer-prompt))
|
||||||
|
(add-hook 'minibuffer-setup-hook #'cursor-intangible-mode)
|
||||||
|
|
||||||
|
;;; Misc
|
||||||
|
|
||||||
|
;; switch-to-buffer runs pop-to-buffer-same-window instead
|
||||||
|
(setq switch-to-buffer-obey-display-actions t)
|
||||||
|
|
||||||
|
(setq show-paren-delay 0.1
|
||||||
|
show-paren-highlight-openparen t
|
||||||
|
show-paren-when-point-inside-paren t
|
||||||
|
show-paren-when-point-in-periphery t)
|
||||||
|
|
||||||
|
(setq whitespace-line-column nil) ; whitespace-mode
|
||||||
|
|
||||||
|
;; I reduced the default value of 9 to simplify the font-lock keyword,
|
||||||
|
;; aiming to improve performance. This package helps differentiate
|
||||||
|
;; nested delimiter pairs, particularly in languages with heavy use of
|
||||||
|
;; parentheses.
|
||||||
|
(setq rainbow-delimiters-max-face-count 5)
|
||||||
|
|
||||||
|
;; Can be activated with `display-line-numbers-mode'
|
||||||
|
(setq-default display-line-numbers-width 3)
|
||||||
|
(setq-default display-line-numbers-widen t)
|
||||||
|
|
||||||
|
(setq comint-prompt-read-only t)
|
||||||
|
(setq comint-buffer-maximum-size 2048)
|
||||||
|
|
||||||
|
(setq compilation-always-kill t
|
||||||
|
compilation-ask-about-save nil
|
||||||
|
compilation-scroll-output 'first-error)
|
||||||
|
|
||||||
|
(setq truncate-string-ellipsis "…")
|
||||||
|
|
||||||
|
;; Configure Emacs to ask for confirmation before exiting
|
||||||
|
(setq confirm-kill-emacs 'y-or-n-p)
|
||||||
|
|
||||||
|
;; Delete by moving to trash in interactive mode
|
||||||
|
(setq delete-by-moving-to-trash (not noninteractive))
|
||||||
|
|
||||||
|
;;; Files
|
||||||
|
|
||||||
|
;; Disable the warning "X and Y are the same file". Ignoring this warning is
|
||||||
|
;; acceptable since it will redirect you to the existing buffer regardless.
|
||||||
|
(setq find-file-suppress-same-file-warnings t)
|
||||||
|
|
||||||
|
;; Resolve symlinks when opening files, so that any operations are conducted
|
||||||
|
;; from the file's true directory (like `find-file').
|
||||||
|
(setq find-file-visit-truename t
|
||||||
|
vc-follow-symlinks t)
|
||||||
|
|
||||||
|
;; Skip confirmation prompts when creating a new file or buffer
|
||||||
|
(setq confirm-nonexistent-file-or-buffer nil)
|
||||||
|
|
||||||
|
(setq uniquify-buffer-name-style 'forward)
|
||||||
|
|
||||||
|
(setq mouse-yank-at-point t)
|
||||||
|
|
||||||
|
;; Prefer vertical splits over horizontal ones
|
||||||
|
(setq split-width-threshold 170
|
||||||
|
split-height-threshold nil)
|
||||||
|
|
||||||
|
;; The native border "uses" a pixel of the fringe on the rightmost
|
||||||
|
;; splits, whereas `window-divider` does not.
|
||||||
|
(setq window-divider-default-bottom-width 1
|
||||||
|
window-divider-default-places t
|
||||||
|
window-divider-default-right-width 1)
|
||||||
|
|
||||||
|
(add-hook 'after-init-hook #'window-divider-mode)
|
||||||
|
|
||||||
|
;;; Backup files
|
||||||
|
|
||||||
|
;; Avoid generating backups or lockfiles to prevent creating world-readable
|
||||||
|
;; copies of files.
|
||||||
|
(setq create-lockfiles nil)
|
||||||
|
(setq make-backup-files nil)
|
||||||
|
|
||||||
|
(setq backup-directory-alist
|
||||||
|
`(("." . ,(expand-file-name "backup" user-emacs-directory))))
|
||||||
|
(setq tramp-backup-directory-alist backup-directory-alist)
|
||||||
|
(setq backup-by-copying-when-linked t)
|
||||||
|
(setq backup-by-copying t) ; Backup by copying rather renaming
|
||||||
|
(setq delete-old-versions t) ; Delete excess backup versions silently
|
||||||
|
(setq version-control t) ; Use version numbers for backup files
|
||||||
|
(setq kept-new-versions 5)
|
||||||
|
(setq kept-old-versions 5)
|
||||||
|
(setq vc-make-backup-files nil) ; Do not backup version controlled files
|
||||||
|
|
||||||
|
;;; Auto save
|
||||||
|
;; Enable auto-save to safeguard against crashes or data loss. The
|
||||||
|
;; `recover-file' or `recover-session' functions can be used to restore
|
||||||
|
;; auto-saved data.
|
||||||
|
(setq auto-save-default t)
|
||||||
|
|
||||||
|
;; Do not auto-disable auto-save after deleting large chunks of
|
||||||
|
;; text. The purpose of auto-save is to provide a failsafe, and
|
||||||
|
;; disabling it contradicts this objective.
|
||||||
|
(setq auto-save-include-big-deletions t)
|
||||||
|
|
||||||
|
(setq auto-save-list-file-prefix
|
||||||
|
(expand-file-name "autosave/" user-emacs-directory))
|
||||||
|
(setq tramp-auto-save-directory
|
||||||
|
(expand-file-name "tramp-autosave/" user-emacs-directory))
|
||||||
|
|
||||||
|
;; Auto save options
|
||||||
|
(setq kill-buffer-delete-auto-save-files t)
|
||||||
|
|
||||||
|
;;; Auto revert
|
||||||
|
;; Auto-revert in Emacs is a feature that automatically updates the
|
||||||
|
;; contents of a buffer to reflect changes made to the underlying file
|
||||||
|
;; on disk.
|
||||||
|
(setq revert-without-query (list ".") ; Do not prompt
|
||||||
|
auto-revert-stop-on-user-input nil
|
||||||
|
auto-revert-verbose t)
|
||||||
|
|
||||||
|
;; Revert other buffers (e.g, Dired)
|
||||||
|
(setq global-auto-revert-non-file-buffers t)
|
||||||
|
|
||||||
|
;;; recentf
|
||||||
|
;; `recentf' is an Emacs package that maintains a list of recently
|
||||||
|
;; accessed files, making it easier to reopen files you have worked on
|
||||||
|
;; recently.
|
||||||
|
(setq recentf-max-saved-items 300) ; default is 20
|
||||||
|
(setq recentf-auto-cleanup 'mode)
|
||||||
|
|
||||||
|
;;; saveplace
|
||||||
|
;; `save-place-mode` enables Emacs to remember the last location within a file
|
||||||
|
;; upon reopening. This feature is particularly beneficial for resuming work at
|
||||||
|
;; the precise point where you previously left off.
|
||||||
|
(setq save-place-file (expand-file-name "saveplace" user-emacs-directory))
|
||||||
|
(setq save-place-limit 600)
|
||||||
|
|
||||||
|
;;; savehist
|
||||||
|
;; `savehist` is an Emacs feature that preserves the minibuffer history between
|
||||||
|
;; sessions. It saves the history of inputs in the minibuffer, such as commands,
|
||||||
|
;; search strings, and other prompts, to a file. This allows users to retain
|
||||||
|
;; their minibuffer history across Emacs restarts.
|
||||||
|
(setq history-length 300)
|
||||||
|
(setq savehist-save-minibuffer-history t) ;; Default
|
||||||
|
|
||||||
|
;;; Frames and windows
|
||||||
|
|
||||||
|
;; Resizing the Emacs frame can be costly when changing the font. Disable this
|
||||||
|
;; to improve startup times with fonts larger than the system default.
|
||||||
|
(setq frame-resize-pixelwise t)
|
||||||
|
|
||||||
|
;; However, do not resize windows pixelwise, as this can cause crashes in some
|
||||||
|
;; cases when resizing too many windows at once or rapidly.
|
||||||
|
(setq window-resize-pixelwise nil)
|
||||||
|
|
||||||
|
(setq resize-mini-windows 'grow-only)
|
||||||
|
|
||||||
|
;;; Scrolling
|
||||||
|
;; Enables faster scrolling through unfontified regions. This may result in
|
||||||
|
;; brief periods of inaccurate syntax highlighting immediately after scrolling,
|
||||||
|
;; which should quickly self-correct.
|
||||||
|
(setq fast-but-imprecise-scrolling t)
|
||||||
|
|
||||||
|
;; Move point to top/bottom of buffer before signaling a scrolling error.
|
||||||
|
(setq scroll-error-top-bottom t)
|
||||||
|
|
||||||
|
;; Keeps screen position if the scroll command moved it vertically out of the
|
||||||
|
;; window.
|
||||||
|
(setq scroll-preserve-screen-position t)
|
||||||
|
|
||||||
|
;;; Mouse
|
||||||
|
|
||||||
|
;; Emacs 29
|
||||||
|
(when (memq 'context-menu minimal-emacs-ui-features)
|
||||||
|
(when (and (display-graphic-p) (fboundp 'context-menu-mode))
|
||||||
|
(add-hook 'after-init-hook #'context-menu-mode)))
|
||||||
|
|
||||||
|
(setq hscroll-margin 2
|
||||||
|
hscroll-step 1
|
||||||
|
;; Emacs spends excessive time recentering the screen when the cursor
|
||||||
|
;; moves more than N lines past the window edges (where N is the value of
|
||||||
|
;; `scroll-conservatively`). This can be particularly slow in larger files
|
||||||
|
;; during extensive scrolling. If `scroll-conservatively` is set above
|
||||||
|
;; 100, the window is never automatically recentered. The default value of
|
||||||
|
;; 0 triggers recentering too aggressively. Setting it to 10 reduces
|
||||||
|
;; excessive recentering and only recenters the window when scrolling
|
||||||
|
;; significantly off-screen.
|
||||||
|
scroll-conservatively 10
|
||||||
|
scroll-margin 0
|
||||||
|
scroll-preserve-screen-position t
|
||||||
|
;; Reduce cursor lag by preventing automatic adjustments to
|
||||||
|
;; `window-vscroll' for unusually long lines. Setting
|
||||||
|
;; `auto-window-vscroll' it to nil also resolves the issue of random
|
||||||
|
;; half-screen jumps during scrolling.
|
||||||
|
auto-window-vscroll nil
|
||||||
|
;; Mouse
|
||||||
|
mouse-wheel-scroll-amount '(1 ((shift) . hscroll))
|
||||||
|
mouse-wheel-scroll-amount-horizontal 1)
|
||||||
|
|
||||||
|
;;; Cursor
|
||||||
|
;; The blinking cursor is distracting and interferes with cursor settings in
|
||||||
|
;; some minor modes that try to change it buffer-locally (e.g., Treemacs).
|
||||||
|
;; Additionally, it can cause freezing, especially on macOS, for users with
|
||||||
|
;; customized and colored cursors.
|
||||||
|
(blink-cursor-mode -1)
|
||||||
|
|
||||||
|
;; Don't blink the paren matching the one at point, it's too distracting.
|
||||||
|
(setq blink-matching-paren nil)
|
||||||
|
|
||||||
|
;; Don't stretch the cursor to fit wide characters, it is disorienting,
|
||||||
|
;; especially for tabs.
|
||||||
|
(setq x-stretch-cursor nil)
|
||||||
|
|
||||||
|
;;; Annoyances
|
||||||
|
|
||||||
|
;; No beeping or blinking
|
||||||
|
(setq visible-bell nil)
|
||||||
|
(setq ring-bell-function #'ignore)
|
||||||
|
|
||||||
|
;; This controls how long Emacs will blink to show the deleted pairs with
|
||||||
|
;; `delete-pair'. A longer delay can be annoying as it causes a noticeable pause
|
||||||
|
;; after each deletion, disrupting the flow of editing.
|
||||||
|
(setq delete-pair-blink-delay 0.03)
|
||||||
|
|
||||||
|
;;; Indent and formatting
|
||||||
|
(setq-default left-fringe-width 8)
|
||||||
|
(setq-default right-fringe-width 8)
|
||||||
|
|
||||||
|
;; Do not show an arrow at the top/bottomin the fringe and empty lines
|
||||||
|
(setq-default indicate-buffer-boundaries nil)
|
||||||
|
(setq-default indicate-empty-lines nil)
|
||||||
|
|
||||||
|
;; Continue wrapped lines at whitespace rather than breaking in the
|
||||||
|
;; middle of a word.
|
||||||
|
(setq-default word-wrap t)
|
||||||
|
|
||||||
|
;; Disable wrapping by default due to its performance cost.
|
||||||
|
(setq-default truncate-lines t)
|
||||||
|
|
||||||
|
;; If enabled and `truncate-lines' is disabled, soft wrapping will not occur
|
||||||
|
;; when the window is narrower than `truncate-partial-width-windows' characters.
|
||||||
|
(setq truncate-partial-width-windows nil)
|
||||||
|
|
||||||
|
;; Prefer spaces over tabs. Spaces offer a more consistent default compared to
|
||||||
|
;; 8-space tabs. This setting can be adjusted on a per-mode basis as needed.
|
||||||
|
(setq-default indent-tabs-mode nil
|
||||||
|
tab-width 4)
|
||||||
|
|
||||||
|
;; Enable indentation and completion using the TAB key
|
||||||
|
(setq-default tab-always-indent nil)
|
||||||
|
|
||||||
|
;; Enable multi-line commenting which ensures that `comment-indent-new-line'
|
||||||
|
;; properly continues comments onto new lines, which is useful for writing
|
||||||
|
;; longer comments or docstrings that span multiple lines.
|
||||||
|
(setq comment-multi-line t)
|
||||||
|
|
||||||
|
;; We often split terminals and editor windows or place them side-by-side,
|
||||||
|
;; making use of the additional horizontal space.
|
||||||
|
(setq-default fill-column 80)
|
||||||
|
|
||||||
|
;; Disable the obsolete practice of end-of-line spacing from the
|
||||||
|
;; typewriter era.
|
||||||
|
(setq sentence-end-double-space nil)
|
||||||
|
|
||||||
|
;; According to the POSIX, a line is defined as "a sequence of zero or
|
||||||
|
;; more non-newline characters followed by a terminating newline".
|
||||||
|
(setq require-final-newline t)
|
||||||
|
|
||||||
|
;; Remove duplicates from the kill ring to reduce clutter
|
||||||
|
(setq kill-do-not-save-duplicates t)
|
||||||
|
|
||||||
|
;; Ensures that empty lines within the commented region are also commented out.
|
||||||
|
;; This prevents unintended visual gaps and maintains a consistent appearance,
|
||||||
|
;; ensuring that comments apply uniformly to all lines, including those that are
|
||||||
|
;; otherwise empty.
|
||||||
|
(setq comment-empty-lines t)
|
||||||
|
|
||||||
|
;; Eliminate delay before highlighting search matches
|
||||||
|
(setq lazy-highlight-initial-delay 0)
|
||||||
|
|
||||||
|
;;; Mode line
|
||||||
|
|
||||||
|
;; Setting `display-time-default-load-average' to nil makes Emacs omit the load
|
||||||
|
;; average information from the mode line.
|
||||||
|
(setq display-time-default-load-average nil)
|
||||||
|
|
||||||
|
;; Display the current line and column numbers in the mode line
|
||||||
|
(setq line-number-mode t)
|
||||||
|
(setq column-number-mode t)
|
||||||
|
|
||||||
|
;;; Filetype
|
||||||
|
|
||||||
|
;; Do not notify the user each time Python tries to guess the indentation offset
|
||||||
|
(setq python-indent-guess-indent-offset-verbose nil)
|
||||||
|
|
||||||
|
(setq sh-indent-after-continuation 'always)
|
||||||
|
|
||||||
|
(setq dired-clean-confirm-killing-deleted-buffers nil
|
||||||
|
dired-recursive-deletes 'top
|
||||||
|
dired-recursive-copies 'always
|
||||||
|
dired-create-destination-dirs 'ask)
|
||||||
|
|
||||||
|
;;; Font / Text scale
|
||||||
|
|
||||||
|
;; Avoid automatic frame resizing when adjusting settings.
|
||||||
|
(setq global-text-scale-adjust-resizes-frames nil)
|
||||||
|
|
||||||
|
;;; Ediff
|
||||||
|
|
||||||
|
;; Configure Ediff to use a single frame and split windows horizontally
|
||||||
|
(setq ediff-window-setup-function #'ediff-setup-windows-plain
|
||||||
|
ediff-split-window-function #'split-window-horizontally)
|
||||||
|
|
||||||
|
;;; Load post-init.el
|
||||||
|
(minimal-emacs-load-user-init "post-init.el")
|
||||||
|
|
||||||
|
(provide 'init)
|
||||||
|
;;; init.el ends here
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
,#+TITLE: ${title}
|
||||||
|
,#+AUTHOR: Steve Beaulac
|
||||||
|
,#+OPTIONS: title:nil toc:nil
|
||||||
|
,#+EXPORT_FILE_NAME: /tmp/
|
||||||
|
,#+LaTex_CLASS: short
|
||||||
|
,#+LATEX_HEADER: \runningtitle{Shortened Title}
|
||||||
|
,#+LATEX_HEADER: wordcount{36}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
;;;; post-early-init.el --- Early Init -*- no-byte-compile: t; lexical-binding: t; -*-
|
||||||
|
;; Compile warnings
|
||||||
|
|
||||||
|
(setq warning-minimum-level :emergency)
|
||||||
|
(setq warning-minimum-log-level :emergency)
|
||||||
|
(setq gc-cons-percentage 0.6)
|
||||||
|
|
||||||
|
;; Revert Dired and other buffers
|
||||||
|
(customize-set-variable 'global-auto-revert-non-file-buffers t)
|
||||||
|
|
||||||
|
;; Revert buffers when the underlying file has changed
|
||||||
|
(add-hook 'after-init-hooks #'global-auto-revert-mode)
|
||||||
|
(setq auto-revert-interval 1)
|
||||||
|
|
||||||
|
(setq-default default-frame-alist '((undecorated . t)))
|
||||||
|
|
||||||
|
(setq process-adaptive-read-buffering nil)
|
||||||
|
|
||||||
|
(add-hook 'focus-out-hook #'garbage-collect)
|
||||||
|
;(add-hook 'after-save-hook #'garbage-collect)
|
||||||
|
;(run-with-idle-timer 5 t (lambda () (garbage-collect)))
|
||||||
|
|
||||||
|
(setq-default ispell-program-name "aspell")
|
||||||
|
(setq-default ispell-local-dictionary "english")
|
||||||
|
|
||||||
|
(when (fboundp 'set-scroll-bar-mode)
|
||||||
|
(set-scroll-bar-mode nil))
|
||||||
|
|
||||||
|
(when (fboundp 'pixel-scroll-precision-mode)
|
||||||
|
(setq pixel-scroll-precision-large-scroll-height 40.0)
|
||||||
|
(pixel-scroll-precision-mode 1))
|
||||||
|
|
||||||
|
(when (fboundp 'pixel-scroll-mode)
|
||||||
|
(pixel-scroll-mode 1))
|
||||||
|
|
||||||
|
(setq tramp-default-host "localhost")
|
||||||
|
|
||||||
|
;; disable startup messages
|
||||||
|
(setq inhibit-startup-message t)
|
||||||
|
|
||||||
|
(setq large-file-warning-threshold nil)
|
||||||
|
|
||||||
|
;;; package.el
|
||||||
|
;;(setq use-package-expand-minimally t)
|
||||||
|
;;(setq package-install-upgrade-built-in t)
|
||||||
|
;;(setq use-package-enable-imenu-support t)
|
||||||
|
|
||||||
|
(when init-file-debug
|
||||||
|
(setq use-package-verbose t
|
||||||
|
use-package-debug t
|
||||||
|
use-package-expand-minimally nil
|
||||||
|
use-package-compute-statistics t
|
||||||
|
debug-on-error t))
|
||||||
|
|
||||||
|
(provide 'post-early-init)
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,34 @@
|
|||||||
|
;;;; pre-init.el --- Init -*- no-byte-compile: t; lexical-binding: t; -*-
|
||||||
|
|
||||||
|
;; handle emacs server
|
||||||
|
(defun server-already-running-p ()
|
||||||
|
"Is Emacs already running?"
|
||||||
|
(or (file-exists-p (format "/tmp/emacs%s/server" (user-uid)))
|
||||||
|
(file-exists-p (format "/run/user/%s/snap.emacs/emacs/server" (user-uid)))
|
||||||
|
(file-exists-p (format "/run/user/%s/emacs/server" (user-uid)))))
|
||||||
|
|
||||||
|
(defun server-shunt ()
|
||||||
|
"Shunts to emacsclient"
|
||||||
|
(let ((args (append '("emacsclient" "-a" "\"\"" "-c" "-n")
|
||||||
|
(cdr command-line-args))))
|
||||||
|
(shell-command (substring (format "%S" args) 1 -1))
|
||||||
|
(kill-emacs)))
|
||||||
|
|
||||||
|
;; restart with emacsclient if server is running
|
||||||
|
(unless (featurep 'server)
|
||||||
|
(if (server-already-running-p) (server-shunt) (server-start)))
|
||||||
|
|
||||||
|
(fset 'epg-wait-for-status 'ignore)
|
||||||
|
(fset 'epg-pinentry-mode 'loopback)
|
||||||
|
;;(fset 'epg-debug t)
|
||||||
|
|
||||||
|
(require 'package)
|
||||||
|
(require 'xdg)
|
||||||
|
|
||||||
|
(setq package-user-dir (expand-file-name "emacs/elpa" (xdg-cache-home)))
|
||||||
|
|
||||||
|
;; make sure the elpa/ folder exists after setting it above.
|
||||||
|
(unless (file-exists-p package-user-dir)
|
||||||
|
(mkdir package-user-dir t))
|
||||||
|
|
||||||
|
(provide 'pre-init)
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# -*- mode: snippet -*-
|
||||||
|
# name: insert-preamble
|
||||||
|
# key: ---
|
||||||
|
# --
|
||||||
|
/**
|
||||||
|
,* @brief $0
|
||||||
|
,* @ingroup
|
||||||
|
,*
|
||||||
|
,* @date `(format-time-string "%Y-%m-%d")`
|
||||||
|
,* @author `(eval user-full-name)`
|
||||||
|
,*/
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# -*- mode: snippet; require-final-newline: nil -*-
|
||||||
|
# name: foreach (... in ...) { ... }
|
||||||
|
# key: foreach
|
||||||
|
# --
|
||||||
|
foreach (var $1 in $2) {
|
||||||
|
$3
|
||||||
|
}
|
||||||
|
$0
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
# -*- mode: snippet; require-final-newline: nil -*-
|
||||||
|
# name: ifunc
|
||||||
|
# key: ifunc
|
||||||
|
# binding: direct-keybinding
|
||||||
|
# --
|
||||||
|
func ($1) $2 {
|
||||||
|
$0
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# -*- mode: snippet; require-final-newline: nil -*-
|
||||||
|
# name: json
|
||||||
|
# key: json
|
||||||
|
# binding: direct-keybinding
|
||||||
|
# --
|
||||||
|
\`json:"$1"\`
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
# -*- mode: snippet; require-final-newline: nil -*-
|
||||||
|
# name: Copyright
|
||||||
|
# key: Copyright
|
||||||
|
# binding: direct-keybinding
|
||||||
|
# --
|
||||||
|
Copyright (c) `(format-time-string "%Y")` ${1:$$(yas-choose-value '("Sagacity Solutions Inc" "National Centre for Audiology"))}. All right reserved.
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
// Copyright (c) `(format-time-string "%Y")` ${1:$$(yas-choose-value '("Sagacity Solutions Inc" "National Centre for Audiology"))}. All right reserved.
|
||||||
|
$0
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// -*- csharp -*- -- ${1:`(file-name-nondirectory (buffer-file-name))`} : ${2} --
|
||||||
|
// Copyright (c) `(format-time-string "%Y")` ${3:$$(yas-choose-value '("Sagacity Solutions Inc" "National Centre for Audiology"))}. All right reserved.
|
||||||
|
|
||||||
|
$0
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
// Copyright (c) `(format-time-string "%Y")` ${1:$$(yas-choose-value '("Sagacity Solutions Inc" "National Centre for Audiology"))}. All right reserved.
|
||||||
|
|
||||||
|
package ${2:main}
|
||||||
|
|
||||||
|
$0
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// Copyright (c) `(format-time-string "%Y")` ${1:$$(yas-choose-value '("Sagacity Solutions Inc" "National Centre for Audiology"))}. All right reserved.
|
||||||
|
'use strict' ;
|
||||||
|
|
||||||
|
$0
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
# Copyright (c) `(format-time-string "%Y")` ${1:$$(yas-choose-value '("Sagacity Solutions Inc" "National Centre for Audiology"))}. All right reserved.
|
||||||
|
$0
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/${1:sh}
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
# `(upcase (file-name-nondirectory (file-name-sans-extension (buffer-file-name))))`: $0
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
|
|
||||||
|
OPT1="default value" # Setup a default value
|
||||||
|
OPT2=0
|
||||||
|
|
||||||
|
while getopts "d:s" o
|
||||||
|
do case "$o" in
|
||||||
|
d) OPT1="$OPTARG";;
|
||||||
|
s) OPT2=1;;
|
||||||
|
[?]) print >&2 "Usage: \$0 [-s] [-d seplist] file ..."
|
||||||
|
exit 1;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $(expr $OPTIND - 1)
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------------
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
// Copyright (c) `(format-time-string "%Y")` ${1:$$(yas-choose-value '("Sagacity Solutions Inc" "National Centre for Audiology"))}. All right reserved.
|
||||||
|
|
||||||
|
$0
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
<template>
|
||||||
|
$0
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
</script>
|
||||||
@@ -0,0 +1,439 @@
|
|||||||
|
;;; ef-catppuccin-frappe-theme.el --- implementation of catppuccin-frappe theme using ef-themes -*- lexical-binding:t -*-
|
||||||
|
|
||||||
|
;; Copyright (C) 2022-2024 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
;; Author: Steve Beaulac <steve@beaulac.me>
|
||||||
|
;; Maintainer: Steve Beaulac <steve@beaulac.me>
|
||||||
|
;; URL: https://github.com/SjB/ef-catppuccin
|
||||||
|
;; Keywords: faces, theme, accessibility
|
||||||
|
|
||||||
|
;; This file is NOT part of GNU Emacs.
|
||||||
|
|
||||||
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||||
|
;; it under the terms of the GNU General Public License as published by
|
||||||
|
;; the Free Software Foundation, either version 3 of the License, or
|
||||||
|
;; (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;; GNU General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU General Public License
|
||||||
|
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; The `ef-themes' are a collection of light and dark themes for GNU
|
||||||
|
;; Emacs whose goal is to provide colorful ("pretty") yet legible
|
||||||
|
;; options for users who want something with a bit more flair than the
|
||||||
|
;; `modus-themes' (also designed by me).
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(eval-and-compile
|
||||||
|
(require 'ef-themes)
|
||||||
|
(deftheme ef-catppuccin-frappe
|
||||||
|
"ef-themes of the catppuccin-frappe palette"
|
||||||
|
:background-mode 'dark
|
||||||
|
:kind 'color-scheme
|
||||||
|
:family 'ef)
|
||||||
|
|
||||||
|
(defconst ef-catppuccin-frappe-palette
|
||||||
|
'(
|
||||||
|
;;; Basic values
|
||||||
|
|
||||||
|
;;; Basic hues for foreground values
|
||||||
|
(crust "#232634")
|
||||||
|
(mantle "#292c3c")
|
||||||
|
(base "#303446")
|
||||||
|
(surface0 "#414559")
|
||||||
|
(surface1 "#51576d")
|
||||||
|
(surface2 "#626880")
|
||||||
|
(overlay0 "#737994")
|
||||||
|
(overlay1 "#838BA7")
|
||||||
|
(overlay2 "#949CBB")
|
||||||
|
(text "#c6d0f5")
|
||||||
|
(subtext0 "#a5adce")
|
||||||
|
(subtext1 "#b5bfe2")
|
||||||
|
(rosewater "#f2d5cf")
|
||||||
|
(rosewater-warmer "#fed5c2")
|
||||||
|
(rosewater-cooler "#e5d5db")
|
||||||
|
(rosewater-faint "#fbf3f2")
|
||||||
|
(rosewater-intense "#f9cfc7")
|
||||||
|
(bg-rosewater-intense "#82655d")
|
||||||
|
(bg-rosewater-subtle "#b0452f")
|
||||||
|
(flamingo "#eebebe")
|
||||||
|
(flamingo-warmer "#fabeb1")
|
||||||
|
(flamingo-cooler "#e1beca")
|
||||||
|
(flamingo-faint "#f6dfdf")
|
||||||
|
(flamingo-intense "#f8b3b3")
|
||||||
|
(bg-flamingo-intense "#7e5757")
|
||||||
|
(bg-flamingo-subtle "#a92c2c")
|
||||||
|
(pink "#f3b8e4")
|
||||||
|
(pink-warmer "#ffb8d7")
|
||||||
|
(pink-cooler "#e6b8f0")
|
||||||
|
(pink-faint "#f9dcf1")
|
||||||
|
(pink-intense "#fdade9")
|
||||||
|
(bg-pink-intense "#8b4979")
|
||||||
|
(bg-pink-subtle "#b61e90")
|
||||||
|
(mauve "#ca9ee6")
|
||||||
|
(mauve-warmer "#d69ed9")
|
||||||
|
(mauve-cooler "#bd9ef2")
|
||||||
|
(mauve-faint "#dabced")
|
||||||
|
(mauve-intense "#cd8ef5")
|
||||||
|
(bg-mauve-intense "#644e72")
|
||||||
|
(bg-mauve-subtle "#6d279a")
|
||||||
|
(red "#e78284")
|
||||||
|
(red-warmer "#f38277")
|
||||||
|
(red-cooler "#da8290")
|
||||||
|
(red-faint "#eca0a1")
|
||||||
|
(red-intense "#f96f72")
|
||||||
|
(bg-red-intense "#734041")
|
||||||
|
(bg-red-subtle "#971d1f")
|
||||||
|
(maroon "#ea999c")
|
||||||
|
(maroon-warmer "#f6998f")
|
||||||
|
(maroon-cooler "#dd99a8")
|
||||||
|
(maroon-faint "#f0b9bb")
|
||||||
|
(maroon-intense "#f9898d")
|
||||||
|
(bg-maroon-intense "#794749")
|
||||||
|
(bg-maroon-subtle "#a02125")
|
||||||
|
(peach "#ef9f76")
|
||||||
|
(peach-warmer "#fb9f69")
|
||||||
|
(peach-cooler "#e29f82")
|
||||||
|
(peach-faint "#f2b595")
|
||||||
|
(peach-intense "#ff9965")
|
||||||
|
(bg-peach-intense "#7b4d36")
|
||||||
|
(bg-peach-subtle "#9f4212")
|
||||||
|
(yellow "#e5c890")
|
||||||
|
(yellow-warmer "#f1c883")
|
||||||
|
(yellow-cooler "#d8c89c")
|
||||||
|
(yellow-faint "#ecd6ae")
|
||||||
|
(yellow-intense "#f6cd7e")
|
||||||
|
(bg-yellow-intense "#716348")
|
||||||
|
(bg-yellow-subtle "#976f23")
|
||||||
|
(green "#a6d189")
|
||||||
|
(green-warmer "#b2d17c")
|
||||||
|
(green-cooler "#99d195")
|
||||||
|
(green-faint "#b8daa1")
|
||||||
|
(green-intense "#a2e574")
|
||||||
|
(bg-green-intense "#555952")
|
||||||
|
(bg-green-subtle "#4f7c30")
|
||||||
|
(teal "#81c8be")
|
||||||
|
(teal-warmer "#8dc8b1")
|
||||||
|
(teal-cooler "#74c8ca")
|
||||||
|
(teal-faint "#97d1c9")
|
||||||
|
(teal-intense "#6adece")
|
||||||
|
(bg-teal-intense "#525252")
|
||||||
|
(bg-teal-subtle "#317269")
|
||||||
|
(blue "#8caaee")
|
||||||
|
(blue-warmer "#98aae1")
|
||||||
|
(blue-cooler "#7faafa")
|
||||||
|
(blue-faint "#acc2f2")
|
||||||
|
(blue-intense "#7ba3fe")
|
||||||
|
(bg-blue-intense "#3e527e")
|
||||||
|
(bg-blue-subtle "#1843a4")
|
||||||
|
(sky "#99d1db")
|
||||||
|
(sky-warmer "#a5d1ce")
|
||||||
|
(sky-cooler "#8cd1e7")
|
||||||
|
(sky-faint "#b4dde4")
|
||||||
|
(sky-intense "#87ddec")
|
||||||
|
(bg-sky-intense "#556164")
|
||||||
|
(bg-sky-subtle "#307c89")
|
||||||
|
(sapphire "#85c1dc")
|
||||||
|
(sapphire-warmer "#91c1cf")
|
||||||
|
(sapphire-cooler "#78c1e8")
|
||||||
|
(sapphire-faint "#a0cee3")
|
||||||
|
(sapphire-intense "#71c8ef")
|
||||||
|
(bg-sapphire-intense "#4a5d65")
|
||||||
|
(bg-sapphire-subtle "#276a89")
|
||||||
|
(lavender "#babbf1")
|
||||||
|
(lavender-warmer "#c6bbe4")
|
||||||
|
(lavender-cooler "#adbbfd")
|
||||||
|
(lavender-faint "#ddddf8")
|
||||||
|
(lavender-intense "#afb1fb")
|
||||||
|
(bg-lavender-intense "#4e4e86")
|
||||||
|
(bg-lavender-subtle "#2426b1")
|
||||||
|
|
||||||
|
;;; remaping colors to properties
|
||||||
|
|
||||||
|
(bg-main base)
|
||||||
|
(bg-dim mantle)
|
||||||
|
(bg-alt crust)
|
||||||
|
|
||||||
|
(fg-main text)
|
||||||
|
(fg-dim subtext0)
|
||||||
|
(fg-alt subtext1)
|
||||||
|
|
||||||
|
(bg-inactive surface0)
|
||||||
|
(bg-active surface1)
|
||||||
|
|
||||||
|
;;; mauve is replacing magenta
|
||||||
|
(magenta mauve)
|
||||||
|
(magenta-warmer mauve-warmer)
|
||||||
|
(magenta-cooler mauve-cooler)
|
||||||
|
(magenta-faint mauve-faint)
|
||||||
|
(bg-magenta-intense bg-mauve-intense)
|
||||||
|
(bg-magenta-subtle bg-mauve-subtle)
|
||||||
|
|
||||||
|
|
||||||
|
;;; sapphire is replacing cyan
|
||||||
|
(cyan sapphire)
|
||||||
|
(cyan-warmer sapphire-warmer)
|
||||||
|
(cyan-cooler sapphire-cooler)
|
||||||
|
(cyan-faint sapphire-faint)
|
||||||
|
(bg-cyan-intense bg-sapphire-intense)
|
||||||
|
(bg-cyan-subtle bg-sapphire-subtle)
|
||||||
|
|
||||||
|
;;; Diffs
|
||||||
|
|
||||||
|
(bg-added bg-active)
|
||||||
|
(bg-added-faint bg-inactive)
|
||||||
|
(bg-added-refine bg-green-subtle)
|
||||||
|
(fg-added green)
|
||||||
|
|
||||||
|
(bg-changed bg-active)
|
||||||
|
(bg-changed-faint bg-inactive)
|
||||||
|
(bg-changed-refine bg-blue-subtle)
|
||||||
|
(fg-changed blue)
|
||||||
|
|
||||||
|
(bg-removed bg-active)
|
||||||
|
(bg-removed-faint bg-inactive)
|
||||||
|
(bg-removed-refine bg-red-subtle)
|
||||||
|
(fg-removed red)
|
||||||
|
|
||||||
|
;;; Graphs
|
||||||
|
|
||||||
|
(bg-graph-red-0 bg-maroon-subtle)
|
||||||
|
(bg-graph-red-1 bg-maroon-intense)
|
||||||
|
(bg-graph-green-0 bg-teal-subtle)
|
||||||
|
(bg-graph-green-1 bg-teal-intense)
|
||||||
|
(bg-graph-yellow-0 bg-rosewater-subtle)
|
||||||
|
(bg-graph-yellow-1 bg-rosewater-intense)
|
||||||
|
(bg-graph-blue-0 bg-sky-subtle)
|
||||||
|
(bg-graph-blue-1 bg-sky-intense)
|
||||||
|
(bg-graph-magenta-0 bg-pink-subtle)
|
||||||
|
(bg-graph-magenta-1 bg-pink-intense)
|
||||||
|
(bg-graph-cyan-0 bg-lavender-subtle)
|
||||||
|
(bg-graph-cyan-1 bg-lavender-intense)
|
||||||
|
|
||||||
|
;;; Special hues
|
||||||
|
(bg-mode-line mantle)
|
||||||
|
(fg-mode-line text)
|
||||||
|
|
||||||
|
(bg-completion overlay0)
|
||||||
|
(bg-hover overlay1)
|
||||||
|
(bg-hover-secondary overlay2)
|
||||||
|
|
||||||
|
(bg-hl-line crust)
|
||||||
|
(bg-region overlay2)
|
||||||
|
(bg-paren surface2)
|
||||||
|
|
||||||
|
(bg-err bg-red-intense) ; check with err
|
||||||
|
(bg-warning bg-yellow-intense) ; check with warning
|
||||||
|
(bg-info bg-green-intense) ; check with info
|
||||||
|
|
||||||
|
(border lavender)
|
||||||
|
(cursor rosewater)
|
||||||
|
(fg-intense subtext1)
|
||||||
|
|
||||||
|
(modeline-err red)
|
||||||
|
(modeline-warning yellow)
|
||||||
|
(modeline-info green)
|
||||||
|
|
||||||
|
(underline-err red-intense)
|
||||||
|
(underline-warning yellow-intense)
|
||||||
|
(underline-info green-intense)
|
||||||
|
|
||||||
|
(bg-char-0 surface0)
|
||||||
|
(bg-char-1 surface1)
|
||||||
|
(bg-char-2 surface2)
|
||||||
|
|
||||||
|
;;; Conditional hues
|
||||||
|
|
||||||
|
(bg-region-intense bg-lavender-intense)
|
||||||
|
(fg-region crust)
|
||||||
|
|
||||||
|
;;; Mappings
|
||||||
|
|
||||||
|
;;;; General mappings
|
||||||
|
|
||||||
|
(bg-fringe bg-main)
|
||||||
|
(fg-fringe fg-main)
|
||||||
|
|
||||||
|
(err red)
|
||||||
|
(warning yellow)
|
||||||
|
(info green)
|
||||||
|
|
||||||
|
(link blue)
|
||||||
|
(link-alt lavender)
|
||||||
|
(name green)
|
||||||
|
(keybind teal)
|
||||||
|
(identifier sapphire)
|
||||||
|
(prompt flamingo)
|
||||||
|
|
||||||
|
;;;; Code mappings
|
||||||
|
|
||||||
|
(builtin red)
|
||||||
|
(comment overlay0)
|
||||||
|
(constant peach)
|
||||||
|
(fnname flamingo)
|
||||||
|
(keyword mauve)
|
||||||
|
(preprocessor sky)
|
||||||
|
(docstring sapphire)
|
||||||
|
(string green)
|
||||||
|
(type yellow)
|
||||||
|
(variable green)
|
||||||
|
(rx-escape rosewater) ; compare with `string'
|
||||||
|
(rx-construct maroon)
|
||||||
|
|
||||||
|
;;;; Accent mappings
|
||||||
|
|
||||||
|
(accent-0 blue)
|
||||||
|
(accent-1 mauve)
|
||||||
|
(accent-2 green)
|
||||||
|
(accent-3 red)
|
||||||
|
|
||||||
|
;;;; Date mappings
|
||||||
|
|
||||||
|
(date-common green-cooler)
|
||||||
|
(date-deadline red-warmer)
|
||||||
|
(date-event fg-alt)
|
||||||
|
(date-holiday mauve-faint)
|
||||||
|
(date-now fg-main)
|
||||||
|
(date-range fg-alt)
|
||||||
|
(date-scheduled yellow)
|
||||||
|
(date-weekday sapphire)
|
||||||
|
(date-weekend red-faint)
|
||||||
|
|
||||||
|
;;;; Prose mappings
|
||||||
|
|
||||||
|
(prose-code mauve-warmer)
|
||||||
|
(prose-done green)
|
||||||
|
(prose-macro green-cooler)
|
||||||
|
(prose-metadata fg-dim)
|
||||||
|
(prose-metadata-value fg-alt)
|
||||||
|
(prose-table fg-alt)
|
||||||
|
(prose-table-formula err)
|
||||||
|
(prose-tag yellow-faint)
|
||||||
|
(prose-todo red-warmer)
|
||||||
|
(prose-verbatim blue)
|
||||||
|
|
||||||
|
;;;; Mail mappings
|
||||||
|
|
||||||
|
(mail-cite-0 blue)
|
||||||
|
(mail-cite-1 mauve-warmer)
|
||||||
|
(mail-cite-2 green-cooler)
|
||||||
|
(mail-cite-3 yellow-cooler)
|
||||||
|
(mail-part mauve-faint)
|
||||||
|
(mail-recipient blue-warmer)
|
||||||
|
(mail-subject blue-cooler)
|
||||||
|
(mail-other sapphire)
|
||||||
|
|
||||||
|
;;;; Search mappings
|
||||||
|
(bg-search-match bg-warning)
|
||||||
|
(bg-search-current bg-yellow-intense)
|
||||||
|
(bg-search-lazy bg-blue-intense)
|
||||||
|
(bg-search-replace bg-red-intense)
|
||||||
|
|
||||||
|
(bg-search-rx-group-0 bg-magenta-intense)
|
||||||
|
(bg-search-rx-group-1 bg-green-intense)
|
||||||
|
(bg-search-rx-group-2 bg-red-subtle)
|
||||||
|
(bg-search-rx-group-3 bg-cyan-subtle)
|
||||||
|
|
||||||
|
;;;; Space mappings
|
||||||
|
|
||||||
|
(bg-space unspecified)
|
||||||
|
(fg-space border)
|
||||||
|
(bg-space-err bg-maroon-intense)
|
||||||
|
|
||||||
|
;;;; Tab mappings
|
||||||
|
|
||||||
|
(bg-tab-bar bg-alt)
|
||||||
|
(bg-tab-current bg-main)
|
||||||
|
(bg-tab-other bg-active)
|
||||||
|
|
||||||
|
;;;; Terminal mappings
|
||||||
|
|
||||||
|
(bg-term-black "black")
|
||||||
|
(fg-term-black "black")
|
||||||
|
(bg-term-black-bright "gray35")
|
||||||
|
(fg-term-black-bright "gray35")
|
||||||
|
|
||||||
|
(bg-term-red red-cooler)
|
||||||
|
(fg-term-red red-cooler)
|
||||||
|
(bg-term-red-bright red-warmer)
|
||||||
|
(fg-term-red-bright red-warmer)
|
||||||
|
|
||||||
|
(bg-term-green green)
|
||||||
|
(fg-term-green green)
|
||||||
|
(bg-term-green-bright green-warmer)
|
||||||
|
(fg-term-green-bright green-warmer)
|
||||||
|
|
||||||
|
(bg-term-yellow yellow)
|
||||||
|
(fg-term-yellow yellow)
|
||||||
|
(bg-term-yellow-bright yellow-warmer)
|
||||||
|
(fg-term-yellow-bright yellow-warmer)
|
||||||
|
|
||||||
|
(bg-term-blue blue-warmer)
|
||||||
|
(fg-term-blue blue-warmer)
|
||||||
|
(bg-term-blue-bright blue-cooler)
|
||||||
|
(fg-term-blue-bright blue-cooler)
|
||||||
|
|
||||||
|
(bg-term-magenta magenta)
|
||||||
|
(fg-term-magenta magenta)
|
||||||
|
(bg-term-magenta-bright magenta-cooler)
|
||||||
|
(fg-term-magenta-bright magenta-cooler)
|
||||||
|
|
||||||
|
(bg-term-cyan cyan)
|
||||||
|
(fg-term-cyan cyan)
|
||||||
|
(bg-term-cyan-bright cyan-cooler)
|
||||||
|
(fg-term-cyan-bright cyan-cooler)
|
||||||
|
|
||||||
|
(bg-term-white "gray65")
|
||||||
|
(fg-term-white "gray65")
|
||||||
|
(bg-term-white-bright "white")
|
||||||
|
(fg-term-white-bright "white")
|
||||||
|
|
||||||
|
|
||||||
|
;;;; Rainbow mappings
|
||||||
|
|
||||||
|
(rainbow-0 marroon)
|
||||||
|
(rainbow-1 red)
|
||||||
|
(rainbow-2 peach)
|
||||||
|
(rainbow-3 yellow)
|
||||||
|
(rainbow-4 green)
|
||||||
|
(rainbow-5 sapphire)
|
||||||
|
(rainbow-6 lavender)
|
||||||
|
(rainbow-7 sky)
|
||||||
|
(rainbow-8 teal))
|
||||||
|
"The `ef-catppuccin-frappe' palette.
|
||||||
|
Color values have the form (COLOR-NAME HEX-VALUE) with the former
|
||||||
|
as a symbol and the latter as a string.
|
||||||
|
|
||||||
|
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||||
|
with both as symbols. The latter is a color that already exists
|
||||||
|
in the palette and is associated with a HEX-VALUE.")
|
||||||
|
|
||||||
|
(defcustom ef-catppuccin-frappe-palette-overrides nil
|
||||||
|
"Overrides for `ef-catppuccin-frappe-palette'.
|
||||||
|
|
||||||
|
Mirror the elements of the aforementioned palette, overriding
|
||||||
|
their value.
|
||||||
|
|
||||||
|
For overrides that are shared across all of the Ef themes,
|
||||||
|
refer to `ef-themes-common-palette-overrides'.
|
||||||
|
|
||||||
|
To preview the palette entries, use `ef-themes-preview-colors' or
|
||||||
|
`ef-themes-preview-colors-current' (read the documentation for
|
||||||
|
further details)."
|
||||||
|
:group 'ef-themes
|
||||||
|
:package-version '(ef-themes . "1.0.0")
|
||||||
|
:type '(repeat (list symbol (choice symbol string)))
|
||||||
|
:link '(info-link "(ef-themes) Palette overrides"))
|
||||||
|
|
||||||
|
(ef-themes-theme ef-catppuccin-frappe ef-catppuccin-frappe-palette ef-catppuccin-frappe-palette-overrides)
|
||||||
|
|
||||||
|
(provide-theme 'ef-catppuccin-frappe))
|
||||||
@@ -0,0 +1,439 @@
|
|||||||
|
;;; ef-catppuccin-latte-theme.el --- implementation of catppuccin-latte theme using ef-themes -*- lexical-binding:t -*-
|
||||||
|
|
||||||
|
;; Copyright (C) 2022-2024 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
;; Author: Steve Beaulac <steve@beaulac.me>
|
||||||
|
;; Maintainer: Steve Beaulac <steve@beaulac.me>
|
||||||
|
;; URL: https://github.com/SjB/ef-catppuccin
|
||||||
|
;; Keywords: faces, theme, accessibility
|
||||||
|
|
||||||
|
;; This file is NOT part of GNU Emacs.
|
||||||
|
|
||||||
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||||
|
;; it under the terms of the GNU General Public License as published by
|
||||||
|
;; the Free Software Foundation, either version 3 of the License, or
|
||||||
|
;; (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;; GNU General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU General Public License
|
||||||
|
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; The `ef-themes' are a collection of light and dark themes for GNU
|
||||||
|
;; Emacs whose goal is to provide colorful ("pretty") yet legible
|
||||||
|
;; options for users who want something with a bit more flair than the
|
||||||
|
;; `modus-themes' (also designed by me).
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(eval-and-compile
|
||||||
|
(require 'ef-themes)
|
||||||
|
(deftheme ef-catppuccin-latte
|
||||||
|
"ef-themes of the catppuccin-latte palette"
|
||||||
|
:background-mode 'light
|
||||||
|
:kind 'color-scheme
|
||||||
|
:family 'ef)
|
||||||
|
|
||||||
|
(defconst ef-catppuccin-latte-palette
|
||||||
|
'(
|
||||||
|
;;; Basic values
|
||||||
|
|
||||||
|
;;; Basic hues for foreground values
|
||||||
|
(crust "#DCE0E8")
|
||||||
|
(mantle "#E6E9EF")
|
||||||
|
(base "#EFF1F5")
|
||||||
|
(surface0 "#CCD0DA")
|
||||||
|
(surface1 "#BCC0CC")
|
||||||
|
(surface2 "#ACB0BE")
|
||||||
|
(overlay0 "#9CA0B0")
|
||||||
|
(overlay1 "#8C8FA1")
|
||||||
|
(overlay2 "#7C7F93")
|
||||||
|
(text "#4C4F69")
|
||||||
|
(subtext0 "#6C6F85")
|
||||||
|
(subtext1 "#5C5F77")
|
||||||
|
(rosewater "#DC8A78")
|
||||||
|
(rosewater-warmer "#e88a6b")
|
||||||
|
(rosewater-cooler "#cf8a84")
|
||||||
|
(rosewater-faint "#e3a193")
|
||||||
|
(rosewater-intense "#f17c62")
|
||||||
|
(bg-rosewater-intense "#ffffff")
|
||||||
|
(bg-rosewater-subtle "#ffffff")
|
||||||
|
(flamingo "#DD7878")
|
||||||
|
(flamingo-warmer "#e9786b")
|
||||||
|
(flamingo-cooler "#d07884")
|
||||||
|
(flamingo-faint "#e39393")
|
||||||
|
(flamingo-intense "#f26262")
|
||||||
|
(bg-flamingo-intense "#ffffff")
|
||||||
|
(bg-flamingo-subtle "#ffffff")
|
||||||
|
(pink "#EA76CB")
|
||||||
|
(pink-warmer "#f676be")
|
||||||
|
(pink-cooler "#dd76d7")
|
||||||
|
(pink-faint "#ee94d6")
|
||||||
|
(pink-intense "#fd62d4")
|
||||||
|
(bg-pink-intense "#fefffe")
|
||||||
|
(bg-pink-subtle "#ffffff")
|
||||||
|
(mauve "#8839EF")
|
||||||
|
(mauve-warmer "#9439e2")
|
||||||
|
(mauve-cooler "#7b39fb")
|
||||||
|
(mauve-faint "#9854f1")
|
||||||
|
(mauve-intense "#8529ff")
|
||||||
|
(bg-mauve-intense "#ffffff")
|
||||||
|
(bg-mauve-subtle "#ffffff")
|
||||||
|
(red "#D20F39")
|
||||||
|
(red-warmer "#de0f2c")
|
||||||
|
(red-cooler "#c50f45")
|
||||||
|
(red-faint "#e7103e")
|
||||||
|
(red-intense "#e10030")
|
||||||
|
(bg-red-intense "#dfa8b4")
|
||||||
|
(bg-red-subtle "#f792a8")
|
||||||
|
(maroon "#E64553")
|
||||||
|
(maroon-warmer "#f24546")
|
||||||
|
(maroon-cooler "#d9455f")
|
||||||
|
(maroon-faint "#e95f6b")
|
||||||
|
(maroon-intense "#ff2c3e")
|
||||||
|
(bg-maroon-intense "#ffffff")
|
||||||
|
(bg-maroon-subtle "#ffffff")
|
||||||
|
(peach "#FE640B")
|
||||||
|
(peach-warmer "#ff6400")
|
||||||
|
(peach-cooler "#f16417")
|
||||||
|
(peach-faint "#fe7425")
|
||||||
|
(peach-intense "#fe630a")
|
||||||
|
(bg-peach-intense "#f5e3d8")
|
||||||
|
(bg-peach-subtle "#fee1d0")
|
||||||
|
(yellow "#DF8E1D")
|
||||||
|
(yellow-warmer "#eb8e10")
|
||||||
|
(yellow-cooler "#d28e29")
|
||||||
|
(yellow-faint "#e49930")
|
||||||
|
(yellow-intense "#fc9200")
|
||||||
|
(bg-yellow-intense "#e8ddce")
|
||||||
|
(bg-yellow-subtle "#f7e0c1")
|
||||||
|
(green "#40A02B")
|
||||||
|
(green-warmer "#4ca01e")
|
||||||
|
(green-cooler "#33a037")
|
||||||
|
(green-faint "#46b02f")
|
||||||
|
(green-intense "#2fb911")
|
||||||
|
(bg-green-intense "#a8bea2")
|
||||||
|
(bg-green-subtle "#95de85")
|
||||||
|
(teal "#179299")
|
||||||
|
(teal-warmer "#23928c")
|
||||||
|
(teal-cooler "#0a92a5")
|
||||||
|
(teal-faint "#19a0a8")
|
||||||
|
(teal-intense "#00a5af")
|
||||||
|
(bg-teal-intense "#76b7bb")
|
||||||
|
(bg-teal-subtle "#4fdce4")
|
||||||
|
(blue "#1E66F5")
|
||||||
|
(blue-warmer "#2a66e8")
|
||||||
|
(blue-cooler "#1166ff")
|
||||||
|
(blue-faint "#3877f6")
|
||||||
|
(blue-intense "#1462fe")
|
||||||
|
(bg-blue-intense "#e7edf7")
|
||||||
|
(bg-blue-subtle "#e3ecfd")
|
||||||
|
(sky "#04A5E5")
|
||||||
|
(sky-warmer "#10a5d8")
|
||||||
|
(sky-cooler "#00a5f1")
|
||||||
|
(sky-faint "#05b4fa")
|
||||||
|
(sky-intense "#00a6e9")
|
||||||
|
(bg-sky-intense "#add7e8")
|
||||||
|
(bg-sky-subtle "#9ae1fd")
|
||||||
|
(sapphire "#209FB5")
|
||||||
|
(sapphire-warmer "#2c9fa8")
|
||||||
|
(sapphire-cooler "#139fc1")
|
||||||
|
(sapphire-faint "#23aec7")
|
||||||
|
(sapphire-intense "#05b1cf")
|
||||||
|
(bg-sapphire-intense "#a4c7ce")
|
||||||
|
(bg-sapphire-subtle "#8adcea")
|
||||||
|
(lavender "#7287FD")
|
||||||
|
(lavender-warmer "#7e87f0")
|
||||||
|
(lavender-cooler "#6587ff")
|
||||||
|
(lavender-faint "#96a5fd")
|
||||||
|
(lavender-intense "#7085ff")
|
||||||
|
(bg-lavender-intense "#ffffff")
|
||||||
|
(bg-lavender-subtle "#ffffff")
|
||||||
|
|
||||||
|
;;; remaping colors to properties
|
||||||
|
|
||||||
|
(bg-main base)
|
||||||
|
(bg-dim mantle)
|
||||||
|
(bg-alt crust)
|
||||||
|
|
||||||
|
(fg-main text)
|
||||||
|
(fg-dim subtext0)
|
||||||
|
(fg-alt subtext1)
|
||||||
|
|
||||||
|
(bg-inactive surface0)
|
||||||
|
(bg-active surface1)
|
||||||
|
|
||||||
|
;;; mauve is replacing magenta
|
||||||
|
(magenta mauve)
|
||||||
|
(magenta-warmer mauve-warmer)
|
||||||
|
(magenta-cooler mauve-cooler)
|
||||||
|
(magenta-faint mauve-faint)
|
||||||
|
(bg-magenta-intense bg-mauve-intense)
|
||||||
|
(bg-magenta-subtle bg-mauve-subtle)
|
||||||
|
|
||||||
|
|
||||||
|
;;; sapphire is replacing cyan
|
||||||
|
(cyan sapphire)
|
||||||
|
(cyan-warmer sapphire-warmer)
|
||||||
|
(cyan-cooler sapphire-cooler)
|
||||||
|
(cyan-faint sapphire-faint)
|
||||||
|
(bg-cyan-intense bg-sapphire-intense)
|
||||||
|
(bg-cyan-subtle bg-sapphire-subtle)
|
||||||
|
|
||||||
|
;;; Diffs
|
||||||
|
|
||||||
|
(bg-added bg-active)
|
||||||
|
(bg-added-faint bg-inactive)
|
||||||
|
(bg-added-refine bg-green-subtle)
|
||||||
|
(fg-added green)
|
||||||
|
|
||||||
|
(bg-changed bg-active)
|
||||||
|
(bg-changed-faint bg-inactive)
|
||||||
|
(bg-changed-refine bg-blue-subtle)
|
||||||
|
(fg-changed blue)
|
||||||
|
|
||||||
|
(bg-removed bg-active)
|
||||||
|
(bg-removed-faint bg-inactive)
|
||||||
|
(bg-removed-refine bg-red-subtle)
|
||||||
|
(fg-removed red)
|
||||||
|
|
||||||
|
;;; Graphs
|
||||||
|
|
||||||
|
(bg-graph-red-0 bg-maroon-subtle)
|
||||||
|
(bg-graph-red-1 bg-maroon-intense)
|
||||||
|
(bg-graph-green-0 bg-teal-subtle)
|
||||||
|
(bg-graph-green-1 bg-teal-intense)
|
||||||
|
(bg-graph-yellow-0 bg-rosewater-subtle)
|
||||||
|
(bg-graph-yellow-1 bg-rosewater-intense)
|
||||||
|
(bg-graph-blue-0 bg-sky-subtle)
|
||||||
|
(bg-graph-blue-1 bg-sky-intense)
|
||||||
|
(bg-graph-magenta-0 bg-pink-subtle)
|
||||||
|
(bg-graph-magenta-1 bg-pink-intense)
|
||||||
|
(bg-graph-cyan-0 bg-lavender-subtle)
|
||||||
|
(bg-graph-cyan-1 bg-lavender-intense)
|
||||||
|
|
||||||
|
;;; Special hues
|
||||||
|
(bg-mode-line mantle)
|
||||||
|
(fg-mode-line text)
|
||||||
|
|
||||||
|
(bg-completion overlay0)
|
||||||
|
(bg-hover overlay1)
|
||||||
|
(bg-hover-secondary overlay2)
|
||||||
|
|
||||||
|
(bg-hl-line crust)
|
||||||
|
(bg-region overlay2)
|
||||||
|
(bg-paren surface2)
|
||||||
|
|
||||||
|
(bg-err bg-red-intense) ; check with err
|
||||||
|
(bg-warning bg-yellow-intense) ; check with warning
|
||||||
|
(bg-info bg-green-intense) ; check with info
|
||||||
|
|
||||||
|
(border lavender)
|
||||||
|
(cursor rosewater)
|
||||||
|
(fg-intense subtext1)
|
||||||
|
|
||||||
|
(modeline-err red)
|
||||||
|
(modeline-warning yellow)
|
||||||
|
(modeline-info green)
|
||||||
|
|
||||||
|
(underline-err red-intense)
|
||||||
|
(underline-warning yellow-intense)
|
||||||
|
(underline-info green-intense)
|
||||||
|
|
||||||
|
(bg-char-0 surface0)
|
||||||
|
(bg-char-1 surface1)
|
||||||
|
(bg-char-2 surface2)
|
||||||
|
|
||||||
|
;;; Conditional hues
|
||||||
|
|
||||||
|
(bg-region-intense bg-lavender-intense)
|
||||||
|
(fg-region crust)
|
||||||
|
|
||||||
|
;;; Mappings
|
||||||
|
|
||||||
|
;;;; General mappings
|
||||||
|
|
||||||
|
(bg-fringe bg-main)
|
||||||
|
(fg-fringe fg-main)
|
||||||
|
|
||||||
|
(err red)
|
||||||
|
(warning yellow)
|
||||||
|
(info green)
|
||||||
|
|
||||||
|
(link blue)
|
||||||
|
(link-alt lavender)
|
||||||
|
(name green)
|
||||||
|
(keybind teal)
|
||||||
|
(identifier sapphire)
|
||||||
|
(prompt flamingo)
|
||||||
|
|
||||||
|
;;;; Code mappings
|
||||||
|
|
||||||
|
(builtin red)
|
||||||
|
(comment overlay0)
|
||||||
|
(constant peach)
|
||||||
|
(fnname flamingo)
|
||||||
|
(keyword mauve)
|
||||||
|
(preprocessor sky)
|
||||||
|
(docstring sapphire)
|
||||||
|
(string green)
|
||||||
|
(type yellow)
|
||||||
|
(variable green)
|
||||||
|
(rx-escape rosewater) ; compare with `string'
|
||||||
|
(rx-construct maroon)
|
||||||
|
|
||||||
|
;;;; Accent mappings
|
||||||
|
|
||||||
|
(accent-0 blue)
|
||||||
|
(accent-1 mauve)
|
||||||
|
(accent-2 green)
|
||||||
|
(accent-3 red)
|
||||||
|
|
||||||
|
;;;; Date mappings
|
||||||
|
|
||||||
|
(date-common green-cooler)
|
||||||
|
(date-deadline red-warmer)
|
||||||
|
(date-event fg-alt)
|
||||||
|
(date-holiday mauve-faint)
|
||||||
|
(date-now fg-main)
|
||||||
|
(date-range fg-alt)
|
||||||
|
(date-scheduled yellow)
|
||||||
|
(date-weekday sapphire)
|
||||||
|
(date-weekend red-faint)
|
||||||
|
|
||||||
|
;;;; Prose mappings
|
||||||
|
|
||||||
|
(prose-code mauve-warmer)
|
||||||
|
(prose-done green)
|
||||||
|
(prose-macro green-cooler)
|
||||||
|
(prose-metadata fg-dim)
|
||||||
|
(prose-metadata-value fg-alt)
|
||||||
|
(prose-table fg-alt)
|
||||||
|
(prose-table-formula err)
|
||||||
|
(prose-tag yellow-faint)
|
||||||
|
(prose-todo red-warmer)
|
||||||
|
(prose-verbatim blue)
|
||||||
|
|
||||||
|
;;;; Mail mappings
|
||||||
|
|
||||||
|
(mail-cite-0 blue)
|
||||||
|
(mail-cite-1 mauve-warmer)
|
||||||
|
(mail-cite-2 green-cooler)
|
||||||
|
(mail-cite-3 yellow-cooler)
|
||||||
|
(mail-part mauve-faint)
|
||||||
|
(mail-recipient blue-warmer)
|
||||||
|
(mail-subject blue-cooler)
|
||||||
|
(mail-other sapphire)
|
||||||
|
|
||||||
|
;;;; Search mappings
|
||||||
|
(bg-search-match bg-warning)
|
||||||
|
(bg-search-current bg-yellow-intense)
|
||||||
|
(bg-search-lazy bg-blue-intense)
|
||||||
|
(bg-search-replace bg-red-intense)
|
||||||
|
|
||||||
|
(bg-search-rx-group-0 bg-magenta-intense)
|
||||||
|
(bg-search-rx-group-1 bg-green-intense)
|
||||||
|
(bg-search-rx-group-2 bg-red-subtle)
|
||||||
|
(bg-search-rx-group-3 bg-cyan-subtle)
|
||||||
|
|
||||||
|
;;;; Space mappings
|
||||||
|
|
||||||
|
(bg-space unspecified)
|
||||||
|
(fg-space border)
|
||||||
|
(bg-space-err bg-maroon-intense)
|
||||||
|
|
||||||
|
;;;; Tab mappings
|
||||||
|
|
||||||
|
(bg-tab-bar bg-alt)
|
||||||
|
(bg-tab-current bg-main)
|
||||||
|
(bg-tab-other bg-active)
|
||||||
|
|
||||||
|
;;;; Terminal mappings
|
||||||
|
|
||||||
|
(bg-term-black "black")
|
||||||
|
(fg-term-black "black")
|
||||||
|
(bg-term-black-bright "gray35")
|
||||||
|
(fg-term-black-bright "gray35")
|
||||||
|
|
||||||
|
(bg-term-red red-cooler)
|
||||||
|
(fg-term-red red-cooler)
|
||||||
|
(bg-term-red-bright red-warmer)
|
||||||
|
(fg-term-red-bright red-warmer)
|
||||||
|
|
||||||
|
(bg-term-green green)
|
||||||
|
(fg-term-green green)
|
||||||
|
(bg-term-green-bright green-warmer)
|
||||||
|
(fg-term-green-bright green-warmer)
|
||||||
|
|
||||||
|
(bg-term-yellow yellow)
|
||||||
|
(fg-term-yellow yellow)
|
||||||
|
(bg-term-yellow-bright yellow-warmer)
|
||||||
|
(fg-term-yellow-bright yellow-warmer)
|
||||||
|
|
||||||
|
(bg-term-blue blue-warmer)
|
||||||
|
(fg-term-blue blue-warmer)
|
||||||
|
(bg-term-blue-bright blue-cooler)
|
||||||
|
(fg-term-blue-bright blue-cooler)
|
||||||
|
|
||||||
|
(bg-term-magenta magenta)
|
||||||
|
(fg-term-magenta magenta)
|
||||||
|
(bg-term-magenta-bright magenta-cooler)
|
||||||
|
(fg-term-magenta-bright magenta-cooler)
|
||||||
|
|
||||||
|
(bg-term-cyan cyan)
|
||||||
|
(fg-term-cyan cyan)
|
||||||
|
(bg-term-cyan-bright cyan-cooler)
|
||||||
|
(fg-term-cyan-bright cyan-cooler)
|
||||||
|
|
||||||
|
(bg-term-white "gray65")
|
||||||
|
(fg-term-white "gray65")
|
||||||
|
(bg-term-white-bright "white")
|
||||||
|
(fg-term-white-bright "white")
|
||||||
|
|
||||||
|
|
||||||
|
;;;; Rainbow mappings
|
||||||
|
|
||||||
|
(rainbow-0 marroon)
|
||||||
|
(rainbow-1 red)
|
||||||
|
(rainbow-2 peach)
|
||||||
|
(rainbow-3 yellow)
|
||||||
|
(rainbow-4 green)
|
||||||
|
(rainbow-5 sapphire)
|
||||||
|
(rainbow-6 lavender)
|
||||||
|
(rainbow-7 sky)
|
||||||
|
(rainbow-8 teal))
|
||||||
|
"The `ef-catppuccin-latte' palette.
|
||||||
|
Color values have the form (COLOR-NAME HEX-VALUE) with the former
|
||||||
|
as a symbol and the latter as a string.
|
||||||
|
|
||||||
|
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||||
|
with both as symbols. The latter is a color that already exists
|
||||||
|
in the palette and is associated with a HEX-VALUE.")
|
||||||
|
|
||||||
|
(defcustom ef-catppuccin-latte-palette-overrides nil
|
||||||
|
"Overrides for `ef-catppuccin-latte-palette'.
|
||||||
|
|
||||||
|
Mirror the elements of the aforementioned palette, overriding
|
||||||
|
their value.
|
||||||
|
|
||||||
|
For overrides that are shared across all of the Ef themes,
|
||||||
|
refer to `ef-themes-common-palette-overrides'.
|
||||||
|
|
||||||
|
To preview the palette entries, use `ef-themes-preview-colors' or
|
||||||
|
`ef-themes-preview-colors-current' (read the documentation for
|
||||||
|
further details)."
|
||||||
|
:group 'ef-themes
|
||||||
|
:package-version '(ef-themes . "1.0.0")
|
||||||
|
:type '(repeat (list symbol (choice symbol string)))
|
||||||
|
:link '(info-link "(ef-themes) Palette overrides"))
|
||||||
|
|
||||||
|
(ef-themes-theme ef-catppuccin-latte ef-catppuccin-latte-palette ef-catppuccin-latte-palette-overrides)
|
||||||
|
|
||||||
|
(provide-theme 'ef-catppuccin-latte))
|
||||||
@@ -0,0 +1,439 @@
|
|||||||
|
;;; ef-catppuccin-macchiatto-theme.el --- implementation of catppuccin-macchiatto theme using ef-themes -*- lexical-binding:t -*-
|
||||||
|
|
||||||
|
;; Copyright (C) 2022-2024 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
;; Author: Steve Beaulac <steve@beaulac.me>
|
||||||
|
;; Maintainer: Steve Beaulac <steve@beaulac.me>
|
||||||
|
;; URL: https://github.com/SjB/ef-catppuccin
|
||||||
|
;; Keywords: faces, theme, accessibility
|
||||||
|
|
||||||
|
;; This file is NOT part of GNU Emacs.
|
||||||
|
|
||||||
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||||
|
;; it under the terms of the GNU General Public License as published by
|
||||||
|
;; the Free Software Foundation, either version 3 of the License, or
|
||||||
|
;; (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;; GNU General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU General Public License
|
||||||
|
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; The `ef-themes' are a collection of light and dark themes for GNU
|
||||||
|
;; Emacs whose goal is to provide colorful ("pretty") yet legible
|
||||||
|
;; options for users who want something with a bit more flair than the
|
||||||
|
;; `modus-themes' (also designed by me).
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(eval-and-compile
|
||||||
|
(require 'ef-themes)
|
||||||
|
|
||||||
|
(deftheme ef-catppuccin-macchiatto
|
||||||
|
"ef-themes of the catppuccin-macchiatto palette"
|
||||||
|
:background-mode 'dark
|
||||||
|
:kind 'color-scheme
|
||||||
|
:family 'ef)
|
||||||
|
|
||||||
|
(defconst ef-catppuccin-macchiatto-palette
|
||||||
|
'(
|
||||||
|
;;; Basic values
|
||||||
|
|
||||||
|
;;; Basic hues for foreground values
|
||||||
|
(crust "#181926")
|
||||||
|
(mantle "#1e2030")
|
||||||
|
(base "#24273a")
|
||||||
|
(surface0 "#363A4F")
|
||||||
|
(surface1 "#494d64")
|
||||||
|
(surface2 "#5b6078")
|
||||||
|
(overlay0 "#6e728d")
|
||||||
|
(overlay1 "#8087A2")
|
||||||
|
(overlay2 "#939AB7")
|
||||||
|
(text "#CAD3F5")
|
||||||
|
(subtext0 "#A5ADCB")
|
||||||
|
(subtext1 "#B8C0E0")
|
||||||
|
(rosewater "#F3dbd6")
|
||||||
|
(rosewater-warmer "#ffdbc9")
|
||||||
|
(rosewater-cooler "#e6dbe2")
|
||||||
|
(rosewater-faint "#fdfaf9")
|
||||||
|
(rosewater-intense "#f9d6cf")
|
||||||
|
(bg-rosewater-intense "#826561")
|
||||||
|
(bg-rosewater-subtle "#b04933")
|
||||||
|
(flamingo "#f0c6c6")
|
||||||
|
(flamingo-warmer "#fcc6b9")
|
||||||
|
(flamingo-cooler "#e3c6d2")
|
||||||
|
(flamingo-faint "#f9e8e8")
|
||||||
|
(flamingo-intense "#f9bdbd")
|
||||||
|
(bg-flamingo-intense "#805959")
|
||||||
|
(bg-flamingo-subtle "#ad2d2d")
|
||||||
|
(pink "#f5bde6")
|
||||||
|
(pink-warmer "#ffbdd9")
|
||||||
|
(pink-cooler "#e8bdf2")
|
||||||
|
(pink-faint "#fae2f4")
|
||||||
|
(pink-intense "#feb3ea")
|
||||||
|
(bg-pink-intense "#8f497b")
|
||||||
|
(bg-pink-subtle "#bc1c91")
|
||||||
|
(mauve "#c6a0f6")
|
||||||
|
(mauve-warmer "#d2a0e9")
|
||||||
|
(mauve-cooler "#b9a0ff")
|
||||||
|
(mauve-faint "#dcc5f9")
|
||||||
|
(mauve-intense "#c497ff")
|
||||||
|
(bg-mauve-intense "#603990")
|
||||||
|
(bg-mauve-subtle "#5b11b9")
|
||||||
|
(red "#ed8796")
|
||||||
|
(red-warmer "#f98789")
|
||||||
|
(red-cooler "#e087a2")
|
||||||
|
(red-faint "#f1a7b2")
|
||||||
|
(red-intense "#fe7589")
|
||||||
|
(bg-red-intense "#7c3d46")
|
||||||
|
(bg-red-subtle "#a1182c")
|
||||||
|
(maroon "#ee99a0")
|
||||||
|
(maroon-warmer "#fa9993")
|
||||||
|
(maroon-cooler "#e199ac")
|
||||||
|
(maroon-faint "#f3babf")
|
||||||
|
(maroon-intense "#fc8a93")
|
||||||
|
(bg-maroon-intense "#804247")
|
||||||
|
(bg-maroon-subtle "#a71b27")
|
||||||
|
(peach "#f5a97f")
|
||||||
|
(peach-warmer "#ffa972")
|
||||||
|
(peach-cooler "#e8a98b")
|
||||||
|
(peach-faint "#f7c0a1")
|
||||||
|
(peach-intense "#ffa675")
|
||||||
|
(bg-peach-intense "#865032")
|
||||||
|
(bg-peach-subtle "#ac460d")
|
||||||
|
(yellow "#eed49f")
|
||||||
|
(yellow-warmer "#fad492")
|
||||||
|
(yellow-cooler "#e1d4ab")
|
||||||
|
(yellow-faint "#f3e3c0")
|
||||||
|
(yellow-intense "#fcd890")
|
||||||
|
(bg-yellow-intense "#806d45")
|
||||||
|
(bg-yellow-subtle "#a87a1d")
|
||||||
|
(green "#a6da95")
|
||||||
|
(green-warmer "#b2da88")
|
||||||
|
(green-cooler "#99daa1")
|
||||||
|
(green-faint "#bce3b0")
|
||||||
|
(green-intense "#9ceb83")
|
||||||
|
(bg-green-intense "#576353")
|
||||||
|
(bg-green-subtle "#45882f")
|
||||||
|
(teal "#8bd5ca")
|
||||||
|
(teal-warmer "#97d5bd")
|
||||||
|
(teal-cooler "#7ed5d6")
|
||||||
|
(teal-faint "#a4ded5")
|
||||||
|
(teal-intense "#77e8d7")
|
||||||
|
(bg-teal-intense "#515d5b")
|
||||||
|
(bg-teal-subtle "#2e8174")
|
||||||
|
(blue "#8aadf4")
|
||||||
|
(blue-warmer "#96ade7")
|
||||||
|
(blue-cooler "#7dadff")
|
||||||
|
(blue-faint "#acc5f7")
|
||||||
|
(blue-intense "#7fa9ff")
|
||||||
|
(bg-blue-intense "#365187")
|
||||||
|
(bg-blue-subtle "#1044ae")
|
||||||
|
(sky "#91d7e3")
|
||||||
|
(sky-warmer "#9dd7d6")
|
||||||
|
(sky-cooler "#84d7ef")
|
||||||
|
(sky-faint "#aee1ea")
|
||||||
|
(sky-intense "#7fe3f4")
|
||||||
|
(bg-sky-intense "#4a696e")
|
||||||
|
(bg-sky-subtle "#258494")
|
||||||
|
(sapphire "#7dc4e4")
|
||||||
|
(sapphire-warmer "#89c4d7")
|
||||||
|
(sapphire-cooler "#70c4f0")
|
||||||
|
(sapphire-faint "#9ad1ea")
|
||||||
|
(sapphire-intense "#69cbf7")
|
||||||
|
(bg-sapphire-intense "#41606e")
|
||||||
|
(bg-sapphire-subtle "#1e6e92")
|
||||||
|
(lavender "#b7bdf8")
|
||||||
|
(lavender-warmer "#c3bdeb")
|
||||||
|
(lavender-cooler "#aabdff")
|
||||||
|
(lavender-faint "#dee1fb")
|
||||||
|
(lavender-intense "#b0b7ff")
|
||||||
|
(bg-lavender-intense "#3d4599")
|
||||||
|
(bg-lavender-subtle "#1323c4")
|
||||||
|
|
||||||
|
;;; remaping colors to properties
|
||||||
|
(bg-main base)
|
||||||
|
(bg-dim mantle)
|
||||||
|
(bg-alt crust)
|
||||||
|
|
||||||
|
(fg-main text)
|
||||||
|
(fg-dim subtext0)
|
||||||
|
(fg-alt subtext1)
|
||||||
|
|
||||||
|
(bg-inactive surface0)
|
||||||
|
(bg-active surface1)
|
||||||
|
|
||||||
|
;;; mauve is replacing magenta
|
||||||
|
(magenta mauve)
|
||||||
|
(magenta-warmer mauve-warmer)
|
||||||
|
(magenta-cooler mauve-cooler)
|
||||||
|
(magenta-faint mauve-faint)
|
||||||
|
(bg-magenta-intense bg-mauve-intense)
|
||||||
|
(bg-magenta-subtle bg-mauve-subtle)
|
||||||
|
|
||||||
|
|
||||||
|
;;; sapphire is replacing cyan
|
||||||
|
(cyan sapphire)
|
||||||
|
(cyan-warmer sapphire-warmer)
|
||||||
|
(cyan-cooler sapphire-cooler)
|
||||||
|
(cyan-faint sapphire-faint)
|
||||||
|
(bg-cyan-intense bg-sapphire-intense)
|
||||||
|
(bg-cyan-subtle bg-sapphire-subtle)
|
||||||
|
|
||||||
|
;;; Diffs
|
||||||
|
|
||||||
|
(bg-added bg-active)
|
||||||
|
(bg-added-faint bg-inactive)
|
||||||
|
(bg-added-refine bg-green-subtle)
|
||||||
|
(fg-added green)
|
||||||
|
|
||||||
|
(bg-changed bg-active)
|
||||||
|
(bg-changed-faint bg-inactive)
|
||||||
|
(bg-changed-refine bg-blue-subtle)
|
||||||
|
(fg-changed blue)
|
||||||
|
|
||||||
|
(bg-removed bg-active)
|
||||||
|
(bg-removed-faint bg-inactive)
|
||||||
|
(bg-removed-refine bg-red-subtle)
|
||||||
|
(fg-removed red)
|
||||||
|
|
||||||
|
;;; Graphs
|
||||||
|
|
||||||
|
(bg-graph-red-0 bg-maroon-subtle)
|
||||||
|
(bg-graph-red-1 bg-maroon-intense)
|
||||||
|
(bg-graph-green-0 bg-teal-subtle)
|
||||||
|
(bg-graph-green-1 bg-teal-intense)
|
||||||
|
(bg-graph-yellow-0 bg-rosewater-subtle)
|
||||||
|
(bg-graph-yellow-1 bg-rosewater-intense)
|
||||||
|
(bg-graph-blue-0 bg-sky-subtle)
|
||||||
|
(bg-graph-blue-1 bg-sky-intense)
|
||||||
|
(bg-graph-magenta-0 bg-pink-subtle)
|
||||||
|
(bg-graph-magenta-1 bg-pink-intense)
|
||||||
|
(bg-graph-cyan-0 bg-lavender-subtle)
|
||||||
|
(bg-graph-cyan-1 bg-lavender-intense)
|
||||||
|
|
||||||
|
;;; Special hues
|
||||||
|
(bg-mode-line mantle)
|
||||||
|
(fg-mode-line text)
|
||||||
|
|
||||||
|
(bg-completion overlay0)
|
||||||
|
(bg-hover overlay1)
|
||||||
|
(bg-hover-secondary overlay2)
|
||||||
|
|
||||||
|
(bg-hl-line crust)
|
||||||
|
(bg-region overlay2)
|
||||||
|
(bg-paren surface2)
|
||||||
|
|
||||||
|
(bg-err bg-red-intense) ; check with err
|
||||||
|
(bg-warning bg-yellow-intense) ; check with warning
|
||||||
|
(bg-info bg-green-intense) ; check with info
|
||||||
|
|
||||||
|
(border lavender)
|
||||||
|
(cursor rosewater)
|
||||||
|
(fg-intense subtext1)
|
||||||
|
|
||||||
|
(modeline-err red)
|
||||||
|
(modeline-warning yellow)
|
||||||
|
(modeline-info green)
|
||||||
|
|
||||||
|
(underline-err red-intense)
|
||||||
|
(underline-warning yellow-intense)
|
||||||
|
(underline-info green-intense)
|
||||||
|
|
||||||
|
(bg-char-0 surface0)
|
||||||
|
(bg-char-1 surface1)
|
||||||
|
(bg-char-2 surface2)
|
||||||
|
|
||||||
|
;;; Conditional hues
|
||||||
|
|
||||||
|
(bg-region-intense bg-lavender-intense)
|
||||||
|
(fg-region crust)
|
||||||
|
|
||||||
|
;;; Mappings
|
||||||
|
|
||||||
|
;;;; General mappings
|
||||||
|
|
||||||
|
(bg-fringe bg-main)
|
||||||
|
(fg-fringe fg-main)
|
||||||
|
|
||||||
|
(err red)
|
||||||
|
(warning yellow)
|
||||||
|
(info green)
|
||||||
|
|
||||||
|
(link blue)
|
||||||
|
(link-alt lavender)
|
||||||
|
(name green)
|
||||||
|
(keybind teal)
|
||||||
|
(identifier sapphire)
|
||||||
|
(prompt flamingo)
|
||||||
|
|
||||||
|
;;;; Code mappings
|
||||||
|
|
||||||
|
(builtin red)
|
||||||
|
(comment overlay0)
|
||||||
|
(constant peach)
|
||||||
|
(fnname flamingo)
|
||||||
|
(keyword mauve)
|
||||||
|
(preprocessor sky)
|
||||||
|
(docstring sapphire)
|
||||||
|
(string green)
|
||||||
|
(type yellow)
|
||||||
|
(variable green)
|
||||||
|
(rx-escape rosewater) ; compare with `string'
|
||||||
|
(rx-construct maroon)
|
||||||
|
|
||||||
|
;;;; Accent mappings
|
||||||
|
|
||||||
|
(accent-0 blue)
|
||||||
|
(accent-1 mauve)
|
||||||
|
(accent-2 green)
|
||||||
|
(accent-3 red)
|
||||||
|
|
||||||
|
;;;; Date mappings
|
||||||
|
|
||||||
|
(date-common green-cooler)
|
||||||
|
(date-deadline red-warmer)
|
||||||
|
(date-event fg-alt)
|
||||||
|
(date-holiday mauve-faint)
|
||||||
|
(date-now fg-main)
|
||||||
|
(date-range fg-alt)
|
||||||
|
(date-scheduled yellow)
|
||||||
|
(date-weekday sapphire)
|
||||||
|
(date-weekend red-faint)
|
||||||
|
|
||||||
|
;;;; Prose mappings
|
||||||
|
|
||||||
|
(prose-code mauve-warmer)
|
||||||
|
(prose-done green)
|
||||||
|
(prose-macro green-cooler)
|
||||||
|
(prose-metadata fg-dim)
|
||||||
|
(prose-metadata-value fg-alt)
|
||||||
|
(prose-table fg-alt)
|
||||||
|
(prose-table-formula err)
|
||||||
|
(prose-tag yellow-faint)
|
||||||
|
(prose-todo red-warmer)
|
||||||
|
(prose-verbatim blue)
|
||||||
|
|
||||||
|
;;;; Mail mappings
|
||||||
|
|
||||||
|
(mail-cite-0 blue)
|
||||||
|
(mail-cite-1 mauve-warmer)
|
||||||
|
(mail-cite-2 green-cooler)
|
||||||
|
(mail-cite-3 yellow-cooler)
|
||||||
|
(mail-part mauve-faint)
|
||||||
|
(mail-recipient blue-warmer)
|
||||||
|
(mail-subject blue-cooler)
|
||||||
|
(mail-other sapphire)
|
||||||
|
|
||||||
|
;;;; Search mappings
|
||||||
|
(bg-search-match bg-warning)
|
||||||
|
(bg-search-current bg-yellow-intense)
|
||||||
|
(bg-search-lazy bg-blue-intense)
|
||||||
|
(bg-search-replace bg-red-intense)
|
||||||
|
|
||||||
|
(bg-search-rx-group-0 bg-magenta-intense)
|
||||||
|
(bg-search-rx-group-1 bg-green-intense)
|
||||||
|
(bg-search-rx-group-2 bg-red-subtle)
|
||||||
|
(bg-search-rx-group-3 bg-cyan-subtle)
|
||||||
|
|
||||||
|
;;;; Space mappings
|
||||||
|
|
||||||
|
(bg-space unspecified)
|
||||||
|
(fg-space border)
|
||||||
|
(bg-space-err bg-maroon-intense)
|
||||||
|
|
||||||
|
;;;; Tab mappings
|
||||||
|
|
||||||
|
(bg-tab-bar bg-alt)
|
||||||
|
(bg-tab-current bg-main)
|
||||||
|
(bg-tab-other bg-active)
|
||||||
|
|
||||||
|
;;;; Terminal mappings
|
||||||
|
|
||||||
|
(bg-term-black "black")
|
||||||
|
(fg-term-black "black")
|
||||||
|
(bg-term-black-bright "gray35")
|
||||||
|
(fg-term-black-bright "gray35")
|
||||||
|
|
||||||
|
(bg-term-red red-cooler)
|
||||||
|
(fg-term-red red-cooler)
|
||||||
|
(bg-term-red-bright red-warmer)
|
||||||
|
(fg-term-red-bright red-warmer)
|
||||||
|
|
||||||
|
(bg-term-green green)
|
||||||
|
(fg-term-green green)
|
||||||
|
(bg-term-green-bright green-warmer)
|
||||||
|
(fg-term-green-bright green-warmer)
|
||||||
|
|
||||||
|
(bg-term-yellow yellow)
|
||||||
|
(fg-term-yellow yellow)
|
||||||
|
(bg-term-yellow-bright yellow-warmer)
|
||||||
|
(fg-term-yellow-bright yellow-warmer)
|
||||||
|
|
||||||
|
(bg-term-blue blue-warmer)
|
||||||
|
(fg-term-blue blue-warmer)
|
||||||
|
(bg-term-blue-bright blue-cooler)
|
||||||
|
(fg-term-blue-bright blue-cooler)
|
||||||
|
|
||||||
|
(bg-term-magenta magenta)
|
||||||
|
(fg-term-magenta magenta)
|
||||||
|
(bg-term-magenta-bright magenta-cooler)
|
||||||
|
(fg-term-magenta-bright magenta-cooler)
|
||||||
|
|
||||||
|
(bg-term-cyan cyan)
|
||||||
|
(fg-term-cyan cyan)
|
||||||
|
(bg-term-cyan-bright cyan-cooler)
|
||||||
|
(fg-term-cyan-bright cyan-cooler)
|
||||||
|
|
||||||
|
(bg-term-white "gray65")
|
||||||
|
(fg-term-white "gray65")
|
||||||
|
(bg-term-white-bright "white")
|
||||||
|
(fg-term-white-bright "white")
|
||||||
|
|
||||||
|
|
||||||
|
;;;; Rainbow mappings
|
||||||
|
|
||||||
|
(rainbow-0 marroon)
|
||||||
|
(rainbow-1 red)
|
||||||
|
(rainbow-2 peach)
|
||||||
|
(rainbow-3 yellow)
|
||||||
|
(rainbow-4 green)
|
||||||
|
(rainbow-5 sapphire)
|
||||||
|
(rainbow-6 lavender)
|
||||||
|
(rainbow-7 sky)
|
||||||
|
(rainbow-8 teal))
|
||||||
|
"The `ef-catppuccin-macchiatto' palette.
|
||||||
|
Color values have the form (COLOR-NAME HEX-VALUE) with the former
|
||||||
|
as a symbol and the latter as a string.
|
||||||
|
|
||||||
|
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||||
|
with both as symbols. The latter is a color that already exists
|
||||||
|
in the palette and is associated with a HEX-VALUE.")
|
||||||
|
|
||||||
|
(defcustom ef-catppuccin-macchiatto-palette-overrides nil
|
||||||
|
"Overrides for `ef-catppuccin-macchiatto-palette'.
|
||||||
|
|
||||||
|
Mirror the elements of the aforementioned palette, overriding
|
||||||
|
their value.
|
||||||
|
|
||||||
|
For overrides that are shared across all of the Ef themes,
|
||||||
|
refer to `ef-themes-common-palette-overrides'.
|
||||||
|
|
||||||
|
To preview the palette entries, use `ef-themes-preview-colors' or
|
||||||
|
`ef-themes-preview-colors-current' (read the documentation for
|
||||||
|
further details)."
|
||||||
|
:group 'ef-themes
|
||||||
|
:package-version '(ef-themes . "1.0.0")
|
||||||
|
:type '(repeat (list symbol (choice symbol string)))
|
||||||
|
:link '(info-link "(ef-themes) Palette overrides"))
|
||||||
|
|
||||||
|
(ef-themes-theme ef-catppuccin-macchiatto ef-catppuccin-macchiatto-palette ef-catppuccin-macchiatto-palette-overrides)
|
||||||
|
|
||||||
|
(provide-theme 'ef-catppuccin-macchiatto))
|
||||||
@@ -0,0 +1,437 @@
|
|||||||
|
;;; ef-catppuccin-mocha-theme.el --- implementation of catppuccin-mocha theme using ef-themes -*- lexical-binding:t -*-
|
||||||
|
|
||||||
|
;; Copyright (C) 2022-2024 Free Software Foundation, Inc.
|
||||||
|
|
||||||
|
;; Author: Steve Beaulac <steve@beaulac.me>
|
||||||
|
;; Maintainer: Steve Beaulac <steve@beaulac.me>
|
||||||
|
;; URL: https://github.com/SjB/ef-catppuccin
|
||||||
|
;; Keywords: faces, theme, accessibility
|
||||||
|
|
||||||
|
;; This file is NOT part of GNU Emacs.
|
||||||
|
|
||||||
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
||||||
|
;; it under the terms of the GNU General Public License as published by
|
||||||
|
;; the Free Software Foundation, either version 3 of the License, or
|
||||||
|
;; (at your option) any later version.
|
||||||
|
;;
|
||||||
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
||||||
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
;; GNU General Public License for more details.
|
||||||
|
;;
|
||||||
|
;; You should have received a copy of the GNU General Public License
|
||||||
|
;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
;;; Commentary:
|
||||||
|
;;
|
||||||
|
;; The `ef-themes' are a collection of light and dark themes for GNU
|
||||||
|
;; Emacs whose goal is to provide colorful ("pretty") yet legible
|
||||||
|
;; options for users who want something with a bit more flair than the
|
||||||
|
;; `modus-themes' (also designed by me).
|
||||||
|
|
||||||
|
;;; Code:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(eval-and-compile
|
||||||
|
(require 'ef-themes)
|
||||||
|
(deftheme ef-catppuccin-mocha
|
||||||
|
"ef-themes of the catppuccin-mocha palette"
|
||||||
|
:background-mode 'dark
|
||||||
|
:kind 'color-scheme
|
||||||
|
:family 'ef)
|
||||||
|
|
||||||
|
(defconst ef-catppuccin-mocha-palette
|
||||||
|
'(
|
||||||
|
;;; Basic values
|
||||||
|
|
||||||
|
;;; Basic hues for foreground values
|
||||||
|
(crust "#11111b")
|
||||||
|
(mantle "#181825")
|
||||||
|
(base "#1e1e2e")
|
||||||
|
(surface0 "#313244")
|
||||||
|
(surface1 "#43465a")
|
||||||
|
(surface2 "#565970")
|
||||||
|
(overlay0 "#696d86")
|
||||||
|
(overlay1 "#7B819D")
|
||||||
|
(overlay2 "#8E95B3")
|
||||||
|
(text "#C6D0F5")
|
||||||
|
(subtext0 "#A1A8C9")
|
||||||
|
(subtext1 "#B3BCDF")
|
||||||
|
(rosewater "#f5e0dc")
|
||||||
|
(rosewater-warmer "#ffe0cf")
|
||||||
|
(rosewater-cooler "#e8e0e8")
|
||||||
|
(rosewater-faint "#ffffff")
|
||||||
|
(rosewater-intense "#fadcd6")
|
||||||
|
(bg-rosewater-intense "#88695f")
|
||||||
|
(bg-rosewater-subtle "#b44833")
|
||||||
|
(flamingo "#f2cdcd")
|
||||||
|
(flamingo-warmer "#fecdc0")
|
||||||
|
(flamingo-cooler "#e5cdd9")
|
||||||
|
(flamingo-faint "#fbf0f0")
|
||||||
|
(flamingo-intense "#f9c5c5")
|
||||||
|
(bg-flamingo-intense "#845a5a")
|
||||||
|
(bg-flamingo-subtle "#b12e2e")
|
||||||
|
(pink "#f5c2e7")
|
||||||
|
(pink-warmer "#ffc2da")
|
||||||
|
(pink-cooler "#e8c2f3")
|
||||||
|
(pink-faint "#fbe7f5")
|
||||||
|
(pink-intense "#fdb9eb")
|
||||||
|
(bg-pink-intense "#8e4c7c")
|
||||||
|
(bg-pink-subtle "#bc1e91")
|
||||||
|
(mauve "#cba6f7")
|
||||||
|
(mauve-warmer "#d7a6ea")
|
||||||
|
(mauve-cooler "#bea6ff")
|
||||||
|
(mauve-faint "#e1cbfa")
|
||||||
|
(mauve-intense "#ca9eff")
|
||||||
|
(bg-mauve-intense "#623a93")
|
||||||
|
(bg-mauve-subtle "#5f11bd")
|
||||||
|
(red "#f28ba8")
|
||||||
|
(red-warmer "#fe8b9b")
|
||||||
|
(red-cooler "#e58bb4")
|
||||||
|
(red-faint "#f5adc1")
|
||||||
|
(red-intense "#ff7ea2")
|
||||||
|
(bg-red-intense "#85384e")
|
||||||
|
(bg-red-subtle "#ab133e")
|
||||||
|
(maroon "#eba0ac")
|
||||||
|
(maroon-warmer "#f7a09f")
|
||||||
|
(maroon-cooler "#dea0b8")
|
||||||
|
(maroon-faint "#f1c0c8")
|
||||||
|
(maroon-intense "#f991a2")
|
||||||
|
(bg-maroon-intense "#7a4a51")
|
||||||
|
(bg-maroon-subtle "#a32236")
|
||||||
|
(peach "#fab387")
|
||||||
|
(peach-warmer "#ffb37a")
|
||||||
|
(peach-cooler "#edb393")
|
||||||
|
(peach-faint "#fbcaab")
|
||||||
|
(peach-intense "#ffb182")
|
||||||
|
(bg-peach-intense "#92532e")
|
||||||
|
(bg-peach-subtle "#b84b07")
|
||||||
|
(yellow "#f9e2af")
|
||||||
|
(yellow-warmer "#ffe2a2")
|
||||||
|
(yellow-cooler "#ece2bb")
|
||||||
|
(yellow-faint "#fbf0d6")
|
||||||
|
(yellow-intense "#ffe4a8")
|
||||||
|
(bg-yellow-intense "#997b3a")
|
||||||
|
(bg-yellow-subtle "#c58c0e")
|
||||||
|
(green "#a6e3a1")
|
||||||
|
(green-warmer "#b2e394")
|
||||||
|
(green-cooler "#99e3ad")
|
||||||
|
(green-faint "#c2ebbe")
|
||||||
|
(green-intense "#99f291")
|
||||||
|
(bg-green-intense "#546e53")
|
||||||
|
(bg-green-subtle "#34952c")
|
||||||
|
(teal "#94e2d5")
|
||||||
|
(teal-warmer "#a0e2c8")
|
||||||
|
(teal-cooler "#87e2e1")
|
||||||
|
(teal-faint "#b1e9e0")
|
||||||
|
(teal-intense "#83f2e0")
|
||||||
|
(bg-teal-intense "#4d6c67")
|
||||||
|
(bg-teal-subtle "#279381")
|
||||||
|
(blue "#87b0f9")
|
||||||
|
(blue-warmer "#93b0ec")
|
||||||
|
(blue-cooler "#7ab0ff")
|
||||||
|
(blue-faint "#abc8fa")
|
||||||
|
(blue-intense "#81aeff")
|
||||||
|
(bg-blue-intense "#30528f")
|
||||||
|
(bg-blue-subtle "#0947b6")
|
||||||
|
(sky "#89dceb")
|
||||||
|
(sky-warmer "#95dcde")
|
||||||
|
(sky-cooler "#7cdcf7")
|
||||||
|
(sky-faint "#a8e5f0")
|
||||||
|
(sky-intense "#77e7fc")
|
||||||
|
(bg-sky-intense "#407079")
|
||||||
|
(bg-sky-subtle "#1a8a9f")
|
||||||
|
(sapphire "#74c7ec")
|
||||||
|
(sapphire-warmer "#80c7df")
|
||||||
|
(sapphire-cooler "#67c7f8")
|
||||||
|
(sapphire-faint "#92d3f0")
|
||||||
|
(sapphire-intense "#61ceff")
|
||||||
|
(bg-sapphire-intense "#386377")
|
||||||
|
(bg-sapphire-subtle "#15719a")
|
||||||
|
(lavender "#b4befe")
|
||||||
|
(lavender-warmer "#c0bef1")
|
||||||
|
(lavender-cooler "#a7beff")
|
||||||
|
(lavender-faint "#dee3fe")
|
||||||
|
(lavender-intense "#b3bdff")
|
||||||
|
(bg-lavender-intense "#2f40a8")
|
||||||
|
(bg-lavender-subtle "#021fd6")
|
||||||
|
|
||||||
|
;;; remaping colors to properties
|
||||||
|
(bg-main base)
|
||||||
|
(bg-dim mantle)
|
||||||
|
(bg-alt crust)
|
||||||
|
|
||||||
|
(fg-main text)
|
||||||
|
(fg-dim subtext0)
|
||||||
|
(fg-alt subtext1)
|
||||||
|
|
||||||
|
(bg-inactive surface0)
|
||||||
|
(bg-active surface1)
|
||||||
|
|
||||||
|
;;; mauve is replacing magenta
|
||||||
|
(magenta mauve)
|
||||||
|
(magenta-warmer mauve-warmer)
|
||||||
|
(magenta-cooler mauve-cooler)
|
||||||
|
(magenta-faint mauve-faint)
|
||||||
|
(bg-magenta-intense bg-mauve-intense)
|
||||||
|
(bg-magenta-subtle bg-mauve-subtle)
|
||||||
|
|
||||||
|
|
||||||
|
;;; sapphire is replacing cyan
|
||||||
|
(cyan sapphire)
|
||||||
|
(cyan-warmer sapphire-warmer)
|
||||||
|
(cyan-cooler sapphire-cooler)
|
||||||
|
(cyan-faint sapphire-faint)
|
||||||
|
(bg-cyan-intense bg-sapphire-intense)
|
||||||
|
(bg-cyan-subtle bg-sapphire-subtle)
|
||||||
|
|
||||||
|
;;; Diffs
|
||||||
|
|
||||||
|
(bg-added bg-active)
|
||||||
|
(bg-added-faint bg-inactive)
|
||||||
|
(bg-added-refine bg-green-subtle)
|
||||||
|
(fg-added green)
|
||||||
|
|
||||||
|
(bg-changed bg-active)
|
||||||
|
(bg-changed-faint bg-inactive)
|
||||||
|
(bg-changed-refine bg-blue-subtle)
|
||||||
|
(fg-changed blue)
|
||||||
|
|
||||||
|
(bg-removed bg-active)
|
||||||
|
(bg-removed-faint bg-inactive)
|
||||||
|
(bg-removed-refine bg-red-subtle)
|
||||||
|
(fg-removed red)
|
||||||
|
|
||||||
|
;;; Graphs
|
||||||
|
|
||||||
|
(bg-graph-red-0 bg-maroon-subtle)
|
||||||
|
(bg-graph-red-1 bg-maroon-intense)
|
||||||
|
(bg-graph-green-0 bg-teal-subtle)
|
||||||
|
(bg-graph-green-1 bg-teal-intense)
|
||||||
|
(bg-graph-yellow-0 bg-rosewater-subtle)
|
||||||
|
(bg-graph-yellow-1 bg-rosewater-intense)
|
||||||
|
(bg-graph-blue-0 bg-sky-subtle)
|
||||||
|
(bg-graph-blue-1 bg-sky-intense)
|
||||||
|
(bg-graph-magenta-0 bg-pink-subtle)
|
||||||
|
(bg-graph-magenta-1 bg-pink-intense)
|
||||||
|
(bg-graph-cyan-0 bg-lavender-subtle)
|
||||||
|
(bg-graph-cyan-1 bg-lavender-intense)
|
||||||
|
|
||||||
|
;;; Special hues
|
||||||
|
(bg-mode-line mantle)
|
||||||
|
(fg-mode-line text)
|
||||||
|
|
||||||
|
(bg-completion overlay0)
|
||||||
|
(bg-hover overlay1)
|
||||||
|
(bg-hover-secondary overlay2)
|
||||||
|
|
||||||
|
(bg-hl-line crust)
|
||||||
|
(bg-region overlay2)
|
||||||
|
(bg-paren surface2)
|
||||||
|
|
||||||
|
(bg-err bg-red-intense) ; check with err
|
||||||
|
(bg-warning bg-yellow-intense) ; check with warning
|
||||||
|
(bg-info bg-green-intense) ; check with info
|
||||||
|
|
||||||
|
(border lavender)
|
||||||
|
(cursor rosewater)
|
||||||
|
(fg-intense subtext1)
|
||||||
|
|
||||||
|
(modeline-err red)
|
||||||
|
(modeline-warning yellow)
|
||||||
|
(modeline-info green)
|
||||||
|
|
||||||
|
(underline-err red-intense)
|
||||||
|
(underline-warning yellow-intense)
|
||||||
|
(underline-info green-intense)
|
||||||
|
|
||||||
|
(bg-char-0 surface0)
|
||||||
|
(bg-char-1 surface1)
|
||||||
|
(bg-char-2 surface2)
|
||||||
|
|
||||||
|
;;; Conditional hues
|
||||||
|
|
||||||
|
(bg-region-intense bg-lavender-intense)
|
||||||
|
(fg-region crust)
|
||||||
|
|
||||||
|
;;; Mappings
|
||||||
|
|
||||||
|
;;;; General mappings
|
||||||
|
|
||||||
|
(bg-fringe bg-main)
|
||||||
|
(fg-fringe fg-main)
|
||||||
|
|
||||||
|
(err red)
|
||||||
|
(warning yellow)
|
||||||
|
(info green)
|
||||||
|
|
||||||
|
(link blue)
|
||||||
|
(link-alt lavender)
|
||||||
|
(name green)
|
||||||
|
(keybind teal)
|
||||||
|
(identifier sapphire)
|
||||||
|
(prompt flamingo)
|
||||||
|
|
||||||
|
;;;; Code mappings
|
||||||
|
|
||||||
|
(builtin red)
|
||||||
|
(comment overlay0)
|
||||||
|
(constant peach)
|
||||||
|
(fnname flamingo)
|
||||||
|
(keyword mauve)
|
||||||
|
(preprocessor sky)
|
||||||
|
(docstring sapphire)
|
||||||
|
(string green)
|
||||||
|
(type yellow)
|
||||||
|
(variable green)
|
||||||
|
(rx-escape rosewater) ; compare with `string'
|
||||||
|
(rx-construct maroon)
|
||||||
|
|
||||||
|
;;;; Accent mappings
|
||||||
|
|
||||||
|
(accent-0 blue)
|
||||||
|
(accent-1 mauve)
|
||||||
|
(accent-2 green)
|
||||||
|
(accent-3 red)
|
||||||
|
|
||||||
|
;;;; Date mappings
|
||||||
|
|
||||||
|
(date-common green-cooler)
|
||||||
|
(date-deadline red-warmer)
|
||||||
|
(date-event fg-alt)
|
||||||
|
(date-holiday mauve-faint)
|
||||||
|
(date-now fg-main)
|
||||||
|
(date-range fg-alt)
|
||||||
|
(date-scheduled yellow)
|
||||||
|
(date-weekday sapphire)
|
||||||
|
(date-weekend red-faint)
|
||||||
|
|
||||||
|
;;;; Prose mappings
|
||||||
|
|
||||||
|
(prose-code mauve-warmer)
|
||||||
|
(prose-done green)
|
||||||
|
(prose-macro green-cooler)
|
||||||
|
(prose-metadata fg-dim)
|
||||||
|
(prose-metadata-value fg-alt)
|
||||||
|
(prose-table fg-alt)
|
||||||
|
(prose-table-formula err)
|
||||||
|
(prose-tag yellow-faint)
|
||||||
|
(prose-todo red-warmer)
|
||||||
|
(prose-verbatim blue)
|
||||||
|
|
||||||
|
;;;; Mail mappings
|
||||||
|
|
||||||
|
(mail-cite-0 blue)
|
||||||
|
(mail-cite-1 mauve-warmer)
|
||||||
|
(mail-cite-2 green-cooler)
|
||||||
|
(mail-cite-3 yellow-cooler)
|
||||||
|
(mail-part mauve-faint)
|
||||||
|
(mail-recipient blue-warmer)
|
||||||
|
(mail-subject blue-cooler)
|
||||||
|
(mail-other sapphire)
|
||||||
|
|
||||||
|
;;;; Search mappings
|
||||||
|
(bg-search-match bg-warning)
|
||||||
|
(bg-search-current bg-yellow-intense)
|
||||||
|
(bg-search-lazy bg-blue-intense)
|
||||||
|
(bg-search-replace bg-red-intense)
|
||||||
|
|
||||||
|
(bg-search-rx-group-0 bg-magenta-intense)
|
||||||
|
(bg-search-rx-group-1 bg-green-intense)
|
||||||
|
(bg-search-rx-group-2 bg-red-subtle)
|
||||||
|
(bg-search-rx-group-3 bg-cyan-subtle)
|
||||||
|
|
||||||
|
;;;; Space mappings
|
||||||
|
|
||||||
|
(bg-space unspecified)
|
||||||
|
(fg-space border)
|
||||||
|
(bg-space-err bg-maroon-intense)
|
||||||
|
|
||||||
|
;;;; Tab mappings
|
||||||
|
|
||||||
|
(bg-tab-bar bg-alt)
|
||||||
|
(bg-tab-current bg-main)
|
||||||
|
(bg-tab-other bg-active)
|
||||||
|
|
||||||
|
;;;; Terminal mappings
|
||||||
|
|
||||||
|
(bg-term-black "black")
|
||||||
|
(fg-term-black "black")
|
||||||
|
(bg-term-black-bright "gray35")
|
||||||
|
(fg-term-black-bright "gray35")
|
||||||
|
|
||||||
|
(bg-term-red red-cooler)
|
||||||
|
(fg-term-red red-cooler)
|
||||||
|
(bg-term-red-bright red-warmer)
|
||||||
|
(fg-term-red-bright red-warmer)
|
||||||
|
|
||||||
|
(bg-term-green green)
|
||||||
|
(fg-term-green green)
|
||||||
|
(bg-term-green-bright green-warmer)
|
||||||
|
(fg-term-green-bright green-warmer)
|
||||||
|
|
||||||
|
(bg-term-yellow yellow)
|
||||||
|
(fg-term-yellow yellow)
|
||||||
|
(bg-term-yellow-bright yellow-warmer)
|
||||||
|
(fg-term-yellow-bright yellow-warmer)
|
||||||
|
|
||||||
|
(bg-term-blue blue-warmer)
|
||||||
|
(fg-term-blue blue-warmer)
|
||||||
|
(bg-term-blue-bright blue-cooler)
|
||||||
|
(fg-term-blue-bright blue-cooler)
|
||||||
|
|
||||||
|
(bg-term-magenta magenta)
|
||||||
|
(fg-term-magenta magenta)
|
||||||
|
(bg-term-magenta-bright magenta-cooler)
|
||||||
|
(fg-term-magenta-bright magenta-cooler)
|
||||||
|
|
||||||
|
(bg-term-cyan cyan)
|
||||||
|
(fg-term-cyan cyan)
|
||||||
|
(bg-term-cyan-bright cyan-cooler)
|
||||||
|
(fg-term-cyan-bright cyan-cooler)
|
||||||
|
|
||||||
|
(bg-term-white "gray65")
|
||||||
|
(fg-term-white "gray65")
|
||||||
|
(bg-term-white-bright "white")
|
||||||
|
(fg-term-white-bright "white")
|
||||||
|
|
||||||
|
;;;; Rainbow mappings
|
||||||
|
|
||||||
|
(rainbow-0 marroon)
|
||||||
|
(rainbow-1 red)
|
||||||
|
(rainbow-2 peach)
|
||||||
|
(rainbow-3 yellow)
|
||||||
|
(rainbow-4 green)
|
||||||
|
(rainbow-5 sapphire)
|
||||||
|
(rainbow-6 lavender)
|
||||||
|
(rainbow-7 sky)
|
||||||
|
(rainbow-8 teal))
|
||||||
|
"The `ef-catppuccin-mocha' palette.
|
||||||
|
Color values have the form (COLOR-NAME HEX-VALUE) with the former
|
||||||
|
as a symbol and the latter as a string.
|
||||||
|
|
||||||
|
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||||
|
with both as symbols. The latter is a color that already exists
|
||||||
|
in the palette and is associated with a HEX-VALUE.")
|
||||||
|
|
||||||
|
(defcustom ef-catppuccin-mocha-palette-overrides nil
|
||||||
|
"Overrides for `ef-catppuccin-mocha-palette'.
|
||||||
|
|
||||||
|
Mirror the elements of the aforementioned palette, overriding
|
||||||
|
their value.
|
||||||
|
|
||||||
|
For overrides that are shared across all of the Ef themes,
|
||||||
|
refer to `ef-themes-common-palette-overrides'.
|
||||||
|
|
||||||
|
To preview the palette entries, use `ef-themes-preview-colors' or
|
||||||
|
`ef-themes-preview-colors-current' (read the documentation for
|
||||||
|
further details)."
|
||||||
|
:group 'ef-themes
|
||||||
|
:package-version '(ef-themes . "1.0.0")
|
||||||
|
:type '(repeat (list symbol (choice symbol string)))
|
||||||
|
:link '(info-link "(ef-themes) Palette overrides"))
|
||||||
|
|
||||||
|
(ef-themes-theme ef-catppuccin-mocha ef-catppuccin-mocha-palette ef-catppuccin-mocha-palette-overrides)
|
||||||
|
|
||||||
|
(provide-theme 'ef-catppuccin-mocha))
|
||||||
@@ -0,0 +1,323 @@
|
|||||||
|
;; Steve Beaulac implementation of monokai-pro theme using ef-themes
|
||||||
|
(eval-and-compile
|
||||||
|
(require 'ef-themes)
|
||||||
|
|
||||||
|
(deftheme ef-monokai-pro
|
||||||
|
"ef-themes of the monokai-pro palette"
|
||||||
|
:background-mode 'dark
|
||||||
|
:kind 'color-scheme
|
||||||
|
:family 'ef)
|
||||||
|
|
||||||
|
(defconst ef-monokai-pro-palette
|
||||||
|
'(
|
||||||
|
;;; Basic values
|
||||||
|
|
||||||
|
(bg-main "#2d2a2e")
|
||||||
|
(fg-main "#fcfcfa")
|
||||||
|
(bg-dim "#353236")
|
||||||
|
(fg-dim "#c1c0c0")
|
||||||
|
(bg-alt "#403e41")
|
||||||
|
(fg-alt "#8d7391")
|
||||||
|
|
||||||
|
(bg-active "#5b595c")
|
||||||
|
(bg-inactive "#242124")
|
||||||
|
|
||||||
|
;;; Basic hues for foreground values
|
||||||
|
|
||||||
|
(red "#ff6188")
|
||||||
|
(red-warmer "#ff697a")
|
||||||
|
(red-cooler "#dd61aa")
|
||||||
|
(red-faint "#ff99b3")
|
||||||
|
|
||||||
|
(green "#a9dc76")
|
||||||
|
(green-warmer "#bbb876")
|
||||||
|
(green-cooler "#9abf93")
|
||||||
|
(green-faint "#c7e8a6")
|
||||||
|
|
||||||
|
(yellow "#ffd866")
|
||||||
|
(yellow-warmer "#ffaf66")
|
||||||
|
(yellow-cooler "#d3b792")
|
||||||
|
(yellow-faint "#ffe69d")
|
||||||
|
|
||||||
|
(blue "#78dce8")
|
||||||
|
(blue-warmer "#a0b9c0")
|
||||||
|
(blue-cooler "#78c0e8")
|
||||||
|
(blue-faint "#a8e9f0")
|
||||||
|
|
||||||
|
(magenta "#ff9df2")
|
||||||
|
(magenta-warmer "#ff9dd4")
|
||||||
|
(magenta-cooler "#e39df6")
|
||||||
|
(magenta-faint "#ffc1f7")
|
||||||
|
|
||||||
|
(cyan "#fc9867")
|
||||||
|
(cyan-warmer "#fd8957")
|
||||||
|
(cyan-cooler "#ff929d")
|
||||||
|
(cyan-faint "#ffc7aa")
|
||||||
|
|
||||||
|
;;; Basic hues for background values
|
||||||
|
|
||||||
|
(bg-red-intense "#f27185")
|
||||||
|
(bg-red-subtle "#d47479")
|
||||||
|
|
||||||
|
(bg-green-intense "#a5cf4f")
|
||||||
|
(bg-green-subtle "#b7d9b1")
|
||||||
|
|
||||||
|
(bg-yellow-intense "#ffd879")
|
||||||
|
(bg-yellow-subtle "#ffbf66")
|
||||||
|
|
||||||
|
(bg-blue-intense "#83d2e1")
|
||||||
|
(bg-blue-subtle "#81c0bb")
|
||||||
|
|
||||||
|
(bg-magenta-intense "#ff7afc")
|
||||||
|
(bg-magenta-subtle "#fb9eff")
|
||||||
|
|
||||||
|
(bg-cyan-intense "#f29dcd")
|
||||||
|
(bg-cyan-subtle "#c06537")
|
||||||
|
|
||||||
|
;;; Diffs
|
||||||
|
|
||||||
|
(bg-added "#00381f")
|
||||||
|
(bg-added-faint "#002910")
|
||||||
|
(bg-added-refine "#034f2f")
|
||||||
|
(fg-added "#a0e0a0")
|
||||||
|
|
||||||
|
(bg-changed "#363300")
|
||||||
|
(bg-changed-faint "#2a1f00")
|
||||||
|
(bg-changed-refine "#4a4a00")
|
||||||
|
(fg-changed "#efef80")
|
||||||
|
|
||||||
|
(bg-removed "#4f1119")
|
||||||
|
(bg-removed-faint "#380a0f")
|
||||||
|
(bg-removed-refine "#781a1f")
|
||||||
|
(fg-removed "#ffbfbf")
|
||||||
|
|
||||||
|
;;; Graphs
|
||||||
|
|
||||||
|
(bg-graph-red-0 "#b52c2c")
|
||||||
|
(bg-graph-red-1 "#702020")
|
||||||
|
(bg-graph-green-0 "#0fed00")
|
||||||
|
(bg-graph-green-1 "#007800")
|
||||||
|
(bg-graph-yellow-0 "#f1e00a")
|
||||||
|
(bg-graph-yellow-1 "#b08940")
|
||||||
|
(bg-graph-blue-0 "#2fafef")
|
||||||
|
(bg-graph-blue-1 "#1f2f8f")
|
||||||
|
(bg-graph-magenta-0 "#bf94fe")
|
||||||
|
(bg-graph-magenta-1 "#5f509f")
|
||||||
|
(bg-graph-cyan-0 "#a4877a")
|
||||||
|
(bg-graph-cyan-1 "#611300")
|
||||||
|
|
||||||
|
;;; Special hues
|
||||||
|
|
||||||
|
(bg-mode-line "#8d7391")
|
||||||
|
(fg-mode-line "#fcfcfa")
|
||||||
|
(bg-completion "#5b595c")
|
||||||
|
(bg-hover "#939293")
|
||||||
|
(bg-hover-secondary "#5b595c")
|
||||||
|
(bg-hl-line "#403341")
|
||||||
|
(bg-region "#403e41")
|
||||||
|
(bg-paren "#1f2f3f")
|
||||||
|
(bg-err "#360d09") ; check with err
|
||||||
|
(bg-warning "#332600") ; check with warning
|
||||||
|
(bg-info "#002c12") ; check with info
|
||||||
|
|
||||||
|
(border "#4f4f5f")
|
||||||
|
(cursor "#ff76ff")
|
||||||
|
(fg-intense "#ffffff")
|
||||||
|
|
||||||
|
(modeline-err "#ff80af")
|
||||||
|
(modeline-warning "#dfcf33")
|
||||||
|
(modeline-info "#2fc82f")
|
||||||
|
|
||||||
|
(underline-err "#df2f2f")
|
||||||
|
(underline-warning "#c0b000")
|
||||||
|
(underline-info "#22b022")
|
||||||
|
|
||||||
|
(bg-char-0 "#0050af")
|
||||||
|
(bg-char-1 "#7f1f7f")
|
||||||
|
(bg-char-2 "#625a00")
|
||||||
|
|
||||||
|
;;; Conditional hues
|
||||||
|
|
||||||
|
(bg-region-intense "#434443")
|
||||||
|
(fg-region unspecified)
|
||||||
|
|
||||||
|
;;; Mappings
|
||||||
|
|
||||||
|
;;;; General mappings
|
||||||
|
|
||||||
|
(bg-fringe bg-main)
|
||||||
|
(fg-fringe fg-main)
|
||||||
|
|
||||||
|
(err red-warmer)
|
||||||
|
(warning yellow)
|
||||||
|
(info green)
|
||||||
|
|
||||||
|
(link cyan)
|
||||||
|
(link-alt magenta)
|
||||||
|
(name blue-warmer)
|
||||||
|
(keybind blue-cooler)
|
||||||
|
(identifier magenta-faint)
|
||||||
|
(prompt green-cooler)
|
||||||
|
|
||||||
|
;;;; Code mappings
|
||||||
|
|
||||||
|
(builtin magenta)
|
||||||
|
(comment yellow-cooler)
|
||||||
|
(constant magenta-warmer)
|
||||||
|
(fnname yellow-cooler)
|
||||||
|
(keyword red-warmer)
|
||||||
|
(preprocessor magenta-cooler)
|
||||||
|
(docstring cyan-faint)
|
||||||
|
(string yellow)
|
||||||
|
(type blue-cooler)
|
||||||
|
(variable green)
|
||||||
|
(rx-escape green-warmer) ; compare with `string'
|
||||||
|
(rx-construct red)
|
||||||
|
|
||||||
|
;;;; Accent mappings
|
||||||
|
|
||||||
|
(accent-0 blue)
|
||||||
|
(accent-1 magenta-warmer)
|
||||||
|
(accent-2 green-cooler)
|
||||||
|
(accent-3 red)
|
||||||
|
|
||||||
|
;;;; Date mappings
|
||||||
|
|
||||||
|
(date-common green-cooler)
|
||||||
|
(date-deadline red-warmer)
|
||||||
|
(date-event fg-alt)
|
||||||
|
(date-holiday magenta)
|
||||||
|
(date-now fg-main)
|
||||||
|
(date-range fg-alt)
|
||||||
|
(date-scheduled yellow)
|
||||||
|
(date-weekday cyan)
|
||||||
|
(date-weekend red-faint)
|
||||||
|
|
||||||
|
;;;; Prose mappings
|
||||||
|
|
||||||
|
(prose-code magenta-warmer)
|
||||||
|
(prose-done green)
|
||||||
|
(prose-macro green-cooler)
|
||||||
|
(prose-metadata fg-dim)
|
||||||
|
(prose-metadata-value fg-alt)
|
||||||
|
(prose-table fg-alt)
|
||||||
|
(prose-table-formula err)
|
||||||
|
(prose-tag yellow-faint)
|
||||||
|
(prose-todo red-warmer)
|
||||||
|
(prose-verbatim blue)
|
||||||
|
|
||||||
|
;;;; Mail mappings
|
||||||
|
|
||||||
|
(mail-cite-0 blue)
|
||||||
|
(mail-cite-1 magenta-warmer)
|
||||||
|
(mail-cite-2 green-cooler)
|
||||||
|
(mail-cite-3 yellow-cooler)
|
||||||
|
(mail-part magenta-faint)
|
||||||
|
(mail-recipient blue-warmer)
|
||||||
|
(mail-subject blue-cooler)
|
||||||
|
(mail-other cyan)
|
||||||
|
|
||||||
|
;;;; Search mappings
|
||||||
|
(bg-search-match bg-warning)
|
||||||
|
(bg-search-current bg-yellow-intense)
|
||||||
|
(bg-search-lazy bg-blue-intense)
|
||||||
|
(bg-search-replace bg-red-intense)
|
||||||
|
|
||||||
|
(bg-search-rx-group-0 bg-magenta-intense)
|
||||||
|
(bg-search-rx-group-1 bg-green-intense)
|
||||||
|
(bg-search-rx-group-2 bg-red-subtle)
|
||||||
|
(bg-search-rx-group-3 bg-cyan-subtle)
|
||||||
|
|
||||||
|
;;;; Space mappings
|
||||||
|
|
||||||
|
(bg-space unspecified)
|
||||||
|
(fg-space border)
|
||||||
|
(bg-space-err bg-yellow-intense)
|
||||||
|
|
||||||
|
;;;; Tab mappings
|
||||||
|
|
||||||
|
(bg-tab-bar bg-alt)
|
||||||
|
(bg-tab-current bg-main)
|
||||||
|
(bg-tab-other bg-active)
|
||||||
|
|
||||||
|
;;;; Terminal mappings
|
||||||
|
|
||||||
|
(bg-term-black "black")
|
||||||
|
(fg-term-black "black")
|
||||||
|
(bg-term-black-bright "gray35")
|
||||||
|
(fg-term-black-bright "gray35")
|
||||||
|
|
||||||
|
(bg-term-red red-cooler)
|
||||||
|
(fg-term-red red-cooler)
|
||||||
|
(bg-term-red-bright red-warmer)
|
||||||
|
(fg-term-red-bright red-warmer)
|
||||||
|
|
||||||
|
(bg-term-green green)
|
||||||
|
(fg-term-green green)
|
||||||
|
(bg-term-green-bright green-warmer)
|
||||||
|
(fg-term-green-bright green-warmer)
|
||||||
|
|
||||||
|
(bg-term-yellow yellow)
|
||||||
|
(fg-term-yellow yellow)
|
||||||
|
(bg-term-yellow-bright yellow-warmer)
|
||||||
|
(fg-term-yellow-bright yellow-warmer)
|
||||||
|
|
||||||
|
(bg-term-blue blue-warmer)
|
||||||
|
(fg-term-blue blue-warmer)
|
||||||
|
(bg-term-blue-bright blue-cooler)
|
||||||
|
(fg-term-blue-bright blue-cooler)
|
||||||
|
|
||||||
|
(bg-term-magenta magenta)
|
||||||
|
(fg-term-magenta magenta)
|
||||||
|
(bg-term-magenta-bright magenta-cooler)
|
||||||
|
(fg-term-magenta-bright magenta-cooler)
|
||||||
|
|
||||||
|
(bg-term-cyan cyan)
|
||||||
|
(fg-term-cyan cyan)
|
||||||
|
(bg-term-cyan-bright cyan-cooler)
|
||||||
|
(fg-term-cyan-bright cyan-cooler)
|
||||||
|
|
||||||
|
(bg-term-white "gray65")
|
||||||
|
(fg-term-white "gray65")
|
||||||
|
(bg-term-white-bright "white")
|
||||||
|
(fg-term-white-bright "white")
|
||||||
|
|
||||||
|
;;;; Rainbow mappings
|
||||||
|
|
||||||
|
(rainbow-0 green-cooler)
|
||||||
|
(rainbow-1 blue)
|
||||||
|
(rainbow-2 magenta-warmer)
|
||||||
|
(rainbow-3 cyan-cooler)
|
||||||
|
(rainbow-4 yellow-cooler)
|
||||||
|
(rainbow-5 magenta-cooler)
|
||||||
|
(rainbow-6 red-cooler)
|
||||||
|
(rainbow-7 green-warmer)
|
||||||
|
(rainbow-8 yellow))
|
||||||
|
"The `ef-monokai-pro' palette.
|
||||||
|
Color values have the form (COLOR-NAME HEX-VALUE) with the former
|
||||||
|
as a symbol and the latter as a string.
|
||||||
|
|
||||||
|
Semantic color mappings have the form (MAPPING-NAME COLOR-NAME)
|
||||||
|
with both as symbols. The latter is a color that already exists
|
||||||
|
in the palette and is associated with a HEX-VALUE.")
|
||||||
|
|
||||||
|
(defcustom ef-monokai-pro-palette-overrides nil
|
||||||
|
"Overrides for `ef-monokai-pro-palette'.
|
||||||
|
|
||||||
|
Mirror the elements of the aforementioned palette, overriding
|
||||||
|
their value.
|
||||||
|
|
||||||
|
For overrides that are shared across all of the Ef themes,
|
||||||
|
refer to `ef-themes-common-palette-overrides'.
|
||||||
|
|
||||||
|
To preview the palette entries, use `ef-themes-preview-colors' or
|
||||||
|
`ef-themes-preview-colors-current' (read the documentation for
|
||||||
|
further details)."
|
||||||
|
:group 'ef-themes
|
||||||
|
:package-version '(ef-themes . "1.0.0")
|
||||||
|
:type '(repeat (list symbol (choice symbol string)))
|
||||||
|
:link '(info-link "(ef-themes) Palette overrides"))
|
||||||
|
|
||||||
|
(ef-themes-theme ef-monokai-pro ef-monokai-pro-palette ef-monokai-pro-palette-overrides)
|
||||||
|
|
||||||
|
(provide-theme 'ef-monokai-pro))
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
TERM=xterm-256color
|
||||||
|
npm_config_prefix=$HOME/.local
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
set -g fish_color_valid_path
|
||||||
|
|
||||||
|
if status is-interactive
|
||||||
|
|
||||||
|
# theme
|
||||||
|
# set -g theme_color_scheme terminal-dark
|
||||||
|
set -g fish_prompt_pwd_dir_length 1
|
||||||
|
set -g theme_display_user yes
|
||||||
|
set -g theme_hide_hostname no
|
||||||
|
set -g theme_hostname always
|
||||||
|
|
||||||
|
fish_config prompt choose default
|
||||||
|
fish_hybrid_key_bindings
|
||||||
|
|
||||||
|
fish_add_path "$HOME/.local/bin"
|
||||||
|
fish_add_path "$HOME/.cargo/bin"
|
||||||
|
|
||||||
|
set -gx npm_config_prefix "$HOME/.local"
|
||||||
|
|
||||||
|
# fish_config theme choose "kanagawa"
|
||||||
|
# fish_config theme choose "Dracula"
|
||||||
|
# Commands to run in interactive sessions can go here
|
||||||
|
alias ll="exa -l -g --icons"
|
||||||
|
alias ls="exa -al --color=always --group-directories-first"
|
||||||
|
alias oo="cd ~/Documents/nca-notes/"
|
||||||
|
alias on="nvim +Obsidian new"
|
||||||
|
alias os="nvim +Obsidian search"
|
||||||
|
alias cat="bat"
|
||||||
|
alias g=git
|
||||||
|
|
||||||
|
command -qv nmcli && alias nmlist "nmcli device wifi list"
|
||||||
|
command -qv tree && alias tree "tree -L 3 -a -I '.git' --charset X "
|
||||||
|
command -qv tree && alias dtree "tree -L 3 -a -d -I '.git' --charset X "
|
||||||
|
|
||||||
|
command -qv wl-copy && alias cwd "wl-copy \$(pwd)"
|
||||||
|
command -qv wl-copy && alias copy-cmd "wl-copy \$(echo \$history[1])"
|
||||||
|
|
||||||
|
command -qv fabric-ai && alias ai="fabric-ai -p \$(fabric-ai -l | fzf)"
|
||||||
|
command -qv xdg-open && alias o="xdg-open"
|
||||||
|
|
||||||
|
command -qv lazygit && alias lg lazygit
|
||||||
|
|
||||||
|
command -qv vi && alias v vi && set -gx EDITOR vi
|
||||||
|
command -qv vim && alias vi vim && alias v vim && set -gx EDITOR vim
|
||||||
|
command -qv nvim && alias vim nvim && alias vi nvim && alias v nvim && set -gx EDITOR nvim
|
||||||
|
command -qv nvim && alias mini "NVIM_APPNAME=mini.nvim nvim"
|
||||||
|
|
||||||
|
command -qv jj && alias rev "jj log -G -T 'commit_id.short(8)'"
|
||||||
|
|
||||||
|
set -gx VISUAL $EDITOR
|
||||||
|
|
||||||
|
if test -x /usr/bin/mise;
|
||||||
|
/usr/bin/mise activate fish | source
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -x /usr/bin/direnv;
|
||||||
|
/usr/bin/direnv hook fish | source
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -x /usr/bin/zoxide;
|
||||||
|
/usr/bin/zoxide init fish | source
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -x /usr/bin/fzf;
|
||||||
|
/usr/bin/fzf --fish | source
|
||||||
|
#set -gx FZF_CTRL_T_OPTS "--preview 'bat --color=always -n --line-range :500 {}'"
|
||||||
|
#set -gx FZF_ALT_C_OPTS "--preview 'eza --icons=always --color=always {} | head -200'"
|
||||||
|
end
|
||||||
|
|
||||||
|
if test -x /usr/bin/jj;
|
||||||
|
/usr/bin/jj util completion fish | source
|
||||||
|
end
|
||||||
|
|
||||||
|
# NVM
|
||||||
|
function __check_nvm --on-variable PWD --description 'Do nvm stuff'
|
||||||
|
status --is-command-substitution; and return
|
||||||
|
|
||||||
|
if test -f .nvmrc; and test -r .nvmrc;
|
||||||
|
nvm use
|
||||||
|
else
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!-- created by lxqt-config-appearance (DO NOT EDIT!) -->
|
||||||
|
<fontconfig>
|
||||||
|
<match target="font">
|
||||||
|
<test name="family" compare="eq" ignore-blanks="false">
|
||||||
|
<string>Monaspace Neon</string>
|
||||||
|
</test>
|
||||||
|
<edit name="fontfeatures" mode="assign_replace">
|
||||||
|
<string>calt on</string>
|
||||||
|
<string>dlig on</string>
|
||||||
|
<string>ss01 on</string>
|
||||||
|
<string>ss02 on</string>
|
||||||
|
<string>ss03 on</string>
|
||||||
|
<string>ss04 on</string>
|
||||||
|
<string>ss05 on</string>
|
||||||
|
<string>ss06 on</string>
|
||||||
|
<string>ss07 on</string>
|
||||||
|
<string>ss08 on</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
</fontconfig>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!-- created by lxqt-config-appearance (DO NOT EDIT!) -->
|
||||||
|
<fontconfig>
|
||||||
|
<match target="font">
|
||||||
|
<test name="family" compare="eq" ignore-blanks="false">
|
||||||
|
<string>Monaspace Radon</string>
|
||||||
|
</test>
|
||||||
|
<edit name="fontfeatures" mode="assign_replace">
|
||||||
|
<string>calt on</string>
|
||||||
|
<string>dlig on</string>
|
||||||
|
<string>ss01 on</string>
|
||||||
|
<string>ss02 on</string>
|
||||||
|
<string>ss03 on</string>
|
||||||
|
<string>ss04 on</string>
|
||||||
|
<string>ss05 on</string>
|
||||||
|
<string>ss06 on</string>
|
||||||
|
<string>ss07 on</string>
|
||||||
|
<string>ss08 on</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
</fontconfig>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!-- created by lxqt-config-appearance (DO NOT EDIT!) -->
|
||||||
|
<fontconfig>
|
||||||
|
<match target="font">
|
||||||
|
<test name="family" compare="eq" ignore-blanks="false">
|
||||||
|
<string>Monaspace Xenon</string>
|
||||||
|
</test>
|
||||||
|
<edit name="fontfeatures" mode="assign_replace">
|
||||||
|
<string>calt on</string>
|
||||||
|
<string>dlig on</string>
|
||||||
|
<string>ss01 on</string>
|
||||||
|
<string>ss02 on</string>
|
||||||
|
<string>ss03 on</string>
|
||||||
|
<string>ss04 on</string>
|
||||||
|
<string>ss05 on</string>
|
||||||
|
<string>ss06 on</string>
|
||||||
|
<string>ss07 on</string>
|
||||||
|
<string>ss08 on</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
</fontconfig>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!-- created by lxqt-config-appearance (DO NOT EDIT!) -->
|
||||||
|
<fontconfig>
|
||||||
|
<match target="font">
|
||||||
|
<test name="family" compare="eq" ignore-blanks="false">
|
||||||
|
<string>MonaspiceNe Nerd Font</string>
|
||||||
|
</test>
|
||||||
|
<edit name="fontfeatures" mode="assign_replace">
|
||||||
|
<string>calt on</string>
|
||||||
|
<string>dlig on</string>
|
||||||
|
<string>ss01 on</string>
|
||||||
|
<string>ss02 on</string>
|
||||||
|
<string>ss03 on</string>
|
||||||
|
<string>ss04 on</string>
|
||||||
|
<string>ss05 on</string>
|
||||||
|
<string>ss06 on</string>
|
||||||
|
<string>ss07 on</string>
|
||||||
|
<string>ss08 on</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
</fontconfig>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!-- created by lxqt-config-appearance (DO NOT EDIT!) -->
|
||||||
|
<fontconfig>
|
||||||
|
<match target="font">
|
||||||
|
<test name="family" compare="eq" ignore-blanks="false">
|
||||||
|
<string>MonaspiceRn Nerd Font</string>
|
||||||
|
</test>
|
||||||
|
<edit name="fontfeatures" mode="assign_replace">
|
||||||
|
<string>calt on</string>
|
||||||
|
<string>dlig on</string>
|
||||||
|
<string>ss01 on</string>
|
||||||
|
<string>ss02 on</string>
|
||||||
|
<string>ss03 on</string>
|
||||||
|
<string>ss04 on</string>
|
||||||
|
<string>ss05 on</string>
|
||||||
|
<string>ss06 on</string>
|
||||||
|
<string>ss07 on</string>
|
||||||
|
<string>ss08 on</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
</fontconfig>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
|
||||||
|
<!-- created by lxqt-config-appearance (DO NOT EDIT!) -->
|
||||||
|
<fontconfig>
|
||||||
|
<match target="font">
|
||||||
|
<test name="family" compare="eq" ignore-blanks="false">
|
||||||
|
<string>MonaspiceXe Nerd Font</string>
|
||||||
|
</test>
|
||||||
|
<edit name="fontfeatures" mode="assign_replace">
|
||||||
|
<string>calt on</string>
|
||||||
|
<string>dlig on</string>
|
||||||
|
<string>ss01 on</string>
|
||||||
|
<string>ss02 on</string>
|
||||||
|
<string>ss03 on</string>
|
||||||
|
<string>ss04 on</string>
|
||||||
|
<string>ss05 on</string>
|
||||||
|
<string>ss06 on</string>
|
||||||
|
<string>ss07 on</string>
|
||||||
|
<string>ss08 on</string>
|
||||||
|
</edit>
|
||||||
|
</match>
|
||||||
|
</fontconfig>
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
#source /usr/share/pwndbg/gdbinit.py
|
||||||
|
source /usr/share/gef/gef.py
|
||||||
|
|
||||||
|
set debuginfod enabled on
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
window-decoration = false
|
||||||
|
gtk-titlebar = false
|
||||||
|
config-file = "theme"
|
||||||
|
font-family = "TX-02"
|
||||||
|
font-family-bold = "TX-02 Bold"
|
||||||
|
font-family-italic = "TX-02 Oblique"
|
||||||
|
font-size = 13
|
||||||
|
#adjust-cell-width = -7%
|
||||||
|
adjust-cell-height = 5%
|
||||||
|
font-size = 13
|
||||||
|
#background-opacity = 0.90
|
||||||
|
#background-blur-radius = 20
|
||||||
|
confirm-close-surface = false
|
||||||
|
font-feature = +calt
|
||||||
|
quit-after-last-window-closed = true
|
||||||
|
quit-after-last-window-closed-delay = 5m
|
||||||
|
|
||||||
|
keybind = ctrl+c=unbind
|
||||||
|
keybind = ctrl+comma=unbind
|
||||||
|
keybind = ctrl+space=unbind
|
||||||
@@ -0,0 +1,189 @@
|
|||||||
|
[include]
|
||||||
|
path = ~/.config/git/local
|
||||||
|
|
||||||
|
[pull]
|
||||||
|
rebase = true
|
||||||
|
|
||||||
|
[init]
|
||||||
|
defaultBranch = master
|
||||||
|
|
||||||
|
[column]
|
||||||
|
ui = auto
|
||||||
|
|
||||||
|
[branch]
|
||||||
|
autosetupmerge = true
|
||||||
|
|
||||||
|
[tag]
|
||||||
|
sort = version:refname
|
||||||
|
|
||||||
|
[diff]
|
||||||
|
algorithm = histogram
|
||||||
|
colorMoved = plain
|
||||||
|
mnemonicPrefix = true
|
||||||
|
renames = true
|
||||||
|
|
||||||
|
[push]
|
||||||
|
default = tracking
|
||||||
|
autoSetupRemote = true
|
||||||
|
followTags = true
|
||||||
|
|
||||||
|
[fetch]
|
||||||
|
prune = true
|
||||||
|
pruneTags = true
|
||||||
|
all = true
|
||||||
|
|
||||||
|
[commit]
|
||||||
|
# gpgsign = true
|
||||||
|
|
||||||
|
[help]
|
||||||
|
autocorrect = prompt
|
||||||
|
|
||||||
|
[rerere]
|
||||||
|
enabled = true
|
||||||
|
autoupdate = true
|
||||||
|
|
||||||
|
[rebase]
|
||||||
|
autoSquash = true
|
||||||
|
autoStash = true
|
||||||
|
|
||||||
|
[format]
|
||||||
|
pretty = format:%C(blue)%ad%Creset %C(yellow)%h%C(green)%d%Creset %C(blue)%s %C(magenta) [%an]%Creset
|
||||||
|
|
||||||
|
[mergetool]
|
||||||
|
layout = BASE,MERGED + BASE,LOCAL + BASE,REMOTE
|
||||||
|
|
||||||
|
[merge]
|
||||||
|
conflictStyle = diff3
|
||||||
|
summary = true
|
||||||
|
verbosity = 1
|
||||||
|
tool = nvimdiff
|
||||||
|
|
||||||
|
[apply]
|
||||||
|
whitespace = nowarn
|
||||||
|
|
||||||
|
[core]
|
||||||
|
excludesfile = ~/.config/git/gitignore
|
||||||
|
autocrlf = false
|
||||||
|
whitespace=fix,-indent-with-non-tab,trailing-space,cr-at-eol
|
||||||
|
|
||||||
|
[advice]
|
||||||
|
statusHints = false
|
||||||
|
|
||||||
|
[url "git@github.com:"]
|
||||||
|
insteadOf = "gh:"
|
||||||
|
pushInsteadOf = "github:"
|
||||||
|
pushInsteadOf = "git://github.com/"
|
||||||
|
|
||||||
|
[url "git://github.com/"]
|
||||||
|
insteadOf = "github:"
|
||||||
|
|
||||||
|
[url "git@gist.github.com:"]
|
||||||
|
insteadOf = "gst:"
|
||||||
|
pushInsteadOf = "gist:"
|
||||||
|
pushInsteadOf = "git://gist.github.com/"
|
||||||
|
|
||||||
|
[alias]
|
||||||
|
|
||||||
|
# annex
|
||||||
|
xl = annex list
|
||||||
|
xg = annex list
|
||||||
|
|
||||||
|
# add
|
||||||
|
a = add
|
||||||
|
padd = add --patch
|
||||||
|
|
||||||
|
# branch
|
||||||
|
b = branch -v
|
||||||
|
br = branch
|
||||||
|
branches = branch -a
|
||||||
|
|
||||||
|
#switch
|
||||||
|
sw = switch
|
||||||
|
|
||||||
|
# commit
|
||||||
|
c = commit -m
|
||||||
|
ca = commit -am
|
||||||
|
ci = commit
|
||||||
|
cam = commit --amend
|
||||||
|
cama = commit --amend -a
|
||||||
|
|
||||||
|
# clean
|
||||||
|
cl = clean
|
||||||
|
cldf = clean -df
|
||||||
|
|
||||||
|
# checkout
|
||||||
|
co = checkout
|
||||||
|
nb = checkout -b
|
||||||
|
|
||||||
|
# cherry-pick
|
||||||
|
cp = cherry-pick -x # grab a change from a branch
|
||||||
|
|
||||||
|
# diff
|
||||||
|
d = diff
|
||||||
|
dc = diff --cached
|
||||||
|
last = diff HEAD^
|
||||||
|
|
||||||
|
# log
|
||||||
|
l = log --graph --date=short
|
||||||
|
wu = log -p origin..@{0}
|
||||||
|
changes = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\" --name-status
|
||||||
|
short = log --pretty=format:\"%h %cr %cn %Cgreen%s%Creset\"
|
||||||
|
changelog = log --pretty=format:\" * %s\"
|
||||||
|
shortnocolor = log --pretty=format:\"%h %cr %cn %s\"
|
||||||
|
lg = log --pretty=format:'%Cred%h%Creset - %C(blue bold)[%ad] %Creset%C(yellow)%d %Creset%s %C(green bold)<%an>%Creset' --abbrev-commit --date=short
|
||||||
|
llg = log --pretty=format:'%Cred%h%Creset - %C(blue bold)[%ad] %Creset%C(yellow)%d %Creset%s %C(green bold)<%an>%Creset' --abbrev-commit --date=short --graph
|
||||||
|
lls = git log --pretty=format:"[%h] %ae, %ar: %s" --stat
|
||||||
|
filelog = log -u
|
||||||
|
lc = log ORIG_HEAD.. --stat --no-merges
|
||||||
|
|
||||||
|
# rebase
|
||||||
|
rc = rebase --continue
|
||||||
|
rs = rebase --skip
|
||||||
|
|
||||||
|
# remote
|
||||||
|
r = remote -v
|
||||||
|
|
||||||
|
# reset
|
||||||
|
res = reset
|
||||||
|
unstage = reset -q HEAD --
|
||||||
|
discard = checkout --
|
||||||
|
uncommit = reset --mixed HEAD~
|
||||||
|
undo = reset --hard
|
||||||
|
|
||||||
|
# diff
|
||||||
|
df = diff --summary
|
||||||
|
staged = diff --cached
|
||||||
|
diffstat = diff --stat
|
||||||
|
changes = diff --name-status -r
|
||||||
|
|
||||||
|
# stash
|
||||||
|
stashes = stash list
|
||||||
|
ss = stash
|
||||||
|
sl = stash list
|
||||||
|
sa = stash apply
|
||||||
|
sd = stash drop
|
||||||
|
|
||||||
|
# status
|
||||||
|
s = status
|
||||||
|
st = status -s
|
||||||
|
|
||||||
|
# tag
|
||||||
|
t = tag -n
|
||||||
|
|
||||||
|
# merge
|
||||||
|
mt = mergetool
|
||||||
|
dt = difftools
|
||||||
|
|
||||||
|
rv = review
|
||||||
|
ls = ls-files
|
||||||
|
gconf = config --global
|
||||||
|
|
||||||
|
c = clone --recursive
|
||||||
|
bc = clone --bare
|
||||||
|
|
||||||
|
# worktree
|
||||||
|
wta = worktree add
|
||||||
|
wtl = worktree list
|
||||||
|
wtr = worktree remove
|
||||||
|
|
||||||
|
ignore = "!gi() { curl -sL https://www.toptal.com/developers/gitignore/api/$@ ;}; gi"
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
general {
|
||||||
|
lock_cmd = pidof hyprlock || hyprlock
|
||||||
|
# unlock_cmd = loginctl unlock-session
|
||||||
|
before_sleep_cmd = loginctl lock-session
|
||||||
|
after_sleep_cmd = hyprctl displatch dpms on
|
||||||
|
}
|
||||||
|
|
||||||
|
# turn off keyboard backlight, comment out this section if you dont have a keyboard backlight.
|
||||||
|
listener {
|
||||||
|
timeout = 150 # 2.5min.
|
||||||
|
on-timeout = brightnessctl -sd rgb:kbd_backlight set 0 # turn off keyboard backlight.
|
||||||
|
on-resume = brightnessctl -rd rgb:kbd_backlight # turn on keyboard backlight.
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 300
|
||||||
|
on-timeout = brightnessctl -s set 10
|
||||||
|
on-resume = brightnessctl -r
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 600
|
||||||
|
on-timeout = loginctl lock-session
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 630
|
||||||
|
on-timeout = hyprctl dispatch dpms off
|
||||||
|
on-resume = hyprctl dispatch dpms on
|
||||||
|
}
|
||||||
@@ -0,0 +1,488 @@
|
|||||||
|
monitor = desc:Lenovo Group Limited 0x41A0, preferred, 0x0, 1.0
|
||||||
|
monitor = desc:LG Electronics LG HDR 4K 406NTZN74597, preferred, auto-left, 1.333333
|
||||||
|
monitor = desc:GWD ARZOPA 000000000000, preferred, auto-left, 1.0
|
||||||
|
monitor = desc:Proteon TYPE-C 8R33926O00QS, preferred, auto-right, 1.0
|
||||||
|
#monitor = desc:LG Electronics LG HDR WQHD 0x0006530C, 3440x1440@75.05, auto-up, 1.0
|
||||||
|
monitor = desc:LG Electronics LG HDR WQHD 0x0006530C, preferred, auto-up, 1.0
|
||||||
|
#monitor = desc:LG Electronics LG HDR WQHD 0x0006530C, preferred, 0x0, 1.0
|
||||||
|
#monitor = desc:Ancor Communications Inc ASUS MG28U 0x00009B77, 3840x2160@60.00, auto-left, 1.333333
|
||||||
|
monitor = desc:Ancor Communications Inc ASUS MG28U 0x00009B77, preferred, auto-left, 1.333333
|
||||||
|
monitor = desc:Stargate Technology TYPE-C, preferred, auto-right, 1.0
|
||||||
|
|
||||||
|
monitor = desc:BNQ BenQ EX3501R N4M05650019, preferred, auto-right, 1.0
|
||||||
|
monitor = desc:Dell Inc. DELL U3818DW 97F8P8AD0HEL, preferred, auto-left, 1.0
|
||||||
|
monitor = desc:Microstep MSI MAG342CQR DB6H252300057, preferred, auto-right, 1.0
|
||||||
|
monitor = desc:Ancor Communications Inc ASUS PB238 DCLMTF074371, preferred, auto, 1.0
|
||||||
|
monitor = eDP-1, highrr, 0x0, 1.0
|
||||||
|
monitor = desc:BNQ BenQ EX3203R 7CL00509019, preferred, auto, 1.0
|
||||||
|
monitor = desc:Lenovo Group Limited L15 U133R0A2, preferred, auto-left, 1.0
|
||||||
|
monitor = desc:Lenovo Group Limited M15 V30F2A15, preferred, auto-left, 1.0
|
||||||
|
|
||||||
|
$notifycmd = notify-send
|
||||||
|
$terminal = uwsm app -- ghostty
|
||||||
|
$browser = uwsm app -- firefox.desktop
|
||||||
|
$webapp = uwsm app -- chromium --new-window --ozone-platform=wayland --app
|
||||||
|
$music = uwsm app -- spotify.desktop
|
||||||
|
|
||||||
|
input {
|
||||||
|
kb_layout = us
|
||||||
|
kb_variant =
|
||||||
|
kb_model =
|
||||||
|
# kb_options = ctrl:nocaps
|
||||||
|
kb_options = caps:ctrl_modifier,compose:ralt
|
||||||
|
# kb_options = compose:ralt
|
||||||
|
follow_mouse = 1
|
||||||
|
repeat_rate = 40
|
||||||
|
repeat_delay = 600
|
||||||
|
|
||||||
|
touchpad {
|
||||||
|
natural_scroll = yes
|
||||||
|
disable_while_typing = true
|
||||||
|
clickfinger_behavior = true
|
||||||
|
scroll_factor = 0.7
|
||||||
|
}
|
||||||
|
scroll_method = 2
|
||||||
|
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
}
|
||||||
|
|
||||||
|
ecosystem {
|
||||||
|
no_update_news = true
|
||||||
|
}
|
||||||
|
|
||||||
|
general {
|
||||||
|
gaps_in = 0
|
||||||
|
gaps_out = 0
|
||||||
|
border_size = 2
|
||||||
|
allow_tearing = true
|
||||||
|
|
||||||
|
snap {
|
||||||
|
enabled = true
|
||||||
|
}
|
||||||
|
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
|
col.inactive_border = rgba(595959aa)
|
||||||
|
|
||||||
|
layout = dwindle
|
||||||
|
}
|
||||||
|
|
||||||
|
master {
|
||||||
|
allow_small_split = true
|
||||||
|
mfact = 0.50
|
||||||
|
new_status = master
|
||||||
|
}
|
||||||
|
|
||||||
|
dwindle {
|
||||||
|
pseudotile = yes
|
||||||
|
preserve_split = yes
|
||||||
|
smart_split = no
|
||||||
|
force_split = 2
|
||||||
|
# single_window_aspect_ratio = 1 1
|
||||||
|
}
|
||||||
|
|
||||||
|
decoration {
|
||||||
|
rounding = 3
|
||||||
|
active_opacity = 1.0
|
||||||
|
inactive_opacity = 1.0
|
||||||
|
dim_inactive = false
|
||||||
|
dim_special = 0.0
|
||||||
|
dim_strength = 0.2
|
||||||
|
|
||||||
|
shadow {
|
||||||
|
enabled = false
|
||||||
|
range = 2
|
||||||
|
render_power = 3
|
||||||
|
color = rgba(1a1a1aee)
|
||||||
|
}
|
||||||
|
|
||||||
|
blur {
|
||||||
|
enabled = false
|
||||||
|
size = 3
|
||||||
|
passes = 1
|
||||||
|
vibrancy = 0.1696
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
group {
|
||||||
|
groupbar {
|
||||||
|
enabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
misc {
|
||||||
|
disable_hyprland_logo = true
|
||||||
|
disable_splash_rendering = true
|
||||||
|
focus_on_activate = true
|
||||||
|
mouse_move_enables_dpms = true
|
||||||
|
animate_manual_resizes = true
|
||||||
|
mouse_move_focuses_monitor = true
|
||||||
|
enable_swallow = true
|
||||||
|
enable_anr_dialog = false
|
||||||
|
force_default_wallpaper = true
|
||||||
|
vfr = true
|
||||||
|
}
|
||||||
|
|
||||||
|
xwayland {
|
||||||
|
force_zero_scaling = true
|
||||||
|
}
|
||||||
|
|
||||||
|
animations {
|
||||||
|
enabled = yes
|
||||||
|
|
||||||
|
#animation = borderangle, 1, 50, linear, loop
|
||||||
|
|
||||||
|
bezier = generic, 0.05, 0.9, 0.1, 1.08
|
||||||
|
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||||
|
bezier = quick,0.15,0,0.1,1
|
||||||
|
|
||||||
|
animation = windows, 1, 3, almostLinear
|
||||||
|
animation = windowsOut, 1, 3, quick
|
||||||
|
animation = windowsIn, 1, 3, quick
|
||||||
|
animation = border, 1, 10, generic
|
||||||
|
animation = fade, 1, 3, almostLinear
|
||||||
|
animation = workspaces, 1, 1, quick
|
||||||
|
animation = layers, 1, 3, quick
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
bindd = SUPER, return, Tmux Terminal, exec, $terminal -e tmux new -A -s main
|
||||||
|
bindd = SUPER, B, Browser, exec, $browser
|
||||||
|
bindd = SUPER, T, Activity, exec, $terminal -e btop
|
||||||
|
bindd = SUPER, S, Finder, exec, uwsm app -- rofi -show recursivebrowser
|
||||||
|
bindd = SUPER, I, System Status, exec, $notifycmd "$(~/.local/bin/sysinfo)"
|
||||||
|
|
||||||
|
bindd = SUPER, slash, Password, exec, ROFI_PASS_BACKEND=wtype ROFI_PASS_CLIPBOARD_BACKEND=wl-clipboard ~/.local/bin/rofi-pass
|
||||||
|
bindd = SUPER, SPACE, App Launcher, exec, uwsm app -- rofi -show drun
|
||||||
|
#bindd = SUPER ALT, SPACE, Search Launcher, exec, uwsm app -- rofi -show combi
|
||||||
|
bind = SUPER SHIFT, SPACE, exec, uwsm app -- ~/.local/bin/hyprland-fetch-client
|
||||||
|
bind = SUPER CONTROL, SPACE, exec, uwsm app -- ~/.local/bin/hyprland-focus-client
|
||||||
|
bind = SUPER CONTROL, return, exec, uwsm app -- ~/.local/bin/hyprland-tmux-session
|
||||||
|
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, V, Volume, exec, pavucontrol
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, B, Bluetooth, exec, uwsm app blueberry
|
||||||
|
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, semicolon, Update wallpaper, exec, ~/.local/bin/bing-wallpaper
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, A, ChatGPT, exec, $webapp="https://chatgpt.com"
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, C, Calendar, exec, $webapp="https://outlook.office.com/calendar/view/month"
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, E, Email, exec, $webapp="https://outlook.office.com/mail"
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, U, UWO Team, exec, $webapp="https://teams.microsoft.com/v2/"
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, Y, YouTube, exec, $webapp="https://youtube.com/"
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, W, WhatsApp, exec, $webapp="https://web.whatsapp.com/"
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, G, Google, exec, $webapp="https://www.gmail.com/"
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, M, Music, exec, $music
|
||||||
|
bindd = SUPER CONTROL SHIFT ALT, F, File manager, exec, uwsm app -- pcmanfm
|
||||||
|
|
||||||
|
bindd = SUPER, F, Force full screen, fullscreen, 0
|
||||||
|
bindd = SUPER CTRL, F, Tiled full screen, fullscreenstate, 0 2
|
||||||
|
bindd = SUPER ALT, F, Full width, fullscreen, 1
|
||||||
|
|
||||||
|
bindd = SUPER, W, Close active window, killactive,
|
||||||
|
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
||||||
|
bindd = SUPER, V, Toggle floating, togglefloating,
|
||||||
|
bindd = SUPER, X, Toggle split, togglesplit, # dwindle
|
||||||
|
bindd = SUPER, A, Bring active to top, alterzorder, top
|
||||||
|
|
||||||
|
bindd = SUPER, left, Move focus left, movefocus, l
|
||||||
|
bindd = SUPER, right, Move focus right, movefocus, r
|
||||||
|
bindd = SUPER, up, Move focus up, movefocus, u
|
||||||
|
bindd = SUPER, down, Move focus down, movefocus, d
|
||||||
|
|
||||||
|
# Move focus with mainMod + arrow keys
|
||||||
|
bind = SUPER, H, movefocus, l
|
||||||
|
bind = SUPER, L, movefocus, r
|
||||||
|
bind = SUPER, K, movefocus, u
|
||||||
|
bind = SUPER, J, movefocus, d
|
||||||
|
|
||||||
|
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
|
||||||
|
bindd = SUPER SHIFT, left, Swap window to the left, swapwindow, l
|
||||||
|
bindd = SUPER SHIFT, right, Swap window to the right, swapwindow, r
|
||||||
|
bindd = SUPER SHIFT, up, Swap window up, swapwindow, u
|
||||||
|
bindd = SUPER SHIFT, down, Swap window down, swapwindow, d
|
||||||
|
|
||||||
|
# Move focus with mainMod + arrow keys
|
||||||
|
bind = SUPER SHIFT, H, swapwindow, l
|
||||||
|
bind = SUPER SHIFT, L, swapwindow, r
|
||||||
|
bind = SUPER SHIFT, K, swapwindow, u
|
||||||
|
bind = SUPER SHIFT, J, swapwindow, d
|
||||||
|
|
||||||
|
# Monitor and windows
|
||||||
|
bind = SUPER SHIFT, period, movewindow, mon:+1
|
||||||
|
bind = SUPER SHIFT, comma, movewindow, mon:-1
|
||||||
|
bind = SUPER CONTROL, period, movecurrentworkspacetomonitor, +1
|
||||||
|
bind = SUPER CONTROL, comma, movecurrentworkspacetomonitor, -1
|
||||||
|
|
||||||
|
bindd = SUPER, z, Focus on last, focuscurrentorlast
|
||||||
|
|
||||||
|
# Move focus with SUPER + arrow keys
|
||||||
|
bind = SUPER ALT, period, swapnext
|
||||||
|
bind = SUPER ALT, comma, swapnext, prev
|
||||||
|
|
||||||
|
# Cycle through applications on active workspace
|
||||||
|
bindd = ALT, Tab, Cycle to next window, cyclenext
|
||||||
|
bindd = ALT, Tab, Reveal active window on top, alterzorder, top
|
||||||
|
|
||||||
|
bind = SUPER ALT, Tab, focusworkspaceoncurrentmonitor, previous
|
||||||
|
|
||||||
|
# cycle monitors
|
||||||
|
bind = SUPER, Tab, focusmonitor, +1
|
||||||
|
bind = SUPER, Tab, exec, $notifycmd "$(~/.local/bin/active-workspace)"
|
||||||
|
|
||||||
|
# arrange split ratio
|
||||||
|
bind = SUPER, minus, splitratio, -0.2
|
||||||
|
bind = SUPER SHIFT, equal, splitratio, +0.2
|
||||||
|
bind = SUPER, equal, splitratio, exact 1.0
|
||||||
|
bind = SUPER, period, splitratio, exact 0.7
|
||||||
|
bind = SUPER, comma, splitratio, exact 1.30
|
||||||
|
|
||||||
|
bind = SUPER, M, layoutmsg, swapsplit
|
||||||
|
# bind = SUPER, M, layoutmsg, rollnext
|
||||||
|
|
||||||
|
# Change Workspace Mode
|
||||||
|
bind = SUPER SHIFT, X, workspaceopt, allfloat
|
||||||
|
bind = SUPER SHIFT, X, exec, $notifycmd "Toggled All Float Mode"
|
||||||
|
|
||||||
|
bind = SUPER SHIFT, Z, workspaceopt, allpseudo
|
||||||
|
bind = SUPER SHIFT, Z, exec, $notifycmd "Toggled All Pseudo Mode"
|
||||||
|
|
||||||
|
bind = SUPER, semicolon, togglespecialworkspace
|
||||||
|
bind = SUPER, semicolon, exec, $notifycmd "Toggled Special Workspace"
|
||||||
|
|
||||||
|
bind = SUPER SHIFT, semicolon, movetoworkspacesilent, special
|
||||||
|
bind = SUPER, C, centerwindow
|
||||||
|
|
||||||
|
bind = SUPER SHIFT CONTROL ALT, Z, submap,passthru
|
||||||
|
submap = passthru
|
||||||
|
bind = SUPER, Escape,submap,reset
|
||||||
|
submap = reset
|
||||||
|
|
||||||
|
bind = SUPER, Escape, exec, loginctl lock-session
|
||||||
|
bind = SUPER SHIFT, Escape, exec, systemctl suspend
|
||||||
|
bind = SUPER ALT, Escape, exec, uwsm stop,
|
||||||
|
bind = SUPER CTRL, Escape, exec, reboot
|
||||||
|
bind = SUPER SHIFT CTRL, Escape, exec, systemctl poweroff
|
||||||
|
|
||||||
|
bind = SUPER, Y, exec, makoctl dismiss
|
||||||
|
bind = SUPER, F10, exec, $notifycmd "System Menu"
|
||||||
|
bind = SUPER, F10, submap, wmmenu
|
||||||
|
submap = wmmenu
|
||||||
|
bind = , Q, exit,
|
||||||
|
bind = , S, exec, makoctl -a do-not-disturb
|
||||||
|
bind = , N, exec, makoctl -r do-not-disturb
|
||||||
|
bind = , M, exec, hyprland-toggle-monitor eDP-1
|
||||||
|
bind = , escape, exec, $notifycmd "Leaving System Menu"
|
||||||
|
bind = , escape, submap, reset
|
||||||
|
submap = reset
|
||||||
|
|
||||||
|
# window resize
|
||||||
|
bind = SUPER, F9, exec, $notifycmd "Window Menu"
|
||||||
|
bind = SUPER, F9, submap, resize
|
||||||
|
submap = resize
|
||||||
|
binde = , period, resizeactive, 10 10
|
||||||
|
binde = , comma, resizeactive, -10 -10
|
||||||
|
bind = , r, resizeactive, exact 50% 50%
|
||||||
|
bind = , s, resizeactive, exact 25% 25%
|
||||||
|
bind = , c, centerwindow, 0 10
|
||||||
|
bind = , p, pin
|
||||||
|
bind = , up, movewindow, u
|
||||||
|
bind = , down, movewindow, d
|
||||||
|
bind = , left, movewindow, l
|
||||||
|
bind = , right, movewindow, r
|
||||||
|
bind = , escape, exec, $notifycmd "Leaving Window Menu"
|
||||||
|
bind = , escape, submap, reset
|
||||||
|
submap = reset
|
||||||
|
|
||||||
|
# Switch workspaces with SUPER + [0-9]
|
||||||
|
bindd = SUPER CONTROL, code:10, Switch to workspace 1, workspace, 1
|
||||||
|
bindd = SUPER CONTROL, code:11, Switch to workspace 2, workspace, 2
|
||||||
|
bindd = SUPER CONTROL, code:12, Switch to workspace 3, workspace, 3
|
||||||
|
bindd = SUPER CONTROL, code:13, Switch to workspace 4, workspace, 4
|
||||||
|
bindd = SUPER CONTROL, code:14, Switch to workspace 5, workspace, 5
|
||||||
|
bindd = SUPER CONTROL, code:15, Switch to workspace 6, workspace, 6
|
||||||
|
bindd = SUPER CONTROL, code:16, Switch to workspace 7, workspace, 7
|
||||||
|
bindd = SUPER CONTROL, code:17, Switch to workspace 8, workspace, 8
|
||||||
|
bindd = SUPER CONTROL, code:18, Switch to workspace 9, workspace, 9
|
||||||
|
bindd = SUPER CONTROL, code:19, Switch to workspace 10, workspace, 10
|
||||||
|
|
||||||
|
# Switch workspaces with SUPER + [0-9]
|
||||||
|
bindd = SUPER, code:10, Switch to workspace 1, focusworkspaceoncurrentmonitor, 1
|
||||||
|
bindd = SUPER, code:11, Switch to workspace 2, focusworkspaceoncurrentmonitor, 2
|
||||||
|
bindd = SUPER, code:12, Switch to workspace 3, focusworkspaceoncurrentmonitor, 3
|
||||||
|
bindd = SUPER, code:13, Switch to workspace 4, focusworkspaceoncurrentmonitor, 4
|
||||||
|
bindd = SUPER, code:14, Switch to workspace 5, focusworkspaceoncurrentmonitor, 5
|
||||||
|
bindd = SUPER, code:15, Switch to workspace 6, focusworkspaceoncurrentmonitor, 6
|
||||||
|
bindd = SUPER, code:16, Switch to workspace 7, focusworkspaceoncurrentmonitor, 7
|
||||||
|
bindd = SUPER, code:17, Switch to workspace 8, focusworkspaceoncurrentmonitor, 8
|
||||||
|
bindd = SUPER, code:18, Switch to workspace 9, focusworkspaceoncurrentmonitor, 9
|
||||||
|
bindd = SUPER, code:19, Switch to workspace 10, focusworkspaceoncurrentmonitor, 10
|
||||||
|
|
||||||
|
# Move active window to a workspace with SUPER + SHIFT + [0-9]
|
||||||
|
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
|
||||||
|
bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2
|
||||||
|
bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3
|
||||||
|
bindd = SUPER SHIFT, code:13, Move window to workspace 4, movetoworkspace, 4
|
||||||
|
bindd = SUPER SHIFT, code:14, Move window to workspace 5, movetoworkspace, 5
|
||||||
|
bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6
|
||||||
|
bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7
|
||||||
|
bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8
|
||||||
|
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
|
||||||
|
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
bind = , PRINT, exec, hyprshot -m region
|
||||||
|
bind = SHIFT, PRINT, exec, hyprshot -m window
|
||||||
|
bind = CTRL, PRINT, exec, hyprshot -m output
|
||||||
|
|
||||||
|
# Color picker
|
||||||
|
bind = SUPER, PRINT, exec, pkill hyprpicker || hyprpicker -a
|
||||||
|
|
||||||
|
# media controls
|
||||||
|
bindl = , XF86AudioMedia, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||||
|
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||||
|
bindl = , XF86AudioNext, exec, playerctl next
|
||||||
|
|
||||||
|
bindle = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||||
|
bindle = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||||
|
bindl = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||||
|
|
||||||
|
bindle = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
||||||
|
bindle = ,XF86MonBrightnessDown, exec,brightnessctl s 10%-
|
||||||
|
|
||||||
|
# Scroll through existing workspaces with SUPER + scroll
|
||||||
|
bindd = SUPER, mouse_down, Scroll active workspace forward, workspace, e+1
|
||||||
|
bindd = SUPER, mouse_up, Scroll active workspace backward, workspace, e-1
|
||||||
|
|
||||||
|
# Move/resize windows with SUPER + LMB/RMB and dragging
|
||||||
|
bindmd = SUPER, mouse:272, Move window, movewindow
|
||||||
|
bindmd = SUPER, mouse:273, Resize window, resizewindow
|
||||||
|
|
||||||
|
# Workspace rules
|
||||||
|
workspace = w[tv1], gapsout:0, gapsin:0
|
||||||
|
workspace = f[1], gapsout:0, gapsin:0
|
||||||
|
|
||||||
|
workspace = special:special, bordersize:3
|
||||||
|
|
||||||
|
windowrule = border_size 2, rounding 0, match:float 0, match:workspace w[tv1]
|
||||||
|
windowrule = border_size 2, rounding 0, match:float 0, match:workspace f[1]
|
||||||
|
|
||||||
|
# Define terminal tag to style them uniformly
|
||||||
|
windowrule = tag +terminal, match:class (Alacritty|kitty|com.mitchellh.ghostty)
|
||||||
|
|
||||||
|
windowrule = scroll_touchpad 1.5, match:class (Alacritty|kitty)
|
||||||
|
windowrule = scroll_touchpad 0.2, match:class com.mitchellh.ghostty
|
||||||
|
|
||||||
|
|
||||||
|
# Picture-in-picture overlays
|
||||||
|
windowrule = tag +pip, match:title (Picture.?in.?[Pp]icture)
|
||||||
|
windowrule = float on, pin on, size 600 338, keep_aspect_ratio on, border_size 0, opacity 1 1, move ((monitor_w*1)-window_w-40) ((monitor_h*0.04)), match:tag pip
|
||||||
|
|
||||||
|
windowrule = no_shadow on, match:float 0
|
||||||
|
|
||||||
|
# Floating windows
|
||||||
|
windowrule = float on, center on, size 800 600, match:tag floating-window
|
||||||
|
|
||||||
|
windowrule = tag +floating-window, match:class (blueberry.py|Impala|Wiremix|org.gnome.NautilusPreviewer|com.gabm.satty|Omarchy|About|TUI.float)
|
||||||
|
windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors), match:title ^(Open.*Files?|Save.*Files?|Save.*As|All Files|Save)
|
||||||
|
|
||||||
|
|
||||||
|
# Browser types
|
||||||
|
windowrule = tag +chromium-based-browser, match:class ([cC]hrom(e|ium)|[bB]rave-browser|Microsoft-edge|Vivaldi-stable)
|
||||||
|
windowrule = tag +firefox-based-browser, match:class (Firefox|zen|librewolf)
|
||||||
|
|
||||||
|
# Force chromium-based browsers into a tile to deal with --app bug
|
||||||
|
windowrule = tile on, match:tag chromium-based-browser
|
||||||
|
|
||||||
|
# Some video sites should never have opacity applied to them
|
||||||
|
# windowrule = opacity 1.0 1.0, match:initial_title (youtube\.com_/|app\.zoom\.us_/wc/home)
|
||||||
|
# No transparency on media windows
|
||||||
|
# windowrule = opacity 1 1, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
|
||||||
|
|
||||||
|
# Only a subtle opacity change, but not for video sites
|
||||||
|
# windowrule = opacity 1 0.97, match:tag chromium-based-browser
|
||||||
|
# windowrule = opacity 1 0.97, match:tag firefox-based-browser
|
||||||
|
|
||||||
|
windowrule = float on, size 1024 480, match:class (org.pulseaudio.pavucontrol)
|
||||||
|
|
||||||
|
# telegram media viewer
|
||||||
|
windowrule = float on, match:title ^(Media viewer)$
|
||||||
|
|
||||||
|
layerrule = no_anim on, match:namespace rofi
|
||||||
|
layerrule = no_anim on, match:namespace walker
|
||||||
|
|
||||||
|
windowrule = stay_focused on, match:class (rofi)
|
||||||
|
windowrule = stay_focused on, match:class (walker)
|
||||||
|
|
||||||
|
windowrule = stay_focused on, match:class ^(pinentry-) # fix pinentry losing focus
|
||||||
|
windowrule = dim_around on, stay_focused on, match:class ^(gcr-prompter)$
|
||||||
|
|
||||||
|
# Remove 1px border around hyprshot screenshots
|
||||||
|
layerrule = no_anim on, match:namespace selection
|
||||||
|
|
||||||
|
# idle inhibit while watching videos
|
||||||
|
windowrule = idle_inhibit focus, match:class ^(mpv|.+exe)$
|
||||||
|
windowrule = idle_inhibit focus, match:class ^(firefox)$, match:title ^(.*YouTube.*)$
|
||||||
|
windowrule = idle_inhibit fullscreen, match:class ^(firefox)$
|
||||||
|
|
||||||
|
windowrule = pseudo on, match:workspace w[-99]
|
||||||
|
|
||||||
|
layerrule = blur on, ignore_alpha 0, match:namespace ^(gtk-layer-shell|anyrun)$
|
||||||
|
|
||||||
|
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||||
|
windowrule = suppress_event maximize, match:class .*
|
||||||
|
|
||||||
|
# Fix some dragging issues with XWayland
|
||||||
|
windowrule = no_focus on, match:class ^$, match:title ^$, match:xwayland 1, match:float 1, match:fullscreen 0, match:pin 0
|
||||||
|
windowrule {
|
||||||
|
name = windowrule-28
|
||||||
|
no_focus = on
|
||||||
|
match:class = ^$
|
||||||
|
match:title = ^$
|
||||||
|
match:xwayland = 1
|
||||||
|
match:float = 1
|
||||||
|
match:fullscreen = 0
|
||||||
|
match:pin = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Some default env vars.
|
||||||
|
|
||||||
|
# Cursor size
|
||||||
|
env = XCURSOR_SIZE,24
|
||||||
|
env = HYPRCURSOR_SIZE,24
|
||||||
|
|
||||||
|
# Force all apps to use Wayland
|
||||||
|
env = GDK_BACKEND,wayland,x11,*
|
||||||
|
env = QT_QPA_PLATFORM,wayland;xcb
|
||||||
|
env = QT_STYLE_OVERRIDE,kvantum
|
||||||
|
env = SDL_VIDEODRIVER,wayland
|
||||||
|
env = MOZ_ENABLE_WAYLAND,1
|
||||||
|
env = ELECTRON_OZONE_PLATFORM_HINT,wayland
|
||||||
|
env = OZONE_PLATFORM,wayland
|
||||||
|
env = XDG_SESSION_TYPE,wayland
|
||||||
|
|
||||||
|
# Allow better support for screen sharing (Google Meet, Discord, etc)
|
||||||
|
env = XDG_CURRENT_DESKTOP,Hyprland
|
||||||
|
env = XDG_SESSION_DESKTOP,Hyprland
|
||||||
|
|
||||||
|
# Use XCompose file
|
||||||
|
env = XCOMPOSEFILE,~/.XCompose
|
||||||
|
|
||||||
|
# Make Chromium use XCompose and all Wayland
|
||||||
|
env = CHROMIUM_FLAGS,"--enable-features=UseOzonePlatform --ozone-platform=wayland --gtk-version=4"
|
||||||
|
|
||||||
|
# Make .desktop files available for wofi
|
||||||
|
env = XDG_DATA_DIRS,/usr/share:/usr/local/share:~/.local/share
|
||||||
|
|
||||||
|
# Source a file (multi-file configs)
|
||||||
|
source = ~/.local/share/themes/current/theme/hyprland.conf
|
||||||
|
|
||||||
|
exec-once = dbus-update-activation-environment --systemd --all
|
||||||
|
exec-once = systemctl --user start hyprpolkitagent
|
||||||
|
|
||||||
|
exec-once = hyprctl setcursor Pop 24
|
||||||
|
exec-once = uwsm app -- hypridle
|
||||||
|
exec-once = uwsm app -- mako
|
||||||
|
exec-once = uwsm app -- fcitx5
|
||||||
|
exec-once = uwsm app -- udiskie -a -n -T &
|
||||||
|
exec-once = uwsm app -- swww-daemon
|
||||||
|
exec-once = gnome-keyring-daemon --replace --daemonize --components=pkcs11,secrets,gpg
|
||||||
|
# exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)
|
||||||
|
exec-once = systemctl --user import-environment DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP XDG_SESSION_TYPE XDG_RUNTIME_DIR DBUS_SESSION_BUS_ADDRESS LANG PATH
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
source = ~/.local/share/themes/current/theme/hyprlock.conf
|
||||||
|
|
||||||
|
# GENERAL
|
||||||
|
general {
|
||||||
|
disable_loading_bar = true
|
||||||
|
hide_cursor = true
|
||||||
|
}
|
||||||
|
|
||||||
|
background {
|
||||||
|
monitor =
|
||||||
|
path = ~/.local/share/themes/current/background
|
||||||
|
color = $color
|
||||||
|
}
|
||||||
|
|
||||||
|
animations {
|
||||||
|
enabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
size = 600, 100
|
||||||
|
position = 0, 0
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
|
||||||
|
inner_color = $inner_color
|
||||||
|
outer_color = $outer_color
|
||||||
|
outline_thickness = 4
|
||||||
|
|
||||||
|
font_family = CaskaydiaMono Nerd Font
|
||||||
|
font_color = $font_color
|
||||||
|
|
||||||
|
placeholder_text = Enter Password
|
||||||
|
check_color = $check_color
|
||||||
|
fail_text = <i>$PAMFAIL ($ATTEMPTS)</i>
|
||||||
|
|
||||||
|
rounding = 0
|
||||||
|
shadow_passes = 0
|
||||||
|
fade_on_empty = false
|
||||||
|
}
|
||||||
|
|
||||||
|
auth {
|
||||||
|
fingerprint:enabled = true
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
bind = SUPER, Z, hyprexpo:expo, toggle # can be: toggle, off/disable or on/enable
|
||||||
|
|
||||||
|
plugin {
|
||||||
|
hyprexpo {
|
||||||
|
columns = 3
|
||||||
|
gap_size = 10
|
||||||
|
workspace_method = 1 # center current # [center/first] [workspace] e.g. first 1 or center m+1
|
||||||
|
|
||||||
|
enable_gesture = true # laptop touchpad
|
||||||
|
gesture_fingers = 3 # 3 or 4
|
||||||
|
gesture_distance = 300 # how far is the "max"
|
||||||
|
gesture_positive = true # positive = swipe down. Negative = swipe up.
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
#:schema https://docs.jj-vcs.dev/latest/config-schema.json
|
||||||
|
|
||||||
|
[ui]
|
||||||
|
default-command = ["status"]
|
||||||
|
#conflict-marker-style = "git"
|
||||||
|
#conflict-marker-style = "snapshot"
|
||||||
|
conflict-marker-style = "diff"
|
||||||
|
#diff-formatter = ":git"
|
||||||
|
diff-editor = ["nvim", "-c", "DiffEditor $left $right $output"]
|
||||||
|
merge-editor = "diffconflicts"
|
||||||
|
|
||||||
|
[colors]
|
||||||
|
# Highlight hunks with background
|
||||||
|
#"diff removed token" = { underline = false }
|
||||||
|
#"diff added token" = { underline = false }
|
||||||
|
# Alternatively, swap colors
|
||||||
|
"diff token" = { underline = false }
|
||||||
|
|
||||||
|
[templates]
|
||||||
|
commit_trailers = '''
|
||||||
|
format_signed_off_by_trailer(self)
|
||||||
|
++ if(!trailers.contains_key("Change-Id"), format_gerrit_change_id_trailer(self))'''
|
||||||
|
git_push_bookmark = '"sjb/push-" ++ change_id.short()'
|
||||||
|
|
||||||
|
[merge-tools.nvimdiff]
|
||||||
|
program = "nvim"
|
||||||
|
merge-args = ["-d", "$left", "$right", "$base", "$output"]
|
||||||
|
|
||||||
|
[merge-tools.diffconflicts]
|
||||||
|
program = "nvim"
|
||||||
|
merge-args = [
|
||||||
|
"-c", "let g:jj_diffconflicts_marker_length=$marker_length",
|
||||||
|
"-c", "JJDiffConflicts!", "$output", "$base", "$left", "$right",
|
||||||
|
]
|
||||||
|
merge-tool-edits-conflict-markers = true
|
||||||
|
|
||||||
|
[signing]
|
||||||
|
#behavior = "own"
|
||||||
|
behavior = "drop"
|
||||||
|
backend = "gpg"
|
||||||
|
## You can set `key` to anything accepted by `gpg -u`
|
||||||
|
## If not set then defaults to the key associated with `user.email`
|
||||||
|
# key = "4ED556E9729E000F"
|
||||||
|
key = "8E887C55"
|
||||||
|
#key = "steve@sagacity.ca"
|
||||||
|
# Configure signing backend as before, but lazily signing only on push.
|
||||||
|
|
||||||
|
[git]
|
||||||
|
sign-on-push = true
|
||||||
|
# Prevent pushing work in progress or anything explicitly labeled "private"
|
||||||
|
private-commits = "description('wip:*') | description('private:*')"
|
||||||
|
|
||||||
|
[snapshot]
|
||||||
|
max-new-file-size = "10MiB"
|
||||||
|
|
||||||
|
[aliases]
|
||||||
|
# `jj l` shows commits on the working-copy commit's (anonymous) bookmark
|
||||||
|
# compared to the `main` bookmark
|
||||||
|
l = ["log", "-r", "::"]
|
||||||
|
lt = ["log", "-r", "(trunk()..@):: | (trunk()..@)-"]
|
||||||
|
fetch = ["git", "fetch"]
|
||||||
|
init = ["git", "init", "--colocate"]
|
||||||
|
mark = ["bookmark", "set", "-r", "@"]
|
||||||
|
push = ["git", "push", "--allow-new"]
|
||||||
|
track = ["bookmark", "track"]
|
||||||
|
wip = ["log", "-r", "bookmarks(wip*)"]
|
||||||
|
|
||||||
|
[revset-aliases]
|
||||||
|
wip = "heads(::@ ~ description(''))::"
|
||||||
|
|
||||||
|
[[--scope]]
|
||||||
|
--when.repositories = ["~/Projects/personal"]
|
||||||
|
|
||||||
|
[--scope.user]
|
||||||
|
email = "steve@sagacity.ca"
|
||||||
|
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
nt_family TX-02
|
||||||
|
bold_font auto
|
||||||
|
italic_font auto
|
||||||
|
bold_italic_font auto
|
||||||
|
font_size 13
|
||||||
|
enable_audio_bell no
|
||||||
|
window_alert_on_bell no
|
||||||
|
window_padding_width 3
|
||||||
|
|
||||||
|
# gruvbox-dark colorscheme for kitty
|
||||||
|
# snazzy theme used as base
|
||||||
|
|
||||||
|
foreground #ebdbb2
|
||||||
|
background #272727
|
||||||
|
selection_foreground #655b53
|
||||||
|
selection_background #ebdbb2
|
||||||
|
url_color #d65c0d
|
||||||
|
|
||||||
|
# black
|
||||||
|
color0 #272727
|
||||||
|
color8 #928373
|
||||||
|
|
||||||
|
# red
|
||||||
|
color1 #cc231c
|
||||||
|
color9 #fb4833
|
||||||
|
|
||||||
|
# green
|
||||||
|
color2 #989719
|
||||||
|
color10 #b8ba25
|
||||||
|
|
||||||
|
# yellow
|
||||||
|
color3 #d79920
|
||||||
|
color11 #fabc2e
|
||||||
|
|
||||||
|
# blue
|
||||||
|
color4 #448488
|
||||||
|
color12 #83a597
|
||||||
|
|
||||||
|
# magenta
|
||||||
|
color5 #b16185
|
||||||
|
color13 #d3859a
|
||||||
|
|
||||||
|
# cyan
|
||||||
|
color6 #689d69
|
||||||
|
color14 #8ec07b
|
||||||
|
|
||||||
|
# white
|
||||||
|
color7 #a89983
|
||||||
|
color15 #ebdbb2
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/sjb/.config/omarchy/current/theme/mako.ini
|
||||||
@@ -0,0 +1,251 @@
|
|||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.g.maplocalleader = ' '
|
||||||
|
|
||||||
|
vim.g.have_nerd_fonts = true
|
||||||
|
|
||||||
|
-- set <space> as my leader key
|
||||||
|
vim.g.autoformat = true
|
||||||
|
|
||||||
|
-- vim.g.root_spec = { "lsp", { ".git", "lua" }, "cwd" }
|
||||||
|
|
||||||
|
vim.g.editorconfig = true
|
||||||
|
|
||||||
|
vim.wo.number = true
|
||||||
|
|
||||||
|
vim.opt.background = "dark"
|
||||||
|
vim.opt.backup = false
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.opt.clipboard = "unnamedplus"
|
||||||
|
end)
|
||||||
|
vim.opt.cmdheight = 1
|
||||||
|
vim.opt.completeopt = "menu,menuone,noselect"
|
||||||
|
vim.opt.conceallevel = 2
|
||||||
|
vim.opt.hlsearch = true
|
||||||
|
vim.opt.breakindent = true
|
||||||
|
vim.opt.ignorecase = true
|
||||||
|
vim.opt.formatoptions = "jcroqlnt"
|
||||||
|
vim.opt.grepformat = "%f:%l:%c:%m"
|
||||||
|
vim.opt.grepprg = "rg --vimgrep"
|
||||||
|
vim.opt.ignorecase = true
|
||||||
|
vim.opt.inccommand = "split"
|
||||||
|
vim.opt.list = true
|
||||||
|
vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" }
|
||||||
|
vim.opt.mouse = "a"
|
||||||
|
vim.opt.pumblend = 10
|
||||||
|
vim.opt.pumheight = 10
|
||||||
|
vim.opt.showmode = false
|
||||||
|
vim.opt.showtabline = 0
|
||||||
|
vim.opt.smartcase = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.splitbelow = true
|
||||||
|
vim.opt.splitright = true
|
||||||
|
-- vim.opt.splitkeep = "screen"
|
||||||
|
vim.opt.swapfile = false
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
vim.opt.undofile = true
|
||||||
|
vim.opt.undolevels = 10000
|
||||||
|
-- vim.opt.updatetime = 250 -- default 250
|
||||||
|
-- vim.opt.timeoutlen = 250 -- default 1000
|
||||||
|
vim.opt.timeout = false
|
||||||
|
vim.opt.writebackup = false
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.shiftround = true
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.shortmess:append({ W = true, I = true, c = true, C = true })
|
||||||
|
vim.opt.spelllang = { "en" }
|
||||||
|
vim.opt.tabstop = 4
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
vim.opt.laststatus = 3
|
||||||
|
vim.opt.showcmd = false
|
||||||
|
vim.opt.ruler = false
|
||||||
|
vim.opt.numberwidth = 4
|
||||||
|
vim.opt.signcolumn = "yes"
|
||||||
|
vim.opt.wrap = false
|
||||||
|
vim.opt.scrolloff = 8
|
||||||
|
vim.opt.sidescrolloff = 8
|
||||||
|
vim.opt.shell = "/bin/bash"
|
||||||
|
vim.opt.sessionoptions = { "blank", "buffers", "curdir", "tabpages", "winsize", "winpos", "terminal", "localoptions", "help", "skiprtp", "folds" }
|
||||||
|
vim.opt.virtualedit = "block"
|
||||||
|
vim.opt.wildmode = "longest:full,full"
|
||||||
|
vim.opt.winminwidth = 5
|
||||||
|
-- vim.opt.hidden = false
|
||||||
|
vim.opt.cindent = true
|
||||||
|
vim.opt.autoindent = true
|
||||||
|
|
||||||
|
if vim.fn.has("nvim-0.10") == 1 then
|
||||||
|
vim.opt.smoothscroll = true
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.opt.foldmethod = "expr"
|
||||||
|
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||||
|
vim.opt.foldlevel = 99
|
||||||
|
vim.opt.nu = true
|
||||||
|
vim.opt.errorbells = false
|
||||||
|
vim.opt.belloff = "all"
|
||||||
|
vim.opt.undodir = vim.fn.stdpath('data') .. "/undodir"
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
|
vim.opt.incsearch = true
|
||||||
|
-- vim.opt.fillchars.eob = " "
|
||||||
|
-- vim.opt.shortmess:append("c")
|
||||||
|
-- vim.opt.whichwrap:append("<,>,[,],h,l")
|
||||||
|
-- vim.opt.iskeyword:append(".")
|
||||||
|
-- vim.o.isfname:append("@-@")
|
||||||
|
-- vim.o.colorcolumn = "80"
|
||||||
|
|
||||||
|
-- Put this at the top of 'init.lua'
|
||||||
|
local path_package = vim.fn.stdpath('data') .. '/site'
|
||||||
|
local mini_path = path_package .. '/pack/deps/start/mini.nvim'
|
||||||
|
if not vim.loop.fs_stat(mini_path) then
|
||||||
|
vim.cmd('echo "Installing `mini.nvim`" | redraw')
|
||||||
|
local clone_cmd = {
|
||||||
|
'git', 'clone', '--filter=blob:none',
|
||||||
|
-- Uncomment next line to use 'stable' branch
|
||||||
|
-- '--branch', 'stable',
|
||||||
|
'https://github.com/echasnovski/mini.nvim', mini_path
|
||||||
|
}
|
||||||
|
vim.fn.system(clone_cmd)
|
||||||
|
vim.cmd('packadd mini.nvim | helptags ALL')
|
||||||
|
end
|
||||||
|
|
||||||
|
-- add({ 'echasnovski/mini.ai' })
|
||||||
|
-- add({ 'echasnovski/mini.align' })
|
||||||
|
-- add({ 'echasnovski/mini.operators' })
|
||||||
|
-- add({ 'echasnovski/mini.bracketed' })
|
||||||
|
-- add({ 'echasnovski/mini.operators' })
|
||||||
|
-- add({ 'echasnovski/mini.surround' })
|
||||||
|
-- add({ 'echasnovski/mini.statusline' })
|
||||||
|
-- add({ 'echasnovski/mini.tabline' })
|
||||||
|
|
||||||
|
-- add({ 'echasnovski/mini.hipatterns' })
|
||||||
|
|
||||||
|
require('mini.extra').setup()
|
||||||
|
require('mini.ai').setup({
|
||||||
|
custom_textobjects = {
|
||||||
|
B = MiniExtra.gen_ai_spec.buffer(),
|
||||||
|
I = MiniExtra.gen_ai_spec.indent(),
|
||||||
|
L = MiniExtra.gen_ai_spec.line(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require('mini.align').setup()
|
||||||
|
require('mini.bracketed').setup()
|
||||||
|
|
||||||
|
local hi_words = MiniExtra.gen_highlighter.words
|
||||||
|
require('mini.hipatterns').setup({
|
||||||
|
highlighters = {
|
||||||
|
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
|
||||||
|
fixme = hi_words({ 'FIXME', 'Fixme', 'fixme' }, "MiniHipatternsFixme"),
|
||||||
|
hack = hi_words({ 'HACK', 'Hack', 'hack' }, "MiniHipatternsHack"),
|
||||||
|
todo = hi_words({ 'TODO', 'Todo', 'todo' }, "MiniHipatternsTodo"),
|
||||||
|
note = hi_words({ 'NOTE', 'Note', 'note' }, "MiniHipatternsNote"),
|
||||||
|
|
||||||
|
-- Highlight hex color strings (`#rrggbb`) using that color
|
||||||
|
-- hex_color = hipatterns.gen_highlighter.hex_color(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("mini.surround").setup({
|
||||||
|
-- Add custom surroundings to be used on top of builtin ones. For more
|
||||||
|
-- information with examples, see `:h MiniSurround.config`.
|
||||||
|
-- custom_surroundings = {
|
||||||
|
-- s = { input = { '%[%[().-()%]%]' }, output = { left = '[[', right = ']]' } },
|
||||||
|
-- },
|
||||||
|
mappings = {
|
||||||
|
add = 'sa', -- Add surrounding in Normal and Visual modes
|
||||||
|
delete = 'sd', -- Delete surrounding
|
||||||
|
find = 'sf', -- Find surrounding (to the right)
|
||||||
|
find_left = 'sF', -- Find surrounding (to the left)
|
||||||
|
highlight = 'sh', -- Highlight surrounding
|
||||||
|
replace = 'sr', -- Replace surrounding
|
||||||
|
update_n_lines = 'sn', -- Update `n_lines`
|
||||||
|
|
||||||
|
suffix_last = 'l', -- Suffix to search with "prev" method
|
||||||
|
suffix_next = 'n', -- Suffix to search with "next" method
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require("mini.operators").setup({
|
||||||
|
evaluate = { prefix = 'g=', func = nil, },
|
||||||
|
exchange = { prefix = 'g.', reindent_linewise = true, },
|
||||||
|
multiply = { prefix = 'gm', func = nil, },
|
||||||
|
replace = { prefix = 'gk', reindent_linewise = true, },
|
||||||
|
sort = { prefix = 'gs', func = nil, }
|
||||||
|
})
|
||||||
|
|
||||||
|
local miniclue = require('mini.clue')
|
||||||
|
miniclue.setup({
|
||||||
|
triggers = {
|
||||||
|
-- Leader triggers
|
||||||
|
{ mode = 'n', keys = '<Leader>' },
|
||||||
|
{ mode = 'x', keys = '<Leader>' },
|
||||||
|
|
||||||
|
-- Built-in completion
|
||||||
|
{ mode = 'i', keys = '<C-x>' },
|
||||||
|
|
||||||
|
-- `g` key
|
||||||
|
{ mode = 'n', keys = 'g' },
|
||||||
|
{ mode = 'x', keys = 'g' },
|
||||||
|
|
||||||
|
-- Marks
|
||||||
|
{ mode = 'n', keys = "'" },
|
||||||
|
{ mode = 'n', keys = '`' },
|
||||||
|
{ mode = 'x', keys = "'" },
|
||||||
|
{ mode = 'x', keys = '`' },
|
||||||
|
|
||||||
|
-- Registers
|
||||||
|
{ mode = 'n', keys = '"' },
|
||||||
|
{ mode = 'x', keys = '"' },
|
||||||
|
{ mode = 'i', keys = '<C-r>' },
|
||||||
|
{ mode = 'c', keys = '<C-r>' },
|
||||||
|
|
||||||
|
-- Window commands
|
||||||
|
{ mode = 'n', keys = '<C-w>' },
|
||||||
|
|
||||||
|
-- `z` key
|
||||||
|
{ mode = 'n', keys = 'z' },
|
||||||
|
{ mode = 'x', keys = 'z' },
|
||||||
|
},
|
||||||
|
|
||||||
|
clues = {
|
||||||
|
-- Enhance this by adding descriptions for <Leader> mapping groups
|
||||||
|
miniclue.gen_clues.builtin_completion(),
|
||||||
|
miniclue.gen_clues.g(),
|
||||||
|
miniclue.gen_clues.marks(),
|
||||||
|
miniclue.gen_clues.registers(),
|
||||||
|
miniclue.gen_clues.windows(),
|
||||||
|
miniclue.gen_clues.z(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
require('mini.bufremove').setup()
|
||||||
|
require('mini.comment').setup()
|
||||||
|
require('mini.completion').setup()
|
||||||
|
require('mini.cursorword').setup()
|
||||||
|
require('mini.diff').setup()
|
||||||
|
require('mini.files').setup()
|
||||||
|
require('mini.fuzzy').setup()
|
||||||
|
require('mini.git').setup()
|
||||||
|
require('mini.icons').setup()
|
||||||
|
require('mini.jump').setup()
|
||||||
|
require('mini.move').setup()
|
||||||
|
require('mini.pick').setup()
|
||||||
|
require('mini.sessions').setup()
|
||||||
|
require('mini.splitjoin').setup()
|
||||||
|
require('mini.jump2d').setup()
|
||||||
|
require('mini.visits').setup()
|
||||||
|
require('mini.statusline').setup()
|
||||||
|
require('mini.tabline').setup()
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>f', '<cmd>Pick files<cr>', { desc = "Pick files" })
|
||||||
|
vim.keymap.set('n', '<leader>j', '<cmd>Pick oldfiles<cr>', { desc = "Pick files" })
|
||||||
|
vim.keymap.set('n', '<leader>/', '<cmd>Pick grep_live<cr>', { desc = "live grep" })
|
||||||
|
vim.keymap.set('n', '<leader>s/', '<cmd>Pick buf_lines<cr>', { desc = 'search in buffer' })
|
||||||
|
vim.keymap.set('n', '<leader>sk', '<cmd>Pick keymaps<cr>', { desc = 'search in buffer' })
|
||||||
|
vim.keymap.set('n', '<leader>sm', '<cmd>Pick marks<cr>', { desc = 'search in buffer' })
|
||||||
|
vim.keymap.set('n', '<leader><space>', '<cmd>Pick buffers<cr>', { desc = 'find buffer' })
|
||||||
|
vim.keymap.set('n', '<leader>q', '<cmd>Pick diagnostic<cr>', { desc = 'find diagnostic' })
|
||||||
|
vim.keymap.set('n', '<leader>-', '<cmd>Pick explorer<cr>', { desc = 'explorer' })
|
||||||
|
vim.keymap.set('n', '<M-x>', '<cmd>Pick commands<cr>', { desc = 'commands' })
|
||||||
|
vim.cmd("colorscheme minicyan")
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
let current_compiler = "cmake"
|
||||||
|
CompilerSet makeprg=cmake
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
let current_compiler = "npm"
|
||||||
|
CompilerSet makeprg=npm\ run
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
vim.api.nvim_buf_set_keymap(
|
||||||
|
0,
|
||||||
|
"n",
|
||||||
|
"<CR>",
|
||||||
|
"<cmd>lua require('kulala').run()<cr>",
|
||||||
|
{ noremap = true, silent = true, desc = "Execute the request" }
|
||||||
|
)
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_keymap(
|
||||||
|
0,
|
||||||
|
"n",
|
||||||
|
"[",
|
||||||
|
"<cmd>lua require('kulala').jump_prev()<cr>",
|
||||||
|
{ noremap = true, silent = true, desc = "Jump to the previous request" }
|
||||||
|
)
|
||||||
|
vim.api.nvim_buf_set_keymap(
|
||||||
|
0,
|
||||||
|
"n",
|
||||||
|
"]",
|
||||||
|
"<cmd>lua require('kulala').jump_next()<cr>",
|
||||||
|
{ noremap = true, silent = true, desc = "Jump to the next request" }
|
||||||
|
)
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_keymap(
|
||||||
|
0,
|
||||||
|
"n",
|
||||||
|
"<leader>i",
|
||||||
|
"<cmd>lua require('kulala').inspect()<cr>",
|
||||||
|
{ noremap = true, silent = true, desc = "Inspect the current request" }
|
||||||
|
)
|
||||||
@@ -0,0 +1,163 @@
|
|||||||
|
-- Steve Beaulac nvim configuration using kickstart git: 2ba39c6 --
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.g.maplocalleader = ' '
|
||||||
|
|
||||||
|
vim.g.have_nerd_fonts = true
|
||||||
|
|
||||||
|
-- set <space> as my leader key
|
||||||
|
vim.g.autoformat = true
|
||||||
|
|
||||||
|
-- vim.g.root_spec = { "lsp", { ".git", "lua" }, "cwd" }
|
||||||
|
|
||||||
|
vim.g.editorconfig = true
|
||||||
|
|
||||||
|
vim.wo.number = true
|
||||||
|
|
||||||
|
vim.opt.background = "dark"
|
||||||
|
vim.opt.backup = false
|
||||||
|
vim.opt.clipboard:append("unnamedplus")
|
||||||
|
vim.opt.modifiable = true
|
||||||
|
vim.opt.cmdheight = 1
|
||||||
|
vim.opt.completeopt = { 'menuone', 'noinsert', 'noselect', 'fuzzy', 'popup' }
|
||||||
|
vim.opt.conceallevel = 0
|
||||||
|
-- vim.opt.concealcursor = ""
|
||||||
|
vim.opt.encoding = "UTF-8"
|
||||||
|
vim.opt.lazyredraw = true
|
||||||
|
vim.opt.redrawtime = 10000
|
||||||
|
vim.opt.maxmempattern = 20000
|
||||||
|
vim.opt.synmaxcol = 300
|
||||||
|
vim.opt.pumheight = 10
|
||||||
|
vim.opt.pumblend = 10
|
||||||
|
vim.opt.winblend = 0
|
||||||
|
vim.opt.hlsearch = true
|
||||||
|
vim.opt.breakindent = true
|
||||||
|
vim.opt.ignorecase = true
|
||||||
|
vim.opt.backspace = "indent,eol,start"
|
||||||
|
vim.opt.formatoptions = "jcroqlnt"
|
||||||
|
vim.opt.grepformat = "%f:%l:%c:%m"
|
||||||
|
vim.opt.grepprg = "rg --vimgrep"
|
||||||
|
vim.opt.ignorecase = true
|
||||||
|
vim.opt.inccommand = "split"
|
||||||
|
vim.opt.list = true
|
||||||
|
vim.opt.listchars = { tab = "» ", trail = "·", nbsp = "␣" }
|
||||||
|
vim.opt.mouse = "a"
|
||||||
|
vim.opt.pumblend = 10
|
||||||
|
vim.opt.pumheight = 10
|
||||||
|
vim.opt.showmode = false
|
||||||
|
vim.opt.showmatch = true
|
||||||
|
vim.opt.showtabline = 0
|
||||||
|
vim.opt.smartcase = true
|
||||||
|
vim.opt.smartindent = true
|
||||||
|
vim.opt.splitbelow = true
|
||||||
|
vim.opt.splitright = true
|
||||||
|
-- vim.opt.splitkeep = "screen"
|
||||||
|
vim.opt.swapfile = false
|
||||||
|
vim.opt.termguicolors = true
|
||||||
|
vim.opt.undofile = true
|
||||||
|
vim.opt.undolevels = 10000
|
||||||
|
vim.opt.updatetime = 250 -- default 250
|
||||||
|
vim.opt.timeoutlen = 500 -- default 1000
|
||||||
|
vim.opt.ttimeoutlen = 0
|
||||||
|
-- vim.opt.timeout = false
|
||||||
|
vim.opt.autoread = true
|
||||||
|
vim.opt.autowrite = false
|
||||||
|
vim.opt.autochdir = false
|
||||||
|
vim.opt.writebackup = false
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.shiftround = true
|
||||||
|
vim.opt.shiftwidth = 4
|
||||||
|
vim.opt.softtabstop = 4
|
||||||
|
vim.opt.tabstop = 4
|
||||||
|
vim.opt.hidden = true
|
||||||
|
vim.opt.shortmess:append({ W = true, I = true, c = true, C = true })
|
||||||
|
vim.opt.spelllang = { "en" }
|
||||||
|
vim.opt.selection = "inclusive"
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
vim.opt.number = true
|
||||||
|
vim.opt.relativenumber = true
|
||||||
|
vim.opt.laststatus = 3
|
||||||
|
vim.opt.showcmd = false
|
||||||
|
vim.opt.ruler = false
|
||||||
|
vim.opt.numberwidth = 4
|
||||||
|
vim.opt.signcolumn = "yes"
|
||||||
|
vim.opt.wrap = false
|
||||||
|
vim.opt.scrolloff = 8
|
||||||
|
vim.opt.sidescrolloff = 8
|
||||||
|
vim.opt.shell = "/bin/bash"
|
||||||
|
vim.opt.sessionoptions = { "blank", "buffers", "curdir", "tabpages", "winsize", "winpos", "terminal", "localoptions", "help", "skiprtp", "folds" }
|
||||||
|
vim.opt.virtualedit = "block"
|
||||||
|
vim.opt.wildmode = "longest:full,full"
|
||||||
|
vim.opt.diffopt:append("linematch:60")
|
||||||
|
|
||||||
|
vim.opt.winminwidth = 5
|
||||||
|
-- vim.opt.hidden = false
|
||||||
|
-- vim.opt.cindent = true
|
||||||
|
-- vim.opt.autoindent = true
|
||||||
|
|
||||||
|
if vim.fn.has("nvim-0.10") == 1 then
|
||||||
|
vim.opt.smoothscroll = true
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.opt.foldmethod = "expr"
|
||||||
|
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
|
||||||
|
vim.opt.foldlevel = 99
|
||||||
|
vim.opt.errorbells = false
|
||||||
|
vim.opt.belloff = "all"
|
||||||
|
vim.opt.undodir = vim.fn.stdpath('data') .. "/undodir"
|
||||||
|
vim.opt.incsearch = true
|
||||||
|
vim.opt.fillchars = { eob = " " }
|
||||||
|
vim.opt.iskeyword:append("-")
|
||||||
|
vim.opt.path:append("**")
|
||||||
|
vim.opt.colorcolumn = "100"
|
||||||
|
|
||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_text = { current_line = true }
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Lazy plugin manager
|
||||||
|
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||||
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
|
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
||||||
|
local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', lazyrepo, '--branch=stable', lazypath }
|
||||||
|
if vim.v.shell_error ~= 0 then
|
||||||
|
error('Error cloning lazy.nvim:\n' .. out)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
require("lazy").setup({
|
||||||
|
spec = {
|
||||||
|
{ import = "plugins" }
|
||||||
|
},
|
||||||
|
rocks = {
|
||||||
|
enabled = false,
|
||||||
|
hererocks = false,
|
||||||
|
},
|
||||||
|
checker = {
|
||||||
|
enabled = true,
|
||||||
|
notify = false,
|
||||||
|
},
|
||||||
|
change_detection = {
|
||||||
|
notify = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.g.lazyvim_check_order = false
|
||||||
|
|
||||||
|
|
||||||
|
require("config.keymaps")
|
||||||
|
require("config.scripts")
|
||||||
|
|
||||||
|
-- When Nvim is idle or you switch focus/buffers, check if files changed
|
||||||
|
vim.api.nvim_create_autocmd({ "FocusGained", "BufEnter", "CursorHold", "CursorHoldI" }, {
|
||||||
|
pattern = "*",
|
||||||
|
command = "checktime",
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("User", {
|
||||||
|
pattern = "VeryLazy",
|
||||||
|
callback = function()
|
||||||
|
require("config.autocmds")
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"gCopyright": {
|
||||||
|
"prefix": "copy",
|
||||||
|
"description": "Generic Copyright",
|
||||||
|
"body": [
|
||||||
|
"Copyright (c) ${CURRENT_YEAR} ${1:Author} <${2:email}>. All Rights Reserved.",
|
||||||
|
"$0"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"Starter Template": {
|
||||||
|
"prefix": "vsTaskHeader",
|
||||||
|
"body": [
|
||||||
|
"{",
|
||||||
|
"\t\"version\": \"2.0.0\",",
|
||||||
|
"\t\"tasks\": [",
|
||||||
|
"\t\t$0",
|
||||||
|
"\t]",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"scope": "json"
|
||||||
|
},
|
||||||
|
"Tasks": {
|
||||||
|
"prefix": "vsTasks",
|
||||||
|
"body": [
|
||||||
|
"{",
|
||||||
|
"\t\"label\": \"$1\",",
|
||||||
|
"\t\"type\": \"shell\",",
|
||||||
|
"\t\"command\": \"$2\",",
|
||||||
|
"\t\"args\": [ $3 ],",
|
||||||
|
"\t\"group\": {",
|
||||||
|
"\t\t\"kind\": \"build\",",
|
||||||
|
"\t\t\"isDefault\": true",
|
||||||
|
"\t}$0",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"scope": "json"
|
||||||
|
},
|
||||||
|
"Presentation": {
|
||||||
|
"prefix": "presentation",
|
||||||
|
"body": [
|
||||||
|
"\"presentation\": {",
|
||||||
|
"\t\"reveal\": \"always\",",
|
||||||
|
"\t\"panel\": \"new\",",
|
||||||
|
"}"
|
||||||
|
],
|
||||||
|
"scope": "json"
|
||||||
|
},
|
||||||
|
"ProblemMatcher": {
|
||||||
|
"prefix": "problemMatcher",
|
||||||
|
"body": [
|
||||||
|
"\"problemMatcher\": [",
|
||||||
|
"\t$0",
|
||||||
|
"]"
|
||||||
|
],
|
||||||
|
"scope": "json"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"name": "sjb_snippets",
|
||||||
|
"contributes": {
|
||||||
|
"snippets": [
|
||||||
|
{
|
||||||
|
"language": [
|
||||||
|
"json"
|
||||||
|
],
|
||||||
|
"path": "./json.json"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"language": [
|
||||||
|
"rust",
|
||||||
|
"global",
|
||||||
|
"all"
|
||||||
|
],
|
||||||
|
"path": "./copyright.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,143 @@
|
|||||||
|
vim.filetype.add({
|
||||||
|
extension = {
|
||||||
|
['http'] = 'http',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Check if we need to reload the file when it changed
|
||||||
|
vim.api.nvim_create_autocmd({ "FocusGained", "TermClose", "TermLeave" }, {
|
||||||
|
desc = 'Check time',
|
||||||
|
group = vim.api.nvim_create_augroup("sjb-checktime", { clear = true}),
|
||||||
|
callback = function()
|
||||||
|
if vim.o.buftype ~= 'nofile' then
|
||||||
|
vim.cmd('checktime')
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||||
|
desc = 'Highlight when yanking (copying) text',
|
||||||
|
group = vim.api.nvim_create_augroup('sjb-highlight-yank', { clear = true }),
|
||||||
|
callback = function()
|
||||||
|
vim.hl.on_yank()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- windows to close
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = {
|
||||||
|
"OverseerForm",
|
||||||
|
"OverseerList",
|
||||||
|
"floggraph",
|
||||||
|
"fugitive",
|
||||||
|
"git",
|
||||||
|
"help",
|
||||||
|
"lspinfo",
|
||||||
|
"man",
|
||||||
|
"neotest-output",
|
||||||
|
"neotest-summary",
|
||||||
|
"qf",
|
||||||
|
"query",
|
||||||
|
"spectre_panel",
|
||||||
|
"startuptime",
|
||||||
|
"toggleterm",
|
||||||
|
"tsplayground",
|
||||||
|
"vim",
|
||||||
|
},
|
||||||
|
group = vim.api.nvim_create_augroup('sjb-quick-close', { clear = true }),
|
||||||
|
callback = function(event)
|
||||||
|
vim.bo[event.buf].buflisted = false
|
||||||
|
vim.keymap.set("n", "q", "<cmd>close<cr>", { buffer = event.buf, silent = true })
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- wrap and check for spell in text filetypes
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
group = vim.api.nvim_create_augroup("sjb-wrap-spell", { clear = true }),
|
||||||
|
pattern = { "gitcommit", "markdown" },
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.wrap = true
|
||||||
|
vim.opt_local.spell = true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Auto create dir when saving a file, in case some intermediate directory does not exist
|
||||||
|
vim.api.nvim_create_autocmd({ "BufWritePre" }, {
|
||||||
|
group = vim.api.nvim_create_augroup("sjb-auto-create-dir", { clear = true}),
|
||||||
|
callback = function(event)
|
||||||
|
if event.match:match("^%w%w+://") then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local file = vim.loop.fs_realpath(event.match) or event.match
|
||||||
|
vim.fn.mkdir(vim.fn.fnamemodify(file, ":p:h"), "p")
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd("BufWritePost", {
|
||||||
|
pattern = "*",
|
||||||
|
callback = function()
|
||||||
|
if vim.fn.isdirectory(".jj") == 1 then
|
||||||
|
vim.fn.jobstart({"jj", "status"}, {
|
||||||
|
on_exit = function(_, exit_code)
|
||||||
|
if exit_code ~= 0 then
|
||||||
|
vim.notify("jj command failed", vim.log.levels.WARN)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
local gpgGroup = vim.api.nvim_create_augroup("customGpg", { clear = true })
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "BufReadPre", "FileReadPre" }, {
|
||||||
|
pattern = "*.gpg",
|
||||||
|
group = gpgGroup,
|
||||||
|
callback = function()
|
||||||
|
-- Make sure nothing is written to shada file while editing an encrypted file.
|
||||||
|
vim.opt_local.shada = nil
|
||||||
|
-- We don't want a swap file, as it writes unencrypted data to disk
|
||||||
|
vim.opt_local.swapfile = false
|
||||||
|
-- Switch to binary mode to read the encrypted file
|
||||||
|
vim.opt_local.bin = true
|
||||||
|
-- Save the current 'ch' value to a buffer-local variable
|
||||||
|
vim.b.ch_save = vim.opt_local.ch:get()
|
||||||
|
vim.cmd "set ch=2"
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd({ "BufReadPost", "FileReadPost" }, {
|
||||||
|
pattern = "*.gpg",
|
||||||
|
group = gpgGroup,
|
||||||
|
callback = function()
|
||||||
|
vim.cmd "'[,']!gpg --decrypt 2> /dev/null"
|
||||||
|
-- Switch to normal mode for editing
|
||||||
|
vim.opt_local.bin = false
|
||||||
|
-- Restore the 'ch' value from the buffer-local variable
|
||||||
|
vim.opt_local.ch = vim.b.ch_save
|
||||||
|
vim.cmd "unlet b:ch_save"
|
||||||
|
vim.cmd(":doautocmd BufReadPost " .. vim.fn.expand "%:r")
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Convert all text to encrypted text before writing
|
||||||
|
vim.api.nvim_create_autocmd({ "BufWritePre", "FileWritePre" }, {
|
||||||
|
pattern = "*.gpg",
|
||||||
|
group = gpgGroup,
|
||||||
|
callback = function()
|
||||||
|
-- Switch to binary mode to write the encrypted file
|
||||||
|
vim.opt_local.bin = true
|
||||||
|
-- So we can avoid the armor option
|
||||||
|
vim.cmd("'[,']!gpg --default-recipient-self -e 2>/dev/null")
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
-- Undo the encryption so we are back in the normal text, directly after the file has been written.
|
||||||
|
vim.api.nvim_create_autocmd({ "BufWritePost", "FileWritePost" }, {
|
||||||
|
pattern = "*.gpg",
|
||||||
|
group = gpgGroup,
|
||||||
|
callback = function()
|
||||||
|
vim.cmd("u")
|
||||||
|
-- Switch to normal mode for editing
|
||||||
|
vim.opt_local.bin = false
|
||||||
|
end,
|
||||||
|
})
|
||||||
@@ -0,0 +1,74 @@
|
|||||||
|
-- Keymaps for better default experience
|
||||||
|
-- See `:help vim.keymap.set()`
|
||||||
|
--vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
|
||||||
|
|
||||||
|
-- Remap for dealing with word wrap
|
||||||
|
vim.keymap.set('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
||||||
|
vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
||||||
|
|
||||||
|
vim.keymap.set("v", "J", ":m '>+1<CR>gv=gv")
|
||||||
|
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
||||||
|
|
||||||
|
-- save file
|
||||||
|
-- vim.keymap.set({ "i", "x", "n", "s" }, "<C-s>", "<cmd>w<cr><esc>", { desc = "Save file" })
|
||||||
|
-- vim.keymap.set({ "i", "x", "n", "s" }, "<C-x><C-s>", "<cmd>:qall<cr>", { desc = "Save file" })
|
||||||
|
|
||||||
|
-- better indenting
|
||||||
|
vim.keymap.set("v", "<", "<gv")
|
||||||
|
vim.keymap.set("v", ">", ">gv")
|
||||||
|
|
||||||
|
-- better jumps
|
||||||
|
vim.keymap.set("n", "<C-d>", "<C-d>zz")
|
||||||
|
vim.keymap.set("n", "<C-u>", "<C-u>zz")
|
||||||
|
vim.keymap.set("n", "<C-f>", "<C-f>zz")
|
||||||
|
vim.keymap.set("n", "<C-b>", "<C-b>zz")
|
||||||
|
|
||||||
|
vim.keymap.set("i", "<C-f>", "<C-x><C-f>", { noremap = true, silent = true })
|
||||||
|
vim.keymap.set("i", "<C-b>", "<C-x><C-b>", { noremap = true, silent = true })
|
||||||
|
vim.keymap.set("i", "<C-l>", "<C-x><C-l>", { noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- Paste over currently selected text without yanking it
|
||||||
|
vim.keymap.set("v", "p", '"_dP')
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>p", [["_dP]], { desc = "Paste over currently selected text without yanking it" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>Y", [["+Y]], { noremap = true, silent = true })
|
||||||
|
vim.keymap.set({ "n", "v" }, "<leader>y", [["+y]], { noremap = true, silent = true })
|
||||||
|
|
||||||
|
vim.keymap.set({"n", "v"}, "<leader>d", [["_d]], { noremap = true, silent = true })
|
||||||
|
|
||||||
|
-- new file
|
||||||
|
vim.keymap.set("n", "<leader>bn", "<cmd>enew<cr>", { desc = "New File" })
|
||||||
|
-- vim.keymap.set("n", "<leader>bd", "<cmd>bdelete<cr>", { desc = "Unload Buffer" })
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>`", "<cmd>e #<cr>", { desc = "Switch to Other Buffer" })
|
||||||
|
vim.keymap.set("n", "<leader>bc", "<cmd>tabclose<cr>", { desc = "Close Tab" })
|
||||||
|
|
||||||
|
-- Clear search with <esc>
|
||||||
|
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<cr>', { desc = "clear hlsearch" })
|
||||||
|
-- vim.keymap.set("n", "<leader><esc>", "<cmd>nohlsearch<cr>", { desc = "clear hlsearch" })
|
||||||
|
|
||||||
|
-- Diagnostic keymaps
|
||||||
|
vim.keymap.set('n', '<leader>cl', vim.diagnostic.setloclist, { desc = 'Send diagnostic to location list' })
|
||||||
|
vim.keymap.set("n", "<leader>cq", vim.diagnostic.setqflist, { desc = "Send diagnostic to Quickfix" })
|
||||||
|
-- vim.keymap.set("n", "<leader>gq", "<cmd>copen<cr>", { desc = "Quickfix List" })
|
||||||
|
-- vim.keymap.set("n", "<leader>gl", "<cmd>lopen<cr>", { desc = "Location List" })
|
||||||
|
|
||||||
|
vim.keymap.set('n', '<leader>eb', "<cmd>.w !bash -e<cr>", { desc = "Send line to bash" })
|
||||||
|
vim.keymap.set('n', '<leader>eB', "<cmd>%w !bash -e<cr>", { desc = "Send buffer to bash" })
|
||||||
|
vim.keymap.set('n', '<leader>e.', "<cmd>.!bash -e<cr>", { desc = "Execute current line" })
|
||||||
|
vim.keymap.set('n', '<leader>e%', "<cmd>% !bash -e<cr>", { desc = "Execute current buffer" })
|
||||||
|
vim.keymap.set('n', '<leader>ex', "<cmd>!chmod +x %<cr>", { desc = "Make file executable" })
|
||||||
|
|
||||||
|
vim.keymap.set('n', "<leader>eL", "<cmd>source %<cr>", { desc = "Source current buffer" })
|
||||||
|
vim.keymap.set('n', "<leader>el", "<cmd>.lua<cr>", { desc = "Source current line" })
|
||||||
|
vim.keymap.set('v', "<leader>el", "<cmd>lua<cr>", { desc = "Source current line" })
|
||||||
|
vim.keymap.set('n', '<leader>xu', '<cmd>Lazy sync<cr>', { desc = 'Lazy sync' })
|
||||||
|
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>cx", function()
|
||||||
|
local file = vim.fn.expand "%"
|
||||||
|
local line = vim.fn.line "."
|
||||||
|
vim.fn.setreg("+", string.format("%s:%d", file, line))
|
||||||
|
vim.notify "Copied line reference to clipboard"
|
||||||
|
end, { desc = "Copy line reference to clipboard" })
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
function R(name)
|
||||||
|
require("plenary.reload").reload_module(name)
|
||||||
|
end
|
||||||
|
|
||||||
|
function websearch(url, o)
|
||||||
|
-- Get visual selection or prompt for search
|
||||||
|
local search_term
|
||||||
|
|
||||||
|
-- Check if there's a visual selection
|
||||||
|
if vim.fn.mode() == 'v' or vim.fn.mode() == 'V' then
|
||||||
|
-- Get the visual selection
|
||||||
|
local start_pos = vim.fn.getpos("'<")
|
||||||
|
local end_pos = vim.fn.getpos("'>")
|
||||||
|
local lines = vim.fn.getline(start_pos[2], end_pos[2])
|
||||||
|
local selected_text = table.concat(lines, " ")
|
||||||
|
search_term = selected_text
|
||||||
|
else
|
||||||
|
search_term = (o and o.args) or vim.fn.input("Search: ")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Encode the search term for URLs
|
||||||
|
local escaped = vim.uri_encode(search_term)
|
||||||
|
|
||||||
|
-- Construct and execute the search URL
|
||||||
|
local search_url = (url):format(escaped)
|
||||||
|
|
||||||
|
vim.ui.open(search_url)
|
||||||
|
end
|
||||||
|
-- Command to call the search function
|
||||||
|
vim.api.nvim_create_user_command('DuckDuckGo', function(o) websearch('https://duckduckgo.com/?q=%s', o) end, { nargs = 1 })
|
||||||
|
vim.api.nvim_create_user_command('Docsrs', function(o) websearch('https://docs.rs/%s', o) end, { nargs = 1})
|
||||||
|
vim.api.nvim_create_user_command('RustStd', function(o) websearch('https://doc.rust-lang.org/std/?search=%s', o) end, { nargs = 1})
|
||||||
|
vim.keymap.set({ 'n', 'v'}, '<leader>sW', function() websearch('https://duckduckgo.com/?q=%s', null) end, { desc = "Search on DuckDuckGo" })
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
return {
|
||||||
|
name = "CMake Build",
|
||||||
|
builder = function()
|
||||||
|
return {
|
||||||
|
cmd = { "cmake" },
|
||||||
|
args = { "--build", "build", "--target", "all" },
|
||||||
|
components = {
|
||||||
|
{ "on_output_quickfix", set_diagnostics = true },
|
||||||
|
"on_result_diagnostics",
|
||||||
|
"default",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
condition = {
|
||||||
|
filetype = { "cpp", "c" },
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
return {
|
||||||
|
name = "CMake Create",
|
||||||
|
builder = function()
|
||||||
|
return {
|
||||||
|
cmd = { "cmake" },
|
||||||
|
args = { "-B", "build", "-S", "." },
|
||||||
|
components = {
|
||||||
|
{ "on_output_quickfix", set_diagnostics = true },
|
||||||
|
"on_result_diagnostics",
|
||||||
|
"default",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
condition = {
|
||||||
|
filetype = { "cpp", "c" },
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
return { "user.cmake_create", "user.cmake_build" }
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.problem_patterns = {
|
||||||
|
["$rustc"] = {
|
||||||
|
{
|
||||||
|
regexp = "^(error|warning)(\\[E\\d+\\])*:(.*)$",
|
||||||
|
message = 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
regexp = "^\\s+-+>\\s*([^:]*):(\\d+):(\\d+)$",
|
||||||
|
kind = "location",
|
||||||
|
file = 1,
|
||||||
|
line = 2,
|
||||||
|
column = 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
regexp = "^(\\s|\\d)+(\\||=).*$"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
regexp = "^$"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
M.problem_matchers = {
|
||||||
|
["$rustc"] = {
|
||||||
|
fileLocation = { "relative", "${cwd}" },
|
||||||
|
pattern = "$rustc",
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return M
|
||||||
|
|
||||||
@@ -0,0 +1,301 @@
|
|||||||
|
return {
|
||||||
|
|
||||||
|
{
|
||||||
|
"mfussenegger/nvim-ansible",
|
||||||
|
lazy = true,
|
||||||
|
keys = function()
|
||||||
|
vim.keymap.set('v', '<leader>te', function() require('ansible').run() end, { buffer = true, silent = true })
|
||||||
|
vim.keymap.set('n', '<leader>te', ":w<CR> :lua require('ansible').run()<CR>", { buffer = true, silent = true })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"hat0uma/csvview.nvim",
|
||||||
|
---@module "csvview"
|
||||||
|
---@type CsvView.Options
|
||||||
|
opts = {
|
||||||
|
parser = { comments = { "#", "//" } },
|
||||||
|
keymaps = {
|
||||||
|
-- Text objects for selecting fields
|
||||||
|
textobject_field_inner = { "if", mode = { "o", "x" } },
|
||||||
|
textobject_field_outer = { "af", mode = { "o", "x" } },
|
||||||
|
-- Excel-like navigation:
|
||||||
|
-- Use <Tab> and <S-Tab> to move horizontally between fields.
|
||||||
|
-- Use <Enter> and <S-Enter> to move vertically between rows and place the cursor at the end of the field.
|
||||||
|
-- Note: In terminals, you may need to enable CSI-u mode to use <S-Tab> and <S-Enter>.
|
||||||
|
jump_next_field_end = { "<Tab>", mode = { "n", "v" } },
|
||||||
|
jump_prev_field_end = { "<S-Tab>", mode = { "n", "v" } },
|
||||||
|
jump_next_row = { "<Enter>", mode = { "n", "v" } },
|
||||||
|
jump_prev_row = { "<S-Enter>", mode = { "n", "v" } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cmd = { "CsvViewEnable", "CsvViewDisable", "CsvViewToggle" },
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"obsidian-nvim/obsidian.nvim",
|
||||||
|
lazy = false,
|
||||||
|
ft = "markdown",
|
||||||
|
keys = {
|
||||||
|
{ "<leader>kx", "<cmd>Obsidian extract_note<cr>", desc = "Extract Note", mode = "v" },
|
||||||
|
|
||||||
|
{ "<leader>knn", "<cmd>Obsidian new<cr>", desc = "New Obsidian note", mode = "n" },
|
||||||
|
{ "<leader>knt", "<cmd>Obsidian new_from_template<cr>", desc = "New from template", mode = "n" },
|
||||||
|
|
||||||
|
{ "<leader>ksq", "<cmd>Obsidian quick_switch<cr>", desc = "Quick Switch", mode = "n" },
|
||||||
|
{ "<leader>kss", "<cmd>Obsidian search<cr>", desc = "Search Obsidian notes", mode = "n" },
|
||||||
|
|
||||||
|
{ "<leader>kdt", "<cmd>Obsidian today<cr>", desc = "Daily Today", mode = "n" },
|
||||||
|
{ "<leader>kdy", "<cmd>Obsidian yesterday<cr>", desc = "Daily Yesterday", mode = "n" },
|
||||||
|
{ "<leader>kdw", "<cmd>Obsidian tomorrow<cr>", desc = "Daily Tomorrow", mode = "n" },
|
||||||
|
{ "<leader>kdd", "<cmd>Obsidian dailies<cr>", desc = "Dailies", mode = "n" },
|
||||||
|
{ "<leader>kw", "<cmd>Obsidian workspace<cr>", desc = "Change Workspace", mode = "n" },
|
||||||
|
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("obsidian").setup({
|
||||||
|
legacy_commands = false,
|
||||||
|
picker = {
|
||||||
|
name = "snacks.pick",
|
||||||
|
},
|
||||||
|
ui = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
workspaces = {
|
||||||
|
{
|
||||||
|
name = "NCA notes",
|
||||||
|
path = vim.fn.expand "~" .. "/Documents/nca-notes/",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
notes_subdir = "Inbox",
|
||||||
|
daily_notes = {
|
||||||
|
folder = "Dailies",
|
||||||
|
date_format = "%Y-%m-%d-%a",
|
||||||
|
alias_fomat = "%B %-d, %Y",
|
||||||
|
default_tags = { "daily-notes" },
|
||||||
|
},
|
||||||
|
new_notes_location = "notes_subdir",
|
||||||
|
templates = {
|
||||||
|
subdir = "Templates",
|
||||||
|
date_format = "%Y-%m-%d-%a",
|
||||||
|
time_format = "%H:%M",
|
||||||
|
tags = "",
|
||||||
|
},
|
||||||
|
completion = {
|
||||||
|
nvim_cmp = false,
|
||||||
|
blink = true,
|
||||||
|
min_chars = 2,
|
||||||
|
},
|
||||||
|
preferred_link_style = "wiki",
|
||||||
|
note_id_func = function(title)
|
||||||
|
local suffix = ""
|
||||||
|
if title ~= nil then
|
||||||
|
suffix = title:gsub(" ", "-"):gsub("[^A-Za-z0-9-]", ""):lower()
|
||||||
|
else
|
||||||
|
for _ = 1, 4 do
|
||||||
|
suffix = suffix .. string.char(math.random(65, 90))
|
||||||
|
suffix = tostring(os.time()) .. "-" .. suffix
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return suffix
|
||||||
|
end,
|
||||||
|
|
||||||
|
callbacks = {
|
||||||
|
enter_note = function(note)
|
||||||
|
vim.keymap.set('n', '<leader>k.', '<CMD>Obsidian toggle_checkbox<CR>', { desc = 'toggle checkbox', buffer = note.bufnr, silent = true })
|
||||||
|
vim.keymap.set('n', '<leader>kp', '<CMD>Obsidian paste_img<CR>', { desc = 'paste img', buffer = note.bufnr, silent = true })
|
||||||
|
vim.keymap.set('n', '<leader>kt', '<CMD>Obsidian tags<CR>', { desc = 'tags', buffer = note.bufnr, silent = true })
|
||||||
|
vim.keymap.set('n', '<leader>k`', '<CMD>Obsidian backlinks<CR>', { desc = 'backlinks', buffer = note.bufnr, silent = true })
|
||||||
|
vim.keymap.set('n', '<leader>kx', '<CMD>Obsidian follow_link<CR>', { desc = 'follow link', buffer = note.bufnr, silent = true })
|
||||||
|
vim.keymap.set('n', '<leader>ksl', '<CMD>Obsidian links<CR>', { desc = 'links', buffer = note.bufnr, silent = true })
|
||||||
|
vim.keymap.set('n', '<leader>kr', '<CMD>Obsidian rename<CR>', { desc = 'rename', buffer = note.bufnr, silent = true })
|
||||||
|
vim.keymap.set('n', '<leader>ksc', '<CMD>Obsidian toc<CR>', { desc = 'toc', buffer = note.bufnr, silent = true })
|
||||||
|
vim.keymap.set('v', '<leader>kx', '<CMD>Obsidian link<CR>', { desc = 'links', buffer = note.bufnr, silent = true })
|
||||||
|
vim.keymap.set('v', '<leader>kl', '<CMD>Obsidian link_new<CR>', { desc = 'links', buffer = note.bufnr, silent = true })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"salkin-mada/openscad.nvim",
|
||||||
|
lazy = true,
|
||||||
|
config = function()
|
||||||
|
vim.g.openscad_load_snippets = true
|
||||||
|
require("openscad").setup({})
|
||||||
|
end,
|
||||||
|
dependencies = { "L3MON4D3/LuaSnip", "junegunn/fzf.vim" },
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
-- 'nvim-orgmode/orgmode',
|
||||||
|
'SjB/orgmode',
|
||||||
|
branch = 'sjb-wip',
|
||||||
|
event = 'VeryLazy',
|
||||||
|
ft = { 'org' },
|
||||||
|
config = function()
|
||||||
|
-- Setup orgmode
|
||||||
|
local org = require('orgmode')
|
||||||
|
-- org.setup_ts_grammar()
|
||||||
|
org.setup({
|
||||||
|
ui = {
|
||||||
|
input = {
|
||||||
|
use_vim_ui = true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
org_agenda_files = {'~/Documents/notes/*project*org', '~/Documents/notes/Inbox*org', '~/Documents/journals/*.org'},
|
||||||
|
org_default_notes_file = "~/Documents/notes/Inbox.org",
|
||||||
|
org_todo_keywords = { 'TODO(t)', 'NEXT(n)', '|', 'DONE(d)', 'DELEGATED(a)' },
|
||||||
|
mappings = {
|
||||||
|
capture = {
|
||||||
|
org_capture_refile = 'R',
|
||||||
|
}
|
||||||
|
},
|
||||||
|
hyperlinks = {
|
||||||
|
sources = {
|
||||||
|
-- require("denote.extensions.orgmode"):new({
|
||||||
|
-- files = _G.denote.config.directory,
|
||||||
|
-- }),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
org_capture_templates = {
|
||||||
|
t = {
|
||||||
|
description = "Todo item",
|
||||||
|
template = "* TODO %?\n SCHEDULED: %t\n DEADLINE: %T\n", -- Template content
|
||||||
|
headline = "Tasks",
|
||||||
|
},
|
||||||
|
j = {
|
||||||
|
description = "Journal entry",
|
||||||
|
target = "~/Documents/notes/journals/%<%Y-%m-%d>.org",
|
||||||
|
template = "* %<%Y-%m-%d %H:%M> %?\n",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"akinsho/org-bullets.nvim",
|
||||||
|
config = function()
|
||||||
|
require("org-bullets").setup {
|
||||||
|
concealcursor = false, -- If false then when the cursor is on a line underlying characters are visible
|
||||||
|
symbols = {
|
||||||
|
-- list symbol
|
||||||
|
list = "•",
|
||||||
|
-- headlines can be a list
|
||||||
|
headlines = { "◉", "○", "✸", "✿" },
|
||||||
|
-- or a function that receives the defaults and returns a list
|
||||||
|
headlines = function(default_list)
|
||||||
|
table.insert(default_list, "♥")
|
||||||
|
return default_list
|
||||||
|
end,
|
||||||
|
-- or false to disable the symbol. Works for all symbols
|
||||||
|
headlines = false,
|
||||||
|
-- or a table of tables that provide a name
|
||||||
|
-- and (optional) highlight group for each headline level
|
||||||
|
headlines = {
|
||||||
|
{ "◉", "MyBulletL1" },
|
||||||
|
{ "○", "MyBulletL2" },
|
||||||
|
{ "✸", "MyBulletL3" },
|
||||||
|
{ "✿", "MyBulletL4" },
|
||||||
|
},
|
||||||
|
checkboxes = {
|
||||||
|
half = { "", "@org.checkbox.halfchecked" },
|
||||||
|
done = { "✓", "@org.keyword.done" },
|
||||||
|
todo = { "˟", "@org.keyword.todo" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"chipsenkbeil/org-roam.nvim",
|
||||||
|
lazy = true,
|
||||||
|
ft = { 'org' },
|
||||||
|
opts = {
|
||||||
|
bindings = {
|
||||||
|
prefix = "<LocalLeader>oO",
|
||||||
|
},
|
||||||
|
directory = "~/Documents/notes",
|
||||||
|
extensions = {
|
||||||
|
dailies = {
|
||||||
|
directory = "journals"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"iamcco/markdown-preview.nvim",
|
||||||
|
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
||||||
|
ft = { "markdown" },
|
||||||
|
init = function()
|
||||||
|
vim.g.mkdp_filetypes = { "markdown" }
|
||||||
|
end,
|
||||||
|
keys = function()
|
||||||
|
vim.keymap.set("n", "<leader>xmp", "<cmd>MarkdownPreview<CR>", { desc ="Markdown Preview" })
|
||||||
|
vim.keymap.set("n", "<leader>xms", "<cmd>MarkdownPreviewStop<CR>", { desc ="Markdown Preview Stop" })
|
||||||
|
end,
|
||||||
|
build = function() vim.fn["mkdp#util#install"]() end,
|
||||||
|
--build = "cd app && npm install",
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"lervag/vimtex",
|
||||||
|
ft = "tex", -- Load only for .tex files
|
||||||
|
config = function()
|
||||||
|
vim.g.tex_flavor = "latex"
|
||||||
|
vim.g.vimtex_view_method = "zathura" -- Change to your preferred PDF viewer
|
||||||
|
vim.g.vimtex_quickfix_mode = 0 -- Disable quickfix window
|
||||||
|
-- vim.opt.conceallevel = 2 -- Enable concealment for nicer inline math display
|
||||||
|
vim.g.tex_conceal = "abdmg" -- Conceal accents, bold, delimiters, math, Greek
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
after = { 'nvim-treesitter' },
|
||||||
|
requires = { 'nvim-tree/nvim-web-devicons', opt = true },
|
||||||
|
ft = { 'markdown', 'codecompanion', 'copilot-chat' },
|
||||||
|
---@module 'render-markdown'
|
||||||
|
---@type render.md.UserConfig
|
||||||
|
config = function()
|
||||||
|
require('render-markdown').setup({
|
||||||
|
completions = { lsp = { enabled = true } },
|
||||||
|
-- render_modes = { 'n', 'v' },
|
||||||
|
render_modes = true,
|
||||||
|
enabled = true,
|
||||||
|
anti_conceal = {
|
||||||
|
enabled = false,
|
||||||
|
},
|
||||||
|
quote = { repeat_linebreak = true },
|
||||||
|
checkbox = {
|
||||||
|
-- unchecked = { icon = '✘ ' },
|
||||||
|
checked = { icon = '✔ ', scope_highlight = '@markup.strikethrough' },
|
||||||
|
custom = {
|
||||||
|
todo = { raw = '[-]', rendered = ' ', highlight = 'RenderMarkdownTodo', scope_highlight = nil },
|
||||||
|
important = { raw = '[~]', rendered = ' ', highlight = 'DiagnosticWarn', },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
latex = {
|
||||||
|
enabled = false,
|
||||||
|
converter = "latex2text",
|
||||||
|
},
|
||||||
|
win_options = {
|
||||||
|
conceallevel = {
|
||||||
|
default = 0,
|
||||||
|
rendered = 2, -- Conceal level 2: hide LaTeX code fully
|
||||||
|
},
|
||||||
|
concealcursor = {
|
||||||
|
default = "",
|
||||||
|
rendered = "n", -- Conceal only in normal mode
|
||||||
|
},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,441 @@
|
|||||||
|
return {
|
||||||
|
|
||||||
|
{ "nvim-lua/plenary.nvim", lazy = true },
|
||||||
|
|
||||||
|
{ "nvim-tree/nvim-web-devicons", lazy = true, opts = {} },
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.extra',
|
||||||
|
lazy = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.ai',
|
||||||
|
lazy = false,
|
||||||
|
version = '*',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local MiniExtra = require('mini.extra')
|
||||||
|
local ai = require('mini.ai')
|
||||||
|
local spec_treesitter = ai.gen_spec.treesitter
|
||||||
|
ai.setup({
|
||||||
|
custom_textobjects = {
|
||||||
|
B = MiniExtra.gen_ai_spec.buffer(),
|
||||||
|
I = MiniExtra.gen_ai_spec.indent(),
|
||||||
|
L = MiniExtra.gen_ai_spec.line(),
|
||||||
|
N = MiniExtra.gen_ai_spec.number(),
|
||||||
|
F = spec_treesitter({ a = '@function.outer', i = '@function.inner' }),
|
||||||
|
C = spec_treesitter({ a = '@comment.outer', i = '@comment.inner' }),
|
||||||
|
P = spec_treesitter({ a = '@parameter.outer', i = '@parameter.inner' }),
|
||||||
|
O = spec_treesitter({ a = '@block.outter', i = '@block.inner' }),
|
||||||
|
k = spec_treesitter({ a = '@class.outer', i = '@class.inner' }),
|
||||||
|
o = spec_treesitter({
|
||||||
|
a = { '@conditional.outer', '@loop.outer' },
|
||||||
|
i = { '@conditional.inner', '@loop.inner' },
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.move',
|
||||||
|
lazy = false,
|
||||||
|
version = '*',
|
||||||
|
opts = {}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.align',
|
||||||
|
lazy = false,
|
||||||
|
version = '*',
|
||||||
|
opts = {}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.bracketed',
|
||||||
|
lazy = false,
|
||||||
|
version = '*',
|
||||||
|
opts = {}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.operators',
|
||||||
|
lazy = false,
|
||||||
|
version = '*',
|
||||||
|
opts = {
|
||||||
|
evaluate = { prefix = 'g|', func = nil, },
|
||||||
|
exchange = { prefix = 'g.', reindent_linewise = true, },
|
||||||
|
multiply = { prefix = 'gm', func = nil, },
|
||||||
|
replace = { prefix = 'gk', reindent_linewise = true, },
|
||||||
|
sort = { prefix = 'gs', func = nil, }
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.surround',
|
||||||
|
lazy = false,
|
||||||
|
version = '*',
|
||||||
|
opts = {
|
||||||
|
-- Add custom surroundings to be used on top of builtin ones. For more
|
||||||
|
-- information with examples, see `:h MiniSurround.config`.
|
||||||
|
-- custom_surroundings = {
|
||||||
|
-- s = { input = { '%[%[().-()%]%]' }, output = { left = '[[', right = ']]' } },
|
||||||
|
-- },
|
||||||
|
mappings = {
|
||||||
|
add = 'sa', -- Add surrounding in Normal and Visual modes
|
||||||
|
delete = 'sd', -- Delete surrounding
|
||||||
|
find = 'sf', -- Find surrounding (to the right)
|
||||||
|
find_left = 'sF', -- Find surrounding (to the left)
|
||||||
|
highlight = 'sh', -- Highlight surrounding
|
||||||
|
replace = 'sr', -- Replace surrounding
|
||||||
|
update_n_lines = 'sn', -- Update `n_lines`
|
||||||
|
|
||||||
|
suffix_last = 'l', -- Suffix to search with "prev" method
|
||||||
|
suffix_next = 'n', -- Suffix to search with "next" method
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.splitjoin',
|
||||||
|
lazy = false,
|
||||||
|
version = false,
|
||||||
|
config = function()
|
||||||
|
require('mini.splitjoin').setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"nvim-mini/mini.hipatterns",
|
||||||
|
lazy = false,
|
||||||
|
event = "BufReadPre",
|
||||||
|
config = function()
|
||||||
|
local MiniExtra = require("mini.extra")
|
||||||
|
local hi_words = MiniExtra.gen_highlighter.words
|
||||||
|
require('mini.hipatterns').setup({
|
||||||
|
highlighters = {
|
||||||
|
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
|
||||||
|
fixme = hi_words({ 'FIXME', 'Fixme', 'fixme' }, "MiniHipatternsFixme"),
|
||||||
|
hack = hi_words({ 'HACK', 'Hack', 'hack' }, "MiniHipatternsHack"),
|
||||||
|
todo = hi_words({ 'TODO', 'Todo', 'todo' }, "MiniHipatternsTodo"),
|
||||||
|
note = hi_words({ 'NOTE', 'Note', 'note' }, "MiniHipatternsNote"),
|
||||||
|
done = hi_words({ 'DONE', 'Done', 'done' }, "MiniHipatternsFixme"),
|
||||||
|
|
||||||
|
-- Highlight hex color strings (`#rrggbb`) using that color
|
||||||
|
-- hex_color = hipatterns.gen_highlighter.hex_color(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.files',
|
||||||
|
event = 'VeryLazy',
|
||||||
|
version = '*',
|
||||||
|
keys = {
|
||||||
|
{ "-", function() require("mini.files").open(vim.api.nvim_buf_get_name(0)) end, desc = "Open parent directory", mode = "n" },
|
||||||
|
{ "<leader>-", function() require("mini.files").open() end, desc = "File Explore", mode = "n" },
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
mappings = {
|
||||||
|
go_in = "<CR>", -- Map both Enter and L to enter directories or open files
|
||||||
|
go_in_plus = "L",
|
||||||
|
go_out = "-",
|
||||||
|
go_out_plus = "H",
|
||||||
|
close = "<Esc>",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.sessions',
|
||||||
|
version = '*',
|
||||||
|
lazy = false,
|
||||||
|
config = function()
|
||||||
|
require('mini.sessions').setup()
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
priority = 1000,
|
||||||
|
lazy = false,
|
||||||
|
---@type snacks.Config
|
||||||
|
opts = {
|
||||||
|
animate = {
|
||||||
|
enabled = false,
|
||||||
|
duration = { step = 1, total = 1 },
|
||||||
|
easing = "linear",
|
||||||
|
},
|
||||||
|
bigfile = { enabled = true },
|
||||||
|
dashboard = { enabled = false },
|
||||||
|
explorer = { enabled = false },
|
||||||
|
image = {
|
||||||
|
enabled = true,
|
||||||
|
inline = false,
|
||||||
|
scale = 3, -- nil | 1 (default) | 2 | 3 | ...
|
||||||
|
doc = {
|
||||||
|
inline = true,
|
||||||
|
enabled = true,
|
||||||
|
max_width = nil,
|
||||||
|
max_height = nil,
|
||||||
|
conceal = true,
|
||||||
|
},
|
||||||
|
math = {
|
||||||
|
enabled = true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
terminal = {
|
||||||
|
bo = {
|
||||||
|
filetype = "snacks_terminal",
|
||||||
|
},
|
||||||
|
win = { style = "terminal" },
|
||||||
|
wo = {},
|
||||||
|
keys = {
|
||||||
|
q = "hide",
|
||||||
|
gf = function(self)
|
||||||
|
local f = vim.fn.findfile(vim.fn.expand("<cfile>"), "**")
|
||||||
|
if f == "" then
|
||||||
|
Snacks.notify.warn("No file under cursor")
|
||||||
|
else
|
||||||
|
self:hide()
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.cmd("e " .. f)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
term_normal = {
|
||||||
|
"<esc><esc>",
|
||||||
|
function(self)
|
||||||
|
self.esc_timer = self.esc_timer or (vim.uv or vim.loop).new_timer()
|
||||||
|
if self.esc_timer:is_active() then
|
||||||
|
self.esc_timer:stop()
|
||||||
|
vim.cmd("stopinsert")
|
||||||
|
else
|
||||||
|
self.esc_timer:start(250, 0, function() end)
|
||||||
|
return "<esc>"
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
mode = "t",
|
||||||
|
expr = true,
|
||||||
|
desc = "Double escape to normal mode",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
indent = { enabled = false },
|
||||||
|
notifier = {
|
||||||
|
enabled = true,
|
||||||
|
timeout = 1000,
|
||||||
|
},
|
||||||
|
picker = {
|
||||||
|
enabled = true,
|
||||||
|
layout = { preset = "ivy", layout = { position = "bottom" } },
|
||||||
|
frecency = true,
|
||||||
|
history_bonus = true,
|
||||||
|
projects = {
|
||||||
|
dev = { "~/Projects", },
|
||||||
|
},
|
||||||
|
win = {
|
||||||
|
input = {
|
||||||
|
keys = {
|
||||||
|
['<c-e>'] = { 'layout_right', mode = { 'i', 'n' } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sources = {
|
||||||
|
files = {
|
||||||
|
-- add a custom action
|
||||||
|
actions = {
|
||||||
|
create_if_missing = function(picker, item)
|
||||||
|
-- When typing in the input, item may be nil.
|
||||||
|
-- We'll use the input text as the intended file path.
|
||||||
|
local input = picker.input and picker.input:get() or ""
|
||||||
|
if input == "" then return end
|
||||||
|
|
||||||
|
-- Make it relative to picker cwd if it’s not absolute
|
||||||
|
local cwd = picker.opts.cwd or vim.loop.cwd()
|
||||||
|
local path = input
|
||||||
|
if not path:match("^/") and not path:match("^%a:[/\\]") then
|
||||||
|
path = cwd .. "/" .. path
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Normalize path (optional)
|
||||||
|
path = vim.fn.fnamemodify(path, ":p")
|
||||||
|
|
||||||
|
-- If file exists, just open it
|
||||||
|
if vim.loop.fs_stat(path) then
|
||||||
|
picker:close()
|
||||||
|
vim.cmd.edit(path)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Ensure parent dirs exist (optional but nice)
|
||||||
|
vim.fn.mkdir(vim.fn.fnamemodify(path, ":h"), "p")
|
||||||
|
|
||||||
|
-- Open a new buffer at that path (creates buffer even if file missing)
|
||||||
|
picker:close()
|
||||||
|
vim.cmd.edit(path)
|
||||||
|
-- At this point buffer is new + unnamed-on-disk until you :w
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- bind the action to a key in the picker UI
|
||||||
|
win = {
|
||||||
|
input = {
|
||||||
|
keys = {
|
||||||
|
["<M-n>"] = { "create_if_missing", mode = { "i", "n" }, desc = "Create file from input" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
list = {
|
||||||
|
keys = {
|
||||||
|
["<M-n>"] = { "create_if_missing", mode = { "n" }, desc = "Create file from input" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
scope = { enabled = false },
|
||||||
|
scratch = {
|
||||||
|
ft = "markdown",
|
||||||
|
},
|
||||||
|
statuscolumn = { enabled = true },
|
||||||
|
styles = {
|
||||||
|
notification = {
|
||||||
|
-- wo = { wrap = true } -- Wrap notifications
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
-- Org Search
|
||||||
|
{ "<leader>o/", function() Snacks.picker.grep({dirs = { os.getenv("HOME") .. "/Documents/notes" }}) end, desc = "Search Org Files" },
|
||||||
|
-- { "<leader>o/", function() Snacks.picker.files({ cwd = os.getenv("HOME") .. "/Documents/notes" }) end, desc = "Find Document" },
|
||||||
|
-- Top Pickers & Explorer
|
||||||
|
{ "<leader><Space>", function() Snacks.picker.smart() end, desc = "Smart Find Files" },
|
||||||
|
{ "<leader>j", function() Snacks.picker.files({args = { "--no-require-git" }}) end, desc = "Find Files" },
|
||||||
|
{ "<leader>,", function() Snacks.picker.buffers() end, desc = "Buffers" },
|
||||||
|
{ "<leader>/", function() Snacks.picker.grep() end, desc = "Grep" },
|
||||||
|
{ "<leader>:", function() Snacks.picker.command_history() end, desc = "Command History" },
|
||||||
|
{ "<leader>n", function() Snacks.picker.notifications() end, desc = "Notification History" },
|
||||||
|
{ "<leader>i", function() Snacks.picker.lsp_symbols() end, desc = "Symbols" },
|
||||||
|
{ "<leader>I", function() Snacks.picker.lsp_workspace_symbols() end, desc = "LSP Workspace Symbols" },
|
||||||
|
-- { "<leader>e", function() Snacks.explorer() end, desc = "File Explorer" },
|
||||||
|
-- find
|
||||||
|
{ "<leader>fb", function() Snacks.picker.buffers() end, desc = "Buffers" },
|
||||||
|
{ "<leader>fc", function() Snacks.picker.files({ cwd = vim.fn.stdpath("config") }) end, desc = "Find Config File" },
|
||||||
|
{ "<leader>ff", function() Snacks.picker.files() end, desc = "Find Files" },
|
||||||
|
{ "<leader>fg", function() Snacks.picker.git_files() end, desc = "Find Git Files" },
|
||||||
|
{ "<leader>fp", function() Snacks.picker.projects() end, desc = "Projects" },
|
||||||
|
{ "<leader>fr", function() Snacks.picker.recent() end, desc = "Recent" },
|
||||||
|
-- git
|
||||||
|
{ "<leader>gb", function() Snacks.picker.git_branches() end, desc = "Git Branches" },
|
||||||
|
{ "<leader>gl", function() Snacks.picker.git_log() end, desc = "Git Log" },
|
||||||
|
{ "<leader>gL", function() Snacks.picker.git_log_line() end, desc = "Git Log Line" },
|
||||||
|
{ "<leader>gs", function() Snacks.picker.git_status() end, desc = "Git Status" },
|
||||||
|
{ "<leader>gS", function() Snacks.picker.git_stash() end, desc = "Git Stash" },
|
||||||
|
{ "<leader>gd", function() Snacks.picker.git_diff() end, desc = "Git Diff (Hunks)" },
|
||||||
|
{ "<leader>gf", function() Snacks.picker.git_log_file() end, desc = "Git Log File" },
|
||||||
|
-- Grep
|
||||||
|
{ "<leader>sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" },
|
||||||
|
{ "<leader>sB", function() Snacks.picker.grep_buffers() end, desc = "Grep Open Buffers" },
|
||||||
|
{ "<leader>sg", function() Snacks.picker.grep() end, desc = "Grep" },
|
||||||
|
{ "<leader>sw", function() Snacks.picker.grep_word() end, desc = "Visual selection or word", mode = { "n", "x" } },
|
||||||
|
-- search
|
||||||
|
{ '<leader>s"', function() Snacks.picker.registers() end, desc = "Registers" },
|
||||||
|
{ '<leader>s/', function() Snacks.picker.search_history() end, desc = "Search History" },
|
||||||
|
{ "<leader>sa", function() Snacks.picker.autocmds() end, desc = "Autocmds" },
|
||||||
|
{ "<leader>sb", function() Snacks.picker.lines() end, desc = "Buffer Lines" },
|
||||||
|
{ "<leader>sc", function() Snacks.picker.command_history() end, desc = "Command History" },
|
||||||
|
{ "<leader>sC", function() Snacks.picker.commands() end, desc = "Commands" },
|
||||||
|
{ "<leader>sd", function() Snacks.picker.diagnostics() end, desc = "Diagnostics" },
|
||||||
|
{ "<leader>sD", function() Snacks.picker.diagnostics_buffer() end, desc = "Buffer Diagnostics" },
|
||||||
|
{ "<leader>sh", function() Snacks.picker.help() end, desc = "Help Pages" },
|
||||||
|
{ "<leader>sH", function() Snacks.picker.highlights() end, desc = "Highlights" },
|
||||||
|
{ "<leader>si", function() Snacks.picker.icons() end, desc = "Icons" },
|
||||||
|
{ "<leader>sj", function() Snacks.picker.jumps() end, desc = "Jumps" },
|
||||||
|
{ "<leader>sk", function() Snacks.picker.keymaps() end, desc = "Keymaps" },
|
||||||
|
{ "<leader>sl", function() Snacks.picker.loclist() end, desc = "Location List" },
|
||||||
|
{ "<leader>sm", function() Snacks.picker.marks() end, desc = "Marks" },
|
||||||
|
{ "<leader>sM", function() Snacks.picker.man() end, desc = "Man Pages" },
|
||||||
|
{ "<leader>sp", function() Snacks.picker.lazy() end, desc = "Search for Plugin Spec" },
|
||||||
|
{ "<leader>sq", function() Snacks.picker.qflist() end, desc = "Quickfix List" },
|
||||||
|
{ "<leader>sR", function() Snacks.picker.resume() end, desc = "Resume" },
|
||||||
|
{ "<leader>su", function() Snacks.picker.undo() end, desc = "Undo History" },
|
||||||
|
{ "<leader>sz", function() Snacks.picker.zoxide() end, desc = "Zoxide" },
|
||||||
|
{ "<leader>uC", function() Snacks.picker.colorschemes() end, desc = "Colorschemes" },
|
||||||
|
-- LSP
|
||||||
|
{ "gd", function() Snacks.picker.lsp_definitions() end, desc = "Goto Definition" },
|
||||||
|
{ "gD", function() Snacks.picker.lsp_declarations() end, desc = "Goto Declaration" },
|
||||||
|
{ "grr", function() Snacks.picker.lsp_references() end, nowait = true, desc = "References" },
|
||||||
|
{ "gri", function() Snacks.picker.lsp_implementations() end, desc = "Goto Implementation" },
|
||||||
|
{ "gy", function() Snacks.picker.lsp_type_definitions() end, desc = "Goto T[y]pe Definition" },
|
||||||
|
{ "<leader>ss", function() Snacks.picker.lsp_symbols() end, desc = "LSP Symbols" },
|
||||||
|
{ "<leader>sS", function() Snacks.picker.lsp_workspace_symbols() end, desc = "LSP Workspace Symbols" },
|
||||||
|
-- Other
|
||||||
|
{ "<leader>Z", function() Snacks.zen() end, desc = "Toggle Zen Mode" },
|
||||||
|
{ "<leader>z", function() Snacks.zen.zoom() end, desc = "Toggle Zoom" },
|
||||||
|
{ "<leader>.", function() Snacks.scratch() end, desc = "Toggle Scratch Buffer" },
|
||||||
|
{ "<leader>S", function() Snacks.scratch.select() end, desc = "Select Scratch Buffer" },
|
||||||
|
-- { "<leader>n", function() Snacks.notifier.show_history() end, desc = "Notification History" },
|
||||||
|
{ "<leader>bd", function() Snacks.bufdelete() end, desc = "Delete Buffer" },
|
||||||
|
{ "<leader>bR", function() Snacks.rename.rename_file() end, desc = "Rename File" },
|
||||||
|
{ "<leader>gB", function() Snacks.gitbrowse() end, desc = "Git Browse", mode = { "n", "v" } },
|
||||||
|
{ "<leader>gg", function() Snacks.lazygit() end, desc = "Lazygit" },
|
||||||
|
{ "<leader>un", function() Snacks.notifier.hide() end, desc = "Dismiss All Notifications" },
|
||||||
|
{ "<c-_>", function() Snacks.terminal.toggle() end, desc = "Toggle Terminal", mode = { "n", "t" } },
|
||||||
|
-- { "<Esc>", "<C-\\><C-n>", desc = "Exit Terminal Mode", mode = { "t" } },
|
||||||
|
{ "]]", function() Snacks.words.jump(vim.v.count1) end, desc = "Next Reference", mode = { "n", "t" } },
|
||||||
|
{ "[[", function() Snacks.words.jump(-vim.v.count1) end, desc = "Prev Reference", mode = { "n", "t" } },
|
||||||
|
{
|
||||||
|
"<leader>xN",
|
||||||
|
desc = "Neovim News",
|
||||||
|
function()
|
||||||
|
Snacks.win({
|
||||||
|
file = vim.api.nvim_get_runtime_file("doc/news.txt", false)[1],
|
||||||
|
width = 0.6,
|
||||||
|
height = 0.6,
|
||||||
|
wo = {
|
||||||
|
spell = false,
|
||||||
|
wrap = false,
|
||||||
|
signcolumn = "yes",
|
||||||
|
statuscolumn = " ",
|
||||||
|
conceallevel = 3,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
init = function()
|
||||||
|
vim.api.nvim_create_autocmd("User", {
|
||||||
|
pattern = "VeryLazy",
|
||||||
|
callback = function()
|
||||||
|
-- Setup some globals for debugging (lazy-loaded)
|
||||||
|
_G.dd = function(...)
|
||||||
|
Snacks.debug.inspect(...)
|
||||||
|
end
|
||||||
|
_G.bt = function()
|
||||||
|
Snacks.debug.backtrace()
|
||||||
|
end
|
||||||
|
vim.print = _G.dd -- Override print to use snacks for `:=` command
|
||||||
|
|
||||||
|
-- Create some toggle mappings
|
||||||
|
Snacks.toggle.option("spell", { name = "Spelling" }):map("<leader>us")
|
||||||
|
Snacks.toggle.option("wrap", { name = "Wrap" }):map("<leader>uw")
|
||||||
|
Snacks.toggle.option("relativenumber", { name = "Relative Number" }):map("<leader>uL")
|
||||||
|
Snacks.toggle.diagnostics():map("<leader>ud")
|
||||||
|
Snacks.toggle.line_number():map("<leader>ul")
|
||||||
|
Snacks.toggle.option("conceallevel", { off = 0, on = vim.o.conceallevel > 0 and vim.o.conceallevel or 2 }):map("<leader>uc")
|
||||||
|
Snacks.toggle.treesitter():map("<leader>uT")
|
||||||
|
Snacks.toggle.option("background", { off = "light", on = "dark", name = "Dark Background" }):map("<leader>ub")
|
||||||
|
Snacks.toggle.inlay_hints():map("<leader>uh")
|
||||||
|
Snacks.toggle.indent():map("<leader>ug")
|
||||||
|
Snacks.toggle.dim():map("<leader>uD")
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,355 @@
|
|||||||
|
return {
|
||||||
|
|
||||||
|
{
|
||||||
|
'Civitasv/cmake-tools.nvim',
|
||||||
|
lazy = true,
|
||||||
|
config = function ()
|
||||||
|
local osys = require("cmake-tools.osys")
|
||||||
|
require("cmake-tools").setup {
|
||||||
|
cmake_command = "cmake", -- this is used to specify cmake command path
|
||||||
|
ctest_command = "ctest", -- this is used to specify ctest command path
|
||||||
|
cmake_use_preset = true,
|
||||||
|
cmake_regenerate_on_save = true, -- auto generate when save CMakeLists.txt
|
||||||
|
cmake_generate_options = { "-DCMAKE_EXPORT_COMPILE_COMMANDS=1" }, -- this will be passed when invoke `CMakeGenerate`
|
||||||
|
cmake_build_options = {}, -- this will be passed when invoke `CMakeBuild`
|
||||||
|
-- support macro expansion:
|
||||||
|
-- ${kit}
|
||||||
|
-- ${kitGenerator}
|
||||||
|
-- ${variant:xx}
|
||||||
|
cmake_build_directory = function()
|
||||||
|
if osys.iswin32 then
|
||||||
|
return "out\\${variant:buildType}"
|
||||||
|
end
|
||||||
|
return "out/${variant:buildType}"
|
||||||
|
end, -- this is used to specify generate directory for cmake, allows macro expansion, can be a string or a function returning the string, relative to cwd.
|
||||||
|
cmake_soft_link_compile_commands = true, -- this will automatically make a soft link from compile commands file to project root dir
|
||||||
|
cmake_compile_commands_from_lsp = false, -- this will automatically set compile commands file location using lsp, to use it, please set `cmake_soft_link_compile_commands` to false
|
||||||
|
cmake_kits_path = nil, -- this is used to specify global cmake kits path, see CMakeKits for detailed usage
|
||||||
|
cmake_variants_message = {
|
||||||
|
short = { show = true }, -- whether to show short message
|
||||||
|
long = { show = true, max_length = 40 }, -- whether to show long message
|
||||||
|
},
|
||||||
|
cmake_dap_configuration = { -- debug settings for cmake
|
||||||
|
name = "cpp",
|
||||||
|
type = "codelldb",
|
||||||
|
request = "launch",
|
||||||
|
stopOnEntry = false,
|
||||||
|
runInTerminal = true,
|
||||||
|
console = "integratedTerminal",
|
||||||
|
},
|
||||||
|
cmake_executor = { -- executor to use
|
||||||
|
name = "quickfix", -- name of the executor
|
||||||
|
opts = {}, -- the options the executor will get, possible values depend on the executor type. See `default_opts` for possible values.
|
||||||
|
default_opts = { -- a list of default and possible values for executors
|
||||||
|
quickfix = {
|
||||||
|
show = "always", -- "always", "only_on_error"
|
||||||
|
position = "belowright", -- "vertical", "horizontal", "leftabove", "aboveleft", "rightbelow", "belowright", "topleft", "botright", use `:h vertical` for example to see help on them
|
||||||
|
size = 10,
|
||||||
|
encoding = "utf-8", -- if encoding is not "utf-8", it will be converted to "utf-8" using `vim.fn.iconv`
|
||||||
|
auto_close_when_success = true, -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful.
|
||||||
|
},
|
||||||
|
toggleterm = {
|
||||||
|
direction = "float", -- 'vertical' | 'horizontal' | 'tab' | 'float'
|
||||||
|
close_on_exit = false, -- whether close the terminal when exit
|
||||||
|
auto_scroll = true, -- whether auto scroll to the bottom
|
||||||
|
singleton = true, -- single instance, autocloses the opened one, if present
|
||||||
|
},
|
||||||
|
overseer = {
|
||||||
|
new_task_opts = {
|
||||||
|
strategy = {
|
||||||
|
"toggleterm",
|
||||||
|
direction = "horizontal",
|
||||||
|
autos_croll = true,
|
||||||
|
quit_on_exit = "success"
|
||||||
|
}
|
||||||
|
}, -- options to pass into the `overseer.new_task` command
|
||||||
|
on_new_task = function(task)
|
||||||
|
require("overseer").open(
|
||||||
|
{ enter = false, direction = "right" }
|
||||||
|
)
|
||||||
|
end, -- a function that gets overseer.Task when it is created, before calling `task:start`
|
||||||
|
},
|
||||||
|
terminal = {
|
||||||
|
name = "Main Terminal",
|
||||||
|
prefix_name = "[CMakeTools]: ", -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name
|
||||||
|
split_direction = "horizontal", -- "horizontal", "vertical"
|
||||||
|
split_size = 11,
|
||||||
|
|
||||||
|
-- Window handling
|
||||||
|
single_terminal_per_instance = true, -- Single viewport, multiple windows
|
||||||
|
single_terminal_per_tab = true, -- Single viewport per tab
|
||||||
|
keep_terminal_static_location = true, -- Static location of the viewport if avialable
|
||||||
|
auto_resize = true, -- Resize the terminal if it already exists
|
||||||
|
|
||||||
|
-- Running Tasks
|
||||||
|
start_insert = false, -- If you want to enter terminal with :startinsert upon using :CMakeRun
|
||||||
|
focus = false, -- Focus on terminal when cmake task is launched.
|
||||||
|
do_not_add_newline = false, -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter.
|
||||||
|
}, -- terminal executor uses the values in cmake_terminal
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cmake_runner = { -- runner to use
|
||||||
|
name = "terminal", -- name of the runner
|
||||||
|
opts = {}, -- the options the runner will get, possible values depend on the runner type. See `default_opts` for possible values.
|
||||||
|
default_opts = { -- a list of default and possible values for runners
|
||||||
|
quickfix = {
|
||||||
|
show = "always", -- "always", "only_on_error"
|
||||||
|
position = "belowright", -- "bottom", "top"
|
||||||
|
size = 10,
|
||||||
|
encoding = "utf-8",
|
||||||
|
auto_close_when_success = true, -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful.
|
||||||
|
},
|
||||||
|
toggleterm = {
|
||||||
|
direction = "float", -- 'vertical' | 'horizontal' | 'tab' | 'float'
|
||||||
|
close_on_exit = false, -- whether close the terminal when exit
|
||||||
|
auto_scroll = true, -- whether auto scroll to the bottom
|
||||||
|
singleton = true, -- single instance, autocloses the opened one, if present
|
||||||
|
},
|
||||||
|
overseer = {
|
||||||
|
new_task_opts = {
|
||||||
|
strategy = {
|
||||||
|
"toggleterm",
|
||||||
|
direction = "horizontal",
|
||||||
|
autos_croll = true,
|
||||||
|
quit_on_exit = "success"
|
||||||
|
}
|
||||||
|
}, -- options to pass into the `overseer.new_task` command
|
||||||
|
on_new_task = function(task)
|
||||||
|
end, -- a function that gets overseer.Task when it is created, before calling `task:start`
|
||||||
|
},
|
||||||
|
terminal = {
|
||||||
|
name = "Main Terminal",
|
||||||
|
prefix_name = "[CMakeTools]: ", -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name
|
||||||
|
split_direction = "horizontal", -- "horizontal", "vertical"
|
||||||
|
split_size = 11,
|
||||||
|
|
||||||
|
-- Window handling
|
||||||
|
single_terminal_per_instance = true, -- Single viewport, multiple windows
|
||||||
|
single_terminal_per_tab = true, -- Single viewport per tab
|
||||||
|
keep_terminal_static_location = true, -- Static location of the viewport if avialable
|
||||||
|
auto_resize = true, -- Resize the terminal if it already exists
|
||||||
|
|
||||||
|
-- Running Tasks
|
||||||
|
start_insert = false, -- If you want to enter terminal with :startinsert upon using :CMakeRun
|
||||||
|
focus = false, -- Focus on terminal when cmake task is launched.
|
||||||
|
do_not_add_newline = false, -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter.
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cmake_notifications = {
|
||||||
|
runner = { enabled = true },
|
||||||
|
executor = { enabled = true },
|
||||||
|
spinner = { "⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏" }, -- icons used for progress display
|
||||||
|
refresh_rate_ms = 100, -- how often to iterate icons
|
||||||
|
},
|
||||||
|
cmake_virtual_text_support = true, -- Show the target related to current file using virtual text (at right corner)
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'mistweaverco/kulala.nvim',
|
||||||
|
ft = {"http", "rest"},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"HakonHarnes/img-clip.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {
|
||||||
|
-- add options here
|
||||||
|
-- or leave it empty to use the default settings
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
-- suggested keymap
|
||||||
|
{ "<leader>kp", "<cmd>PasteImage<cr>", desc = "Paste image from system clipboard" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"uhs-robert/sshfs.nvim",
|
||||||
|
opts = {
|
||||||
|
mounts = {
|
||||||
|
base_dir = vim.fn.expand("$HOME") .. "/Public", -- where remote mounts are created
|
||||||
|
},
|
||||||
|
-- Refer to the configuration section below
|
||||||
|
-- or leave empty for defaults
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"esmuellert/codediff.nvim",
|
||||||
|
dependencies = { "MunifTanjim/nui.nvim" },
|
||||||
|
cmd = "CodeDiff",
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"ejrichards/mise.nvim",
|
||||||
|
keys = {
|
||||||
|
{ "<leader>xm", "<cmd>Lazy reload mise.nvim<cr>", desc = "Reload mise environment" }
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
unset_vars = true,
|
||||||
|
load_on_setup = true,
|
||||||
|
force_run = true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'NeogitOrg/neogit',
|
||||||
|
dependencies = {
|
||||||
|
'nvim-lua/plenary.nvim', -- required
|
||||||
|
'sindrets/diffview.nvim',
|
||||||
|
},
|
||||||
|
lazy = true,
|
||||||
|
keys = {
|
||||||
|
{ '<leader>gn', "<cmd>Neogit kind=auto<cr>", desc = 'Neogit'},
|
||||||
|
{ '<leader>gN', "<cmd>Neogit kind=floating<cr>", desc = 'Neogit'}
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
-- disable_context_highlighting = true,
|
||||||
|
disable_commit_confirmation = true,
|
||||||
|
disable_insert_on_commit = false,
|
||||||
|
disable_signs = true,
|
||||||
|
integrations = { diffview = true, fz_lua = false },
|
||||||
|
auto_refresh = false,
|
||||||
|
console_timeout = 5000,
|
||||||
|
auto_show_console = false,
|
||||||
|
sections = {
|
||||||
|
stashes = {
|
||||||
|
folded = false,
|
||||||
|
},
|
||||||
|
recent = { folded = false },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'stevearc/overseer.nvim',
|
||||||
|
keys = {
|
||||||
|
{ "<leader>xo", "<cmd>OverseerOpen<CR>", desc = "Open Overseer" },
|
||||||
|
{ "<leader>to", "<cmd>OverseerToggle<CR>", desc = "Overseer Toggle" },
|
||||||
|
{ "<F5>", "<cmd>OverseerRun<CR>", desc = "Run Overseer" },
|
||||||
|
{ "<F6>", "<cmd>OverseerToggle<CR>", desc = "Overseer Toggle" },
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("overseer").setup({
|
||||||
|
templates = { "builtin", "user" },
|
||||||
|
component_aliases = {
|
||||||
|
default = {
|
||||||
|
{ 'display_duration', detail_level = 2 },
|
||||||
|
'on_output_summarize',
|
||||||
|
'on_exit_set_status',
|
||||||
|
'on_result_diagnostics_quickfix',
|
||||||
|
'on_complete_notify',
|
||||||
|
{ "on_complete_dispose", require_view = { "SUCCESS", "FAILURE" } },
|
||||||
|
},
|
||||||
|
default_vscode = {
|
||||||
|
'default',
|
||||||
|
'on_result_diagnostics',
|
||||||
|
'on_result_diagnostics_quickfix',
|
||||||
|
'on_complete_notify',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
-- local pm = require("overseer.template.vscode.problem_matcher")
|
||||||
|
-- pm.register_problem_matcher("$rustc", {
|
||||||
|
-- fileLocation = { "autoDetect", "${cwd}" },
|
||||||
|
-- pattern = {
|
||||||
|
-- --regexp = "^(.*?)-->\\s+(.*?):(\\d+):(\\d+)$",
|
||||||
|
-- -- vim_regexp = "\\v^(.*?)-->\\s+(.*?):(\\d+):(\\d+)$",
|
||||||
|
-- regexp = "^\\s+-->\\s*([^:]*):(\\d+):(\\d+)$",
|
||||||
|
-- vim_regexp = "\\v^\\s+-->\\s*([^:]*):(\\d+):(\\d+)$",
|
||||||
|
-- file = 1,
|
||||||
|
-- line = 2,
|
||||||
|
-- column = 3,
|
||||||
|
-- }
|
||||||
|
-- })
|
||||||
|
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'stevearc/quicker.nvim',
|
||||||
|
event = "FileType qf",
|
||||||
|
---@module "quicker"
|
||||||
|
---@type quicker.SetupOptions
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"saxon1964/neovim-tips",
|
||||||
|
version = "*", -- Only update on tagged releases
|
||||||
|
lazy = false, -- Load on startup (recommended for daily tip feature)
|
||||||
|
dependencies = {
|
||||||
|
"MunifTanjim/nui.nvim",
|
||||||
|
-- OPTIONAL: Choose your preferred markdown renderer (or omit for raw markdown)
|
||||||
|
"MeanderingProgrammer/render-markdown.nvim", -- Clean rendering
|
||||||
|
-- OR: "OXY2DEV/markview.nvim", -- Rich rendering with advanced features
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
-- OPTIONAL: Location of user defined tips (default value shown below)
|
||||||
|
user_file = vim.fn.stdpath("config") .. "/neovim_tips/user_tips.md",
|
||||||
|
-- OPTIONAL: Prefix for user tips to avoid conflicts (default: "[User] ")
|
||||||
|
user_tip_prefix = "[User] ",
|
||||||
|
-- OPTIONAL: Show warnings when user tips conflict with builtin (default: true)
|
||||||
|
warn_on_conflicts = true,
|
||||||
|
-- OPTIONAL: Daily tip mode (default: 1)
|
||||||
|
-- 0 = off, 1 = once per day, 2 = every startup
|
||||||
|
daily_tip = 1,
|
||||||
|
-- OPTIONAL: Bookmark symbol (default: "🌟 ")
|
||||||
|
bookmark_symbol = "🌟 ",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"nvim-pack/nvim-spectre",
|
||||||
|
lazy = true,
|
||||||
|
cmd = { "Spectre" },
|
||||||
|
keys = {
|
||||||
|
{ "<leader>sr", function() require("spectre").open() end, desc = "Replace in files (Spectre)" },
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
open_cmd = "noswapfile vnew",
|
||||||
|
highlight = {
|
||||||
|
search = "SpectreSearch",
|
||||||
|
replace = "SpectreReplace",
|
||||||
|
},
|
||||||
|
mapping = {
|
||||||
|
["send_to_qf"] = {
|
||||||
|
map = "<C-q>",
|
||||||
|
cmd = "<cmd>lua require('spectre.actions').send_to_qf()<CR>",
|
||||||
|
desc = "send all items to quickfix",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"thunder-coding/zincoxide",
|
||||||
|
opts = {
|
||||||
|
-- name of zoxide binary in your "$PATH" or path to the binary
|
||||||
|
-- the command is executed using vim.fn.system()
|
||||||
|
-- eg. "zoxide" or "/usr/bin/zoxide"
|
||||||
|
zincoxide_cmd = "zoxide",
|
||||||
|
-- Kinda experimental as of now
|
||||||
|
complete = true,
|
||||||
|
-- Available options { "tabs", "window", "global" }
|
||||||
|
behaviour = "tabs",
|
||||||
|
},
|
||||||
|
cmd = { "Z", "Zg", "Zt", "Zw" },
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"folke/persistence.nvim",
|
||||||
|
event = "BufReadPre",
|
||||||
|
opts = { options = { "buffers", "curdir", "tabpages", "winsize", "help", "globals", "skiprtp" } },
|
||||||
|
-- stylua: ignore
|
||||||
|
keys = {
|
||||||
|
{ "<leader>xr", function() require("persistence").load() end, desc = "Restore Session" },
|
||||||
|
{ "<leader>xs", function() require("persistence").save() end, desc = "Save Session" },
|
||||||
|
{ "<leader>xl", function() require("persistence").load({ last = true }) end, desc = "Restore Last Session" },
|
||||||
|
{ "<leader>xd", function() require("persistence").stop() end, desc = "Don't Save Current Session" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,336 @@
|
|||||||
|
return {
|
||||||
|
|
||||||
|
{
|
||||||
|
"otavioschwanck/arrow.nvim",
|
||||||
|
dependencies = {
|
||||||
|
{
|
||||||
|
"nvim-tree/nvim-web-devicons"
|
||||||
|
},
|
||||||
|
-- or if using `mini.icons`
|
||||||
|
-- { "echasnovski/mini.icons" },
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
show_icons = true,
|
||||||
|
leader_key = ';', -- Recommended to be a single key
|
||||||
|
buffer_leader_key = '<leader>;', -- Per Buffer Mappings
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"utilyre/barbecue.nvim",
|
||||||
|
dependencies = {
|
||||||
|
{ 'SmiteshP/nvim-navic', lazy = true },
|
||||||
|
},
|
||||||
|
event = "VeryLazy",
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"folke/flash.nvim",
|
||||||
|
event = "VeryLazy",
|
||||||
|
---@type Flash.Config
|
||||||
|
opts = {
|
||||||
|
modes = {
|
||||||
|
char = {
|
||||||
|
jump_labels = true,
|
||||||
|
search = { wrap = true },
|
||||||
|
highlight = { backdrop = false },
|
||||||
|
},
|
||||||
|
search = {
|
||||||
|
-- when `true`, flash will be activated during regular search by default.
|
||||||
|
-- You can always toggle when searching with `require("flash").toggle()`
|
||||||
|
enabled = true,
|
||||||
|
highlight = { backdrop = false },
|
||||||
|
jump = { history = true, register = true, nohlsearch = true, autojump = true },
|
||||||
|
search = {
|
||||||
|
wrap = true,
|
||||||
|
-- `forward` will be automatically set to the search direction
|
||||||
|
-- `mode` is always set to `search`
|
||||||
|
-- `incremental` is set to `true` when `incsearch` is enabled
|
||||||
|
},
|
||||||
|
},
|
||||||
|
treesitter = {
|
||||||
|
search = { wrap = true },
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- stylua: ignore
|
||||||
|
keys = {
|
||||||
|
{ "<leader>/", mode = { "n" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" },
|
||||||
|
{ "s", mode = { "x", "o" }, function() require("flash").treesitter() end, desc = "Flash Treesitter" },
|
||||||
|
{ "r", mode = "o", function() require("flash").remote() end, desc = "Remote Flash" },
|
||||||
|
{ "R", mode = { "o", "x" }, function() require("flash").treesitter_search() end, desc = "Treesitter Search" },
|
||||||
|
{ "<c-s>", mode = { "c" }, function() require("flash").toggle() end, desc = "Toggle Flash Search" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"folke/snacks.nvim",
|
||||||
|
opts = {
|
||||||
|
notifier = {
|
||||||
|
timeout = 4000,
|
||||||
|
},
|
||||||
|
picker = {
|
||||||
|
win = {
|
||||||
|
input = {
|
||||||
|
keys = {
|
||||||
|
["<a-s>"] = { "flash", mode = { "n", "i" } },
|
||||||
|
["s"] = { "flash" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
actions = {
|
||||||
|
flash = function(picker)
|
||||||
|
require("flash").jump({
|
||||||
|
pattern = "^",
|
||||||
|
label = { after = { 0, 0 } },
|
||||||
|
search = {
|
||||||
|
mode = "search",
|
||||||
|
exclude = {
|
||||||
|
function(win)
|
||||||
|
return vim.bo[vim.api.nvim_win_get_buf(win)].filetype ~= "snacks_picker_list"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
action = function(match)
|
||||||
|
local idx = picker.list:row2idx(match.pos[1])
|
||||||
|
picker.list:_move(idx, true, true)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'nvim-lualine/lualine.nvim',
|
||||||
|
event = "VeryLazy",
|
||||||
|
config = function()
|
||||||
|
local function truncate_branch_name(branch)
|
||||||
|
if not branch or branch == "" then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Match the branch name to the specified format
|
||||||
|
local _, _, ticket_number = string.find(branch, "skdillon/sko%-(%d+)%-")
|
||||||
|
|
||||||
|
-- If the branch name matches the format, display sko-{ticket_number}, otherwise display the full branch name
|
||||||
|
if ticket_number then
|
||||||
|
return "sko-" .. ticket_number
|
||||||
|
else
|
||||||
|
return branch
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
require("lualine").setup({
|
||||||
|
options = {
|
||||||
|
-- theme = "rose-pine",
|
||||||
|
globalstatus = true,
|
||||||
|
-- component_separators = { left = "", right = "" },
|
||||||
|
-- section_separators = { left = "█", right = "█" },
|
||||||
|
icons_enabled = true,
|
||||||
|
component_separators = { left = '', right = ''},
|
||||||
|
section_separators = { left = '', right = ''},
|
||||||
|
tabline = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {'branch'},
|
||||||
|
lualine_c = {'filename'},
|
||||||
|
lualine_x = {},
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_b = {
|
||||||
|
{ "branch", icon = "", fmt = truncate_branch_name },
|
||||||
|
"diff",
|
||||||
|
"diagnostics",
|
||||||
|
},
|
||||||
|
lualine_c = {
|
||||||
|
{ 'lsp_progress' },
|
||||||
|
{
|
||||||
|
'buffers',
|
||||||
|
show_filename_only = true, -- Shows shortened relative path when set to false.
|
||||||
|
hide_filename_extension = false, -- Hide filename extension when set to true.
|
||||||
|
show_modified_status = true, -- Shows indicator when the buffer is modified.
|
||||||
|
mode = 0,
|
||||||
|
max_length = vim.o.columns * 2 / 3,
|
||||||
|
filetype_names = {
|
||||||
|
TelescopePrompt = ' ',
|
||||||
|
},
|
||||||
|
-- it can also be a function that returns
|
||||||
|
-- the value of `max_length` dynamically.
|
||||||
|
use_mode_colors = false,
|
||||||
|
symbols = {
|
||||||
|
modified = ' ●', -- Text to show when the buffer is modified
|
||||||
|
alternate_file = '#', -- Text to show to identify the alternate file
|
||||||
|
directory = '', -- Text to show when the buffer is a directory
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
lualine_x = {
|
||||||
|
"windows",
|
||||||
|
"fileformat",
|
||||||
|
"filetype",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"hedyhli/outline.nvim",
|
||||||
|
lazy = true,
|
||||||
|
cmd = { "Outline", "OutlineOpen" },
|
||||||
|
keys = { -- Example mapping to toggle outline
|
||||||
|
{ "<leader>so", "<cmd>Outline<CR>", desc = "Toggle outline" },
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
symbol_folding = {
|
||||||
|
-- Unfold entire symbol tree by default with false, otherwise enter a
|
||||||
|
-- number starting from 1
|
||||||
|
autofold_depth = false,
|
||||||
|
-- autofold_depth = 1,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'stevearc/quicker.nvim',
|
||||||
|
ft = "qf",
|
||||||
|
---@module "quicker"
|
||||||
|
---@type quicker.SetupOptions
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"christoomey/vim-tmux-navigator",
|
||||||
|
cmd = {
|
||||||
|
"TmuxNavigateLeft",
|
||||||
|
"TmuxNavigateDown",
|
||||||
|
"TmuxNavigateUp",
|
||||||
|
"TmuxNavigateRight",
|
||||||
|
"TmuxNavigatePrevious",
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ "<c-h>", "<cmd><C-U>TmuxNavigateLeft<cr>" },
|
||||||
|
{ "<c-j>", "<cmd><C-U>TmuxNavigateDown<cr>" },
|
||||||
|
{ "<c-k>", "<cmd><C-U>TmuxNavigateUp<cr>" },
|
||||||
|
{ "<c-l>", "<cmd><C-U>TmuxNavigateRight<cr>" },
|
||||||
|
-- { "<c-\\>", "<cmd><C-U>TmuxNavigatePrevious<cr>" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'akinsho/toggleterm.nvim',
|
||||||
|
lazy = false,
|
||||||
|
config = function()
|
||||||
|
require("toggleterm").setup({
|
||||||
|
-- highlights = require("rose-pine.plugins.toggleterm"),
|
||||||
|
size = 20,
|
||||||
|
open_mapping = [[<c-\>]],
|
||||||
|
hide_numbers = true,
|
||||||
|
shade_terminals = true,
|
||||||
|
shading_factor = 2,
|
||||||
|
start_in_insert = true,
|
||||||
|
insert_mappings = true,
|
||||||
|
persiste_size = true,
|
||||||
|
direction = 'horizontal',
|
||||||
|
close_on_exit = true,
|
||||||
|
float_opts = {
|
||||||
|
border = "curved",
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
keys = {
|
||||||
|
{ "<Esc><Esc>", "<c-\\><c-n>", desc = "Escape input", mode = { "t" } }
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
'ten3roberts/window-picker.nvim',
|
||||||
|
opts = {
|
||||||
|
-- Default keys to annotate, keys will be used in order. The default uses the
|
||||||
|
-- most accessible keys from the home row and then top row.
|
||||||
|
keys = 'alskdjfhgwoeiruty',
|
||||||
|
-- Swap windows by holding shift + letter
|
||||||
|
swap_shift = true,
|
||||||
|
-- Windows containing filetype to exclude
|
||||||
|
exclude = { qf = true, NvimTree = true, aerial = true },
|
||||||
|
-- Flash the cursor line of the newly focused window for 300ms.
|
||||||
|
-- Set to 0 or false to disable.
|
||||||
|
flash_duration = 300,
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{ "<leader>a", "<cmd>WindowPick<cr>", desc = "Windows Pick"},
|
||||||
|
{ "<C-w>a", "<cmd>WindowPick<cr>", desc = "Windows Pick"},
|
||||||
|
{ "<C-w>D", "<cmd>WindowZap<cr>", desc = "Windows Delete"},
|
||||||
|
{ "<C-w>S", "<cmd>WindowSwap<cr>", desc = "Windows Swap"},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"folke/which-key.nvim",
|
||||||
|
event = "VimEnter",
|
||||||
|
opts = {
|
||||||
|
icons = {
|
||||||
|
-- set icon mappings to true if you have a Nerd Font
|
||||||
|
mappings = vim.g.have_nerd_font,
|
||||||
|
-- If you are using a Nerd Font: set icons.keys to an empty table which will use the
|
||||||
|
-- default whick-key.nvim defined Nerd Font icons, otherwise define a string table
|
||||||
|
keys = vim.g.have_nerd_font and {} or {
|
||||||
|
Up = '<Up> ',
|
||||||
|
Down = '<Down> ',
|
||||||
|
Left = '<Left> ',
|
||||||
|
Right = '<Right> ',
|
||||||
|
C = '<C-…> ',
|
||||||
|
M = '<M-…> ',
|
||||||
|
D = '<D-…> ',
|
||||||
|
S = '<S-…> ',
|
||||||
|
CR = '<CR> ',
|
||||||
|
Esc = '<Esc> ',
|
||||||
|
ScrollWheelDown = '<ScrollWheelDown> ',
|
||||||
|
ScrollWheelUp = '<ScrollWheelUp> ',
|
||||||
|
NL = '<NL> ',
|
||||||
|
BS = '<BS> ',
|
||||||
|
Space = '<Space> ',
|
||||||
|
Tab = '<Tab> ',
|
||||||
|
F1 = '<F1>',
|
||||||
|
F2 = '<F2>',
|
||||||
|
F3 = '<F3>',
|
||||||
|
F4 = '<F4>',
|
||||||
|
F5 = '<F5>',
|
||||||
|
F6 = '<F6>',
|
||||||
|
F7 = '<F7>',
|
||||||
|
F8 = '<F8>',
|
||||||
|
F9 = '<F9>',
|
||||||
|
F10 = '<F10>',
|
||||||
|
F11 = '<F11>',
|
||||||
|
F12 = '<F12>',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
spec = {
|
||||||
|
{ "g", group = "+goto" },
|
||||||
|
{ "]", group = "+next" },
|
||||||
|
{ "[", group = "+prev" },
|
||||||
|
{ "<leader>c", group = "+code", mode = { 'n', 'x' } },
|
||||||
|
{ "<leader>b", group = "+buffer" },
|
||||||
|
{ "<leader>f", group = "+find" },
|
||||||
|
{ "<leader>g", group = "+goto" },
|
||||||
|
{ "<leader>k", group = "+obsidian" },
|
||||||
|
{ "<leader>l", group = "+lsp" },
|
||||||
|
{ "<leader>m", group = "+bookmark" },
|
||||||
|
{ "<leader>o", group = "+notes" },
|
||||||
|
{ "<leader>r", group = "+ai" },
|
||||||
|
{ "<leader>s", group = "+search" },
|
||||||
|
{ "<leader>t", group = "+trouble" },
|
||||||
|
{ "<leader>v", group = "+vcs", mode = { 'n', 'v' } },
|
||||||
|
{ "<leader>w", group = "+workspace" },
|
||||||
|
{ "<leader>x", group = "+extra" },
|
||||||
|
{ "<leader>u", group = "+toggle" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
local ls = require("luasnip")
|
||||||
|
local s = ls.snippet
|
||||||
|
local t = ls.text_node
|
||||||
|
local i = ls.insert_node
|
||||||
|
-- local f = ls.function_node
|
||||||
|
return {
|
||||||
|
s({ trig = "fn", name = "Function", dscr = "Function" }, {
|
||||||
|
t("fn "),
|
||||||
|
i(1),
|
||||||
|
t("() "),
|
||||||
|
t("{\n"),
|
||||||
|
t("\t"),
|
||||||
|
i(0),
|
||||||
|
t("\n}\n"),
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
append_path () {
|
||||||
|
case ":$PATH:" in
|
||||||
|
*:"$1":*)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
PATH="${PATH:+$PATH:}$1"
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
append_path "$HOME/.local/bin"
|
||||||
|
append_path "$HOME/.cargo/bin"
|
||||||
|
|
||||||
|
|
||||||
|
export PATH
|
||||||
|
|
||||||
|
if [ -z "$SSH_CONNECTION" ]; then
|
||||||
|
export SSH_AUTH_SOCK="/run/user/$UID/gnupg/S.gpg-agent.ssh"
|
||||||
|
fi
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
configuration{
|
||||||
|
combi-modes: [window,drun];
|
||||||
|
icon-theme: "Oranchelo";
|
||||||
|
show-icons: true;
|
||||||
|
terminal: "ghostty";
|
||||||
|
drun-display-format: "{icon} {name}";
|
||||||
|
location: 0;
|
||||||
|
disable-history: false;
|
||||||
|
hide-scrollbar: true;
|
||||||
|
display-drun: " Apps ";
|
||||||
|
display-run: " Run ";
|
||||||
|
display-window: " Window";
|
||||||
|
display-Network: " Network";
|
||||||
|
sidebar-mode: true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@theme "gruvbox"
|
||||||
|
|
||||||
|
listview {
|
||||||
|
columns: 1;
|
||||||
|
lines: 10;
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
SetEnv TERM=xterm-256color
|
||||||
|
|
||||||
|
Host dupont
|
||||||
|
HostName 172.25.11.30
|
||||||
|
user sjb
|
||||||
|
ForwardAgent yes
|
||||||
|
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
|
||||||
|
StreamLocalBindUnlink yes
|
||||||
|
RequestTTY yes
|
||||||
|
|
||||||
|
Host haddock-tmux
|
||||||
|
User sjb
|
||||||
|
Hostname 129.100.33.96
|
||||||
|
ForwardAgent yes
|
||||||
|
RemoteForward /run/user/1000/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
|
||||||
|
StreamLocalBindUnlink yes
|
||||||
|
RequestTTY yes
|
||||||
|
RemoteCommand tmux -l new -A
|
||||||
|
|
||||||
|
Host risc-v
|
||||||
|
User sjb
|
||||||
|
Hostname 172.25.11.31
|
||||||
|
ForwardAgent yes
|
||||||
|
RemoteForward /run/user/1001/gnupg/S.gpg-agent /run/user/1000/gnupg/S.gpg-agent.extra
|
||||||
|
StreamLocalBindUnlink yes
|
||||||
|
RequestTTY yes
|
||||||
|
|
||||||
@@ -0,0 +1,157 @@
|
|||||||
|
#set-option -g default-terminal 'screen-256color'
|
||||||
|
set-option -g terminal-overrides ',xterm-256color:RGB'
|
||||||
|
# set -g default-terminal "tmux-256color"
|
||||||
|
set -as terminal-feature ",foot*:RGB"
|
||||||
|
|
||||||
|
# screen mode
|
||||||
|
#set -g default-terminal "${TERM}"
|
||||||
|
#set -g default-terminal "tmux-256color"
|
||||||
|
set -ag terminal-overrides ",xterm-256color:RGB"
|
||||||
|
|
||||||
|
# colors
|
||||||
|
# set -ag terminal-overrides ",xterm*:Tc"
|
||||||
|
|
||||||
|
# undercurl support
|
||||||
|
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'
|
||||||
|
# underscore colours - needs tmux-3.0
|
||||||
|
set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'
|
||||||
|
# allow terminal scrolling
|
||||||
|
#set -g terminal-overrides 'xterm*:smcup@:rmcup@'
|
||||||
|
|
||||||
|
# default shell
|
||||||
|
set -g default-shell "/usr/bin/fish"
|
||||||
|
|
||||||
|
# auto rename windows
|
||||||
|
set -g automatic-rename on
|
||||||
|
set -g allow-rename on
|
||||||
|
|
||||||
|
# start with window 1 (instead of 0)
|
||||||
|
set -g base-index 1
|
||||||
|
|
||||||
|
# start with pane 1
|
||||||
|
setw -g pane-base-index 1
|
||||||
|
|
||||||
|
# history
|
||||||
|
set -g history-limit 5000
|
||||||
|
|
||||||
|
# loud or quiet?
|
||||||
|
set -g visual-activity off
|
||||||
|
set -g visual-bell off
|
||||||
|
set -g visual-silence off
|
||||||
|
set -g monitor-activity on
|
||||||
|
set -g bell-action none
|
||||||
|
set -g allow-passthrough on
|
||||||
|
|
||||||
|
#set -g bell-on-alert on
|
||||||
|
|
||||||
|
set -s escape-time 1
|
||||||
|
setw -g aggressive-resize on
|
||||||
|
set -g status-keys vi
|
||||||
|
set-window-option -g mode-keys vi
|
||||||
|
|
||||||
|
set-option -g focus-events on # TODO: learn how this works
|
||||||
|
set-option -g extended-keys on
|
||||||
|
set-option -g set-titles on
|
||||||
|
set-option -g detach-on-destroy off
|
||||||
|
set-option -g renumber-windows on
|
||||||
|
set-option -g set-clipboard on
|
||||||
|
set-option -g set-titles-string "#S:#{pane_title}"
|
||||||
|
|
||||||
|
unbind C-Space
|
||||||
|
set -g prefix C-Space
|
||||||
|
bind C-Space send-prefix
|
||||||
|
#unbind C-s
|
||||||
|
unbind C-b
|
||||||
|
#set -g prefix C-s
|
||||||
|
#bind C-s send-prefix
|
||||||
|
|
||||||
|
# Reload the config.
|
||||||
|
bind r source-file ~/.config/tmux/tmux.conf \; display "Reloaded ~/.config/tmux/tmux.conf"
|
||||||
|
|
||||||
|
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
||||||
|
bind -T copy-mode-vi y send-keys -X copy-pipe-and-cancel
|
||||||
|
|
||||||
|
bind c new-window -c "#{pane_current_path}"
|
||||||
|
bind e run "tmux split -h /usr/bin/nvim"
|
||||||
|
bind o display-popup -w 80% -h 80% -E /usr/bin/opencode
|
||||||
|
bind g display-popup -w 80% -h 80% -E /usr/bin/lazygit
|
||||||
|
|
||||||
|
# split windows like vim
|
||||||
|
# vim's definition of a horizontal/vertical split is reversed from tmux's
|
||||||
|
bind v split-window -h -c "#{pane_current_path}"
|
||||||
|
bind s split-window -v -c "#{pane_current_path}"
|
||||||
|
|
||||||
|
# Rotate windows
|
||||||
|
bind -r , select-window -t :-
|
||||||
|
bind -r . select-window -t :+
|
||||||
|
|
||||||
|
bind Space choose-tree
|
||||||
|
bind -r < previous-layout
|
||||||
|
bind -r > next-layout
|
||||||
|
|
||||||
|
# open man page in new window
|
||||||
|
bind / command-prompt "split window 'exec man %%'"
|
||||||
|
|
||||||
|
bind B command-prompt -p "New Session:" "new-session -A -s '%%'"
|
||||||
|
bind Tab switch-client -l
|
||||||
|
|
||||||
|
bind a run-shell -b "~/.local/bin/t"
|
||||||
|
bind Enter run-shell -b "~/.local/bin/s"
|
||||||
|
bind Q confirm kill-session
|
||||||
|
|
||||||
|
bind P pipe-pane -o "cat >>~/#W.log" \; display "Toggled logging to ~/#W.log"
|
||||||
|
|
||||||
|
# join pane
|
||||||
|
bind-key C-h choose-window 'join-pane -h -s "%%"'
|
||||||
|
bind-key C-v choose-window 'join-pane -s "%%"'
|
||||||
|
|
||||||
|
bind -r h select-pane -L
|
||||||
|
bind -r j select-pane -D
|
||||||
|
bind -r k select-pane -U
|
||||||
|
bind -r l select-pane -R
|
||||||
|
|
||||||
|
# resize panes like vim
|
||||||
|
# feel free to change the "1" to however many lines you want to resize by, only
|
||||||
|
# one at a time can be slow
|
||||||
|
bind -r H resize-pane -L 5
|
||||||
|
bind -r L resize-pane -R 5
|
||||||
|
bind -r J resize-pane -D 5
|
||||||
|
bind -r K resize-pane -U 5
|
||||||
|
|
||||||
|
# bind : to command-prompt like vim
|
||||||
|
# this is the default in tmux already
|
||||||
|
# bind : command-prompt
|
||||||
|
|
||||||
|
# Alt+number to select window
|
||||||
|
bind -n M-1 select-window -t 1
|
||||||
|
bind -n M-2 select-window -t 2
|
||||||
|
bind -n M-3 select-window -t 3
|
||||||
|
bind -n M-4 select-window -t 4
|
||||||
|
bind -n M-5 select-window -t 5
|
||||||
|
bind -n M-6 select-window -t 6
|
||||||
|
bind -n M-7 select-window -t 7
|
||||||
|
bind -n M-8 select-window -t 8
|
||||||
|
bind -n M-9 select-window -t 9
|
||||||
|
|
||||||
|
set -g @continuum-restore 'on'
|
||||||
|
set -g status-position top
|
||||||
|
|
||||||
|
|
||||||
|
# List of plugins
|
||||||
|
set -g @plugin 'tmux-plugins/tpm'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-continuum'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-copycat'
|
||||||
|
set -g @plugin 'christoomey/vim-tmux-navigator'
|
||||||
|
set -g @plugin 'sainnhe/tmux-fzf'
|
||||||
|
set -g @plugin 'joshmedeski/tmux-fzf-url'
|
||||||
|
set -g @plugin 'aserowy/tmux.nvim'
|
||||||
|
|
||||||
|
set -g status-left ""
|
||||||
|
source-file ~/.config/tmux/theme
|
||||||
|
#set -ag status-right '#(bash ~/.config/tmux/battery.sh) '
|
||||||
|
|
||||||
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||||
|
run '~/.config/tmux/plugins/tpm/tpm'
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
XDG_TERMINAL = ghostty
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Version=1.0
|
||||||
|
Name=emacsclient
|
||||||
|
GenericName=Text Editor
|
||||||
|
Comment=View and edit files
|
||||||
|
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
|
||||||
|
Exec="/home/sjb/.dotfiles/bin/ec" %F
|
||||||
|
Icon=/usr/share/icons/hicolor/scalable/apps/emacs24.svg
|
||||||
|
Type=Application
|
||||||
|
Terminal=false
|
||||||
|
Categories=Utility;Development;TextEditor;
|
||||||
|
StartupWMClass=Emacs24
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user