Add dotfile tree
This commit is contained in:
278
tree/.config/alacritty/alacritty.yml.tpl
Normal file
278
tree/.config/alacritty/alacritty.yml.tpl
Normal file
@ -0,0 +1,278 @@
|
|||||||
|
# Configuration for Alacritty, the GPU enhanced terminal emulator
|
||||||
|
|
||||||
|
|
||||||
|
# Any items in the `env` entry below will be added as
|
||||||
|
# environment variables. Some entries may override variables
|
||||||
|
# set by alacritty it self.
|
||||||
|
env:
|
||||||
|
# TERM env customization. Default is xterm-256color
|
||||||
|
# Note: the default TERM value `xterm-256color` does not
|
||||||
|
# specify all features alacritty supports. This does pose
|
||||||
|
# a few issues with programs relying on terminfo and the
|
||||||
|
# `tput` command
|
||||||
|
#TERM: tmux-256color
|
||||||
|
TERM: xterm-256color
|
||||||
|
|
||||||
|
# Window dimensions in character columns and lines
|
||||||
|
# (changes require restart)
|
||||||
|
window:
|
||||||
|
dimensions:
|
||||||
|
columns: 80
|
||||||
|
lines: 24
|
||||||
|
|
||||||
|
# The FreeType rasterizer needs to know the device DPI for best results
|
||||||
|
# (changes require restart)
|
||||||
|
dpi:
|
||||||
|
x: 96.0
|
||||||
|
y: 96.0
|
||||||
|
|
||||||
|
# When true, bold text is drawn using the bright variant of colors.
|
||||||
|
draw_bold_text_with_bright_colors: true
|
||||||
|
|
||||||
|
# Font configuration (changes require restart)
|
||||||
|
font:
|
||||||
|
# The normal (roman) font face to use.
|
||||||
|
normal:
|
||||||
|
family: Source Code Pro for Powerline # "Menlo" or something on macOS.
|
||||||
|
# Style can be specified to pick a specific face.
|
||||||
|
# style: Regular
|
||||||
|
|
||||||
|
# The bold font face
|
||||||
|
bold:
|
||||||
|
family: Source Code Pro for Powerline # should be "Menlo" or something on macOS.
|
||||||
|
# Style can be specified to pick a specific face.
|
||||||
|
# style: Bold
|
||||||
|
|
||||||
|
# The italic font face
|
||||||
|
italic:
|
||||||
|
family: Source Code Pro for Powerline # should be "Menlo" or something on macOS.
|
||||||
|
# Style can be specified to pick a specific face.
|
||||||
|
# style: Italic
|
||||||
|
|
||||||
|
# Point size of the font
|
||||||
|
size: 10.0
|
||||||
|
# Offset is the extra space around each character. offset.y can be thought of
|
||||||
|
# as modifying the linespacing, and offset.x as modifying the letter spacing.
|
||||||
|
offset:
|
||||||
|
x: 0
|
||||||
|
y: 0
|
||||||
|
|
||||||
|
# Should display the render timer
|
||||||
|
debug:
|
||||||
|
render_timer: false
|
||||||
|
|
||||||
|
# transparent background
|
||||||
|
#background_opacity: 0.91
|
||||||
|
background_opacity: 1.0
|
||||||
|
|
||||||
|
{% if lightmode %}
|
||||||
|
# Colors (Gruvbox light)
|
||||||
|
colors:
|
||||||
|
# Default colors
|
||||||
|
primary:
|
||||||
|
# hard contrast: background = '0xf9f5d7'
|
||||||
|
background: '0xfbf1c7'
|
||||||
|
# soft contrast: background = '0xf2e5bc'
|
||||||
|
foreground: '0x3c3836'
|
||||||
|
|
||||||
|
# Normal colors
|
||||||
|
normal:
|
||||||
|
black: '0xfbf1c7'
|
||||||
|
red: '0xcc241d'
|
||||||
|
green: '0x98971a'
|
||||||
|
yellow: '0xd79921'
|
||||||
|
blue: '0x458588'
|
||||||
|
magenta: '0xb16286'
|
||||||
|
cyan: '0x689d6a'
|
||||||
|
white: '0x7c6f64'
|
||||||
|
|
||||||
|
# Bright colors
|
||||||
|
bright:
|
||||||
|
black: '0x928374'
|
||||||
|
red: '0x9d0006'
|
||||||
|
green: '0x79740e'
|
||||||
|
yellow: '0xb57614'
|
||||||
|
blue: '0x076678'
|
||||||
|
magenta: '0x8f3f71'
|
||||||
|
cyan: '0x427b58'
|
||||||
|
white: '0x3c3836'
|
||||||
|
{% end if %}
|
||||||
|
|
||||||
|
{% if darkmode %}
|
||||||
|
# Colors (Gruvbox dark)
|
||||||
|
colors:
|
||||||
|
# Default colors
|
||||||
|
primary:
|
||||||
|
# hard contrast: background = '0x1d2021'
|
||||||
|
background: '0x282828'
|
||||||
|
# soft contrast: background = '0x32302f'
|
||||||
|
foreground: '0xebdbb2'
|
||||||
|
|
||||||
|
# Normal colors
|
||||||
|
normal:
|
||||||
|
black: '0x282828'
|
||||||
|
red: '0xcc241d'
|
||||||
|
green: '0x98971a'
|
||||||
|
yellow: '0xd79921'
|
||||||
|
blue: '0x458588'
|
||||||
|
magenta: '0xb16286'
|
||||||
|
cyan: '0x689d6a'
|
||||||
|
white: '0xa89984'
|
||||||
|
|
||||||
|
# Bright colors
|
||||||
|
bright:
|
||||||
|
black: '0x928374'
|
||||||
|
red: '0xfb4934'
|
||||||
|
green: '0xb8bb26'
|
||||||
|
yellow: '0xfabd2f'
|
||||||
|
blue: '0x83a598'
|
||||||
|
magenta: '0xd3869b'
|
||||||
|
cyan: '0x8ec07c'
|
||||||
|
white: '0xebdbb2'
|
||||||
|
{% end if %}
|
||||||
|
|
||||||
|
# Visual Bell
|
||||||
|
#
|
||||||
|
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
|
||||||
|
# rung, the terminal background will be set to white and transition back to the
|
||||||
|
# default background color. You can control the rate of this transition by
|
||||||
|
# setting the `duration` property (represented in milliseconds). You can also
|
||||||
|
# configure the transition function by setting the `animation` property.
|
||||||
|
#
|
||||||
|
# Possible values for `animation`
|
||||||
|
# `Ease`
|
||||||
|
# `EaseOut`
|
||||||
|
# `EaseOutSine`
|
||||||
|
# `EaseOutQuad`
|
||||||
|
# `EaseOutCubic`
|
||||||
|
# `EaseOutQuart`
|
||||||
|
# `EaseOutQuint`
|
||||||
|
# `EaseOutExpo`
|
||||||
|
# `EaseOutCirc`
|
||||||
|
# `Linear`
|
||||||
|
#
|
||||||
|
# To completely disable the visual bell, set its duration to 0.
|
||||||
|
#
|
||||||
|
bell:
|
||||||
|
animation: EaseOutExpo
|
||||||
|
duration: 0
|
||||||
|
|
||||||
|
# Key bindings
|
||||||
|
#
|
||||||
|
# Each binding is defined as an object with some properties. Most of the
|
||||||
|
# properties are optional. All of the alphabetical keys should have a letter for
|
||||||
|
# the `key` value such as `V`. Function keys are probably what you would expect
|
||||||
|
# as well (F1, F2, ..). The number keys above the main keyboard are encoded as
|
||||||
|
# `Key1`, `Key2`, etc. Keys on the number pad are encoded `Number1`, `Number2`,
|
||||||
|
# etc. These all match the glutin::VirtualKeyCode variants.
|
||||||
|
#
|
||||||
|
# Possible values for `mods`
|
||||||
|
# `Command`, `Super` refer to the super/command/windows key
|
||||||
|
# `Control` for the control key
|
||||||
|
# `Shift` for the Shift key
|
||||||
|
# `Alt` and `Option` refer to alt/option
|
||||||
|
#
|
||||||
|
# mods may be combined with a `|`. For example, requiring control and shift
|
||||||
|
# looks like:
|
||||||
|
#
|
||||||
|
# mods: Control|Shift
|
||||||
|
#
|
||||||
|
# The parser is currently quite sensitive to whitespace and capitalization -
|
||||||
|
# capitalization must match exactly, and piped items must not have whitespace
|
||||||
|
# around them.
|
||||||
|
#
|
||||||
|
# Either an `action` or `chars` field must be present. `chars` writes the
|
||||||
|
# specified string every time that binding is activated. These should generally
|
||||||
|
# be escape sequences, but they can be configured to send arbitrary strings of
|
||||||
|
# bytes. Possible values of `action` include `Paste` and `PasteSelection`.
|
||||||
|
#
|
||||||
|
# Want to add a binding (e.g. "PageUp") but are unsure what the X sequence
|
||||||
|
# (e.g. "\x1b[5~") is? Open another terminal (like xterm) without tmux,
|
||||||
|
# then run `showkey -a` to get the sequence associated to a key combination.
|
||||||
|
key_bindings:
|
||||||
|
- { key: V, mods: Control|Shift, action: Paste }
|
||||||
|
- { key: C, mods: Control|Shift, action: Copy }
|
||||||
|
- { key: Q, mods: Command, action: Quit }
|
||||||
|
- { key: W, mods: Command, action: Quit }
|
||||||
|
- { key: Plus, mods: Control, action: IncreaseFontSize }
|
||||||
|
- { key: Minus, mods: Control, action: DecreaseFontSize }
|
||||||
|
- { key: Key0, mods: Control, action: ResetFontSize }
|
||||||
|
- { key: Home, chars: "\x1bOH", mode: AppCursor }
|
||||||
|
- { key: Home, chars: "\x1b[1~", mode: ~AppCursor }
|
||||||
|
- { key: End, chars: "\x1bOF", mode: AppCursor }
|
||||||
|
- { key: End, chars: "\x1b[4~", mode: ~AppCursor }
|
||||||
|
- { key: PageUp, chars: "\x1b[5~" }
|
||||||
|
- { key: PageDown, chars: "\x1b[6~" }
|
||||||
|
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
|
||||||
|
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
|
||||||
|
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
|
||||||
|
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
|
||||||
|
- { key: Left, chars: "\x1bOD", mode: AppCursor }
|
||||||
|
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
|
||||||
|
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
|
||||||
|
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
|
||||||
|
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
|
||||||
|
- { key: Right, chars: "\x1bOC", mode: AppCursor }
|
||||||
|
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
|
||||||
|
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
|
||||||
|
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
|
||||||
|
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
|
||||||
|
- { key: Up, chars: "\x1bOA", mode: AppCursor }
|
||||||
|
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
|
||||||
|
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
|
||||||
|
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
|
||||||
|
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
|
||||||
|
- { key: Down, chars: "\x1bOB", mode: AppCursor }
|
||||||
|
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
|
||||||
|
- { key: F1, chars: "\x1bOP" }
|
||||||
|
- { key: F2, chars: "\x1bOQ" }
|
||||||
|
- { key: F3, chars: "\x1bOR" }
|
||||||
|
- { key: F4, chars: "\x1bOS" }
|
||||||
|
- { key: F5, chars: "\x1b[15~" }
|
||||||
|
- { key: F6, chars: "\x1b[17~" }
|
||||||
|
- { key: F7, chars: "\x1b[18~" }
|
||||||
|
- { key: F8, chars: "\x1b[19~" }
|
||||||
|
- { key: F9, chars: "\x1b[20~" }
|
||||||
|
- { key: F10, chars: "\x1b[21~" }
|
||||||
|
- { key: F11, chars: "\x1b[23~" }
|
||||||
|
- { key: F12, chars: "\x1b[24~" }
|
||||||
|
- { key: Back, chars: "\x7f" }
|
||||||
|
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
|
||||||
|
- { key: Insert, chars: "\x1b[2~" }
|
||||||
|
- { key: Delete, chars: "\x1b[3~", mode: AppKeypad }
|
||||||
|
- { key: Delete, chars: "\x1b[P", mode: ~AppKeypad }
|
||||||
|
|
||||||
|
# Mouse bindings
|
||||||
|
#
|
||||||
|
# Currently doesn't support modifiers. Both the `mouse` and `action` fields must
|
||||||
|
# be specified.
|
||||||
|
#
|
||||||
|
# Values for `mouse`:
|
||||||
|
# - Middle
|
||||||
|
# - Left
|
||||||
|
# - Right
|
||||||
|
# - Numeric identifier such as `5`
|
||||||
|
#
|
||||||
|
# Values for `action`:
|
||||||
|
# - Paste
|
||||||
|
# - PasteSelection
|
||||||
|
# - Copy (TODO)
|
||||||
|
mouse_bindings:
|
||||||
|
- { mouse: Middle, action: PasteSelection }
|
||||||
|
|
||||||
|
mouse:
|
||||||
|
double_click: { threshold: 300 }
|
||||||
|
triple_click: { threshold: 300 }
|
||||||
|
hide_when_typing: false
|
||||||
|
|
||||||
|
selection:
|
||||||
|
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
|
||||||
|
|
||||||
|
# Shell
|
||||||
|
#
|
||||||
|
# You can set shell.program to the path of your favorite shell, e.g. /bin/fish.
|
||||||
|
# Entries in shell.args are passed unmodified as arguments to the shell.
|
||||||
|
shell:
|
||||||
|
program: fish
|
||||||
|
# args:
|
||||||
|
# - --login
|
||||||
8
tree/.config/alacritty/silent.yml
Normal file
8
tree/.config/alacritty/silent.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
# Silent alacritty config
|
||||||
|
|
||||||
|
# Hack to hide the cursor
|
||||||
|
colors:
|
||||||
|
primary:
|
||||||
|
background: "#1d1f21"
|
||||||
|
foreground: "#1d1f21"
|
||||||
|
|
||||||
29
tree/.config/fish/config.fish
Normal file
29
tree/.config/fish/config.fish
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
set -x PATH $PATH $HOME/.cargo/bin $HOME/.local/bin $HOME/Projekt/sh
|
||||||
|
set -x GPG_TTY (tty)
|
||||||
|
set -x BROWSER firefox
|
||||||
|
set -x EDITOR nvim
|
||||||
|
|
||||||
|
# misc abbrs
|
||||||
|
abbr --add e $EDITOR
|
||||||
|
abbr --add bt bluetoothctl
|
||||||
|
|
||||||
|
# rust core tools
|
||||||
|
abbr --add ls exa
|
||||||
|
abbr --add cat bat
|
||||||
|
abbr --add find fd
|
||||||
|
abbr --add grep rg
|
||||||
|
|
||||||
|
# git abbrs
|
||||||
|
abbr --add ga git add
|
||||||
|
abbr --add gc git commit
|
||||||
|
abbr --add gd git diff
|
||||||
|
abbr --add gp git push
|
||||||
|
abbr --add gpu git push -u origin
|
||||||
|
abbr --add gl git pull
|
||||||
|
abbr --add gr git reset
|
||||||
|
abbr --add gst git status
|
||||||
|
abbr --add gsta git stash push
|
||||||
|
abbr --add gstp git stash pop
|
||||||
|
|
||||||
|
|
||||||
|
starship init fish | source
|
||||||
428
tree/.config/mpd/mpd.conf
Normal file
428
tree/.config/mpd/mpd.conf
Normal file
@ -0,0 +1,428 @@
|
|||||||
|
# An example configuration file for MPD.
|
||||||
|
# Read the user manual for documentation: http://www.musicpd.org/doc/user/
|
||||||
|
|
||||||
|
|
||||||
|
# Files and directories #######################################################
|
||||||
|
#
|
||||||
|
# This setting controls the top directory which MPD will search to discover the
|
||||||
|
# available audio files and add them to the daemon's online database. This
|
||||||
|
# setting defaults to the XDG directory, otherwise the music directory will be
|
||||||
|
# be disabled and audio files will only be accepted over ipc socket (using
|
||||||
|
# file:// protocol) or streaming files over an accepted protocol.
|
||||||
|
#
|
||||||
|
music_directory "~/Musik"
|
||||||
|
#
|
||||||
|
# This setting sets the MPD internal playlist directory. The purpose of this
|
||||||
|
# directory is storage for playlists created by MPD. The server will use
|
||||||
|
# playlist files not created by the server but only if they are in the MPD
|
||||||
|
# format. This setting defaults to playlist saving being disabled.
|
||||||
|
#
|
||||||
|
playlist_directory "~/.config/mpd/playlists"
|
||||||
|
#
|
||||||
|
# This setting sets the location of the MPD database. This file is used to
|
||||||
|
# load the database at server start up and store the database while the
|
||||||
|
# server is not up. This setting defaults to disabled which will allow
|
||||||
|
# MPD to accept files over ipc socket (using file:// protocol) or streaming
|
||||||
|
# files over an accepted protocol.
|
||||||
|
#
|
||||||
|
db_file "~/.config/mpd/database"
|
||||||
|
#
|
||||||
|
# These settings are the locations for the daemon log files for the daemon.
|
||||||
|
# These logs are great for troubleshooting, depending on your log_level
|
||||||
|
# settings.
|
||||||
|
#
|
||||||
|
# The special value "syslog" makes MPD use the local syslog daemon. This
|
||||||
|
# setting defaults to logging to syslog, otherwise logging is disabled.
|
||||||
|
#
|
||||||
|
log_file "~/.config/mpd/log"
|
||||||
|
#
|
||||||
|
# This setting sets the location of the file which stores the process ID
|
||||||
|
# for use of mpd --kill and some init scripts. This setting is disabled by
|
||||||
|
# default and the pid file will not be stored.
|
||||||
|
#
|
||||||
|
pid_file "~/.config/mpd/pid"
|
||||||
|
#
|
||||||
|
# This setting sets the location of the file which contains information about
|
||||||
|
# most variables to get MPD back into the same general shape it was in before
|
||||||
|
# it was brought down. This setting is disabled by default and the server
|
||||||
|
# state will be reset on server start up.
|
||||||
|
#
|
||||||
|
state_file "~/.config/mpd/state"
|
||||||
|
#
|
||||||
|
# The location of the sticker database. This is a database which
|
||||||
|
# manages dynamic information attached to songs.
|
||||||
|
#
|
||||||
|
sticker_file "~/.config/mpd/sticker.sql"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# General music daemon options ################################################
|
||||||
|
#
|
||||||
|
# This setting specifies the user that MPD will run as. MPD should never run as
|
||||||
|
# root and you may use this setting to make MPD change its user ID after
|
||||||
|
# initialization. This setting is disabled by default and MPD is run as the
|
||||||
|
# current user.
|
||||||
|
#
|
||||||
|
#user "nobody"
|
||||||
|
#
|
||||||
|
# This setting specifies the group that MPD will run as. If not specified
|
||||||
|
# primary group of user specified with "user" setting will be used (if set).
|
||||||
|
# This is useful if MPD needs to be a member of group such as "audio" to
|
||||||
|
# have permission to use sound card.
|
||||||
|
#
|
||||||
|
#group "nogroup"
|
||||||
|
#
|
||||||
|
# This setting sets the address for the daemon to listen on. Careful attention
|
||||||
|
# should be paid if this is assigned to anything other then the default, any.
|
||||||
|
# This setting can deny access to control of the daemon.
|
||||||
|
#
|
||||||
|
# For network
|
||||||
|
#bind_to_address "any"
|
||||||
|
#
|
||||||
|
# And for Unix Socket
|
||||||
|
#bind_to_address "~/.mpd/socket"
|
||||||
|
#
|
||||||
|
# This setting is the TCP port that is desired for the daemon to get assigned
|
||||||
|
# to.
|
||||||
|
#
|
||||||
|
#port "6600"
|
||||||
|
#
|
||||||
|
# This setting controls the type of information which is logged. Available
|
||||||
|
# setting arguments are "default", "secure" or "verbose". The "verbose" setting
|
||||||
|
# argument is recommended for troubleshooting, though can quickly stretch
|
||||||
|
# available resources on limited hardware storage.
|
||||||
|
#
|
||||||
|
#log_level "default"
|
||||||
|
#
|
||||||
|
# If you have a problem with your MP3s ending abruptly it is recommended that
|
||||||
|
# you set this argument to "no" to attempt to fix the problem. If this solves
|
||||||
|
# the problem, it is highly recommended to fix the MP3 files with vbrfix
|
||||||
|
# (available from <http://www.willwap.co.uk/Programs/vbrfix.php>), at which
|
||||||
|
# point gapless MP3 playback can be enabled.
|
||||||
|
#
|
||||||
|
#gapless_mp3_playback "yes"
|
||||||
|
#
|
||||||
|
# Setting "restore_paused" to "yes" puts MPD into pause mode instead
|
||||||
|
# of starting playback after startup.
|
||||||
|
#
|
||||||
|
#restore_paused "no"
|
||||||
|
#
|
||||||
|
# This setting enables MPD to create playlists in a format usable by other
|
||||||
|
# music players.
|
||||||
|
#
|
||||||
|
#save_absolute_paths_in_playlists "no"
|
||||||
|
#
|
||||||
|
# This setting defines a list of tag types that will be extracted during the
|
||||||
|
# audio file discovery process. The complete list of possible values can be
|
||||||
|
# found in the mpd.conf man page.
|
||||||
|
#metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc"
|
||||||
|
#
|
||||||
|
# This setting enables automatic update of MPD's database when files in
|
||||||
|
# music_directory are changed.
|
||||||
|
#
|
||||||
|
#auto_update "yes"
|
||||||
|
#
|
||||||
|
# Limit the depth of the directories being watched, 0 means only watch
|
||||||
|
# the music directory itself. There is no limit by default.
|
||||||
|
#
|
||||||
|
#auto_update_depth "3"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# Symbolic link behavior ######################################################
|
||||||
|
#
|
||||||
|
# If this setting is set to "yes", MPD will discover audio files by following
|
||||||
|
# symbolic links outside of the configured music_directory.
|
||||||
|
#
|
||||||
|
follow_outside_symlinks "yes"
|
||||||
|
#
|
||||||
|
# If this setting is set to "yes", MPD will discover audio files by following
|
||||||
|
# symbolic links inside of the configured music_directory.
|
||||||
|
#
|
||||||
|
follow_inside_symlinks "yes"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# Zeroconf / Avahi Service Discovery ##########################################
|
||||||
|
#
|
||||||
|
# If this setting is set to "yes", service information will be published with
|
||||||
|
# Zeroconf / Avahi.
|
||||||
|
#
|
||||||
|
#zeroconf_enabled "yes"
|
||||||
|
#
|
||||||
|
# The argument to this setting will be the Zeroconf / Avahi unique name for
|
||||||
|
# this MPD server on the network.
|
||||||
|
#
|
||||||
|
#zeroconf_name "Music Player"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# Permissions #################################################################
|
||||||
|
#
|
||||||
|
# If this setting is set, MPD will require password authorization. The password
|
||||||
|
# can setting can be specified multiple times for different password profiles.
|
||||||
|
#
|
||||||
|
#password "password@read,add,control,admin"
|
||||||
|
#
|
||||||
|
# This setting specifies the permissions a user has who has not yet logged in.
|
||||||
|
#
|
||||||
|
#default_permissions "read,add,control,admin"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# Database #######################################################################
|
||||||
|
#
|
||||||
|
|
||||||
|
#database {
|
||||||
|
# plugin "proxy"
|
||||||
|
# host "other.mpd.host"
|
||||||
|
# port "6600"
|
||||||
|
#}
|
||||||
|
|
||||||
|
# Input #######################################################################
|
||||||
|
#
|
||||||
|
|
||||||
|
input {
|
||||||
|
plugin "curl"
|
||||||
|
# proxy "proxy.isp.com:8080"
|
||||||
|
# proxy_user "user"
|
||||||
|
# proxy_password "password"
|
||||||
|
}
|
||||||
|
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
# Audio Output ################################################################
|
||||||
|
#
|
||||||
|
# MPD supports various audio output types, as well as playing through multiple
|
||||||
|
# audio outputs at the same time, through multiple audio_output settings
|
||||||
|
# blocks. Setting this block is optional, though the server will only attempt
|
||||||
|
# autodetection for one sound card.
|
||||||
|
#
|
||||||
|
# An example of an ALSA output:
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "alsa"
|
||||||
|
# name "My ALSA Device"
|
||||||
|
# device "hw:0,0" # optional
|
||||||
|
## mixer_type "hardware" # optional
|
||||||
|
## mixer_device "default" # optional
|
||||||
|
## mixer_control "PCM" # optional
|
||||||
|
## mixer_index "0" # optional
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# An example of an OSS output:
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "oss"
|
||||||
|
# name "My OSS Device"
|
||||||
|
## device "/dev/dsp" # optional
|
||||||
|
## mixer_type "hardware" # optional
|
||||||
|
## mixer_device "/dev/mixer" # optional
|
||||||
|
## mixer_control "PCM" # optional
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
|
||||||
|
# PulseAudio Output
|
||||||
|
audio_output {
|
||||||
|
type "pulse"
|
||||||
|
name "pulse audio"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Audio Visualizer Output
|
||||||
|
audio_output {
|
||||||
|
type "fifo"
|
||||||
|
name "my_fifo"
|
||||||
|
path "/tmp/mpd.fifo"
|
||||||
|
format "44100:16:2"
|
||||||
|
}
|
||||||
|
|
||||||
|
# An example of a shout output (for streaming to Icecast):
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "shout"
|
||||||
|
# encoding "ogg" # optional
|
||||||
|
# name "My Shout Stream"
|
||||||
|
# host "localhost"
|
||||||
|
# port "8000"
|
||||||
|
# mount "/mpd.ogg"
|
||||||
|
# password "hackme"
|
||||||
|
# quality "5.0"
|
||||||
|
# bitrate "128"
|
||||||
|
# format "44100:16:1"
|
||||||
|
## protocol "icecast2" # optional
|
||||||
|
## user "source" # optional
|
||||||
|
## description "My Stream Description" # optional
|
||||||
|
## url "http://example.com" # optional
|
||||||
|
## genre "jazz" # optional
|
||||||
|
## public "no" # optional
|
||||||
|
## timeout "2" # optional
|
||||||
|
## mixer_type "software" # optional
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# An example of a recorder output:
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "recorder"
|
||||||
|
# name "My recorder"
|
||||||
|
# encoder "vorbis" # optional, vorbis or lame
|
||||||
|
# path "/var/lib/mpd/recorder/mpd.ogg"
|
||||||
|
## quality "5.0" # do not define if bitrate is defined
|
||||||
|
# bitrate "128" # do not define if quality is defined
|
||||||
|
# format "44100:16:1"
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# An example of a httpd output (built-in HTTP streaming server):
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "httpd"
|
||||||
|
# name "My HTTP Stream"
|
||||||
|
# encoder "vorbis" # optional, vorbis or lame
|
||||||
|
# port "8000"
|
||||||
|
# bind_to_address "0.0.0.0" # optional, IPv4 or IPv6
|
||||||
|
## quality "5.0" # do not define if bitrate is defined
|
||||||
|
# bitrate "128" # do not define if quality is defined
|
||||||
|
# format "44100:16:1"
|
||||||
|
# max_clients "0" # optional 0=no limit
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# An example of a pulseaudio output (streaming to a remote pulseaudio server)
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "pulse"
|
||||||
|
# name "My Pulse Output"
|
||||||
|
## server "remote_server" # optional
|
||||||
|
## sink "remote_server_sink" # optional
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# An example of a winmm output (Windows multimedia API).
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "winmm"
|
||||||
|
# name "My WinMM output"
|
||||||
|
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
|
||||||
|
# or
|
||||||
|
## device "0" # optional
|
||||||
|
## mixer_type "hardware" # optional
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# An example of an openal output.
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "openal"
|
||||||
|
# name "My OpenAL output"
|
||||||
|
## device "Digital Audio (S/PDIF) (High Definition Audio Device)" # optional
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
## Example "pipe" output:
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "pipe"
|
||||||
|
# name "my pipe"
|
||||||
|
# command "aplay -f cd 2>/dev/null"
|
||||||
|
## Or if you're want to use AudioCompress
|
||||||
|
# command "AudioCompress -m | aplay -f cd 2>/dev/null"
|
||||||
|
## Or to send raw PCM stream through PCM:
|
||||||
|
# command "nc example.org 8765"
|
||||||
|
# format "44100:16:2"
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
## An example of a null output (for no audio output):
|
||||||
|
#
|
||||||
|
#audio_output {
|
||||||
|
# type "null"
|
||||||
|
# name "My Null Output"
|
||||||
|
# mixer_type "none" # optional
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
# If MPD has been compiled with libsamplerate support, this setting specifies
|
||||||
|
# the sample rate converter to use. Possible values can be found in the
|
||||||
|
# mpd.conf man page or the libsamplerate documentation. By default, this is
|
||||||
|
# setting is disabled.
|
||||||
|
#
|
||||||
|
#samplerate_converter "Fastest Sinc Interpolator"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# Normalization automatic volume adjustments ##################################
|
||||||
|
#
|
||||||
|
# This setting specifies the type of ReplayGain to use. This setting can have
|
||||||
|
# the argument "off", "album", "track" or "auto". "auto" is a special mode that
|
||||||
|
# chooses between "track" and "album" depending on the current state of
|
||||||
|
# random playback. If random playback is enabled then "track" mode is used.
|
||||||
|
# See <http://www.replaygain.org> for more details about ReplayGain.
|
||||||
|
# This setting is off by default.
|
||||||
|
#
|
||||||
|
#replaygain "album"
|
||||||
|
#
|
||||||
|
# This setting sets the pre-amp used for files that have ReplayGain tags. By
|
||||||
|
# default this setting is disabled.
|
||||||
|
#
|
||||||
|
#replaygain_preamp "0"
|
||||||
|
#
|
||||||
|
# This setting sets the pre-amp used for files that do NOT have ReplayGain tags.
|
||||||
|
# By default this setting is disabled.
|
||||||
|
#
|
||||||
|
#replaygain_missing_preamp "0"
|
||||||
|
#
|
||||||
|
# This setting enables or disables ReplayGain limiting.
|
||||||
|
# MPD calculates actual amplification based on the ReplayGain tags
|
||||||
|
# and replaygain_preamp / replaygain_missing_preamp setting.
|
||||||
|
# If replaygain_limit is enabled MPD will never amplify audio signal
|
||||||
|
# above its original level. If replaygain_limit is disabled such amplification
|
||||||
|
# might occur. By default this setting is enabled.
|
||||||
|
#
|
||||||
|
#replaygain_limit "yes"
|
||||||
|
#
|
||||||
|
# This setting enables on-the-fly normalization volume adjustment. This will
|
||||||
|
# result in the volume of all playing audio to be adjusted so the output has
|
||||||
|
# equal "loudness". This setting is disabled by default.
|
||||||
|
#
|
||||||
|
#volume_normalization "no"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
# Character Encoding ##########################################################
|
||||||
|
#
|
||||||
|
# If file or directory names do not display correctly for your locale then you
|
||||||
|
# may need to modify this setting.
|
||||||
|
#
|
||||||
|
#filesystem_charset "UTF-8"
|
||||||
|
#
|
||||||
|
# This setting controls the encoding that ID3v1 tags should be converted from.
|
||||||
|
#
|
||||||
|
#id3v1_encoding "ISO-8859-1"
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
|
||||||
|
# SIDPlay decoder #############################################################
|
||||||
|
#
|
||||||
|
# songlength_database:
|
||||||
|
# Location of your songlengths file, as distributed with the HVSC.
|
||||||
|
# The sidplay plugin checks this for matching MD5 fingerprints.
|
||||||
|
# See http://www.c64.org/HVSC/DOCUMENTS/Songlengths.faq
|
||||||
|
#
|
||||||
|
# default_songlength:
|
||||||
|
# This is the default playing time in seconds for songs not in the
|
||||||
|
# songlength database, or in case you're not using a database.
|
||||||
|
# A value of 0 means play indefinitely.
|
||||||
|
#
|
||||||
|
# filter:
|
||||||
|
# Turns the SID filter emulation on or off.
|
||||||
|
#
|
||||||
|
#decoder {
|
||||||
|
# plugin "sidplay"
|
||||||
|
# songlength_database "/media/C64Music/DOCUMENTS/Songlengths.txt"
|
||||||
|
# default_songlength "120"
|
||||||
|
# filter "true"
|
||||||
|
#}
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
9
tree/.config/nvim/coc-settings.json
Normal file
9
tree/.config/nvim/coc-settings.json
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"languageserver": {
|
||||||
|
"rust": {
|
||||||
|
"command": "rust-analyzer",
|
||||||
|
"filetypes": ["rust"],
|
||||||
|
"rootPatterns": ["Cargo.toml"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
178
tree/.config/nvim/init.vim.tpl
Normal file
178
tree/.config/nvim/init.vim.tpl
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
runtime! archlinux.vim
|
||||||
|
|
||||||
|
if empty(glob('~/.local/share/nvim/site/autoload/plug.vim'))
|
||||||
|
silent !curl -fLo ~/.local/share/nvim/site/autoload/plug.vim --create-dirs
|
||||||
|
\ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
|
||||||
|
autocmd VimEnter * PlugInstall --sync | source $MYVIMRC
|
||||||
|
endif
|
||||||
|
|
||||||
|
" plugins
|
||||||
|
call plug#begin('~/.local/share/nvim/plugged')
|
||||||
|
Plug 'tpope/vim-fugitive'
|
||||||
|
Plug 'easymotion/vim-easymotion'
|
||||||
|
Plug 'roxma/vim-hug-neovim-rpc'
|
||||||
|
Plug 'roxma/nvim-yarp'
|
||||||
|
Plug 'airblade/vim-rooter'
|
||||||
|
Plug 'junegunn/fzf'
|
||||||
|
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
|
||||||
|
Plug 'neutaaaaan/iosvkem'
|
||||||
|
|
||||||
|
" themes
|
||||||
|
Plug 'chriskempson/base16-vim'
|
||||||
|
|
||||||
|
" gui stuff
|
||||||
|
Plug 'itchyny/lightline.vim'
|
||||||
|
Plug 'machakann/vim-highlightedyank'
|
||||||
|
Plug 'terryma/vim-smooth-scroll'
|
||||||
|
|
||||||
|
" Language support
|
||||||
|
Plug 'neoclide/coc.nvim', {'branch': 'release'}
|
||||||
|
Plug 'rust-lang/rust.vim'
|
||||||
|
Plug 'cespare/vim-toml'
|
||||||
|
Plug 'dag/vim-fish'
|
||||||
|
|
||||||
|
call plug#end()
|
||||||
|
|
||||||
|
set nocompatible
|
||||||
|
set backspace=indent,eol,start
|
||||||
|
set tabstop=4
|
||||||
|
set shiftwidth=4
|
||||||
|
set noet
|
||||||
|
|
||||||
|
" preview substitute (%s/a/b)
|
||||||
|
set inccommand=nosplit
|
||||||
|
|
||||||
|
" use unicode
|
||||||
|
set encoding=utf-8
|
||||||
|
|
||||||
|
" show whitespace
|
||||||
|
set listchars=nbsp:¬,trail:·,precedes:«,extends:▸,tab:»\
|
||||||
|
set list
|
||||||
|
|
||||||
|
" highlight column 80
|
||||||
|
"highlight ColorColumn ctermbg=darkgray
|
||||||
|
highlight ColorColumn ctermbg=16
|
||||||
|
set colorcolumn=100
|
||||||
|
|
||||||
|
" colors and themes
|
||||||
|
set background = "dark"
|
||||||
|
|
||||||
|
if !has('gui_running')
|
||||||
|
set t_Co=256
|
||||||
|
endif
|
||||||
|
if (match($TERM, "-256color") != -1) && (match($TERM, "screen-256color") == -1)
|
||||||
|
" screen does not (yet) support truecolor
|
||||||
|
set termguicolors
|
||||||
|
endif
|
||||||
|
let base16colorspace=256
|
||||||
|
|
||||||
|
{% if darkmode %}
|
||||||
|
colorscheme base16-gruvbox-dark-hard
|
||||||
|
{% end if %}
|
||||||
|
|
||||||
|
{% if lightmode %}
|
||||||
|
colorscheme base16-gruvbox-light-hard
|
||||||
|
{% end if %}
|
||||||
|
|
||||||
|
" brighter comments
|
||||||
|
call Base16hi("Comment", g:base16_gui09, "", g:base16_cterm09, "", "", "")
|
||||||
|
|
||||||
|
" Lightline
|
||||||
|
let g:lightline = {
|
||||||
|
\ 'active': {
|
||||||
|
\ 'left': [ [ 'mode', 'paste' ],
|
||||||
|
\ [ 'cocstatus', 'readonly', 'filename', 'modified' ] ]
|
||||||
|
\ },
|
||||||
|
\ 'component_function': {
|
||||||
|
\ 'filename': 'LightlineFilename',
|
||||||
|
\ 'cocstatus': 'coc#status'
|
||||||
|
\ },
|
||||||
|
\ }
|
||||||
|
function! LightlineFilename()
|
||||||
|
return expand('%:t') !=# '' ? @% : '[No Name]'
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
" Use auocmd to force lightline update.
|
||||||
|
autocmd User CocStatusChange,CocDiagnosticChange call lightline#update()
|
||||||
|
|
||||||
|
" misc
|
||||||
|
set mouse=a
|
||||||
|
|
||||||
|
set history=50
|
||||||
|
set ruler
|
||||||
|
|
||||||
|
set wildmode=longest,full
|
||||||
|
set wildmenu
|
||||||
|
|
||||||
|
set suffixes=.bak,~,.swp,.o,.info,.aux,.log,.dvi,.bbl,.blg,.brf,.cb,.ind,.idx,.ilg,.inx,.out,.toc,.png,.jpg
|
||||||
|
|
||||||
|
set number
|
||||||
|
set relativenumber
|
||||||
|
set clipboard+=unnamedplus
|
||||||
|
|
||||||
|
" No arrow keys --- force yourself to use the home row
|
||||||
|
nnoremap <up> <nop>
|
||||||
|
nnoremap <down> <nop>
|
||||||
|
nnoremap <left> <nop>
|
||||||
|
nnoremap <right> <nop>
|
||||||
|
inoremap <up> <nop>
|
||||||
|
inoremap <down> <nop>
|
||||||
|
inoremap <left> <nop>
|
||||||
|
inoremap <right> <nop>
|
||||||
|
|
||||||
|
syntax enable
|
||||||
|
filetype plugin indent on
|
||||||
|
|
||||||
|
" Rust syntax highlighting for rust-ish files
|
||||||
|
autocmd BufNewFile,BufRead *.ron set syntax=rust
|
||||||
|
autocmd BufNewFile,BufRead *.lalrpop set syntax=rust
|
||||||
|
autocmd BufNewFile,BufRead *.pest set syntax=rust
|
||||||
|
|
||||||
|
" rust-stuff
|
||||||
|
let g:rustfmt_autosave = 1
|
||||||
|
let g:rustfmt_emit_files = 1
|
||||||
|
let g:rustfmt_fail_silently = 0
|
||||||
|
let g:rust_clip_command = 'xclip -selection clipboard'
|
||||||
|
|
||||||
|
" === FISH CONFIGURATION === "
|
||||||
|
" Use fish for compiling fish-files
|
||||||
|
autocmd FileType fish compiler fish
|
||||||
|
" Code block folding
|
||||||
|
"autocmd FileType fish setlocal foldmethod=expr
|
||||||
|
" === ================== === "
|
||||||
|
|
||||||
|
" === KEY BINDINGS === "
|
||||||
|
" Map <leader> to space
|
||||||
|
let mapleader = " "
|
||||||
|
|
||||||
|
" Map to fuzzy file search
|
||||||
|
noremap <leader>f :FZF<Enter>
|
||||||
|
|
||||||
|
" Clear highlights
|
||||||
|
noremap <leader>h :noh<Enter>
|
||||||
|
|
||||||
|
" trigger vim-rooter
|
||||||
|
noremap <c-r> :Rooter<Enter>
|
||||||
|
let g:rooter_manual_only = 1
|
||||||
|
|
||||||
|
" Toggle between buffers
|
||||||
|
nnoremap <leader><leader> <c-^>
|
||||||
|
|
||||||
|
" Managing tabs
|
||||||
|
nnoremap <leader>n :tabe<Enter>:FZF<Enter>
|
||||||
|
nnoremap <c-j> gt
|
||||||
|
nnoremap <c-k> gT
|
||||||
|
|
||||||
|
" undo-redo
|
||||||
|
nnoremap U :redo<Enter>
|
||||||
|
|
||||||
|
" language server shortcuts
|
||||||
|
nnoremap <leader>a :CocAction<Enter>
|
||||||
|
nnoremap <leader>r :CocCommand document.renameCurrentWord<Enter>
|
||||||
|
|
||||||
|
" vim-smooth-scroll hotkey overrides
|
||||||
|
noremap <silent> <c-u> :call smooth_scroll#up(&scroll, 0, 3)<CR>
|
||||||
|
noremap <silent> <c-d> :call smooth_scroll#down(&scroll, 0, 3)<CR>
|
||||||
|
noremap <silent> <c-b> :call smooth_scroll#up(&scroll*2, 0, 4)<CR>
|
||||||
|
noremap <silent> <c-f> :call smooth_scroll#down(&scroll*2, 0, 4)<CR>
|
||||||
|
" ==================== "
|
||||||
296
tree/.config/nvim/syntax/rust.vim
Normal file
296
tree/.config/nvim/syntax/rust.vim
Normal file
@ -0,0 +1,296 @@
|
|||||||
|
" Vim syntax file
|
||||||
|
" Language: Rust
|
||||||
|
" Maintainer: Patrick Walton <pcwalton@mozilla.com>
|
||||||
|
" Maintainer: Ben Blum <bblum@cs.cmu.edu>
|
||||||
|
" Maintainer: Chris Morgan <me@chrismorgan.info>
|
||||||
|
" Last Change: Feb 24, 2016
|
||||||
|
" For bugs, patches and license go to https://github.com/rust-lang/rust.vim
|
||||||
|
|
||||||
|
if version < 600
|
||||||
|
syntax clear
|
||||||
|
elseif exists("b:current_syntax")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Syntax definitions {{{1
|
||||||
|
" Basic keywords {{{2
|
||||||
|
syn keyword rustConditional match if else
|
||||||
|
syn keyword rustRepeat for loop while
|
||||||
|
syn keyword rustTypedef type nextgroup=rustIdentifier skipwhite skipempty
|
||||||
|
syn keyword rustStructure struct enum nextgroup=rustIdentifier skipwhite skipempty
|
||||||
|
syn keyword rustUnion union nextgroup=rustIdentifier skipwhite skipempty contained
|
||||||
|
syn match rustUnionContextual /\<union\_s\+\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*/ transparent contains=rustUnion
|
||||||
|
syn keyword rustOperator as
|
||||||
|
|
||||||
|
syn match rustAssert "\<assert\(\w\)*!" contained
|
||||||
|
syn match rustPanic "\<panic\(\w\)*!" contained
|
||||||
|
syn keyword rustKeyword break
|
||||||
|
syn keyword rustKeyword box nextgroup=rustBoxPlacement skipwhite skipempty
|
||||||
|
syn keyword rustKeyword continue
|
||||||
|
syn keyword rustKeyword extern nextgroup=rustExternCrate,rustObsoleteExternMod skipwhite skipempty
|
||||||
|
syn keyword rustKeyword fn nextgroup=rustFuncName skipwhite skipempty
|
||||||
|
syn keyword rustKeyword in impl dyn let
|
||||||
|
syn keyword rustKeyword pub nextgroup=rustPubScope skipwhite skipempty
|
||||||
|
syn keyword rustKeyword return
|
||||||
|
syn keyword rustSuper super
|
||||||
|
syn keyword rustKeyword unsafe where
|
||||||
|
syn keyword rustKeyword use nextgroup=rustModPath skipwhite skipempty
|
||||||
|
" FIXME: Scoped impl's name is also fallen in this category
|
||||||
|
syn keyword rustKeyword mod trait nextgroup=rustIdentifier skipwhite skipempty
|
||||||
|
syn keyword rustKeyword async await
|
||||||
|
syn keyword rustStorage move mut ref static const
|
||||||
|
syn match rustDefault /\<default\ze\_s\+\(impl\|fn\|type\|const\)\>/
|
||||||
|
|
||||||
|
syn keyword rustInvalidBareKeyword crate
|
||||||
|
|
||||||
|
syn keyword rustPubScopeCrate crate contained
|
||||||
|
syn match rustPubScopeDelim /[()]/ contained
|
||||||
|
syn match rustPubScope /([^()]*)/ contained contains=rustPubScopeDelim,rustPubScopeCrate,rustSuper,rustModPath,rustModPathSep,rustSelf transparent
|
||||||
|
|
||||||
|
syn keyword rustExternCrate crate contained nextgroup=rustIdentifier,rustExternCrateString skipwhite skipempty
|
||||||
|
" This is to get the `bar` part of `extern crate "foo" as bar;` highlighting.
|
||||||
|
syn match rustExternCrateString /".*"\_s*as/ contained nextgroup=rustIdentifier skipwhite transparent skipempty contains=rustString,rustOperator
|
||||||
|
syn keyword rustObsoleteExternMod mod contained nextgroup=rustIdentifier skipwhite skipempty
|
||||||
|
|
||||||
|
syn match rustIdentifier contains=rustIdentifierPrime "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
|
||||||
|
syn match rustFuncName "\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*" display contained
|
||||||
|
|
||||||
|
syn region rustBoxPlacement matchgroup=rustBoxPlacementParens start="(" end=")" contains=TOP contained
|
||||||
|
" Ideally we'd have syntax rules set up to match arbitrary expressions. Since
|
||||||
|
" we don't, we'll just define temporary contained rules to handle balancing
|
||||||
|
" delimiters.
|
||||||
|
syn region rustBoxPlacementBalance start="(" end=")" containedin=rustBoxPlacement transparent
|
||||||
|
syn region rustBoxPlacementBalance start="\[" end="\]" containedin=rustBoxPlacement transparent
|
||||||
|
" {} are handled by rustFoldBraces
|
||||||
|
|
||||||
|
syn region rustMacroRepeat matchgroup=rustMacroRepeatDelimiters start="$(" end=")" contains=TOP nextgroup=rustMacroRepeatCount
|
||||||
|
syn match rustMacroRepeatCount ".\?[*+]" contained
|
||||||
|
syn match rustMacroVariable "$\w\+"
|
||||||
|
|
||||||
|
" Reserved (but not yet used) keywords {{{2
|
||||||
|
syn keyword rustReservedKeyword alignof become do offsetof priv pure sizeof typeof unsized yield abstract virtual final override macro
|
||||||
|
|
||||||
|
" Built-in types {{{2
|
||||||
|
syn keyword rustType isize usize char bool u8 u16 u32 u64 u128 f32
|
||||||
|
syn keyword rustType f64 i8 i16 i32 i64 i128 str Self
|
||||||
|
|
||||||
|
" Things from the libstd v1 prelude (src/libstd/prelude/v1.rs) {{{2
|
||||||
|
" This section is just straight transformation of the contents of the prelude,
|
||||||
|
" to make it easy to update.
|
||||||
|
|
||||||
|
" Reexported core operators {{{3
|
||||||
|
syn keyword rustTrait Copy Send Sized Sync
|
||||||
|
syn keyword rustTrait Drop Fn FnMut FnOnce
|
||||||
|
|
||||||
|
" Reexported functions {{{3
|
||||||
|
" There’s no point in highlighting these; when one writes drop( or drop::< it
|
||||||
|
" gets the same highlighting anyway, and if someone writes `let drop = …;` we
|
||||||
|
" don’t really want *that* drop to be highlighted.
|
||||||
|
"syn keyword rustFunction drop
|
||||||
|
|
||||||
|
" Reexported types and traits {{{3
|
||||||
|
syn keyword rustTrait Box
|
||||||
|
syn keyword rustTrait ToOwned
|
||||||
|
syn keyword rustTrait Clone
|
||||||
|
syn keyword rustTrait PartialEq PartialOrd Eq Ord
|
||||||
|
syn keyword rustTrait AsRef AsMut Into From
|
||||||
|
syn keyword rustTrait Default
|
||||||
|
syn keyword rustTrait Iterator Extend IntoIterator
|
||||||
|
syn keyword rustTrait DoubleEndedIterator ExactSizeIterator
|
||||||
|
syn keyword rustEnum Option
|
||||||
|
syn keyword rustEnumVariant Some None
|
||||||
|
syn keyword rustEnum Result
|
||||||
|
syn keyword rustEnumVariant Ok Err
|
||||||
|
syn keyword rustTrait SliceConcatExt
|
||||||
|
syn keyword rustTrait String ToString
|
||||||
|
syn keyword rustTrait Vec
|
||||||
|
|
||||||
|
" Other syntax {{{2
|
||||||
|
syn keyword rustSelf self
|
||||||
|
syn keyword rustBoolean true false
|
||||||
|
|
||||||
|
" If foo::bar changes to foo.bar, change this ("::" to "\.").
|
||||||
|
" If foo::bar changes to Foo::bar, change this (first "\w" to "\u").
|
||||||
|
syn match rustModPath "\w\(\w\)*::[^<]"he=e-3,me=e-3
|
||||||
|
syn match rustModPathSep "::"
|
||||||
|
|
||||||
|
syn match rustFuncCall "\w\(\w\)*("he=e-1,me=e-1
|
||||||
|
syn match rustFuncCall "\w\(\w\)*::<"he=e-3,me=e-3 " foo::<T>();
|
||||||
|
|
||||||
|
" This is merely a convention; note also the use of [A-Z], restricting it to
|
||||||
|
" latin identifiers rather than the full Unicode uppercase. I have not used
|
||||||
|
" [:upper:] as it depends upon 'noignorecase'
|
||||||
|
"syn match rustCapsIdent display "[A-Z]\w\(\w\)*"
|
||||||
|
|
||||||
|
syn match rustOperator display "\%(+\|-\|/\|*\|=\|\^\|&\||\|!\|>\|<\|%\)=\?"
|
||||||
|
" This one isn't *quite* right, as we could have binary-& with a reference
|
||||||
|
syn match rustSigil display /&\s\+[&~@*][^)= \t\r\n]/he=e-1,me=e-1
|
||||||
|
syn match rustSigil display /[&~@*][^)= \t\r\n]/he=e-1,me=e-1
|
||||||
|
" This isn't actually correct; a closure with no arguments can be `|| { }`.
|
||||||
|
" Last, because the & in && isn't a sigil
|
||||||
|
syn match rustOperator display "&&\|||"
|
||||||
|
" This is rustArrowCharacter rather than rustArrow for the sake of matchparen,
|
||||||
|
" so it skips the ->; see http://stackoverflow.com/a/30309949 for details.
|
||||||
|
syn match rustArrowCharacter display "->"
|
||||||
|
syn match rustQuestionMark display "?\([a-zA-Z]\+\)\@!"
|
||||||
|
|
||||||
|
syn match rustMacro '\w\(\w\)*!' contains=rustAssert,rustPanic
|
||||||
|
syn match rustMacro '#\w\(\w\)*' contains=rustAssert,rustPanic
|
||||||
|
|
||||||
|
syn match rustEscapeError display contained /\\./
|
||||||
|
syn match rustEscape display contained /\\\([nrt0\\'"]\|x\x\{2}\)/
|
||||||
|
syn match rustEscapeUnicode display contained /\\u{\x\{1,6}}/
|
||||||
|
syn match rustStringContinuation display contained /\\\n\s*/
|
||||||
|
syn region rustString start=+b"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeError,rustStringContinuation
|
||||||
|
syn region rustString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustStringContinuation,@Spell
|
||||||
|
syn region rustString start='b\?r\z(#*\)"' end='"\z1' contains=@Spell
|
||||||
|
|
||||||
|
syn region rustAttribute start="#!\?\[" end="\]" contains=rustString,rustDerive,rustCommentLine,rustCommentBlock,rustCommentLineDocError,rustCommentBlockDocError
|
||||||
|
syn region rustDerive start="derive(" end=")" contained contains=rustDeriveTrait
|
||||||
|
" This list comes from src/libsyntax/ext/deriving/mod.rs
|
||||||
|
" Some are deprecated (Encodable, Decodable) or to be removed after a new snapshot (Show).
|
||||||
|
syn keyword rustDeriveTrait contained Clone Hash RustcEncodable RustcDecodable Encodable Decodable PartialEq Eq PartialOrd Ord Rand Show Debug Default FromPrimitive Send Sync Copy
|
||||||
|
|
||||||
|
" Number literals
|
||||||
|
syn match rustDecNumber display "\<[0-9][0-9_]*\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\="
|
||||||
|
syn match rustHexNumber display "\<0x[a-fA-F0-9_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\="
|
||||||
|
syn match rustOctNumber display "\<0o[0-7_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\="
|
||||||
|
syn match rustBinNumber display "\<0b[01_]\+\%([iu]\%(size\|8\|16\|32\|64\|128\)\)\="
|
||||||
|
|
||||||
|
" Special case for numbers of the form "1." which are float literals, unless followed by
|
||||||
|
" an identifier, which makes them integer literals with a method call or field access,
|
||||||
|
" or by another ".", which makes them integer literals followed by the ".." token.
|
||||||
|
" (This must go first so the others take precedence.)
|
||||||
|
syn match rustFloat display "\<[0-9][0-9_]*\.\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\|\.\)\@!"
|
||||||
|
" To mark a number as a normal float, it must have at least one of the three things integral values don't have:
|
||||||
|
" a decimal point and more numbers; an exponent; and a type suffix.
|
||||||
|
syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)\="
|
||||||
|
syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\(f32\|f64\)\="
|
||||||
|
syn match rustFloat display "\<[0-9][0-9_]*\%(\.[0-9][0-9_]*\)\=\%([eE][+-]\=[0-9_]\+\)\=\(f32\|f64\)"
|
||||||
|
|
||||||
|
" For the benefit of delimitMate
|
||||||
|
syn region rustLifetimeCandidate display start=/&'\%(\([^'\\]\|\\\(['nrt0\\\"]\|x\x\{2}\|u{\x\{1,6}}\)\)'\)\@!/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
|
||||||
|
syn region rustGenericRegion display start=/<\%('\|[^[cntrl:][:space:][:punct:]]\)\@=')\S\@=/ end=/>/ contains=rustGenericLifetimeCandidate
|
||||||
|
syn region rustGenericLifetimeCandidate display start=/\%(<\|,\s*\)\@<='/ end=/[[:cntrl:][:space:][:punct:]]\@=\|$/ contains=rustSigil,rustLifetime
|
||||||
|
|
||||||
|
"rustLifetime must appear before rustCharacter, or chars will get the lifetime highlighting
|
||||||
|
syn match rustLifetime display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*"
|
||||||
|
syn match rustLabel display "\'\%([^[:cntrl:][:space:][:punct:][:digit:]]\|_\)\%([^[:cntrl:][:punct:][:space:]]\|_\)*:"
|
||||||
|
syn match rustCharacterInvalid display contained /b\?'\zs[\n\r\t']\ze'/
|
||||||
|
" The groups negated here add up to 0-255 but nothing else (they do not seem to go beyond ASCII).
|
||||||
|
syn match rustCharacterInvalidUnicode display contained /b'\zs[^[:cntrl:][:graph:][:alnum:][:space:]]\ze'/
|
||||||
|
syn match rustCharacter /b'\([^\\]\|\\\(.\|x\x\{2}\)\)'/ contains=rustEscape,rustEscapeError,rustCharacterInvalid,rustCharacterInvalidUnicode
|
||||||
|
syn match rustCharacter /'\([^\\]\|\\\(.\|x\x\{2}\|u{\x\{1,6}}\)\)'/ contains=rustEscape,rustEscapeUnicode,rustEscapeError,rustCharacterInvalid
|
||||||
|
|
||||||
|
syn match rustShebang /\%^#![^[].*/
|
||||||
|
syn region rustCommentLine start="//" end="$" contains=rustTodo,@Spell
|
||||||
|
syn region rustCommentLineDoc start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell
|
||||||
|
syn region rustCommentLineDocError start="//\%(//\@!\|!\)" end="$" contains=rustTodo,@Spell contained
|
||||||
|
syn region rustCommentBlock matchgroup=rustCommentBlock start="/\*\%(!\|\*[*/]\@!\)\@!" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell
|
||||||
|
syn region rustCommentBlockDoc matchgroup=rustCommentBlockDoc start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell
|
||||||
|
syn region rustCommentBlockDocError matchgroup=rustCommentBlockDocError start="/\*\%(!\|\*[*/]\@!\)" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained
|
||||||
|
syn region rustCommentBlockNest matchgroup=rustCommentBlock start="/\*" end="\*/" contains=rustTodo,rustCommentBlockNest,@Spell contained transparent
|
||||||
|
syn region rustCommentBlockDocNest matchgroup=rustCommentBlockDoc start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNest,@Spell contained transparent
|
||||||
|
syn region rustCommentBlockDocNestError matchgroup=rustCommentBlockDocError start="/\*" end="\*/" contains=rustTodo,rustCommentBlockDocNestError,@Spell contained transparent
|
||||||
|
" FIXME: this is a really ugly and not fully correct implementation. Most
|
||||||
|
" importantly, a case like ``/* */*`` should have the final ``*`` not being in
|
||||||
|
" a comment, but in practice at present it leaves comments open two levels
|
||||||
|
" deep. But as long as you stay away from that particular case, I *believe*
|
||||||
|
" the highlighting is correct. Due to the way Vim's syntax engine works
|
||||||
|
" (greedy for start matches, unlike Rust's tokeniser which is searching for
|
||||||
|
" the earliest-starting match, start or end), I believe this cannot be solved.
|
||||||
|
" Oh you who would fix it, don't bother with things like duplicating the Block
|
||||||
|
" rules and putting ``\*\@<!`` at the start of them; it makes it worse, as
|
||||||
|
" then you must deal with cases like ``/*/**/*/``. And don't try making it
|
||||||
|
" worse with ``\%(/\@<!\*\)\@<!``, either...
|
||||||
|
|
||||||
|
syn keyword rustTodo contained TODO FIXME XXX NB NOTE
|
||||||
|
|
||||||
|
" Folding rules {{{2
|
||||||
|
" Trivial folding rules to begin with.
|
||||||
|
" FIXME: use the AST to make really good folding
|
||||||
|
syn region rustFoldBraces start="{" end="}" transparent fold
|
||||||
|
|
||||||
|
" Default highlighting {{{1
|
||||||
|
hi def link rustDecNumber rustNumber
|
||||||
|
hi def link rustHexNumber rustNumber
|
||||||
|
hi def link rustOctNumber rustNumber
|
||||||
|
hi def link rustBinNumber rustNumber
|
||||||
|
hi def link rustIdentifierPrime rustIdentifier
|
||||||
|
hi def link rustTrait rustType
|
||||||
|
hi def link rustDeriveTrait rustTrait
|
||||||
|
|
||||||
|
hi def link rustMacroRepeatCount rustMacroRepeatDelimiters
|
||||||
|
hi def link rustMacroRepeatDelimiters Macro
|
||||||
|
hi def link rustMacroVariable Define
|
||||||
|
hi def link rustSigil StorageClass
|
||||||
|
hi def link rustEscape Special
|
||||||
|
hi def link rustEscapeUnicode rustEscape
|
||||||
|
hi def link rustEscapeError Error
|
||||||
|
hi def link rustStringContinuation Special
|
||||||
|
hi def link rustString String
|
||||||
|
hi def link rustCharacterInvalid Error
|
||||||
|
hi def link rustCharacterInvalidUnicode rustCharacterInvalid
|
||||||
|
hi def link rustCharacter Character
|
||||||
|
hi def link rustNumber Number
|
||||||
|
hi def link rustBoolean Boolean
|
||||||
|
hi def link rustEnum rustType
|
||||||
|
hi def link rustEnumVariant rustConstant
|
||||||
|
hi def link rustConstant Constant
|
||||||
|
hi def link rustSelf Constant
|
||||||
|
hi def link rustFloat Float
|
||||||
|
hi def link rustArrowCharacter rustOperator
|
||||||
|
hi def link rustOperator Operator
|
||||||
|
hi def link rustKeyword Keyword
|
||||||
|
hi def link rustTypedef Keyword " More precise is Typedef, but it doesn't feel right for Rust
|
||||||
|
hi def link rustStructure Keyword " More precise is Structure
|
||||||
|
hi def link rustUnion rustStructure
|
||||||
|
hi def link rustPubScopeDelim Delimiter
|
||||||
|
hi def link rustPubScopeCrate rustKeyword
|
||||||
|
hi def link rustSuper rustKeyword
|
||||||
|
hi def link rustReservedKeyword Error
|
||||||
|
hi def link rustRepeat Conditional
|
||||||
|
hi def link rustConditional Conditional
|
||||||
|
hi def link rustIdentifier Identifier
|
||||||
|
hi def link rustCapsIdent rustIdentifier
|
||||||
|
hi def link rustModPath Include
|
||||||
|
hi def link rustModPathSep Delimiter
|
||||||
|
hi def link rustFunction Function
|
||||||
|
hi def link rustFuncName Function
|
||||||
|
hi def link rustFuncCall Function
|
||||||
|
hi def link rustShebang Comment
|
||||||
|
hi def link rustCommentLine Comment
|
||||||
|
hi def link rustCommentLineDoc SpecialComment
|
||||||
|
hi def link rustCommentLineDocError Error
|
||||||
|
hi def link rustCommentBlock rustCommentLine
|
||||||
|
hi def link rustCommentBlockDoc rustCommentLineDoc
|
||||||
|
hi def link rustCommentBlockDocError Error
|
||||||
|
hi def link rustAssert PreCondit
|
||||||
|
hi def link rustPanic PreCondit
|
||||||
|
hi def link rustMacro Macro
|
||||||
|
hi def link rustType Type
|
||||||
|
hi def link rustTodo Todo
|
||||||
|
hi def link rustAttribute PreProc
|
||||||
|
hi def link rustDerive PreProc
|
||||||
|
hi def link rustDefault StorageClass
|
||||||
|
hi def link rustStorage StorageClass
|
||||||
|
hi def link rustObsoleteStorage Error
|
||||||
|
hi def link rustLifetime Special
|
||||||
|
hi def link rustLabel Label
|
||||||
|
hi def link rustInvalidBareKeyword Error
|
||||||
|
hi def link rustExternCrate rustKeyword
|
||||||
|
hi def link rustObsoleteExternMod Error
|
||||||
|
hi def link rustBoxPlacementParens Delimiter
|
||||||
|
hi def link rustQuestionMark Special
|
||||||
|
|
||||||
|
" Other Suggestions:
|
||||||
|
" hi rustAttribute ctermfg=cyan
|
||||||
|
" hi rustDerive ctermfg=cyan
|
||||||
|
" hi rustAssert ctermfg=yellow
|
||||||
|
" hi rustPanic ctermfg=red
|
||||||
|
" hi rustMacro ctermfg=magenta
|
||||||
|
|
||||||
|
syn sync minlines=200
|
||||||
|
syn sync maxlines=500
|
||||||
|
|
||||||
|
let b:current_syntax = "rust"
|
||||||
12
tree/.gitconfig
Normal file
12
tree/.gitconfig
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
[user]
|
||||||
|
email = joakim@hulthe.net
|
||||||
|
name = Joakim Hulthe
|
||||||
|
signingkey = joakim@hulthe.net
|
||||||
|
[commit]
|
||||||
|
gpgSign = true
|
||||||
|
[pull]
|
||||||
|
rebase = true
|
||||||
|
[core]
|
||||||
|
editor = nvim
|
||||||
|
[init]
|
||||||
|
defaultBranch = master
|
||||||
28
tree/.tmux.conf
Normal file
28
tree/.tmux.conf
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Set prefix to Ctrl+A
|
||||||
|
unbind C-b
|
||||||
|
set -g prefix C-a
|
||||||
|
bind C-a send-prefix
|
||||||
|
|
||||||
|
set -g mouse on
|
||||||
|
set -g history-limit 30000
|
||||||
|
set -g base-index 1
|
||||||
|
set-window-option -g xterm-keys on
|
||||||
|
|
||||||
|
set-option -sg escape-time 10
|
||||||
|
set-option -g default-terminal "tmux-256color"
|
||||||
|
|
||||||
|
# Enable vi bindings
|
||||||
|
set-window-option -g mode-keys vi
|
||||||
|
|
||||||
|
# List of plugins
|
||||||
|
set -g @plugin 'tmux-plugins/tpm'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-yank'
|
||||||
|
|
||||||
|
# Other examples:
|
||||||
|
# set -g @plugin 'github_username/plugin_name'
|
||||||
|
# set -g @plugin 'git@github.com/user/plugin'
|
||||||
|
# set -g @plugin 'git@bitbucket.com/user/plugin'
|
||||||
|
|
||||||
|
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
||||||
|
run '~/.tmux/plugins/tpm/tpm'
|
||||||
Reference in New Issue
Block a user