added aerc config, added nvim plugins surround, markdown etc
This commit is contained in:
22
aerc/.config/aerc/accounts.conf
Normal file
22
aerc/.config/aerc/accounts.conf
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
[phil@liphlink.xyz]
|
||||||
|
source = imaps://phil%40liphlink.xyz:Fqi5UAyr46e69fG@mail-server.lynx-piano.ts.net:993
|
||||||
|
outgoing = smtp://phil%40liphlink.xyz:Fqi5UAyr46e69fG@mail-server.lynx-piano.ts.net:587
|
||||||
|
default = INBOX
|
||||||
|
from = Phil <phil@liphlink.xyz>
|
||||||
|
copy-to = Sent
|
||||||
|
archive = Archive
|
||||||
|
postpone = Drafts
|
||||||
|
folders-sort = INBOX,Draftr,Sent,Archive,Spam,Trash
|
||||||
|
aliases = pw@liphlink.xyz,p.waibel@liphlink.xyz,philipp.waibel@liphlink.xyz
|
||||||
|
|
||||||
|
|
||||||
|
[spam@liphlink.xyz]
|
||||||
|
source = imaps://spam%40liphlink.xyz:ANZ6JJPBiB7k1c7k@mail-server.lynx-piano.ts.net:993
|
||||||
|
outgoing = smtp://spam%40liphlink.xyz:ANZ6JJPBiB7k1c7k@mail-server.lynx-piano.ts.net:587
|
||||||
|
default = INBOX
|
||||||
|
from = Liph <spam@liphlink.xyz>
|
||||||
|
copy-to = Sent
|
||||||
|
archive = Archive
|
||||||
|
postpone = Drafts
|
||||||
|
folders-sort = INBOX,Drafts,Sent,Archive,Spam,Trash
|
||||||
|
aliases = blue@liphlink.xyz,red@liphlink.xyz
|
||||||
890
aerc/.config/aerc/aerc.conf
Normal file
890
aerc/.config/aerc/aerc.conf
Normal file
@@ -0,0 +1,890 @@
|
|||||||
|
#
|
||||||
|
# aerc main configuration
|
||||||
|
|
||||||
|
[general]
|
||||||
|
# Used as a default path for save operations if no other path is specified.
|
||||||
|
# ~ is expanded to the current user home dir.
|
||||||
|
#
|
||||||
|
#default-save-path=
|
||||||
|
|
||||||
|
# If set to "gpg", aerc will use system gpg binary and keystore for all crypto
|
||||||
|
# operations. If set to "internal", the internal openpgp keyring will be used.
|
||||||
|
# If set to "auto", the system gpg will be preferred unless the internal
|
||||||
|
# keyring already exists, in which case the latter will be used.
|
||||||
|
#
|
||||||
|
# Default: auto
|
||||||
|
#pgp-provider=auto
|
||||||
|
|
||||||
|
# By default, the file permissions of accounts.conf must be restrictive and
|
||||||
|
# only allow reading by the file owner (0600). Set this option to true to
|
||||||
|
# ignore this permission check. Use this with care as it may expose your
|
||||||
|
# credentials.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
unsafe-accounts-conf=false
|
||||||
|
index-format=notmuch://~/.local/share/mail
|
||||||
|
# Output log messages to specified file. A path starting with ~/ is expanded to
|
||||||
|
# the user home dir. When redirecting aerc's output to a file using > shell
|
||||||
|
# redirection, this setting is ignored and log messages are printed to stdout.
|
||||||
|
#
|
||||||
|
#log-file=
|
||||||
|
|
||||||
|
# Only log messages above the specified level to log-file. Supported levels
|
||||||
|
# are: trace, debug, info, warn and error. When redirecting aerc's output to
|
||||||
|
# a file using > shell redirection, this setting is ignored and the log level
|
||||||
|
# is forced to trace.
|
||||||
|
#
|
||||||
|
# Default: info
|
||||||
|
#log-level=info
|
||||||
|
|
||||||
|
# Disable IPC entirely. Don't run commands (including mailto:... and mbox:...)
|
||||||
|
# in an existing aerc instance, and don't start an IPC server to allow
|
||||||
|
# subsequent aerc instances to run commands in the current one.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#disable-ipc=false
|
||||||
|
|
||||||
|
# Don't run mailto:... commands over IPC; start a new aerc instance with the
|
||||||
|
# composer instead.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#disable-ipc-mailto=false
|
||||||
|
#
|
||||||
|
# Don't run mbox:... commands over IPC; start a new aerc instance with the mbox
|
||||||
|
# file instead.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#disable-ipc-mbox=false
|
||||||
|
|
||||||
|
# Set the $TERM environment variable used for the embedded terminal.
|
||||||
|
#
|
||||||
|
# Default: xterm-256color
|
||||||
|
#term=xterm-256color
|
||||||
|
|
||||||
|
# Display OSC8 strings in the embedded terminal
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#enable-osc8=false
|
||||||
|
|
||||||
|
# Default shell command to use for :menu. This will be executed with sh -c and
|
||||||
|
# will run in an popover dialog.
|
||||||
|
#
|
||||||
|
# Any occurrence of %f will be replaced by a temporary file path where the
|
||||||
|
# command is expected to write output lines to be consumed by :menu. Otherwise,
|
||||||
|
# the lines will be read from the command's standard output.
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
# default-menu-cmd=fzf
|
||||||
|
# default-menu-cmd=fzf --multi
|
||||||
|
# default-menu-cmd=dmenu -l 20
|
||||||
|
# default-menu-cmd=ranger --choosefiles=%f
|
||||||
|
#
|
||||||
|
#default-menu-cmd=
|
||||||
|
|
||||||
|
[ui]
|
||||||
|
#
|
||||||
|
# Describes the format for each row in a mailbox view. This is a comma
|
||||||
|
# separated list of column names with an optional align and width suffix. After
|
||||||
|
# the column name, one of the '<' (left), ':' (center) or '>' (right) alignment
|
||||||
|
# characters can be added (by default, left) followed by an optional width
|
||||||
|
# specifier. The width is either an integer representing a fixed number of
|
||||||
|
# characters, or a percentage between 1% and 99% representing a fraction of the
|
||||||
|
# terminal width. It can also be one of the '*' (auto) or '=' (fit) special
|
||||||
|
# width specifiers. Auto width columns will be equally attributed the remaining
|
||||||
|
# terminal width. Fit width columns take the width of their contents. If no
|
||||||
|
# width specifier is set, '*' is used by default.
|
||||||
|
#
|
||||||
|
# Default: flags:4,name<20%,subject,date>=
|
||||||
|
#index-columns=flags:4,name<20%,subject,date>=
|
||||||
|
border-char-vertical="│"
|
||||||
|
border-char-horizontal="─"
|
||||||
|
styleset-name=catppuccin-mocha
|
||||||
|
|
||||||
|
#
|
||||||
|
# Each name in index-columns must have a corresponding column-$name setting.
|
||||||
|
# All column-$name settings accept golang text/template syntax. See
|
||||||
|
# aerc-templates(7) for available template attributes and functions.
|
||||||
|
#
|
||||||
|
# Here are some examples to show the To field instead of the From field for
|
||||||
|
# an email (modifying column-name):
|
||||||
|
#
|
||||||
|
# 1. a generic one
|
||||||
|
# column-name={{ .Peer | names | join ", " }}
|
||||||
|
# 2. based upon the selected folder
|
||||||
|
# column-name={{if match .Folder "^(Gesendet|Sent)$"}}{{index (.To | names) 0}}{{else}}{{index (.From | names) 0}}{{end}}
|
||||||
|
#
|
||||||
|
# Default settings
|
||||||
|
#column-flags={{.Flags | join ""}}
|
||||||
|
#column-name={{index (.From | names) 0}}
|
||||||
|
#column-subject={{.ThreadPrefix}}{{.Subject}}
|
||||||
|
#column-date={{.DateAutoFormat .Date.Local}}
|
||||||
|
|
||||||
|
#
|
||||||
|
# String separator inserted between columns. When the column width specifier is
|
||||||
|
# an exact number of characters, the separator is added to it (i.e. the exact
|
||||||
|
# width will be fully available for the column contents).
|
||||||
|
#
|
||||||
|
# Default: " "
|
||||||
|
#column-separator=" "
|
||||||
|
|
||||||
|
#
|
||||||
|
# See time.Time#Format at https://godoc.org/time#Time.Format
|
||||||
|
#
|
||||||
|
# Default: 2006 Jan 02
|
||||||
|
#timestamp-format=2006 Jan 02
|
||||||
|
|
||||||
|
#
|
||||||
|
# Index-only time format for messages that were received/sent today.
|
||||||
|
# If this is empty, timestamp-format is used instead.
|
||||||
|
#
|
||||||
|
# Default: 15:04
|
||||||
|
#this-day-time-format=15:04
|
||||||
|
|
||||||
|
#
|
||||||
|
# Index-only time format for messages that were received/sent within the last
|
||||||
|
# 7 days. If this is empty, timestamp-format is used instead.
|
||||||
|
#
|
||||||
|
# Default: Jan 02
|
||||||
|
#this-week-time-format=Jan 02
|
||||||
|
|
||||||
|
#
|
||||||
|
# Index-only time format for messages that were received/sent this year.
|
||||||
|
# If this is empty, timestamp-format is used instead.
|
||||||
|
#
|
||||||
|
#Default: Jan 02
|
||||||
|
#this-year-time-format=Jan 02
|
||||||
|
|
||||||
|
#
|
||||||
|
# Overrides timestamp-format for the message view.
|
||||||
|
#
|
||||||
|
# Default: 2006 Jan 02, 15:04 GMT-0700
|
||||||
|
#message-view-timestamp-format=2006 Jan 02, 15:04 GMT-0700
|
||||||
|
|
||||||
|
#
|
||||||
|
# If set, overrides timestamp-format in the message view for messages
|
||||||
|
# that were received/sent today.
|
||||||
|
#
|
||||||
|
#message-view-this-day-time-format=
|
||||||
|
|
||||||
|
# If set, overrides timestamp-format in the message view for messages
|
||||||
|
# that were received/sent within the last 7 days.
|
||||||
|
#
|
||||||
|
#message-view-this-week-time-format=
|
||||||
|
|
||||||
|
#
|
||||||
|
# If set, overrides *timestamp-format* in the message view for messages
|
||||||
|
# that were received/sent this year.
|
||||||
|
#
|
||||||
|
#message-view-this-year-time-format=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Width of the sidebar, including the border.
|
||||||
|
#
|
||||||
|
# Default: 22
|
||||||
|
sidebar-width=22
|
||||||
|
|
||||||
|
#
|
||||||
|
# Default split layout for message list tabs. The syntax is:
|
||||||
|
#
|
||||||
|
# [<direction>] <size>
|
||||||
|
#
|
||||||
|
# <direction> is optional and defaults to horizontal. It can take one
|
||||||
|
# of the following values: h, horiz, horizontal, v, vert, vertical.
|
||||||
|
#
|
||||||
|
# <size> is a positive integer representing the size (in terminal cells)
|
||||||
|
# of the message list window.
|
||||||
|
#
|
||||||
|
#message-list-split=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Message to display when viewing an empty folder.
|
||||||
|
#
|
||||||
|
# Default: (no messages)
|
||||||
|
#empty-message=(no messages)
|
||||||
|
|
||||||
|
# Message to display when no folders exists or are all filtered
|
||||||
|
#
|
||||||
|
# Default: (no folders)
|
||||||
|
#empty-dirlist=(no folders)
|
||||||
|
#
|
||||||
|
# Value to set {{.Subject}} template to when subject is empty.
|
||||||
|
#
|
||||||
|
# Default: (no subject)
|
||||||
|
#empty-subject=(no subject)
|
||||||
|
|
||||||
|
# Enable mouse events in the ui, e.g. clicking and scrolling with the mousewheel
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
mouse-enabled=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Ring the bell when new messages are received
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#new-message-bell=true
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template to use for Account tab titles
|
||||||
|
#
|
||||||
|
# Default: {{.Account}}
|
||||||
|
#tab-title-account={{.Account}}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template to use for Composer tab titles
|
||||||
|
#
|
||||||
|
# Default: {{if .To}}to:{{index (.To | shortmboxes) 0}} {{end}}{{.SubjectBase}}
|
||||||
|
#tab-title-composer={{if .To}}to:{{index (.To | shortmboxes) 0}} {{end}}{{.SubjectBase}}
|
||||||
|
|
||||||
|
#
|
||||||
|
# Template to use for Message Viewer tab titles
|
||||||
|
#
|
||||||
|
# Default: {{.Subject}}
|
||||||
|
#tab-title-viewer={{.Subject}}
|
||||||
|
|
||||||
|
|
||||||
|
# Marker to show before a pinned tab's name.
|
||||||
|
#
|
||||||
|
# Default: `
|
||||||
|
#pinned-tab-marker='`'
|
||||||
|
|
||||||
|
# Template for the left side of the directory list.
|
||||||
|
# See aerc-templates(7) for all available fields and functions.
|
||||||
|
#
|
||||||
|
# Default: {{.Folder}}
|
||||||
|
#dirlist-left={{.Folder}}
|
||||||
|
|
||||||
|
# Template for the right side of the directory list.
|
||||||
|
# See aerc-templates(7) for all available fields and functions.
|
||||||
|
#
|
||||||
|
# Default: {{if .Unread}}{{humanReadable .Unread}}{{end}}
|
||||||
|
#dirlist-right={{if .Unread}}{{humanReadable .Unread}}{{end}}
|
||||||
|
|
||||||
|
# Delay after which the messages are actually listed when entering a directory.
|
||||||
|
# This avoids loading messages when skipping over folders and makes the UI more
|
||||||
|
# responsive. If you do not want that, set it to 0s.
|
||||||
|
#
|
||||||
|
# Default: 200ms
|
||||||
|
#dirlist-delay=200ms
|
||||||
|
|
||||||
|
# Display the directory list as a foldable tree that allows to collapse and
|
||||||
|
# expand the folders.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#dirlist-tree=false
|
||||||
|
|
||||||
|
# If dirlist-tree is enabled, set level at which folders are collapsed by
|
||||||
|
# default. Set to 0 to disable.
|
||||||
|
#
|
||||||
|
# Default: 0
|
||||||
|
#dirlist-collapse=0
|
||||||
|
|
||||||
|
# List of space-separated criteria to sort the messages by, see *sort*
|
||||||
|
# command in *aerc*(1) for reference. Prefixing a criterion with "-r "
|
||||||
|
# reverses that criterion.
|
||||||
|
#
|
||||||
|
# Example: "from -r date"
|
||||||
|
#
|
||||||
|
sort = -r date
|
||||||
|
|
||||||
|
# Moves to next message when the current message is deleted
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#next-message-on-delete=true
|
||||||
|
|
||||||
|
# Automatically set the "seen" flag when a message is opened in the message
|
||||||
|
# viewer.
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#auto-mark-read=true
|
||||||
|
|
||||||
|
# The directories where the stylesets are stored. It takes a colon-separated
|
||||||
|
# list of directories. If this is unset or if a styleset cannot be found, the
|
||||||
|
# following paths will be used as a fallback in that order:
|
||||||
|
#
|
||||||
|
# ${XDG_CONFIG_HOME:-~/.config}/aerc/stylesets
|
||||||
|
# ${XDG_DATA_HOME:-~/.local/share}/aerc/stylesets
|
||||||
|
# /usr/local/share/aerc/stylesets
|
||||||
|
# /usr/share/aerc/stylesets
|
||||||
|
#
|
||||||
|
#stylesets-dirs=
|
||||||
|
|
||||||
|
# Uncomment to use box-drawing characters for vertical and horizontal borders.
|
||||||
|
#
|
||||||
|
# Default: "│" and "─"
|
||||||
|
#border-char-vertical="│"
|
||||||
|
#border-char-horizontal="─"
|
||||||
|
|
||||||
|
# Sets the styleset to use for the aerc ui elements.
|
||||||
|
#
|
||||||
|
# Default: default
|
||||||
|
#styleset-name=default
|
||||||
|
|
||||||
|
# Activates fuzzy search in commands and their arguments: the typed string is
|
||||||
|
# searched in the command or option in any position, and need not be
|
||||||
|
# consecutive characters in the command or option.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#fuzzy-complete=false
|
||||||
|
|
||||||
|
# How long to wait after the last input before auto-completion is triggered.
|
||||||
|
#
|
||||||
|
# Default: 250ms
|
||||||
|
#completion-delay=250ms
|
||||||
|
|
||||||
|
# The minimum required characters to allow auto-completion to be triggered after
|
||||||
|
# completion-delay.
|
||||||
|
#
|
||||||
|
# Setting this to "manual" disables automatic completion, leaving only the
|
||||||
|
# manually triggered completion with the $complete key (see aerc-binds(5) for
|
||||||
|
# more details).
|
||||||
|
#
|
||||||
|
# Default: 1
|
||||||
|
#completion-min-chars=1
|
||||||
|
|
||||||
|
#
|
||||||
|
# Global switch for completion popovers
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#completion-popovers=true
|
||||||
|
|
||||||
|
# Uncomment to use UTF-8 symbols to indicate PGP status of messages
|
||||||
|
#
|
||||||
|
# Default: ASCII
|
||||||
|
#icon-unencrypted=
|
||||||
|
#icon-encrypted=✔
|
||||||
|
#icon-signed=✔
|
||||||
|
#icon-signed-encrypted=✔
|
||||||
|
#icon-unknown=✘
|
||||||
|
#icon-invalid=⚠
|
||||||
|
|
||||||
|
# Reverses the order of the message list. By default, the message list is
|
||||||
|
# ordered with the newest (highest UID) message on top. Reversing the order
|
||||||
|
# will put the oldest (lowest UID) message on top. This can be useful in cases
|
||||||
|
# where the backend does not support sorting.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#reverse-msglist-order = false
|
||||||
|
|
||||||
|
# Reverse display of the message threads. Default order is the initial
|
||||||
|
# message is on the top with all the replies being displayed below. The
|
||||||
|
# reverse option will put the initial message at the bottom with the
|
||||||
|
# replies on top.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#reverse-thread-order=false
|
||||||
|
|
||||||
|
# Positions the cursor on the last message in the message list (at the
|
||||||
|
# bottom of the view) when opening a new folder.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#select-last-message=false
|
||||||
|
|
||||||
|
# Sort the thread siblings according to the sort criteria for the messages. If
|
||||||
|
# sort-thread-siblings is false, the thread siblings will be sorted based on
|
||||||
|
# the message UID in ascending order. This option is only applicable for
|
||||||
|
# client-side threading with a backend that enables sorting. Note that there's
|
||||||
|
# a performance impact when sorting is activated.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#sort-thread-siblings=false
|
||||||
|
|
||||||
|
# Set the scroll offset in number of lines from the top and bottom of the
|
||||||
|
# message list.
|
||||||
|
#
|
||||||
|
# Default: 0
|
||||||
|
#msglist-scroll-offset = 0
|
||||||
|
|
||||||
|
#
|
||||||
|
# Enable a threaded view of messages. If this is not supported by the backend
|
||||||
|
# (IMAP server or notmuch), threads will be built by the client.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#threading-enabled=false
|
||||||
|
|
||||||
|
# Force client-side thread building
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#force-client-threads=false
|
||||||
|
|
||||||
|
# If no References nor In-Reply-To headers can be matched to build client side
|
||||||
|
# threads, fallback to similar subjects.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#threading-by-subject=false
|
||||||
|
|
||||||
|
# Show thread context enables messages which do not match the current query (or
|
||||||
|
# belong to the current mailbox) to be shown for context. These messages can be
|
||||||
|
# styled separately using "msglist_thread_context" in a styleset. This feature
|
||||||
|
# is not supported by all backends
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#show-thread-context=false
|
||||||
|
|
||||||
|
# Debounce client-side thread building
|
||||||
|
#
|
||||||
|
# Default: 50ms
|
||||||
|
#client-threads-delay=50ms
|
||||||
|
|
||||||
|
#
|
||||||
|
# Thread prefix customization:
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the arrow head.
|
||||||
|
#
|
||||||
|
# Default: ">"
|
||||||
|
#thread-prefix-tip = ">"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the arrow indentation.
|
||||||
|
#
|
||||||
|
# Default: " "
|
||||||
|
#thread-prefix-indent = " "
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the vertical extension of
|
||||||
|
# the arrow.
|
||||||
|
#
|
||||||
|
# Default: "│"
|
||||||
|
#thread-prefix-stem = "│"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the horizontal extension
|
||||||
|
# of the arrow.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-limb = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the folded thread
|
||||||
|
# indicator.
|
||||||
|
#
|
||||||
|
# Default: "+"
|
||||||
|
#thread-prefix-folded = "+"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the unfolded thread
|
||||||
|
# indicator.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-unfolded = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the first child connector.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-first-child = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector used if
|
||||||
|
# the message has siblings.
|
||||||
|
#
|
||||||
|
# Default: "├─"
|
||||||
|
#thread-prefix-has-siblings = "├─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector used if the
|
||||||
|
# message has no parents and no children.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-lone = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector used if the
|
||||||
|
# message has no parents and has children.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-orphan = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector for the last
|
||||||
|
# sibling.
|
||||||
|
#
|
||||||
|
# Default: "└─"
|
||||||
|
#thread-prefix-last-sibling = "└─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the reversed thread prefix appearance by selecting the connector for
|
||||||
|
# the last sibling.
|
||||||
|
#
|
||||||
|
# Default: "┌─"
|
||||||
|
#thread-prefix-last-sibling-reverse = "┌─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the thread prefix appearance by selecting the connector for dummy
|
||||||
|
# thread.
|
||||||
|
#
|
||||||
|
# Default: "┬─"
|
||||||
|
#thread-prefix-dummy = "┬─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the reversed thread prefix appearance by selecting the connector for
|
||||||
|
# dummy thread.
|
||||||
|
#
|
||||||
|
# Default: "┴─"
|
||||||
|
#thread-prefix-dummy-reverse = "┴─"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the reversed thread prefix appearance by selecting the first child
|
||||||
|
# connector.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-first-child-reverse = ""
|
||||||
|
|
||||||
|
#
|
||||||
|
# Customize the reversed thread prefix appearance by selecting the connector
|
||||||
|
# used if the message has no parents and has children.
|
||||||
|
#
|
||||||
|
# Default: ""
|
||||||
|
#thread-prefix-orphan-reverse = ""
|
||||||
|
|
||||||
|
[statusline]
|
||||||
|
#
|
||||||
|
# Describes the format for the status line. This is a comma separated list of
|
||||||
|
# column names with an optional align and width suffix. See [ui].index-columns
|
||||||
|
# for more details. To completely mute the status line except for push
|
||||||
|
# notifications, explicitly set status-columns to an empty string.
|
||||||
|
#
|
||||||
|
# Default: left<*,center:=,right>*
|
||||||
|
#status-columns=left<*,center:=,right>*
|
||||||
|
|
||||||
|
#
|
||||||
|
# Each name in status-columns must have a corresponding column-$name setting.
|
||||||
|
# All column-$name settings accept golang text/template syntax. See
|
||||||
|
# aerc-templates(7) for available template attributes and functions.
|
||||||
|
#
|
||||||
|
# Default settings
|
||||||
|
#column-left=[{{.Account}}] {{.StatusInfo}}
|
||||||
|
#column-center={{.PendingKeys}}
|
||||||
|
#column-right={{.TrayInfo}} | {{cwd}}
|
||||||
|
|
||||||
|
#
|
||||||
|
# String separator inserted between columns.
|
||||||
|
# See [ui].column-separator for more details.
|
||||||
|
#
|
||||||
|
#column-separator=" "
|
||||||
|
|
||||||
|
# Specifies the separator between grouped statusline elements.
|
||||||
|
#
|
||||||
|
# Default: " | "
|
||||||
|
#separator=" | "
|
||||||
|
|
||||||
|
# Defines the mode for displaying the status elements.
|
||||||
|
# Options: text, icon
|
||||||
|
#
|
||||||
|
# Default: text
|
||||||
|
#display-mode=text
|
||||||
|
|
||||||
|
[viewer]
|
||||||
|
# pager=less -Rc
|
||||||
|
pager=cat
|
||||||
|
html-unsafe-images=false
|
||||||
|
html-filter=dante
|
||||||
|
image/*=chafa -f kitty -s ${width}x${height}
|
||||||
|
text/html=dante
|
||||||
|
application/pdf=zathura
|
||||||
|
video/*=mpv
|
||||||
|
header-layout=From,To,Subject,Date
|
||||||
|
|
||||||
|
|
||||||
|
#w3m -dump -T text/html -o display_link_number=1
|
||||||
|
#
|
||||||
|
# Specifies the pager to use when displaying emails. Note that some filters
|
||||||
|
# may add ANSI codes to add color to rendered emails, so you may want to use a
|
||||||
|
# pager which supports ANSI codes.
|
||||||
|
#
|
||||||
|
# Default: less -Rc
|
||||||
|
|
||||||
|
#
|
||||||
|
# If an email offers several versions (multipart), you can configure which
|
||||||
|
# mimetype to prefer. For example, this can be used to prefer plaintext over
|
||||||
|
# html emails.
|
||||||
|
#
|
||||||
|
# Default: text/plain,text/html
|
||||||
|
#alternatives=text/plain,text/html
|
||||||
|
|
||||||
|
#
|
||||||
|
# Default setting to determine whether to show full headers or only parsed
|
||||||
|
# ones in message viewer.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#show-headers=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Layout of headers when viewing a message. To display multiple headers in the
|
||||||
|
# same row, separate them with a pipe, e.g. "From|To". Rows will be hidden if
|
||||||
|
# none of their specified headers are present in the message.
|
||||||
|
#
|
||||||
|
# Default: From|To,Cc|Bcc,Date,Subject
|
||||||
|
#header-layout=From|To,Cc|Bcc,Date,Subject
|
||||||
|
|
||||||
|
# Whether to always show the mimetype of an email, even when it is just a single part
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#always-show-mime=false
|
||||||
|
|
||||||
|
# Define the maximum height of the mimetype switcher before a scrollbar is used.
|
||||||
|
# The height of the mimetype switcher is restricted to half of the display
|
||||||
|
# height. If the provided value for the height is zero, the number of parts will
|
||||||
|
# be used as the height of the type switcher.
|
||||||
|
#
|
||||||
|
# Default: 0
|
||||||
|
#max-mime-height = 0
|
||||||
|
|
||||||
|
# Parses and extracts http links when viewing a message. Links can then be
|
||||||
|
# accessed with the open-link command.
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#parse-http-links=true
|
||||||
|
|
||||||
|
[compose]
|
||||||
|
editor=nvim # or your preferred editor
|
||||||
|
address-book-cmd=abook --mutt-query '%s'
|
||||||
|
# Specifies the command to run the editor with. It will be shown in an embedded
|
||||||
|
# terminal, though it may also launch a graphical window if the environment
|
||||||
|
# supports it. Defaults to $EDITOR, or vi.
|
||||||
|
#editor=
|
||||||
|
|
||||||
|
#
|
||||||
|
# When set, aerc will create and read .eml files for composing that have
|
||||||
|
# non-standard \n linebreaks. This is only relevant if the used editor does not
|
||||||
|
# support CRLF linebreaks.
|
||||||
|
#
|
||||||
|
#lf-editor=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Default header fields to display when composing a message. To display
|
||||||
|
# multiple headers in the same row, separate them with a pipe, e.g. "To|From".
|
||||||
|
#
|
||||||
|
# Default: To|From,Subject
|
||||||
|
#header-layout=To|From,Subject
|
||||||
|
|
||||||
|
#
|
||||||
|
# Edit headers into the text editor instead than separate fields.
|
||||||
|
#
|
||||||
|
# When this is true, address-book-cmd is not supported and address completion
|
||||||
|
# is left to the editor itself. Also, displaying multiple headers on the same
|
||||||
|
# line is not possible.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
edit-headers=true
|
||||||
|
|
||||||
|
#
|
||||||
|
# Sets focus to the email body when the composer window opens.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#focus-body=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Specifies the command to be used to tab-complete email addresses. Any
|
||||||
|
# occurrence of "%s" in the address-book-cmd will be replaced with what the
|
||||||
|
# user has typed so far.
|
||||||
|
#
|
||||||
|
# The command must output the completions to standard output, one completion
|
||||||
|
# per line. Each line must be tab-delimited, with an email address occurring as
|
||||||
|
# the first field. Only the email address field is required. The second field,
|
||||||
|
# if present, will be treated as the contact name. Additional fields are
|
||||||
|
# ignored.
|
||||||
|
#
|
||||||
|
# This parameter can also be set per account in accounts.conf.
|
||||||
|
#address-book-cmd=
|
||||||
|
|
||||||
|
# Specifies the command to be used to select attachments. Any occurrence of
|
||||||
|
# '%s' in the file-picker-cmd will be replaced with the argument <arg>
|
||||||
|
# to :attach -m <arg>. Any occurrence of '%f' will be replaced by the
|
||||||
|
# location of a temporary file, from which aerc will read the selected files.
|
||||||
|
#
|
||||||
|
# If '%f' is not present, the command must output the selected files to
|
||||||
|
# standard output, one file per line. If it is present, then aerc does not
|
||||||
|
# capture the standard output and instead reads the files from the temporary
|
||||||
|
# file which should have the same format.
|
||||||
|
#file-picker-cmd=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Allow to address yourself when replying
|
||||||
|
#
|
||||||
|
# Default: true
|
||||||
|
#reply-to-self=true
|
||||||
|
|
||||||
|
# Warn before sending an email with an empty subject.
|
||||||
|
#
|
||||||
|
# Default: false
|
||||||
|
#empty-subject-warning=false
|
||||||
|
|
||||||
|
#
|
||||||
|
# Warn before sending an email that matches the specified regexp but does not
|
||||||
|
# have any attachments. Leave empty to disable this feature.
|
||||||
|
#
|
||||||
|
# Uses Go's regexp syntax, documented at https://golang.org/s/re2syntax. The
|
||||||
|
# "(?im)" flags are set by default (case-insensitive and multi-line).
|
||||||
|
#
|
||||||
|
# Example:
|
||||||
|
# no-attachment-warning=^[^>]*attach(ed|ment)
|
||||||
|
#
|
||||||
|
#no-attachment-warning=
|
||||||
|
|
||||||
|
#
|
||||||
|
# When set, aerc will generate "format=flowed" bodies with a content type of
|
||||||
|
# "text/plain; format=flowed" as described in RFC3676. This format is easier to
|
||||||
|
# handle for some mailing software, and generally just looks like ordinary
|
||||||
|
# text. To actually make use of this format's features, you'll need support in
|
||||||
|
# your editor.
|
||||||
|
#
|
||||||
|
#format-flowed=false
|
||||||
|
|
||||||
|
[multipart-converters]
|
||||||
|
#
|
||||||
|
# Converters allow to generate multipart/alternative messages by converting the
|
||||||
|
# main text/plain part into any other MIME type. Only exact MIME types are
|
||||||
|
# accepted. The commands are invoked with sh -c and are expected to output
|
||||||
|
# valid UTF-8 text.
|
||||||
|
#
|
||||||
|
# Example (obviously, this requires that you write your main text/plain body
|
||||||
|
# using the markdown syntax):
|
||||||
|
#text/html=pandoc -f markdown -t html --standalone
|
||||||
|
|
||||||
|
[filters]
|
||||||
|
#
|
||||||
|
text/plain=sed 's/^$//'
|
||||||
|
|
||||||
|
# Filters allow you to pipe an email body through a shell command to render
|
||||||
|
# certain emails differently, e.g. highlighting them with ANSI escape codes.
|
||||||
|
#
|
||||||
|
# The commands are invoked with sh -c. The following folders are prepended to
|
||||||
|
# the system $PATH to allow referencing filters from their name only:
|
||||||
|
#
|
||||||
|
# ${XDG_CONFIG_HOME:-~/.config}/aerc/filters
|
||||||
|
# ~/.local/libexec/aerc/filters
|
||||||
|
# ${XDG_DATA_HOME:-~/.local/share}/aerc/filters
|
||||||
|
# $PREFIX/libexec/aerc/filters
|
||||||
|
# $PREFIX/share/aerc/filters
|
||||||
|
# /usr/libexec/aerc/filters
|
||||||
|
# /usr/share/aerc/filters
|
||||||
|
#
|
||||||
|
# If you want to run a program in your default $PATH which has the same name
|
||||||
|
# as a builtin filter (e.g. /usr/bin/colorize), use its absolute path.
|
||||||
|
#
|
||||||
|
# The following variables are defined in the filter command environment:
|
||||||
|
#
|
||||||
|
# AERC_MIME_TYPE the part MIME type/subtype
|
||||||
|
# AERC_FORMAT the part content type format= parameter
|
||||||
|
# AERC_FILENAME the attachment filename (if any)
|
||||||
|
# AERC_SUBJECT the message Subject header value
|
||||||
|
# AERC_FROM the message From header value
|
||||||
|
#
|
||||||
|
# The first filter which matches the email's mimetype will be used, so order
|
||||||
|
# them from most to least specific.
|
||||||
|
#
|
||||||
|
# You can also match on non-mimetypes, by prefixing with the header to match
|
||||||
|
# against (non-case-sensitive) and a comma, e.g. subject,text will match a
|
||||||
|
# subject which contains "text". Use header,~regex to match against a regex.
|
||||||
|
#
|
||||||
|
text/plain=colorize
|
||||||
|
text/calendar=calendar
|
||||||
|
message/delivery-status=colorize
|
||||||
|
message/rfc822=colorize
|
||||||
|
#text/html=pandoc -f html -t plain | colorize
|
||||||
|
text/html=! html
|
||||||
|
text/html=! w3m -T text/html -I UTF-8
|
||||||
|
#text/*=bat -fP --file-name="$AERC_FILENAME"
|
||||||
|
#application/x-sh=bat -fP -l sh
|
||||||
|
#image/*=catimg -w $(tput cols) -
|
||||||
|
#subject,~Git(hub|lab)=lolcat -f
|
||||||
|
#from,thatguywhodoesnothardwraphismessages=wrap -w 100 | colorize
|
||||||
|
|
||||||
|
# This special filter is only used to post-process email headers when
|
||||||
|
# [viewer].show-headers=true
|
||||||
|
# By default, headers are piped directly into the pager.
|
||||||
|
#
|
||||||
|
.headers=colorize
|
||||||
|
|
||||||
|
[openers]
|
||||||
|
#
|
||||||
|
# Openers allow you to specify the command to use for the :open and :open-link
|
||||||
|
# actions on a per-MIME-type basis. The :open-link URL scheme is used to
|
||||||
|
# determine the MIME type as follows: x-scheme-handler/<scheme>.
|
||||||
|
#
|
||||||
|
# {} is expanded as the temporary filename or URL to be opened with proper
|
||||||
|
# shell quoting. If it is not encountered in the command, the filename/URL will
|
||||||
|
# be appended to the end of the command. The command will then be executed with
|
||||||
|
# `sh -c`.
|
||||||
|
#
|
||||||
|
# Like [filters], openers support basic shell globbing. The first opener which
|
||||||
|
# matches the part's MIME type (or URL scheme handler MIME type) will be used,
|
||||||
|
# so order them from most to least specific.
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
# x-scheme-handler/irc=hexchat
|
||||||
|
# x-scheme-handler/http*=printf '%s' {} | wl-copy
|
||||||
|
# text/html=surf -dfgms
|
||||||
|
# text/plain=gvim {} +125
|
||||||
|
# message/rfc822=thunderbird
|
||||||
|
|
||||||
|
[hooks]
|
||||||
|
# text/html=librewolf
|
||||||
|
x-scheme-handler/http=librewolf
|
||||||
|
x-scheme-handler/https=librewolf
|
||||||
|
|
||||||
|
#
|
||||||
|
# Hooks are triggered whenever the associated event occurs.
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when a new email arrives in the selected folder
|
||||||
|
#mail-received=notify-send "[$AERC_ACCOUNT/$AERC_FOLDER] New mail from $AERC_FROM_NAME" "$AERC_SUBJECT"
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when mail is deleted from a folder
|
||||||
|
#mail-deleted=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" &
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when aerc adds mail to a folder
|
||||||
|
#mail-added=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" &
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when aerc starts
|
||||||
|
#aerc-startup=aerc :terminal calcurse && aerc :next-tab
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when aerc shuts down.
|
||||||
|
#aerc-shutdown=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when notmuch tags are modified.
|
||||||
|
#tag-modified=
|
||||||
|
|
||||||
|
#
|
||||||
|
# Executed when flags are changed on a message.
|
||||||
|
#flag-changed=mbsync "$AERC_ACCOUNT:$AERC_FOLDER" &
|
||||||
|
|
||||||
|
[templates]
|
||||||
|
# Templates are used to populate email bodies automatically.
|
||||||
|
|
||||||
|
###
|
||||||
|
new-message=new-msg
|
||||||
|
quoted-reply=reply-quoted
|
||||||
|
|
||||||
|
|
||||||
|
# The directories where the templates are stored. It takes a colon-separated
|
||||||
|
# list of directories. If this is unset or if a template cannot be found, the
|
||||||
|
# following paths will be used as a fallback in that order:
|
||||||
|
#
|
||||||
|
# ${XDG_CONFIG_HOME:-~/.config}/aerc/templates
|
||||||
|
# ${XDG_DATA_HOME:-~/.local/share}/aerc/templates
|
||||||
|
# /usr/local/share/aerc/templates
|
||||||
|
# /usr/share/aerc/templates
|
||||||
|
#
|
||||||
|
template-dirs=${XDG_CONFIG_HOME:-~/.config}/aerc/templates
|
||||||
|
|
||||||
|
# The default template to be used for new messages.
|
||||||
|
#
|
||||||
|
# default: new_message
|
||||||
|
#new-message=new_message
|
||||||
|
|
||||||
|
# The default template to be used for quoted replies.
|
||||||
|
#
|
||||||
|
# default: quoted_reply
|
||||||
|
#quoted-reply=quoted_reply
|
||||||
|
|
||||||
|
# The default template to be used for forward as body.
|
||||||
|
#
|
||||||
|
# default: forward_as_body
|
||||||
|
#forwards=forward_as_body
|
||||||
236
aerc/.config/aerc/binds.conf
Normal file
236
aerc/.config/aerc/binds.conf
Normal file
@@ -0,0 +1,236 @@
|
|||||||
|
# Binds are of the form <key sequence> = <command to run>
|
||||||
|
# To use '=' in a key sequence, substitute it with "Eq": "<Ctrl+Eq>"
|
||||||
|
# If you wish to bind #, you can wrap the key sequence in quotes: "#" = quit
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-PgUp> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-PgDn> = :next-tab<Enter>
|
||||||
|
\[t = :prev-tab<Enter>
|
||||||
|
\]t = :next-tab<Enter>
|
||||||
|
<C-t> = :term<Enter>
|
||||||
|
? = :help keys<Enter>
|
||||||
|
<C-c> = :prompt 'Quit?' quit<Enter>
|
||||||
|
<C-q> = :prompt 'Quit?' quit<Enter>
|
||||||
|
<C-z> = :suspend<Enter>
|
||||||
|
|
||||||
|
[messages]
|
||||||
|
# Switch between Adresses
|
||||||
|
,1 = :change-tab phil@liphlink.xyz<Enter>
|
||||||
|
,2 = :change-tab spam@liphlink.xyz<Enter>
|
||||||
|
|
||||||
|
# Delete = move to Trash (syncs with ProtonMail)
|
||||||
|
d = :move Trash<enter>
|
||||||
|
|
||||||
|
#d = :move Trash<Enter>
|
||||||
|
D = :delete<Enter>
|
||||||
|
|
||||||
|
# Archive
|
||||||
|
a = :archive flat<Enter>
|
||||||
|
|
||||||
|
# Quick folder navigation
|
||||||
|
,i = :cf Inbox<Enter>
|
||||||
|
,u = :cf Unread<Enter>
|
||||||
|
,n = :cf Newsletters<Enter>
|
||||||
|
,f = :cf Finance<Enter>
|
||||||
|
,s = :cf Shopping<Enter>
|
||||||
|
,t = :cf Travel<Enter>
|
||||||
|
,d = :cf Development<Enter>
|
||||||
|
,x = :cf Spam<Enter>
|
||||||
|
,tr = :cf Trash<Enter>
|
||||||
|
,a = :cf All Mail<Enter>
|
||||||
|
|
||||||
|
o1 = :compose -H "From: Liph \<liiph@proton.me\>"<enter>
|
||||||
|
o2 = :compose -H "From: Liph \<liiph@protonmail.com\>"<enter>
|
||||||
|
o3 = :compose -H "From: Liph \<liiph@pm.me\>"<enter>
|
||||||
|
o4 = :compose -H "From: Philipp Waibel \<ph.waibel@proton.me\>"<enter>
|
||||||
|
o5 = :compose -H "From: P.Waibel \<ph.waibel@pm.me\>"<enter>
|
||||||
|
|
||||||
|
# Delete and sync
|
||||||
|
#d = :modify-labels +trash -inbox<Enter>:archive flat<Enter>
|
||||||
|
#d = :modify-labels +deleted -inbox<Enter>
|
||||||
|
#d = :modify-labels +deleted -inbox<Enter>
|
||||||
|
#d = :move Trash<Enter>:exec mbsync -a && notmuch new<Enter>
|
||||||
|
# Permanently delete (Shift+D)
|
||||||
|
#D = :prompt 'Really delete?' :move Trash<Enter>
|
||||||
|
|
||||||
|
#B = :compose -H "From: waibel ph.waibel@proton.me"<Enter>
|
||||||
|
# for url handling
|
||||||
|
|
||||||
|
j = :next<Enter>
|
||||||
|
<Down> = :next<Enter>
|
||||||
|
<C-d> = :next 50%<Enter>
|
||||||
|
<C-f> = :next 100%<Enter>
|
||||||
|
<PgDn> = :next 100%<Enter>
|
||||||
|
|
||||||
|
k = :prev<Enter>
|
||||||
|
<Up> = :prev<Enter>
|
||||||
|
<C-u> = :prev 50%<Enter>
|
||||||
|
<C-b> = :prev 100%<Enter>
|
||||||
|
<PgUp> = :prev 100%<Enter>
|
||||||
|
g = :select 0<Enter>
|
||||||
|
G = :select -1<Enter>
|
||||||
|
|
||||||
|
J = :next-folder<Enter>
|
||||||
|
<C-Down> = :next-folder<Enter>
|
||||||
|
K = :prev-folder<Enter>
|
||||||
|
<C-Up> = :prev-folder<Enter>
|
||||||
|
H = :collapse-folder<Enter>
|
||||||
|
<C-Left> = :collapse-folder<Enter>
|
||||||
|
L = :expand-folder<Enter>
|
||||||
|
<C-Right> = :expand-folder<Enter>
|
||||||
|
|
||||||
|
v = :mark -t<Enter>
|
||||||
|
<Space> = :mark -t<Enter>:next<Enter>
|
||||||
|
V = :mark -v<Enter>
|
||||||
|
|
||||||
|
T = :toggle-threads<Enter>
|
||||||
|
zc = :fold<Enter>
|
||||||
|
zo = :unfold<Enter>
|
||||||
|
za = :fold -t<Enter>
|
||||||
|
zM = :fold -a<Enter>
|
||||||
|
zR = :unfold -a<Enter>
|
||||||
|
<tab> = :fold -t<Enter>
|
||||||
|
|
||||||
|
zz = :align center<Enter>
|
||||||
|
zt = :align top<Enter>
|
||||||
|
zb = :align bottom<Enter>
|
||||||
|
|
||||||
|
<Enter> = :view<Enter>
|
||||||
|
#d = :choose -o y 'Really delete this message' delete-message<Enter>
|
||||||
|
#D = :delete<Enter>
|
||||||
|
a = :archive flat<Enter>
|
||||||
|
A = :unmark -a<Enter>:mark -T<Enter>:archive flat<Enter>
|
||||||
|
|
||||||
|
C = :compose<Enter>
|
||||||
|
m = :compose<Enter>
|
||||||
|
|
||||||
|
b = :bounce<space>
|
||||||
|
|
||||||
|
rr = :reply -a<Enter>
|
||||||
|
rq = :reply -aq<Enter>
|
||||||
|
Rr = :reply<Enter>
|
||||||
|
Rq = :reply -q<Enter>
|
||||||
|
|
||||||
|
c = :cf<space>
|
||||||
|
$ = :term<space>
|
||||||
|
! = :term<space>
|
||||||
|
| = :pipe<space>
|
||||||
|
|
||||||
|
/ = :search<space>
|
||||||
|
\ = :filter<space>
|
||||||
|
n = :next-result<Enter>
|
||||||
|
N = :prev-result<Enter>
|
||||||
|
<Esc> = :clear<Enter>
|
||||||
|
|
||||||
|
s = :split<Enter>
|
||||||
|
S = :vsplit<Enter>
|
||||||
|
|
||||||
|
pl = :patch list<Enter>
|
||||||
|
pa = :patch apply <Tab>
|
||||||
|
pd = :patch drop <Tab>
|
||||||
|
pb = :patch rebase<Enter>
|
||||||
|
pt = :patch term<Enter>
|
||||||
|
ps = :patch switch <Tab>
|
||||||
|
|
||||||
|
[messages:folder=Drafts]
|
||||||
|
<Enter> = :recall<Enter>
|
||||||
|
|
||||||
|
[view]
|
||||||
|
|
||||||
|
,l = :pipe urlscan<Enter>
|
||||||
|
|
||||||
|
/ = :toggle-key-passthrough<Enter>/
|
||||||
|
q = :close<Enter>
|
||||||
|
O = :open<Enter>
|
||||||
|
o = :open<Enter>
|
||||||
|
S = :save<space>
|
||||||
|
| = :pipe<space>
|
||||||
|
D = :delete<Enter>
|
||||||
|
A = :archive flat<Enter>
|
||||||
|
|
||||||
|
<C-l> = :open-link <space>
|
||||||
|
|
||||||
|
f = :forward<Enter>
|
||||||
|
rr = :reply -a<Enter>
|
||||||
|
rq = :reply -aq<Enter>
|
||||||
|
Rr = :reply<Enter>
|
||||||
|
Rq = :reply -q<Enter>
|
||||||
|
|
||||||
|
H = :toggle-headers<Enter>
|
||||||
|
<C-k> = :prev-part<Enter>
|
||||||
|
<C-Up> = :prev-part<Enter>
|
||||||
|
<C-j> = :next-part<Enter>
|
||||||
|
<C-Down> = :next-part<Enter>
|
||||||
|
J = :next<Enter>
|
||||||
|
<C-Right> = :next<Enter>
|
||||||
|
K = :prev<Enter>
|
||||||
|
<C-Left> = :prev<Enter>
|
||||||
|
|
||||||
|
[view::passthrough]
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
<Esc> = :toggle-key-passthrough<Enter>
|
||||||
|
|
||||||
|
[compose]
|
||||||
|
# Keybindings used when the embedded terminal is not selected in the compose
|
||||||
|
# view
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
$complete = <C-o>
|
||||||
|
<C-k> = :prev-field<Enter>
|
||||||
|
<C-Up> = :prev-field<Enter>
|
||||||
|
<C-j> = :next-field<Enter>
|
||||||
|
<C-Down> = :next-field<Enter>
|
||||||
|
<A-p> = :switch-account -p<Enter>
|
||||||
|
<C-Left> = :switch-account -p<Enter>
|
||||||
|
<A-n> = :switch-account -n<Enter>
|
||||||
|
<C-Right> = :switch-account -n<Enter>
|
||||||
|
<tab> = :next-field<Enter>
|
||||||
|
<backtab> = :prev-field<Enter>
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-PgUp> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-PgDn> = :next-tab<Enter>
|
||||||
|
|
||||||
|
[compose::editor]
|
||||||
|
# Keybindings used when the embedded terminal is selected in the compose view
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
<C-k> = :prev-field<Enter>
|
||||||
|
<C-Up> = :prev-field<Enter>
|
||||||
|
<C-j> = :next-field<Enter>
|
||||||
|
<C-Down> = :next-field<Enter>
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-PgUp> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-PgDn> = :next-tab<Enter>
|
||||||
|
|
||||||
|
|
||||||
|
# Insert signatures with Ctrl+s + number
|
||||||
|
<C-s>1 = :exec cat /home/liph/.config/aerc/sigs/formal.txt<Enter>
|
||||||
|
<C-s>2 = :read ~/.config/aerc/sigs/formal_eng.txt<Enter>
|
||||||
|
<C-s>3 = :read ~/.config/aerc/sigs/liph.txt<Enter>
|
||||||
|
<C-s>4 = :read ~/.config/aerc/sigs/phil.txt<Enter>
|
||||||
|
|
||||||
|
[compose::review]
|
||||||
|
# Keybindings used when reviewing a message to be sent
|
||||||
|
# Inline comments are used as descriptions on the review screen
|
||||||
|
y = :send<Enter> # Send
|
||||||
|
n = :abort<Enter> # Abort (discard message, no confirmation)
|
||||||
|
s = :sign<Enter> # Toggle signing
|
||||||
|
x = :encrypt<Enter> # Toggle encryption to all recipients
|
||||||
|
v = :preview<Enter> # Preview message
|
||||||
|
p = :postpone<Enter> # Postpone
|
||||||
|
q = :choose -o d discard abort -o p postpone postpone<Enter> # Abort or postpone
|
||||||
|
e = :edit<Enter> # Edit (body and headers)
|
||||||
|
a = :attach<space> # Add attachment
|
||||||
|
d = :detach<space> # Remove attachment
|
||||||
|
|
||||||
|
[terminal]
|
||||||
|
$noinherit = true
|
||||||
|
$ex = <C-x>
|
||||||
|
|
||||||
|
<C-p> = :prev-tab<Enter>
|
||||||
|
<C-n> = :next-tab<Enter>
|
||||||
|
<C-PgUp> = :prev-tab<Enter>
|
||||||
|
<C-PgDn> = :next-tab<Enter>
|
||||||
12
aerc/.config/aerc/notmuch-queries.conf
Normal file
12
aerc/.config/aerc/notmuch-queries.conf
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
Inbox=tag:inbox AND NOT tag:spam
|
||||||
|
Unread=tag:unread AND NOT tag:spam
|
||||||
|
Newsletters=tag:newsletter
|
||||||
|
Shopping=tag:shopping
|
||||||
|
Finance=tag:finance
|
||||||
|
Travel=tag:travel
|
||||||
|
Development=tag:dev
|
||||||
|
Spam=tag:spam
|
||||||
|
Sent=tag:sent
|
||||||
|
Trash=tag:deleted OR folder:Trash
|
||||||
|
Archive=tag:archive
|
||||||
|
All Mail=*
|
||||||
23
aerc/.config/aerc/scripts/move-trash.sh
Executable file
23
aerc/.config/aerc/scripts/move-trash.sh
Executable file
@@ -0,0 +1,23 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get the current message's notmuch ID from aerc's environment
|
||||||
|
# We'll use notmuch to find and move the file
|
||||||
|
|
||||||
|
maildir="$HOME/.local/share/mail"
|
||||||
|
|
||||||
|
# Find files for messages in current thread that aren't already in Trash
|
||||||
|
notmuch search --output=files thread:{} 2>/dev/null | while read filepath; do
|
||||||
|
# Skip if already in Trash
|
||||||
|
if [[ "$filepath" == *"/Trash/"* ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$filepath" ]]; then
|
||||||
|
filename=$(basename "$filepath")
|
||||||
|
mkdir -p "$maildir/Trash/cur"
|
||||||
|
mv "$filepath" "$maildir/Trash/cur/$filename"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Re-index
|
||||||
|
notmuch new >/dev/null 2>&1
|
||||||
35
aerc/.config/aerc/scripts/new-sync.sh
Executable file
35
aerc/.config/aerc/scripts/new-sync.sh
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
MBSYNC=$(pgrep mbsync)
|
||||||
|
NOTMUCH=$(pgrep notmuch)
|
||||||
|
if [ -n "$MBSYNC" -o -n "$NOTMUCH" ]; then
|
||||||
|
echo "Already running one instance of mbsync or notmuch. Exiting..."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
maildir="$HOME/.local/share/mail"
|
||||||
|
|
||||||
|
echo "Moving messages tagged as *deleted* to Trash"
|
||||||
|
notmuch search --format=text0 --output=files tag:deleted | while IFS= read -r -d '' filepath; do
|
||||||
|
# Skip if already in Trash
|
||||||
|
case "$filepath" in
|
||||||
|
*/Trash/*)
|
||||||
|
continue
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Move to Trash if file exists
|
||||||
|
if [ -f "$filepath" ]; then
|
||||||
|
filename=$(basename "$filepath")
|
||||||
|
mkdir -p "$maildir/Trash/cur"
|
||||||
|
mv -v "$filepath" "$maildir/Trash/cur/$filename"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
mbsync -Va
|
||||||
|
notmuch new
|
||||||
|
PYTHONWARNINGS="ignore::UserWarning" afew --tag --new
|
||||||
|
|
||||||
|
# Auto-tag and cleanup
|
||||||
|
notmuch tag +sent -- folder:Sent and not tag:sent
|
||||||
|
notmuch tag +trash -- folder:Trash and not tag:trash
|
||||||
|
notmuch tag -deleted -- folder:Trash
|
||||||
15
aerc/.config/aerc/scripts/new-sync_1.sh
Executable file
15
aerc/.config/aerc/scripts/new-sync_1.sh
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
MBSYNC=$(pgrep mbsync)
|
||||||
|
NOTMUCH=$(pgrep notmuch)
|
||||||
|
|
||||||
|
if [ -n "$MBSYNC" -o -n "$NOTMUCH" ]; then
|
||||||
|
echo "Already running one instance of mbsync or notmuch. Exiting..."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Deleting messages tagged as *deleted*"
|
||||||
|
notmuch search --format=text0 --output=files tag:deleted | xargs -0 --no-run-if-empty rm -v
|
||||||
|
|
||||||
|
mbsync -Va
|
||||||
|
notmuch new
|
||||||
25
aerc/.config/aerc/scripts/sig-picker.sh
Executable file
25
aerc/.config/aerc/scripts/sig-picker.sh
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
read input
|
||||||
|
|
||||||
|
case "$input" in
|
||||||
|
"liiph@proton.me")
|
||||||
|
cat ~/.config/aerc/sigs/liph.txt
|
||||||
|
;;
|
||||||
|
"liiph@protonmail.com")
|
||||||
|
cat ~/.config/aerc/sigs/liph.txt
|
||||||
|
;;
|
||||||
|
"liiph@pm.me")
|
||||||
|
cat ~/.config/aerc/sigs/liph.txt
|
||||||
|
;;
|
||||||
|
"ph.waibel@proton.me")
|
||||||
|
cat ~/.config/aerc/sigs/formal.txt
|
||||||
|
;;
|
||||||
|
"ph.waibel@pm.me")
|
||||||
|
cat ~/.config/aerc/sigs/phil.txt
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# Default signature if no match
|
||||||
|
cat ~/.config/aerc/sigs/default.txt
|
||||||
|
;;
|
||||||
|
esac
|
||||||
41
aerc/.config/aerc/scripts/sync-mail.sh
Executable file
41
aerc/.config/aerc/scripts/sync-mail.sh
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Sync mail from ProtonMail Bridge (suppress CLOSE error)
|
||||||
|
echo "Syncing mail from ProtonMail..."
|
||||||
|
mbsync -a 2>&1 | grep -v "CLOSE"
|
||||||
|
|
||||||
|
# Index new mail (this automatically runs post-new hook)
|
||||||
|
echo "Indexing new messages..."
|
||||||
|
notmuch new
|
||||||
|
|
||||||
|
# Move all deleted messages to Trash folder
|
||||||
|
echo "Cleaning up deleted messages..."
|
||||||
|
DELETED_COUNT=0
|
||||||
|
notmuch search --output=files tag:deleted 2>/dev/null | while read filepath; do
|
||||||
|
if [ -f "$filepath" ]; then
|
||||||
|
TRASH_DIR="$HOME/.local/share/mail/Trash/cur"
|
||||||
|
mkdir -p "$TRASH_DIR"
|
||||||
|
|
||||||
|
FILENAME=$(basename "$filepath")
|
||||||
|
mv "$filepath" "$TRASH_DIR/$FILENAME"
|
||||||
|
((DELETED_COUNT++))
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Update notmuch after moving files
|
||||||
|
if [ $DELETED_COUNT -gt 0 ]; then
|
||||||
|
echo "Moved $DELETED_COUNT message(s) to Trash"
|
||||||
|
notmuch new --no-hooks >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Sync moved messages back to ProtonMail
|
||||||
|
echo "Syncing changes to ProtonMail..."
|
||||||
|
mbsync -a 2>&1 | grep -v "CLOSE" >/dev/null
|
||||||
|
|
||||||
|
# Notify if new mail
|
||||||
|
NEW=$(notmuch count tag:unread)
|
||||||
|
if [ $NEW -gt 0 ]; then
|
||||||
|
notify-send "📬 Mail" "$NEW unread message(s)"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Sync complete: $(date)"
|
||||||
47
aerc/.config/aerc/scripts/trash-message.sh
Executable file
47
aerc/.config/aerc/scripts/trash-message.sh
Executable file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Save the piped message to temp file
|
||||||
|
TEMP_MSG=$(mktemp)
|
||||||
|
cat > "$TEMP_MSG"
|
||||||
|
|
||||||
|
# Extract Message-ID more robustly
|
||||||
|
MESSAGE_ID=$(grep -i "^Message-ID:" "$TEMP_MSG" | head -1 | sed 's/^[Mm]essage-[Ii][Dd]: *//; s/^<//; s/>$//' | tr -d '\r\n ')
|
||||||
|
|
||||||
|
# Cleanup temp file
|
||||||
|
rm "$TEMP_MSG"
|
||||||
|
|
||||||
|
if [ -z "$MESSAGE_ID" ]; then
|
||||||
|
notify-send "Error" "Could not find Message-ID"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get file path from notmuch
|
||||||
|
FILEPATH=$(notmuch search --output=files "id:$MESSAGE_ID" 2>/dev/null | head -1)
|
||||||
|
|
||||||
|
if [ -z "$FILEPATH" ] || [ ! -f "$FILEPATH" ]; then
|
||||||
|
# Try alternative search
|
||||||
|
FILEPATH=$(notmuch search --output=files --exclude=false "*" 2>/dev/null | xargs grep -l "Message-ID.*$MESSAGE_ID" 2>/dev/null | head -1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$FILEPATH" ] || [ ! -f "$FILEPATH" ]; then
|
||||||
|
notify-send "Error" "File not found for Message-ID: $MESSAGE_ID"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Move to Trash folder
|
||||||
|
TRASH_DIR="$HOME/.local/share/mail/Trash/cur"
|
||||||
|
mkdir -p "$TRASH_DIR"
|
||||||
|
|
||||||
|
FILENAME=$(basename "$FILEPATH")
|
||||||
|
mv "$FILEPATH" "$TRASH_DIR/$FILENAME"
|
||||||
|
|
||||||
|
# Update notmuch database
|
||||||
|
notmuch new --no-hooks >/dev/null 2>&1
|
||||||
|
|
||||||
|
# Tag as deleted
|
||||||
|
notmuch tag +deleted +trash -inbox -unread -- "id:$MESSAGE_ID" >/dev/null 2>&1
|
||||||
|
|
||||||
|
# Trigger sync in background
|
||||||
|
(sleep 2 && mbsync -a 2>&1 | grep -v CLOSE >/dev/null) &
|
||||||
|
|
||||||
|
notify-send "📧 Aerc" "Moved to Trash"
|
||||||
3
aerc/.config/aerc/sigs/formal.txt
Normal file
3
aerc/.config/aerc/sigs/formal.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--
|
||||||
|
freundliche Grüsse
|
||||||
|
Philipp Waibel
|
||||||
3
aerc/.config/aerc/sigs/formal_eng.txt
Normal file
3
aerc/.config/aerc/sigs/formal_eng.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--
|
||||||
|
kind regards
|
||||||
|
Philipp Waibel
|
||||||
3
aerc/.config/aerc/sigs/liph.txt
Normal file
3
aerc/.config/aerc/sigs/liph.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--
|
||||||
|
thanks
|
||||||
|
Phil
|
||||||
3
aerc/.config/aerc/sigs/phil.txt
Normal file
3
aerc/.config/aerc/sigs/phil.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--
|
||||||
|
besten Dank im Voraus
|
||||||
|
Philipp Waibel
|
||||||
51
aerc/.config/aerc/stylesets/catppuccin-mocha
Normal file
51
aerc/.config/aerc/stylesets/catppuccin-mocha
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
*.default=true
|
||||||
|
*.normal=true
|
||||||
|
|
||||||
|
default.fg=#cdd6f4
|
||||||
|
|
||||||
|
error.fg=#f38ba8
|
||||||
|
warning.fg=#fab387
|
||||||
|
success.fg=#a6e3a1
|
||||||
|
|
||||||
|
tab.fg=#6c7086
|
||||||
|
tab.bg=#181825
|
||||||
|
tab.selected.fg=#cdd6f4
|
||||||
|
tab.selected.bg=#1e1e2e
|
||||||
|
tab.selected.bold=true
|
||||||
|
|
||||||
|
border.fg=#11111b
|
||||||
|
border.bold=true
|
||||||
|
|
||||||
|
msglist_unread.bold=true
|
||||||
|
msglist_flagged.fg=#f9e2af
|
||||||
|
msglist_flagged.bold=true
|
||||||
|
msglist_result.fg=#89b4fa
|
||||||
|
msglist_result.bold=true
|
||||||
|
msglist_*.selected.bold=true
|
||||||
|
msglist_*.selected.bg=#313244
|
||||||
|
|
||||||
|
dirlist_*.selected.bold=true
|
||||||
|
dirlist_*.selected.bg=#313244
|
||||||
|
|
||||||
|
statusline_default.fg=#9399b2
|
||||||
|
statusline_default.bg=#313244
|
||||||
|
statusline_error.bold=true
|
||||||
|
statusline_success.bold=true
|
||||||
|
|
||||||
|
selector_focused.bg=#313244
|
||||||
|
|
||||||
|
completion_default.selected.bg=#313244
|
||||||
|
|
||||||
|
[viewer]
|
||||||
|
url.fg=#89b4fa
|
||||||
|
url.underline=true
|
||||||
|
header.bold=true
|
||||||
|
signature.dim=true
|
||||||
|
diff_meta.bold=true
|
||||||
|
diff_chunk.fg=#89b4fa
|
||||||
|
diff_chunk_func.fg=#89b4fa
|
||||||
|
diff_chunk_func.bold=true
|
||||||
|
diff_add.fg=#a6e3a1
|
||||||
|
diff_del.fg=#f38ba8
|
||||||
|
quote_*.fg=#6c7086
|
||||||
|
quote_1.fg=#9399b2
|
||||||
6
aerc/.config/aerc/templates/new-msg
Normal file
6
aerc/.config/aerc/templates/new-msg
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
X-Mailer: aerc {{version}}
|
||||||
|
|
||||||
|
{{if .From}}
|
||||||
|
{{exec `~/.config/aerc/scripts/sig-picker.sh` (index .From 0).Address}}
|
||||||
|
{{else}}
|
||||||
|
{{end}}
|
||||||
7
aerc/.config/aerc/templates/reply-quoted
Normal file
7
aerc/.config/aerc/templates/reply-quoted
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
X-Mailer: aerc {{version}}
|
||||||
|
|
||||||
|
On {{dateFormat (.OriginalDate | toLocal) "Mon Jan 2, 2006 at 3:04 PM MST"}}, {{.OriginalFrom | names | join ", "}} wrote:
|
||||||
|
{{trimSignature .OriginalText | quote}}
|
||||||
|
|
||||||
|
|
||||||
|
{{exec `~/.config/aerc/scripts/sig-picker.sh` (index .From 0).Address}}
|
||||||
@@ -25,7 +25,6 @@
|
|||||||
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
|
"lazydev.nvim": { "branch": "main", "commit": "5231c62aa83c2f8dc8e7ba957aa77098cda1257d" },
|
||||||
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
|
"lualine.nvim": { "branch": "master", "commit": "47f91c416daef12db467145e16bed5bbfe00add8" },
|
||||||
"luvit-meta": { "branch": "main", "commit": "0ea4ff636c5bb559ffa78108561d0976f4de9682" },
|
"luvit-meta": { "branch": "main", "commit": "0ea4ff636c5bb559ffa78108561d0976f4de9682" },
|
||||||
"markview.nvim": { "branch": "main", "commit": "0a5033326f703d99a8788e2d47753d6298195e8a" },
|
|
||||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "8f1a3e6eecb638817e8999aaa16ada27cd54d867" },
|
"mason-lspconfig.nvim": { "branch": "main", "commit": "8f1a3e6eecb638817e8999aaa16ada27cd54d867" },
|
||||||
"mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" },
|
"mason-tool-installer.nvim": { "branch": "main", "commit": "517ef5994ef9d6b738322664d5fdd948f0fdeb46" },
|
||||||
"mason.nvim": { "branch": "main", "commit": "57e5a8addb8c71fb063ee4acda466c7cf6ad2800" },
|
"mason.nvim": { "branch": "main", "commit": "57e5a8addb8c71fb063ee4acda466c7cf6ad2800" },
|
||||||
@@ -40,14 +39,17 @@
|
|||||||
"nvim-navic": { "branch": "master", "commit": "7d914a39a1ef8f4e22c2c4381abeef7c556f5a13" },
|
"nvim-navic": { "branch": "master", "commit": "7d914a39a1ef8f4e22c2c4381abeef7c556f5a13" },
|
||||||
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
|
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
|
||||||
"nvim-spectre": { "branch": "master", "commit": "72f56f7585903cd7bf92c665351aa585e150af0f" },
|
"nvim-spectre": { "branch": "master", "commit": "72f56f7585903cd7bf92c665351aa585e150af0f" },
|
||||||
|
"nvim-surround": { "branch": "main", "commit": "1098d7b3c34adcfa7feb3289ee434529abd4afd1" },
|
||||||
"nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" },
|
"nvim-tmux-navigation": { "branch": "main", "commit": "4898c98702954439233fdaf764c39636681e2861" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||||
|
"nvim-treesitter-textobjects": { "branch": "master", "commit": "5ca4aaa6efdcc59be46b95a3e876300cfead05ef" },
|
||||||
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" },
|
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "6788013bb9cb784e606ada44206b0e755e4323d7" },
|
"nvim-web-devicons": { "branch": "master", "commit": "6788013bb9cb784e606ada44206b0e755e4323d7" },
|
||||||
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
|
"obsidian.nvim": { "branch": "main", "commit": "ae1f76a75c7ce36866e1d9342a8f6f5b9c2caf9b" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||||
"portal.nvim": { "branch": "main", "commit": "77d9d53fec945bfa407d5fd7120f1b4f117450ed" },
|
"portal.nvim": { "branch": "main", "commit": "77d9d53fec945bfa407d5fd7120f1b4f117450ed" },
|
||||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "8aafe2cbd89cd4090f573a98cab6b20366576fde" },
|
"rainbow-delimiters.nvim": { "branch": "master", "commit": "8aafe2cbd89cd4090f573a98cab6b20366576fde" },
|
||||||
|
"render-markdown.nvim": { "branch": "main", "commit": "07d088bf8bdadd159eb807b90eaee86a4778383f" },
|
||||||
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
|
||||||
"telescope.nvim": { "branch": "master", "commit": "e709d31454ee6e6157f0537f861f797bd44c0bad" },
|
"telescope.nvim": { "branch": "master", "commit": "e709d31454ee6e6157f0537f861f797bd44c0bad" },
|
||||||
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
"trouble.nvim": { "branch": "main", "commit": "bd67efe408d4816e25e8491cc5ad4088e708a69a" },
|
||||||
|
|||||||
123
nvim/.config/nvim/lua/plugins.inactive/markdown_1.lua
Normal file
123
nvim/.config/nvim/lua/plugins.inactive/markdown_1.lua
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"OXY2DEV/markview.nvim",
|
||||||
|
lazy = false,
|
||||||
|
ft = "markdown",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
local presets = require("markview.presets")
|
||||||
|
|
||||||
|
require("markview").setup({
|
||||||
|
modes = { "n", "no", "c" },
|
||||||
|
hybrid_modes = { "n" },
|
||||||
|
|
||||||
|
callbacks = {
|
||||||
|
on_enable = function(_, win)
|
||||||
|
vim.wo[win].conceallevel = 2
|
||||||
|
vim.wo[win].concealcursor = ""
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
markdown = {
|
||||||
|
headings = presets.headings.glow,
|
||||||
|
|
||||||
|
code_blocks = {
|
||||||
|
enable = true,
|
||||||
|
style = "language",
|
||||||
|
position = "overlay",
|
||||||
|
min_width = 60,
|
||||||
|
pad_amount = 2,
|
||||||
|
hl = "MarkviewCode",
|
||||||
|
},
|
||||||
|
|
||||||
|
block_quotes = {
|
||||||
|
enable = true,
|
||||||
|
default = {
|
||||||
|
border = "▋",
|
||||||
|
border_hl = "MarkviewBlockQuoteBorder",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
tables = {
|
||||||
|
enable = true,
|
||||||
|
parts = {
|
||||||
|
top = { "╭", "─", "┬", "─", "╮" },
|
||||||
|
header = { "├", "─", "┼", "─", "┤" },
|
||||||
|
separator = { "├", "─", "┼", "─", "┤" },
|
||||||
|
row = { "│", " ", "│", " ", "│" },
|
||||||
|
bottom = { "╰", "─", "┴", "─", "╯" },
|
||||||
|
},
|
||||||
|
use_virt_lines = true,
|
||||||
|
},
|
||||||
|
|
||||||
|
list_items = {
|
||||||
|
enable = true,
|
||||||
|
indent_size = 2,
|
||||||
|
shift_width = 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
markdown_inline = {
|
||||||
|
enable = true,
|
||||||
|
|
||||||
|
checkboxes = {
|
||||||
|
enable = true,
|
||||||
|
checked = {
|
||||||
|
text = "✓",
|
||||||
|
hl = "MarkviewCheckboxChecked",
|
||||||
|
},
|
||||||
|
unchecked = {
|
||||||
|
text = "☐",
|
||||||
|
hl = "MarkviewCheckboxUnchecked",
|
||||||
|
},
|
||||||
|
custom = {
|
||||||
|
{
|
||||||
|
match_string = "!",
|
||||||
|
text = "!",
|
||||||
|
hl = "MarkviewCheckboxImportant",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
match_string = "-",
|
||||||
|
text = "◐",
|
||||||
|
hl = "MarkviewCheckboxPending",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
match_string = "~",
|
||||||
|
text = "≈",
|
||||||
|
hl = "MarkviewCheckboxProgress",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Force override colors AFTER markview sets them up
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = "markdown",
|
||||||
|
callback = function()
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.api.nvim_set_hl(0, "MarkviewCheckboxChecked", { fg = "#f9e2af", force = true })
|
||||||
|
vim.api.nvim_set_hl(0, "MarkviewCheckboxUnchecked", { fg = "#f9e2af", force = true })
|
||||||
|
vim.api.nvim_set_hl(0, "MarkviewCheckboxImportant", { fg = "#f9e2af", bold = true, force = true })
|
||||||
|
vim.api.nvim_set_hl(0, "MarkviewCheckboxPending", { fg = "#f9e2af", force = true })
|
||||||
|
vim.api.nvim_set_hl(0, "MarkviewCheckboxProgress", { fg = "#f9e2af", force = true })
|
||||||
|
end)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Checkbox extras
|
||||||
|
require("markview.extras.checkboxes").setup({
|
||||||
|
default = "X",
|
||||||
|
remove_markers = false,
|
||||||
|
exit = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Keymaps
|
||||||
|
vim.keymap.set("n", "<leader>mt", "<cmd>Markview toggle<cr>", { desc = "Toggle Markview" })
|
||||||
|
vim.keymap.set("n", "<leader>ch", "<cmd>Checkboxes toggle<cr>", { desc = "Toggle checkbox" })
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -1,225 +0,0 @@
|
|||||||
return {
|
|
||||||
{
|
|
||||||
"OXY2DEV/markview.nvim",
|
|
||||||
lazy = false,
|
|
||||||
ft = "markdown",
|
|
||||||
dependencies = {
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
"nvim-tree/nvim-web-devicons",
|
|
||||||
},
|
|
||||||
config = function()
|
|
||||||
local presets = require("markview.presets")
|
|
||||||
|
|
||||||
require("markview").setup({
|
|
||||||
modes = { "n", "no", "c" },
|
|
||||||
hybrid_modes = { "n" },
|
|
||||||
|
|
||||||
callbacks = {
|
|
||||||
on_enable = function(_, win)
|
|
||||||
vim.wo[win].conceallevel = 2
|
|
||||||
vim.wo[win].concealcursor = ""
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Glow headings preset
|
|
||||||
headings = presets.headings.glow,
|
|
||||||
|
|
||||||
-- Code blocks configuration
|
|
||||||
code_blocks = {
|
|
||||||
enable = true,
|
|
||||||
style = "language",
|
|
||||||
position = "overlay",
|
|
||||||
min_width = 60,
|
|
||||||
pad_amount = 2,
|
|
||||||
pad_char = " ",
|
|
||||||
|
|
||||||
language_names = {
|
|
||||||
{ "py", "python" },
|
|
||||||
{ "cpp", "C++" },
|
|
||||||
{ "js", "javascript" },
|
|
||||||
{ "ts", "typescript" },
|
|
||||||
{ "sh", "bash" },
|
|
||||||
},
|
|
||||||
|
|
||||||
hl = "MarkviewCode",
|
|
||||||
sign = true,
|
|
||||||
sign_hl = "MarkviewCodeSign",
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Block quotes configuration
|
|
||||||
block_quotes = {
|
|
||||||
enable = true,
|
|
||||||
default = {
|
|
||||||
border = "▋",
|
|
||||||
border_hl = "MarkviewBlockQuoteBorder",
|
|
||||||
},
|
|
||||||
|
|
||||||
callouts = {
|
|
||||||
{
|
|
||||||
match_string = "NOTE",
|
|
||||||
callout_preview = " Note",
|
|
||||||
callout_preview_hl = "MarkviewBlockQuoteNote",
|
|
||||||
border = "▋",
|
|
||||||
border_hl = "MarkviewBlockQuoteNote",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
match_string = "TIP",
|
|
||||||
callout_preview = " Tip",
|
|
||||||
callout_preview_hl = "MarkviewBlockQuoteTip",
|
|
||||||
border = "▋",
|
|
||||||
border_hl = "MarkviewBlockQuoteTip",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
match_string = "IMPORTANT",
|
|
||||||
callout_preview = " Important",
|
|
||||||
callout_preview_hl = "MarkviewBlockQuoteImportant",
|
|
||||||
border = "▋",
|
|
||||||
border_hl = "MarkviewBlockQuoteImportant",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
match_string = "WARNING",
|
|
||||||
callout_preview = " Warning",
|
|
||||||
callout_preview_hl = "MarkviewBlockQuoteWarn",
|
|
||||||
border = "▋",
|
|
||||||
border_hl = "MarkviewBlockQuoteWarn",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
match_string = "CAUTION",
|
|
||||||
callout_preview = " Caution",
|
|
||||||
callout_preview_hl = "MarkviewBlockQuoteError",
|
|
||||||
border = "▋",
|
|
||||||
border_hl = "MarkviewBlockQuoteError",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Checkboxes configuration
|
|
||||||
checkboxes = {
|
|
||||||
enable = true,
|
|
||||||
checked = {
|
|
||||||
text = "✓",
|
|
||||||
hl = "MarkviewCheckboxChecked",
|
|
||||||
scope_hl = nil,
|
|
||||||
},
|
|
||||||
unchecked = {
|
|
||||||
text = "☐",
|
|
||||||
hl = "MarkviewCheckboxUnchecked",
|
|
||||||
scope_hl = nil,
|
|
||||||
},
|
|
||||||
custom = {
|
|
||||||
{
|
|
||||||
match_string = "!",
|
|
||||||
text = "!",
|
|
||||||
hl = "MarkviewCheckboxImportant",
|
|
||||||
scope_hl = nil,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
match_string = "-",
|
|
||||||
text = "◐",
|
|
||||||
hl = "MarkviewCheckboxPending",
|
|
||||||
scope_hl = nil,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
match_string = "~",
|
|
||||||
text = "≈",
|
|
||||||
hl = "MarkviewCheckboxProgress",
|
|
||||||
scope_hl = nil,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
|
|
||||||
-- Tables with rounded borders
|
|
||||||
tables = {
|
|
||||||
enable = true,
|
|
||||||
|
|
||||||
parts = {
|
|
||||||
top = { "╭", "─", "┬", "─", "╮" },
|
|
||||||
header = { "├", "─", "┼", "─", "┤" },
|
|
||||||
separator = { "├", "─", "┼", "─", "┤" },
|
|
||||||
row = { "│", " ", "│", " ", "│" },
|
|
||||||
bottom = { "╰", "─", "┴", "─", "╯" },
|
|
||||||
|
|
||||||
overlap = { "┼" },
|
|
||||||
},
|
|
||||||
|
|
||||||
hl = {
|
|
||||||
"MarkviewTableHeader",
|
|
||||||
"MarkviewTableBorder",
|
|
||||||
"MarkviewTableBorder",
|
|
||||||
"MarkviewTableBorder",
|
|
||||||
"MarkviewTableBorder",
|
|
||||||
},
|
|
||||||
|
|
||||||
use_virt_lines = true,
|
|
||||||
},
|
|
||||||
|
|
||||||
-- List items
|
|
||||||
list_items = {
|
|
||||||
enable = true,
|
|
||||||
indent_size = 2,
|
|
||||||
shift_width = 2,
|
|
||||||
|
|
||||||
marker_minus = {
|
|
||||||
add_padding = true,
|
|
||||||
text = "•",
|
|
||||||
hl = "MarkviewListItemMinus",
|
|
||||||
},
|
|
||||||
marker_plus = {
|
|
||||||
add_padding = true,
|
|
||||||
text = "•",
|
|
||||||
hl = "MarkviewListItemPlus",
|
|
||||||
},
|
|
||||||
marker_star = {
|
|
||||||
add_padding = true,
|
|
||||||
text = "•",
|
|
||||||
hl = "MarkviewListItemStar",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Catppuccin Mocha colors
|
|
||||||
vim.cmd([[
|
|
||||||
" Code blocks - Catppuccin Mocha
|
|
||||||
highlight MarkviewCode guibg=#181825
|
|
||||||
highlight MarkviewCodeSign guifg=#89b4fa
|
|
||||||
|
|
||||||
" Block quotes - Catppuccin Mocha
|
|
||||||
highlight MarkviewBlockQuoteBorder guifg=#6c7086
|
|
||||||
highlight MarkviewBlockQuoteNote guifg=#89b4fa
|
|
||||||
highlight MarkviewBlockQuoteTip guifg=#a6e3a1
|
|
||||||
highlight MarkviewBlockQuoteImportant guifg=#cba6f7
|
|
||||||
highlight MarkviewBlockQuoteWarn guifg=#fab387
|
|
||||||
highlight MarkviewBlockQuoteError guifg=#f38ba8
|
|
||||||
|
|
||||||
" Checkboxes - Catppuccin Mocha
|
|
||||||
highlight MarkviewCheckboxChecked guifg=#a6e3a1
|
|
||||||
highlight MarkviewCheckboxUnchecked guifg=#6c7086
|
|
||||||
highlight MarkviewCheckboxImportant guifg=#f38ba8 gui=bold
|
|
||||||
highlight MarkviewCheckboxPending guifg=#fab387
|
|
||||||
highlight MarkviewCheckboxProgress guifg=#89b4fa
|
|
||||||
|
|
||||||
" List items - Catppuccin Mocha
|
|
||||||
highlight MarkviewListItemMinus guifg=#89b4fa
|
|
||||||
highlight MarkviewListItemPlus guifg=#a6e3a1
|
|
||||||
highlight MarkviewListItemStar guifg=#cba6f7
|
|
||||||
|
|
||||||
" Tables - Catppuccin Mocha
|
|
||||||
highlight MarkviewTableHeader guifg=#cba6f7 gui=bold
|
|
||||||
highlight MarkviewTableBorder guifg=#6c7086
|
|
||||||
]])
|
|
||||||
|
|
||||||
-- Setup checkbox toggle extras
|
|
||||||
require("markview.extras.checkboxes").setup({
|
|
||||||
default = "X",
|
|
||||||
remove_markers = false,
|
|
||||||
exit = true,
|
|
||||||
default_marker = "-",
|
|
||||||
default_state = "X",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Keymaps
|
|
||||||
vim.keymap.set("n", "<leader>mt", "<cmd>Markview toggle<cr>", { desc = "Toggle Markview" })
|
|
||||||
vim.keymap.set("n", "<leader>ch", "<cmd>Checkboxes toggle<cr>", { desc = "Toggle checkbox" })
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
227
nvim/.config/nvim/lua/plugins/nvim-surround.lua
Normal file
227
nvim/.config/nvim/lua/plugins/nvim-surround.lua
Normal file
@@ -0,0 +1,227 @@
|
|||||||
|
-- nvim-surround configuration with autopairs, treesitter, and comment integration
|
||||||
|
-- Place this in ~/.config/nvim/lua/plugins/nvim-surround.lua (for lazy.nvim)
|
||||||
|
|
||||||
|
return {
|
||||||
|
-- nvim-surround: manipulate surroundings
|
||||||
|
{
|
||||||
|
"kylechui/nvim-surround",
|
||||||
|
version = "*",
|
||||||
|
event = "VeryLazy",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
"nvim-treesitter/nvim-treesitter-textobjects",
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("nvim-surround").setup({
|
||||||
|
keymaps = {
|
||||||
|
insert = "<C-g>s",
|
||||||
|
insert_line = "<C-g>S",
|
||||||
|
normal = "ys",
|
||||||
|
normal_cur = "yss",
|
||||||
|
normal_line = "yS",
|
||||||
|
normal_cur_line = "ySS",
|
||||||
|
visual = "S",
|
||||||
|
visual_line = "gS",
|
||||||
|
delete = "ds",
|
||||||
|
change = "cs",
|
||||||
|
change_line = "cS",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Custom surrounds
|
||||||
|
surrounds = {
|
||||||
|
-- Function call surround
|
||||||
|
["f"] = {
|
||||||
|
add = function()
|
||||||
|
local result = require("nvim-surround.config").get_input("Enter function name: ")
|
||||||
|
if result then
|
||||||
|
return { { result .. "(" }, { ")" } }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
find = function()
|
||||||
|
return require("nvim-surround.config").get_selection({ motion = "a(" })
|
||||||
|
end,
|
||||||
|
delete = "^([^(]+%()().-(%))()$",
|
||||||
|
change = {
|
||||||
|
target = "^([^(]+%()().-(%))()$",
|
||||||
|
replacement = function()
|
||||||
|
local result = require("nvim-surround.config").get_input("Enter function name: ")
|
||||||
|
if result then
|
||||||
|
return { { result .. "(" }, { ")" } }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Markdown code block
|
||||||
|
["c"] = {
|
||||||
|
add = function()
|
||||||
|
local lang = require("nvim-surround.config").get_input("Enter language: ")
|
||||||
|
return { { "```" .. (lang or "") }, { "```" } }
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- HTML/JSX tag with class
|
||||||
|
["C"] = {
|
||||||
|
add = function()
|
||||||
|
local class = require("nvim-surround.config").get_input("Enter class name: ")
|
||||||
|
if class then
|
||||||
|
return { { '<div class="' .. class .. '">' }, { "</div>" } }
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Template literal (JavaScript/TypeScript)
|
||||||
|
["`"] = {
|
||||||
|
add = { "`", "`" },
|
||||||
|
find = "`.-`",
|
||||||
|
delete = "^(`)().-(`)()$",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Use treesitter for better text object detection
|
||||||
|
move_cursor = "begin",
|
||||||
|
indent_lines = function(start, stop)
|
||||||
|
local b = vim.bo
|
||||||
|
-- Only indent if the buffer is not a special filetype
|
||||||
|
if b.ft ~= "help" and b.ft ~= "man" and b.ft ~= "qf" then
|
||||||
|
vim.cmd(string.format("silent normal! %dG=%dG", start, stop))
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- nvim-autopairs: auto-close brackets with integration
|
||||||
|
{
|
||||||
|
"windwp/nvim-autopairs",
|
||||||
|
event = "InsertEnter",
|
||||||
|
dependencies = { "hrsh7th/nvim-cmp" },
|
||||||
|
config = function()
|
||||||
|
local npairs = require("nvim-autopairs")
|
||||||
|
local Rule = require("nvim-autopairs.rule")
|
||||||
|
local cond = require("nvim-autopairs.conds")
|
||||||
|
|
||||||
|
npairs.setup({
|
||||||
|
check_ts = true, -- Use treesitter
|
||||||
|
ts_config = {
|
||||||
|
lua = { "string", "source" },
|
||||||
|
javascript = { "string", "template_string" },
|
||||||
|
java = false,
|
||||||
|
},
|
||||||
|
disable_filetype = { "TelescopePrompt", "spectre_panel" },
|
||||||
|
fast_wrap = {
|
||||||
|
map = "<M-e>",
|
||||||
|
chars = { "{", "[", "(", '"', "'" },
|
||||||
|
pattern = string.gsub([[ [%'%"%)%>%]%)%}%,] ]], "%s+", ""),
|
||||||
|
offset = 0,
|
||||||
|
end_key = "$",
|
||||||
|
keys = "qwertyuiopzxcvbnmasdfghjkl",
|
||||||
|
check_comma = true,
|
||||||
|
highlight = "PmenuSel",
|
||||||
|
highlight_grey = "LineNr",
|
||||||
|
},
|
||||||
|
enable_moveright = true,
|
||||||
|
enable_afterquote = true,
|
||||||
|
enable_check_bracket_line = true,
|
||||||
|
enable_bracket_in_quote = true,
|
||||||
|
enable_abbr = false,
|
||||||
|
break_undo = true,
|
||||||
|
map_cr = true,
|
||||||
|
map_bs = true,
|
||||||
|
map_c_h = false,
|
||||||
|
map_c_w = false,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Add spacing inside pairs
|
||||||
|
local brackets = { { "(", ")" }, { "[", "]" }, { "{", "}" } }
|
||||||
|
npairs.add_rules({
|
||||||
|
Rule(" ", " "):with_pair(function(opts)
|
||||||
|
local pair = opts.line:sub(opts.col - 1, opts.col)
|
||||||
|
return vim.tbl_contains({
|
||||||
|
brackets[1][1] .. brackets[1][2],
|
||||||
|
brackets[2][1] .. brackets[2][2],
|
||||||
|
brackets[3][1] .. brackets[3][2],
|
||||||
|
}, pair)
|
||||||
|
end),
|
||||||
|
})
|
||||||
|
|
||||||
|
for _, bracket in pairs(brackets) do
|
||||||
|
npairs.add_rules({
|
||||||
|
Rule(bracket[1] .. " ", " " .. bracket[2])
|
||||||
|
:with_pair(function()
|
||||||
|
return false
|
||||||
|
end)
|
||||||
|
:with_move(function(opts)
|
||||||
|
return opts.prev_char:match(".%" .. bracket[2]) ~= nil
|
||||||
|
end)
|
||||||
|
:use_key(bracket[2]),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Add arrow function for JavaScript/TypeScript
|
||||||
|
npairs.add_rules({
|
||||||
|
Rule("%(.*%)%s*=>$", " { }", { "typescript", "typescriptreact", "javascript", "javascriptreact" })
|
||||||
|
:use_regex(true)
|
||||||
|
:set_end_pair_length(2),
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Integration with nvim-cmp
|
||||||
|
local cmp_autopairs = require("nvim-autopairs.completion.cmp")
|
||||||
|
local cmp = require("cmp")
|
||||||
|
cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done())
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Comment.nvim: smart commenting with treesitter
|
||||||
|
{
|
||||||
|
"numToStr/Comment.nvim",
|
||||||
|
event = { "BufReadPre", "BufNewFile" },
|
||||||
|
dependencies = {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
"JoosepAlviste/nvim-ts-context-commentstring", -- For better JSX/TSX comments
|
||||||
|
},
|
||||||
|
config = function()
|
||||||
|
require("Comment").setup({
|
||||||
|
-- Use treesitter for comment detection
|
||||||
|
pre_hook = require("ts_context_commentstring.integrations.comment_nvim").create_pre_hook(),
|
||||||
|
|
||||||
|
padding = true,
|
||||||
|
sticky = true,
|
||||||
|
ignore = "^$", -- Ignore empty lines
|
||||||
|
|
||||||
|
-- LHS of toggle mappings in NORMAL mode
|
||||||
|
toggler = {
|
||||||
|
line = "gcc", -- Line-comment toggle
|
||||||
|
block = "gbc", -- Block-comment toggle
|
||||||
|
},
|
||||||
|
|
||||||
|
-- LHS of operator-pending mappings in NORMAL and VISUAL mode
|
||||||
|
opleader = {
|
||||||
|
line = "gc", -- Line-comment keymap
|
||||||
|
block = "gb", -- Block-comment keymap
|
||||||
|
},
|
||||||
|
|
||||||
|
-- LHS of extra mappings
|
||||||
|
extra = {
|
||||||
|
above = "gcO", -- Add comment on the line above
|
||||||
|
below = "gco", -- Add comment on the line below
|
||||||
|
eol = "gcA", -- Add comment at the end of line
|
||||||
|
},
|
||||||
|
|
||||||
|
mappings = {
|
||||||
|
basic = true,
|
||||||
|
extra = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
|
||||||
|
-- nvim-ts-context-commentstring: JSX/TSX comment support
|
||||||
|
{
|
||||||
|
"JoosepAlviste/nvim-ts-context-commentstring",
|
||||||
|
lazy = true,
|
||||||
|
opts = {
|
||||||
|
enable_autocmd = false, -- Disable auto commands, Comment.nvim handles it
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
172
nvim/.config/nvim/lua/plugins/render-markdown.lua
Normal file
172
nvim/.config/nvim/lua/plugins/render-markdown.lua
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
return {
|
||||||
|
{
|
||||||
|
"MeanderingProgrammer/render-markdown.nvim",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-treesitter/nvim-treesitter",
|
||||||
|
"nvim-tree/nvim-web-devicons",
|
||||||
|
},
|
||||||
|
ft = { "markdown" },
|
||||||
|
opts = {
|
||||||
|
-- File types to enable rendering
|
||||||
|
file_types = { "markdown" },
|
||||||
|
|
||||||
|
-- Code block configuration
|
||||||
|
code = {
|
||||||
|
-- Show language name and icon
|
||||||
|
enabled = true,
|
||||||
|
-- Position: 'left', 'right', 'language'
|
||||||
|
sign = true,
|
||||||
|
-- Style for code blocks
|
||||||
|
style = "full",
|
||||||
|
-- Position of language name (left or right)
|
||||||
|
position = "left",
|
||||||
|
-- Disable if you don't want the background
|
||||||
|
disable_background = false,
|
||||||
|
-- Width of code block
|
||||||
|
width = "full",
|
||||||
|
-- Language icon on the right
|
||||||
|
right_pad = 1,
|
||||||
|
left_pad = 1,
|
||||||
|
-- Border around code blocks
|
||||||
|
border = "thin",
|
||||||
|
-- Highlight for the language label
|
||||||
|
highlight = "RenderMarkdownCode",
|
||||||
|
highlight_inline = "RenderMarkdownCodeInline",
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Heading configuration
|
||||||
|
heading = {
|
||||||
|
enabled = true,
|
||||||
|
sign = true,
|
||||||
|
icons = { " ", " ", " ", " ", " ", " " },
|
||||||
|
backgrounds = {
|
||||||
|
"RenderMarkdownH1Bg",
|
||||||
|
"RenderMarkdownH2Bg",
|
||||||
|
"RenderMarkdownH3Bg",
|
||||||
|
"RenderMarkdownH4Bg",
|
||||||
|
"RenderMarkdownH5Bg",
|
||||||
|
"RenderMarkdownH6Bg",
|
||||||
|
},
|
||||||
|
foregrounds = {
|
||||||
|
"RenderMarkdownH1",
|
||||||
|
"RenderMarkdownH2",
|
||||||
|
"RenderMarkdownH3",
|
||||||
|
"RenderMarkdownH4",
|
||||||
|
"RenderMarkdownH5",
|
||||||
|
"RenderMarkdownH6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Checkbox configuration
|
||||||
|
checkbox = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
bullet = false,
|
||||||
|
left_pad = 0,
|
||||||
|
right_pad = 1,
|
||||||
|
unchecked = {
|
||||||
|
icon = " ",
|
||||||
|
highlight = "RenderMarkdownUnchecked",
|
||||||
|
scope_highlight = nil,
|
||||||
|
},
|
||||||
|
checked = {
|
||||||
|
icon = " ",
|
||||||
|
highlight = "RenderMarkdownChecked",
|
||||||
|
scope_highlight = nil,
|
||||||
|
},
|
||||||
|
-- Custom checkbox states
|
||||||
|
custom = {
|
||||||
|
urgent = {
|
||||||
|
raw = "[!]",
|
||||||
|
rendered = " ",
|
||||||
|
highlight = "RenderMarkdownUrgent",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Block Quotes
|
||||||
|
quote = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
icon = "▋",
|
||||||
|
repeat_linebreak = false,
|
||||||
|
highlight = {
|
||||||
|
"RenderMarkdownQuote1",
|
||||||
|
"RenderMarkdownQuote2",
|
||||||
|
"RenderMarkdownQuote3",
|
||||||
|
"RenderMarkdownQuote4",
|
||||||
|
"RenderMarkdownQuote5",
|
||||||
|
"RenderMarkdownQuote6",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
-- Table configuration
|
||||||
|
pipe_table = {
|
||||||
|
enabled = true,
|
||||||
|
style = "full",
|
||||||
|
cell = "padded",
|
||||||
|
border = {
|
||||||
|
"┌",
|
||||||
|
"┬",
|
||||||
|
"┐",
|
||||||
|
"├",
|
||||||
|
"┼",
|
||||||
|
"┤",
|
||||||
|
"└",
|
||||||
|
"┴",
|
||||||
|
"┘",
|
||||||
|
"│",
|
||||||
|
"─",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
config = function(_, opts)
|
||||||
|
require("render-markdown").setup(opts)
|
||||||
|
|
||||||
|
-- Function to apply colors
|
||||||
|
local function apply_colors()
|
||||||
|
local colors = {
|
||||||
|
-- Heading colors (gradient from red to blue)
|
||||||
|
h1 = { fg = "#ff6b6b", bg = "#3d1f1f" },
|
||||||
|
h2 = { fg = "#ffa07a", bg = "#3d2a1f" },
|
||||||
|
h3 = { fg = "#ffd700", bg = "#3d3d1f" },
|
||||||
|
h4 = { fg = "#98fb98", bg = "#1f3d1f" },
|
||||||
|
h5 = { fg = "#87ceeb", bg = "#1f2a3d" },
|
||||||
|
h6 = { fg = "#dda0dd", bg = "#2a1f3d" },
|
||||||
|
|
||||||
|
-- Code block colors
|
||||||
|
code = { bg = "#1e1e2e" },
|
||||||
|
|
||||||
|
-- Checkbox colors
|
||||||
|
checked = { fg = "#a6e3a1" },
|
||||||
|
unchecked = { fg = "#6c7086" },
|
||||||
|
urgent = { fg = "#f38ba8" },
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Apply heading colors
|
||||||
|
for i = 1, 6 do
|
||||||
|
local h = "h" .. i
|
||||||
|
vim.api.nvim_set_hl(0, "RenderMarkdownH" .. i, { fg = colors[h].fg, bold = true })
|
||||||
|
vim.api.nvim_set_hl(0, "RenderMarkdownH" .. i .. "Bg", { bg = colors[h].bg })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Apply code block colors
|
||||||
|
vim.api.nvim_set_hl(0, "RenderMarkdownCode", { bg = colors.code.bg })
|
||||||
|
vim.api.nvim_set_hl(0, "RenderMarkdownCodeInline", { bg = colors.code.bg })
|
||||||
|
|
||||||
|
-- Apply checkbox colors with force
|
||||||
|
vim.api.nvim_set_hl(0, "RenderMarkdownChecked", { fg = colors.checked.fg, default = false })
|
||||||
|
vim.api.nvim_set_hl(0, "RenderMarkdownUnchecked", { fg = colors.unchecked.fg, default = false })
|
||||||
|
vim.api.nvim_set_hl(0, "RenderMarkdownUrgent", { fg = colors.urgent.fg, bold = true, default = false })
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Apply colors immediately
|
||||||
|
apply_colors()
|
||||||
|
|
||||||
|
-- Re-apply colors after colorscheme changes
|
||||||
|
vim.api.nvim_create_autocmd("ColorScheme", {
|
||||||
|
pattern = "*",
|
||||||
|
callback = apply_colors,
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -6,14 +6,33 @@ return {
|
|||||||
local config = require("nvim-treesitter.configs")
|
local config = require("nvim-treesitter.configs")
|
||||||
config.setup({
|
config.setup({
|
||||||
ensure_installed = {
|
ensure_installed = {
|
||||||
"bash", -- For bash code blocks
|
"markdown",
|
||||||
"html", -- For HTML code blocks
|
"markdown_inline",
|
||||||
"sql", -- For SQL code blocks
|
-- Your code block languages
|
||||||
"dockerfile", -- For Docker code blocks
|
"python",
|
||||||
|
"java",
|
||||||
|
"sql",
|
||||||
|
"bash",
|
||||||
|
"html",
|
||||||
|
-- Other languages you use
|
||||||
|
"lua",
|
||||||
|
"vim",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
-- Auto install missing parsers
|
||||||
auto_install = true,
|
auto_install = true,
|
||||||
highlight = { enable = true },
|
|
||||||
indent = { enable = true },
|
-- Enable syntax highlighting
|
||||||
|
highlight = {
|
||||||
|
enable = true,
|
||||||
|
-- Optional: disable markdown highlighting if render-markdown handles it
|
||||||
|
-- disable = { 'markdown' },
|
||||||
|
},
|
||||||
|
|
||||||
|
-- Enable indentation
|
||||||
|
indent = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -14,5 +14,4 @@ hdd1 /mnt/hdd1/ 1
|
|||||||
flash1 /mnt/flash1/ 8
|
flash1 /mnt/flash1/ 8
|
||||||
Downloads /home/liph/Downloads/ D
|
Downloads /home/liph/Downloads/ D
|
||||||
dotfiles /home/liph/dotfiles/ d
|
dotfiles /home/liph/dotfiles/ d
|
||||||
Desktop /home/liph/Desktop/ d
|
|
||||||
.config /home/liph/.config/ c
|
.config /home/liph/.config/ c
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ alias cl='clear'
|
|||||||
alias cld='clear && cd'
|
alias cld='clear && cd'
|
||||||
alias neo='neofetch'
|
alias neo='neofetch'
|
||||||
alias f='fuck'
|
alias f='fuck'
|
||||||
|
alias a='aerc'
|
||||||
|
|
||||||
# put everything on nvim
|
# put everything on nvim
|
||||||
alias nano='nvim'
|
alias nano='nvim'
|
||||||
@@ -101,7 +102,7 @@ alias tr='trash-restore'
|
|||||||
|
|
||||||
# pyenv
|
# pyenv
|
||||||
alias pyl='pyenv local' # set this for folder in spec python version
|
alias pyl='pyenv local' # set this for folder in spec python version
|
||||||
alias pyg='pyenv global' # changes the global python version
|
alias pyg='pyenv global' # changes the global python version
|
||||||
alias pyve='pyenv virtualenvs' # shows all possible vitualenvironments
|
alias pyve='pyenv virtualenvs' # shows all possible vitualenvironments
|
||||||
alias pyd='pyenv virtualenv-delete'
|
alias pyd='pyenv virtualenv-delete'
|
||||||
alias pyn='pyenv virtualenv' # makes a new env $VSERION $NAME
|
alias pyn='pyenv virtualenv' # makes a new env $VSERION $NAME
|
||||||
@@ -111,7 +112,7 @@ alias pyi='pyenv install'
|
|||||||
|
|
||||||
# aria2 and yt-dlp
|
# aria2 and yt-dlp
|
||||||
alias aryt="yt-dlp --external-downloader aria2c --external-downloader-args '-x 8 -j2'" # add URL in ''
|
alias aryt="yt-dlp --external-downloader aria2c --external-downloader-args '-x 8 -j2'" # add URL in ''
|
||||||
alias aria='aria2c -x 8' # add URL in '' for 8 segmented download
|
alias aria='aria2c -x 8' # add URL in '' for 8 segmented download
|
||||||
alias yd='yt-dlp' # copy link from videodownload helper and add the URL in ''
|
alias yd='yt-dlp' # copy link from videodownload helper and add the URL in ''
|
||||||
|
|
||||||
# ffmpeg
|
# ffmpeg
|
||||||
@@ -134,7 +135,7 @@ alias boumo='borg umount /tmp/borg' # unmount the mount folder
|
|||||||
alias sysen='sudo systemctl enable'
|
alias sysen='sudo systemctl enable'
|
||||||
alias sysst='sudo systemctl start'
|
alias sysst='sudo systemctl start'
|
||||||
|
|
||||||
# podmand
|
# podmand
|
||||||
alias pops='podman ps'
|
alias pops='podman ps'
|
||||||
alias pos='podman start'
|
alias pos='podman start'
|
||||||
alias post='podman stop'
|
alias post='podman stop'
|
||||||
|
|||||||
Reference in New Issue
Block a user