From aff90a692c6619704985a4f6bfddf9bc8e42a922 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Thu, 25 May 2023 19:34:46 +0700 Subject: [PATCH] Bringing in some of the old stuff for reference --- .config/i3/config | 210 +++++++++++ .config/kak/ranger.kak | 59 +++ .config/kak/word-mode.kak | 43 +++ .config/kitty/kitty.conf | 2 + .config/mbsync/config | 86 +++++ .config/qutebrowser/autoconfig.yml | 10 + .config/qutebrowser/bookmarks/urls | 0 .config/qutebrowser/quickmarks | 0 .config/scripts/add_command.sh | 19 + .config/scripts/i3_cwd_term.sh | 26 ++ .config/scripts/laptop_setup.sh | 6 + .config/scripts/single_monitor.sh | 13 + .config/scripts/work_setup.sh | 17 + .config/touchegg/.touchegg:0.lock | 0 .config/touchegg/touchegg.conf | 140 ++++++++ .config/touchegg/touchegg.conf~ | 133 +++++++ .doom.d/config.el | 107 ------ .doom.d/init.el | 191 ---------- .doom.d/packages.el | 58 --- .emacs.vanilla/init.el | 560 ----------------------------- .vimrc | 551 ++++++++++++++++++++++++++++ 21 files changed, 1315 insertions(+), 916 deletions(-) create mode 100644 .config/i3/config create mode 100644 .config/kak/ranger.kak create mode 100644 .config/kak/word-mode.kak create mode 100644 .config/mbsync/config create mode 100644 .config/qutebrowser/autoconfig.yml create mode 100644 .config/qutebrowser/bookmarks/urls create mode 100644 .config/qutebrowser/quickmarks create mode 100755 .config/scripts/add_command.sh create mode 100755 .config/scripts/i3_cwd_term.sh create mode 100755 .config/scripts/laptop_setup.sh create mode 100755 .config/scripts/single_monitor.sh create mode 100755 .config/scripts/work_setup.sh create mode 100644 .config/touchegg/.touchegg:0.lock create mode 100644 .config/touchegg/touchegg.conf create mode 100644 .config/touchegg/touchegg.conf~ delete mode 100644 .doom.d/config.el delete mode 100644 .doom.d/init.el delete mode 100644 .doom.d/packages.el delete mode 100644 .emacs.vanilla/init.el create mode 100644 .vimrc diff --git a/.config/i3/config b/.config/i3/config new file mode 100644 index 0000000..f7e0797 --- /dev/null +++ b/.config/i3/config @@ -0,0 +1,210 @@ +# This file has been auto-generated by i3-config-wizard(1). +# It will not be overwritten, so edit it as you like. + +# Should you change your keyboard layout some time, delete +# this file and re-run i3-config-wizard(1). +# + +# i3 config file (v4) +# +# Please see http://i3wm.org/docs/userguide.html for a complete reference! + +focus_follows_mouse no + +set $mod Mod4 +set $hyper Shift+Control+Mod1+Mod4 + +# Font for window titles. Will also be used by the bar unless a different font +# is used in the bar {} block below. +font pango:monospace 6 + +# This font is widely installed, provides lots of unicode glyphs, right-to-left +# text rendering and scalability on retina/hidpi displays (thanks to pango). +#font pango:DejaVu Sans Mono 8 + +# Before i3 v4.8, we used to recommend this one as the default: +# font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 +# The font above is very space-efficient, that is, it looks good, sharp and +# clear in small sizes. However, its unicode glyph coverage is limited, the old +# X core fonts rendering does not support right-to-left and this being a bitmap +# font, it doesn’t scale on retina/hidpi displays. + +bindsym $hyper+i workspace 2, mode "default" +bindsym $hyper+e [class=Thunderbird] focus, mode "default" +bindsym $hyper+u [class=Unity] focus, mode "default" +bindsym $hyper+v [class=Emacs] focus, mode "default" +bindsym $hyper+r [class=jetbrains-rider] focus, mode "default" +bindsym $hyper+t workspace 1, mode "default" + +# Use Mouse+$mod to drag floating windows to their wanted position +floating_modifier $mod + +# start a terminal +# bindsym $mod+Return exec i3-sensible-terminal +bindsym $mod+Return exec --no-startup-id ~/dotfiles/scripts/i3_cwd_term.sh +bindsym $mod+Shift+Return exec "~/dotfiles/scripts/i3_cwd_term.sh"; exec "i3-msg floating enabled" + +# kill focused window +bindsym $mod+Shift+q kill + +# start dmenu (a program launcher) +# bindsym $mod+d exec dmenu_run +# There also is the (new) i3-dmenu-desktop which only displays applications +# shipping a .desktop file. It is a wrapper around dmenu, so you need that +# installed. +bindsym $mod+d exec --no-startup-id i3-dmenu-desktop + +# change focus +bindsym $mod+h focus left +bindsym $mod+j focus down +bindsym $mod+k focus up +bindsym $mod+l focus right + +# alternatively, you can use the cursor keys: +bindsym $mod+Left move workspace to output left +bindsym $mod+Right move workspace to output right + +# move focused window +bindsym $mod+Shift+h move left +bindsym $mod+Shift+j move down +bindsym $mod+Shift+k move up +bindsym $mod+Shift+l move right + +# move to next container +bindsym $mod+Control+h focus output left; +bindsym $mod+Control+j focus parent; focus down; +bindsym $mod+Control+k focus parent; focus up; +bindsym $mod+Control+l focus output right; + +# alternatively, you can use the cursor keys: +bindsym $mod+Shift+Left move left +bindsym $mod+Shift+Down move down +bindsym $mod+Shift+Up move up +bindsym $mod+Shift+Right move right + +bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5%; exec --no-startup-id pactl set-sink-mute 0 0 +bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5%; exec --no-startup-id pactl set-sink-mute 0 0 +bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle + +bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10 +bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10 + + +# split in horizontal orientation +bindsym $mod+s split h + +# split in vertical orientation +bindsym $mod+v split v + +# enter fullscreen mode for the focused container +bindsym $mod+f fullscreen toggle + +# change container layout (stacked, tabbed, toggle split) +bindsym $mod+w layout stacking +bindsym $mod+t layout tabbed +bindsym $mod+e layout toggle split + +# toggle tiling / floating +bindsym $mod+Shift+space floating toggle + +# change focus between tiling / floating windows +bindsym $mod+space focus mode_toggle + +# focus the parent container +bindsym $mod+a focus parent + +# focus the child container +#bindsym $mod+d focus child + +# switch to workspace +bindsym $mod+1 workspace 1 +bindsym $mod+2 workspace 2 +bindsym $mod+3 workspace 3 +bindsym $mod+4 workspace 4 +bindsym $mod+5 workspace 5 +bindsym $mod+6 workspace 6 +bindsym $mod+7 workspace 7 +bindsym $mod+8 workspace 8 +bindsym $mod+9 workspace 9 +bindsym $mod+0 workspace 10 +bindsym $mod+m workspace music +bindsym $mod+c workspace 0:chat + +# move focused container to workspace +bindsym $mod+Shift+1 move container to workspace 1 +bindsym $mod+Shift+2 move container to workspace 2 +bindsym $mod+Shift+3 move container to workspace 3 +bindsym $mod+Shift+4 move container to workspace 4 +bindsym $mod+Shift+5 move container to workspace 5 +bindsym $mod+Shift+6 move container to workspace 6 +bindsym $mod+Shift+7 move container to workspace 7 +bindsym $mod+Shift+8 move container to workspace 8 +bindsym $mod+Shift+9 move container to workspace 9 +bindsym $mod+Shift+0 move container to workspace 10 +bindsym $mod+Shift+m move container to workspace music +bindsym $mod+Shift+c move container to workspace 0:chat + +bindsym $mod+n workspace next_on_output +bindsym $mod+p workspace prev_on_output + +bindsym $mod+Control+1 focus output DP-3 +bindsym $mod+Control+2 focus output DP-1 +bindsym $mod+Control+3 focus output DP-0 + +# reload the configuration file +bindsym $mod+Shift+r reload +# restart i3 inplace (preserves your layout/session, can be used to upgrade i3) +bindsym $mod+Control+Shift+r restart +# exit i3 (logs you out of your X session) +bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'" + +bindsym $hyper+l exec --no-startup-id i3lock -i ~/Pictures/wallpaper.png -t ; exec systemctl suspend + +set $resizeAmount 5 +# resize window (you can also use the mouse for that) +mode "resize" { + # These bindings trigger as soon as you enter the resize mode + + # Pressing left will shrink the window’s width. + # Pressing right will grow the window’s width. + # Pressing up will shrink the window’s height. + # Pressing down will grow the window’s height. + bindsym h resize shrink width $resizeAmount px or $resizeAmount ppt + bindsym j resize grow height $resizeAmount px or $resizeAmount ppt + bindsym k resize shrink height $resizeAmount px or $resizeAmount ppt + bindsym l resize grow width $resizeAmount px or $resizeAmount ppt + + # same bindings, but for the arrow keys + bindsym Left resize shrink width $resizeAmount px or $resizeAmount ppt + bindsym Down resize grow height $resizeAmount px or $resizeAmount ppt + bindsym Up resize shrink height $resizeAmount px or $resizeAmount ppt + bindsym Right resize grow width $resizeAmount px or $resizeAmount ppt + + # back to normal: Enter or Escape + bindsym Return mode "default" + bindsym Escape mode "default" +} + +bindsym $mod+r mode "resize" + +# Start i3bar to display a workspace bar (plus the system information i3status +# finds out, if available) +bar { + status_command i3status + position top +} + + +bindsym $hyper+m exec --no-startup-id ~/dotfiles/scripts/work_setup.sh +bindsym $mod+Mod1+m exec --no-startup-id ~/dotfiles/scripts/laptop_setup.sh +bindsym $hyper+s exec --no-startup-id ~/dotfiles/scripts/single_monitor.sh +bindsym $hyper+k exec --no-startup-id ~/dotfiles/scripts/ergo.sh +# bindsym $hyper+k exec --no-startup-id ~/dotfiles/scripts/laptop_setup.sh + +# i3lock -i ~/Pictures/new3.png -t + +for_window [class="Unity" title="Hold On"] floating enable, move container to workspace 4 +for_window [class="Unity" title="Starting Unity..."] floating enable, move container to workspace 4 +for_window [class="Teensy"] floating enable +# for_window [class="sun-awt-X11-XWindowPeer"][window_type=popup_menu] focus +# for_window [class="sun-awt-X11-XFramePeer"] focus diff --git a/.config/kak/ranger.kak b/.config/kak/ranger.kak new file mode 100644 index 0000000..4bb49a7 --- /dev/null +++ b/.config/kak/ranger.kak @@ -0,0 +1,59 @@ +# http://ranger.nongnu.org +# ‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾ + +define-command ranger-open-on-edit-directory \ + -docstring 'Start the ranger file system explorer when trying to edit a directory' %{ + hook global RuntimeError "\d+:\d+: '\w+' (.*): is a directory" %{ evaluate-commands %sh{ + directory=$kak_hook_param_capture_1 + echo ranger $directory + }} +} + +define-command \ + -params .. -file-completion \ + -docstring %{ranger []: open the file system explorer to select buffers to open + All the optional arguments are forwarded to the ranger utility} \ + ranger %{ evaluate-commands %sh{ + if [ -n "${TMUX}" ]; then + tmux split-window -h \ + ranger $@ --cmd " \ + map eval \ + fm.execute_console('shell \ + echo evaluate-commands -client ' + ranger.ext.shell_escape.shell_escape('$kak_client') + ' edit {file} | \ + kak -p '.format(file=fm.thisfile.path) + ranger.ext.shell_escape.shell_escape('$kak_session') + '; \ + tmux select-pane -t $kak_client_env_TMUX_PANE') \ + if fm.thisfile.is_file else fm.execute_console('move right=1')" + + elif [ -n "${STY}" ]; then + + script="/tmp/kak-ranger-${kak_client}-${kak_session}.sh" + selections="/tmp/kak-ranger-${kak_client}-${kak_session}.txt" + cat > "$script" << EOF +#! /usr/bin/env sh +cd "$PWD" +ranger --choosefiles="$selections" $@ +while read -r f; do + printf %s "evaluate-commands -client '${kak_client}' edit '\"\$f\"'" | kak -p '${kak_session}' +done < "$selections" +screen -X remove +rm -f "$selections" "$script" +EOF + + tty="$(ps -o tty ${kak_client_pid} | tail -n 1)" + screen -X eval \ + 'split -h' \ + 'focus down' \ + "screen sh '$script'" \ + < "/dev/$tty" + + elif [ -n "$WINDOWID" ]; then + setsid $kak_opt_termcmd " \ + ranger $@ --cmd "'"'" \ + map eval \ + fm.execute_console('shell \ + echo evaluate-commands -client ' + ranger.ext.shell_escape.shell_escape('$kak_client') + ' edit {file} | \ + kak -p '.format(file=fm.thisfile.path) + ranger.ext.shell_escape.shell_escape('$kak_session') + '; \ + xdotool windowactivate $kak_client_env_WINDOWID') \ + if fm.thisfile.is_file else fm.execute_console('move right=1')"'"' < /dev/null > /dev/null 2>&1 & + fi +}} diff --git a/.config/kak/word-mode.kak b/.config/kak/word-mode.kak new file mode 100644 index 0000000..fd42fd9 --- /dev/null +++ b/.config/kak/word-mode.kak @@ -0,0 +1,43 @@ +declare-user-mode word +map global normal w ':enter-user-mode -lock word' +map global word w w -docstring 'select to next word start' +map global word W W -docstring 'extend to next word start ' +map global word b b -docstring 'select to previous word start' +map global word B B -docstring 'extend to previous word start' +map global word e e -docstring 'select to next word end' +map global word E E -docstring 'extend to next word end' +map global word q -docstring 'select to next WORD start' +map global word Q -docstring 'extend to next WORD start' +map global word v -docstring 'select to previous WORD start' +map global word V -docstring 'extend to previous WORD start' +map global word r -docstring 'select to next WORD end' +map global word R -docstring 'extend to next WORD end' + +def -hidden select-next-subword %{ + exec /[A-Z][a-z]+|[A-Z]+|[a-z]+ +} +def -hidden extend-next-subword %{ + exec ?[A-Z][a-z]+|[A-Z]+|[a-z]+ +} +def -hidden select-prev-subword %{ + exec [A-Z][a-z]+|[A-Z]+|[a-z]+ +} +def -hidden extend-prev-subword +%{ + exec [A-Z][a-z]+|[A-Z]+|[a-z]+ +} +map global word s :select-next-subword -docstring 'select to next subword' +map global word S :extend-next-subword -docstring 'extend to next subword' +map global word a :select-prev-subword -docstring 'select to previous subword' +map global word A :extend-prev-subword -docstring 'extend to previous subword' + +map global word d d +map global word y y +map global word h h +map global word j j +map global word k k +map global word l l +map global word H H +map global word J J +map global word K K +map global word L L diff --git a/.config/kitty/kitty.conf b/.config/kitty/kitty.conf index a98e784..d834c7f 100644 --- a/.config/kitty/kitty.conf +++ b/.config/kitty/kitty.conf @@ -56,6 +56,8 @@ map kitty_mod+j neighboring_window down map kitty_mod+k neighboring_window up map kitty_mod+l neighboring_window right +map ctrl+y paste_from_clipboard + map kitty_mod+p previous_tab map kitty_mod+n next_tab map kitty_mod+q close_tab diff --git a/.config/mbsync/config b/.config/mbsync/config new file mode 100644 index 0000000..a403b92 --- /dev/null +++ b/.config/mbsync/config @@ -0,0 +1,86 @@ +IMAPAccount ferano.io +Host mail.gandi.net +UserCmd "age --decrypt -i ~/.local/credentials/personal ~/.local/credentials/authinfo.age | awk -F ' ' '/mail.gandi.net/ { print $(NF-2);exit; }'" +PassCmd "age --decrypt -i ~/.local/credentials/personal ~/.local/credentials/authinfo.age | awk -F ' ' '/mail.gandi.net/ { print $(NF);exit; }'" +SSLType IMAPS + +IMAPStore ferano.io.remote +Account ferano.io + +MaildirStore ferano.io.local +Subfolders Verbatim +# The trailing "/" is important +Path ~/.mail/ferano.io/ +Inbox ~/.mail/ferano.io/Inbox + +Channel ferano.io +Far :ferano.io.remote: +Near :ferano.io.local: +# Include everything +Patterns * +Sync All +Create Both +Remove Both +Expunge Both +SyncState * + +Channel ferano.io.inbox +Far :ferano.io.remote: +Near :ferano.io.local: +Patterns INBOX +Sync All +Create Both +Remove Both +Expunge Both +SyncState * + +IMAPAccount gmail +Host imap.gmail.com +UserCmd "age --decrypt -i ~/.local/credentials/personal ~/.local/credentials/authinfo.age | awk -F ' ' '/mail.gmail.com/ { print $(NF-2);exit; }'" +PassCmd "age --decrypt -i ~/.local/credentials/personal ~/.local/credentials/authinfo.age | awk -F ' ' '/mail.gmail.com/ { print $(NF);exit; }'" +SSLType IMAPS + +IMAPStore gmail.remote +Account gmail + +MaildirStore gmail.local +Subfolders Verbatim +# The trailing "/" is important +Path ~/.mail/gmail/ +Inbox ~/.mail/gmail/Inbox + +Channel gmail +Far :gmail.remote: +Near :gmail.local: +# Include everything +Patterns * +Sync All +Create Both +Remove Both +Expunge Both +SyncState * + +Channel gmail.inbox +Far :gmail.remote: +Near :gmail.local: +Patterns INBOX +Sync All +Create Both +Remove Both +Expunge Both +SyncState * + +Channel gmail.allmail +Far :gmail.remote: +Near :gmail.local: +Patterns *All* +Sync All +Create Both +Remove Both +Expunge Both +SyncState * + + +Group all +Channel ferano.io +Channel gmail diff --git a/.config/qutebrowser/autoconfig.yml b/.config/qutebrowser/autoconfig.yml new file mode 100644 index 0000000..747496b --- /dev/null +++ b/.config/qutebrowser/autoconfig.yml @@ -0,0 +1,10 @@ +# If a config.py file exists, this file is ignored unless it's explicitly loaded +# via config.load_autoconfig(). For more information, see: +# https://github.com/qutebrowser/qutebrowser/blob/master/doc/help/configuring.asciidoc#loading-autoconfigyml +# DO NOT edit this file by hand, qutebrowser will overwrite it. +# Instead, create a config.py - see :help for details. + +config_version: 2 +settings: + content.notifications.enabled: + https://www.reddit.com: false diff --git a/.config/qutebrowser/bookmarks/urls b/.config/qutebrowser/bookmarks/urls new file mode 100644 index 0000000..e69de29 diff --git a/.config/qutebrowser/quickmarks b/.config/qutebrowser/quickmarks new file mode 100644 index 0000000..e69de29 diff --git a/.config/scripts/add_command.sh b/.config/scripts/add_command.sh new file mode 100755 index 0000000..ba879c1 --- /dev/null +++ b/.config/scripts/add_command.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +if [ -z "$1" ]; +then + echo "Provide a command, alternative pass the -l to add the last command in history" + exit 1 +fi + +file=$HOME/School/CCOM4088-CyberSecurity/commands + + +if [ "$1" = "-l" ] +then + tail ~/.histfile -n 2 | head -n 1 | sed 's/^.*;//' >> $file +else + echo "$1" >> $file +fi + +tail $file diff --git a/.config/scripts/i3_cwd_term.sh b/.config/scripts/i3_cwd_term.sh new file mode 100755 index 0000000..b1983c7 --- /dev/null +++ b/.config/scripts/i3_cwd_term.sh @@ -0,0 +1,26 @@ +#!/bin/bash +ACTIVE_WINDOW=$(xdpyinfo | grep focus | cut -f4 -d " ") +ACTIVE_WM_CLASS=$(xprop -id $ACTIVE_WINDOW | grep WM_CLASS) +if [[ $ACTIVE_WM_CLASS == *"Alacritty"* ]] +then + # Get PID. If _NET_WM_PID isn't set, bail. + PID=$(xprop -id $ACTIVE_WINDOW | grep _NET_WM_PID | grep -oP "\d+") + if [[ "$PID" == "" ]] + then + alacritty + fi + # Get first child of terminal + CHILD_PID=$(pgrep -P $PID) + if [[ "$PID" == "" ]] + then + alacritty + fi + # Get current directory of child. The first child should be the shell. + SHELL_CWD=$(readlink -e "/proc/${CHILD_PID}/cwd") + # Start alacritty with the working directory + alacritty --working-directory $SHELL_CWD +else + alacritty +fi + +# alacritty --working-directory "$(readlink -e /proc/"$(pgrep -P "$(xdo pid)" | tail -n 1)"/cwd)" diff --git a/.config/scripts/laptop_setup.sh b/.config/scripts/laptop_setup.sh new file mode 100755 index 0000000..0fd158d --- /dev/null +++ b/.config/scripts/laptop_setup.sh @@ -0,0 +1,6 @@ +#!/bin/sh +xrandr --output DP-0 --primary --mode 1920x1080 --pos 0x0 --panning 1920x1080 --dpi 96 \ + --output DP-1 --off \ + --output DP-2 --off \ + --output DP-3 --off \ + --output DP-4 --off \ diff --git a/.config/scripts/single_monitor.sh b/.config/scripts/single_monitor.sh new file mode 100755 index 0000000..11db68a --- /dev/null +++ b/.config/scripts/single_monitor.sh @@ -0,0 +1,13 @@ +#!/bin/sh +xrandr --output DP-0 --mode 1920x1080 --pos 0x0 --dpi 96 \ + --output DP-4 --primary --mode 1920x1080 --pos 1920x0 --right-of DP-0 --dpi 96 +i3-msg "workspace music; move workspace to output DP-0; + workspace 0:chat; move workspace to output DP-4; + workspace 1; move workspace to output DP-4; + workspace 2; move workspace to output DP-4; + workspace 3; move workspace to output DP-4; + workspace 4; move workspace to output DP-4; + workspace 5; move workspace to output DP-4; + workspace 6; move workspace to output DP-4; + workspace 7; move workspace to output DP-4; + workspace 3" diff --git a/.config/scripts/work_setup.sh b/.config/scripts/work_setup.sh new file mode 100755 index 0000000..b375eef --- /dev/null +++ b/.config/scripts/work_setup.sh @@ -0,0 +1,17 @@ +#!/bin/sh +xrandr \ +--output HDMI-0 --off \ +--output DP-4 --off \ +--output DP-2 --off \ +--output DP-3 --mode 1920x1080 --pos 0x0 --panning 1920x1080+0+0 --dpi 96 \ +--output DP-1 --primary --mode 1920x1080 --pos 1920x0 --panning 1920x1080+1920+0 --dpi 96 \ +--output DP-0 --mode 1920x1080 --pos 3840x0 --panning 1920x1080+3840+0 --dpi 96 +i3-msg "workspace 1; move workspace to output DP-3; + workspace music; move workspace to output DP-0; + workspace 0:chat; move workspace to output DP-1; + workspace 2; move workspace to output DP-3; + workspace 3; move workspace to output DP-1; + workspace 4; move workspace to output DP-1; + workspace 5; move workspace to output DP-1; + workspace 6; move workspace to output DP-1; + workspace 3" diff --git a/.config/touchegg/.touchegg:0.lock b/.config/touchegg/.touchegg:0.lock new file mode 100644 index 0000000..e69de29 diff --git a/.config/touchegg/touchegg.conf b/.config/touchegg/touchegg.conf new file mode 100644 index 0000000..d5488cb --- /dev/null +++ b/.config/touchegg/touchegg.conf @@ -0,0 +1,140 @@ + + + + + 50 + + + 15 + + + auto + auto + + + + + + + true + + + + + + true + + + + + + auto + true + auto + + + + + + auto + true + auto + + + + + + true + F84A53 + F84A53 + + + + + + true + + + + + + false + Super_L + A + begin + + + + + + + begin + + + + + + + begin + + + + + + + + + + + + + + + + + true + Control_L + KP_Subtract + KP_Add + + + + + + true + Control_L + KP_Add + KP_Subtract + + + + + diff --git a/.config/touchegg/touchegg.conf~ b/.config/touchegg/touchegg.conf~ new file mode 100644 index 0000000..b170c17 --- /dev/null +++ b/.config/touchegg/touchegg.conf~ @@ -0,0 +1,133 @@ + + + + + 50 + + + 15 + + + auto + auto + + + + + + + true + + + + + + true + + + + + + auto + true + auto + + + + + + auto + true + auto + + + + + + true + F84A53 + F84A53 + + + + + + true + + + + + + false + Super_L + A + begin + + + + + + + begin + + + + + + + begin + + + + + + + + + + true + Control_L + KP_Subtract + KP_Add + + + + + + true + Control_L + KP_Add + KP_Subtract + + + + + diff --git a/.doom.d/config.el b/.doom.d/config.el deleted file mode 100644 index 5fd0f9c..0000000 --- a/.doom.d/config.el +++ /dev/null @@ -1,107 +0,0 @@ -;;; $DOOMDIR/config.el -*- lexical-binding: t; -*- - -;; Place your private configuration here! Remember, you do not need to run 'doom -;; sync' after modifying this file! - - -;; Some functionality uses this to identify you, e.g. GPG configuration, email -;; clients, file templates and snippets. -(setq user-full-name "Joseph Ferano" - user-mail-address "joseph@ctech.com") - -;; Doom exposes five (optional) variables for controlling fonts in Doom. Here -;; are the three important ones: -;; -;; + `doom-font' -;; + `doom-variable-pitch-font' -;; + `doom-big-font' -- used for `doom-big-font-mode'; use this for -;; presentations or streaming. -;; -;; They all accept either a font-spec, font string ("Input Mono-12"), or xlfd -;; font string. You generally only need these two: -;; (setq doom-font (font-spec :family "monospace" :size 12 :weight 'semi-light) -;; doom-variable-pitch-font (font-spec :family "sans" :size 13)) - -(setq doom-font (font-spec :family "Fira Code Nerd Font" :size 15)) - -;; There are two ways to load a theme. Both assume the theme is installed and -;; available. You can either set `doom-theme' or manually load a theme with the -;; `load-theme' function. This is the default: -(setq doom-theme 'doom-vibrant) -;; Also looks nice doom-palenight - -;; If you use `org' and don't want your org files in the default location below, -;; change `org-directory'. It must be set before org loads! -(setq org-directory "~/org/") - -;; This determines the style of line numbers in effect. If set to `nil', line -;; numbers are disabled. For relative line numbers, set this to `relative'. -(setq display-line-numbers-type 'relative) - - -;; Here are some additional functions/macros that could help you configure Doom: -;; -;; - `load!' for loading external *.el files relative to this one -;; - `use-package!' for configuring packages -;; - `after!' for running code after a package has loaded -;; - `add-load-path!' for adding directories to the `load-path', relative to -;; this file. Emacs searches the `load-path' when you load packages with -;; `require' or `use-package'. -;; - `map!' for binding new keys -;; -;; To get information about any of these functions/macros, move the cursor over -;; the highlighted symbol at press 'K' (non-evil users must press 'C-c c k'). -;; This will open documentation for it, including demos of how they are used. -;; -;; You can also try 'gd' (or 'C-c c d') to jump to their definition and see how -;; they are implemented. - -(setq default-directory "~/") - -(setq which-key-idle-delay 0.4) - -(setq dired-listing-switches "-ahlgo -v --group-directories-first") - -(setq recentf-max-saved-items 1000) - -(defun joe/dired-same-buffer () - "In Dired, visit this file or directory in another window." - (interactive) - (find-alternate-file "..")) - -(defun joe/dired-open-with-wsl-open () - "Open file under cursor with wsl-open which should launch it on the windows side" - (interactive) - (shell-command (format "open '%s'" (dired-get-filename)))) - -(map! - (:n "-" #'dired-jump - :n "C-l" #'evil-window-right - :n "C-h" #'evil-window-left) - (:after flycheck - :map flycheck-mode-map - :leader "e" #'flycheck-explain-error-at-point) - (:after dired - :map dired-mode-map - :n "o" #'joe/dired-open-with-wsl-open - :n "s" #'dired-sort-toggle-or-edit - :n "-" #'joe/dired-same-buffer - :n "RET" #'dired-find-alternate-file) - (:after avy - :n "q" #'avy-goto-word-0)) - -(require 'avy) -(defvar avy-map (make-sparse-keymap)) - -(use-package! avy - :init - (setq avy-keys '(?a ?s ?d ?f ?w ?e ?r ?u ?i ?o ?h ?j ?k ?l ?x ?c ?m ?z ?p ?q ?t ?y ?b ?n)) - (setq avy-all-windows nil) - (setq avy-background t)) - -(use-package! org-bullets - :hook (org-mode . org-bullets-mode)) - -(use-package! company - :after - (add-to-list 'company-backends 'company-restclient)) diff --git a/.doom.d/init.el b/.doom.d/init.el deleted file mode 100644 index 761eda6..0000000 --- a/.doom.d/init.el +++ /dev/null @@ -1,191 +0,0 @@ -;;; init.el -*- lexical-binding: t; -*- - -;; This file controls what Doom modules are enabled and what order they load -;; in. Remember to run 'doom sync' after modifying it! - -;; NOTE Press 'SPC h d h' (or 'C-h d h' for non-vim users) to access Doom's -;; documentation. There you'll find a "Module Index" link where you'll find -;; a comprehensive list of Doom's modules and what flags they support. - -;; NOTE Move your cursor over a module's name (or its flags) and press 'K' (or -;; 'C-c c k' for non-vim users) to view its documentation. This works on -;; flags as well (those symbols that start with a plus). -;; -;; Alternatively, press 'gd' (or 'C-c c d') on a module to browse its -;; directory (for easy access to its source code). - -(doom! :input - ;;chinese - ;;japanese - ;;layout ; auie,ctsrnm is the superior home row - - :completion - company ; the ultimate code completion backend - ;;helm ; the *other* search engine for love and life - ;;ido ; the other *other* search engine... - ;;ivy ; a search engine for love and life - vertico ; the search engine of the future - - :ui - ;;deft ; notational velocity for Emacs - doom ; what makes DOOM look the way it does - doom-dashboard ; a nifty splash screen for Emacs - doom-quit ; DOOM quit-message prompts when you quit Emacs - ;;(emoji +unicode) ; 🙂 - hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW - ;;hydra - ;;indent-guides ; highlighted indent columns - ligatures ; ligatures and symbols to make your code pretty again - ;;minimap ; show a map of the code on the side - modeline ; snazzy, Atom-inspired modeline, plus API - ;;nav-flash ; blink cursor line after big motions - ;;neotree ; a project drawer, like NERDTree for vim - ophints ; highlight the region an operation acts on - (popup +defaults) ; tame sudden yet inevitable temporary windows - ;;tabs ; a tab bar for Emacs - ;;treemacs ; a project drawer, like neotree but cooler - ;;unicode ; extended unicode support for various languages - vc-gutter ; vcs diff in the fringe - vi-tilde-fringe ; fringe tildes to mark beyond EOB - ;;window-select ; visually switch windows - workspaces ; tab emulation, persistence & separate workspaces - ;;zen ; distraction-free coding or writing - - :editor - (evil +everywhere) ; come to the dark side, we have cookies - file-templates ; auto-snippets for empty files - fold ; (nigh) universal code folding - ;;(format +onsave) ; automated prettiness - ;;god ; run Emacs commands without modifier keys - ;;lispy ; vim for lisp, for people who don't like vim - ;;multiple-cursors ; editing in many places at once - ;;objed ; text object editing for the innocent - ;;parinfer ; turn lisp into python, sort of - ;;rotate-text ; cycle region at point between text candidates - snippets ; my elves. They type so I don't have to - ;;word-wrap ; soft wrapping with language-aware indent - - :emacs - (dired +dirvish) ; making dired pretty [functional] - electric ; smarter, keyword-based electric-indent - ;;ibuffer ; interactive buffer management - undo ; persistent, smarter undo for your inevitable mistakes - vc ; version-control and Emacs, sitting in a tree - - :term - ;;eshell ; the elisp shell that works everywhere - ;;shell ; simple shell REPL for Emacs - ;;term ; basic terminal emulator for Emacs - vterm ; the best terminal emulation in Emacs - - :checkers - syntax ; tasing you for every semicolon you forget - ;;(spell +flyspell) ; tasing you for misspelling mispelling - ;;grammar ; tasing grammar mistake every you make - - :tools - ;;ansible - ;;biblio ; Writes a PhD for you (citation needed) - (debugger +lsp) ; FIXME stepping through code, to help you add bugs - ;;direnv - ;;docker - ;;editorconfig ; let someone else argue about tabs vs spaces - ;;ein ; tame Jupyter notebooks with emacs - (eval +overlay) ; run code, run (also, repls) - ;;gist ; interacting with github gists - lookup ; navigate your code and its documentation - (lsp +peek) ; M-x vscode - magit ; a git porcelain for Emacs - ;;make ; run make tasks from Emacs - ;;pass ; password manager for nerds - ;;pdf ; pdf enhancements - ;;prodigy ; FIXME managing external services & code builders - ;;rgb ; creating color strings - ;;taskrunner ; taskrunner for all your projects - ;;terraform ; infrastructure as code - ;;tmux ; an API for interacting with tmux - ;;upload ; map local to remote projects via ssh/ftp - - :os - (:if IS-MAC macos) ; improve compatibility with macOS - ;;tty ; improve the terminal Emacs experience - - :lang - ;;agda ; types of types of types of types... - ;;beancount ; mind the GAAP - cc ; C > C++ == 1 - ;;clojure ; java with a lisp - common-lisp ; if you've seen one lisp, you've seen them all - ;;coq ; proofs-as-programs - ;;crystal ; ruby at the speed of c - csharp ; unity, .NET, and mono shenanigans - ;;data ; config/data formats - ;;(dart +flutter) ; paint ui and not much else - ;;dhall - ;;elixir ; erlang done right - ;;elm ; care for a cup of TEA? - emacs-lisp ; drown in parentheses - ;;erlang ; an elegant language for a more civilized age - ;;ess ; emacs speaks statistics - ;;factor - ;;faust ; dsp, but you get to keep your soul - ;;fortran ; in FORTRAN, GOD is REAL (unless declared INTEGER) - (fsharp +lsp) ; ML stands for Microsoft's Language - ;;fstar ; (dependent) types and (monadic) effects and Z3 - ;;gdscript ; the language you waited for - ;;(go +lsp) ; the hipster dialect - (haskell +lsp) ; a language that's lazier than I am - ;;hy ; readability of scheme w/ speed of python - ;;idris ; a language you can depend on - json ; At least it ain't XML - ;;(java +meghanada) ; the poster child for carpal tunnel syndrome - ;;javascript ; all(hope(abandon(ye(who(enter(here)))))) - ;;julia ; a better, faster MATLAB - ;;kotlin ; a better, slicker Java(Script) - ;;latex ; writing papers in Emacs has never been so fun - ;;lean ; for folks with too much to prove - ;;ledger ; be audit you can be - ;;lua ; one-based indices? one-based indices - markdown ; writing docs for people to ignore - ;;nim ; python + lisp at the speed of c - ;;nix ; I hereby declare "nix geht mehr!" - ;;ocaml ; an objective camel - org ; organize your plain life in plain text - ;;php ; perl's insecure younger brother - ;;plantuml ; diagrams for confusing people more - ;;purescript ; javascript, but functional - ;;python ; beautiful is better than ugly - ;;qt ; the 'cutest' gui framework ever - (racket +lsp +xp) ; a DSL for DSLs - ;;raku ; the artist formerly known as perl6 - ;;rest ; Emacs as a REST client - ;;rst ; ReST in peace - ;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"} - (rust +lsp) ; Fe2O3.unwrap().unwrap().unwrap().unwrap() - ;;scala ; java, but good - ;;(scheme +guile) ; a fully conniving family of lisps - sh ; she sells {ba,z,fi}sh shells on the C xor - ;;sml - ;;solidity ; do you need a blockchain? No. - ;;swift ; who asked for emoji variables? - ;;terra ; Earth and Moon in alignment for performance. - ;;web ; the tubes - ;;yaml ; JSON, but readable - ;;zig ; C, but simpler - - :email - ;;(mu4e +org +gmail) - ;;notmuch - ;;(wanderlust +gmail) - - :app - ;;calendar - ;;emms - ;;everywhere ; *leave* Emacs!? You must be joking - ;;irc ; how neckbeards socialize - ;;(rss +org) ; emacs as an RSS reader - ;;twitter ; twitter client https://twitter.com/vnought - - :config - ;;literate - (default +bindings +smartparens)) diff --git a/.doom.d/packages.el b/.doom.d/packages.el deleted file mode 100644 index 07715bf..0000000 --- a/.doom.d/packages.el +++ /dev/null @@ -1,58 +0,0 @@ -;; -*- no-byte-compile: t; -*- -;;; $DOOMDIR/packages.el - -;; To install a package with Doom you must declare them here and run 'doom sync' -;; on the command line, then restart Emacs for the changes to take effect -- or -;; use 'M-x doom/reload'. - - -;; To install SOME-PACKAGE from MELPA, ELPA or emacsmirror: -;(package! some-package) - -;; To install a package directly from a remote git repo, you must specify a -;; `:recipe'. You'll find documentation on what `:recipe' accepts here: -;; https://github.com/raxod502/straight.el#the-recipe-format -;(package! another-package -; :recipe (:host github :repo "username/repo")) - -;; If the package you are trying to install does not contain a PACKAGENAME.el -;; file, or is located in a subdirectory of the repo, you'll need to specify -;; `:files' in the `:recipe': -;(package! this-package -; :recipe (:host github :repo "username/repo" -; :files ("some-file.el" "src/lisp/*.el"))) - -;; If you'd like to disable a package included with Doom, you can do so here -;; with the `:disable' property: -;(package! builtin-package :disable t) - -;; You can override the recipe of a built in package without having to specify -;; all the properties for `:recipe'. These will inherit the rest of its recipe -;; from Doom or MELPA/ELPA/Emacsmirror: -;(package! builtin-package :recipe (:nonrecursive t)) -;(package! builtin-package-2 :recipe (:repo "myfork/package")) - -;; Specify a `:branch' to install a package from a particular branch or tag. -;; This is required for some packages whose default branch isn't 'master' (which -;; our package manager can't deal with; see raxod502/straight.el#279) -;(package! builtin-package :recipe (:branch "develop")) - -;; Use `:pin' to specify a particular commit to install. -;(package! builtin-package :pin "1a2b3c4d5e") - - -;; Doom's packages are pinned to a specific commit and updated from release to -;; release. The `unpin!' macro allows you to unpin single packages... -;(unpin! pinned-package) -;; ...or multiple packages -;(unpin! pinned-package another-pinned-package) -;; ...Or *all* packages (NOT RECOMMENDED; will likely break things) -;(unpin! t) - -(package! avy) -(package! org-bullets) -(package! org-roam) -(package! restclient) -(package! know-your-http-well) -(package! company-restclient) -(package! dockerfile-mode) diff --git a/.emacs.vanilla/init.el b/.emacs.vanilla/init.el deleted file mode 100644 index 27d2033..0000000 --- a/.emacs.vanilla/init.el +++ /dev/null @@ -1,560 +0,0 @@ -;; General Settings -(setq inhibit-startup-screen t) -(setq vc-follow-symlinks t) -(setq backup-directory-alist `((".*" . "~/.emacs.d/saves")) - delete-old-versions t) -(setq auto-save-file-name-transforms `((".*" ,temporary-file-directory t))) - -(setq gc-cons-threshold 50000000) -(setq large-file-warning-threshold 100000000) -(global-auto-revert-mode t) -(fset 'yes-or-no-p 'y-or-n-p) -(prefer-coding-system 'utf-8) -(set-default-coding-systems 'utf-8) -(set-terminal-coding-system 'utf-8) -(set-keyboard-coding-system 'utf-8) -;; (define-key key-translation-map (kbd "ESC") (kbd "C-g")) - -(add-hook 'text-mode-hook (lambda () (setq fill-column 100) (turn-on-auto-fill))) - -(put 'narrow-to-region 'disabled nil) - -;; (require 'server) -;; (if (not (server-running-p)) (server-start)) -(add-hook 'prog-mode (lambda () (modify-syntax-entry ?_ "w"))) - -(setq default-directory "/home/joe") -(setq-default display-line-numbers 'relative) -(make-variable-buffer-local 'global-hl-line-mode) -(set-window-margins nil 0) -(setq-default right-fringe-width 10) -(setq scroll-margin 0 - scroll-conservatively 100000 - scroll-preserve-screen-position 1) - -(global-hl-line-mode +1) -(column-number-mode +1) - - -(dolist (mode '(dashboard-mode-hook org-mode-hook term-mode-hook eww-mode-hook vterm-mode-hook eshell-mode-hook dired-mode-hook shell-mode-hook magit-mode-hook)) - (add-hook mode (lambda () (display-line-numbers-mode 0)))) - -(set-face-attribute 'default nil :font "Fira Code Nerd Font" :height 105) - -;; Visuals -(scroll-bar-mode -1) -(tool-bar-mode -1) -(menu-bar-mode -1) -(tooltip-mode -1) - -;; Text Settings -(setq-default c-basic-offset 4) ;; This is annoying -(setq-default indent-tabs-mode nil) -(setq-default tab-width 4) -(setq indent-line-function 'insert-tab) -(set-default 'truncate-lines t) -(set-default 'truncate-partial-width-windows nil) - -(setq-default line-spacing 5) -(add-hook 'dashboard-mode-hook (lambda () (setq-local line-spacing 12))) - -(add-hook 'before-save-hook 'whitespace-cleanup) - -;; (setq visible-bell nil ring-bell-function 'joe/flash-mode-line) -;; (defun joe/flash-mode-line () -;; (invert-face 'mode-line) -;; (run-with-timer 0.1 nil #'invert-face 'mode-line)) - -;; (set-face-foreground 'minibuffer-prompt nil) - -(defadvice text-scale-increase (around all-buffers (arg) activate) - (dolist (buffer (buffer-list)) - (with-current-buffer buffer - ad-do-it))) - -(defun joe/edit-init() - "Edit 'init.el' quickly" - (interactive) - (find-file user-init-file)) - -(defun joe/show-full-path () - "Show the full path file name in the minibuffer." - (interactive) - (message (buffer-file-name))) - -(defun joe/toggle-buffer-mode () - "Toggles the current major mode between actual and fundamental mode. This will act as a way to easily get -all of the evil keybindings in buffers like magit, without compromises." - (interactive) - (let ((previous-mode major-mode)) - (unless (boundp 'joe/buffer-previous-mode) - (setq-local joe/buffer-previous-mode major-mode)) - (if (equal major-mode 'fundamental-mode) - (funcall joe/buffer-previous-mode) - (progn - (fundamental-mode) - (setq-local joe/buffer-previous-mode previous-mode))))) - -(defun joe/revert-buffer-no-confirm () - "Revert buffer without confirmation." - (interactive) - (revert-buffer :ignore-auto :noconfirm)) - -;; Packages -(require 'package) -(setq package-archives - '(("org" . "http://orgmode.org/elpa/") - ("gnu" . "http://elpa.gnu.org/packages/") - ("melpa" . "https://melpa.org/packages/"))) - ;; ("marmalade" . "http://marmalade-repo.org/packages/"))) - -(package-initialize) - -;; Why we use this line -;; https://www.reddit.com/r/emacs/comments/1rdstn/set_packageenableatstartup_to_nil_for_slightly/ -(setq package-enable-at-startup nil) - -(custom-set-variables - ;; custom-set-variables was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(ansi-color-faces-vector - [default default default italic underline success warning error]) - '(custom-safe-themes - '("aaa4c36ce00e572784d424554dcc9641c82d1155370770e231e10c649b59a074" default)) - '(flycheck-color-mode-line-face-to-color 'mode-line-buffer-id) - '(frame-background-mode 'dark) - '(ignored-local-variable-values - '((eval add-hook 'after-save-hook - '(lambda nil - (org-babel-tangle)) - nil t))) - '(org-agenda-files '("~/todo.org")) - '(package-selected-packages - '(macrostep org-kanban embark-consult embark olivetti vertico-posframe orderless vertico eglot-fsharp consult-eglot eglot nano-modeline mini-modeline pdf-tools consult all-the-icons-completion kind-icon mini-modeline shelldon pcomplete-extension corfu-doc esh-autosuggest fish-completion cape corfu highlight-quoted dirvish ranger magit multi-vterm evil-collection smartparens vterm all-the-icons org-bullets fsharp-mode fish-mode find-file-in-project helpful ahk-mode rainbow-delimiters doom-themes marginalia avy evil-commentary evil-surround undo-tree which-key dashboard)) - '(safe-local-variable-values - '((eval add-hook 'after-save-hook - '(lambda nil - (org-babel-tangle)) - nil t))) - '(window-divider-mode nil)) -(custom-set-faces - ;; custom-set-faces was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(magit-diff-hunk-heading-highlight ((t (:extend t :background "cornflower blue" :foreground "#212337" :weight bold))))) - -(dolist (p package-selected-packages) - (when (not (package-installed-p p)) - (package-install p))) - -(setq custom-safe-themes t) -(load-theme 'doom-vibrant t) -;; (load-theme 'doom-flatwhite t) - -(setq evil-want-keybinding nil) -(setq evil-undo-system 'undo-tree) -(setq evil-want-C-u-scroll t) -(setq evil-want-Y-yank-to-eol t) - -(require 'highlight-quoted) -(add-hook 'emacs-lisp-mode-hook 'highlight-quoted-mode) - -(global-undo-tree-mode) -(setq undo-tree-visualizer-diff t) -(setq undo-tree-history-directory-alist '(("." . "~/.emacs.vanilla/undo"))) -(require 'evil) -(evil-mode) -(require 'evil-collection) -(evil-collection-init) - -(save-place-mode t) -(setq save-place-file "~/.emacs.vanilla/places") -(setq org-edit-src-content-indentation 0) -(require 'dired) -(require 'dirvish) -(setq delete-by-moving-to-trash t) -(setq dired-dwim-target t) -(setq dirvish-override-dired-mode t) -(setq dirvish-preview-dispatchers (cl-substitute 'pdf-preface 'pdf dirvish-preview-dispatchers)) -(dirvish-define-preview exa (file) - "Use `exa' to generate directory preview." - :require ("exa") ; tell Dirvish to check if we have the executable - (when (file-directory-p file) ; we only interest in directories here - `(shell . ("exa" "--color=always" "-al" "--group-directories-first" ,file)))) ; use the command output as preview -(setq dired-listing-switches "-l --almost-all --human-readable --time-style=long-iso --group-directories-first --no-group") -(add-to-list 'dirvish-preview-dispatchers 'exa) -(evil-define-key 'normal dirvish-mode-map (kbd "q") 'dirvish-quit) -(evil-define-key 'normal 'global (kbd "-") 'dirvish) - -(defun joe/dired-open-file () - "In dired, open the file named on this line." - (interactive) - (let* ((file (dired-get-filename nil t))) - (call-process "xdg-open" nil 0 nil file))) - -(defun joe/bookmark-set-and-save () - "Save the current buffer as a bookmark" - (interactive) - (bookmark-set) - (bookmark-save)) - -(defun lsp-related-stuff () - (evil-define-key 'normal 'global (kbd "M-s") 'consult-imenu) - (evil-define-key 'normal 'global (kbd "M-i") 'eldoc) - (evil-define-key 'normal 'global (kbd "M-e") 'flymake-goto-next-error) - (evil-define-key 'normal 'global (kbd "M-E") 'flymake-goto-prev-error)) - -(add-hook 'prog-mode-hook 'lsp-related-stuff) - -(require 'dashboard) -(dashboard-setup-startup-hook) -(setq initial-buffer-choice (lambda () (get-buffer-create "*dashboard*"))) -(setq dashboard-startup-banner 'logo) -(setq dashboard-center-content t) -(setq dashboard-set-file-icons t) -(setq dashboard-set-heading-icons t) - -(require 'which-key) -(setq which-key-idle-delay 0.3) -(which-key-mode) - -(which-key-add-keymap-based-replacements evil-normal-state-map - "f" '("Files") - "b" '("Buffers") - "d" '("Dired") - "g" '("Git") - "t" '("Tabs") - "p" '("Packages") - "s" '("Shell (vterm)") - "h" '("Help")) - -(evil-set-leader 'normal (kbd "SPC")) - -;; TODO: We need 3 bindings; 1.) close buffer 2.) close window 3.) close buffer and window -;; To disable a keybinding just bind it to nil -(evil-define-key 'normal 'global (kbd "w") 'save-buffer) -(evil-define-key 'normal 'global (kbd "q") 'kill-buffer-and-window) -(evil-define-key 'normal 'global (kbd "h") 'help-command) -(evil-define-key 'normal 'global (kbd "k") 'kill-this-buffer) -(evil-define-key 'normal 'global (kbd "hf") 'helpful-callable) -(evil-define-key 'normal 'global (kbd "hv") 'helpful-variable) -(evil-define-key 'normal 'global (kbd "hk") 'helpful-key) -(evil-define-key 'normal 'global (kbd "ho") 'helpful-symbol) -(evil-define-key 'normal 'global (kbd "hg") 'helpful-at-point) -(evil-define-key 'normal 'global (kbd "fb") 'bookmark-jump) -(evil-define-key 'normal 'global (kbd "fr") 'consult-recent-file) -(evil-define-key 'normal 'global (kbd "ff") 'ffip) -(evil-define-key 'normal 'global (kbd "fi") 'joe/edit-init) -(evil-define-key 'normal 'global (kbd "bl") 'mode-line-other-buffer) -(evil-define-key 'normal 'global (kbd "bb") 'switch-to-buffer) -(evil-define-key 'normal 'global (kbd "bi") 'ibuffer) -(evil-define-key 'normal 'global (kbd "bm") 'joe/toggle-buffer-mode) -(evil-define-key 'normal 'global (kbd "br") 'joe/revert-buffer-no-confirm) -(evil-define-key 'normal 'global (kbd "bk") 'kill-this-buffer) -(evil-define-key 'normal 'global (kbd "gg") 'magit-status) -(evil-define-key 'normal 'global (kbd "gc") 'magit-clone) -(evil-define-key 'normal 'global (kbd "pi") 'package-install) -(evil-define-key 'normal 'global (kbd "pd") 'package-delete) -(evil-define-key 'normal 'global (kbd "pf") 'package-refresh-contents) -(evil-define-key 'normal 'global (kbd "pl") 'package-list-packages) -(evil-define-key 'normal 'global (kbd "pr") 'package-reinstall) -(evil-define-key 'normal 'global (kbd "tt") 'multi-vterm) -(evil-define-key 'normal 'global (kbd "tn") 'multi-vterm-next) -(evil-define-key 'normal 'global (kbd "tv") 'vterm-other-window) -(evil-define-key 'normal 'global (kbd "Ba") 'joe/bookmark-set-and-save) -(evil-define-key 'normal 'global (kbd "Bd") 'bookmark-delete) -(evil-define-key 'normal 'global (kbd "cr") 'joe/compile-run) -(evil-define-key 'normal 'global (kbd "cc") 'joe/compile-comp) -(evil-define-key 'normal 'global (kbd "ct") 'consult-theme) - -(evil-define-key 'normal 'global (kbd "C-h") 'evil-window-left) -(evil-define-key 'normal 'global (kbd "C-j") 'evil-window-down) -(evil-define-key 'normal 'global (kbd "C-k") 'evil-window-up) -(evil-define-key 'normal 'global (kbd "C-l") 'evil-window-right) -(evil-define-key 'normal 'global (kbd "M-h") 'tab-previous) -(evil-define-key 'normal 'global (kbd "M-l") 'tab-next) -(evil-define-key 'normal 'global (kbd "tn") 'tab-new) -(evil-define-key 'normal 'global (kbd "tc") 'tab-close) -;; (evil-define-key 'normal 'global (kbd "M-h") 'tab-line-switch-to-prev-tab) -;; (evil-define-key 'normal 'global (kbd "M-l") 'tab-line-switch-to-next-tab) - -(defvar global-evil-leader-map (make-sparse-keymap)) -(evil-define-key 'normal 'global-evil-leader-map (kbd "SPC") 'evil-send-leader) - -(define-minor-mode global-evil-leader-mode - "Minor mode to make evil leader global" - :global t - :keymap global-evil-leader-map) -(global-evil-leader-mode) - -;; (require 'mini-modeline) -;; (mini-modeline-mode 1) -(require 'nano-modeline) -(nano-modeline-mode 1) - -(require 'evil-surround) -(global-evil-surround-mode 1) - -(require 'evil-snipe) -(evil-snipe-override-mode 1) - -(require 'evil-commentary) -(evil-commentary-mode) - -(require 'avy) -(setq avy-keys '(?a ?s ?d ?f ?w ?e ?r ?u ?i ?o ?h ?j ?k ?l ?x ?c ?m)) -(setq avy-all-windows t) -(setq avy-background t) -(defvar avy-map (make-sparse-keymap)) - -(define-key evil-normal-state-map (kbd ",") avy-map) -(define-key avy-map "b" #'avy-goto-word-0-above) -(define-key avy-map "w" #'avy-goto-word-0-below) -(define-key avy-map "c" #'avy-goto-char-timer) - -(require 'org-bullets) -(defun joe/org-mode-setup () - (org-bullets-mode) - (org-indent-mode)) -(add-hook 'org-mode-hook 'joe/org-mode-setup) -(setq org-todo-keywords '((sequence "TODO" "IN-PROGRESS" "|" "DONE" "BACKLOG"))) -(require 'org-tempo) -(add-to-list 'org-structure-template-alist '("el" . "src emacs-lisp")) -(setq org-edit-src-content-indentation 0) - -(require 'olivetti) -(setq olivetti-minimum-body-width 120) - -;; VEMCO - -(require 'vertico) -(vertico-mode) -(vertico-multiform-mode) -(define-key vertico-map "\M-G" #'vertico-multiform-mode) -(require 'vertico-posframe) -(setq vertico-posframe-min-width 150) -(setq vertico-posframe-min-height 30) -(vertico-posframe-mode) -(require 'embark) -(require 'embark-consult) -(define-key vertico-map "\M-e" #'embark-act) - -(require 'marginalia) -(marginalia-mode t) -(setq marginalia-annotators - '(marginalia-annotators-heavy marginalia-annotators-light nil)) -(require 'orderless) -(setq completion-styles '(orderless basic) - completion-category-overrides '((file (styles basic partial-completion)))) -(require 'savehist) -(savehist-mode) - -(require 'recentf) -(setq recentf-max-saved-items 1000) -(setq recentf-max-menu-items 500) -(recentf-mode t) -(run-at-time t (* 5 60) 'recentf-save-list) - -(defun recentf-push-buffers-in-frame () - (walk-windows - (lambda (win) - (let ((bfn (buffer-local-value 'buffer-file-name (window-buffer win)))) - (and bfn (recentf-add-file bfn)))))) -(add-to-list 'window-configuration-change-hook 'recentf-push-buffers-in-frame) - -(defun recentf-add-dired-directory () - (when (and (stringp dired-directory) - (equal "" (file-name-nondirectory dired-directory))) - (recentf-add-file dired-directory))) -(add-hook 'dired-mode-hook 'recentf-add-dired-directory) - -;; Magic advice to rename entries in recentf when moving files in -;; dired. -(defun rjs/recentf-rename-notify (oldname newname &rest args) - (if (file-directory-p newname) - (rjs/recentf-rename-directory oldname newname) - (rjs/recentf-rename-file oldname newname))) - -(defun rjs/recentf-rename-file (oldname newname) - (setq recentf-list - (mapcar (lambda (name) - (if (string-equal name oldname) - newname - name)) - recentf-list))) - -(defun rjs/recentf-rename-directory (oldname newname) - ;; oldname, newname and all entries of recentf-list should already - ;; be absolute and normalised so I think this can just test whether - ;; oldname is a prefix of the element. - (setq recentf-list - (mapcar (lambda (name) - (if (string-prefix-p oldname name) - (concat newname (substring name (length oldname))) - name)) - recentf-list))) - -;; (advice-add 'dired-rename-file :after #'rjs/recentf-rename-notify) - -(require 'smartparens) -(smartparens-global-mode +1) -(show-paren-mode +1) -(sp-pair "'" nil :actions :rem) - -(require 'vterm) -(setq vterm-shell "/bin/fish") -(setq vterm-timer-delay 0.01) -(setq vterm-buffer-name-string "VTerm - %s") -(setq vterm-max-scrollback 100000) - -(add-hook 'vterm-mode-hook - (lambda () (setq global-hl-line-mode nil)) - (evil-define-key 'normal vterm-mode-map (kbd "(") 'vterm-previous-prompt) - (evil-define-key 'normal vterm-mode-map (kbd ")") 'vterm-next-prompt)) - -(require 'find-file-in-project) -(setq ffip-use-rust-fd 't) - -(require 'evil-goggles) -(evil-goggles-mode) -(setq evil-goggles-duration 0.075) -(setq evil-goggles-pulse t) -(setq evil-goggles-async-duration 0.55) - -(modify-all-frames-parameters - '((right-divider-width . 5) - (internal-border-width . 10))) -;; (dolist (face '(window-divider -;; window-divider-first-pixel -;; window-divider-last-pixel)) -;; (face-spec-reset-face face) -;; (set-face-foreground face "#333")) -;; (set-face-background 'fringe (face-attribute 'default :background)) - -(require 'corfu) -(global-corfu-mode) -(setq corfu-auto t) -(setq corfu-scroll-margin 10) -(setq corfu-preselect-first nil) -(setq corfu-preview-current t) -(setq corfu-echo-documentation t) -(setq corfu-quit-no-match t) -(setq corfu-auto-prefix 1) -(setq corfu-auto-delay 0) -(setq corfu-max-width 100 - corfu-min-width 50) -(require 'kind-icon) -(setq kind-icon-default-face 'corfu-default) -(add-to-list 'corfu-margin-formatters #'kind-icon-margin-formatter) - -(require 'all-the-icons-completion) -(all-the-icons-completion-mode) -(add-hook 'marginalia-mode-hook #'all-the-icons-completion-marginalia-setup) - -(require 'ligature) -(global-ligature-mode) -(ligature-set-ligatures 'prog-mode '("|||>" "<|||" "<==>" "" "---" "-<<" - "<~~" "<~>" "<*>" "<||" "<|>" "<$>" "<==" "<=>" "<=<" "<->" - "<--" "<-<" "<<=" "<<-" "<<<" "<+>" "" "###" "#_(" "..<" - "..." "+++" "/==" "///" "_|_" "www" "&&" "^=" "~~" "~@" "~=" - "~>" "~-" "**" "*>" "*/" "||" "|}" "|]" "|=" "|>" "|-" "{|" - "[|" "]#" "::" ":=" ":>" ":<" "$>" "==" "=>" "!=" "!!" ">:" - ">=" ">>" ">-" "-~" "-|" "->" "--" "-<" "<~" "<*" "<|" "<:" - "<$" "<=" "<>" "<-" "<<" "<+" "" "++" "?:" - "?=" "?." "??" ";;" "/*" "/=" "/>" "//" "__" "~~" "(*" "*)" - "\\\\" "://")) - -(add-to-list 'completion-at-point-functions #'cape-file) - -(define-key corfu-map (kbd "M-d") #'corfu-doc-toggle) -(define-key corfu-map (kbd "M-p") #'corfu-doc-scroll-down) -(define-key corfu-map (kbd "M-n") #'corfu-doc-scroll-up) - -(require 'lsp) -(require 'consult) -;; (require 'consult-lsp) -;; (require 'dap-mode) -;; (require 'dap-netcore) -;; (require 'dap-gdb-lldb) -;; (setq dap-print-io t) - -(require 'eglot) -(require 'eglot-fsharp) -(require 'consult-eglot) - -(defun joe/compile-run () (interactive) (compile "make run")) -(defun joe/compile-comp () (interactive) (compile "make")) - -;; (require 'tree-sitter) -;; (require 'tree-sitter-langs) -;; (require 'evil-textobj-tree-sitter) -;; (define-key evil-outer-text-objects-map "f" (evil-textobj-tree-sitter-get-textobj "function.outer")) -;; (define-key evil-inner-text-objects-map "f" (evil-textobj-tree-sitter-get-textobj "function.inner")) -;; (define-key evil-normal-state-map (kbd "]f") (lambda () -;; (interactive) -;; (evil-textobj-tree-sitter-goto-textobj "function.outer"))) -;; (define-key evil-normal-state-map (kbd "[f") (lambda () -;; (interactive) -;; (evil-textobj-tree-sitter-goto-textobj "function.outer" t))) - -(setq display-buffer-alist - `((,(rx bos - (| (literal "*compilation") - (literal "*shell") - (literal "*eshell") - (literal "*Compile-Log"))) - display-buffer-in-direction - (window . ;reference window - t) ;either `t' (selected window), `main', `root', or an arbitrary valid window - (direction . - below) ;`below' (window) or `bottom' (of frame) - ;absolute (10) or relative (0.3) - (window-height . 0.33)))) - -;; (dap-register-debug-template "NetCoreDdg Launch (4)" -;; (list :type "coreclr" -;; :request "launch" -;; :mode "launch" -;; :name "NetCoreDbg Launch" -;; :cwd nil -;; :dap-compilation "dotnet build" -;; :program "${workspaceFolder}/bin/Debug/net6.0/${workspaceFolderBasename}")) -;; (dap-register-debug-provider -;; "coreclr" -;; 'dap-netcore--populate-args) -;; (add-to-list 'load-path (expand-file-name "~/.emacs.vanilla/elpa/aweshell/")) -;; (require 'aweshell) -;; (require 'fish-completion) -;; (global-fish-completion-mode) -;; (setq evil-collection-company-use-tng nil) - -;; (require 'slime) -;; (setq inferior-lisp-program "/usr/bin/sbcl") - -;; (add-hook 'slime-mode-hook -;; (lambda () -;; ;; (setq global-hl-line-mode nil) -;; (evil-define-key 'normal slime-repl-mode-map (kbd "(") 'slime-repl-previous-prompt) -;; (evil-define-key 'normal slime-repl-mode-map (kbd ")") 'slime-repl-next-prompt) -;; (evil-define-key 'normal slime-repl-mode-map (kbd "C-j") 'evil-window-down) -;; (evil-define-key 'normal slime-repl-mode-map (kbd "C-k") 'evil-window-up))) -;; (setq slime-contribs '(slime-fancy slime-company)) - -;; (require 'eglot) -;; (require 'eglot-fsharp) -;; (require 'consult-eglot) - -;; TODO: Packages to check out -;; expand-region -;; projectile -;; Hydra (we can use it for some of the ideas I've had about repeating and arranging stuff) -;; CTRLF (figure out if it does anything interesting) -;; exec-path-from-shell -;; markdown-preview-mode -;; markdown-mode diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..cbfe0b0 --- /dev/null +++ b/.vimrc @@ -0,0 +1,551 @@ +if &shell =~# 'fish$' + set shell=bash +endif +set nocompatible +set runtimepath+=~/.vim/bundle/neobundle.vim/ +filetype off +call neobundle#begin(expand('~/.vim/bundle/')) + +" Utilities +NeoBundleFetch 'Shougo/neobundle.vim' +NeoBundle 'tpope/vim-dispatch' +NeoBundle 'Shougo/vimproc.vim' +NeoBundle 'Shougo/neocomplete' +NeoBundle 'Shougo/neosnippet' +NeoBundle 'Shougo/neosnippet-snippets' +NeoBundle 'scrooloose/nerdtree' +NeoBundle 'scrooloose/syntastic' +NeoBundle 'mhinz/vim-startify' +NeoBundle 'junegunn/vim-easy-align' +NeoBundle 'kien/ctrlp.vim' +NeoBundle 'sgur/ctrlp-extensions.vim' +NeoBundle 'Lokaltog/vim-easymotion' +NeoBundle 'jrhorn424/vim-multiple-cursors' +NeoBundle 'rking/ag.vim' +NeoBundle 'sjl/gundo.vim' +NeoBundle 'tpope/vim-fugitive' + +" Enhancements +NeoBundle 'tpope/vim-surround' +NeoBundle 'tpope/vim-repeat' +NeoBundle 'tpope/vim-commentary' +NeoBundle 'tpope/vim-eunuch' +NeoBundle 'dhruvasagar/vim-vinegar' +NeoBundle 'terryma/vim-smooth-scroll' +NeoBundle 'Raimondi/delimitMate' +NeoBundle 'bling/vim-airline' +NeoBundle 'bkad/CamelCaseMotion' +NeoBundle 'vim-scripts/Parameter-Text-Objects' +NeoBundle 'osyo-manga/vim-over' +NeoBundle 'tmhedberg/matchit' +NeoBundle 'matze/vim-move' +NeoBundle 'xolox/vim-misc' +NeoBundle 'xolox/vim-colorscheme-switcher' +NeoBundle 'haya14busa/incsearch.vim' +NeoBundle 'rhysd/clever-f.vim' +NeoBundle 'christoomey/vim-tmux-navigator' + +" Language +NeoBundle 'Rip-Rip/clang_complete' +NeoBundle 'dag/vim-fish' +NeoBundle 'marijnh/tern_for_vim' +NeoBundle 'jelera/vim-javascript-syntax' +NeoBundle 'hail2u/vim-css3-syntax' +NeoBundle 'groenewege/vim-less' +NeoBundle 'othree/javascript-libraries-syntax.vim' +NeoBundle 'OmniSharp/omnisharp-vim' +NeoBundle 'xolox/vim-lua-ftplugin' +NeoBundle 'tclem/vim-arduino' +" NeoBundle 'jplaut/vim-arduino-ino/' + +" Web +NeoBundle 'mattn/emmet-vim' +NeoBundle 'ap/vim-css-color' +NeoBundle 'KabbAmine/vCoolor.vim' +NeoBundle 'Valloric/MatchTagAlways' +NeoBundle 'vim-scripts/closetag.vim' +NeoBundle 'jaxbot/browserlink.vim' + +call neobundle#end() + +filetype plugin indent on +set history=2000 +set ruler +set laststatus=2 +set formatoptions=t +set relativenumber +set noshowmatch +set splitbelow +set splitright +set hidden +set wildmenu +set wildmode=longest,full +set backspace=eol,start,indent +set novisualbell +set noerrorbells +let loaded_matchparen=0 +set clipboard=unnamed +set tabstop=4 +set shiftwidth=4 +set expandtab +set sessionoptions-= +set sessionoptions-=buffers +set sessionoptions-=blank +set guioptions-=r +set guioptions-=L +set guioptions-=e +set mouse=a +set foldmethod=syntax +set foldcolumn=1 +set nrformats+=alpha +set nowrap + +let mapleader = "\" +" Macros +" To List +noremap mtl f[xxbi<ea>bbiListb +" To Array +noremap mta f>Bdiwxf>xi[]B +" Replace Word +nnoremap rw :%s/\<\>/ +" Clean up Interface +nnoremap mi ddJO4jdd2kcc +" Extract Definition +nnoremap med "vyiwmv^/\u:nohlsearchy`v"ty`vov = new t();^v$hdV"ldk`v +" Delete Outer Function +nnoremap mdaf viBdVkpmtgv<}dd`t +" Delete Surrounding Function +vnoremap mdif "tdxXvBdt +" Add Constructor +nnoremap mac "tyiwjopublic t() {}iO// +" Create Yield from IEnumerator +nnoremap mye "tyiwmtowhile (t.MoveNext()) yield return t.Current;`t +" Create Yield from Task +nnoremap myt "tyiwmtowhile (!t.IsCompleted) yield return null;`t +" Add Curly Braces to inline if +nnoremap mif ^f(%ls {lio}kw +" Surround with if statement +vnoremap mif dOif () {}ikVp=iBk^f(a +" Add ContextMenu to Function +nnoremap mcm ^f(hyiwO[ContextMenu(""")]j^f(b +" Add this.varName = varName; +nnoremap mthis mmyiwothis.* = *;`m +" Extra Line +" alt + o +noremap +noremap / :nohlsearch +nnoremap D d$ +nnoremap Y y$ +nnoremap vv ^v$h +noremap \ q +nnoremap vim :tabe $MYVIMRC +noremap sr :w:so % +nnoremap ' ` +nnoremap ` ' +noremap $ g_ +nnoremap :w +noremap = mt=i}`t +" Buffers +nnoremap q :bw +nnoremap bb :b# +nnoremap bd :b#:bd# +" Windows +nnoremap wq :windo bw +noremap 10< +noremap 10> +noremap 4+ +noremap 4- +" MacVim has different alt codes so gotta check if gui_running, there are the codes in order +" alt + ; +" alt + o & alt + O +" alt + h & alt + l +" if has("gui_running") +" inoremap » A; +" nnoremap » A; +" nnoremap ï ok +" nnoremap Ï Oj +" noremap è gT +" noremap ì gt +" noremap È :tabmove -1 +" nnoremap Ì :tabmove +1 +" else + inoremap … A; + nnoremap … A;; + nnoremap ø ok + nnoremap Ø Oj + noremap ˙ gT + noremap ¬ gt + noremap Ó :tabmove -1 + nnoremap Ò :tabmove +1 + " Map vim-move in terminal + vmap ∆ MoveBlockDown + vmap ˚ MoveBlockUp + nmap ∆ MoveLineDown + nmap ˚ MoveLineUp +" endif + +" open Help in vertical window +if (!exists(":H")) + command -nargs=* -complete=help H vertical belowright help +endif + +augroup insert_mode_stuff + autocmd! + au InsertEnter * set cursorline + au InsertLeave * set nocursorline + autocmd BufNewFile,BufRead * setlocal formatoptions=t + autocmd BufNewFile,BufRead * set colorcolumn=80 +augroup END + +command! CDC cd %:p:h + +" Show syntax definition where cursor is placed +func! SynStack() + if !exists("*synstack") + return + endif + echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")') +endfunc +nnoremap syn :call SynStack() + +" Toggle booleans +func! ToggleBool() + let l:word = expand("") + if l:word ==? "true" + let l:word = "false" + elseif l:word ==? "false" + let l:word = "true" + elseif l:word ==? "public" + let l:word = "protected" + elseif l:word ==? "protected" + let l:word = "private" + elseif l:word ==? "private" + let l:word = "public" + else + return "\" + endif + return "ciw" . l:word . "\" +endfunc +nnoremap ToggleBool() +command! Retab set ts=2 noet | retab! | set et ts=4 | retab + +command! DeleteBadWhiteSpace %s/\s\+$//e | %s/^\s\+$//e | %s/\r//e +command! Reformat %s/\(\\)(/\1 (/e | g/) {\$/normal $i/e + +" Searching +set incsearch +set ignorecase +set smartcase +set hlsearch +nohlsearch + +" Appearance +syntax on +set number +set t_Co=256 +set linespace=2 +if has("gui_running") + set guifont=Andale\ Mono:h12 + colorscheme jellybeans + " colorscheme autumnleaf +else + " colorscheme solarized + colorscheme jellybeans + " Solarized + " set background=dark +endif + +func! SetFont(size) + exec 'set guifont=Andale\ Mono:h' . a:size +endfun +command! -nargs=1 FontSize :call SetFont() + +" DelimitMate +let g:delimitMate_expand_cr=1 +let g:delitMate_expand_space=0 + +" CameCase Text Object +map q CamelCaseMotion_w +map Q CamelCaseMotion_b +omap iq CamelCaseMotion_iw +xmap iq CamelCaseMotion_iw + +" Parameter Text Object +let g:no_parameter_object_maps = 1 +vmap ia ParameterObjectI +omap ia ParameterObjectI +vmap aa ParameterObjectA +omap aa ParameterObjectA + +" Easy Motion +let g:EasyMotion_do_mapping=0 +let g:EasyMotion_keys = 'asdfjkleirwuo' +nmap , (easymotion-prefix) +nmap S (easymotion-sl2) +nmap ,f (easymotion-f) +nmap ,F (easymotion-F) +nmap ,t (easymotion-t) +nmap ,T (easymotion-T) +nmap ,w (easymotion-w) +nmap ,W (easymotion-W) +nmap ,b (easymotion-b) +nmap ,B (easymotion-B) +nmap ,e (easymotion-e) +nmap ,E (easymotion-E) +nmap ,ge (easymotion-ge) +nmap ,gE (easymotion-gE) +nmap ,j (easymotion-j) +nmap ,k (easymotion-k) +vmap ,j (easymotion-j) +vmap ,k (easymotion-k) +nmap ,n (easymotion-n) +nmap ,N (easymotion-N) +nmap ,s (easymotion-s2) +nmap ,/ (easymotion-sn) + +" Clever-F +let g:clever_f_across_no_line=1 + +" Incsearch.vim +map / (incsearch-forward) +map ? (incsearch-backward) +map g/ (incsearch-stay) +let g:incsearch#consistent_n_direction = 1 +let g:incsearch#emacs_like_keymap = 1 + +" Javascript Libraries +let g:used_javascript_libs = 'jquery,angularjs,angularui,sugar' + +" Gundo +noremap g :GundoToggle + +" Easy Align +vmap (EasyAlign) +nmap e (EasyAlign) + +" Go to URLs +vnoremap du "uy:silent !open http://docs.unity3d.com/Documentation/ScriptReference/u.html +nnoremap dg :call GoToUrl("google") +nnoremap du :call GoToUrl("unity") +nnoremap dm :call GoToUrl("msdn") +fun! GoToUrl(options) + let keyword = expand("") + if (a:options == "google") + let url = "http://www.google.com/search?q=" + elseif (a:options == "unity") + let url = "http://docs.unity3d.com/Documentation/ScriptReference/30_search.html?q=" + elseif (a:options == "msdn") + let url = "http://social.msdn.microsoft.com/Search/en-US?query=" + endif + + exec '!open ' . url . keyword +endfun + +" Scrolling Speed +noremap :call smooth_scroll#up(&scroll, 10, 3) +noremap :call smooth_scroll#down(&scroll, 10, 3) +noremap :call smooth_scroll#up(&scroll*2, 10, 4) +noremap :call smooth_scroll#down(&scroll*2, 10, 4) +noremap :call smooth_scroll#up(&scroll/5, 15, 1) +noremap :call smooth_scroll#down(&scroll/5, 15, 1) + +" Startify +let g:startify_session_dir = "~/.vim/sessions/" +let g:startify_list_order = [ ['SESSIONS'], 'sessions', ['FILES'], 'files', ['BOOKMARKS'], 'bookmarks', ] +let g:startify_bookmarks = ["~/.vim/", "ftp://ftp.ferano.io//", "~/Documents/Work/", "~/Documents/Work/jflib/Assets/jflib/", "~/Documents/Work/jamtok/project/Assets/", "~/Documents/Work/poptok/Assets/Scripts"] +let g:startify_files_number = 7 +let g:startify_session_persistence = 1 +let g:startify_enable_special = 0 +" Load custom header +:source ~/.vim/startify_header.vim + +" NERDTree +let NERDTreeIgnore=['.meta$[[file]]'] + +" Emmet +let g:user_emmet_leader_key='' +let g:user_emmet_install_global = 0 +augroup emmet_stuff + autocmd FileType html,css EmmetInstall +augroup END + +" MatchTagAlways +highlight MatchParen ctermfg=black ctermbg=lightgreen guifg=#002b36 guibg=#b58900 + +" Ag.vim +let g:agformat="%f:%l:%m" +noremap a :Ag! +let g:agprg="ag --column --smart-case" + +" C Stuff +" augroup c_bindings +" autocmd! +" au FileType c noremap ) ?{w99[{:nohlsearch +" au FileType c noremap ( j0?{w99[{%/{:nohlsearch +" augroup END + +" Arduino +augroup arduino_files + autocmd! + au BufRead,BufNewFile *.pde set filetype=arduino + au BufRead,BufNewFile *.ino set filetype=arduino +augroup END +" let g:vim_arduino_library_path = "/Applications/Arduino.app" +" let g:vim_arduino_serial_port = "/dev/tty.usbmodem1d1131" + +" Lua Stuff +let g:lua_check_syntax = 0 +let g:lua_complete_omni = 1 + +" Compile and run current C file +nnoremap cc :!gcc -Wall -o %:r % +nnoremap cr :!gcc -Wall -o %:r % && ./%:r + +let g:clang_library_path="/Users/josephferano/src/clang+llvm-3.3-x86_64-apple-darwin12/lib/libclang.dylib" + +" CtrlP +set wildignore+=*/tmp/*,*/Temp/*,*/Library/*,*/Builds/*,*.png,*.jpg,*.asset,*.unity,*.csproj,*.gif,*.so,*.swp,*.zip,*.meta,*.ttc,*.userprefs,*.mat,*.mp3,*.ogg,*.wav,*.bmp,*.anim,*.TTF,tags +let g:ctrlp_custom_ignore = { 'dir': '\v[\/](obj|bin|node_modules|bower_components)|(\.(swp|ico|git|svn))$', 'file': '\v\.(exe|so|dll|meta|prefab|unity3d|sln)$', 'link': 'some_bad_symbolic_links', } +let g:ctrlp_map = 'p' +noremap :CtrlP +noremap m :CtrlPMRU +noremap b :CtrlPBuffer +noremap t :CtrlPBufTag +noremap l :CtrlPLine +noremap y :CtrlPYankring +noremap c :CtrlPCmdline +let g:ctrlp_match_window="ttb,min:1,max:15,results:15" +let g:ctrlp_session_dir=".vim/sessions/" +let g:ctrlp_by_filename = 1 +let g:ctrlp_working_path_mode = '' +let g:ctrlp_buffer_func = { 'enter': 'CtrlpMaps' } + +func! CtrlpMaps() + nnoremap :call DeleteBuffer() + " nnoremap :call QuickLook() +endfunc + +func! s:QuickLook() + let line = getline('.') + let l:path = getcwd() . substitute(line, '> ', '/', "") + call system("qlmanage -p 2>/dev/null '" . path . "'") +endfunc + +func! s:DeleteBuffer() + let line = getline('.') + let bufid = line =~ '\[\d\+\*No Name\]$' ? str2nr(matchstr(line, '\d\+')) + \ : fnamemodify(line[2:], ':p') + exec "bd" bufid + exec "norm \" +endfunc + +" Syntastic +let g:syntastic_cs_checkers = ['syntax'] + +" OmniSharp +augroup omnisharp_complete + autocmd! + autocmd FileType cs set commentstring=//\ %s + autocmd FileType cs setlocal omnifunc=OmniSharp#Complete + autocmd FileType cs nnoremap og :OmniSharpGotoDefinition + autocmd FileType cs nnoremap ofi :OmniSharpFindImplementations + autocmd FileType cs nnoremap ofu :OmniSharpFindUsages + autocmd FileType cs nnoremap odc :OmniSharpDocumentation + autocmd FileType cs nnoremap oft :OmniSharpFindType + autocmd FileType cs nnoremap ofs :OmniSharpFindSymbol + autocmd FileType cs nnoremap ofm :OmniSharpFindMembers + autocmd FileType cs nnoremap oht :OmniSharpHighlightTypes + autocmd FileType cs nnoremap orl :OmniSharpReloadSolution + autocmd FileType cs nnoremap oso :OmniSharpStopServer + autocmd FileType cs nnoremap osa :OmniSharpStartServer + autocmd FileType cs nnoremap oad :OmniSharpAddToProject + autocmd FileType cs nnoremap ob :OmniSharpBuildAsync + autocmd FileType cs nnoremap orn :OmniSharpRenameToh + autocmd FileType cs nnoremap oca :OmniSharpGetCodeActions + autocmd FileType cs vnoremap oca :call OmniSharp#GetCodeActions('visual') + autocmd FileType cs nnoremap f :OmniSharpTypeLookup + autocmd FileType cs nnoremap F mmF(h:OmniSharpTypeLookup`m + autocmd FileType cs nnoremap ( :OmniSharpNavigateDown + autocmd FileType cs nnoremap ) :OmniSharpNavigateUp +augroup END + +set completeopt=longest,menuone +let g:OmniSharp_typeLookupInPreview = 0 +let g:OmniSharp_timeout = 100 +if has("gui_running") + hi link csAttributeType Constant + hi link csUnspecifiedStatement Constant + hi link csInterfaceDeclaration Repeat +else + hi link csAttributeType Special + hi link csUnspecifiedStatement PreProc + hi link csInterfaceDeclaration StorageClass + hi link csModifier Identifier + hi link csClass Constant + hi link csType Constant + hi link CSharpUserType Identifier +endif +" source ~/Documents/Work/vim-csharp-repl/plugin/csharp-repl.vim + +" NeoComplete +let g:acp_enableAtStartup = 0 +let g:neocomplete#enable_at_startup = 1 +let g:neocomplete#enable_smart_case = 1 +let g:neocomplete#sources#syntax#min_keyword_length = 2 +let g:neocomplete#max_list = 25 +let g:neocomplete#lock_buffer_name_pattern = '\*ku\*' +let g:neocomplete#sources#dictionary#dictionaries = { + \ 'default' : '', + \ 'vimshell' : $HOME.'/.vimshell_hist', + \ 'scheme' : $HOME.'/.gosh_completions' + \ } +call neocomplete#custom#source('_', 'sorters', []) + +if !exists('g:neocomplete#sources') + let g:neocomplete#sources = {} +endif +if !exists('g:neocomplete#keyword_patterns') + let g:neocomplete#keyword_patterns = {} +endif +let g:neocomplete#keyword_patterns['default'] = '\h\w*' +let g:neocomplete#enable_auto_select = 1 +let g:neocomplete#disable_auto_complete = 0 +inoremap neocomplete#complete_common_string() +inoremap pumvisible() ? neocomplete#cancel_popup() : "\" +imap pumvisible() ? neocomplete#close_popup() : "\" +if !exists('g:neocomplete#sources#omni#input_patterns') + let g:neocomplete#sources#omni#input_patterns = {} +endif +let g:neocomplete#force_overwrite_completefunc = 1 +let g:neocomplete#sources.cs = ['omni'] +let g:neocomplete#sources#omni#input_patterns.cs = '.*[^-!@%?/|&\{}\+\*\(<>\")\=);]' +let g:neocomplete#sources#omni#input_patterns.js = '[^. \t]\.\w*' +let g:neocomplete#sources#omni#input_patterns.c = '[^[:digit:] *;\{\()]\w*' +let g:neocomplete#sources#omni#input_patterns.lua = '[^. \t]\.\w*' +let g:clang_complete_auto=1 +let g:clang_auto_select=0 +let g:clang_use_library=1 +let g:neocomplete#enable_refresh_always = 0 +augroup js_aus + autocmd! + autocmd FileType javascript setlocal omnifunc=tern#Complete + autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS + autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags + autocmd FileType python setlocal omnifunc=pythoncomplete#Complete + autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags +augroup END + +" NeoSnippet +imap neosnippet#expandable_or_jumpable() ? "\(neosnippet_expand_or_jump)" : "\" +smap (neosnippet_expand_or_jump) +xmap (neosnippet_expand_target) +let g:neosnippet#enable_snipmate_compatibility = 1 +let g:neosnippet#snippets_directory='~/.vim/snippet' +smap neosnippet#expandable_or_jumpable() ? +\ "\(neosnippet_expand_or_jump)" +\: "\" + +if has('conceal') + set conceallevel=2 concealcursor=i +endif +"