diff options
54 files changed, 9485 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cc19234 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +vim/bundle/ diff --git a/Xresources b/Xresources new file mode 100644 index 0000000..9cbff8f --- /dev/null +++ b/Xresources @@ -0,0 +1,87 @@ +xterm*faceName: Envy Code R:size=9:antialias=false +!xterm*faceName: xft:Termsynu:size=12 +!xterm*boldFont: xft:Termsynu:bold:size=9 +xterm*linespace: 0 +xterm*VT100*underLine: on +xterm*termName: xterm-256color + +*scrollBar: false +xterm*metaSendsEscape: true +xterm*boldMode: false +xterm*selectToClipboard: true + +dzen2*font: Envy Code R:size=9:antialias=false +dzen2*background: #010101 +dzen2*foreground: #c8c8c8 + +! Default +! +xterm*background: #010101 +xterm*foreground: #c8c8c8 +!xterm*color0: #000000 +!xterm*color1: #b33636 +!xterm*color2: #6ba82a +!xterm*color3: #deaf40 +!xterm*color4: #5a78ad +!xterm*color5: #ab4382 +!xterm*color6: #39a0b3 +!xterm*color7: #a8a8a8 +!xterm*color8: #646464 +!xterm*color9: #e61717 +!xterm*color10: #78dc0c +!xterm*color11: #f1e022 +!xterm*color12: #699dfa +!xterm*color13: #de2a98 +!xterm*color14: #13d1f3 +!xterm*color15: #c8c8c8 + +!*font: -*-termsyn-medium-*-*-*-14-*-*-*-*-*-*-* +!*boldFont: -*-termsyn-bold-*-*-*-14-*-*-*-*-*-*-* +!*italicFont: -*-termsyn-medium-*-*-*-14-*-*-*-*-*-*-* +!*boldItalicFont: -*-termsyn-bold-*-*-*-14-*-*-*-*-*-*-* + +!*cursorColor: #CCCCCC +*colorIT: #E3AB8D +!*colorBD: #F0E5DF +!*colorUL: #cd546c +*VT100.colorBDMode: true +*VT100.colorBD: red +*VT100.colorULMode: true +*VT100.colorUL: magenta +*VT100.veryBoldColors: 6 + +*background: rgb:00/00/00 +!*foreground: rgb:7f/7f/7f +*foreground: #f8f8f2 + +! Black +!*color0: #404040 +!*color8: #505050 +*color0: #1B1D1E +*color8: #505354 + +! Red +*color1: #ff005f +*color9: #ff6767 + +! Green +*color2: #afd700 +*color10: #8ce25d + +! Yellow +*color3: #ff8f00 +*color11: #ffb445 + +! Blue +*color4: #1165e9 +*color12: #5496ff + +! Magenta +*color5: #8C54FE +*color13: #9E6FFE +! Cyan +*color6: #4c8ea1 +*color14: #6bc1d0 +! White +*color7: #d2d2d2 +*color15: #ffffff diff --git a/gitconfig b/gitconfig new file mode 100644 index 0000000..6550dd6 --- /dev/null +++ b/gitconfig @@ -0,0 +1,5 @@ +[user] + email = matiaslina@openmailbox.org + name = Matias Linares +[alias] + lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr)%C(bold blue)<%an>%Creset' --abbrev-commit diff --git a/herbstluftwm/autostart b/herbstluftwm/autostart new file mode 100755 index 0000000..444d17a --- /dev/null +++ b/herbstluftwm/autostart @@ -0,0 +1,186 @@ +#!/bin/bash + +# this is a simple config for herbstluftwm + +# https://bbs.archlinux.org/viewtopic.php?id=128646 +#hc() { +# herbstclient "$@" +#} +hc() { + cmd+=(, $@) +} + +mvrs() { + ~/.config/herbstluftwm/mvrs.sh $1 $2 +} + +hc emit_hook reload + +# Some autostart configuration +nitrogen --restore & +#compton -b + +# remove all existing keybindings +hc keyunbind --all + +# keybindings +# if you have a super key you will be much happier with Mod set to Mod4 +#Mod=Mod1 # Use alt as the main modifier +Mod=Mod4 # Use the super key as the main modifier + +hc keybind $Mod-Shift-q quit +hc keybind $Mod-Shift-r reload +hc keybind $Mod-Shift-c close +#hc keybind $Mod-Return spawn st +hc keybind $Mod-Return spawn xterm +#hc keybind $Mod-p spawn dmenu_run -b -p $(hostname) -nb "#010101" +hc keybind $Mod-p spawn rofi -show run + +# basic movement +# focusing clients +hc keybind $Mod-h focus left +hc keybind $Mod-j focus down +hc keybind $Mod-k focus up +hc keybind $Mod-l focus right + +# moving clients +hc keybind $Mod-Shift-h shift left +hc keybind $Mod-Shift-j shift down +hc keybind $Mod-Shift-k shift up +hc keybind $Mod-Shift-l shift right + +# splitting frames +# create an empty frame at the specified direction +hc keybind $Mod-u split bottom 0.5 +hc keybind $Mod-o split right 0.5 +# let the current frame explode into subframes +hc keybind $Mod-Control-space split explode + +# resizing frames +resizestep=0.02 +hc keybind $Mod-Control-h spawn ~/.config/herbstluftwm/mvrs.sh left +$resizestep +hc keybind $Mod-Control-j spawn ~/.config/herbstluftwm/mvrs.sh down +$resizestep +hc keybind $Mod-Control-k spawn ~/.config/herbstluftwm/mvrs.sh up +$resizestep +hc keybind $Mod-Control-l spawn ~/.config/herbstluftwm/mvrs.sh right +$resizestep +hc keybind $Mod-Control-Left resize left +$resizestep +hc keybind $Mod-Control-Down resize down +$resizestep +hc keybind $Mod-Control-Up resize up +$resizestep +hc keybind $Mod-Control-Right resize right +$resizestep + +# tags +#tag_names=( {1..9} ) +tag_names=( "web" "editors" "chat" "games" "misc" ) +tag_keys=( {1..9} 0 ) + +hc rename default "${tag_names[0]}" || true +for i in ${!tag_names[@]} ; do + hc add "${tag_names[$i]}" + key="${tag_keys[$i]}" + if ! [ -z "$key" ] ; then + hc keybind "$Mod-$key" use_index "$i" + hc keybind "$Mod-Shift-$key" move_index "$i" + fi +done + +hc floating "games" on + +# cycle through tags +hc keybind $Mod-period use_index +1 --skip-visible +hc keybind $Mod-comma use_index -1 --skip-visible + +# layouting +hc keybind $Mod-r remove +hc keybind $Mod-space cycle_layout 1 +hc keybind $Mod-s floating toggle +hc keybind $Mod-f fullscreen toggle +hc keybind $Mod-Shift-p pseudotile toggle + +# Light and sound +hc keybind $Mod-Left spawn xbacklight -5 +hc keybind $Mod-Down spawn amixer set Master 3- +hc keybind $Mod-Up spawn amixer set Master 3+ +hc keybind $Mod-Right spawn xbacklight +5 + +# mouse +hc mouseunbind --all +hc mousebind $Mod-Button1 move +hc mousebind $Mod-Button2 zoom +hc mousebind $Mod-Button3 resize + +# focus +hc keybind $Mod-BackSpace cycle_monitor +hc keybind $Mod-Tab cycle_all +1 +hc keybind $Mod-Shift-Tab cycle_all -1 +hc keybind $Mod-c cycle +hc keybind $Mod-i jumpto urgent + +# theme +#hc attr theme.tiling.reset 1 +#hc attr theme.floating.reset 1 +#hc set frame_border_active_color '#9E003A' +#hc set frame_border_normal_color '#101010' +#hc set frame_bg_normal_color '#565656' +#hc set frame_bg_active_color '#000000' +#hc set frame_border_width 2 +#hc set always_show_frame 1 +hc set frame_bg_transparent 1 +hc set frame_transparent_width 1 +hc set frame_gap 2 +hc set frame_border_active_color '#000000' +hc set frame_border_normal_color '#1d1f21' +hc set frame_bg_normal_color '#151515' +hc set frame_bg_active_color '#151515' +hc set frame_border_width 0 +hc set window_border_width 2 +hc set window_border_normal_color '#3a3a3a' +hc set window_border_active_color '#cc342b' + +#hc attr theme.active.color '#9E003A' +#hc attr theme.normal.color '#252525' +#hc attr theme.urgent.color orange +#hc attr theme.inner_width 0 +#hc attr theme.inner_color '#191919' +#hc attr theme.border_width 2 +#hc attr theme.floating.border_width 2 +#hc attr theme.floating.outer_width 3 +#hc attr theme.floating.outer_color black +#hc attr theme.active.inner_color '#9E003A' +#hc attr theme.active.outer_color '#111111' +#hc attr theme.background_color '#141414' + + +#hc set window_gap 0 +hc set frame_padding 0 +#hc set smart_window_surroundings 1 +#hc set smart_frame_surroundings 1 +#hc set mouse_recenter_gap 0 + +# rules +hc unrule -F +#hc rule class=XTerm tag=3 # move all xterms to tag 3 +hc rule focus=on # normally focus new clients +#hc rule focus=off # normally do not focus new clients +# give focus to most common terminals +#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on +hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on +hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off + +# unlock, just to be sure +hc unlock + +herbstclient set tree_style '╾│ ├└╼─┐' + +# do multi monitor setup here, e.g.: +# hc set_monitors 1280x1024+0+0 1280x1024+1280+0 +# or simply: +# hc detect_monitors +herbstclient chain "${cmd[@]}" + +# find the panel +panel=~/.config/herbstluftwm/panel.sh +[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh +for monitor in $(herbstclient list_monitors | cut -d: -f1) ; do + # start it on each monitor + "$panel" $monitor & +done diff --git a/herbstluftwm/bin/mvrs b/herbstluftwm/bin/mvrs Binary files differnew file mode 100755 index 0000000..76adda2 --- /dev/null +++ b/herbstluftwm/bin/mvrs diff --git a/herbstluftwm/mvrs.sh b/herbstluftwm/mvrs.sh new file mode 100755 index 0000000..f7b3c14 --- /dev/null +++ b/herbstluftwm/mvrs.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# ./mvrs WINID X Y Width Height + +floating=$(herbstclient get_attr tags.focus.floating) + +if [[ x"$floating" == xfalse ]] +then + resizestep=0.02 + herbstclient resize $1 $2 +else + resizestep=15 + winid="$(herbstclient get_attr clients.focus.winid)" + + width=$(xwininfo -id "${winid}" | grep Width | awk '{print $2}') + height=$(xwininfo -id "${winid}" | grep Height | awk '{print $2}') + + case $1 in + left) + width=$(($width - ${resizestep})) + ;; + right) + width=$(($width + ${resizestep})) + ;; + up) + height=$(($height - ${resizestep})) + ;; + down) + height=$(($height + ${resizestep})) + ;; + esac + + + ~/.config/herbstluftwm/bin/mvrs ${winid} $width $height +fi + diff --git a/herbstluftwm/panel.bar.sh b/herbstluftwm/panel.bar.sh new file mode 100755 index 0000000..88f7ab1 --- /dev/null +++ b/herbstluftwm/panel.bar.sh @@ -0,0 +1,157 @@ +#!/bin/bash + +# todo: fontello icons + +# disable path name expansion or * will be expanded in the line +# cmd=( $line ) +set -f + +function uniq_linebuffered() { + awk -W interactive '$0 != l { print ; l=$0 ; fflush(); }' "$@" +} +function get_mpd_song() { + # use mpc to get currently playing song, uppercase it + song=$(mpc current -f %title%) + # let's skip ft. parts, etc. to get some more space + echo $song +} + +monitor=${1:-0} + +separator="\f3 | \fr" +song=$(get_mpd_song) +windowtitle="" + +herbstclient pad $monitor 18 +{ + # events: + # mpc events + mpc idleloop player & + mpc_pid=$! + + # date + while true ; do + date +'date_day %A %e. ' + date +'date_min %H:%M ' + sleep 1 || break + done > >(uniq_linebuffered) & + date_pid=$! + + while true + do + $HOME/scripts/battery-parse + sleep 2m || break + done & + battery_pid=$! + + while true + do + $HOME/scripts/nm-connected-device + sleep 3m || break + done & + nm_status_pid=$! + + # hlwm events + herbstclient --idle + + # exiting; kill stray event-emitting processes + kill $date_pid $mpd_pid $battery_pid $nm_status_pid +} 2> /dev/null | { + TAGS=( $(herbstclient tag_status $monitor) ) + #unset TAGS[${#TAGS[@]}-1] + date_day="" + date_min="" + Battery="" + network_status="" + visible=true + + while true ; do + # align left + echo -n "\l" + if [[ $windowtitle ]] + then + if [ ${#windowtitle} -gt 55 ] + then + windowtitle="$(echo -n $windowtitle | cut -c1-55)..." + fi + echo -n "\ur\fr$windowtitle$separator" + fi + + # Align center + echo -n "\c" + for i in "${TAGS[@]}" ; do + case ${i:0:1} in + '#') # current tag + echo -n "\u4\b4\fr" + ;; + '+') # active on other monitor + echo -n "\u7\b7\f8" + ;; + ':') + # Tag with windows + echo -n "\ur\br\f4" + ;; + '!') # urgent tag + echo -n "\u1\br\f1" + ;; + *) + echo -n "\ur\br\fr" + ;; + esac + echo -n " ${i:1} " # | tr '[:lower:]' '[:upper:]' + done + + # align right + echo -n "\r\ur\fr\br" + # display song and separator only if something's playing + if [[ $song ]]; then + if [ ${#song} -gt 30 ] + then + song="$(echo -n $song | cut -c1-30)..." + fi + echo -n "\ur\fr$song$separator" + fi + echo -n "$network_status" + echo -n "$separator" + echo -n "$Battery" + echo -n "$separator" + echo -n "$date_day" | tr '[:lower:]' '[:upper:]' + echo -n " \f2" + echo -n "$date_min " | tr '[:lower:]' '[:upper:]' + echo + # wait for next event + read line || break + cmd=( $line ) + # find out event origin + case "${cmd[0]}" in + tag*) + TAGS=( $(herbstclient tag_status $monitor) ) + #unset TAGS[${#TAGS[@]}-1] + ;; + date_day) + date_day="${cmd[@]:1}" + ;; + date_min) + date_min="${cmd[@]:1}" + ;; + player) + song=$(get_mpd_song) + ;; + focus_changed|window_title_changed) + windowtitle="${cmd[@]:2}" + ;; + Battery) + Battery="${cmd[1]} ${cmd[2]}" + ;; + network) + network_status="${cmd[1]} ${cmd[2]}" + ;; + quit_panel) + exit + ;; + reload) + exit + ;; + esac + done +} 2> /dev/null | bar $1 diff --git a/herbstluftwm/panel.sh b/herbstluftwm/panel.sh new file mode 100755 index 0000000..035bcf5 --- /dev/null +++ b/herbstluftwm/panel.sh @@ -0,0 +1,223 @@ +#!/bin/bash + +hc() { "${herbstclient_command[@]:-herbstclient}" "$@" ;} +monitor=${1:-0} +geometry=( $(herbstclient monitor_rect "$monitor") ) +if [ -z "$geometry" ] ;then + echo "Invalid monitor $monitor" + exit 1 +fi +# geometry has the format W H X Y +x=${geometry[0]} +y=${geometry[1]} +panel_width=${geometry[2]} +panel_height=16 +font="-Misc-Termsyn.Icons-Medium-R-Normal--11-79-100-100-C-60-ISO8859-1" +#font="-*-envy code r-*-*-*-*-11-*-*-*-*-*-*-*" +# font="DejaVu Sans Mono" +bgcolor=$(hc get frame_border_normal_color) +selbg=$(hc get window_border_active_color) +selfg='#101010' +popups="/home/matias/.config/herbstluftwm/popups.sh" + +#### +# Load the font for the panel, should implement something more optimized +# But for now it's fine +xset +fp /usr/share/fonts/local/ +xset fp rehash + +#### +# Try to find textwidth binary. +# In e.g. Ubuntu, this is named dzen2-textwidth. +if which textwidth &> /dev/null ; then + textwidth="textwidth"; +elif which dzen2-textwidth &> /dev/null ; then + textwidth="dzen2-textwidth"; +else + echo "This script requires the textwidth tool of the dzen2 project." + exit 1 +fi +#### +# true if we are using the svn version of dzen2 +# depending on version/distribution, this seems to have version strings like +# "dzen-" or "dzen-x.x.x-svn" +if dzen2 -v 2>&1 | head -n 1 | grep -q '^dzen-\([^,]*-svn\|\),'; then + dzen2_svn="true" +else + dzen2_svn="" +fi + +if awk -Wv 2>/dev/null | head -1 | grep -q '^mawk'; then + # mawk needs "-W interactive" to line-buffer stdout correctly + # http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=593504 + uniq_linebuffered() { + awk -W interactive '$0 != l { print ; l=$0 ; fflush(); }' "$@" + } +else + # other awk versions (e.g. gawk) issue a warning with "-W interactive", so + # we don't want to use it there. + uniq_linebuffered() { + awk '$0 != l { print ; l=$0 ; fflush(); }' "$@" + } +fi + +hc pad $monitor $panel_height + +{ + ### Event generator ### + # based on different input data (mpc, date, hlwm hooks, ...) this generates events, formed like this: + # <eventname>\t<data> [...] + # e.g. + # date ^fg(#efefef)18:33^fg(#909090), 2013-10-^fg(#efefef)29 + + #mpc idleloop player & + while true ; do + # "date" output is checked once a second, but an event is only + # generated if the output changed compared to the previous run. + date +$'date\t^fg(#efefef)%H:%M^fg(#909090), %Y-%m-^fg(#efefef)%d' + sleep 3 || break + done > >(uniq_linebuffered) & + childpid=$! + + while true; do + mpc_output="$(mpc -f "player\t%title% - %artist%" || echo -n "player\t")" + echo "$mpc_output" | head -n 1 + sleep 11 || break + done > >(uniq_linebuffered) & + mpcpid=$! + + hc --idle + kill $childpid + kill $mpcpid +} 2> /dev/null | { + IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)" + visible=true + date="" + windowtitle="" + while true ; do + + ### Output ### + # This part prints dzen data based on the _previous_ data handling run, + # and then waits for the next event to happen. + + bordercolor="#26221C" + separator="^bg()^fg($selbg)|" + # draw tags + for i in "${tags[@]}" ; do + case ${i:0:1} in + '#') + echo -n "^bg($selbg)^fg($selfg)" + ;; + '+') + echo -n "^bg(#9CA668)^fg(#141414)" + ;; + ':') + echo -n "^bg()^fg(#ffffff)" + ;; + '!') + echo -n "^bg(#FF0675)^fg(#141414)" + ;; + *) + echo -n "^bg()^fg(#ababab)" + ;; + esac + if [ ! -z "$dzen2_svn" ] ; then + # clickable tags if using SVN dzen + echo -n "^ca(1,\"${herbstclient_command[@]:-herbstclient}\" " + echo -n "focus_monitor \"$monitor\" && " + echo -n "\"${herbstclient_command[@]:-herbstclient}\" " + echo -n "use \"${i:1}\") ${i:1} ^ca()" + else + # non-clickable tags if using older dzen + echo -n " ${i:1} " + fi + done + echo -n "$separator" + echo -n "^bg()^fg() ${windowtitle//^/^^}" + # small adjustments + battery=$(expr $(expr $(cat /sys/class/power_supply/BAT*/charge_now) \* 100) / $(cat /sys/class/power_supply/BAT*/charge_full)) + if [ "$battery" = "/" ] ;then + right="$separator^bg($hintcolor) $date $separator" + else + right="^bg($hintcolor) ^fg(#efefef)$song $separator " + if [[ $battery -lt 20 ]] + then + right="$right^fg(#ef7f7f)$battery%% $separator $date" + elif [[ $battery -lt 50 ]] + then + right="$right^fg(#e1e17f)$battery%% $separator $date" + else + right="$right^fg(#efefef)$battery%% $separator $date" + fi + fi + right_text_only=$(echo -n "$right" | sed 's.\^[^(]*([^)]*)..g') + + # get width of right aligned text.. and add some space.. + width=$($textwidth "$font" "$right_text_only ") + echo -n "^pa($(($panel_width - $width + 22)))$(printf "$right")" + echo + + ### Data handling ### + # This part handles the events generated in the event loop, and sets + # internal variables based on them. The event and its arguments are + # read into the array cmd, then action is taken depending on the event + # name. + # "Special" events (quit_panel/togglehidepanel/reload) are also handled + # here. + + # wait for next event + IFS=$'\t' read -ra cmd || break + # find out event origin + case "${cmd[0]}" in + tag*) + #echo "resetting tags" >&2 + IFS=$'\t' read -ra tags <<< "$(hc tag_status $monitor)" + ;; + date) + #echo "resetting date" >&2 + date="^ca(1, ${popups} cal)${cmd[@]:1}^ca()" + ;; + quit_panel) + exit + ;; + togglehidepanel) + currentmonidx=$(hc list_monitors | sed -n '/\[FOCUS\]$/s/:.*//p') + if [ "${cmd[1]}" -ne "$monitor" ] ; then + continue + fi + if [ "${cmd[1]}" = "current" ] && [ "$currentmonidx" -ne "$monitor" ] ; then + continue + fi + echo "^togglehide()" + if $visible ; then + visible=false + hc pad $monitor 0 + else + visible=true + hc pad $monitor $panel_height + fi + ;; + reload) + exit + ;; + focus_changed|window_title_changed) + windowtitle="${cmd[@]:2}" + ;; + player) + if [[ x"${cmd[@]:1}" != "x" ]] + then + song="^ca(1, ${popups} music) \uEA ^ca()" + else + song="wep" + fi + ;; + esac + done + + ### dzen2 ### + # After the data is gathered and processed, the output of the previous block + # gets piped to dzen2. font -> -fn "$font" + +} 2> /dev/null | dzen2 -w $panel_width -x $x -y $y -fn "$font" -h $panel_height \ + -e 'button3=;button4=exec:herbstclient use_index -1;button5=exec:herbstclient use_index +1' \ + -ta l -bg "$bgcolor" -fg '#efefef' diff --git a/herbstluftwm/popups.sh b/herbstluftwm/popups.sh new file mode 100755 index 0000000..0ba7d86 --- /dev/null +++ b/herbstluftwm/popups.sh @@ -0,0 +1,46 @@ +#!/bin/bash + +dzen_bg="#444040" + +calendary() { + ( + cal + ) | dzen2 -p -bg "${dzen_bg}" -x "1195" -y "25" -w "165" -h "20" -l "5" -sa "c" -ta "c" \ + -title-name "popup_sysinfo" -e 'onstart=uncollapse;button1=exit;button3=exit' +} + +position(){ + pos=$(mpc | awk 'NR==2' | awk '{print $4}' | sed 's/(//' | sed 's/%)//') + bar=$(echo $pos | gdbar -w $1 -h 1.5 -fg "#FF3D00" -bg "#821D00") + echo -n "$bar" + return +} + +music() { + set -e + + popup_width=220 + padding=10 + + while : + do + echo "^p(10)$(mpc current -f %artist%) +^p($padding)$(mpc current -f %title%) +^p($padding)$(mpc current -f %album%) + +^p($padding)^ca(1,mpc prev)Prev^ca() ^ca(1,mpc toggle)Play/Pause^ca() ^ca(1,mpc stop)Stop^ca() ^ca(1,mpc next)Next^ca() +^p($padding)$(position $(($popup_width - $padding)) )" 2> /dev/null + sleep 1 + done | dzen2 -p -bg "${dzen_bg}" -y 25 -x 967 -l 5 -u -w $(($popup_width + $padding)) -ta l -title-name "popup_mpd" -e 'onstart=uncollapse;button3=exit' +} + +case $1 in + cal) + calendary + ;; + music) + music + ;; + *) + ;; +esac diff --git a/herbstluftwm/restartpanels.sh b/herbstluftwm/restartpanels.sh new file mode 100755 index 0000000..9d9110c --- /dev/null +++ b/herbstluftwm/restartpanels.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +installdir=/ + +XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" +defaultpanel="$XDG_CONFIG_HOME/herbstluftwm/panel.sh" + +[ -x "$defaultpanel" ] || defaultpanel="$installdir/etc/xdg/herbstluftwm/panel.sh" + +panelcmd="${1:-$defaultpanel}" + +herbstclient emit_hook quit_panel + +for i in $(herbstclient list_monitors | cut -d':' -f1) ; do + "$panelcmd" $i & +done diff --git a/irssi/config b/irssi/config new file mode 100644 index 0000000..52852a6 --- /dev/null +++ b/irssi/config @@ -0,0 +1,375 @@ +## SERVERS +servers = ( + { + address = "team-deprecated.org"; + chatnet = "Team-Deprecated"; + port = "6667"; + }, + { address = "eu.irc6.net"; chatnet = "IRCnet"; port = "6667"; }, + { address = "open.ircnet.net"; chatnet = "IRCnet"; port = "6667"; }, + { + address = "chat.freenode.net"; + chatnet = "Freenode"; + port = "6667"; + use_ssl = "no"; + ssl_verify = "no"; + autoconnect = "no"; + }, + { + address = "irc.mozilla.org"; + chatnet = "Mozilla"; + port = "6697"; + use_ssl = "yes"; + ssl_verify = "yes"; + autoconnect = "no"; + }, + { address = "irc.efnet.org"; chatnet = "EFNet"; port = "6667"; }, + { + address = "irc.undernet.org"; + chatnet = "Undernet"; + port = "6667"; + }, + { address = "irc.dal.net"; chatnet = "DALnet"; port = "6667"; }, + { + address = "irc.quakenet.org"; + chatnet = "QuakeNet"; + port = "6667"; + }, + { + address = "irc.oftc.net"; + chatnet = "OFTC"; + port = "6667"; + autoconnect = "no"; + }, + { + address = "irc.snoonet.org"; + chatnet = "Snoonet"; + port = "6667"; + autoconnect = "no"; + }, + { + address = "irc.gamesurge.net"; + chatnet = "GameSurge"; + port = "6667"; + }, + { address = "irc.webchat.org"; chatnet = "WebChat"; port = "6667"; }, + { address = "irc.rizon.net"; chatnet = "Rizon"; port = "6667"; }, + { address = "irc.link-net.org"; chatnet = "LinkNet"; port = "6667"; }, + { address = "silc.silcnet.org"; chatnet = "SILC"; port = "706"; }, + { + address = "irc.unixporn.net"; + chatnet = "Unixporn"; + port = "6667"; + use_ssl = "no"; + ssl_verify = "no"; + } +); + +chatnets = { + IRCnet = { + type = "IRC"; + max_kicks = "4"; + max_msgs = "5"; + max_whois = "4"; + max_query_chans = "5"; + }; + EFNet = { + type = "IRC"; + max_kicks = "4"; + max_msgs = "3"; + max_whois = "1"; + }; + Freenode = { + type = "IRC"; + nick = "matiaslina"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + Mozilla = { + type = "IRC"; + nick = "matiaslina"; + max_kicks = "1"; + max_msgs = "4"; + max_whois = "1"; + }; + Undernet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "3"; + max_whois = "30"; + }; + DALnet = { + type = "IRC"; + max_kicks = "4"; + max_msgs = "3"; + max_whois = "30"; + }; + QuakeNet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "3"; + max_whois = "30"; + }; + OFTC = { + type = "IRC"; + nick = "matiaslina"; + max_kicks = "1"; + max_msgs = "3"; + max_whois = "30"; + }; + GameSurge = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "3"; + max_whois = "30"; + }; + WebChat = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "3"; + max_whois = "30"; + }; + Rizon = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "3"; + max_whois = "30"; + }; + LinkNet = { + type = "IRC"; + max_kicks = "1"; + max_msgs = "3"; + max_whois = "30"; + }; + SILC = { type = "SILC"; }; + Unixporn = { + type = "IRC"; + nick = "matiaslina"; + }; + Snoonet = { type = "IRC"; }; + "Team-Deprecated" = { + type = "IRC"; + nick = "park"; + }; +}; + +channels = ( + { name = "#irssi"; chatnet = "ircnet"; autojoin = "No"; }, + { name = "#bash"; chatnet = "Freenode"; autojoin = "Yes"; }, + { name = "#archlinux"; chatnet = "Freenode"; autojoin = "Yes"; }, + { name = "#herbstluftwm"; chatnet = "Freenode"; autojoin = "Yes"; }, + { name = "#vim"; chatnet = "Freenode"; autojoin = "Yes"; }, + { name = "#tox"; chatnet = "Freenode"; autojoin = "Yes"; }, + + { name = "#rust"; chatnet = "Mozilla"; autojoin = "Yes"; }, + { name = "#servo"; chatnet = "Mozilla"; autojoin = "Yes"; }, + + { name = "#suckless"; chatnet = "OFTC"; autojoin = "Yes"; }, + + { name = "#nomanssky"; chatnet = "Snoonet"; autojoin = "Yes"; }, + +); + +aliases = { + J = "join"; + WJOIN = "join -window"; + WQUERY = "query -window"; + LEAVE = "part"; + BYE = "quit"; + EXIT = "quit"; + SIGNOFF = "quit"; + DESCRIBE = "action"; + DATE = "time"; + HOST = "userhost"; + LAST = "lastlog"; + SAY = "msg *"; + WI = "whois"; + WII = "whois $0 $0"; + WW = "whowas"; + W = "who"; + N = "names"; + M = "msg"; + T = "topic"; + C = "clear"; + CL = "clear"; + K = "kick"; + KB = "kickban"; + KN = "knockout"; + BANS = "ban"; + B = "ban"; + MUB = "unban *"; + UB = "unban"; + IG = "ignore"; + UNIG = "unignore"; + SB = "scrollback"; + UMODE = "mode $N"; + WC = "window close"; + WN = "window new hide"; + SV = "say Irssi $J ($V) - http://irssi.org/"; + GOTO = "sb goto"; + CHAT = "dcc chat"; + RUN = "SCRIPT LOAD"; + CALC = "exec - if command -v bc >/dev/null 2>&1\\; then printf '%s=' '$*'\\; echo '$*' | bc -l\\; else echo bc was not found\\; fi"; + SBAR = "STATUSBAR"; + INVITELIST = "mode $C +I"; + Q = "QUERY"; + "MANUAL-WINDOWS" = "set use_status_window off;set autocreate_windows off;set autocreate_query_level none;set autoclose_windows off;set reuse_unused_windows on;save"; + EXEMPTLIST = "mode $C +e"; + ATAG = "WINDOW SERVER"; + UNSET = "set -clear"; + RESET = "set -default"; +}; + +statusbar = { + # formats: + # when using {templates}, the template is shown only if it's argument isn't + # empty unless no argument is given. for example {sb} is printed always, + # but {sb $T} is printed only if $T isn't empty. + + items = { + # start/end text in statusbars + barstart = "{sbstart}"; + barend = "{sbend}"; + + topicbarstart = "{topicsbstart}"; + topicbarend = "{topicsbend}"; + + # treated "normally", you could change the time/user name to whatever + time = "{sb $Z}"; + user = "{sb {sbnickmode $cumode}$N{sbmode $usermode}{sbaway $A}}"; + + # treated specially .. window is printed with non-empty windows, + # window_empty is printed with empty windows + window = "{sb $winref:$tag/$itemname{sbmode $M}}"; + window_empty = "{sb $winref{sbservertag $tag}}"; + prompt = "{prompt $[.15]itemname}"; + prompt_empty = "{prompt $winname}"; + topic = " $topic"; + topic_empty = " Irssi v$J - http://www.irssi.org"; + + # all of these treated specially, they're only displayed when needed + lag = "{sb Lag: $0-}"; + act = "{sb Act: $0-}"; + more = "-- more --"; + }; + + # there's two type of statusbars. root statusbars are either at the top + # of the screen or at the bottom of the screen. window statusbars are at + # the top/bottom of each split window in screen. + default = { + # the "default statusbar" to be displayed at the bottom of the window. + # contains all the normal items. + window = { + disabled = "no"; + + # window, root + type = "window"; + # top, bottom + placement = "bottom"; + # number + position = "1"; + # active, inactive, always + visible = "active"; + + # list of items in statusbar in the display order + items = { + barstart = { priority = "100"; }; + time = { }; + user = { }; + window = { }; + window_empty = { }; + lag = { priority = "-1"; }; + more = { priority = "-1"; alignment = "right"; }; + barend = { priority = "100"; alignment = "right"; }; + usercount = { }; + }; + }; + + # statusbar to use in inactive split windows + window_inact = { + type = "window"; + placement = "bottom"; + position = "1"; + visible = "inactive"; + items = { + barstart = { priority = "100"; }; + window = { }; + window_empty = { }; + more = { priority = "-1"; alignment = "right"; }; + barend = { priority = "100"; alignment = "right"; }; + }; + }; + + # we treat input line as yet another statusbar :) It's possible to + # add other items before or after the input line item. + prompt = { + type = "root"; + placement = "bottom"; + # we want to be at the bottom always + position = "100"; + visible = "always"; + items = { + prompt = { priority = "-1"; }; + prompt_empty = { priority = "-1"; }; + # treated specially, this is the real input line. + input = { priority = "10"; }; + }; + }; + + # topicbar + topic = { + type = "root"; + placement = "top"; + position = "1"; + visible = "always"; + items = { + topicbarstart = { priority = "100"; }; + topic = { }; + topic_empty = { }; + topicbarend = { priority = "100"; alignment = "right"; }; + }; + }; + awl_0 = { + placement = "top"; + items = { + barstart = { priority = "100"; }; + awl_0 = { }; + barend = { priority = "100"; alignment = "right"; }; + }; + }; + awl_1 = { + placement = "top"; + items = { + barstart = { priority = "100"; }; + awl_1 = { }; + barend = { priority = "100"; alignment = "right"; }; + }; + }; + }; +}; +settings = { + core = { + real_name = "Matias Linares"; + user_name = "matiaslina"; + nick = "matiaslina"; + }; + "fe-text" = { actlist_sort = "refnum"; }; + "fe-common/core" = { + theme = "gorgatron"; + bell_beeps = "yes"; + beep_msg_level = "MSGS NOTICES INVITES DCC DCCMSGS HILIGHT"; + use_status_window = "no"; + expand_escapes = "yes"; + }; + "perl/core/scripts" = { + awl_display_key = "%K$H $C $S"; + awl_display_key_active = "$H %G$C $S"; + # awl_sort = "refnum"; + # awl_hide_data = "0"; + awl_placement = "top"; + awl_separator = "\\ \\ \\ "; + }; +}; +ignores = ( { level = "JOINS PARTS QUITS"; } ); +logs = { }; diff --git a/irssi/default.theme b/irssi/default.theme new file mode 100644 index 0000000..d76548c --- /dev/null +++ b/irssi/default.theme @@ -0,0 +1,308 @@ +# +# +# Beastie's irssi theme(With some small edits by neeasade). +# +# Thanks to crshd. +# +# +# Visit irc.unixhub.net #unixhub :) +# + + + +# default foreground color (%N) - -1 is the "default terminal color" +default_color = "-1"; + +# print timestamp/servertag at the end of line, not at beginning +info_eol = "false"; + +# these characters are automatically replaced with specified color +# (dark grey by default) +replaces = { "[]" = "%g$*%n"; }; + +abstracts = { + + ############# generic ############################### + + #indent_default = " + "; + indent_default = ""; + + # text to insert at the beginning of each non-message line + # line_start = "%g//%n "; + line_start = ""; + + # timestamp styling, nothing by default + #timestamp = "%K$0-%n"; + timestamp = ""; + + # any kind of text that needs hilighting, default is to bold + hilight = "%_$*%_"; + + # any kind of error message, default is bright red + error = "%R$*%n"; + + # channel name is printed + channel = "%b$*%n"; + + # nick is printed + #nick = "%_$*%_"; + nick = ""; + + # nick host is printed + nickhost = "%g$*"; + + # server name is printed + server = "%_$*%_"; + + # some kind of comment is printed + comment = "%n(%b\"$*\"%n);"; + + # reason for something is printed (part, quit, kick, ..) + reason = "{comment $*}"; + + # mode change is printed ([+o nick]) + mode = "{comment $*}"; + + ## channel specific messages + + # highlighted nick/host is printed (joins) + channick_hilight = "%g$*%N"; + chanhost_hilight = "{nickhost $*}"; + + # nick/host is printed (parts, quits, etc.) + channick = "$*"; + chanhost = "{nickhost $*}"; + + # highlighted channel name is printed + channelhilight = "%g$*%n"; + + # ban/ban exception/invite list mask is printed + ban = "$*"; + + ########### messages ################################# + + # the basic styling of how to print message, $0 = nick mode, $1 = nick + # msgnick = "$1-$0%K·%N %|"; + #msgnick = "%K$0%N $1 %K│ %|%N"; + # msgnick = "%K$0%N $1 %K· %|%N"; + msgnick = "%K%N $1 %K│ %N%|"; + + # $0 = nick mode, $1 = nick + ownmsgnick = "{msgnick $0 $1}"; + ownnick = "%Y$*%n"; + + # public message in channel, $0 = nick mode, $1 = nick + pubmsgnick = "{msgnick $0 $1}"; + pubnick = "%N$*%n"; + + # public highlighted message in channel + pubmsghinick = "{msgnick $0 $1}%r"; + menick = "%R$*%n"; + + # channel name is printed with message + msgchannel = "%K:%m$*%n"; + + # private message, $0 = nick, $1 = host + privmsg = "$0=%b\"$1-\"%n "; + + # private message from you, $0 = "msg", $1 = target nick + ownprivmsg = "$0=%b\"$1-\"%n "; + + # private message in query + # privmsgnick = "{msgnick $*}"; + privmsgnick = " %g<%N "; + + # own private message in query + #ownprivmsgnick = "{privmsgnick $*}"; + ownprivmsgnick = " %r>%N "; + #ownprivnick = "$*"; + + + ########## Actions (/ME stuff) ######################### + # used internally by this theme + action_core = " %n$* │"; + + # generic one that's used by most actions + action = "{action_core $*} "; + + # own action, both private/public + ownaction = "{action %p$*}"; + + # own action with target, both private/public + ownaction_target = "{action_core $0}%Y:%c$1%n "; + + # private action sent by others + pvtaction = "%y (*) $*%n "; + pvtaction_query = "{action $* }"; + + # public action sent by others + pubaction = "{action $*}"; + + # generic one that's used by most actions + # action = " %m$* │ %N%m"; + + # own action, both private/public + # ownaction = "{action $*}"; + # ownaction = " %m$* │ %N%m"; + + # own action with target, both private/public + # ownaction_target = " {action $*}"; + + # private action sent by others + # pvtaction = "{ $*}"; + # pvtaction_query = "{ $*}"; + + # public action sent by others + # pubaction = " {action}"; + + + ########## other IRC events ############################# + + # whois + whois = "%# $[8]0 = $1-;"; + + # notices + ownnotice = "%NNote n = %Mnew%n $0 ($1-) "; + notice = "%M$*%n "; + pubnotice_channel = " %N($*)"; + pvtnotice_host = " %N($*)"; + servernotice = " %N($*)"; + + # CTCPs + ownctcp = "%NCTCP c = %Mnew%n $0 ($1-) "; + ctcp = "%N$*%n"; + + # wallops + wallop = "%K$*%n: "; + wallop_nick = "%n$*"; + wallop_action = "%K * $*%n "; + + # netsplits + netsplit = " %Knsplit %R│ %b\"$*\"%n"; + netjoin = " %Knjoin %G│ %b\"$*\"%n"; + + # /names list + names_prefix = " %Y│%n "; + names_nick = "%_$2$0%_%n$1- "; + names_nick_op = "{names_nick $* %R}"; + names_nick_halfop = "{names_nick $* %C}"; + names_nick_voice = "{names_nick $* %K}"; + names_users = " %Y│%n $1"; + names_channel = "\"%b$*\"%n"; + + # DCC + dcc = "%g$*%n"; + dccfile = "%_$*%_"; + + # DCC chat, own msg/action + dccownmsg = "%g /* $0 ($1-) */"; + dccownnick = "$*%n"; + dccownquerynick = "$*%n"; + dccownaction = "{action $*}"; + dccownaction_target = "{action $*}"; + + # DCC chat, others + dccmsg = "%g/* $1- ($0) */"; + dccquerynick = "%g$*%n"; + dccaction = "{action $*}"; + + ######## statusbar/topicbar ############################ + + # default background for all statusbars. You can also give + # the default foreground color for statusbar items. + sb_background = "%9"; + + # default backround for "default" statusbar group + #sb_default_bg = "%4"; + # background for prompt / input line + sb_prompt_bg = "%n"; + # background for info statusbar + #sb_info_bg = "%8"; + # background for topicbar (same default) + #sb_topic_bg = "%4"; + + # text at the beginning of statusbars. sb-item already puts + # space there,so we don't use anything by default. + sbstart = ""; + # text at the end of statusbars. Use space so that it's never + # used for anything. + sbend = ""; + + + topicsbstart = "%BChannel: %b\"$*"; + topicsbend = "$*%b\""; + + prompt = "$c%K └─ "; + + sb = " $*"; + sbmode = " %K[%g%g+%n$*%K]"; + sbaway = " %g/* zZzZ */%n"; + sbservertag = ":%g$0%n"; + sbnickmode = "$0"; + + # Usercount + sb_usercount = "{sb %_$0%_ nicks ($1-)}"; + sb_uc_ircops = "%_*%_$*"; + sb_uc_ops = "%_@%r$*%n"; + sb_uc_halfops = "%_%%%g$*%n"; + sb_uc_voices = "%_+%y$*%n"; + sb_uc_normal = "%w$*%n"; + sb_uc_space = " "; + # activity in statusbar + + # ',' separator + sb_act_sep = " "; + # normal text + sb_act_text = "%K%9$*%n"; + # public message + sb_act_msg = "%Y%9$*%n"; + # hilight + sb_act_hilight = "%R%9$*%n"; + # hilight with specified color, $0 = color, $1 = text + sb_act_hilight_color = "%R%9$1-%n"; +}; + +######################################################## + +formats = { + "fe-common/core" = { + line_start = "{line_start}"; + line_start_irssi = "{line_start}"; + + join = " join %g│ %n {channick $0}"; + part = " part %r│ %n {channick $0}"; + kick = " kicked %r│ %n {channick $0}"; + quit = " quit %r│ %n {channick $0}"; + quit_once = "{channel $3} {channick $0} {chanhost $1} %kquit {reason %C$2}"; + + nick_changed = "%K{channick $[-13]0}%G│ %n {channick $1}"; + your_nick_changed = "%K you %G│ %n {channick $1}"; + + pubmsg = "{pubmsgnick $2 {pubnick \00304$[-11]0}}$1"; + + own_msg = "{ownmsgnick $2 {ownnick $[-11]0}}$1"; + own_msg_channel = "{ownmsgnick $3 {ownnick $[-11]0}{msgchannel $1}}$2"; + own_msg_private_query = "{ownprivmsgnick {ownprivnick $[-11]2}}$1"; + + pubmsg_me = "{pubmsghinick $2 {menick $[-11]0}}$1"; + pubmsg_me_channel = "{pubmsghinick $3 {menick $[-11]0}{msgchannel $1}}$2"; + + pubmsg_hilight = "{pubmsghinick $3 {menick $[-11]1}}$2"; + pubmsg_hilight_channel = "{pubmsghinick $0 $[-11]1$4{msgchannel $2}}$3"; + + pubmsg_channel = "{pubmsgnick {pubnick %G$[-11]0}$2}$1"; + msg_private_query = "{privmsgnick $[-11]0}$2"; + new_topic = " %ctopic %K│ %B'$2' %non %b$1%n%K[set by {nick %y$0}]"; + + endofnames = " names %Y│%m Total: {hilight $2} ops, {hilight $3} halfops, {hilight $4} voices, {hilight $5} normal%n"; + }; + "fe-common/irc" = { + chanmode_change = " mode %y│ %n {channick $1}"; + server_chanmode_change = "% mode %y│ %n {channick $1}"; + + own_action = "{ownaction $[-11]0} $1"; + action_private = "{pvtaction $[-11]0}$1"; + action_private_query = "{pvtaction_query $[-11]0} $2"; + action_public = "{pubaction $[-11]0}$1"; + }; +}; diff --git a/irssi/doom.theme b/irssi/doom.theme new file mode 100644 index 0000000..130f1b0 --- /dev/null +++ b/irssi/doom.theme @@ -0,0 +1,296 @@ +# When testing changes, the easiest way to reload the theme is with /RELOAD. +# This reloads the configuration file too, so if you did any changes remember +# to /SAVE it first. Remember also that /SAVE overwrites the theme file with +# old data so keep backups :) + +# TEMPLATES: + +# The real text formats that irssi uses are the ones you can find with +# /FORMAT command. Back in the old days all the colors and texts were mixed +# up in those formats, and it was really hard to change the colors since you +# might have had to change them in tens of different places. So, then came +# this templating system. + +# Now the /FORMATs don't have any colors in them, and they also have very +# little other styling. Most of the stuff you need to change is in this +# theme file. If you can't change something here, you can always go back +# to change the /FORMATs directly, they're also saved in these .theme files. + +# So .. the templates. They're those {blahblah} parts you see all over the +# /FORMATs and here. Their usage is simply {name parameter1 parameter2}. +# When irssi sees this kind of text, it goes to find "name" from abstracts +# block below and sets "parameter1" into $0 and "parameter2" into $1 (you +# can have more parameters of course). Templates can have subtemplates. +# Here's a small example: +# /FORMAT format hello {colorify {underline world}} +# abstracts = { colorify = "%G$0-%n"; underline = "%U$0-%U"; } +# When irssi expands the templates in "format", the final string would be: +# hello %G%Uworld%U%n +# ie. underlined bright green "world" text. +# and why "$0-", why not "$0"? $0 would only mean the first parameter, +# $0- means all the parameters. With {underline hello world} you'd really +# want to underline both of the words, not just the hello (and world would +# actually be removed entirely). + +# COLORS: + +# You can find definitions for the color format codes in docs/formats.txt. + +# There's one difference here though. %n format. Normally it means the +# default color of the terminal (white mostly), but here it means the +# "reset color back to the one it was in higher template". For example +# if there was /FORMAT test %g{foo}bar, and foo = "%Y$0%n", irssi would +# print yellow "foo" (as set with %Y) but "bar" would be green, which was +# set at the beginning before the {foo} template. If there wasn't the %g +# at start, the normal behaviour of %n would occur. If you _really_ want +# to use the terminal's default color, use %N. + +############################################################################# + +# default foreground color (%N) - -1 is the "default terminal color" +default_color = "-1"; + +# print timestamp/servertag at the end of line, not at beginning +info_eol = "false"; + +# these characters are automatically replaced with specified color +# (dark grey by default) +replaces = { "[]=" = "%K$*%n"; }; + +abstracts = { + ## + ## generic + ## + + # text to insert at the beginning of each non-message line + line_start = "%B-%W!%B-%n "; + + # timestamp styling, nothing by default + timestamp = "$*"; + + # any kind of text that needs hilighting, default is to bold + hilight = "%_$*%_"; + + # any kind of error message, default is bright red + error = "%R$*%n"; + + # channel name is printed + channel = "%_$*%_"; + + # nick is printed + nick = "%_$*%_"; + + # nick host is printed + nickhost = "[$*]"; + + # server name is printed + server = "%_$*%_"; + + # some kind of comment is printed + comment = "[$*]"; + + # reason for something is printed (part, quit, kick, ..) + reason = "{comment $*}"; + + # mode change is printed ([+o nick]) + mode = "{comment $*}"; + + ## + ## channel specific messages + ## + + # highlighted nick/host is printed (joins) + channick_hilight = "%C$*%n"; + chanhost_hilight = "{nickhost %c$*%n}"; + + # nick/host is printed (parts, quits, etc.) + channick = "%c$*%n"; + chanhost = "{nickhost $*}"; + + # highlighted channel name is printed + channelhilight = "%c$*%n"; + + # ban/ban exception/invite list mask is printed + ban = "%c$*%n"; + + ## + ## messages + ## + + # the basic styling of how to print message, $0 = nick mode, $1 = nick + msgnick = "%K<%n$0%G$1-%K>%n %|"; + + # message from you is printed. "msgownnick" specifies the styling of the + # nick ($0 part in msgnick) and "ownmsgnick" specifies the styling of the + # whole line. + + # Example1: You want the message text to be green: + # ownmsgnick = "{msgnick $0 $1-}%g"; + # Example2.1: You want < and > chars to be yellow: + # ownmsgnick = "%Y{msgnick $0 $1-%Y}%n"; + # (you'll also have to remove <> from replaces list above) + # Example2.2: But you still want to keep <> grey for other messages: + # pubmsgnick = "%K{msgnick $0 $1-%K}%n"; + # pubmsgmenick = "%K{msgnick $0 $1-%K}%n"; + # pubmsghinick = "%K{msgnick $1 $0$2-%n%K}%n"; + # ownprivmsgnick = "%K{msgnick $*%K}%n"; + # privmsgnick = "%K{msgnick %R$*%K}%n"; + + # $0 = nick mode, $1 = nick + ownmsgnick = "%Y<%n$0%G$1-%Y>%n %|"; + # ownmsgnick = "{msgnick $0 $1-}"; + ownnick = "%g$*%n"; + + # public message in channel, $0 = nick mode, $1 = nick + pubmsgnick = "{msgnick $0 $1-}"; + pubnick = "%G$*%n"; + + # public message in channel meant for me, $0 = nick mode, $1 = nick + # pubmsgmenick = "{msgnick $0 $1-}"; + pubmsgmenick = "%R<%n$0%Y$1-%R>%n %|"; + menick = "%Y$*%n"; + + # public highlighted message in channel + # $0 = highlight color, $1 = nick mode, $2 = nick + pubmsghinick = "{msgnick $1 $0$2-%n}"; + + # channel name is printed with message + msgchannel = "%K:%c$*%n"; + + # private message, $0 = nick, $1 = host + privmsg = "[%R$0%K(%r$1-%K)%n] "; + + # private message from you, $0 = "msg", $1 = target nick + ownprivmsg = "[%r$0%K(%R$1-%K)%n] "; + + # own private message in query + ownprivmsgnick = "{msgnick $*}"; + ownprivnick = "%W$*%n"; + + # private message in query + privmsgnick = "{msgnick %R$*%n}"; + + ## + ## Actions (/ME stuff) + ## + + # used internally by this theme + action_core = "%Y * $*"; + + # generic one that's used by most actions + action = "{action_core $*} "; + + # own action, both private/public + ownaction = "{action $*}"; + + # own action with target, both private/public + ownaction_target = "{action_core $0}%K:%c$1%n "; + + # private action sent by others + pvtaction = "%W (*) $*%n "; + pvtaction_query = "{action $*}"; + + # public action sent by others + pubaction = "{action $*}"; + + + ## + ## other IRC events + ## + + # whois + whois = "%# $[8]0 : $1-"; + + # notices + ownnotice = "[%r$0%K(%R$1-%K)]%n "; + notice = "%K-%M$*%K-%n "; + pubnotice_channel = "%K:%m$*"; + pvtnotice_host = "%K(%m$*%K)"; + servernotice = "%g!$*%n "; + + # CTCPs + ownctcp = "[%r$0%K(%R$1-%K)] "; + ctcp = "%g$*%n"; + + # wallops + wallop = "%W$*%n: "; + wallop_nick = "%n$*"; + wallop_action = "%W * $*%n "; + + # netsplits + netsplit = "%R$*%n"; + netjoin = "%C$*%n"; + + # /names list + names_prefix = ""; + names_nick = "[%_$0%_$1-] "; + names_nick_op = "{names_nick $*}"; + names_nick_halfop = "{names_nick $*}"; + names_nick_voice = "{names_nick $*}"; + names_users = "[%g$*%n]"; + names_channel = "%G$*%n"; + + # DCC + dcc = "%g$*%n"; + dccfile = "%_$*%_"; + + # DCC chat, own msg/action + dccownmsg = "[%r$0%K($1-%K)%n] "; + dccownnick = "%R$*%n"; + dccownquerynick = "%W$*%n"; + dccownaction = "{action $*}"; + dccownaction_target = "{action_core $0}%K:%c$1%n "; + + # DCC chat, others + dccmsg = "[%G$1-%K(%g$0%K)%n] "; + dccquerynick = "%G$*%n"; + dccaction = "%W (*dcc*) $*%n %|"; + + ## + ## statusbar + ## + + # default background for all statusbars. You can also give + # the default foreground color for statusbar items. + sb_background = "%1%Y"; + + # default backround for "default" statusbar group + #sb_default_bg = "%4"; + # background for prompt / input line + sb_prompt_bg = "%W"; + # background for info statusbar + sb_info_bg = "%W"; + # background for topicbar (same default) + #sb_topic_bg = "%4"; + + # text at the beginning of statusbars. sb-item already puts + # space there,so we don't use anything by default. + sbstart = ""; + # text at the end of statusbars. Use space so that it's never + # used for anything. + sbend = " "; + + topicsbstart = "{sbstart $*}"; + topicsbend = "{sbend $*}"; + + prompt = "[$*] "; + + sb = " $*"; + sbmode = "(%W+$*%n)"; + sbaway = " (%GzZzZ%n)"; + sbservertag = ":$0 (change with ^X)"; + sbnickmode = "$0"; + + # activity in statusbar + + # ',' separator + sb_act_sep = "%Y$*%n"; + # normal text + sb_act_text = "%c$*%n"; + # public message + sb_act_msg = "%Y$*%n"; + # hilight + sb_act_hilight = "%W$*%n"; + # hilight with specified color, $0 = color, $1 = text + sb_act_hilight_color = "$0$1-%n"; +}; diff --git a/irssi/gorgatron.theme b/irssi/gorgatron.theme new file mode 100644 index 0000000..df2dd0b --- /dev/null +++ b/irssi/gorgatron.theme @@ -0,0 +1,299 @@ +# When testing changes, the easiest way to reload the theme is with /RELOAD. +# This reloads the configuration file too, so if you did any changes remember +# to /SAVE it first. Remember also that /SAVE overwrites the theme file with +# old data so keep backups :) + +# TEMPLATES: + +# The real text formats that irssi uses are the ones you can find with +# /FORMAT command. Back in the old days all the colors and texts were mixed +# up in those formats, and it was really hard to change the colors since you +# might have had to change them in tens of different places. So, then came +# this templating system. + +# Now the /FORMATs don't have any colors in them, and they also have very +# little other styling. Most of the stuff you need to change is in this +# theme file. If you can't change something here, you can always go back +# to change the /FORMATs directly, they're also saved in these .theme files. + +# So .. the templates. They're those {blahblah} parts you see all over the +# /FORMATs and here. Their usage is simply {name parameter1 parameter2}. +# When irssi sees this kind of text, it goes to find "name" from abstracts +# block below and sets "parameter1" into $0 and "parameter2" into $1 (you +# can have more parameters of course). Templates can have subtemplates. +# Here's a small example: +# /FORMAT format hello {colorify {underline world}} +# abstracts = { colorify = "%G$0-%n"; underline = "%U$0-%U"; } +# When irssi expands the templates in "format", the final string would be: +# hello %G%Uworld%U%n +# ie. underlined bright green "world" text. +# and why "$0-", why not "$0"? $0 would only mean the first parameter, +# $0- means all the parameters. With {underline hello world} you'd really +# want to underline both of the words, not just the hello (and world would +# actually be removed entirely). + +# COLORS: + +# You can find definitions for the color format codes in docs/formats.txt. + +# There's one difference here though. %n format. Normally it means the +# default color of the terminal (white mostly), but here it means the +# "reset color back to the one it was in higher template". For example +# if there was /FORMAT test %g{foo}bar, and foo = "%Y$0%n", irssi would +# print yellow "foo" (as set with %Y) but "bar" would be green, which was +# set at the beginning before the {foo} template. If there wasn't the %g +# at start, the normal behaviour of %n would occur. If you _really_ want +# to use the terminal's default color, use %N. + +############################################################################# +#foreground color (%N) - -1 is the "default terminal color" +default_color = "-1"; + +# print timestamp/servertag at the end of line, not at beginning +info_eol = "false"; + +# these characters are automatically replaced with specified color +# (dark grey by default) +replaces = { "[]=" = "%K$*%n"; }; + +abstracts = { + ## + ## generic + ## + + # text to insert at the beginning of each non-message line + line_start = "%B-%n!%B-%n "; + + # timestamp styling, nothing by default + timestamp = "$*"; + + # any kind of text that needs hilighting, default is to bold + hilight = "%_$*%_"; + + # any kind of error message, default is bright red + error = "%G$*%n"; + + # channel name is printed + channel = "%_$*%_"; + + # nick is printed + nick = "%_$*%_"; + + # nick host is printed + nickhost = "[$*]"; + + # server name is printed + server = "%_$*%_"; + + # some kind of comment is printed + comment = "[$*]"; + + # reason for something is printed (part, quit, kick, ..) + reason = "{comment $*}"; + + # mode change is printed ([+o nick]) + mode = "{comment $*}"; + + ## + ## channel specific messages + ## + + # highlighted nick/host is printed (joins) + channick_hilight = "%G$*%n"; + chanhost_hilight = "{nickhost %g$*%n}"; + + # nick/host is printed (parts, quits, etc.) + channick = "%g$*%n"; + chanhost = "{nickhost $*}"; + + # highlighted channel name is printed + channelhilight = "%g$*%n"; + + # ban/ban exception/invite list mask is printed + ban = "%g$*%n"; + + ## + ## messages + ## + + # the basic styling of how to print message, $0 = nick mode, $1 = nick + msgnick = "%K<%n$0$1-%K>%n %|"; + + # message from you is printed. "msgownnick" specifies the styling of the + # nick ($0 part in msgnick) and "ownmsgnick" specifies the styling of the + # whole line. + + # Example1: You want the message text to be green: + # ownmsgnick = "{msgnick $0 $1-}%g"; + # Example2.1: You want < and > chars to be yellow: + # ownmsgnick = "%Y{msgnick $0 $1-%Y}%n"; + # (you'll also have to remove <> from replaces list above) + # Example2.2: But you still want to keep <> grey for other messages: + # pubmsgnick = "%K{msgnick $0 $1-%K}%n"; + # pubmsgmenick = "%K{msgnick $0 $1-%K}%n"; + # pubmsghinick = "%K{msgnick $1 $0$2-%n%K}%n"; + # ownprivmsgnick = "%K{msgnick $*%K}%n"; + # privmsgnick = "%K{msgnick %G$*%K}%n"; + + # $0 = nick mode, $1 = nick + ownmsgnick = "{msgnick $0 $1-}"; + ownnick = "%_$*%n"; + + # public message in channel, $0 = nick mode, $1 = nick + pubmsgnick = "{msgnick $0 $1-}"; + pubnick = "%N$*%n"; + + # public message in channel meant for me, $0 = nick mode, $1 = nick + pubmsgmenick = "{msgnick $0 $1-}"; + menick = "%Y$*%n"; + + # public highlighted message in channel + # $0 = highlight color, $1 = nick mode, $2 = nick + pubmsghinick = "{msgnick $1 $0$2-%n}"; + + # channel name is printed with message + msgchannel = "%K:%g$*%n"; + + # private message, $0 = nick, $1 = host + privmsg = "[%G$0%K(%g$1-%K)%n] "; + + # private message from you, $0 = "msg", $1 = target nick + ownprivmsg = "[%g$0%K(%G$1-%K)%n] "; + + # own private message in query + ownprivmsgnick = "{msgnick $*}"; + ownprivnick = "%_$*%n"; + + # private message in query + privmsgnick = "{msgnick %G$*%n}"; + + ## + ## Actions (/ME stuff) + ## + + # used internally by this theme + action_core = "%_ * $*%n"; + + # generic one that's used by most actions + action = "{action_core $*} "; + + # own action, both private/public + ownaction = "{action $*}"; + + # own action with target, both private/public + ownaction_target = "{action_core $0}%K:%g$1%n "; + + # private action sent by others + pvtaction = "%_ (*) $*%n "; + pvtaction_query = "{action $*}"; + + # public action sent by others + pubaction = "{action $*}"; + + + ## + ## other IRC events + ## + + # whois + whois = "%# $[8]0 : $1-"; + + # notices + ownnotice = "[%g$0%K(%G$1-%K)]%n "; + notice = "%K-%M$*%K-%n "; + pubnotice_channel = "%K:%m$*"; + pvtnotice_host = "%K(%m$*%K)"; + servernotice = "%g!$*%n "; + + # CTCPs + ownctcp = "[%g$0%K(%G$1-%K)] "; + ctcp = "%g$*%n"; + + # wallops + wallop = "%_$*%n: "; + wallop_nick = "%n$*"; + wallop_action = "%_ * $*%n "; + + # netsplits + netsplit = "%G$*%n"; + netjoin = "%G$*%n"; + + # /names list + names_prefix = ""; + names_nick = "[%_$0%_$1-] "; + names_nick_op = "{names_nick $*}"; + names_nick_halfop = "{names_nick $*}"; + names_nick_voice = "{names_nick $*}"; + names_users = "[%g$*%n]"; + names_channel = "%G$*%n"; + + # DCC + dcc = "%g$*%n"; + dccfile = "%_$*%_"; + + # DCC chat, own msg/action + dccownmsg = "[%g$0%K($1-%K)%n] "; + dccownnick = "%G$*%n"; + dccownquerynick = "%_$*%n"; + dccownaction = "{action $*}"; + dccownaction_target = "{action_core $0}%K:%g$1%n "; + + # DCC chat, others + dccmsg = "[%G$1-%K(%g$0%K)%n] "; + dccquerynick = "%G$*%n"; + dccaction = "%_ (*dcc*) $*%n %|"; + + ## + ## statusbar + ## + + # default background for all statusbars. You can also give + # the default foreground color for statusbar items. + sb_background = "%w"; + + # default backround for "default" statusbar group + #sb_default_bg = "%w"; + # background for prompt / input line + sb_prompt_bg = "%w"; + # background for info statusbar + sb_info_bg = "%w"; + # background for topicbar (same default) + #sb_topic_bg = "%w"; + + # text at the beginning of statusbars. sb-item already puts + # space there,so we don't use anything by default. + sbstart = ""; + # text at the end of statusbars. Use space so that it's never + # used for anything. + sbend = " "; + + topicsbstart = "{sbstart $*}"; + topicsbend = "{sbend $*}"; + + prompt = "<<$*>> "; + + sb = " %m[ %n$*%m ]%n"; + sbmode = "(%M+%n$*)"; + sbaway = " (%MzZzZ%n)"; + sbservertag = ":$0 (change with ^X)"; + sbnickmode = "$0"; + + # activity in statusbar + + # ',' separator + sb_act_sep = "%n$*"; + # normal text + sb_act_text = "%N$*"; + # public message + sb_act_msg = "%W$*"; + # hilight + sb_act_hilight = "%M$*"; + # hilight with specified color, $0 = color, $1 = text + sb_act_hilight_color = "$0$1-%n"; +}; +formats = { + "fe-common/core" = { + pubmsg = "{pubmsgnick $2 {pubnick \00304$[-12]0}}$1"; + timestamp = "{timestamp [%%H:%%M] }"; + }; +}; diff --git a/irssi/kra3.theme b/irssi/kra3.theme new file mode 100644 index 0000000..532a918 --- /dev/null +++ b/irssi/kra3.theme @@ -0,0 +1,297 @@ +# When testing changes, the easiest way to reload the theme is with /RELOAD. +# This reloads the configuration file too, so if you did any changes remember +# to /SAVE it first. Remember also that /SAVE overwrites the theme file with +# old data so keep backups :) + +# TEMPLATES: + +# The real text formats that irssi uses are the ones you can find with +# /FORMAT command. Back in the old days all the colors and texts were mixed +# up in those formats, and it was really hard to change the colors since you +# might have had to change them in tens of different places. So, then came +# this templating system. + +# Now the /FORMATs don't have any colors in them, and they also have very +# little other styling. Most of the stuff you need to change is in this +# theme file. If you can't change something here, you can always go back +# to change the /FORMATs directly, they're also saved in these .theme files. + +# So .. the templates. They're those {blahblah} parts you see all over the +# /FORMATs and here. Their usage is simply {name parameter1 parameter2}. +# When irssi sees this kind of text, it goes to find "name" from abstracts +# block below and sets "parameter1" into $0 and "parameter2" into $1 (you +# can have more parameters of course). Templates can have subtemplates. +# Here's a small example: +# /FORMAT format hello {colorify {underline world}} +# abstracts = { colorify = "%G$0-%n"; underline = "%U$0-%U"; } +# When irssi expands the templates in "format", the final string would be: +# hello %G%Uworld%U%n +# ie. underlined bright green "world" text. +# and why "$0-", why not "$0"? $0 would only mean the first parameter, +# $0- means all the parameters. With {underline hello world} you'd really +# want to underline both of the words, not just the hello (and world would +# actually be removed entirely). + +# COLORS: + +# You can find definitions for the color format codes in docs/formats.txt. + +# There's one difference here though. %n format. Normally it means the +# default color of the terminal (white mostly), but here it means the +# "reset color back to the one it was in higher template". For example +# if there was /FORMAT test %g{foo}bar, and foo = "%Y$0%n", irssi would +# print yellow "foo" (as set with %Y) but "bar" would be green, which was +# set at the beginning before the {foo} template. If there wasn't the %g +# at start, the normal behaviour of %n would occur. If you _really_ want +# to use the terminal's default color, use %N. + +############################################################################# + +# default foreground color (%N) - -1 is the "default terminal color" +default_color = "-1"; + +# print timestamp/servertag at the end of line, not at beginning +info_eol = "false"; + +# these characters are automatically replaced with specified color +# (dark grey by default) +replaces = { "[]=" = "%K$*%n"; }; + +abstracts = { + ## + ## generic + ## + + # text to insert at the beginning of each non-message line + line_start = "%B-%n!%B-%n "; + + # timestamp styling, nothing by default + timestamp = "$*"; + + # any kind of text that needs hilighting, default is to bold + hilight = "%_$*%_"; + + # any kind of error message, default is bright red + error = "%R$*%n"; + + # channel name is printed + channel = "%_$*%_"; + + # nick is printed + nick = "%_$*%_"; + + # nick host is printed + nickhost = "[$*]"; + + # server name is printed + server = "%_$*%_"; + + # some kind of comment is printed + comment = "[$*]"; + + # reason for something is printed (part, quit, kick, ..) + reason = "{comment $*}"; + + # mode change is printed ([+o nick]) + mode = "{comment $*}"; + + ## + ## channel specific messages + ## + + # highlighted nick/host is printed (joins) + channick_hilight = "%C$*%n"; + chanhost_hilight = "{nickhost %c$*%n}"; + + # nick/host is printed (parts, quits, etc.) + channick = "%c$*%n"; + chanhost = "{nickhost $*}"; + + # highlighted channel name is printed + channelhilight = "%c$*%n"; + + # ban/ban exception/invite list mask is printed + ban = "%c$*%n"; + + ## + ## messages + ## + + # the basic styling of how to print message, $0 = nick mode, $1 = nick + msgnick = "%K<%n$0$1-%K>%n %|"; + + # message from you is printed. "msgownnick" specifies the styling of the + # nick ($0 part in msgnick) and "ownmsgnick" specifies the styling of the + # whole line. + + # Example1: You want the message text to be green: + # ownmsgnick = "{msgnick $0 $1-}%g"; + # Example2.1: You want < and > chars to be yellow: + # ownmsgnick = "%Y{msgnick $0 $1-%Y}%n"; + # (you'll also have to remove <> from replaces list above) + # Example2.2: But you still want to keep <> grey for other messages: + # pubmsgnick = "%K{msgnick $0 $1-%K}%n"; + # pubmsgmenick = "%K{msgnick $0 $1-%K}%n"; + # pubmsghinick = "%K{msgnick $1 $0$2-%n%K}%n"; + # ownprivmsgnick = "%K{msgnick $*%K}%n"; + # privmsgnick = "%K{msgnick %R$*%K}%n"; + + # $0 = nick mode, $1 = nick + ownmsgnick = "{msgnick $0 $1-}"; + ownnick = "%_$*%n"; + + # public message in channel, $0 = nick mode, $1 = nick + pubmsgnick = "{msgnick $0 $1-}"; + pubnick = "%N$*%n"; + + # public message in channel meant for me, $0 = nick mode, $1 = nick + pubmsgmenick = "{msgnick $0 $1-}"; + menick = "%Y$*%n"; + + # public highlighted message in channel + # $0 = highlight color, $1 = nick mode, $2 = nick + pubmsghinick = "{msgnick $1 $0$2-%n}"; + + # channel name is printed with message + msgchannel = "%K:%c$*%n"; + + # private message, $0 = nick, $1 = host + privmsg = "[%R$0%K(%r$1-%K)%n] "; + + # private message from you, $0 = "msg", $1 = target nick + ownprivmsg = "[%r$0%K(%R$1-%K)%n] "; + + # own private message in query + ownprivmsgnick = "{msgnick $*}"; + ownprivnick = "%_$*%n"; + + # private message in query + privmsgnick = "{msgnick %R$*%n}"; + + ## + ## Actions (/ME stuff) + ## + + # used internally by this theme + action_core = "%_ * $*%n"; + + # generic one that's used by most actions + action = "{action_core $*} "; + + # own action, both private/public + ownaction = "{action $*}"; + + # own action with target, both private/public + ownaction_target = "{action_core $0}%K:%c$1%n "; + + # private action sent by others + pvtaction = "%_ (*) $*%n "; + pvtaction_query = "{action $*}"; + + # public action sent by others + pubaction = "{action $*}"; + + + ## + ## other IRC events + ## + + # whois + whois = "%# $[8]0 : $1-"; + + # notices + ownnotice = "[%r$0%K(%R$1-%K)]%n "; + notice = "%K-%M$*%K-%n "; + pubnotice_channel = "%K:%m$*"; + pvtnotice_host = "%K(%m$*%K)"; + servernotice = "%g!$*%n "; + + # CTCPs + ownctcp = "[%r$0%K(%R$1-%K)] "; + ctcp = "%g$*%n"; + + # wallops + wallop = "%_$*%n: "; + wallop_nick = "%n$*"; + wallop_action = "%_ * $*%n "; + + # netsplits + netsplit = "%R$*%n"; + netjoin = "%C$*%n"; + + # /names list + names_prefix = ""; + names_nick = "[%_$0%_$1-] "; + names_nick_op = "{names_nick $*}"; + names_nick_halfop = "{names_nick $*}"; + names_nick_voice = "{names_nick $*}"; + names_users = "[%g$*%n]"; + names_channel = "%G$*%n"; + + # DCC + dcc = "%g$*%n"; + dccfile = "%_$*%_"; + + # DCC chat, own msg/action + dccownmsg = "[%r$0%K($1-%K)%n] "; + dccownnick = "%R$*%n"; + dccownquerynick = "%_$*%n"; + dccownaction = "{action $*}"; + dccownaction_target = "{action_core $0}%K:%c$1%n "; + + # DCC chat, others + dccmsg = "[%G$1-%K(%g$0%K)%n] "; + dccquerynick = "%G$*%n"; + dccaction = "%_ (*dcc*) $*%n %|"; + + ## + ## statusbar + ## + + # default background for all statusbars. You can also give + # the default foreground color for statusbar items. + sb_background = "%4%w"; + + # default backround for "default" statusbar group + #sb_default_bg = "%4"; + # background for prompt / input line + sb_prompt_bg = "%n"; + # background for info statusbar + sb_info_bg = "%8"; + # background for topicbar (same default) + #sb_topic_bg = "%4"; + + # text at the beginning of statusbars. sb-item already puts + # space there,so we don't use anything by default. + sbstart = ""; + # text at the end of statusbars. Use space so that it's never + # used for anything. + sbend = " "; + + topicsbstart = "{sbstart $*}"; + topicsbend = "{sbend $*}"; + + prompt = "[$*] "; + + sb = " %c[%n$*%c]%n"; + sbmode = "(%c+%n$*)"; + sbaway = " (%GzZzZ%n)"; + sbservertag = ":$0 (change with ^X)"; + sbnickmode = "$0"; + + # activity in statusbar + + # ',' separator + sb_act_sep = "%c$*"; + # normal text + sb_act_text = "%c$*"; + # public message + sb_act_msg = "%W$*"; + # hilight + sb_act_hilight = "%M$*"; + # hilight with specified color, $0 = color, $1 = text + sb_act_hilight_color = "$0$1-%n"; +}; +formats = { + "fe-common/core" = { timestamp = "{timestamp %%H:%%M:%%S }"; }; +}; diff --git a/irssi/scripts/autorun/adv_windowlist.pl b/irssi/scripts/autorun/adv_windowlist.pl new file mode 100644 index 0000000..780ab35 --- /dev/null +++ b/irssi/scripts/autorun/adv_windowlist.pl @@ -0,0 +1,2478 @@ +use strict; # use warnings; + +# {{{ debug + +#BEGIN { +# open STDERR, '>', '/home/ailin/wlstatwarnings'; +#}; + +# FIXME COULD SOMEONE PLEASE TELL ME HOW TO SHUT UP +# +# ... +# Variable "*" will not stay shared at (eval *) line *. +# Variable "*" will not stay shared at (eval *) line *. +# ... +# Can't locate package Irssi::Nick for @Irssi::Irc::Nick::ISA at (eval *) line *. +# ... +# +# THANKS + +# }}} + +# if you don't know how to operate folds, type zn + +# {{{ header + +use Irssi (); # which is the minimum required version of Irssi ? +use Irssi::TextUI; + +use vars qw($VERSION %IRSSI); + +$VERSION = '0.6ca'; +%IRSSI = ( + original_authors => q(BC-bd, Veli, Timo Sirainen, ). + q(Wouter Coekaerts, Jean-Yves Lefort), # (decadix) + original_contact => q(bd@bc-bd.org, veli@piipiip.net, tss@iki.fi, ). + q(wouter@coekaerts.be, jylefort@brutele.be), + authors => q(Nei), + contact => q(Nei @ anti@conference.jabber.teamidiot.de), + url => "http://anti.teamidiot.de/", + name => q(awl), + description => q(Adds a permanent advanced window list on the right or ). + q(in a statusbar.), + description2 => q(Based on chanact.pl which was apparently based on ). + q(lightbar.c and nicklist.pl with various other ideas ). + q(from random scripts.), + license => q(GNU GPLv2 or later), +); + +# }}} + +# {{{ *** D O C U M E N T A T I O N *** + +# adapted by Nei + +############### +# {{{ original comment +# ########### +# # Adds new powerful and customizable [Act: ...] item (chanelnames,modes,alias). +# # Lets you give alias characters to windows so that you can select those with +# # meta-<char>. +# # +# # for irssi 0.8.2 by bd@bc-bd.org +# # +# # inspired by chanlist.pl by 'cumol@hammerhart.de' +# # +# ######### +# # {{{ Contributors +# ######### +# # +# # veli@piipiip.net /window_alias code +# # qrczak@knm.org.pl chanact_abbreviate_names +# # qerub@home.se Extra chanact_show_mode and chanact_chop_status +# # }}} +# }}} +# +# {{{ FURTHER THANKS TO +# ############ +# # buu, fxn, Somni, Khisanth, integral, tybalt89 for much support in any aspect perl +# # and the channel in general ( #perl @ freenode ) and especially the ir_* functions +# # +# # Valentin 'senneth' Batz ( vb@g-23.org ) for the pointer to grep.pl, continuous support +# # and help in digging up ir_strip_codes +# # +# # OnetrixNET technology networks for the debian environment +# # +# # Monkey-Pirate.com / Spaceman Spiff for the webspace +# # +# }}} + +###### +# {{{ M A I N P R O B L E M +##### +# +# It is impossible to place the awl on a statusbar together with other items, +# because I do not know how to calculate the size that it is going to get +# granted, and therefore I cannot do the linebreaks properly. +# This is what is missing to make a nice script out of awl. +# If you have any ideas, please contact me ASAP :). +# }}} +###### + +###### +# {{{ UTF-8 PROBLEM +##### +# +# Please help me find a solution to this: +# this be your statusbar, it is using up the maximum term size +# [[1=1]#abc [2=2]#defghi] +# +# now consider this example:i +# "ascii" characters are marked with ., utf-8 characters with * +# [[1=1]#... [2=2]#...***] +# +# you should think that this is how it would be displayed? WRONG! +# [[1=1]#... [2=2]#...*** ] +# +# this is what Irssi does.. I believe my length calculating code to be correct, +# however, I'd love to be proven wrong (or receive any other fix, too, of +# course!) +# }}} +###### + +######### +# {{{ USAGE +### +# +# copy the script to ~/.irssi/scripts/ +# +# In irssi: +# +# /script load awl +# +# +# Hint: to get rid of the old [Act:] display +# /statusbar window remove act +# +# to get it back: +# /statusbar window add -after lag -priority 10 act +# }}} +########## +# {{{ OPTIONS +######## +# +# {{{ /set awl_display_nokey <string> +# /set awl_display_key <string> +# /set awl_display_nokey_active <string> +# /set awl_display_key_active <string> +# * string : Format String for one window. The following $'s are expanded: +# $C : Name +# $N : Number of the Window +# $Q : meta-Keymap +# $H : Start highlighting +# $S : Stop highlighting +# /+++++++++++++++++++++++++++++++++, +# | **** I M P O R T A N T : **** | +# | | +# | don't forget to use $S if you | +# | used $H before! | +# | | +# '+++++++++++++++++++++++++++++++++/ +# XXX NOTE ON *_active: there is a BUG somewhere in the length +# XXX calculation. currently it's best to NOT remove $H/$S from those +# XXX settings if you use it in the non-active settings. +# }}} +# {{{ /set awl_separator <string> +# * string : Charater to use between the channel entries +# you'll need to escape " " space and "$" like this: +# "/set awl_separator \ " +# "/set awl_separator \$" +# and {}% like this: +# "/set awl_separator %{" +# "/set awl_separator %}" +# "/set awl_separator %%" +# (reason being, that the separator is used inside a {format }) +# }}} +# {{{ /set awl_prefer_name <ON|OFF> +# * this setting decides whether awl will use the active_name (OFF) or the +# window name as the name/caption in awl_display_*. +# That way you can rename windows using /window name myownname. +# }}} +# {{{ /set awl_hide_data <num> +# * num : hide the window if its data_level is below num +# set it to 0 to basically disable this feature, +# 1 if you don't want windows without activity to be shown +# 2 to show only those windows with channel text or hilight +# 3 to show only windows with hilight +# }}} +# {{{ /set awl_maxlines <num> +# * num : number of lines to use for the window list (0 to disable, negative +# lock) +# }}} +# {{{ /set awl_columns <num> +# * num : number of columns to use in screen mode (0 for unlimited) +# }}} +# {{{ /set awl_block <num> +# * num : width of a column in screen mode (negative values = block display) +# /+++++++++++++++++++++++++++++++++, +# | ****** W A R N I N G ! ****** | +# | | +# | If your block display looks | +# | DISTORTED, you need to add the | +# | following line to your .theme | +# | file under | +# | abstracts = { : | +# | | +# | sb_act_none = "%n$*"; | +# | | +# '+++++++++++++++++++++++++++++++++/ +#.02:08:26. < shi> Irssi::current_theme()->get_format <.. can this be used? +# }}} +# {{{ /set awl_sbar_maxlength <ON|OFF> +# * if you enable the maxlength setting, the block width will be used as a +# maximum length for the non-block statusbar mode too. +# }}} +# {{{ /set awl_height_adjust <num> +# * num : how many lines to leave empty in screen mode +# }}} +# {{{ /set awl_sort <-data_level|-last_line|refnum> +# * you can change the window sort order with this variable +# -data_level : sort windows with hilight first +# -last_line : sort windows in order of activity +# refnum : sort windows by window number +# }}} +# {{{ /set awl_placement <top|bottom> +# /set awl_position <num> +# * these settings correspond to /statusbar because awl will create +# statusbars for you +# (see /help statusbar to learn more) +# }}} +# {{{ /set awl_all_disable <ON|OFF> +# * if you set awl_all_disable to ON, awl will also remove the +# last statusbar it created if it is empty. +# As you might guess, this only makes sense with awl_hide_data > 0 ;) +# }}} +# {{{ /set awl_automode <sbar|screen|emulate_lightbar> +# * this setting defines whether the window list is shown in statusbars or +# whether the screen hack is used (from nicklist.pl) +# }}} +# }}} +########## +# {{{ COMMANDS +######## +# {{{ /awl paste <ON|OFF|TOGGLE> +# * enables or disables the screen hack windowlist. This is useful when you +# want to mark & copy text that you want to paste somewhere (hence the +# name). (ON means AWL disabled!) +# This is nicely bound to a function key for example. +# }}} +# {{{ /awl redraw +# * redraws the screen hack windowlist. There are many occasions where the +# screen hack windowlist can get destroyed so you can use this command to +# fix it. +# }}} +# }}} +### +# {{{ WISHES +#### +# +# if you fiddle with my mess, provide me with your fixes so I can benefit as well +# +# Nei =^.^= ( anti@conference.jabber.teamidiot.de ) +# }}} + +# }}} + +# {{{ modules + +#use Class::Classless; +#use Term::Info; + +# }}} + +# {{{ global variables + +my $replaces = '[=]'; # AARGH!!! (chars that are always surrounded by weird + # colour codes by Irssi) + +my $actString = []; # statusbar texts +my $currentLines = 0; +my $resetNeeded; # layout/screen has changed, redo everything +my $needRemake; # "normal" changes +#my $callcount = 0; +sub GLOB_QUEUE_TIMER () { 100 } +my $globTime = undef; # timer to limit remake() calls + + +my $SCREEN_MODE; +my $DISABLE_SCREEN_TEMP; +my $currentColumns = 0; +my $screenResizing; +my ($screenHeight, $screenWidth); +my $screenansi = bless { + NAME => 'Screen::ANSI', + PARENTS => [], + METHODS => { + dcs => sub { "\033P" }, + st => sub { "\033\\"}, + } +}, 'Class::Classless::X'; +#my $terminfo = new Term::Info 'xterm'; # xterm here, make this modular +# {{{{{{{{{{{{{{{ +my $terminfo = bless { # xterm here, make this modular + NAME => 'Term::Info::xterm', + PARENTS => [], + METHODS => { + # civis=\E[?25l, + civis => sub { "\033[?25l" }, + # sc=\E7, + sc => sub { "\0337" }, + # cup=\E[%i%p1%d;%p2%dH, + cup => sub { shift;shift; "\033[" . ($_[0] + 1) . ';' . ($_[1] + 1) . 'H' }, + # el=\E[K, + el => sub { "\033[K" }, + # rc=\E8, + rc => sub { "\0338" }, + # cnorm=\E[?25h, + cnorm => sub { "\033[?25h" }, + # setab=\E[4%p1%dm, + setab => sub { shift;shift; "\033[4" . $_[0] . 'm' }, + # setaf=\E[3%p1%dm, + setaf => sub { shift;shift; "\033[3" . $_[0] . 'm' }, + # bold=\E[1m, + bold => sub { "\033[1m" }, + # blink=\E[5m, + blink => sub { "\033[5m" }, + # rev=\E[7m, + rev => sub { "\033[7m" }, + # op=\E[39;49m, + op => sub { "\033[39;49m" }, + } +}, 'Class::Classless::X'; +# }}}}}}}}}}}}}}} + + +sub setc () { + $IRSSI{'name'} +} +sub set ($) { + setc . '_' . shift +} + +# }}} + + +# {{{ sbar mode + +my %statusbars; # currently active statusbars + +# maybe I should just tie the array ? +sub add_statusbar { + for (@_) { + # add subs + for my $l ($_) { { + no strict 'refs'; # :P + *{set$l} = sub { awl($l, @_) }; + }; } + Irssi::command('statusbar ' . (set$_) . ' reset'); + Irssi::command('statusbar ' . (set$_) . ' enable'); + if (lc Irssi::settings_get_str(set 'placement') eq 'top') { + Irssi::command('statusbar ' . (set$_) . ' placement top'); + } + if ((my $x = int Irssi::settings_get_int(set 'position')) != 0) { + Irssi::command('statusbar ' . (set$_) . ' position ' . $x); + } + Irssi::command('statusbar ' . (set$_) . ' add -priority 100 -alignment left barstart'); + Irssi::command('statusbar ' . (set$_) . ' add ' . (set$_)); + Irssi::command('statusbar ' . (set$_) . ' add -priority 100 -alignment right barend'); + Irssi::command('statusbar ' . (set$_) . ' disable'); + Irssi::statusbar_item_register(set$_, '$0', set$_); + $statusbars{$_} = {}; + } +} + +sub remove_statusbar { + for (@_) { + Irssi::command('statusbar ' . (set$_) . ' reset'); + Irssi::statusbar_item_unregister(set$_); # XXX does this actually work ? + # DO NOT REMOVE the sub before you have unregistered it :)) + for my $l ($_) { { + no strict 'refs'; + undef &{set$l}; + }; } + delete $statusbars{$_}; + } +} + +sub syncLines { + my $temp = $currentLines; + $currentLines = @$actString; + #Irssi::print("current lines: $temp new lines: $currentLines"); + my $currMaxLines = Irssi::settings_get_int(set 'maxlines'); + if ($currMaxLines > 0 and @$actString > $currMaxLines) { + $currentLines = $currMaxLines; + } + elsif ($currMaxLines < 0) { + $currentLines = abs($currMaxLines); + } + return if ($temp == $currentLines); + if ($currentLines > $temp) { + for ($temp .. ($currentLines - 1)) { + add_statusbar($_); + Irssi::command('statusbar ' . (set$_) . ' enable'); + } + } + else { + for ($_ = ($temp - 1); $_ >= $currentLines; $_--) { + Irssi::command('statusbar ' . (set$_) . ' disable'); + remove_statusbar($_); + } + } +} + +# FIXME implement $get_size_only check, and user $item->{min|max-size} ?? +sub awl { + my ($line, $item, $get_size_only) = @_; + + if ($needRemake) { + $needRemake = undef; + remake(); + } + + my $text = $actString->[$line]; # DO NOT set the actual $actString->[$line] to '' here or + $text = '' unless defined $text; # you'll screw up the statusbar counter ($currentLines) + $item->default_handler($get_size_only, $text, '', 1); +} + +# remove old statusbars +my %killBar; +sub get_old_status { + my ($textDest, $cont, $cont_stripped) = @_; + if ($textDest->{'level'} == 524288 and $textDest->{'target'} eq '' + and !defined($textDest->{'server'}) + ) { + my $name = quotemeta(set ''); + if ($cont_stripped =~ m/^$name(\d+)\s/) { $killBar{$1} = {}; } + Irssi::signal_stop(); + } +} +sub killOldStatus { + %killBar = (); + Irssi::signal_add_first('print text' => 'get_old_status'); + Irssi::command('statusbar'); + Irssi::signal_remove('print text' => 'get_old_status'); + remove_statusbar(keys %killBar); +} +#killOldStatus(); + +# end sbar mode }}} + + +# {{{ keymaps + +my %keymap; + +sub get_keymap { + my ($textDest, undef, $cont_stripped) = @_; + if ($textDest->{'level'} == 524288 and $textDest->{'target'} eq '' + and !defined($textDest->{'server'}) + ) { + if ($cont_stripped =~ m/((?:meta-)+)(.)\s+change_window (\d+)/) { + my ($level, $key, $window) = ($1, $2, $3); + my $numlevel = ($level =~ y/-//) - 1; + $keymap{$window} = ('-' x $numlevel) . "$key"; + } + Irssi::signal_stop(); + } +} + +sub update_keymap { + %keymap = (); + Irssi::signal_remove('command bind' => 'watch_keymap'); + Irssi::signal_add_first('print text' => 'get_keymap'); + Irssi::command('bind'); # stolen from grep + Irssi::signal_remove('print text' => 'get_keymap'); + Irssi::signal_add('command bind' => 'watch_keymap'); + Irssi::timeout_add_once(100, 'eventChanged', undef); +} + +# watch keymap changes +sub watch_keymap { + Irssi::timeout_add_once(1000, 'update_keymap', undef); +} + +update_keymap(); + +# end keymaps }}} + +# {{{ format handling + +# a bad way do do expansions but who cares +sub expand { + my ($string, %format) = @_; + my ($exp, $repl); + $string =~ s/\$$exp/$repl/g while (($exp, $repl) = each(%format)); + return $string; +} + +my %strip_table = ( + # fe-common::core::formats.c:format_expand_styles + # delete format_backs format_fores bold_fores other stuff + (map { $_ => '' } (split //, '04261537' . 'kbgcrmyw' . 'KBGCRMYW' . 'U9_8:|FnN>#[')), + # escape + (map { $_ => $_ } (split //, '{}%')), +); +sub ir_strip_codes { # strip %codes + my $o = shift; + $o =~ s/(%(.))/exists $strip_table{$2} ? $strip_table{$2} : $1/gex; + $o +} + +sub ir_parse_special { + my $o; my $i = shift; + #if ($_[0]) { # for the future?!? + # eval { + # $o = $_[0]->parse_special($i); + # }; + # unless ($@) { + # return $o; + # } + #} + my $win = shift || Irssi::active_win(); + my $server = Irssi::active_server(); + if (ref $win and ref $win->{'active'}) { + $o = $win->{'active'}->parse_special($i); + } + elsif (ref $win and ref $win->{'active_server'}) { + $o = $win->{'active_server'}->parse_special($i); + } + elsif (ref $server) { + $o = $server->parse_special($i); + } + else { + $o = Irssi::parse_special($i); + } + $o +} +sub ir_parse_special_protected { + my $o; my $i = shift; + $i =~ s/ + ( \\. ) | # skip over escapes (maybe) + ( \$[^% $\]+ ) # catch special variables + / + if ($1) { $1 } + elsif ($2) { my $i2 = $2; ir_fe(ir_parse_special($i2, @_)) } + else { $& } + /gex; + $i +} + + +sub sb_ctfe { # Irssi::current_theme->format_expand wrapper + Irssi::current_theme->format_expand( + shift, + ( + Irssi::EXPAND_FLAG_IGNORE_REPLACES + | + ($_[0]?0:Irssi::EXPAND_FLAG_IGNORE_EMPTY) + ) + ) +} +sub sb_expand { # expand {format }s (and apply parse_special for $vars) + ir_parse_special( + sb_ctfe(shift) + ) +} +sub sb_strip { + ir_strip_codes( + sb_expand(shift) + ); # does this get us the actual length of that s*ty bar :P ? +} +sub sb_length { + # unicode cludge, d*mn broken Irssi + # screw it, this will fail from broken joining anyway (and cause warnings) + my $term_type = 'term_type'; + if (Irssi::version > 20040819) { # this is probably wrong, but I don't know + # when the setting name got changed + $term_type = 'term_charset'; + } + #if (lc Irssi::settings_get_str($term_type) eq '8bit' + # or Irssi::settings_get_str($term_type) =~ /^iso/i + #) { + # length(sb_strip(shift)) + #} + #else { + my $temp = sb_strip(shift); + # try to get the displayed width + my $length; + eval { + require Text::CharWidth; + $length = Text::CharWidth::mbswidth($temp); + }; + unless ($@) { + return $length; + } + else { + if (lc Irssi::settings_get_str($term_type) eq 'utf-8') { + # try to switch on utf8 + eval { + no warnings; + require Encode; + #$temp = Encode::decode_utf8($temp); # thanks for the hint, but I have my + # # reasons for _utf8_on + Encode::_utf8_on($temp); + }; + } + # there is nothing more I can do + length($temp) + } + #} +} + +# !!! G*DD*MN Irssi is adding an additional layer of backslashitis per { } layer +# !!! AND I still don't know what I need to escape. +# !!! and NOONE else seems to know or care either. +# !!! f*ck open source. I mean it. +# XXX any Irssi::print debug statement leads to SEGFAULT - why ? + +# major parts of the idea by buu (#perl @ freenode) +# thanks to fxn and Somni for debugging +# while ($_[0] =~ /(.)/g) { +# my $c = $1; # XXX sooo... goto kills $1 +# if ($q eq '%') { goto ESC; } + +## <freenode:#perl:tybalt89> s/%(.)|(\{)|(\})|(\\|\$)/$1?$1:$2?($level++,$2):$3?($level>$min_level&&$level--,$3):'\\'x(2**$level-1).$4/ge; # untested... +sub ir_escape { + my $min_level = $_[1] || 0; my $level = $min_level; + my $o = shift; + $o =~ s/ + ( %. ) | # $1 + ( \{ ) | # $2 + ( \} ) | # $3 + ( \\ ) | # $4 + ( \$(?=[^\\]) ) | # $5 + ( \$ ) # $6 + / + if ($1) { $1 } # %. escape + elsif ($2) { $level++; $2 } # { nesting start + elsif ($3) { if ($level > $min_level) { $level--; } $3 } # } nesting end + elsif ($4) { '\\'x(2**$level) } # \ needs \\escaping + elsif ($5) { '\\'x(2**$level-1) . '$' . '\\'x(2**$level-1) } # and $ needs even more because of "parse_special" + else { '\\'x(2**$level-1) . '$' } # $ needs \$ escaping + /gex; + $o +} +#sub ir_escape { +# my $min_level = $_[1] || 0; my $level = $min_level; +# my $o = shift; +# $o =~ s/ +# ( %. ) | # $1 +# ( \{ ) | # $2 +# ( \} ) | # $3 +# ( \\ | \$ ) # $4 +# / +# if ($1) { $1 } # %. escape +# elsif ($2) { $level++; $2 } # { nesting start +# elsif ($3) { if ($level > $min_level) { $level--; } $3 } # } nesting end +# else { '\\'x(2**($level-1)-1) . $4 } # \ or $ needs \\escaping +# /gex; +# $o +#} + +sub ir_fe { # try to fix format stuff + my $x = shift; + # XXX why do I have to use two/four % here instead of one/two ?? + # answer: you screwed up in ir_escape + $x =~ s/([%{}])/%$1/g; + #$x =~ s/(\\|\$|[ ])/\\$1/g; # XXX HOW CAN I HANDLE THE SPACES CORRECTLY XXX + $x =~ s/(\\|\$)/\\$1/g; + #$x =~ s/(\$(?=.))|(\$)/$1?"\\\$\\":"\\\$"/ge; # I think this should be here + # # (logic), but it doesn't work + # # that way :P + #$x =~ s/\\/\\\\/g; # that's right, escape escapes + $x +} +sub ir_ve { # escapes special vars but leave colours alone + my $x = shift; + #$x =~ s/([%{}])/%$1/g; + $x =~ s/(\\|\$|[ ])/\\$1/g; + $x +} + +my %ansi_table; +{ + my ($i, $j, $k) = (0, 0, 0); + %ansi_table = ( + # fe-common::core::formats.c:format_expand_styles + # do format_backs + (map { $_ => $terminfo->setab($i++) } (split //, '01234567' )), + # do format_fores + (map { $_ => $terminfo->setaf($j++) } (split //, 'krgybmcw' )), + # do bold_fores + (map { $_ => $terminfo->bold() . + $terminfo->setaf($k++) } (split //, 'KRGYBMCW')), + # reset + #(map { $_ => $terminfo->op() } (split //, 'nN')), + (map { $_ => $terminfo->op() } (split //, 'n')), + (map { $_ => "\033[0m" } (split //, 'N')), # XXX quick and DIRTY + # flash/bright + F => $terminfo->blink(), + # reverse + 8 => $terminfo->rev(), + # bold + (map { $_ => $terminfo->bold() } (split //, '9_')), + # delete other stuff + (map { $_ => '' } (split //, ':|>#[')), + # escape + (map { $_ => $_ } (split //, '{}%')), + ) +} +sub formats_to_ansi_basic { + my $o = shift; + $o =~ s/(%(.))/exists $ansi_table{$2} ? $ansi_table{$2} : $1/gex; + $o +} + +sub lc1459 ($) { my $x = shift; $x =~ y/A-Z][\^/a-z}{|~/; $x } +Irssi::settings_add_str(setc, 'banned_channels', ''); +Irssi::settings_add_bool(setc, 'banned_channels_on', 0); +my %banned_channels = map { lc1459($_) => undef } +split ' ', Irssi::settings_get_str('banned_channels'); +Irssi::settings_add_str(setc, 'fancy_abbrev', 'fancy'); + +# }}} + +# {{{ main + +sub remake () { + #$callcount++; + #my $xx = $callcount; Irssi::print("starting remake [ $xx ]"); + my ($hilight, $number, $display); + my $separator = '{sb_act_sep ' . Irssi::settings_get_str(set 'separator') . + '}'; + my $custSort = Irssi::settings_get_str(set 'sort'); + my $custSortDir = 1; + if ($custSort =~ /^[-!](.*)/) { + $custSortDir = -1; + $custSort = $1; + } + + my @wins = + sort { + ( + ( (int($a->{$custSort}) <=> int($b->{$custSort})) * $custSortDir ) + || + ($a->{'refnum'} <=> $b->{'refnum'}) + ) + } Irssi::windows; + my $block = Irssi::settings_get_int(set 'block'); + my $columns = $currentColumns; + my $oldActString = $actString if $SCREEN_MODE; + $actString = $SCREEN_MODE ? [' A W L'] : []; + my $line = $SCREEN_MODE ? 1 : 0; + my $width = $SCREEN_MODE + ? + $screenWidth - abs($block)*$columns + 1 + : + ([Irssi::windows]->[0]{'width'} - sb_length('{sb x}')); + my $height = $screenHeight - abs(Irssi::settings_get_int(set + 'height_adjust')); + my ($numPad, $keyPad) = (0, 0); + my %abbrevList; + if ($SCREEN_MODE or Irssi::settings_get_bool(set 'sbar_maxlength') + or ($block < 0) + ) { + %abbrevList = (); + if (Irssi::settings_get_str('fancy_abbrev') !~ /^(no|off|head)/i) { + my @nameList = map { ref $_ ? $_->get_active_name : '' } @wins; + for (my $i = 0; $i < @nameList - 1; ++$i) { + my ($x, $y) = ($nameList[$i], $nameList[$i + 1]); + for ($x, $y) { s/^[+#!=]// } + my $res = Algorithm::LCSS::LCSS($x, $y); + if (defined $res) { + #Irssi::print("common pattern $x $y : $res"); + #Irssi::print("found at $nameList[$i] ".index($nameList[$i], + # $res)); + $abbrevList{$nameList[$i]} = int (index($nameList[$i], $res) + + (length($res) / 2)); + #Irssi::print("found at ".$nameList[$i+1]." ".index($nameList[$i+1], + # $res)); + $abbrevList{$nameList[$i+1]} = int (index($nameList[$i+1], $res) + + (length($res) / 2)); + } + } + } + if ($SCREEN_MODE or ($block < 0)) { + $numPad = length((sort { length($b) <=> length($a) } keys %keymap)[0]); + $keyPad = length((sort { length($b) <=> length($a) } values %keymap)[0]); + } + } + if ($SCREEN_MODE) { + print STDERR $screenansi->dcs(). + $terminfo->civis(). + $terminfo->sc(). + $screenansi->st(); + if (@$oldActString < 1) { + print STDERR $screenansi->dcs(). + $terminfo->cup(0, $width). + $actString->[0]. + $terminfo->el(). + $screenansi->st(); + } + } + foreach my $win (@wins) { + unless ($SCREEN_MODE) { + $actString->[$line] = '' unless defined $actString->[$line] + or Irssi::settings_get_bool(set 'all_disable'); + } + + # all stolen from chanact, what does this code do and why do we need it ? + !ref($win) && next; + + my $name = $win->get_active_name; + $name = '*' if (Irssi::settings_get_bool('banned_channels_on') and exists + $banned_channels{lc1459($name)}); + $name = $win->{'name'} if $name ne '*' and $win->{'name'} ne '' + and Irssi::settings_get_bool(set 'prefer_name'); + my $active = $win->{'active'}; + my $colour = $win->{'hilight_color'}; + if (!defined $colour) { $colour = ''; } + + if ($win->{'data_level'} < Irssi::settings_get_int(set 'hide_data')) { + next; } # for Geert + if ($win->{'data_level'} == 0) { $hilight = '{sb_act_none '; } + elsif ($win->{'data_level'} == 1) { $hilight = '{sb_act_text '; } + elsif ($win->{'data_level'} == 2) { $hilight = '{sb_act_msg '; } + elsif ($colour ne '') { $hilight = "{sb_act_hilight_color $colour "; } + elsif ($win->{'data_level'} == 3) { $hilight = '{sb_act_hilight '; } + else { $hilight = '{sb_act_special '; } + + $number = $win->{'refnum'}; + my @display = ('display_nokey'); + if (defined $keymap{$number} and $keymap{$number} ne '') { + unshift @display, map { (my $cpy = $_) =~ s/_no/_/; $cpy } @display; + } + if (Irssi::active_win->{'refnum'} == $number) { + unshift @display, map { my $cpy = $_; $cpy .= '_active'; $cpy } @display; + } + #Irssi::print("win $number [@display]: " . join '.', split //, join '<<', map { + # Irssi::settings_get_str(set $_) } @display); + $display = (grep { $_ } + map { Irssi::settings_get_str(set $_) } + @display)[0]; + #Irssi::print("win $number : " . join '.', split //, $display); + + if ($SCREEN_MODE or Irssi::settings_get_bool(set 'sbar_maxlength') + or ($block < 0) + ) { + my $baseLength = sb_length(ir_escape(ir_ve(ir_parse_special_protected(sb_ctfe( + '{sb_background}' . expand($display, + C => ir_fe('x'), + N => $number . (' 'x($numPad - length($number))), + Q => ir_fe((' 'x($keyPad - length($keymap{$number}))) . $keymap{$number}), + H => $hilight, + S => '}{sb_background}' + ), 1), $win)))) - 1; + my $diff = abs($block) - (length($name) + $baseLength); + if ($diff < 0) { # too long + if (abs($diff) >= length($name)) { $name = '' } # forget it + elsif (abs($diff) + 1 >= length($name)) { $name = substr($name, + 0, 1); } + else { + my $middle = exists $abbrevList{$name} ? + (($abbrevList{$name} + (2*(length($name) / 2)))/3) : + ((Irssi::settings_get_str('fancy_abbrev') =~ /^head/i) ? + length($name) : + (length($name) / 2)); + my $cut = int($middle - (abs($diff) / 2) + .55); + $cut = 1 if $cut < 1; + $cut = length($name) - abs($diff) - 1 if $cut > (length($name) - + abs($diff) - 1); + $name = substr($name, 0, $cut) . '~' . substr($name, $cut + + abs($diff) + 1); + } + } + elsif ($SCREEN_MODE or ($block < 0)) { + $name .= (' ' x $diff); + } + } + + my $add = ir_ve(ir_parse_special_protected(sb_ctfe('{sb_background}' . expand($display, + C => ir_fe($name), + N => $number . (' 'x($numPad - length($number))), + Q => ir_fe((' 'x($keyPad - length($keymap{$number}))) . $keymap{$number}), + H => $hilight, + S => '}{sb_background}' + ), 1), $win)); + if ($SCREEN_MODE) { + $actString->[$line] = $add; + if ((!defined $oldActString->[$line] + or $oldActString->[$line] ne $actString->[$line]) + and + $line <= ($columns * $height) + ) { + print STDERR $screenansi->dcs(). + $terminfo->cup(($line-1) % $height+1, $width + ( + abs($block) * int(($line-1) / $height))). + formats_to_ansi_basic(sb_expand(ir_escape($actString->[$line]))). + #$terminfo->el(). + $screenansi->st(); + } + $line++; + } + else { + #$temp =~ s/\{\S+?(?:\s(.*?))?\}/$1/g; + #$temp =~ s/\\\\\\\\/\\/g; # XXX I'm actually guessing here, someone point me + # # XXX to docs please + $actString->[$line] = '' unless defined $actString->[$line]; + + # XXX how can I check whether the content still fits in the bar? this would + # XXX allow awlstatus to reside on a statusbar together with other items... + if (sb_length(ir_escape($actString->[$line] . $add)) >= $width) { + # XXX doesn't correctly handle utf-8 multibyte ... help !!? + $actString->[$line] .= ' ' x ($width - sb_length(ir_escape( + $actString->[$line]))); + $line++; + } + $actString->[$line] .= $add . $separator; + # XXX if I use these prints, output layout gets screwed up... why ? + #Irssi::print("line $line: ".$actString->[$line]); + #Irssi::print("temp $line: ".$temp); + } + } + + if ($SCREEN_MODE) { + while ($line <= ($columns * $height)) { + print STDERR $screenansi->dcs(). + $terminfo->cup(($line-1) % $height+1, $width + ( + abs($block) * int(($line-1) / $height))). + $terminfo->el(). + $screenansi->st(); + $line++; + } + print STDERR $screenansi->dcs(). + $terminfo->rc(). + $terminfo->cnorm(). + $screenansi->st(); + } + else { + # XXX the Irssi::print statements lead to the MOST WEIRD results + # e.g.: the loop gets executed TWICE for p > 0 ?!? + for (my $p = 0; $p < @$actString; $p++) { # wrap each line in {sb }, escape it + my $x = $actString->[$p]; # properly, etc. + $x =~ s/\Q$separator\E([ ]*)$/$1/; + #Irssi::print("[$p]".'current:'.join'.',split//,sb_strip(ir_escape($x,0))); + #Irssi::print("assumed length before:".sb_length(ir_escape($x,0))); + $x = "{sb $x}"; + #Irssi::print("[$p]".'new:'.join'.',split//,sb_expand(ir_escape($x,0))); + #Irssi::print("[$p]".'new:'.join'.',split//,ir_escape($x,0)); + #Irssi::print("assumed length after:".sb_length(ir_escape($x,0))); + $x = ir_escape($x); + #Irssi::print("[$p]".'REALnew:'.join'.',split//,sb_strip($x)); + $actString->[$p] = $x; + # XXX any Irssi::print debug statement leads to SEGFAULT (sometimes) - why ? + } + } + #Irssi::print("remake [ $xx ] finished"); +} + +sub awlHasChanged () { + $globTime = undef; + my $temp = ($SCREEN_MODE ? + "\\\n" . Irssi::settings_get_int(set 'block'). + Irssi::settings_get_int(set 'height_adjust') + : "!\n" . Irssi::settings_get_str(set 'placement'). + Irssi::settings_get_int(set 'position')). + Irssi::settings_get_str(set 'automode'); + if ($temp ne $resetNeeded) { wlreset(); return; } + #Irssi::print("awl has changed, calls to remake so far: $callcount"); + $needRemake = 1; + + #remake(); + if ( + ($SCREEN_MODE and !$DISABLE_SCREEN_TEMP) + or + ($needRemake and Irssi::settings_get_bool(set 'all_disable')) + or + (!Irssi::settings_get_bool(set 'all_disable') and $currentLines < 1) + ) { + $needRemake = undef; + remake(); + } + + unless ($SCREEN_MODE) { + # XXX Irssi crashes if I try to do this without timer, why ? What's the minimum + # XXX delay I need to use in the timer ? + Irssi::timeout_add_once(100, 'syncLines', undef); + + for (keys %statusbars) { + Irssi::statusbar_items_redraw(set$_); + } + } + else { + Irssi::timeout_add_once(100, 'syncColumns', undef); + } +} + +sub eventChanged () { # Implement a change queue/blocker -.-) + if (defined $globTime) { + Irssi::timeout_remove($globTime); + } # delay the update further + $globTime = Irssi::timeout_add_once(GLOB_QUEUE_TIMER, 'awlHasChanged', undef); +} + +# }}} + + +# {{{ screen mode + +sub screenFullRedraw { + my ($window) = @_; + if (!ref $window or $window->{'refnum'} == Irssi::active_win->{'refnum'}) { + $actString = []; + eventChanged(); + } +} + +sub screenSize { # from nicklist.pl + $screenResizing = 1; + # fit screen + system 'screen -x '.$ENV{'STY'}.' -X fit'; + # get size + my ($row, $col) = split ' ', `stty size`; + # set screen width + $screenWidth = $col-1; + $screenHeight = $row-1; + + # on some recent systems, "screen -X fit; screen -X width -w 50" doesn't work, needs a sleep in between the 2 commands + # so we wait a second before setting the width + Irssi::timeout_add_once(100, sub { + my ($new_irssi_width) = @_; + $new_irssi_width -= abs(Irssi::settings_get_int(set + 'block'))*$currentColumns - 1; + system 'screen -x '.$ENV{'STY'}.' -X width -w ' . $new_irssi_width; + # and then we wait another second for the resizing, and then redraw. + Irssi::timeout_add_once(10,sub {$screenResizing = 0; screenFullRedraw()}, []); + }, $screenWidth); +} + +sub screenOff { + my ($unloadMode) = @_; + Irssi::signal_remove('gui print text finished' => 'screenFullRedraw'); + Irssi::signal_remove('gui page scrolled' => 'screenFullRedraw'); + Irssi::signal_remove('window changed' => 'screenFullRedraw'); + Irssi::signal_remove('window changed automatic' => 'screenFullRedraw'); + if ($unloadMode) { + Irssi::signal_remove('terminal resized' => 'resizeTerm'); + } + system 'screen -x '.$ENV{'STY'}.' -X fit'; +} + +sub syncColumns { + return if (@$actString == 0); + my $temp = $currentColumns; + #Irssi::print("current columns $temp"); + my $height = $screenHeight - abs(Irssi::settings_get_int(set + 'height_adjust')); + $currentColumns = int(($#$actString-1) / $height) + 1; + #Irssi::print("objects in actstring:".scalar(@$actString).", screen height:". + # $height); + my $currMaxColumns = Irssi::settings_get_int(set 'columns'); + if ($currMaxColumns > 0 and $currentColumns > $currMaxColumns) { + $currentColumns = $currMaxColumns; + } + elsif ($currMaxColumns < 0) { + $currentColumns = abs($currMaxColumns); + } + return if ($temp == $currentColumns); + screenSize(); +} + +#$needRemake = 1; +sub resizeTerm () { + if ($SCREEN_MODE and !$screenResizing) { + $screenResizing = 1; + Irssi::timeout_add_once(10, 'screenSize', undef); + } + Irssi::timeout_add_once(100, 'eventChanged', undef); +} + +# }}} + + +# {{{ settings add + +Irssi::settings_add_str(setc, set 'display_nokey', '[$N]$H$C$S'); +Irssi::settings_add_str(setc, set 'display_key', '[$Q=$N]$H$C$S'); +Irssi::settings_add_str(setc, set 'display_nokey_active', ''); +Irssi::settings_add_str(setc, set 'display_key_active', ''); +Irssi::settings_add_str(setc, set 'separator', "\\ "); +Irssi::settings_add_bool(setc, set 'prefer_name', 0); +Irssi::settings_add_int(setc, set 'hide_data', 0); +Irssi::settings_add_int(setc, set 'maxlines', 9); +Irssi::settings_add_int(setc, set 'columns', 1); +Irssi::settings_add_int(setc, set 'block', 20); +Irssi::settings_add_bool(setc, set 'sbar_maxlength', 0); +Irssi::settings_add_int(setc, set 'height_adjust', 2); +Irssi::settings_add_str(setc, set 'sort', 'refnum'); +Irssi::settings_add_str(setc, set 'placement', 'bottom'); +Irssi::settings_add_int(setc, set 'position', 0); +Irssi::settings_add_bool(setc, set 'all_disable', 0); +Irssi::settings_add_str(setc, set 'automode', 'sbar'); + +# }}} + + +# {{{ init + +sub wlreset { + $actString = []; + $currentLines = 0; # 1; # mhmmmm .. we actually enable one line down there so + # let's try this. + #update_keymap(); + killOldStatus(); + # Register statusbar + #add_statusbar(0); + #Irssi::command('statusbar wl0 enable'); + my $was_screen_mode = $SCREEN_MODE; + if ($SCREEN_MODE = (Irssi::settings_get_str(set 'automode') =~ /screen/i) + and + !$was_screen_mode + ) { + if (!defined $ENV{'STY'}) { + Irssi::print('Screen mode can only be used in GNU screen but no '. + 'screen was found.', MSGLEVEL_CLIENTERROR); + $SCREEN_MODE = undef; + } + else { + Irssi::signal_add_last('gui print text finished' => 'screenFullRedraw'); + Irssi::signal_add_last('gui page scrolled' => 'screenFullRedraw'); + Irssi::signal_add('window changed' => 'screenFullRedraw'); + Irssi::signal_add('window changed automatic' => 'screenFullRedraw'); + } + } + elsif ($was_screen_mode and !$SCREEN_MODE) { + screenOff(); + } + $resetNeeded = ($SCREEN_MODE ? + "\\\n" . Irssi::settings_get_int(set 'block'). + Irssi::settings_get_int(set 'height_adjust') + : "!\n" . Irssi::settings_get_str(set 'placement'). + Irssi::settings_get_int(set 'position')). + Irssi::settings_get_str(set 'automode'); + resizeTerm(); +} + +wlreset(); + +# }}} + + +# {{{ unload/deinit + +my $Unload; +sub unload ($$$) { + $Unload = 1; + # pretend we didn't do anything ASAP + Irssi::timeout_add_once(10, sub { $Unload = undef; }, undef); +} +# last try to catch a sigsegv +Irssi::signal_add_first('gui exit' => sub { $Unload = undef; }); +sub UNLOAD { + # this might well crash Irssi... try /eval /script unload someotherscript ; + # /quit (= SEGFAULT !) + if ($Unload) { + $actString = ['']; # syncLines(); # XXX Irssi crashes when trying to disable + killOldStatus(); # XXX all statusbars ? + if ($SCREEN_MODE) { + screenOff('unload mode'); + } + } +} + +# }}} + + +# {{{ signals + +sub addPrintTextHook { # update on print text + return if $_[0]->{'level'} == 262144 and $_[0]->{'target'} eq '' + and !defined($_[0]->{'server'}); + if (Irssi::settings_get_str(set 'sort') =~ /^[-!]?last_line$/) { + Irssi::timeout_add_once(100, 'eventChanged', undef); + } +} + +#sub _x { my ($x, $y) = @_; ($x, sub { Irssi::print('-->signal '.$x); eval "$y();"; }) } +#sub _x { @_ } +Irssi::signal_add_first( + 'command script unload' => 'unload' +); +Irssi::signal_add_last({ + 'setup changed' => 'eventChanged', + 'print text' => 'addPrintTextHook', + 'terminal resized' => 'resizeTerm', + 'setup reread' => 'wlreset', + 'window hilight' => 'eventChanged', +}); +Irssi::signal_add({ + 'window created' => 'eventChanged', + 'window destroyed' => 'eventChanged', + 'window name changed' => 'eventChanged', + 'window refnum changed' => 'eventChanged', + 'window changed' => 'eventChanged', + 'window changed automatic' => 'eventChanged', +}); + +#Irssi::signal_add('nick mode changed', 'chanactHasChanged'); # relicts + +# }}} + +# {{{ commands + + +sub runsub { + my ($cmd) = @_; + sub { + my ($data, $server, $item) = @_; + Irssi::command_runsub($cmd, $data, $server, $item); + }; +} +Irssi::command_bind( setc() => runsub(setc()) ); +Irssi::command_bind( setc() . ' paste' => runsub(setc() . ' paste') ); +Irssi::command_bind( + setc() . ' paste on' => sub { + return unless $SCREEN_MODE; + my $was_disabled = $DISABLE_SCREEN_TEMP; + $DISABLE_SCREEN_TEMP = 1; + Irssi::print('Paste mode is now ON, '.uc(setc()).' is temporarily '. + 'disabled.'); + if (!$was_disabled) { + $screenResizing = 1; + screenOff(); + } + } +); +Irssi::command_bind( + setc() . ' paste off' => sub { + return unless $SCREEN_MODE; + my $was_disabled = $DISABLE_SCREEN_TEMP; + $DISABLE_SCREEN_TEMP = undef; + Irssi::print('Paste mode is now OFF, '.uc(setc()).' is enabled.'); + if ($was_disabled) { + $SCREEN_MODE = undef; + $screenResizing = 0; + wlreset(); + } + } +); +Irssi::command_bind( + setc() . ' paste toggle' => sub { + if ($DISABLE_SCREEN_TEMP) { + Irssi::command(setc() . ' paste off'); + } + else { + Irssi::command(setc() . ' paste on'); + } + } +); +Irssi::command_bind( + setc() . ' redraw' => sub { + return unless $SCREEN_MODE; + screenFullRedraw(); + } +); + + +# }}} + +# {{{ Algorithm::LCSS module +{ + package Algorithm::Diff; + # Skip to first "=head" line for documentation. + use strict; + + use integer; # see below in _replaceNextLargerWith() for mod to make + # if you don't use this + + # McIlroy-Hunt diff algorithm + # Adapted from the Smalltalk code of Mario I. Wolczko, <mario@wolczko.com> + # by Ned Konz, perl@bike-nomad.com + # Updates by Tye McQueen, http://perlmonks.org/?node=tye + + # Create a hash that maps each element of $aCollection to the set of + # positions it occupies in $aCollection, restricted to the elements + # within the range of indexes specified by $start and $end. + # The fourth parameter is a subroutine reference that will be called to + # generate a string to use as a key. + # Additional parameters, if any, will be passed to this subroutine. + # + # my $hashRef = _withPositionsOfInInterval( \@array, $start, $end, $keyGen ); + + sub _withPositionsOfInInterval + { + my $aCollection = shift; # array ref + my $start = shift; + my $end = shift; + my $keyGen = shift; + my %d; + my $index; + for ( $index = $start ; $index <= $end ; $index++ ) + { + my $element = $aCollection->[$index]; + my $key = &$keyGen( $element, @_ ); + if ( exists( $d{$key} ) ) + { + unshift ( @{ $d{$key} }, $index ); + } + else + { + $d{$key} = [$index]; + } + } + return wantarray ? %d : \%d; + } + + # Find the place at which aValue would normally be inserted into the + # array. If that place is already occupied by aValue, do nothing, and + # return undef. If the place does not exist (i.e., it is off the end of + # the array), add it to the end, otherwise replace the element at that + # point with aValue. It is assumed that the array's values are numeric. + # This is where the bulk (75%) of the time is spent in this module, so + # try to make it fast! + + sub _replaceNextLargerWith + { + my ( $array, $aValue, $high ) = @_; + $high ||= $#$array; + + # off the end? + if ( $high == -1 || $aValue > $array->[-1] ) + { + push ( @$array, $aValue ); + return $high + 1; + } + + # binary search for insertion point... + my $low = 0; + my $index; + my $found; + while ( $low <= $high ) + { + $index = ( $high + $low ) / 2; + + # $index = int(( $high + $low ) / 2); # without 'use integer' + $found = $array->[$index]; + + if ( $aValue == $found ) + { + return undef; + } + elsif ( $aValue > $found ) + { + $low = $index + 1; + } + else + { + $high = $index - 1; + } + } + + # now insertion point is in $low. + $array->[$low] = $aValue; # overwrite next larger + return $low; + } + + # This method computes the longest common subsequence in $a and $b. + + # Result is array or ref, whose contents is such that + # $a->[ $i ] == $b->[ $result[ $i ] ] + # foreach $i in ( 0 .. $#result ) if $result[ $i ] is defined. + + # An additional argument may be passed; this is a hash or key generating + # function that should return a string that uniquely identifies the given + # element. It should be the case that if the key is the same, the elements + # will compare the same. If this parameter is undef or missing, the key + # will be the element as a string. + + # By default, comparisons will use "eq" and elements will be turned into keys + # using the default stringizing operator '""'. + + # Additional parameters, if any, will be passed to the key generation + # routine. + + sub _longestCommonSubsequence + { + my $a = shift; # array ref or hash ref + my $b = shift; # array ref or hash ref + my $counting = shift; # scalar + my $keyGen = shift; # code ref + my $compare; # code ref + + if ( ref($a) eq 'HASH' ) + { # prepared hash must be in $b + my $tmp = $b; + $b = $a; + $a = $tmp; + } + + # Check for bogus (non-ref) argument values + if ( !ref($a) || !ref($b) ) + { + my @callerInfo = caller(1); + die 'error: must pass array or hash references to ' . $callerInfo[3]; + } + + # set up code refs + # Note that these are optimized. + if ( !defined($keyGen) ) # optimize for strings + { + $keyGen = sub { $_[0] }; + $compare = sub { my ( $a, $b ) = @_; $a eq $b }; + } + else + { + $compare = sub { + my $a = shift; + my $b = shift; + &$keyGen( $a, @_ ) eq &$keyGen( $b, @_ ); + }; + } + + my ( $aStart, $aFinish, $matchVector ) = ( 0, $#$a, [] ); + my ( $prunedCount, $bMatches ) = ( 0, {} ); + + if ( ref($b) eq 'HASH' ) # was $bMatches prepared for us? + { + $bMatches = $b; + } + else + { + my ( $bStart, $bFinish ) = ( 0, $#$b ); + + # First we prune off any common elements at the beginning + while ( $aStart <= $aFinish + and $bStart <= $bFinish + and &$compare( $a->[$aStart], $b->[$bStart], @_ ) ) + { + $matchVector->[ $aStart++ ] = $bStart++; + $prunedCount++; + } + + # now the end + while ( $aStart <= $aFinish + and $bStart <= $bFinish + and &$compare( $a->[$aFinish], $b->[$bFinish], @_ ) ) + { + $matchVector->[ $aFinish-- ] = $bFinish--; + $prunedCount++; + } + + # Now compute the equivalence classes of positions of elements + $bMatches = + _withPositionsOfInInterval( $b, $bStart, $bFinish, $keyGen, @_ ); + } + my $thresh = []; + my $links = []; + + my ( $i, $ai, $j, $k ); + for ( $i = $aStart ; $i <= $aFinish ; $i++ ) + { + $ai = &$keyGen( $a->[$i], @_ ); + if ( exists( $bMatches->{$ai} ) ) + { + $k = 0; + for $j ( @{ $bMatches->{$ai} } ) + { + + # optimization: most of the time this will be true + if ( $k and $thresh->[$k] > $j and $thresh->[ $k - 1 ] < $j ) + { + $thresh->[$k] = $j; + } + else + { + $k = _replaceNextLargerWith( $thresh, $j, $k ); + } + + # oddly, it's faster to always test this (CPU cache?). + if ( defined($k) ) + { + $links->[$k] = + [ ( $k ? $links->[ $k - 1 ] : undef ), $i, $j ]; + } + } + } + } + + if (@$thresh) + { + return $prunedCount + @$thresh if $counting; + for ( my $link = $links->[$#$thresh] ; $link ; $link = $link->[0] ) + { + $matchVector->[ $link->[1] ] = $link->[2]; + } + } + elsif ($counting) + { + return $prunedCount; + } + + return wantarray ? @$matchVector : $matchVector; + } + + sub traverse_sequences + { + my $a = shift; # array ref + my $b = shift; # array ref + my $callbacks = shift || {}; + my $keyGen = shift; + my $matchCallback = $callbacks->{'MATCH'} || sub { }; + my $discardACallback = $callbacks->{'DISCARD_A'} || sub { }; + my $finishedACallback = $callbacks->{'A_FINISHED'}; + my $discardBCallback = $callbacks->{'DISCARD_B'} || sub { }; + my $finishedBCallback = $callbacks->{'B_FINISHED'}; + my $matchVector = _longestCommonSubsequence( $a, $b, 0, $keyGen, @_ ); + + # Process all the lines in @$matchVector + my $lastA = $#$a; + my $lastB = $#$b; + my $bi = 0; + my $ai; + + for ( $ai = 0 ; $ai <= $#$matchVector ; $ai++ ) + { + my $bLine = $matchVector->[$ai]; + if ( defined($bLine) ) # matched + { + &$discardBCallback( $ai, $bi++, @_ ) while $bi < $bLine; + &$matchCallback( $ai, $bi++, @_ ); + } + else + { + &$discardACallback( $ai, $bi, @_ ); + } + } + + # The last entry (if any) processed was a match. + # $ai and $bi point just past the last matching lines in their sequences. + + while ( $ai <= $lastA or $bi <= $lastB ) + { + + # last A? + if ( $ai == $lastA + 1 and $bi <= $lastB ) + { + if ( defined($finishedACallback) ) + { + &$finishedACallback( $lastA, @_ ); + $finishedACallback = undef; + } + else + { + &$discardBCallback( $ai, $bi++, @_ ) while $bi <= $lastB; + } + } + + # last B? + if ( $bi == $lastB + 1 and $ai <= $lastA ) + { + if ( defined($finishedBCallback) ) + { + &$finishedBCallback( $lastB, @_ ); + $finishedBCallback = undef; + } + else + { + &$discardACallback( $ai++, $bi, @_ ) while $ai <= $lastA; + } + } + + &$discardACallback( $ai++, $bi, @_ ) if $ai <= $lastA; + &$discardBCallback( $ai, $bi++, @_ ) if $bi <= $lastB; + } + + return 1; + } + + sub traverse_balanced + { + my $a = shift; # array ref + my $b = shift; # array ref + my $callbacks = shift || {}; + my $keyGen = shift; + my $matchCallback = $callbacks->{'MATCH'} || sub { }; + my $discardACallback = $callbacks->{'DISCARD_A'} || sub { }; + my $discardBCallback = $callbacks->{'DISCARD_B'} || sub { }; + my $changeCallback = $callbacks->{'CHANGE'}; + my $matchVector = _longestCommonSubsequence( $a, $b, 0, $keyGen, @_ ); + + # Process all the lines in match vector + my $lastA = $#$a; + my $lastB = $#$b; + my $bi = 0; + my $ai = 0; + my $ma = -1; + my $mb; + + while (1) + { + + # Find next match indices $ma and $mb + do { + $ma++; + } while( + $ma <= $#$matchVector + && !defined $matchVector->[$ma] + ); + + last if $ma > $#$matchVector; # end of matchVector? + $mb = $matchVector->[$ma]; + + # Proceed with discard a/b or change events until + # next match + while ( $ai < $ma || $bi < $mb ) + { + + if ( $ai < $ma && $bi < $mb ) + { + + # Change + if ( defined $changeCallback ) + { + &$changeCallback( $ai++, $bi++, @_ ); + } + else + { + &$discardACallback( $ai++, $bi, @_ ); + &$discardBCallback( $ai, $bi++, @_ ); + } + } + elsif ( $ai < $ma ) + { + &$discardACallback( $ai++, $bi, @_ ); + } + else + { + + # $bi < $mb + &$discardBCallback( $ai, $bi++, @_ ); + } + } + + # Match + &$matchCallback( $ai++, $bi++, @_ ); + } + + while ( $ai <= $lastA || $bi <= $lastB ) + { + if ( $ai <= $lastA && $bi <= $lastB ) + { + + # Change + if ( defined $changeCallback ) + { + &$changeCallback( $ai++, $bi++, @_ ); + } + else + { + &$discardACallback( $ai++, $bi, @_ ); + &$discardBCallback( $ai, $bi++, @_ ); + } + } + elsif ( $ai <= $lastA ) + { + &$discardACallback( $ai++, $bi, @_ ); + } + else + { + + # $bi <= $lastB + &$discardBCallback( $ai, $bi++, @_ ); + } + } + + return 1; + } + + sub prepare + { + my $a = shift; # array ref + my $keyGen = shift; # code ref + + # set up code ref + $keyGen = sub { $_[0] } unless defined($keyGen); + + return scalar _withPositionsOfInInterval( $a, 0, $#$a, $keyGen, @_ ); + } + + sub LCS + { + my $a = shift; # array ref + my $b = shift; # array ref or hash ref + my $matchVector = _longestCommonSubsequence( $a, $b, 0, @_ ); + my @retval; + my $i; + for ( $i = 0 ; $i <= $#$matchVector ; $i++ ) + { + if ( defined( $matchVector->[$i] ) ) + { + push ( @retval, $a->[$i] ); + } + } + return wantarray ? @retval : \@retval; + } + + sub LCS_length + { + my $a = shift; # array ref + my $b = shift; # array ref or hash ref + return _longestCommonSubsequence( $a, $b, 1, @_ ); + } + + sub LCSidx + { + my $a= shift @_; + my $b= shift @_; + my $match= _longestCommonSubsequence( $a, $b, 0, @_ ); + my @am= grep defined $match->[$_], 0..$#$match; + my @bm= @{$match}[@am]; + return \@am, \@bm; + } + + sub compact_diff + { + my $a= shift @_; + my $b= shift @_; + my( $am, $bm )= LCSidx( $a, $b, @_ ); + my @cdiff; + my( $ai, $bi )= ( 0, 0 ); + push @cdiff, $ai, $bi; + while( 1 ) { + while( @$am && $ai == $am->[0] && $bi == $bm->[0] ) { + shift @$am; + shift @$bm; + ++$ai, ++$bi; + } + push @cdiff, $ai, $bi; + last if ! @$am; + $ai = $am->[0]; + $bi = $bm->[0]; + push @cdiff, $ai, $bi; + } + push @cdiff, 0+@$a, 0+@$b + if $ai < @$a || $bi < @$b; + return wantarray ? @cdiff : \@cdiff; + } + + sub diff + { + my $a = shift; # array ref + my $b = shift; # array ref + my $retval = []; + my $hunk = []; + my $discard = sub { + push @$hunk, [ '-', $_[0], $a->[ $_[0] ] ]; + }; + my $add = sub { + push @$hunk, [ '+', $_[1], $b->[ $_[1] ] ]; + }; + my $match = sub { + push @$retval, $hunk + if 0 < @$hunk; + $hunk = [] + }; + traverse_sequences( $a, $b, + { MATCH => $match, DISCARD_A => $discard, DISCARD_B => $add }, @_ ); + &$match(); + return wantarray ? @$retval : $retval; + } + + sub sdiff + { + my $a = shift; # array ref + my $b = shift; # array ref + my $retval = []; + my $discard = sub { push ( @$retval, [ '-', $a->[ $_[0] ], "" ] ) }; + my $add = sub { push ( @$retval, [ '+', "", $b->[ $_[1] ] ] ) }; + my $change = sub { + push ( @$retval, [ 'c', $a->[ $_[0] ], $b->[ $_[1] ] ] ); + }; + my $match = sub { + push ( @$retval, [ 'u', $a->[ $_[0] ], $b->[ $_[1] ] ] ); + }; + traverse_balanced( + $a, + $b, + { + MATCH => $match, + DISCARD_A => $discard, + DISCARD_B => $add, + CHANGE => $change, + }, + @_ + ); + return wantarray ? @$retval : $retval; + } + + ######################################## + my $Root= __PACKAGE__; + package Algorithm::Diff::_impl; + use strict; + + sub _Idx() { 0 } # $me->[_Idx]: Ref to array of hunk indices + # 1 # $me->[1]: Ref to first sequence + # 2 # $me->[2]: Ref to second sequence + sub _End() { 3 } # $me->[_End]: Diff between forward and reverse pos + sub _Same() { 4 } # $me->[_Same]: 1 if pos 1 contains unchanged items + sub _Base() { 5 } # $me->[_Base]: Added to range's min and max + sub _Pos() { 6 } # $me->[_Pos]: Which hunk is currently selected + sub _Off() { 7 } # $me->[_Off]: Offset into _Idx for current position + sub _Min() { -2 } # Added to _Off to get min instead of max+1 + + sub Die + { + require Carp; + Carp::confess( @_ ); + } + + sub _ChkPos + { + my( $me )= @_; + return if $me->[_Pos]; + my $meth= ( caller(1) )[3]; + Die( "Called $meth on 'reset' object" ); + } + + sub _ChkSeq + { + my( $me, $seq )= @_; + return $seq + $me->[_Off] + if 1 == $seq || 2 == $seq; + my $meth= ( caller(1) )[3]; + Die( "$meth: Invalid sequence number ($seq); must be 1 or 2" ); + } + + sub getObjPkg + { + my( $us )= @_; + return ref $us if ref $us; + return $us . "::_obj"; + } + + sub new + { + my( $us, $seq1, $seq2, $opts ) = @_; + my @args; + for( $opts->{keyGen} ) { + push @args, $_ if $_; + } + for( $opts->{keyGenArgs} ) { + push @args, @$_ if $_; + } + my $cdif= Algorithm::Diff::compact_diff( $seq1, $seq2, @args ); + my $same= 1; + if( 0 == $cdif->[2] && 0 == $cdif->[3] ) { + $same= 0; + splice @$cdif, 0, 2; + } + my @obj= ( $cdif, $seq1, $seq2 ); + $obj[_End] = (1+@$cdif)/2; + $obj[_Same] = $same; + $obj[_Base] = 0; + my $me = bless \@obj, $us->getObjPkg(); + $me->Reset( 0 ); + return $me; + } + + sub Reset + { + my( $me, $pos )= @_; + $pos= int( $pos || 0 ); + $pos += $me->[_End] + if $pos < 0; + $pos= 0 + if $pos < 0 || $me->[_End] <= $pos; + $me->[_Pos]= $pos || !1; + $me->[_Off]= 2*$pos - 1; + return $me; + } + + sub Base + { + my( $me, $base )= @_; + my $oldBase= $me->[_Base]; + $me->[_Base]= 0+$base if defined $base; + return $oldBase; + } + + sub Copy + { + my( $me, $pos, $base )= @_; + my @obj= @$me; + my $you= bless \@obj, ref($me); + $you->Reset( $pos ) if defined $pos; + $you->Base( $base ); + return $you; + } + + sub Next { + my( $me, $steps )= @_; + $steps= 1 if ! defined $steps; + if( $steps ) { + my $pos= $me->[_Pos]; + my $new= $pos + $steps; + $new= 0 if $pos && $new < 0; + $me->Reset( $new ) + } + return $me->[_Pos]; + } + + sub Prev { + my( $me, $steps )= @_; + $steps= 1 if ! defined $steps; + my $pos= $me->Next(-$steps); + $pos -= $me->[_End] if $pos; + return $pos; + } + + sub Diff { + my( $me )= @_; + $me->_ChkPos(); + return 0 if $me->[_Same] == ( 1 & $me->[_Pos] ); + my $ret= 0; + my $off= $me->[_Off]; + for my $seq ( 1, 2 ) { + $ret |= $seq + if $me->[_Idx][ $off + $seq + _Min ] + < $me->[_Idx][ $off + $seq ]; + } + return $ret; + } + + sub Min { + my( $me, $seq, $base )= @_; + $me->_ChkPos(); + my $off= $me->_ChkSeq($seq); + $base= $me->[_Base] if !defined $base; + return $base + $me->[_Idx][ $off + _Min ]; + } + + sub Max { + my( $me, $seq, $base )= @_; + $me->_ChkPos(); + my $off= $me->_ChkSeq($seq); + $base= $me->[_Base] if !defined $base; + return $base + $me->[_Idx][ $off ] -1; + } + + sub Range { + my( $me, $seq, $base )= @_; + $me->_ChkPos(); + my $off = $me->_ChkSeq($seq); + if( !wantarray ) { + return $me->[_Idx][ $off ] + - $me->[_Idx][ $off + _Min ]; + } + $base= $me->[_Base] if !defined $base; + return ( $base + $me->[_Idx][ $off + _Min ] ) + .. ( $base + $me->[_Idx][ $off ] - 1 ); + } + + sub Items { + my( $me, $seq )= @_; + $me->_ChkPos(); + my $off = $me->_ChkSeq($seq); + if( !wantarray ) { + return $me->[_Idx][ $off ] + - $me->[_Idx][ $off + _Min ]; + } + return + @{$me->[$seq]}[ + $me->[_Idx][ $off + _Min ] + .. ( $me->[_Idx][ $off ] - 1 ) + ]; + } + + sub Same { + my( $me )= @_; + $me->_ChkPos(); + return wantarray ? () : 0 + if $me->[_Same] != ( 1 & $me->[_Pos] ); + return $me->Items(1); + } + + my %getName; + %getName= ( + same => \&Same, + diff => \&Diff, + base => \&Base, + min => \&Min, + max => \&Max, + range=> \&Range, + items=> \&Items, # same thing + ); + + sub Get + { + my $me= shift @_; + $me->_ChkPos(); + my @value; + for my $arg ( @_ ) { + for my $word ( split ' ', $arg ) { + my $meth; + if( $word !~ /^(-?\d+)?([a-zA-Z]+)([12])?$/ + || not $meth= $getName{ lc $2 } + ) { + Die( $Root, ", Get: Invalid request ($word)" ); + } + my( $base, $name, $seq )= ( $1, $2, $3 ); + push @value, scalar( + 4 == length($name) + ? $meth->( $me ) + : $meth->( $me, $seq, $base ) + ); + } + } + if( wantarray ) { + return @value; + } elsif( 1 == @value ) { + return $value[0]; + } + Die( 0+@value, " values requested from ", + $Root, "'s Get in scalar context" ); + } + + + my $Obj= getObjPkg($Root); + no strict 'refs'; + + for my $meth ( qw( new getObjPkg ) ) { + *{$Root."::".$meth} = \&{$meth}; + *{$Obj ."::".$meth} = \&{$meth}; + } + for my $meth ( qw( + Next Prev Reset Copy Base Diff + Same Items Range Min Max Get + _ChkPos _ChkSeq + ) ) { + *{$Obj."::".$meth} = \&{$meth}; + } + +}; +{ + package Algorithm::LCSS; + + use strict; + { + no strict 'refs'; + *traverse_sequences = \&Algorithm::Diff::traverse_sequences; + } + + sub _tokenize { [split //, $_[0]] } + + sub CSS { + my $is_array = ref $_[0] eq 'ARRAY' ? 1 : 0; + my ( $seq1, $seq2, @match, $from_match ); + my $i = 0; + if ( $is_array ) { + $seq1 = $_[0]; + $seq2 = $_[1]; + traverse_sequences( $seq1, $seq2, { + MATCH => sub { push @{$match[$i]}, $seq1->[$_[0]]; $from_match = 1 }, + DISCARD_A => sub { do{$i++; $from_match = 0} if $from_match }, + DISCARD_B => sub { do{$i++; $from_match = 0} if $from_match }, + }); + } + else { + $seq1 = _tokenize($_[0]); + $seq2 = _tokenize($_[1]); + traverse_sequences( $seq1, $seq2, { + MATCH => sub { $match[$i] .= $seq1->[$_[0]]; $from_match = 1 }, + DISCARD_A => sub { do{$i++; $from_match = 0} if $from_match }, + DISCARD_B => sub { do{$i++; $from_match = 0} if $from_match }, + }); + } + return \@match; + } + + sub CSS_Sorted { + my $match = CSS(@_); + if ( ref $_[0] eq 'ARRAY' ) { + @$match = map{$_->[0]}sort{$b->[1]<=>$a->[1]}map{[$_,scalar(@$_)]}@$match + } + else { + @$match = map{$_->[0]}sort{$b->[1]<=>$a->[1]}map{[$_,length($_)]}@$match + } + return $match; + } + + sub LCSS { + my $is_array = ref $_[0] eq 'ARRAY' ? 1 : 0; + my $css = CSS(@_); + my $index; + my $length = 0; + if ( $is_array ) { + for( my $i = 0; $i < @$css; $i++ ) { + next unless @{$css->[$i]}>$length; + $index = $i; + $length = @{$css->[$i]}; + } + } + else { + for( my $i = 0; $i < @$css; $i++ ) { + next unless length($css->[$i])>$length; + $index = $i; + $length = length($css->[$i]); + } + } + return $css->[$index]; + } + +}; +# }}} +#{{{ Class::Classless module +{ + package Class::Classless; + use strict; + use vars qw(@ISA); + use Carp; + + @ISA = (); + + ########################################################################### + + @Class::Classless::X::ISA = (); + + ########################################################################### + ########################################################################### + + sub Class::Classless::X::AUTOLOAD { + # This's the big dispatcher. + + my $it = shift @_; + my $m = ($Class::Classless::X::AUTOLOAD =~ m/([^:]+)$/s ) + ? $1 : $Class::Classless::X::AUTOLOAD; + + croak "Can't call Class::Classless methods (like $m) without an object" + unless ref $it; # sanity, basically. + + my $prevstate; + $prevstate = ${shift @_} + if scalar(@_) && defined($_[0]) && + ref($_[0]) eq 'Class::Classless::CALLSTATE::SHIMMY' + ; # A shim! we were called via $callstate->NEXT + + my $no_fail = $prevstate ? $prevstate->[3] : undef; + my $i = $prevstate ? ($prevstate->[1] + 1) : 0; + # where to start scanning + my $lineage; + + # Get the linearization of the ISA tree + if($prevstate) { + $lineage = $prevstate->[2]; + } elsif(defined $it->{'ISA_CACHE'} and ref $it->{'ISA_CACHE'} ){ + $lineage = $it->{'ISA_CACHE'}; + } else { + $lineage = [ &Class::Classless::X::ISA_TREE($it) ]; + } + + # Was: + #my @lineage = + # $prevstate ? @{$prevstate->[2]} + # : &Class::Classless::X::ISA_TREE($it); + # # Get the linearization of the ISA tree + # # ISA-memoization happens in the ISA_TREE function. + + for(; $i < @$lineage; ++$i) { + + if( !defined($no_fail) and exists($lineage->[$i]{'NO_FAIL'}) ) { + $no_fail = ($lineage->[$i]{'NO_FAIL'} || 0); + # so the first NO_FAIL sets it + } + + if( ref($lineage->[$i]{'METHODS'} || 0) # sanity + && exists($lineage->[$i]{'METHODS'}{$m}) + ){ + # We found what we were after. Now see what to do with it. + my $v = $lineage->[$i]{'METHODS'}{$m}; + return $v unless defined $v and ref $v; + + if(ref($v) eq 'CODE') { # normal case, I expect! + # Used to have copying of the arglist here. + # But it was apparently useless, so I deleted it + unshift @_, + $it, # $_[0] -- target object + # a NEW callstate + bless([$m, $i, $lineage, $no_fail, $prevstate ? 1 : 0], + 'Class::Classless::CALLSTATE' + ), # $_[1] -- the callstate + ; + goto &{ $v }; # yes, magic goto! bimskalabim! + } + return @$v if ref($v) eq '_deref_array'; + return $$v if ref($v) eq '_deref_scalar'; + return $v; # fallthru + } + } + + if($m eq 'DESTROY') { # mitigate DESTROY-lookup failure at global destruction + # should be impossible + } else { + if($no_fail || 0) { + return; + } + croak "Can't find ", $prevstate ? 'NEXT method' : 'method', + " $m in ", $it->{'NAME'} || $it, + " or any ancestors\n"; + } + } + + ########################################################################### + ########################################################################### + + sub Class::Classless::X::DESTROY { + # noop + } + + ########################################################################### + sub Class::Classless::X::ISA_TREE { + # The linearizer! + # Returns the search path for $_[0], starting with $_[0] + # Possibly memoized. + + # I stopped being able to understand this algorithm about five + # minutes after I wrote it. + use strict; + + my $set_cache = 0; # flag to set the cache on the way out + + if(exists($_[0]{'ISA_CACHE'})) { + return @{$_[0]{'ISA_CACHE'}} + if defined $_[0]{'ISA_CACHE'} + and ref $_[0]{'ISA_CACHE'}; + + # Otherwise, if exists but is not a ref, it's a signal that it should + # be replaced at the earliest, with a listref + $set_cache = 1; + } + + my $has_mi = 0; # set to 0 on the first node we see with 2 parents! + # First, just figure out what's in the tree. + my %last_child = ($_[0] => 1); # as if already seen + + # if $last_child{$x} == $y, that means: + # 1) incidentally, we've passed the node $x before. + # 2) $x is the last child of $y, + # so that means that $y can be pushed to the stack only after + # we've pushed $x to the stack. + + my @tree_nodes; + { + my $current; + my @in_stack = ($_[0]); + while(@in_stack) { + next unless + defined($current = shift @in_stack) + && ref($current) # sanity + && ref($current->{'PARENTS'} || 0) # sanity + ; + + push @tree_nodes, $current; + + $has_mi = 1 if @{$current->{'PARENTS'}} > 1; + unshift + @in_stack, + map { + if(exists $last_child{$_}) { # seen before! + $last_child{$_} = $current; + (); # seen -- don't re-explore + } else { # first time seen + $last_child{$_} = $current; + $_; # first time seen -- explore now + } + } + @{$current->{'PARENTS'}} + ; + } + + # If there was no MI, then that first scan was sufficient. + unless($has_mi) { + $_[0]{'ISA_CACHE'} = \@tree_nodes if $set_cache; + return @tree_nodes; + } + + # Otherwise, toss this list and rescan, consulting %last_child + } + + # $last_child{$parent} holds the last (or only) child of $parent + # in this tree. When walking the tree this time, only that + # child is authorized to put its parent on the @in_stack. + # And that's the only way a node can get added to @in_stack, + # except for $_[0] (the start node) being there at the beginning. + + # Now, walk again, but this time exploring parents the LAST + # time seen in the tree, not the first. + + my @out; + { + my $current; + my @in_stack = ($_[0]); + while(@in_stack) { + next unless defined($current = shift @in_stack) && ref($current); + push @out, $current; # finally. + unshift + @in_stack, + grep( + ( + defined($_) # sanity + && ref($_) # sanity + && $last_child{$_} eq $current, + ), + # I'm lastborn (or onlyborn) of this parent + # so it's OK to explore now + @{$current->{'PARENTS'}} + ) + if ref($current->{'PARENTS'} || 0) # sanity + ; + } + + unless(scalar(@out) == scalar(keys(%last_child))) { + # the counts should be equal + my %good_ones; + @good_ones{@out} = (); + croak + "ISA tree for " . + ($_[0]{'NAME'} || $_[0]) . + " is apparently cyclic, probably involving the nodes " . + nodelist( grep { ref($_) && !exists $good_ones{$_} } + values(%last_child) ) + . "\n"; + } + } + #print "Contents of out: ", nodelist(@out), "\n"; + + $_[0]{'ISA_CACHE'} = \@out if $set_cache; + return @out; + } + + ########################################################################### + + sub Class::Classless::X::can { # NOT like UNIVERSAL::can ... + # return 1 if $it is capable of the method given -- otherwise 0 + my($it, $m) = @_[0,1]; + return undef unless ref $it; + + croak "undef is not a valid method name" unless defined($m); + croak "null-string is not a valid method name" unless length($m); + + foreach my $o (&Class::Classless::X::ISA_TREE($it)) { + return 1 + if ref($o->{'METHODS'} || 0) # sanity + && exists $o->{'METHODS'}{$m}; + } + + return 0; + } + + + ########################################################################### + + sub Class::Classless::X::isa { # Like UNIVERSAL::isa + # Returns true for $X->isa($Y) iff $Y is $X or is an ancestor of $X. + + return unless ref($_[0]) && ref($_[1]); + return scalar(grep {$_ eq $_[1]} &Class::Classless::X::ISA_TREE($_[0])); + } + + ########################################################################### + + sub nodelist { join ', ', map { "" . ($_->{'NAME'} || $_) . ""} @_ } + + ########################################################################### + ########################################################################### + ########################################################################### + # Methods for the CALLSTATE class. + # Basically, CALLSTATE objects represent the state of the dispatcher, + # frozen at the moment when the method call was dispatched to the + # appropriate sub. + # In the grand scheme of things, this needn't be a class -- I could + # have just made the callstate data-object be a hash with documented + # keys, or a closure that responded to only certain parameters, + # etc. But I like it this way. And I like being able to say simply + # $cs->NEXT + # Yes, these are a bit cryptically written, but it's behoovy for + # them to be very very efficient. + + @Class::Classless::ISA = (); + sub Class::Classless::CALLSTATE::found_name { $_[0][0] } + # the method name called and found + sub Class::Classless::CALLSTATE::found_depth { $_[0][1] } + # my depth in the lineage + sub Class::Classless::CALLSTATE::lineage { @{$_[0][2]} } + # my lineage + sub Class::Classless::CALLSTATE::target { $_[0][2][ 0 ] } + # the object that's the target -- same as $_[0] for the method called + sub Class::Classless::CALLSTATE::home { $_[0][2][ $_[0][1] ] } + # the object I was found in + sub Class::Classless::CALLSTATE::sub_found { + $_[0][2][ $_[0][1] ]{'METHODS'}{ $_[0][0] } + } # the routine called + + sub Class::Classless::CALLSTATE::no_fail { $_[0][3] } + sub Class::Classless::CALLSTATE::set_no_fail_true { $_[0][3] = 1 } + sub Class::Classless::CALLSTATE::set_fail_false { $_[0][3] = 0 } + sub Class::Classless::CALLSTATE::set_fail_undef { $_[0][3] = undef } + + sub Class::Classless::CALLSTATE::via_next { $_[0][4] } + + sub Class::Classless::CALLSTATE::NEXT { + #croak "NEXT needs at least one argument: \$cs->NEXT('method'...)" + # unless @_ > 1; + # no longer true. + my $cs = shift @_; + my $m = shift @_; # which may be (or come out) undef... + $m = $cs->[0] unless defined $m; # the method name called and found + + ($cs->[2][0])->$m( + bless( \$cs, 'Class::Classless::CALLSTATE::SHIMMY' ), + @_ + ); + } + + ########################################################################### +}; +#}}} + +############### +### +# +# {{{ *** C h a n g e l o g *** +# +# 0.6ca +# - add screen support (from nicklist.pl) +# - rename to adv_windowlist.pl (advanced window list) since it isn't just a +# window list status bar (wlstat) anymore +# - names can now have a max length and window names can be used +# - fixed a bug with block display in screen mode and statusbar mode +# - added space handling to ir_fe and removed it again +# - now handling formats on my own +# - added warning about missing sb_act_none abstract leading to +# - display*active settings +# - added warning about the bug in awl_display_(no)key_active settings +# +# 0.5d +# - add setting to also hide the last statusbar if empty (awl_all_disable) +# - reverted to old utf8 code to also calculate broken utf8 length correctly +# - simplified dealing with statusbars in wlreset +# - added a little tweak for the renamed term_type somewhere after Irssi 0.8.9 +# - fixed bug in handling channel #$$ +# - typo on line 200 spotted by f0rked +# - reset background colour at the beginning of an entry +# +# 0.4d +# - fixed order of disabling statusbars +# - several attempts at special chars, without any real success +# and much more weird new bugs caused by this +# - setting to specify sort order +# - reduced timeout values +# - added awl_hide_data for Geert Hauwaerts ( geert@irssi.org ) :) +# - make it so the dynamic sub is actually deleted +# - fix a bug with removing of the last separator +# - take into consideration parse_special +# +# 0.3b +# - automatically kill old statusbars +# - reset on /reload +# - position/placement settings +# +# 0.2 +# - automated retrieval of key bindings (thanks grep.pl authors) +# - improved removing of statusbars +# - got rid of status chop +# +# 0.1 +# - rewritten to suit my needs +# - based on chanact 0.5.5 +# }}} +# vim: se fdm=marker tw=80 : diff --git a/irssi/scripts/autorun/hilightwin.pl b/irssi/scripts/autorun/hilightwin.pl new file mode 100644 index 0000000..f7af8a7 --- /dev/null +++ b/irssi/scripts/autorun/hilightwin.pl @@ -0,0 +1,57 @@ +# +# Print hilighted messages & private messages to window named "hilight" for +# irssi 0.7.99 by Timo Sirainen +# +# Modded a tiny bit by znx to stop private messages entering the hilighted +# window (can be toggled) and to put up a timestamp. +# + +use Irssi; +use POSIX; +use vars qw($VERSION %IRSSI); + +$VERSION = "0.02"; +%IRSSI = ( + authors => "Timo \'cras\' Sirainen, Mark \'znx\' Sangster", + contact => "tss\@iki.fi, znxster\@gmail.com", + name => "hilightwin", + description => "Print hilighted messages to window named \"hilight\"", + license => "Public Domain", + url => "http://irssi.org/", + changed => "Sun May 25 18:59:57 BST 2008" +); + +sub sig_printtext { + my ($dest, $text, $stripped) = @_; + + my $opt = MSGLEVEL_HILIGHT; + + if(Irssi::settings_get_bool('hilightwin_showprivmsg')) { + $opt = MSGLEVEL_HILIGHT|MSGLEVEL_MSGS; + } + + if( + ($dest->{level} & ($opt)) && + ($dest->{level} & MSGLEVEL_NOHILIGHT) == 0 + ) { + $window = Irssi::window_find_name('hilight'); + + if ($dest->{level} & MSGLEVEL_PUBLIC) { + $text = $dest->{target}.": ".$text; + } + $text = strftime( + Irssi::settings_get_str('timestamp_format')." ", + localtime + ).$text; + $window->print($text, MSGLEVEL_NEVER) if ($window); + } +} + +$window = Irssi::window_find_name('hilight'); +Irssi::print("Create a window named 'hilight'") if (!$window); + +Irssi::settings_add_bool('hilightwin','hilightwin_showprivmsg',1); + +Irssi::signal_add('print text', 'sig_printtext'); + +# vim:set ts=4 sw=4 et: diff --git a/irssi/scripts/autorun/nickcolor.pl b/irssi/scripts/autorun/nickcolor.pl new file mode 100644 index 0000000..4f661e3 --- /dev/null +++ b/irssi/scripts/autorun/nickcolor.pl @@ -0,0 +1,153 @@ +use strict; +use Irssi 20020101.0250 (); +use vars qw($VERSION %IRSSI); +$VERSION = "1.2"; +%IRSSI = ( +authors => "Timo Sirainen, Ian Peters, modified by Daniele Sluijters, Edwin \"Dutchy\" Smulders", +contact => "tss\@iki.fi, mail\@dutchy.org", +name => "Nick Color", +description => "assign a different color for each nick", +license => "Public Domain", +url => "https://github.com/Dutchy-/irssi-nickcolor", +changed => "2012-04-23T15:17+0100" +); +# hm.. i should make it possible to use the existing one.. +Irssi::theme_register([ +'pubmsg_hilight', '{pubmsghinick $0 $3 $1}$2' +]); +my %saved_colors; +my %session_colors = {}; +my @colors = qw/2 3 4 5 6 7 9 10 11 12 13/; +sub load_colors { +open COLORS, "$ENV{HOME}/.irssi/saved_colors"; +while (<COLORS>) { +# I don't know why this is necessary only inside of irssi +my @lines = split "\n"; +foreach my $line (@lines) { +my($nick, $color) = split ":", $line; +$saved_colors{$nick} = $color; +} +} +close COLORS; +} +sub save_colors { +open COLORS, ">$ENV{HOME}/.irssi/saved_colors"; +foreach my $nick (keys %saved_colors) { +print COLORS "$nick:$saved_colors{$nick}\n"; +} +Irssi::print("Saved colors to $ENV{HOME}/.irssi/saved_colors"); +close COLORS; +} +# If someone we've colored (either through the saved colors, or the hash +# function) changes their nick, we'd like to keep the same color associated +# with them (but only in the session_colors, ie a temporary mapping). +sub sig_nick { +my ($server, $newnick, $nick, $address) = @_; +my $color; +$newnick = substr ($newnick, 1) if ($newnick =~ /^:/); +if ($color = $saved_colors{$nick}) { +$session_colors{$newnick} = $color; +} elsif ($color = $session_colors{$nick}) { +$session_colors{$newnick} = $color; +} +} +# This gave reasonable distribution values when run across +# /usr/share/dict/words +sub simple_hash { +my ($string) = @_; +chomp $string; +my @chars = split //, $string; +my $counter; +foreach my $char (@chars) { +$counter += ord $char; +} +$counter = $colors[$counter % 12]; +return $counter; +} +# FIXME: breaks /HILIGHT etc. +sub sig_public { +my ($server, $msg, $nick, $address, $target) = @_; +my $chanrec = $server->channel_find($target); +return if not $chanrec; +my $nickrec = $chanrec->nick_find($nick); +return if not $nickrec; +my $nickmode = $nickrec->{op} ? "@" : $nickrec->{voice} ? "+" : ""; +# Has the user assigned this nick a color? +my $color = $saved_colors{$nick}; +# Have -we- already assigned this nick a color? +if (!$color) { +$color = $session_colors{$nick}; +} +# Let's assign this nick a color +if (!$color) { +$color = simple_hash $nick; +# We don't want people with the same nick length to have the same color +my %used; +foreach my $c (@colors) { +$used{$c} = 0; +} +# Count colors for this specific nick length +while ( my ($saved_nick, $saved_color) = each(%session_colors)) { +if (length($saved_nick) == length($nick)) { +# Length is equal, add one +$used{$saved_color} += 1; +} +} +# Check if the color we want is available +if ( $used{$color} == 0 ) { +$session_colors{$nick} = $color ; +} else { +# Pick the _least_ used color +$color = (sort {$used{$a} cmp $used{$b} } keys %used)[0]; +$session_colors{$nick} = $color; +} +} +$color = "0".$color if ($color < 10); +$server->command('/^format pubmsg {pubmsgnick $2 {pubnick '.chr(3).$color.'$[-12]0}}$1') +} +sub cmd_color { +my ($data, $server, $witem) = @_; +my ($op, $nick, $color) = split " ", $data; +$op = lc $op; +if (!$op) { +Irssi::print ("Supported commands: +preview (list possible colors and their codes) +list (show current entries in saved_colors) +set <nick> <color> (associate a color to a nick) +clear <nick> (delete color associated to nick) +save (save colorsettings to saved_colors file)"); +} elsif ($op eq "save") { +save_colors; +} elsif ($op eq "set") { +if (!$nick) { +Irssi::print ("Nick not given"); +} elsif (!$color) { +Irssi::print ("Color not given"); +} elsif ($color < 2 || $color > 14) { +Irssi::print ("Color must be between 2 and 14 inclusive"); +} else { +$saved_colors{$nick} = $color; +} +} elsif ($op eq "clear") { +if (!$nick) { +Irssi::print ("Nick not given"); +} else { +delete ($saved_colors{$nick}); +} +} elsif ($op eq "list") { +Irssi::print ("\nSaved Colors:"); +foreach my $nick (keys %saved_colors) { +Irssi::print (chr (3) . "$saved_colors{$nick}$nick" . +chr (3) . "1 ($saved_colors{$nick})"); +} +} elsif ($op eq "preview") { +Irssi::print ("\nAvailable colors:"); +foreach my $i (2..14) { +Irssi::print (chr (3) . "$i" . "Color #$i"); +} +} +} +load_colors; +Irssi::command_bind('color', 'cmd_color'); +Irssi::signal_add('message public', 'sig_public'); +Irssi::signal_add('event nick', 'sig_nick'); diff --git a/mpd/mpd.conf b/mpd/mpd.conf new file mode 100644 index 0000000..929a3a5 --- /dev/null +++ b/mpd/mpd.conf @@ -0,0 +1,39 @@ +## Configuracion + +# Basico +music_directory "/home/matias/Music" +playlist_directory "/home/matias/.mpd/playlists" +db_file "/home/matias/.mpd/mpd.db" +log_file "/home/matias/.mpd/mpd.log" +pid_file "/home/matias/.mpd/pid.log" +state_file "/home/matias/.mpd/mpdstate" + +# Audio +#audio_output { +# type "alsa" +# name "MPD Sound Device" +# options "dev=dmixer" +#} + +audio_output { + type "pulse" + name "MPD Sound Device (Pulseaudio)" +} + +audio_output { + type "fifo" + name "my_fifo" + path "/tmp/mpd.fifo" + format "44100:16:2" +} + +audio_output { + type "httpd" + name "My HTTP Stream" + encoder "lame" + port "8000" + bind_to_address "0.0.0.0" + bitrate "128" + format "44100:16:1" + max_clients "0" +} diff --git a/mutt/.passwd.gpg b/mutt/.passwd.gpg Binary files differnew file mode 100644 index 0000000..32bd90a --- /dev/null +++ b/mutt/.passwd.gpg diff --git a/mutt/aliases b/mutt/aliases new file mode 100644 index 0000000..b489b49 --- /dev/null +++ b/mutt/aliases @@ -0,0 +1,26 @@ +# Work +alias tefi Tefi Rollino <tefi.rollino@gmail.com> +alias cristian Cristian Morales <albirrojo@gmail.com> +alias lio Lionel Hubmann <lh@moonlighting.io> +alias gonza Gonzalo Garzon <gjg@moonlighting.io> +alias corin Ricardo Corin <corin@moonlighting.io> +alias cristian Cristian Morales <albirrojo@gmail.com> +alias lio Lionel Hubmann <lh@moonlighting.io> +alias rodri Rodrigo Jaime <roj57@moonlighting.io> +alias emi Emilia Degano <emilia@moonlighting.io> +alias devs Moonlighting Developers <devs@moonlighting.io> +alias moonlighting Moonlighting All <all@moonlighting.io> + +# Famaf +# Old santi +# alias santi Santiago Feraud <dummyplug.04@gmail.com> +alias santi Santiago Feraud <sferaud.04@gmail.com> +alias manu Manuel Cavallo <mcavallo.92@gmail.com> + +# Profes +alias rafa Rafael Carrascosa <rafacarrascosa@gmail.com> +## Arquitectura +alias eduardo Eduardo Sanchez <ledusanchez@gmail.com> + +alias bubu Ignacio del Rio <ignaciodelrio9@gmail.com> +alias diegolis Diego Lis <diegolis@gmail.com> diff --git a/mutt/gpg.rc b/mutt/gpg.rc new file mode 100644 index 0000000..d6c9def --- /dev/null +++ b/mutt/gpg.rc @@ -0,0 +1,85 @@ +# -*-muttrc-*- +# +# Command formats for gpg. +# +# This version uses gpg-2comp from +# http://70t.de/download/gpg-2comp.tar.gz +# +# $Id$ +# +# %p The empty string when no passphrase is needed, +# the string "PGPPASSFD=0" if one is needed. +# +# This is mostly used in conditional % sequences. +# +# %f Most PGP commands operate on a single file or a file +# containing a message. %f expands to this file's name. +# +# %s When verifying signatures, there is another temporary file +# containing the detached signature. %s expands to this +# file's name. +# +# %a In "signing" contexts, this expands to the value of the +# configuration variable $pgp_sign_as. You probably need to +# use this within a conditional % sequence. +# +# %r In many contexts, mutt passes key IDs to pgp. %r expands to +# a list of key IDs. + +# Note that we explicitly set the comment armor header since GnuPG, when used +# in some localiaztion environments, generates 8bit data in that header, thereby +# breaking PGP/MIME. + +# decode application/pgp +set pgp_decode_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f" + +# verify a pgp/mime signature +set pgp_verify_command="gpg --status-fd=2 --no-verbose --quiet --batch --output - --verify %s %f" + +# decrypt a pgp/mime attachment +set pgp_decrypt_command="gpg --status-fd=2 %?p?--passphrase-fd 0? --no-verbose --quiet --batch --output - %f" + +# create a pgp/mime signed attachment +# set pgp_sign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f" +set pgp_sign_command="gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --detach-sign --textmode %?a?-u %a? %f" + +# create a application/pgp signed (old-style) message +# set pgp_clearsign_command="gpg-2comp --comment '' --no-verbose --batch --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f" +set pgp_clearsign_command="gpg --no-verbose --batch --quiet --output - %?p?--passphrase-fd 0? --armor --textmode --clearsign %?a?-u %a? %f" + +# create a pgp/mime encrypted attachment +# set pgp_encrypt_only_command="pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f" +set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f" + +# create a pgp/mime encrypted and signed attachment +# set pgp_encrypt_sign_command="pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f" +set pgp_encrypt_sign_command="pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f" + +# import a key into the public key ring +set pgp_import_command="gpg --no-verbose --import %f" + +# export a key from the public key ring +set pgp_export_command="gpg --no-verbose --export --armor %r" + +# verify a key +set pgp_verify_key_command="gpg --verbose --batch --fingerprint --check-sigs %r" + +# read in the public key ring +set pgp_list_pubring_command="gpg --no-verbose --batch --quiet --with-colons --list-keys %r" + +# read in the secret key ring +set pgp_list_secring_command="gpg --no-verbose --batch --quiet --with-colons --list-secret-keys %r" + +# fetch keys +# set pgp_getkeys_command="pkspxycwrap %r" + +# pattern for good signature - may need to be adapted to locale! + +# set pgp_good_sign="^gpgv?: Good signature from " + +# OK, here's a version which uses gnupg's message catalog: +# set pgp_good_sign="`gettext -d gnupg -s 'Good signature from "' | tr -d '"'`" + +# This version uses --status-fd messages +set pgp_good_sign="^\\[GNUPG:\\] GOODSIG" + diff --git a/mutt/mailboxes b/mutt/mailboxes new file mode 100644 index 0000000..f3cef77 --- /dev/null +++ b/mutt/mailboxes @@ -0,0 +1 @@ +mailboxes "+opmbx/Drafts" "+opmbx/Enviados" "+opmbx/FaMAF" "+opmbx/INBOX" "+opmbx/MobaSimulator" "+opmbx/Rust" "+opmbx/Sent" "+opmbx/Spam" "+opmbx/SpamFalse" "+opmbx/SpamToLearn" "+opmbx/Suckless" "+opmbx/Trash" "+opmbx/Unwanted" diff --git a/mutt/signature b/mutt/signature new file mode 100644 index 0000000..62a9c73 --- /dev/null +++ b/mutt/signature @@ -0,0 +1,3 @@ +XMPP/Mail: matiaslina@openmailbox.org +GPG: http://www.famaf.unc.edu.ar/~mlm0111/pubkey.asc | BBD8 CADC C236 AD16 +Tox ID: A84709E264C9F10B71D3BC2730685C27CBCC2D280E98744C50803509FB0FEF586EBB101D0694 @@ -0,0 +1,191 @@ +# Store messages localy to speed things up. +set header_cache = /tmp/mutt-cache +set message_cachedir = /tmp/mutt-cache +set alias_file = ~/.mutt/aliases +source $alias_file + +# Sidebar settings +set sidebar_visible = yes +set sidebar_width = 24 +set sidebar_sort = yes +#set sidebar_indentstr = ' ' +#set sidebar_folderindent = yes +#set sidebar_shortpath = yes +#set sidebar_format="%B%?F? [%F]?%* %?N?%N/?%S" + +# Smtp opmbx +#set my_user=park +set my_user=matiaslina@openmailbox.org +set my_pass="`echo -n $PASSWORD`" +set realname='Matias Linares' +set smtp_url=smtp://$my_user:$my_pass@smtp.team-deprecated.org +#set from = park@team-deprecated.org +set from = matiaslina@openmailbox.org +#unset ssl_verify_host + +# IMAP opmbx +#set imap_user=park +#set imap_pass=$my_pass +#set folder=imap://imap.team-deprecated.org:143/ +set imap_user=matiaslina@openmailbox.org +set imap_pass="$my_pass" +set folder=imap://imap.openmailbox.org:143/ +set spoolfile=+INBOX +set record="+Sent" +#set imap_check_subscribed = yes +#mailboxes = +INBOX +mailboxes = +INBOX +Archlinux +Archlinux/Development \ + +Archlinux/Announces +Suckless \ + +Herbstluftwm +FaMAF +MobaSimulator +team-deprecated +set use_from=yes +#set ssl_force_tls = yes +# Don't wit to enter mailbox manually +unset imap_passive +# Reduce polling frequency +set net_inc=5 + +# timeouts +set mail_check=60 +set imap_keepalive = 300 +set timeout = 300 + +# Mailing lists +subscribe hlwm@lists.herbstluftwm.org +subscribe dev@suckless.org +subscribe arch-general@archlinux.org +subscribe arch-announce@archlinux.org +subscribe arch-dev-public@archlinux.org + +# Misc. +#set pager_index_lines=5 +set sort="threads" +set sort_aux = "reverse-last-date-received" +set editor="vim" + +set signature = ~/.mutt/signature + +# GPG +source ~/.mutt/gpg.rc +set pgp_sign_as = 7D7B9EF2 +set pgp_timeout = 3600 +set pgp_use_gpg_agent = yes +set crypt_verify_sig = yes +set crypt_autosign = yes +set crypt_replyencrypt = yes + +# Headers +my_hdr X-Operating-System: Arch Linux, `uname -o` `uname -r` +my_hdr X-PGP-Key: http://www.famaf.unc.edu.ar/~mlm0111/pubkey.asc +my_hdr OpenPGP: id=7D7B9EF2\; \ +url=http://www.famaf.unc.edu.ar/~mlm0111/pubkey.asc\; \ +preference=signencrypt + +# Vi-like keybindings +bind generic l select-entry +macro index h '<change-folder>?' +bind index,pager H display-toggle-weed +bind pager h exit +bind pager j next-line +bind pager k previous-line +bind pager l view-attachments +bind attach,compose l view-attach +bind attach h exit +bind attach H display-toggle-weed +bind compose l view-attach + +macro index b '<enter-command>toggle sidebar_visible<enter><refresh>' +macro pager b '<enter-command>toggle sidebar_visible<enter><redraw-screen>' + +# Ctrl-n, Ctrl-p to select next, previous folder. +# Ctrl-o to open selected folder. +bind index,pager \CP sidebar-prev +bind index,pager \CN sidebar-next +bind index,pager \CO sidebar-open + + +# Colours for items in the index + +color index brightcyan default ~N +color index brightred default ~O +color index brightyellow default ~F +color index default green ~T +color index brightred default ~D +mono index bold ~N +mono index bold ~F +mono index bold ~T +mono index bold ~D + +# Highlights inside the body of a message. + +# URLs +color body brightgreen default "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*" +color body brightgreen default "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+" +mono body bold "(http|ftp|news|telnet|finger)://[^ \"\t\r\n]*" +mono body bold "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+" + +## Email addresses. +color body brightgreen default "[-a-z_0-9.%$]+@[-a-z_0-9.]+\\.[-a-z][-a-z]+" + +## Header +color header green default "^from:" +color header green default "^to:" +color header green default "^cc:" +color header green default "^date:" +color header yellow default "^newsgroups:" +color header yellow default "^reply-to:" +color header brightcyan default "^subject:" +color header red default "^x-spam-rule:" +color header green default "^x-mailer:" +color header yellow default "^message-id:" +color header yellow default "^Organization:" +color header yellow default "^Organisation:" +color header yellow default "^User-Agent:" +color header yellow default "^message-id: .*pine" +color header yellow default "^X-Fnord:" +color header yellow default "^X-WebTV-Stationery:" + +color header red default "^x-spam-rule:" +color header green default "^x-mailer:" +color header yellow default "^message-id:" +color header yellow default "^Organization:" +color header yellow default "^Organisation:" +color header yellow default "^User-Agent:" +color header yellow default "^message-id: .*pine" +color header yellow default "^X-Fnord:" +color header yellow default "^X-WebTV-Stationery:" +color header yellow default "^X-Message-Flag:" +color header yellow default "^X-Spam-Status:" +color header yellow default "^X-SpamProbe:" +color header red default "^X-SpamProbe: SPAM" + +## Coloring quoted text - coloring the first 7 levels: +color quoted cyan default +color quoted1 yellow default +color quoted2 red default +color quoted3 green default +color quoted4 cyan default +color quoted5 yellow default +color quoted6 red default +color quoted7 green default + +## Default color definitions +#color hdrdefault white green + +color signature brightmagenta default +color indicator default cyan +color attachment black cyan +color error red default +color message white default +color search brightwhite magenta +color status brightyellow blue +color tree brightblue default +color normal white default +color tilde green default +color bold brightyellow default +#color underline magenta default +color markers brightcyan default + +## Colour definitions when on a mono screen +mono bold bold +mono underline underline +mono indicator reverse diff --git a/ncmpcpp/config b/ncmpcpp/config new file mode 100644 index 0000000..ca1ea71 --- /dev/null +++ b/ncmpcpp/config @@ -0,0 +1,55 @@ +mpd_music_dir = "/home/matias/Music" +mpd_crossfade_time = "5" + +# Visualizer +visualizer_fifo_path = "/tmp/mpd.fifo" +visualizer_output_name = "my_fifo" +visualizer_type = "spectrum" (spectrum/wave) + +# Playlist +song_columns_list_format = "$L(9)[white]{l} (20)[red]{a} (30)[green]{b}$R(20)[cyan]{t}" +now_playing_prefix = "$b" +#now_playing_subfix = "/$b" +playlist_display_mode = "classic" (classic/columns) +autocenter_mode = "no" +centered_cursor = "no" +cyclic_scrolling = "yes" +mouse_list_scroll_whole_page = "no" +#song_list_format = "{$8$9}{[%l] >> }{%t }$R{%a - %b}" +song_list_format = " $0$8$8%l$0$8 $1|$7 $7%a$7 $1|$7 $6%t$1 $R $1%b$1" + +song_library_format = "{%n > }{%t}|{%f}" + +# Bars +song_status_format = "{%a - }{%t - }{%b}" +#progressbar_look = "|> " +progressbar_look = "─╼ " +titles_visibility = "no" +header_visibility = "no" +statusbar_visibility = "no" +user_interface = "alternative" + +# Browser +browser_playlist_prefix = "$2plist »$9 " +browser_display_mode = "columns" (classic/columns) + +# Colors +# discard_colors_if_item_is_selected = "yes" +# header_window_color = "black" +# volume_color = "cyan" +# state_line_color = "black" +# state_flags_color = "green" +# main_window_color = "blue" +# color1 = "cyan" +# color2 = "black" +# main_window_highlight_color = "red" +# progressbar_color = "black" +# statusbar_color = "black" +# active_column_color = "red" +# visualizer_color = "cyan" + +# Others +song_window_title_format = "MPD: {%a > }{%t}{ [%b{ Disc %d}]}|{%f}" +search_engine_display_mode = "columns" (classic/columns) +follow_now_playing_lyrics = "yes" +#display_screens_numbers_on_start = "no" diff --git a/scripts/clear-pacman-cache b/scripts/clear-pacman-cache new file mode 100755 index 0000000..3891796 --- /dev/null +++ b/scripts/clear-pacman-cache @@ -0,0 +1,9 @@ +#!/bin/sh + +if [[ $UID -eq 0 ]] +then + paccache -r + paccache -ruk0 +else + echo "You need to be root!" +fi diff --git a/scripts/get-volume.sh b/scripts/get-volume.sh new file mode 100755 index 0000000..0696b6f --- /dev/null +++ b/scripts/get-volume.sh @@ -0,0 +1,150 @@ +#!/bin/bash + +# This prints a character '♫' and the percentage of the actual volume. +# ♫ = E299AB +WITH_ICONS=false + +get_percentage() { + full_db=65.25 + # -65.25 <= $db <= 0 + db=$1 + bc <<CALC scale=2 +(-$db)/$full_db +CALC +} + +get_icon() { + if [ "$volStatus" == "on" ] + then + echo "\fr♫" + else + echo "\f1♫" + fi +} + +panel_volume() +{ + + volStatus=$(amixer get Master | tail -n 1 | cut -d '[' -f 4 | sed 's/].*//g') + volLevel=$(amixer get Master | tail -n 1 | cut -d '[' -f 2 | sed 's/\%].*//g') + if $WITH_ICONS + then + headphone=$(amixer -c 0 contents | grep 'Headphone Jack' -A 2 | tail -n 1 | sed s/.*=//g) + else + headphone="" + fi + + if $WITH_ICONS + then + if [ "$volStatus" == "on" ] && [ "$headphone" == "off" ]; + then + icon="\fr ⮞" + elif [ "$volStatus" == "on" ] && [ "$headphone" == "on" ]; + then + icon="\fr ⮜" + elif [ "$volStatus" == "off" ] && [ "$headphone" == "on" ]; + then + icon="\fr ⮜" + elif [ "$volStatus" == "off" ] && [ "$headphone" == "off" ]; + then + icon="\fr ⮝" + else + icon="\f1 ⮝" + fi + else + icon=$(get_icon) + fi + + case $volLevel in + 100) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr——————————\fr" + else + echo "$icon" "\f8——————————\fr" + fi + ;; + [0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr—\f8—————————\fr" + else + echo "$icon" "\f1—\f8—————————\fr" + fi + ;; + 1[0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr——\f8————————\fr" + else + echo "$icon" "\f1——\f8————————\fr" + fi + ;; + 2[0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr———\f8———————\fr" + else + echo "$icon" "\f1———\f8———————\fr" + fi + ;; + 3[0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr————\f8——————\fr" + else + echo "$icon" "\f1————\f8——————\fr" + fi + ;; + 4[0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr—————\f8—————\fr" + else + echo "$icon" "\f1—————\f8—————\fr" + fi + ;; + 5[0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr——————\f8————\fr" + else + echo "$icon" "\f1——————\f8————\fr" + fi + ;; + 6[0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr———————\f8———\fr" + else + echo "$icon" "\f1———————\f8———\fr" + fi + ;; + 7[0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr————————\f8——\fr" + else + echo "$icon" "\f1————————\f8——\fr" + fi + ;; + 8[0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr——————————\f8—\fr" + else + echo "$icon" "\f1——————————\f8—\fr" + fi + ;; + 9[0-9]) + if [ "$volStatus" == "on" ] + then + echo "$icon" "\fr——————————\fr" + else + echo "$icon" "\f1——————————\fr" + fi + ;; + esac +} + +panel_volume diff --git a/scripts/hs-cycle-padding b/scripts/hs-cycle-padding new file mode 100755 index 0000000..56fe802 --- /dev/null +++ b/scripts/hs-cycle-padding @@ -0,0 +1,21 @@ +#!/usr/bin/ruby + +file1 = "/tmp/herbst-padding-1" +file2 = "/tmp/herbst-padding-2" + +pad1 = 'pad 0 0 0 0 0' +pad2 = 'pad 0 0 20 0 200' +pad3 = 'pad 0 0 0 0 150' + +files = [file1, file2].map{|f| File.exist? File.expand_path(f)} + +if files == [false, false] # 0 files + system "herbstclient #{pad2}" + system "touch #{file1}" +elsif files == [true, false] # 1 file + system "herbstclient #{pad1}" + system "touch #{file2}" +else # 2 files + system "herbstclient #{pad3}" + system "rm #{file1} #{file2}" +end diff --git a/scripts/ix b/scripts/ix new file mode 100755 index 0000000..47c3e2b --- /dev/null +++ b/scripts/ix @@ -0,0 +1,3 @@ +#!/bin/bash +curl -F 'f:1=<-' -F "ext:1=$1" ix.io #| \ + #xclip -i -selection clipboard diff --git a/scripts/lock b/scripts/lock new file mode 100755 index 0000000..4046b49 --- /dev/null +++ b/scripts/lock @@ -0,0 +1,18 @@ +#!/bin/bash + +bg=/tmp/screen.png +lock_png=${HOME}/scripts/lock.png +_backlight=$(xbacklight -get) +backlight=${_backlight::2} + +scrot ${bg} +#convert ${bg} -scale 25% -scale 400% ${bg} +convert ${bg} -blur 0x2 -sharpen 1x4 ${bg} + +[[ -f ${lock_png} ]] && convert ${bg} ${lock_png} \ + -gravity center -composite -matte \ + ${bg} +xbacklight -set 10 +i3lock -u -n -i ${bg} +rm ${bg} +xbacklight -set $backlight diff --git a/scripts/lock.png b/scripts/lock.png Binary files differnew file mode 100644 index 0000000..62eb9e9 --- /dev/null +++ b/scripts/lock.png diff --git a/scripts/markdown-mine b/scripts/markdown-mine new file mode 100755 index 0000000..6505be7 --- /dev/null +++ b/scripts/markdown-mine @@ -0,0 +1,64 @@ +#!/bin/bash + +begin_of_html() { + cat > "$1" <<EOF +<!DOCTYPE html> +<html> +<head> +<meta http-equiv="content-type" content="text/html; charset=utf-8"> +<style> +html, body { + padding: 10px; + padding-left: 4%; + padding-right: 4%; + font-family: monospace; + font-size: 13px; +} + +a { + text-decoration: none; + color: #ab2323; + font-size: 0.95em; + font-weight: bold; +} + +h1 { + font-size: 32px; + padding:3px; +} + +h2 { + border-bottom: 1px solid #dedede; + padding:1px; +} +</style> +</head> +<body> +EOF +} + +_OUTFILE="$2" +_INFILE="$1" + +main() { + begin_of_html "$_OUTFILE" + /usr/bin/markdown "$_INFILE" >> "$_OUTFILE" + echo "</body>" >> "$_OUTFILE" +} + +case $1 in + --help|-h) + echo "$0 file.md out.html" + exit 0 + ;; + *) + if [[ $# -ne 2 ]] + then + echo "Invalid arguments!" + echo "$0 file.md out.html" + else + main + fi + exit 1 + ;; +esac diff --git a/scripts/mlblog b/scripts/mlblog new file mode 120000 index 0000000..84a2657 --- /dev/null +++ b/scripts/mlblog @@ -0,0 +1 @@ +/home/matias/Workspace/blog/bin/mlblog
\ No newline at end of file diff --git a/scripts/monserv b/scripts/monserv new file mode 120000 index 0000000..38b3fa6 --- /dev/null +++ b/scripts/monserv @@ -0,0 +1 @@ +/home/matias/Workspace/other_projects/monserv/bin/monserv
\ No newline at end of file diff --git a/scripts/nm-connected-device b/scripts/nm-connected-device new file mode 100755 index 0000000..c4fc24a --- /dev/null +++ b/scripts/nm-connected-device @@ -0,0 +1,5 @@ +#!/bin/bash + +OUT=$(nmcli device wifi list | grep "^\*" | tail -n 1 | awk -e '{print $2,$8}') + +echo "network $OUT" diff --git a/scripts/spawn b/scripts/spawn new file mode 100755 index 0000000..6a30ee1 --- /dev/null +++ b/scripts/spawn @@ -0,0 +1,3 @@ +#!/bin/bash + +$@ 2>&1 >/dev/null & disown %1 diff --git a/scripts/sprunge b/scripts/sprunge new file mode 100755 index 0000000..ba30dae --- /dev/null +++ b/scripts/sprunge @@ -0,0 +1,2 @@ +#!/bin/bash +curl -F sprunge=@- sprunge.us diff --git a/scripts/terminal-colors b/scripts/terminal-colors new file mode 100755 index 0000000..985cefb --- /dev/null +++ b/scripts/terminal-colors @@ -0,0 +1,529 @@ +#!/usr/bin/env python + +"""2.2 John Eikenberry <jae@zhar.net> GPL-3+ http://zhar.net/projects/ + +Copyright + Copyright (C) 2010-2013 John Eikenberry <jae@zhar.net> + +License + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Description + My goal in writing this script was to provide all the functionality of all + the various perl/sh scripts found around the web in one place with some + additional bells and whistles. + + It automatically detects 8, 16, 88, 256 color capabilities (via ncurses) + and displays the appropriate color charts. It can display the colors as + blocks or (2d) cubes optionally with color values overlaid in int or hex + values. It can show the full rgb text string as well. It can also show the + display with a vertical (default) or horizontal orientation. It has the + option of additional padding and supports -h --help as well. + + It also works as a utility for converting between 256 and 88 color values. + +Development + A note on coding style. I was playing around with using classes as simple + module-esque namespaces; i.e. having classes that have all staticmethods + and never get instatiated. As a side effect of this it makes calls at the + module level thus this script is not really importable, thus limiting + reuse. + +Contributors + Isaac Cammann <icammann@gmail.com> - cube display bugfix + Jan Larres <jan@majutsushi.net> - submitted patches for.. + - compact rgb display + - use of color intensity to determine foreground contrast color + - 16 color SGR ANSI chart + - 88 color rgb display bugfix + +""" +from __future__ import print_function + +__version__ = __doc__.split('\n')[0] + +import sys +import curses +from optparse import OptionParser, OptionGroup, make_option +from math import ceil, sqrt +from functools import wraps + +# output constants +fg_escape = "\x1b[38;5;%dm" +bg_escape = "\x1b[48;5;%dm" +clear = "\x1b[0m" + +def _get_options(args): + """ Setup and parse options. + """ + option_list = [ + make_option("-b", "--block", action="store_true", dest="block", + default=True, help="Display as block format (vs cube) [default]."), + make_option("-c", "--cube-slice", action="store_true", dest="cube", + default=False, help="Display as cube slices (vs block)."), + make_option("-f", "--foreground", action="store_true", + dest="foreground", default=False, + help="Use color for foreground text."), + make_option("-l", "--rgb", action="store_true", dest="rgb", + default=False, help="Long format. RGB values as text."), + make_option("-n", "--numbers", action="store_true", dest="numbers", + default=False, help="Include color escape numbers on chart."), + make_option("-o", "--basiccodes", action="store_true", + dest="basiccodes", default=False, + help="Display 16 color chart with SGR ANSI escape codes."), + make_option("-p", "--padding", action="store_true", dest="padding", + default=False, help="Add extra padding (helps discern colors)."), + make_option("-v", "--vertical", action="store_true", dest="vertical", + default=True, help="Display with vertical orientation [default]."), + make_option("-x", "--hex", action="store_true", dest="hex", + default=False, help="Include hex color numbers on chart."), + make_option("-z", "--horizontal", action="store_true", + dest="horizontal", default=False, + help="Display with horizontal orientation."), + ] + + parser = OptionParser(version=__version__, option_list=option_list) + + convert_option_list = [ + make_option("-r", "--256to88", action="store", dest="reduce", + metavar="N", type="int", + help="Convert (reduce) 256 color value N to an 88 color value."), + make_option("-e", "--88to256", action="store", dest="expand", + metavar="N", type="int", + help="Convert (expand) 88 color value N to an 256 color value."), + ] + group = OptionGroup(parser, "Conversion options") + group.add_options(option_list=convert_option_list) + parser.add_option_group(group) + + (options, args) = parser.parse_args(args) + return options + +# instantiate global options based on command arguments +options = _get_options(sys.argv[1:]) +# don't allow -f by itself +options.foreground = options.foreground and ( + options.numbers or options.hex or options.rgb ) + +class _staticmethods(type): + """ Got tired of adding @staticmethod in front of every method. + """ + def __new__(m, n, b, d): + """ turn all methods in to staticmethods. + staticmethod() deals correctly with class attributes. + """ + for (n, f) in d.items(): + if callable(f): + d[n] = staticmethod(f) + return type.__new__(m, n, b, d) + +def _cached(f): + """ Memoize function w/ no params + """ + _cache = {} + def cache(): + if None not in _cache: + _cache[None] = f() + return _cache[None] + return cache + + +class term16(object): + """ Basic 16 color terminal. + """ + __metaclass__ = _staticmethods + + def label(n, esc): + """ color label for 256 color values + """ + if options.numbers: + return esc(n) + "%3d " % n + elif options.hex: + return esc(n) + " %2x " % n + return esc(n) + " " + + def _render(): + """ 16 color info + """ + if options.foreground: + esc = lambda n: fg_escape % n + else: + esc = lambda n: bg_escape % n + fg_escape % (15 if n < 9 else 0) + return [[term16.label(n, esc) + clear for n in range(8)], + [term16.label(n, esc) + clear for n in range(8,16)]] + + def basiccodes(): + text = " gYw " + esc_code = "\x1b[%sm" + print(' ' * 17 + ' '.join([str(40 + n) + "m" for n in range(8)])) + fg_codes = ['0', '1'] + for i in range(30, 38): + fg_codes.extend([str(i), "1;%d" % i]) + for fg in fg_codes: + print("%5sm " % fg + esc_code % fg + text + clear + ' ', end='') + print(' '.join([esc_code % fg + esc_code % bg + text + clear + for bg in range(40, 48)])) + + def display(): + """ display 16 color info + """ + print("System colors:") + colors = term16._render() + padding=' ' if options.padding else '' + for r in colors: + print(padding.join(i for i in r)) + if options.padding: print() + + +class term256(term16): + """ eg. xterm-256 + """ + + @_cached + def _rgb_lookup(): + """ color rgb lookup dict + """ + # color increment is based on xterm/rxvt palette + cincr = [0] + [95+40*n for n in range(5)] + color_rgb = [rgb(i, j, k) + for i in cincr for j in cincr for k in cincr] + color_rgb = dict(zip(range(16, len(color_rgb)+16), color_rgb)) + greys = [rgb(*((n,)*3)) for n in range(8, 248, 10)] + greys = dict(zip(range(232, 256), greys)) + color_rgb.update(greys) + return color_rgb + + def _to_rgb(n): + """ Convert color value to rgb tuple. + """ + return term256._rgb_lookup()[n] + + def _rgb_color_table(): + """ 256 color info + """ + rgbl = term256._rgb_lookup() + label_num = "% 4d: " + label_val = "%s" + if options.foreground: + render = lambda n: fg_escape % n + label_num % n + \ + label_val % str(rgbl[n]) + clear + else: + render = lambda n: fg_escape % n + label_num % n + \ + fg_escape % (16 if rgbl[n].is_light() else 255) \ + + bg_escape % n + label_val % str(rgbl[n]) + clear + return [[render(n) for n in [i+j for j in range(6)]] + for i in range(16, 256, 6)] + + def _rgb_display(): + """ display colors with rgb hex info + """ + colors = term256._rgb_color_table() + padding=' ' if options.padding else '' + while colors: + rows, colors = colors[:6], colors[6:] + if not options.horizontal: + rows = zip(*rows) + for r in rows: + print(padding.join(i for i in r)) + if options.padding: print() + print() + + def _colors(): + """ 256 color numbers + """ + return [[i+j for j in range(6)] for i in range(16, 232, 6)] + + def _greyscale(): + """ 256 greyscale numbers + """ + return [[i+j for j in range(12)] for i in range(232, 256, 12)] + + def _render(palette): + """ compact 256 color info + """ + if options.foreground: + esc = lambda n: fg_escape % n + render = lambda n: term256.label(n, esc) + clear + else: + esc = lambda n: fg_escape % \ + (16 if term256._to_rgb(n).is_light() else 255) + render = lambda n: bg_escape % n + term256.label(n, esc) + clear + return [[render(n) for n in i] for i in palette] + + def _compact_display(): + """ display colors in compact format + """ + colors = term256._render(term256._colors()) + if options.cube: + _cube_display(colors) + elif options.block: + _block_display(colors) + print() + greys = term256._render(term256._greyscale()) + padding=' ' if options.padding else '' + for r in greys: + print(padding.join(i for i in r)) + if options.padding: print() + + def display(): + """ display 256 color info (+ 16 in compact format) + """ + if options.rgb: + print("Xterm RGB values for 6x6x6 color cube and greyscale.") + print() + term256._rgb_display() + else: + term16.display() + print() + print("6x6x6 color cube and greyscale:") + term256._compact_display() + + +class term88(term16): + """ xterm-88 or urxvt + """ + + @_cached + def _rgb_lookup(): + """ color rgb lookup dict + """ + # color increment is based on rxvt palette + cincr = [0, 0x8b, 0xcd, 0xff] + color_rgb = [rgb(i, j, k) + for i in cincr for j in cincr for k in cincr] + color_rgb = dict(zip(range(16, len(color_rgb)+16), color_rgb)) + greys = [rgb(*((n,)*3)) + for n in [0x2e, 0x5c, 0x73, 0x8b, 0xa2, 0xb9, 0xd0, 0xe7]] + greys = dict(zip(range(80, 88), greys)) + color_rgb.update(greys) + return color_rgb + + def _to_rgb(n): + """ Convert color value to rgb tuple. + """ + return term88._rgb_lookup()[n] + + def _rgb_color_table(): + """ 88 color info + """ + rgbl = term88._rgb_lookup() + label_num = "% 4d: " + label_val = "%s" + if options.foreground: + render = lambda n: fg_escape % n + label_num % n + \ + label_val % str(rgbl[n]) + clear + else: + render = lambda n: fg_escape % n + label_num % n + \ + fg_escape % (16 if rgbl[n].is_light() else 87) \ + + bg_escape % n + label_val % str(rgbl[n]) + clear + return [[render(n) for n in [i+j for j in range(4)]] + for i in range(16, 88, 4)] + + def _rgb_display(): + """ display colors with rgb hex info + """ + colors = term88._rgb_color_table() + while colors: + rows, colors = colors[:4], colors[4:] + for r in zip(*rows): + print(''.join(i for i in r)) + print() + + def _render(palette): + """ 88 color info + """ + if options.foreground: + esc = lambda n: fg_escape % n + render = lambda n: term88.label(n, esc) + clear + else: + esc = lambda n: fg_escape % \ + (16 if term88._to_rgb(n).is_light() else 87) + render = lambda n: bg_escape % n + term88.label(n, esc) + clear + return [[render(n) for n in i] for i in palette] + #for n in [i+j for j in range(4)]] + #for i in range(16, 80, 4)] + + def _colors(): + """ 88 color numbers + """ + return [[i+j for j in range(4)] for i in range(16, 80, 4)] + + def _greyscale(): + """ 88 greyscale numbers + """ + return [range(80,88)] + + + def display(): + """ display 16 + 88 color info + """ + if options.rgb: + print("Xterm RGB values for 4x4x4 color cube and greyscale.") + print() + term88._rgb_display() + else: + padding = ' ' if options.padding else '' + term16.display() + print() + print("4x4x4 color cube and greyscale:") + colors = term88._render(term88._colors()) + if options.cube: + _cube_display(colors) + elif options.block: + _block_display(colors) + print() + greys = term88._render(term88._greyscale()) + for r in greys: + print(padding.join(i for i in r)) + +class rgb(tuple): + """ An RGB, (red, green, blue) tuple. Takes integers. + """ + def __new__(cls, r, g, b): + """ We want 3 colors. + """ + return super(rgb, cls).__new__(cls, (r,g,b)) + + def __str__(self): + """ Display in compact rgb format. + """ + return "#%02x%02x%02x" % self + + def is_light(self): + """ Is this color light (or dark). + """ + red, green, blue = self[0], self[1], self[2] + intensity = red*0.2126 + green*0.7152 + blue*0.0722 + return intensity > 127 + + +def _cube_display(colors): + """ Display color cube as color aligned flatten cube sides. + """ + padding = ' ' if options.padding else '' + if options.horizontal: + def _horizontal(colors): + size = int(sqrt(len(colors))) + for n in (n*size for n in range(size)): + colors[n:n+size] = zip(*colors[n:n+size]) + while colors: + rows, colors = colors[:size*2], colors[size*2:] + for n in range(size): + print(padding.join(i + for i in rows[n]+tuple(reversed(rows[n+size])))) + if options.padding: print(padding) + if colors: print() + _horizontal(colors) + else: #options.vertical - default + def _vertical(colors): + size = int(sqrt(len(colors))) + top = [colors[n:len(colors):size*2] for n in range(size)] + bottom = [colors[n+size:len(colors):size*2] + for n in reversed(range(size))] + for group in [top, bottom]: + for rows in group: + for r in rows: + print(padding.join(i for i in r), end=' ') + if options.padding: print(padding, end=' ') + if options.padding: print() + print() + _vertical(colors) + +def _block_display(colors): + """ Display color cube as cube sides organized by color #s (default). + """ + padding = ' ' if options.padding else '' + size = int(sqrt(len(colors))) + if not options.horizontal: + for n in (n*size for n in range(size)): + colors[n:n+size] = zip(*colors[n:n+size]) + while colors: + half = size*(size//2) + rows, colors = colors[:half], colors[half:] + for n in range(size): + for r in rows[n:len(rows):size]: + print(padding.join(i for i in r), end=' ') + if options.padding: print(padding, end=' ') + if options.padding: print() + print() + if colors: print() + +def convert88to256(n): + """ 88 (4x4x4) color cube to 256 (6x6x6) color cube values + """ + if n < 16: + return n + elif n > 79: + return 234 + (3 * (n - 80)) + else: + def m(n): + "0->0, 1->1, 2->3, 3->5" + return n and n + n-1 or n + b = n - 16 + x = b % 4 + y = (b // 4) % 4 + z = b // 16 + return 16 + m(x) + (6 * m(y) + 36 * m(z)) + +def convert256to88(n): + """ 256 (6x6x6) color cube to 88 (4x4x4) color cube values + """ + if n < 16: + return n + elif n > 231: + if n < 234: + return 0 + return 80 + ((n - 234) // 3) + else: + def m(n, _ratio=(4./6.)): + if n < 2: + return int(ceil(_ratio*n)) + else: + return int(_ratio*n) + b = n - 16 + x = b % 6 + y = (b // 6) % 6 + z = b // 36 + return 16 + m(x) + (4 * m(y) + 16 * m(z)) + +def _terminal(): + """ detect # of colors supported by terminal and return appropriate + terminal class + """ + curses.setupterm() + num_colors = curses.tigetnum('colors') + if num_colors > 0: + return {16:term16, 88:term88, 256:term256}.get(num_colors, term16) + +def main(): + if options.reduce: + v = convert256to88(options.reduce) + # reconvert back to display reduction in context + print("%s (equivalent to 256 value: %s)" % (v, convert88to256(v))) + elif options.expand: + print(convert88to256(options.expand)) + else: + term = _terminal() + if term is None: + print("Your terminal reports that it has no color support.") + else: + if options.basiccodes: + print("Basic 16 color chart with SGR ANSI escape codes.\n") + term16.basiccodes() + else: + term.display() + +if __name__ == "__main__": + main() + diff --git a/scripts/whoneeds b/scripts/whoneeds new file mode 100755 index 0000000..6f8f23c --- /dev/null +++ b/scripts/whoneeds @@ -0,0 +1,71 @@ +#!/bin/bash +# whoneeds package : shows explicitly installed packages that require some package + +# we use associative arrays to get uniqueness for "free" +typeset -A root_packages +typeset -A walked_nodes +query="$1" + +function walk_nodes () { + local package="$1" + + # if we've walked this node before, skip. This drastically + # reduces overhead for a relatively cheap operation + [[ "${walked_nodes[$package]}" -eq 1 ]] && return 0 + walked_nodes["$package"]=1 + + # we do this so that we can make a single call to pacman + # to get both bits of information that we require + result=( $(LC_ALL=c pacman -Qi "$package" | awk -F':' \ + 'BEGIN { tag = ""; dependents = ""; explicit = 0 } + { + # since the formatting of the pacman output is more for human + # consumption than programmatic, we find ourselves with the following need. + # if we have two fields, then we know we have a proper identifier on the line + # so we store the identifier as a current tag + # All identifier checks are made against the current tag, which allows us + # to deal with instances where "Required By" spans lines + if (NF == 2) { tag = $1 } + if (tag ~ /^Required By[ ]*$/) { dependents = dependents $(NF) } + if ($1 ~ /^Install Reason $/ && $2 ~/^ Explicitly installed/) { explicit = 1 } + } + END { print explicit,dependents}') ) + + # and if we hit an issue retrieving package information + if [[ ${#result[*]} -lt 2 ]]; then + echo "error: could not get information on $package" 1>&2 + exit 3 + fi + if [[ ${result[0]} -eq 1 ]]; then + # we found an explicitly installed package that relies on + # the original query. Add it to our array, provided it isn't + # the original query, as that would be useless information + [[ "$query" != "$package" ]] && root_packages["$package"]=1 + fi + if [[ "${result[1]}" != "None" ]]; then + # iterate over our 'Required By:' packages + dependents="${result[@]:1:${#result[*]}}" + for i in "$dependents"; do + walk_nodes "$i" + done + fi +} + +if [ $# -ne 1 ]; then + echo "error: unexpected number of arguments" 1>&2 + echo "Usage: $(basename $0) <package-name>" + exit 2 +fi + +walk_nodes "$1" +echo "Packages that depend on [$query]" +if [[ -n "${!root_packages[*]}" ]]; then + for pkg in "${!root_packages[@]}"; do + echo " $pkg" + done | sort + exit 0 +fi +echo " None" +exit 1 + +# vim: set ts=4 sw=4 et: diff --git a/vim/.netrwhist b/vim/.netrwhist new file mode 100644 index 0000000..788e683 --- /dev/null +++ b/vim/.netrwhist @@ -0,0 +1,10 @@ +let g:netrw_dirhistmax =10 +let g:netrw_dirhist_cnt =8 +let g:netrw_dirhist_1='/home/matias/Moonlighting/ssh/app/views/creations' +let g:netrw_dirhist_2='/home/matias/Moonlighting/other_projects/rendis' +let g:netrw_dirhist_3='/home/matias/Moonlighting/other_projects/rendis/etc' +let g:netrw_dirhist_4='/home/matias/Moonlighting/other_projects/rendis/etc/init.d' +let g:netrw_dirhist_5='/home/matias' +let g:netrw_dirhist_6='/home/matias/Desktop' +let g:netrw_dirhist_7='/home/matias/Desktop/xmpp client' +let g:netrw_dirhist_8='/home/matias/Moonlighting/ssh' diff --git a/vim/autoload/pathogen.vim b/vim/autoload/pathogen.vim new file mode 100644 index 0000000..a3a8f1d --- /dev/null +++ b/vim/autoload/pathogen.vim @@ -0,0 +1,332 @@ +" pathogen.vim - path option manipulation +" Maintainer: Tim Pope <http://tpo.pe/> +" Version: 2.3 + +" Install in ~/.vim/autoload (or ~\vimfiles\autoload). +" +" For management of individually installed plugins in ~/.vim/bundle (or +" ~\vimfiles\bundle), adding `execute pathogen#infect()` to the top of your +" .vimrc is the only other setup necessary. +" +" The API is documented inline below. For maximum ease of reading, +" :set foldmethod=marker + +if exists("g:loaded_pathogen") || &cp + finish +endif +let g:loaded_pathogen = 1 + +" Point of entry for basic default usage. Give a relative path to invoke +" pathogen#interpose() (defaults to "bundle/{}"), or an absolute path to invoke +" pathogen#surround(). For backwards compatibility purposes, a full path that +" does not end in {} or * is given to pathogen#runtime_prepend_subdirectories() +" instead. +function! pathogen#infect(...) abort " {{{1 + for path in a:0 ? filter(reverse(copy(a:000)), 'type(v:val) == type("")') : ['bundle/{}'] + if path =~# '^[^\\/]\+$' + call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')') + call pathogen#interpose(path . '/{}') + elseif path =~# '^[^\\/]\+[\\/]\%({}\|\*\)$' + call pathogen#interpose(path) + elseif path =~# '[\\/]\%({}\|\*\)$' + call pathogen#surround(path) + else + call s:warn('Change pathogen#infect('.string(path).') to pathogen#infect('.string(path.'/{}').')') + call pathogen#surround(path . '/{}') + endif + endfor + call pathogen#cycle_filetype() + return '' +endfunction " }}}1 + +" Split a path into a list. +function! pathogen#split(path) abort " {{{1 + if type(a:path) == type([]) | return a:path | endif + let split = split(a:path,'\\\@<!\%(\\\\\)*\zs,') + return map(split,'substitute(v:val,''\\\([\\,]\)'',''\1'',"g")') +endfunction " }}}1 + +" Convert a list to a path. +function! pathogen#join(...) abort " {{{1 + if type(a:1) == type(1) && a:1 + let i = 1 + let space = ' ' + else + let i = 0 + let space = '' + endif + let path = "" + while i < a:0 + if type(a:000[i]) == type([]) + let list = a:000[i] + let j = 0 + while j < len(list) + let escaped = substitute(list[j],'[,'.space.']\|\\[\,'.space.']\@=','\\&','g') + let path .= ',' . escaped + let j += 1 + endwhile + else + let path .= "," . a:000[i] + endif + let i += 1 + endwhile + return substitute(path,'^,','','') +endfunction " }}}1 + +" Convert a list to a path with escaped spaces for 'path', 'tag', etc. +function! pathogen#legacyjoin(...) abort " {{{1 + return call('pathogen#join',[1] + a:000) +endfunction " }}}1 + +" Turn filetype detection off and back on again if it was already enabled. +function! pathogen#cycle_filetype() " {{{1 + if exists('g:did_load_filetypes') + filetype off + filetype on + endif +endfunction " }}}1 + +" Check if a bundle is disabled. A bundle is considered disabled if its +" basename or full name is included in the list g:pathogen_disabled. +function! pathogen#is_disabled(path) abort " {{{1 + let sep = pathogen#slash() + let blacklist = get(g:, 'pathogen_blacklist', get(g:, 'pathogen_disabled', [])) + return index(blacklist, fnamemodify(a:path, ':t')) != -1 || index(blacklist, a:path) != -1 +endfunction "}}}1 + +" Prepend the given directory to the runtime path and append its corresponding +" after directory. If the directory is already included, move it to the +" outermost position. Wildcards are added as is. Ending a path in /{} causes +" all subdirectories to be added (except those in g:pathogen_disabled). +function! pathogen#surround(path) abort " {{{1 + let sep = pathogen#slash() + let rtp = pathogen#split(&rtp) + if a:path =~# '[\\/]{}$' + let path = fnamemodify(a:path[0:-4], ':p:s?[\\/]\=$??') + let before = filter(pathogen#glob_directories(path.sep.'*'), '!pathogen#is_disabled(v:val)') + let after = filter(reverse(pathogen#glob_directories(path.sep."*".sep."after")), '!pathogen#is_disabled(v:val[0:-7])') + call filter(rtp,'v:val[0:strlen(path)-1] !=# path') + else + let path = fnamemodify(a:path, ':p:s?[\\/]\=$??') + let before = [path] + let after = [path . sep . 'after'] + call filter(rtp, 'index(before + after, v:val) == -1') + endif + let &rtp = pathogen#join(before, rtp, after) + return &rtp +endfunction " }}}1 + +" For each directory in the runtime path, add a second entry with the given +" argument appended. If the argument ends in '/{}', add a separate entry for +" each subdirectory. +function! pathogen#interpose(name) abort " {{{1 + let sep = pathogen#slash() + let name = a:name + if has_key(s:done_bundles, name) + return "" + endif + let s:done_bundles[name] = 1 + let list = [] + for dir in pathogen#split(&rtp) + if dir =~# '\<after$' + if name =~# '{}$' + let list += filter(pathogen#glob_directories(substitute(dir,'after$',name[0:-3],'').'*'.sep.'after'), '!pathogen#is_disabled(v:val[0:-7])') + [dir] + else + let list += [dir, substitute(dir, 'after$', '', '') . name . sep . 'after'] + endif + else + if name =~# '{}$' + let list += [dir] + filter(pathogen#glob_directories(dir.sep.name[0:-3].'*'), '!pathogen#is_disabled(v:val)') + else + let list += [dir . sep . name, dir] + endif + endif + endfor + let &rtp = pathogen#join(pathogen#uniq(list)) + return 1 +endfunction + +let s:done_bundles = {} + +" }}}1 + +" Invoke :helptags on all non-$VIM doc directories in runtimepath. +function! pathogen#helptags() abort " {{{1 + let sep = pathogen#slash() + for glob in pathogen#split(&rtp) + for dir in map(split(glob(glob), "\n"), 'v:val.sep."/doc/".sep') + if (dir)[0 : strlen($VIMRUNTIME)] !=# $VIMRUNTIME.sep && filewritable(dir) == 2 && !empty(split(glob(dir.'*.txt'))) && (!filereadable(dir.'tags') || filewritable(dir.'tags')) + silent! execute 'helptags' pathogen#fnameescape(dir) + endif + endfor + endfor +endfunction " }}}1 + +command! -bar Helptags :call pathogen#helptags() + +" Execute the given command. This is basically a backdoor for --remote-expr. +function! pathogen#execute(...) abort " {{{1 + for command in a:000 + execute command + endfor + return '' +endfunction " }}}1 + +" Section: Unofficial + +" \ on Windows unless shellslash is set, / everywhere else. +function! pathogen#slash() abort " {{{1 + return !exists("+shellslash") || &shellslash ? '/' : '\' +endfunction " }}}1 + +function! pathogen#separator() abort " {{{1 + return pathogen#slash() +endfunction " }}}1 + +" Convenience wrapper around glob() which returns a list. +function! pathogen#glob(pattern) abort " {{{1 + let files = split(glob(a:pattern),"\n") + return map(files,'substitute(v:val,"[".pathogen#slash()."/]$","","")') +endfunction "}}}1 + +" Like pathogen#glob(), only limit the results to directories. +function! pathogen#glob_directories(pattern) abort " {{{1 + return filter(pathogen#glob(a:pattern),'isdirectory(v:val)') +endfunction "}}}1 + +" Remove duplicates from a list. +function! pathogen#uniq(list) abort " {{{1 + let i = 0 + let seen = {} + while i < len(a:list) + if (a:list[i] ==# '' && exists('empty')) || has_key(seen,a:list[i]) + call remove(a:list,i) + elseif a:list[i] ==# '' + let i += 1 + let empty = 1 + else + let seen[a:list[i]] = 1 + let i += 1 + endif + endwhile + return a:list +endfunction " }}}1 + +" Backport of fnameescape(). +function! pathogen#fnameescape(string) abort " {{{1 + if exists('*fnameescape') + return fnameescape(a:string) + elseif a:string ==# '-' + return '\-' + else + return substitute(escape(a:string," \t\n*?[{`$\\%#'\"|!<"),'^[+>]','\\&','') + endif +endfunction " }}}1 + +" Like findfile(), but hardcoded to use the runtimepath. +function! pathogen#runtime_findfile(file,count) abort "{{{1 + let rtp = pathogen#join(1,pathogen#split(&rtp)) + let file = findfile(a:file,rtp,a:count) + if file ==# '' + return '' + else + return fnamemodify(file,':p') + endif +endfunction " }}}1 + +" Section: Deprecated + +function! s:warn(msg) + echohl WarningMsg + echomsg a:msg + echohl NONE +endfunction + +" Prepend all subdirectories of path to the rtp, and append all 'after' +" directories in those subdirectories. Deprecated. +function! pathogen#runtime_prepend_subdirectories(path) " {{{1 + call s:warn('Change pathogen#runtime_prepend_subdirectories('.string(a:path).') to pathogen#infect('.string(a:path.'/{}').')') + return pathogen#surround(a:path . pathogen#slash() . '{}') +endfunction " }}}1 + +function! pathogen#incubate(...) abort " {{{1 + let name = a:0 ? a:1 : 'bundle/{}' + call s:warn('Change pathogen#incubate('.(a:0 ? string(a:1) : '').') to pathogen#infect('.string(name).')') + return pathogen#interpose(name) +endfunction " }}}1 + +" Deprecated alias for pathogen#interpose(). +function! pathogen#runtime_append_all_bundles(...) abort " {{{1 + if a:0 + call s:warn('Change pathogen#runtime_append_all_bundles('.string(a:1).') to pathogen#infect('.string(a:1.'/{}').')') + else + call s:warn('Change pathogen#runtime_append_all_bundles() to pathogen#infect()') + endif + return pathogen#interpose(a:0 ? a:1 . '/{}' : 'bundle/{}') +endfunction " }}}1 + +if exists(':Vedit') + finish +endif + +let s:vopen_warning = 0 + +function! s:find(count,cmd,file,lcd) " {{{1 + let rtp = pathogen#join(1,pathogen#split(&runtimepath)) + let file = pathogen#runtime_findfile(a:file,a:count) + if file ==# '' + return "echoerr 'E345: Can''t find file \"".a:file."\" in runtimepath'" + endif + if !s:vopen_warning + let s:vopen_warning = 1 + let warning = '|echohl WarningMsg|echo "Install scriptease.vim to continue using :V'.a:cmd.'"|echohl NONE' + else + let warning = '' + endif + if a:lcd + let path = file[0:-strlen(a:file)-2] + execute 'lcd `=path`' + return a:cmd.' '.pathogen#fnameescape(a:file) . warning + else + return a:cmd.' '.pathogen#fnameescape(file) . warning + endif +endfunction " }}}1 + +function! s:Findcomplete(A,L,P) " {{{1 + let sep = pathogen#slash() + let cheats = { + \'a': 'autoload', + \'d': 'doc', + \'f': 'ftplugin', + \'i': 'indent', + \'p': 'plugin', + \'s': 'syntax'} + if a:A =~# '^\w[\\/]' && has_key(cheats,a:A[0]) + let request = cheats[a:A[0]].a:A[1:-1] + else + let request = a:A + endif + let pattern = substitute(request,'/\|\'.sep,'*'.sep,'g').'*' + let found = {} + for path in pathogen#split(&runtimepath) + let path = expand(path, ':p') + let matches = split(glob(path.sep.pattern),"\n") + call map(matches,'isdirectory(v:val) ? v:val.sep : v:val') + call map(matches,'expand(v:val, ":p")[strlen(path)+1:-1]') + for match in matches + let found[match] = 1 + endfor + endfor + return sort(keys(found)) +endfunction " }}}1 + +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Ve :execute s:find(<count>,'edit<bang>',<q-args>,0) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vedit :execute s:find(<count>,'edit<bang>',<q-args>,0) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vopen :execute s:find(<count>,'edit<bang>',<q-args>,1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vsplit :execute s:find(<count>,'split',<q-args>,<bang>1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vvsplit :execute s:find(<count>,'vsplit',<q-args>,<bang>1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vtabedit :execute s:find(<count>,'tabedit',<q-args>,<bang>1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vpedit :execute s:find(<count>,'pedit',<q-args>,<bang>1) +command! -bar -bang -range=1 -nargs=1 -complete=customlist,s:Findcomplete Vread :execute s:find(<count>,'read',<q-args>,<bang>1) + +" vim:set et sw=2: diff --git a/vim/colors/biogoo.vim b/vim/colors/biogoo.vim new file mode 100644 index 0000000..bef7576 --- /dev/null +++ b/vim/colors/biogoo.vim @@ -0,0 +1,110 @@ +" Vim color file - biogoo +" Generated by http://bytefluent.com/vivify 2014-07-15 +set background=light +if version > 580 + hi clear + if exists("syntax_on") + syntax reset + endif +endif + +set t_Co=256 +let g:colors_name = "biogoo" + +hi IncSearch guifg=#ffffff guibg=#0000ff guisp=#0000ff gui=bold ctermfg=15 ctermbg=21 cterm=bold +hi WildMenu guifg=#540054 guibg=NONE guisp=NONE gui=NONE ctermfg=53 ctermbg=NONE cterm=NONE +"hi SignColumn -- no settings -- +hi SpecialComment guifg=#007f00 guibg=NONE guisp=NONE gui=NONE ctermfg=2 ctermbg=NONE cterm=NONE +hi Typedef guifg=#540054 guibg=NONE guisp=NONE gui=bold ctermfg=53 ctermbg=NONE cterm=bold +hi Title guifg=#404040 guibg=NONE guisp=NONE gui=bold ctermfg=238 ctermbg=NONE cterm=bold +hi Folded guifg=#00007f guibg=#e5e5e5 guisp=#e5e5e5 gui=NONE ctermfg=18 ctermbg=254 cterm=NONE +hi PreCondit guifg=#295498 guibg=NONE guisp=NONE gui=bold ctermfg=24 ctermbg=NONE cterm=bold +hi Include guifg=#295498 guibg=NONE guisp=NONE gui=bold ctermfg=24 ctermbg=NONE cterm=bold +hi TabLineSel guifg=#00007f guibg=#eeeeee guisp=#eeeeee gui=bold ctermfg=18 ctermbg=255 cterm=bold +hi StatusLineNC guifg=#676767 guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=241 ctermbg=15 cterm=NONE +"hi CTagsMember -- no settings -- +hi NonText guifg=#007f00 guibg=NONE guisp=NONE gui=NONE ctermfg=2 ctermbg=NONE cterm=NONE +"hi CTagsGlobalConstant -- no settings -- +hi DiffText guifg=#ee0000 guibg=#e5e5e5 guisp=#e5e5e5 gui=NONE ctermfg=196 ctermbg=254 cterm=NONE +hi ErrorMsg guifg=#ffffff guibg=#ff0000 guisp=#ff0000 gui=bold ctermfg=15 ctermbg=196 cterm=bold +"hi Ignore -- no settings -- +hi Debug guifg=#007f00 guibg=NONE guisp=NONE gui=NONE ctermfg=2 ctermbg=NONE cterm=NONE +hi PMenuSbar guifg=NONE guibg=#99cc99 guisp=#99cc99 gui=NONE ctermfg=NONE ctermbg=151 cterm=NONE +hi Identifier guifg=#004000 guibg=NONE guisp=NONE gui=NONE ctermfg=22 ctermbg=NONE cterm=NONE +hi SpecialChar guifg=#007f00 guibg=NONE guisp=NONE gui=NONE ctermfg=2 ctermbg=NONE cterm=NONE +hi Conditional guifg=#540054 guibg=NONE guisp=NONE gui=bold ctermfg=53 ctermbg=NONE cterm=bold +hi StorageClass guifg=#540054 guibg=NONE guisp=NONE gui=bold ctermfg=53 ctermbg=NONE cterm=bold +hi Todo guifg=#00007f guibg=#e5e5e5 guisp=#e5e5e5 gui=underline ctermfg=18 ctermbg=254 cterm=underline +hi Special guifg=#007f00 guibg=NONE guisp=NONE gui=NONE ctermfg=2 ctermbg=NONE cterm=NONE +hi LineNr guifg=#303030 guibg=#e5e5e5 guisp=#e5e5e5 gui=underline ctermfg=236 ctermbg=254 cterm=underline +hi StatusLine guifg=#00007f guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=18 ctermbg=15 cterm=NONE +hi Normal guifg=#000000 guibg=#d6d6d6 guisp=#d6d6d6 gui=NONE ctermfg=NONE ctermbg=188 cterm=NONE +hi Label guifg=#540054 guibg=NONE guisp=NONE gui=bold ctermfg=53 ctermbg=NONE cterm=bold +"hi CTagsImport -- no settings -- +hi PMenuSel guifg=#ffffff guibg=#993333 guisp=#993333 gui=NONE ctermfg=15 ctermbg=131 cterm=NONE +hi Search guifg=NONE guibg=#ffff00 guisp=#ffff00 gui=NONE ctermfg=NONE ctermbg=11 cterm=NONE +"hi CTagsGlobalVariable -- no settings -- +hi Delimiter guifg=#00007f guibg=NONE guisp=NONE gui=NONE ctermfg=18 ctermbg=NONE cterm=NONE +hi Statement guifg=#00007f guibg=NONE guisp=NONE gui=NONE ctermfg=18 ctermbg=NONE cterm=NONE +hi SpellRare guifg=#ffffff guibg=#b85d00 guisp=#b85d00 gui=NONE ctermfg=15 ctermbg=130 cterm=NONE +"hi EnumerationValue -- no settings -- +hi Comment guifg=#0000c3 guibg=NONE guisp=NONE gui=NONE ctermfg=4 ctermbg=NONE cterm=NONE +hi Character guifg=#0000ff guibg=NONE guisp=NONE gui=NONE ctermfg=21 ctermbg=NONE cterm=NONE +hi Float guifg=#b85d00 guibg=NONE guisp=NONE gui=NONE ctermfg=130 ctermbg=NONE cterm=NONE +hi Number guifg=#b85d00 guibg=NONE guisp=NONE gui=NONE ctermfg=130 ctermbg=NONE cterm=NONE +hi Boolean guifg=#00007f guibg=NONE guisp=NONE gui=NONE ctermfg=18 ctermbg=NONE cterm=NONE +hi Operator guifg=#00007f guibg=NONE guisp=NONE gui=NONE ctermfg=18 ctermbg=NONE cterm=NONE +hi CursorLine guifg=NONE guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=NONE ctermbg=15 cterm=NONE +"hi Union -- no settings -- +hi TabLineFill guifg=#d6d6d6 guibg=NONE guisp=NONE gui=NONE ctermfg=188 ctermbg=NONE cterm=NONE +hi Question guifg=#00007f guibg=NONE guisp=NONE gui=NONE ctermfg=18 ctermbg=NONE cterm=NONE +hi WarningMsg guifg=#500000 guibg=NONE guisp=NONE gui=NONE ctermfg=52 ctermbg=NONE cterm=NONE +hi VisualNOS guifg=#007f00 guibg=#e5e5e5 guisp=#e5e5e5 gui=NONE ctermfg=2 ctermbg=254 cterm=NONE +hi DiffDelete guifg=#7f0000 guibg=#e5e5e5 guisp=#e5e5e5 gui=NONE ctermfg=3 ctermbg=254 cterm=NONE +hi ModeMsg guifg=#00007f guibg=NONE guisp=NONE gui=NONE ctermfg=18 ctermbg=NONE cterm=NONE +hi CursorColumn guifg=NONE guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=NONE ctermbg=15 cterm=NONE +hi Define guifg=#0c3b6b guibg=NONE guisp=NONE gui=bold ctermfg=17 ctermbg=NONE cterm=bold +hi Function guifg=#7f0000 guibg=NONE guisp=NONE gui=NONE ctermfg=3 ctermbg=NONE cterm=NONE +hi FoldColumn guifg=#00007f guibg=#e5e5e5 guisp=#e5e5e5 gui=NONE ctermfg=18 ctermbg=254 cterm=NONE +hi PreProc guifg=#0c3b6b guibg=NONE guisp=NONE gui=bold ctermfg=17 ctermbg=NONE cterm=bold +"hi EnumerationName -- no settings -- +hi Visual guifg=#7f7f7f guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=8 ctermbg=15 cterm=NONE +hi MoreMsg guifg=#00007f guibg=NONE guisp=NONE gui=NONE ctermfg=18 ctermbg=NONE cterm=NONE +hi SpellCap guifg=#ffffff guibg=#7f007f guisp=#7f007f gui=NONE ctermfg=15 ctermbg=90 cterm=NONE +hi VertSplit guifg=#676767 guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=241 ctermbg=15 cterm=NONE +hi Exception guifg=#540054 guibg=NONE guisp=NONE gui=bold ctermfg=53 ctermbg=NONE cterm=bold +hi Keyword guifg=#00007f guibg=NONE guisp=NONE gui=NONE ctermfg=18 ctermbg=NONE cterm=NONE +hi Type guifg=#540054 guibg=NONE guisp=NONE gui=bold ctermfg=53 ctermbg=NONE cterm=bold +hi DiffChange guifg=#00007f guibg=#e5e5e5 guisp=#e5e5e5 gui=NONE ctermfg=18 ctermbg=254 cterm=NONE +hi Cursor guifg=#ffffff guibg=#00007f guisp=#00007f gui=NONE ctermfg=15 ctermbg=18 cterm=NONE +hi SpellLocal guifg=#ffffff guibg=#007f7f guisp=#007f7f gui=NONE ctermfg=15 ctermbg=6 cterm=NONE +hi Error guifg=#d6d6d6 guibg=#7f0000 guisp=#7f0000 gui=NONE ctermfg=188 ctermbg=3 cterm=NONE +hi PMenu guifg=#000000 guibg=#cc9999 guisp=#cc9999 gui=NONE ctermfg=NONE ctermbg=181 cterm=NONE +hi SpecialKey guifg=#00007f guibg=NONE guisp=NONE gui=NONE ctermfg=18 ctermbg=NONE cterm=NONE +hi Constant guifg=#0000ff guibg=NONE guisp=NONE gui=NONE ctermfg=21 ctermbg=NONE cterm=NONE +"hi DefinedName -- no settings -- +hi Tag guifg=#007f00 guibg=NONE guisp=NONE gui=NONE ctermfg=2 ctermbg=NONE cterm=NONE +hi String guifg=#d10000 guibg=NONE guisp=NONE gui=NONE ctermfg=160 ctermbg=NONE cterm=NONE +hi PMenuThumb guifg=#339933 guibg=NONE guisp=NONE gui=NONE ctermfg=71 ctermbg=NONE cterm=NONE +hi MatchParen guifg=#ffffff guibg=#00a000 guisp=#00a000 gui=NONE ctermfg=15 ctermbg=34 cterm=NONE +"hi LocalVariable -- no settings -- +hi Repeat guifg=#540054 guibg=NONE guisp=NONE gui=bold ctermfg=53 ctermbg=NONE cterm=bold +hi SpellBad guifg=#ffffff guibg=#7f0000 guisp=#7f0000 gui=NONE ctermfg=15 ctermbg=3 cterm=NONE +"hi CTagsClass -- no settings -- +hi Directory guifg=#b85d00 guibg=NONE guisp=NONE gui=NONE ctermfg=130 ctermbg=NONE cterm=NONE +hi Structure guifg=#540054 guibg=NONE guisp=NONE gui=bold ctermfg=53 ctermbg=NONE cterm=bold +hi Macro guifg=#295498 guibg=NONE guisp=NONE gui=NONE ctermfg=24 ctermbg=NONE cterm=NONE +hi Underlined guifg=#b85d00 guibg=NONE guisp=NONE gui=NONE ctermfg=130 ctermbg=NONE cterm=NONE +hi DiffAdd guifg=#007f00 guibg=#e5e5e5 guisp=#e5e5e5 gui=NONE ctermfg=2 ctermbg=254 cterm=NONE +hi TabLine guifg=#222222 guibg=#d6d6d6 guisp=#d6d6d6 gui=NONE ctermfg=235 ctermbg=188 cterm=NONE +hi cursorim guifg=#1F1F1F guibg=#FFEE68 guisp=#FFEE68 gui=NONE ctermfg=234 ctermbg=227 cterm=NONE +"hi clear -- no settings -- +hi htmlitalic guifg=#D0D0D0 guibg=#1F1F1F guisp=#1F1F1F gui=italic ctermfg=252 ctermbg=234 cterm=NONE +hi htmlboldunderlineitalic guifg=#D0D0D0 guibg=#1F1F1F guisp=#1F1F1F gui=bold,italic,underline ctermfg=252 ctermbg=234 cterm=bold,underline +hi htmlbolditalic guifg=#D0D0D0 guibg=#1F1F1F guisp=#1F1F1F gui=bold,italic ctermfg=252 ctermbg=234 cterm=bold +hi htmlunderlineitalic guifg=#D0D0D0 guibg=#1F1F1F guisp=#1F1F1F gui=italic,underline ctermfg=252 ctermbg=234 cterm=underline +hi htmlbold guifg=#D0D0D0 guibg=#1F1F1F guisp=#1F1F1F gui=bold ctermfg=252 ctermbg=234 cterm=bold +hi htmlboldunderline guifg=#D0D0D0 guibg=#1F1F1F guisp=#1F1F1F gui=bold,underline ctermfg=252 ctermbg=234 cterm=bold,underline +hi htmlunderline guifg=#D0D0D0 guibg=#1F1F1F guisp=#1F1F1F gui=underline ctermfg=252 ctermbg=234 cterm=underline +"hi default -- no settings -- +hi spellerrors guifg=#ffffff guibg=#7f0000 guisp=#7f0000 gui=NONE ctermfg=15 ctermbg=3 cterm=NONE diff --git a/vim/colors/flattr.vim b/vim/colors/flattr.vim new file mode 100644 index 0000000..28c315f --- /dev/null +++ b/vim/colors/flattr.vim @@ -0,0 +1,100 @@ +hi clear +if version > 580 +hi clear + if exists("syntax_on") + syntax reset + endif +endif +let g:colors_name="flattr" +hi Boolean guifg=#8DEFB5 ctermfg=121 +hi Character guifg=#FFF382 ctermfg=228 +hi ColorColumn guibg=#232526 ctermbg=235 +hi Conditional guifg=#FF8A3C ctermfg=209 gui=bold +hi Conceal guifg=#BA7FFA ctermfg=141 guibg=#1B1D1E ctermbg=234 gui=bold +hi Constant guifg=#A1DD63 ctermfg=149 gui=bold +hi Comment guifg=#5C5C5C ctermfg=59 +hi CursorLine guibg=#293739 ctermbg=236 +hi CursorLineNr guifg=#FFB761 ctermfg=215 gui=none +hi CursorColumn guibg=#293739 ctermbg=236 +hi Cursor guifg=#000000 ctermfg=0 guibg=#F8F8F0 ctermbg=15 +hi Debug guifg=#FF154A ctermfg=197 gui=bold +hi Define guifg=#FF9E56 ctermfg=215 +hi Delimiter guifg=#8F8F8F ctermfg=245 +hi DiffAdd guifg=#000000 ctermfg=0 guibg=#7EC4EF ctermbg=117 +hi DiffChange guifg=#4EDC44 ctermfg=77 guibg=#4C4745 ctermbg=238 +hi DiffDelete guifg=#FF311D ctermfg=202 guibg=#4F4F4F ctermbg=239 +hi DiffText guibg=#4C4745 ctermbg=238 gui=italic,bold +hi Directory guifg=#45E22E ctermfg=76 gui=bold +hi Error guifg=#E6DB74 ctermfg=186 guibg=#555555 ctermbg=240 +hi ErrorMsg guifg=#F94226 ctermfg=202 guibg=#232526 ctermbg=235 gui=bold +hi Exception guifg=#8ABD25 ctermfg=106 gui=bold +hi Float guifg=#ECE352 ctermfg=221 +hi FoldColumn guifg=#465457 ctermfg=239 guibg=#000000 ctermbg=234 +hi Folded guifg=#465457 ctermfg=239 guibg=#000000 ctermbg=234 +hi Function guifg=#FFB792 ctermfg=216 +hi helpExample guifg=#65AE8D ctermfg=79 +hi iCursor guifg=#000000 ctermfg=0 guibg=#F8F8F0 ctermbg=15 +hi Identifier guifg=#F9A33D ctermfg=215 +hi Ignore guifg=#656565 ctermfg=241 guibg=bg +hi IncSearch guifg=#DCCA2D ctermfg=184 guibg=#000000 ctermbg=234 +hi Keyword guifg=#78D3F4 ctermfg=117 gui=bold +hi Label guifg=#FFD554 ctermfg=221 gui=none +hi LineNr guifg=#465457 ctermfg=239 guibg=#232526 ctermbg=235 +hi Macro guifg=#CF8BA8 ctermfg=175 gui=italic +hi MatchParen guifg=#000000 ctermfg=0 guibg=#FFAE4F ctermbg=215 gui=bold +hi ModeMsg guifg=#3DFBA5 ctermfg=85 +hi MoreMsg guifg=#8EFCCD ctermfg=122 +hi NonText guifg=#465457 ctermfg=239 +hi Normal guifg=#E5E5E5 ctermfg=250 guibg=#1B1D1E ctermbg=0 +hi Number guifg=#8DEFB5 ctermfg=121 +hi Operator guifg=#F92672 ctermfg=197 +" complete menu +hi Pmenu guifg=#66D9EF ctermfg=81 guibg=#000000 ctermbg=234 +hi PmenuSel guibg=#808080 ctermbg=236 +hi PmenuSbar guibg=#080808 ctermbg=0 +hi PmenuThumb guifg=#66D9EF ctermfg=81 +hi PreCondit guifg=#C6F961 ctermfg=191 gui=bold +hi PreProc guifg=#1DFFB0 ctermfg=49 +hi Question guifg=#8D8FF8 ctermfg=105 +hi Repeat guifg=#FF7499 ctermfg=210 gui=bold +hi Search guifg=#000000 ctermfg=0 guibg=#F3C82F ctermbg=220 +" marks +hi SignColumn guifg=#C2FF46 ctermfg=155 guibg=#232526 ctermbg=235 +hi Special guifg=#94DBE9 ctermfg=116 guibg=bg gui=italic +hi SpecialChar guifg=#85D99A ctermfg=114 gui=bold +hi SpecialComment guifg=#6A6E6F ctermfg=242 gui=bold +hi SpecialKey guifg=#D466EF ctermfg=171 gui=italic +if has("spell") + hi SpellBad guisp=#FF976D gui=undercurl + hi SpellCap guisp=#9999FD gui=undercurl + hi SpellLocal guisp=#5CD8F5 gui=undercurl + hi SpellRare guisp=#E5CBCB gui=undercurl +endif +hi Statement guifg=#61D1FD ctermfg=81 gui=bold +hi StorageClass guifg=#ECA756 ctermfg=215 gui=italic +hi String guifg=#FFF382 ctermfg=228 +hi Structure guifg=#7CC3F6 ctermfg=111 +hi Tabline guifg=#000000 ctermfg=016 guibg=#888888 ctermbg=14 +hi Tag guifg=#F7547C ctermfg=204 gui=italic +hi Title guifg=#ef5939 ctermfg=203 +hi Todo guifg=#E962FB ctermfg=171 guibg=bg ctermbg=0 gui=bold +hi Typedef guifg=#F6D94B ctermfg=221 +hi Type guifg=#BEEF66 ctermfg=155 gui=none +hi Underlined guifg=#808080 ctermfg=244 gui=underline +hi VertSplit guifg=#808080 ctermfg=244 guibg=#080808 ctermbg=0 gui=bold +hi VisualNOS guibg=#403D3D ctermbg=237 +hi Visual guibg=#403D3D ctermbg=237 +hi WarningMsg guifg=#FF914C ctermfg=209 guibg=#333333 ctermbg=236 gui=bold +hi WildMenu guifg=#ABBAFF ctermfg=147 guibg=#000000 ctermbg=234 +" for TagHighlight +hi Class guifg=#18E28D ctermfg=42 +hi DefinedName guifg=#838ED7 ctermfg=104 +hi Enumerator guifg=#F5A281 ctermfg=216 +hi EnumeratorName guifg=#FD6161 ctermfg=203 +hi Member guifg=#66C1FF ctermfg=75 +hi Structure guifg=#90B4B7 ctermfg=109 +hi Union guifg=#F1C40F ctermfg=220 +hi GlobalConstant guifg=#16A085 ctermfg=36 +hi GlobalVariable guifg=#1ABC9C ctermfg=37 +hi LocalVariable guifg=#2ECC71 ctermfg=41 +set background=dark diff --git a/vim/colors/gentooish.vim b/vim/colors/gentooish.vim new file mode 100644 index 0000000..112c1a4 --- /dev/null +++ b/vim/colors/gentooish.vim @@ -0,0 +1,518 @@ +" Vim color file - gentooish +" Generated by http://bytefluent.com/vivify 2014-07-15 +set background=dark +if version > 580 + hi clear + if exists("syntax_on") + syntax reset + endif +endif + +set t_Co=256 +let g:colors_name = "gentooish" + +hi IncSearch guifg=#000000 guibg=#8bff95 guisp=#8bff95 gui=NONE ctermfg=NONE ctermbg=120 cterm=NONE +hi WildMenu guifg=#cf7dff guibg=#1F0F29 guisp=#1F0F29 gui=NONE ctermfg=177 ctermbg=235 cterm=NONE +hi SignColumn guifg=#00ffff guibg=#bcbcbc guisp=#bcbcbc gui=NONE ctermfg=14 ctermbg=250 cterm=NONE +hi SpecialComment guifg=#ffcd8b guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE +hi Typedef guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +hi Title guifg=#9a383a guibg=NONE guisp=NONE gui=NONE ctermfg=131 ctermbg=NONE cterm=NONE +hi Folded guifg=#aaa400 guibg=#000000 guisp=#000000 gui=NONE ctermfg=142 ctermbg=NONE cterm=NONE +hi PreCondit guifg=#9a383a guibg=NONE guisp=NONE gui=NONE ctermfg=131 ctermbg=NONE cterm=NONE +hi Include guifg=#9a383a guibg=NONE guisp=NONE gui=NONE ctermfg=131 ctermbg=NONE cterm=NONE +hi TabLineSel guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold +hi StatusLineNC guifg=#999999 guibg=#333333 guisp=#333333 gui=NONE ctermfg=246 ctermbg=236 cterm=NONE +"hi CTagsMember -- no settings -- +hi NonText guifg=#555555 guibg=NONE guisp=NONE gui=NONE ctermfg=240 ctermbg=NONE cterm=NONE +"hi CTagsGlobalConstant -- no settings -- +hi DiffText guifg=#000000 guibg=#4cd169 guisp=#4cd169 gui=NONE ctermfg=NONE ctermbg=78 cterm=NONE +hi ErrorMsg guifg=#cccccc guibg=#863132 guisp=#863132 gui=NONE ctermfg=252 ctermbg=95 cterm=NONE +hi Ignore guifg=#555555 guibg=NONE guisp=NONE gui=NONE ctermfg=240 ctermbg=NONE cterm=NONE +hi Debug guifg=#ffcd8b guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE +hi PMenuSbar guifg=#cccccc guibg=#000000 guisp=#000000 gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +hi Identifier guifg=#4cbbd1 guibg=NONE guisp=NONE gui=NONE ctermfg=80 ctermbg=NONE cterm=NONE +hi SpecialChar guifg=#ffcd8b guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE +hi Conditional guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +hi StorageClass guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +hi Todo guifg=#cccccc guibg=#863132 guisp=#863132 gui=NONE ctermfg=252 ctermbg=95 cterm=NONE +hi Special guifg=#ffcd8b guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE +hi LineNr guifg=#bbbbbb guibg=#222222 guisp=#222222 gui=NONE ctermfg=250 ctermbg=235 cterm=NONE +hi StatusLine guifg=#cccccc guibg=#333333 guisp=#333333 gui=NONE ctermfg=252 ctermbg=236 cterm=NONE +hi Normal guifg=#cccccc guibg=#191919 guisp=#191919 gui=NONE ctermfg=252 ctermbg=234 cterm=NONE +hi Label guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +"hi CTagsImport -- no settings -- +hi PMenuSel guifg=#c476f1 guibg=#000000 guisp=#000000 gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +hi Search guifg=#cccccc guibg=#863132 guisp=#863132 gui=NONE ctermfg=252 ctermbg=95 cterm=NONE +"hi CTagsGlobalVariable -- no settings -- +hi Delimiter guifg=#ffcd8b guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE +hi Statement guifg=#4cd169 guibg=NONE guisp=NONE gui=NONE ctermfg=78 ctermbg=NONE cterm=NONE +"hi SpellRare -- no settings -- +"hi EnumerationValue -- no settings -- +hi Comment guifg=#666666 guibg=NONE guisp=NONE gui=NONE ctermfg=241 ctermbg=NONE cterm=NONE +hi Character guifg=#b8bb00 guibg=NONE guisp=NONE gui=NONE ctermfg=142 ctermbg=NONE cterm=NONE +hi Float guifg=#ddaa66 guibg=NONE guisp=NONE gui=NONE ctermfg=179 ctermbg=NONE cterm=NONE +hi Number guifg=#ddaa66 guibg=NONE guisp=NONE gui=NONE ctermfg=179 ctermbg=NONE cterm=NONE +hi Boolean guifg=#00ff00 guibg=NONE guisp=NONE gui=NONE ctermfg=10 ctermbg=NONE cterm=NONE +hi Operator guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +hi CursorLine guifg=NONE guibg=#222222 guisp=#222222 gui=NONE ctermfg=NONE ctermbg=235 cterm=NONE +"hi Union -- no settings -- +hi TabLineFill guifg=#1c1c1c guibg=#d0d0d0 guisp=#d0d0d0 gui=NONE ctermfg=234 ctermbg=252 cterm=NONE +hi Question guifg=#cccccc guibg=NONE guisp=NONE gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +hi WarningMsg guifg=#cccccc guibg=#863132 guisp=#863132 gui=NONE ctermfg=252 ctermbg=95 cterm=NONE +hi VisualNOS guifg=#cccccc guibg=#000000 guisp=#000000 gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +hi DiffDelete guifg=#cccccc guibg=#863132 guisp=#863132 gui=NONE ctermfg=252 ctermbg=95 cterm=NONE +hi ModeMsg guifg=#cccccc guibg=NONE guisp=NONE gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +hi CursorColumn guifg=NONE guibg=#222222 guisp=#222222 gui=NONE ctermfg=NONE ctermbg=235 cterm=NONE +hi Define guifg=#9a383a guibg=NONE guisp=NONE gui=NONE ctermfg=131 ctermbg=NONE cterm=NONE +hi Function guifg=#4cbbd1 guibg=NONE guisp=NONE gui=NONE ctermfg=80 ctermbg=NONE cterm=NONE +hi FoldColumn guifg=#cccccc guibg=#000000 guisp=#000000 gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +hi PreProc guifg=#9a383a guibg=NONE guisp=NONE gui=NONE ctermfg=131 ctermbg=NONE cterm=NONE +"hi EnumerationName -- no settings -- +hi Visual guifg=#cccccc guibg=#1d474f guisp=#1d474f gui=NONE ctermfg=252 ctermbg=23 cterm=NONE +hi MoreMsg guifg=#cccccc guibg=NONE guisp=NONE gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +"hi SpellCap -- no settings -- +hi VertSplit guifg=#cccccc guibg=#333333 guisp=#333333 gui=NONE ctermfg=252 ctermbg=236 cterm=NONE +hi Exception guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +hi Keyword guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +hi Type guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +hi DiffChange guifg=NONE guibg=#541691 guisp=#541691 gui=NONE ctermfg=NONE ctermbg=54 cterm=NONE +hi Cursor guifg=#000000 guibg=#8bff95 guisp=#8bff95 gui=NONE ctermfg=NONE ctermbg=120 cterm=NONE +"hi SpellLocal -- no settings -- +hi Error guifg=#990000 guibg=#000000 guisp=#000000 gui=NONE ctermfg=88 ctermbg=NONE cterm=NONE +hi PMenu guifg=#cccccc guibg=#222222 guisp=#222222 gui=NONE ctermfg=252 ctermbg=235 cterm=NONE +hi SpecialKey guifg=#6f6f2f guibg=NONE guisp=NONE gui=NONE ctermfg=101 ctermbg=NONE cterm=NONE +hi Constant guifg=#b8bb00 guibg=NONE guisp=NONE gui=NONE ctermfg=142 ctermbg=NONE cterm=NONE +"hi DefinedName -- no settings -- +hi Tag guifg=#ffcd8b guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE +hi String guifg=#5dff9e guibg=#0f291a guisp=#0f291a gui=NONE ctermfg=85 ctermbg=22 cterm=NONE +hi PMenuThumb guifg=#cccccc guibg=#333333 guisp=#333333 gui=NONE ctermfg=252 ctermbg=236 cterm=NONE +hi MatchParen guifg=#ffffff guibg=#005500 guisp=#005500 gui=NONE ctermfg=15 ctermbg=22 cterm=NONE +"hi LocalVariable -- no settings -- +hi Repeat guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +"hi SpellBad -- no settings -- +"hi CTagsClass -- no settings -- +hi Directory guifg=#8bff95 guibg=NONE guisp=NONE gui=NONE ctermfg=120 ctermbg=NONE cterm=NONE +hi Structure guifg=#c476f1 guibg=NONE guisp=NONE gui=NONE ctermfg=177 ctermbg=NONE cterm=NONE +hi Macro guifg=#9a383a guibg=NONE guisp=NONE gui=NONE ctermfg=131 ctermbg=NONE cterm=NONE +hi Underlined guifg=#cccccc guibg=NONE guisp=NONE gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +hi DiffAdd guifg=#cccccc guibg=#306d30 guisp=#306d30 gui=NONE ctermfg=252 ctermbg=65 cterm=NONE +hi TabLine guifg=NONE guibg=#a8a8a8 guisp=#a8a8a8 gui=underline ctermfg=NONE ctermbg=248 cterm=underline +hi cursorim guifg=NONE guibg=#90ee90 guisp=#90ee90 gui=NONE ctermfg=NONE ctermbg=120 cterm=NONE +"hi clear -- no settings -- +hi pythonoperator guifg=#a26561 guibg=NONE guisp=NONE gui=NONE ctermfg=131 ctermbg=NONE cterm=NONE +hi mbenormal guifg=#cf2e3c guibg=#101c3f guisp=#101c3f gui=NONE ctermfg=167 ctermbg=17 cterm=NONE +hi perlspecialstring guifg=#2300d0 guibg=#212240 guisp=#212240 gui=NONE ctermfg=20 ctermbg=238 cterm=NONE +hi doxygenspecial guifg=#fdf3f3 guibg=NONE guisp=NONE gui=NONE ctermfg=224 ctermbg=NONE cterm=NONE +hi mbechanged guifg=#8f5fee guibg=#101c3f guisp=#101c3f gui=NONE ctermfg=99 ctermbg=17 cterm=NONE +hi mbevisiblechanged guifg=#8f5fee guibg=#8e8e8f guisp=#8e8e8f gui=NONE ctermfg=99 ctermbg=245 cterm=NONE +hi doxygenparam guifg=#fdf3f3 guibg=NONE guisp=NONE gui=NONE ctermfg=224 ctermbg=NONE cterm=NONE +hi doxygensmallspecial guifg=#fdf3f3 guibg=NONE guisp=NONE gui=NONE ctermfg=224 ctermbg=NONE cterm=NONE +hi doxygenprev guifg=#fdf3f3 guibg=NONE guisp=NONE gui=NONE ctermfg=224 ctermbg=NONE cterm=NONE +hi perlspecialmatch guifg=#2300d0 guibg=#212240 guisp=#212240 gui=NONE ctermfg=20 ctermbg=238 cterm=NONE +hi cformat guifg=#2300d0 guibg=#212240 guisp=#212240 gui=NONE ctermfg=20 ctermbg=238 cterm=NONE +hi lcursor guifg=#1c1c1c guibg=#d0d0d0 guisp=#d0d0d0 gui=NONE ctermfg=234 ctermbg=252 cterm=NONE +hi doxygenspecialmultilinedesc guifg=#ad5555 guibg=NONE guisp=NONE gui=NONE ctermfg=131 ctermbg=NONE cterm=NONE +hi taglisttagname guifg=#000000 guibg=#798779 guisp=#798779 gui=NONE ctermfg=NONE ctermbg=65 cterm=NONE +hi doxygenbrief guifg=#fdc2c2 guibg=NONE guisp=NONE gui=NONE ctermfg=224 ctermbg=NONE cterm=NONE +hi mbevisiblenormal guifg=#cfcf4d guibg=#8e8e8f guisp=#8e8e8f gui=NONE ctermfg=185 ctermbg=245 cterm=NONE +hi user2 guifg=#8bff95 guibg=#333333 guisp=#333333 gui=NONE ctermfg=120 ctermbg=236 cterm=NONE +hi user1 guifg=#999999 guibg=#333333 guisp=#333333 gui=NONE ctermfg=246 ctermbg=236 cterm=NONE +hi doxygenspecialonelinedesc guifg=#ad5555 guibg=NONE guisp=NONE gui=NONE ctermfg=131 ctermbg=NONE cterm=NONE +hi doxygencomment guifg=#6aada5 guibg=NONE guisp=NONE gui=NONE ctermfg=73 ctermbg=NONE cterm=NONE +hi cspecialcharacter guifg=#2300d0 guibg=#212240 guisp=#212240 gui=NONE ctermfg=20 ctermbg=238 cterm=NONE +hi browsesuffixes guifg=#cdc49d guibg=#162a55 guisp=#162a55 gui=NONE ctermfg=187 ctermbg=17 cterm=NONE +hi rubyconstant guifg=#6098d7 guibg=NONE guisp=NONE gui=NONE ctermfg=68 ctermbg=NONE cterm=NONE +hi rubylocalvariableormethod guifg=#D0D0FF guibg=NONE guisp=NONE gui=NONE ctermfg=189 ctermbg=NONE cterm=NONE +hi xmltagname guifg=#F8BB00 guibg=NONE guisp=NONE gui=NONE ctermfg=214 ctermbg=NONE cterm=NONE +hi rubyblockparameter guifg=#FFFFFF guibg=NONE guisp=NONE gui=NONE ctermfg=15 ctermbg=NONE cterm=NONE +hi rubyclass guifg=#c199c5 guibg=NONE guisp=NONE gui=NONE ctermfg=182 ctermbg=NONE cterm=NONE +hi xmlendtag guifg=#F8BB00 guibg=NONE guisp=NONE gui=NONE ctermfg=214 ctermbg=NONE cterm=NONE +hi rubypseudovariable guifg=#239999 guibg=NONE guisp=NONE gui=NONE ctermfg=30 ctermbg=NONE cterm=NONE +hi rubyinstancevariable guifg=#a9e5f4 guibg=NONE guisp=NONE gui=NONE ctermfg=159 ctermbg=NONE cterm=NONE +hi xmltag guifg=#F8BB00 guibg=NONE guisp=NONE gui=NONE ctermfg=214 ctermbg=NONE cterm=NONE +hi rubystringdelimiter guifg=#efffe5 guibg=NONE guisp=NONE gui=NONE ctermfg=194 ctermbg=NONE cterm=NONE +hi rubyinterpolation guifg=#ffe5ff guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE +hi rubypredefinedconstant guifg=#DA4939 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE +hi stringdelimiter guifg=#556633 guibg=NONE guisp=NONE gui=NONE ctermfg=101 ctermbg=NONE cterm=NONE +hi rubyregexp guifg=#E8A75C guibg=NONE guisp=NONE gui=NONE ctermfg=179 ctermbg=NONE cterm=NONE +hi string guifg=#c3e66b guibg=NONE guisp=NONE gui=NONE ctermfg=149 ctermbg=NONE cterm=NONE +hi constant guifg=#c4fe05 guibg=NONE guisp=NONE gui=NONE ctermfg=190 ctermbg=NONE cterm=NONE +"hi normal -- no settings -- +hi identifier guifg=#afb7ff guibg=NONE guisp=NONE gui=NONE ctermfg=147 ctermbg=NONE cterm=NONE +hi comment guifg=#8A9184 guibg=NONE guisp=NONE gui=NONE ctermfg=65 ctermbg=NONE cterm=NONE +hi rubyregexpdelimiter guifg=#fafffb guibg=NONE guisp=NONE gui=NONE ctermfg=194 ctermbg=NONE cterm=NONE +hi rubyregexpspecial guifg=#a40073 guibg=NONE guisp=NONE gui=NONE ctermfg=126 ctermbg=NONE cterm=NONE +hi rubypredefinedidentifier guifg=#5f8700 guibg=NONE guisp=NONE gui=NONE ctermfg=64 ctermbg=NONE cterm=NONE +hi function guifg=#e16521 guibg=NONE guisp=NONE gui=NONE ctermfg=166 ctermbg=NONE cterm=NONE +hi directory guifg=#dad085 guibg=NONE guisp=NONE gui=NONE ctermfg=186 ctermbg=NONE cterm=NONE +hi rubysymbol guifg=#239999 guibg=NONE guisp=NONE gui=NONE ctermfg=30 ctermbg=NONE cterm=NONE +hi rubycontrol guifg=#d8f881 guibg=NONE guisp=NONE gui=NONE ctermfg=192 ctermbg=NONE cterm=NONE +hi rubyidentifier guifg=#ff0000 guibg=NONE guisp=NONE gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +hi browsedirectory guifg=#7dffff guibg=NONE guisp=NONE gui=NONE ctermfg=123 ctermbg=NONE cterm=NONE +hi type guifg=#719ec1 guibg=NONE guisp=NONE gui=NONE ctermfg=67 ctermbg=NONE cterm=NONE +"hi vimhigroup -- no settings -- +hi showpairshlp guifg=NONE guibg=#c4f0c4 guisp=#c4f0c4 gui=NONE ctermfg=NONE ctermbg=194 cterm=NONE +hi showpairshle guifg=NONE guibg=#ff5555 guisp=#ff5555 gui=NONE ctermfg=NONE ctermbg=203 cterm=NONE +hi showpairshl guifg=NONE guibg=#c4ffc4 guisp=#c4ffc4 gui=NONE ctermfg=NONE ctermbg=194 cterm=NONE +hi jinjafilter guifg=#ff0086 guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=198 ctermbg=230 cterm=NONE +hi pythondoctest2 guifg=#3b916a guibg=NONE guisp=NONE gui=NONE ctermfg=72 ctermbg=NONE cterm=NONE +hi jinjaraw guifg=#aaaaaa guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=248 ctermbg=230 cterm=NONE +hi htmltagn guifg=#4aa04a guibg=NONE guisp=NONE gui=NONE ctermfg=71 ctermbg=NONE cterm=NONE +hi pythonexception guifg=#f0c0f0 guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE +hi jinjaoperator guifg=#ffffff guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=15 ctermbg=230 cterm=NONE +hi jinjavarblock guifg=#ff0007 guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=196 ctermbg=230 cterm=NONE +hi jinjaattribute guifg=#dd7700 guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=172 ctermbg=230 cterm=NONE +hi pythondoctest guifg=#2f5f49 guibg=NONE guisp=NONE gui=NONE ctermfg=23 ctermbg=NONE cterm=NONE +hi htmltagname guifg=#8a59e5 guibg=NONE guisp=NONE gui=NONE ctermfg=98 ctermbg=NONE cterm=NONE +hi jinjastring guifg=#0086d2 guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=32 ctermbg=230 cterm=NONE +hi htmlspecialtagname guifg=#babdb6 guibg=NONE guisp=NONE gui=NONE ctermfg=250 ctermbg=NONE cterm=NONE +hi pythonfunction guifg=#ee0000 guibg=NONE guisp=NONE gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +"hi pythonspaceerror -- no settings -- +hi jinjacomment guifg=#008800 guibg=#002300 guisp=#002300 gui=NONE ctermfg=28 ctermbg=22 cterm=NONE +hi jinjanumber guifg=#bf0945 guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=1 ctermbg=230 cterm=NONE +hi pythoncoding guifg=#ff0086 guibg=NONE guisp=NONE gui=NONE ctermfg=198 ctermbg=NONE cterm=NONE +hi jinjatagblock guifg=#ff0007 guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=196 ctermbg=230 cterm=NONE +hi jinjastatement guifg=#fb660a guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=202 ctermbg=230 cterm=NONE +hi pythonbuiltinfunc guifg=#2b6ba2 guibg=NONE guisp=NONE gui=NONE ctermfg=25 ctermbg=NONE cterm=NONE +hi htmltag guifg=#aad7ef guibg=NONE guisp=NONE gui=NONE ctermfg=153 ctermbg=NONE cterm=NONE +hi pythonrun guifg=#ff0086 guibg=NONE guisp=NONE gui=NONE ctermfg=198 ctermbg=NONE cterm=NONE +hi pythonclass guifg=#ff0086 guibg=NONE guisp=NONE gui=NONE ctermfg=198 ctermbg=NONE cterm=NONE +hi pythonexclass guifg=#879075 guibg=NONE guisp=NONE gui=NONE ctermfg=101 ctermbg=NONE cterm=NONE +hi pythonbuiltinobj guifg=#2b6ba2 guibg=NONE guisp=NONE gui=NONE ctermfg=25 ctermbg=NONE cterm=NONE +hi jinjaspecial guifg=#008ffd guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=33 ctermbg=230 cterm=NONE +hi htmlendtag guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi jinjavariable guifg=#92cd35 guibg=#fbf4c7 guisp=#fbf4c7 gui=NONE ctermfg=149 ctermbg=230 cterm=NONE +hi underline guifg=#27b7ff guibg=NONE guisp=NONE gui=NONE ctermfg=39 ctermbg=NONE cterm=NONE +hi htmlitalic guifg=#ffffe5 guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi htmlboldunderlineitalic guifg=#ffe5ff guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE +hi htmlbolditalic guifg=#ffe5ff guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE +hi htmlunderlineitalic guifg=#ffe5ff guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE +hi htmlbold guifg=#ffe5ff guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE +hi htmlboldunderline guifg=#ffe5ff guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE +hi htmlunderline guifg=#8b7d8b guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi htmllink guifg=#5590aa guibg=#102235 guisp=#102235 gui=NONE ctermfg=67 ctermbg=17 cterm=NONE +hi menu guifg=#000000 guibg=#ff6a6a guisp=#ff6a6a gui=NONE ctermfg=NONE ctermbg=9 cterm=NONE +hi scrollbar guifg=#d3d3d3 guibg=#a9a9a9 guisp=#a9a9a9 gui=NONE ctermfg=252 ctermbg=248 cterm=NONE +hi pythonbuiltin guifg=#963a29 guibg=NONE guisp=NONE gui=NONE ctermfg=88 ctermbg=NONE cterm=NONE +hi phpstringdouble guifg=#8a59e5 guibg=NONE guisp=NONE gui=NONE ctermfg=98 ctermbg=NONE cterm=NONE +hi javascriptstrings guifg=#8a59e5 guibg=NONE guisp=NONE gui=NONE ctermfg=98 ctermbg=NONE cterm=NONE +hi htmlstring guifg=#8a59e5 guibg=NONE guisp=NONE gui=NONE ctermfg=98 ctermbg=NONE cterm=NONE +hi phpstringsingle guifg=#8a59e5 guibg=NONE guisp=NONE gui=NONE ctermfg=98 ctermbg=NONE cterm=NONE +"hi default -- no settings -- +hi titled guifg=#000000 guibg=#fffdfa guisp=#fffdfa gui=NONE ctermfg=NONE ctermbg=230 cterm=NONE +hi incsearch guifg=#f0f0f0 guibg=#806060 guisp=#806060 gui=NONE ctermfg=255 ctermbg=95 cterm=NONE +hi htmlh1 guifg=#fffefa guibg=#2e3312 guisp=#2e3312 gui=NONE ctermfg=230 ctermbg=58 cterm=NONE +hi htmlh3 guifg=#c6c5c4 guibg=#2e3312 guisp=#2e3312 gui=NONE ctermfg=251 ctermbg=58 cterm=NONE +hi htmlh2 guifg=#fffefa guibg=#042207 guisp=#042207 gui=NONE ctermfg=230 ctermbg=22 cterm=NONE +hi htmlh5 guifg=#9e9d9c guibg=#2e3312 guisp=#2e3312 gui=NONE ctermfg=247 ctermbg=58 cterm=NONE +hi htmlh4 guifg=#b2b2b1 guibg=#2e3312 guisp=#2e3312 gui=NONE ctermfg=249 ctermbg=58 cterm=NONE +hi htmlh6 guifg=#8a8988 guibg=#2e3312 guisp=#2e3312 gui=NONE ctermfg=245 ctermbg=58 cterm=NONE +hi cursor guifg=#000000 guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=NONE ctermbg=15 cterm=NONE +hi cterm guifg=#cefaf6 guibg=#000000 guisp=#000000 gui=NONE ctermfg=195 ctermbg=NONE cterm=NONE +hi gui guifg=#cefaf6 guibg=#000000 guisp=#000000 gui=NONE ctermfg=195 ctermbg=NONE cterm=NONE +hi javadocseetag guifg=#cc8902 guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE +hi number guifg=#fce94f guibg=NONE guisp=NONE gui=NONE ctermfg=227 ctermbg=NONE cterm=NONE +hi keyword guifg=#fffce5 guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi rubyescape guifg=#d7f28c guibg=NONE guisp=NONE gui=NONE ctermfg=192 ctermbg=NONE cterm=NONE +hi conditional guifg=#cc6abc guibg=NONE guisp=NONE gui=NONE ctermfg=170 ctermbg=NONE cterm=NONE +hi rubyinterpolationdelimiter guifg=#a0a0a0 guibg=NONE guisp=NONE gui=NONE ctermfg=247 ctermbg=NONE cterm=NONE +hi operator guifg=#fffefa guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi longlinewarning guifg=NONE guibg=#371b32 guisp=#371b32 gui=NONE ctermfg=NONE ctermbg=237 cterm=NONE +hi pythonstatement guifg=#4e9a06 guibg=NONE guisp=NONE gui=NONE ctermfg=64 ctermbg=NONE cterm=NONE +hi pythonescape guifg=#3465a4 guibg=NONE guisp=NONE gui=NONE ctermfg=67 ctermbg=NONE cterm=NONE +hi pythoncomment guifg=#0066ff guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE +hi pythonprecondit guifg=#ef2929 guibg=NONE guisp=NONE gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +hi pythonrawstring guifg=#ad7fa8 guibg=NONE guisp=NONE gui=NONE ctermfg=139 ctermbg=NONE cterm=NONE +hi pythonconditional guifg=#d28202 guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE +hi pythonrepeat guifg=#4e9a06 guibg=NONE guisp=NONE gui=NONE ctermfg=64 ctermbg=NONE cterm=NONE +hi constants guifg=#6782d3 guibg=NONE guisp=NONE gui=NONE ctermfg=68 ctermbg=NONE cterm=NONE +hi char guifg=#61dd76 guibg=#2e452e guisp=#2e452e gui=NONE ctermfg=78 ctermbg=65 cterm=NONE +hi tagname guifg=#a7a7a7 guibg=#660000 guisp=#660000 gui=NONE ctermfg=248 ctermbg=52 cterm=NONE +hi foldecolumn guifg=#535353 guibg=#202020 guisp=#202020 gui=NONE ctermfg=239 ctermbg=234 cterm=NONE +hi special guifg=#ebac47 guibg=NONE guisp=NONE gui=NONE ctermfg=215 ctermbg=NONE cterm=NONE +hi statement guifg=#ffffff guibg=NONE guisp=NONE gui=NONE ctermfg=15 ctermbg=NONE cterm=NONE +hi cppstltype guifg=#729fcf guibg=NONE guisp=NONE gui=NONE ctermfg=110 ctermbg=NONE cterm=NONE +hi vimfold guifg=#888888 guibg=#222222 guisp=#222222 gui=NONE ctermfg=102 ctermbg=235 cterm=NONE +hi underlined guifg=#ad7fa8 guibg=NONE guisp=NONE gui=NONE ctermfg=139 ctermbg=NONE cterm=NONE +hi mytaglistfilename guifg=#6eadff guibg=#242428 guisp=#242428 gui=NONE ctermfg=75 ctermbg=235 cterm=NONE +hi rubyclassvariable guifg=#a9e5f4 guibg=NONE guisp=NONE gui=NONE ctermfg=159 ctermbg=NONE cterm=NONE +hi rubyoperator guifg=#b8cdcd guibg=NONE guisp=NONE gui=NONE ctermfg=152 ctermbg=NONE cterm=NONE +hi method guifg=#0000ff guibg=NONE guisp=NONE gui=NONE ctermfg=21 ctermbg=NONE cterm=NONE +hi cdefine guifg=#00ff00 guibg=NONE guisp=NONE gui=NONE ctermfg=10 ctermbg=NONE cterm=NONE +hi cinclude guifg=#ffffff guibg=NONE guisp=NONE gui=NONE ctermfg=15 ctermbg=NONE cterm=NONE +hi rubypredefinedvariable guifg=#666666 guibg=NONE guisp=NONE gui=NONE ctermfg=241 ctermbg=NONE cterm=NONE +hi rubyexception guifg=#8C4D38 guibg=NONE guisp=NONE gui=NONE ctermfg=95 ctermbg=NONE cterm=NONE +hi repeat guifg=#480000 guibg=NONE guisp=NONE gui=NONE ctermfg=52 ctermbg=NONE cterm=NONE +hi rubyaccess guifg=#939264 guibg=NONE guisp=NONE gui=NONE ctermfg=101 ctermbg=NONE cterm=NONE +hi pythonimport guifg=#879075 guibg=NONE guisp=NONE gui=NONE ctermfg=101 ctermbg=NONE cterm=NONE +hi pythonbuiltinfunction guifg=#879075 guibg=NONE guisp=NONE gui=NONE ctermfg=101 ctermbg=NONE cterm=NONE +hi xmlattrib guifg=#007C00 guibg=NONE guisp=NONE gui=NONE ctermfg=2 ctermbg=NONE cterm=NONE +hi xmlcomment guifg=#7F7F7F guibg=NONE guisp=NONE gui=NONE ctermfg=8 ctermbg=NONE cterm=NONE +hi xmlentity guifg=#99006B guibg=NONE guisp=NONE gui=NONE ctermfg=89 ctermbg=NONE cterm=NONE +hi gutter guifg=#000000 guibg=#bebebe guisp=#bebebe gui=NONE ctermfg=NONE ctermbg=7 cterm=NONE +hi cif0 guifg=#bebebe guibg=#000000 guisp=#000000 gui=NONE ctermfg=7 ctermbg=NONE cterm=NONE +hi user4 guifg=#e5fffc guibg=#c8c8df guisp=#c8c8df gui=NONE ctermfg=195 ctermbg=146 cterm=NONE +hi user5 guifg=#e5ffe5 guibg=#c8c8df guisp=#c8c8df gui=NONE ctermfg=194 ctermbg=146 cterm=NONE +hi user3 guifg=#e5ffe5 guibg=#c8c8df guisp=#c8c8df gui=NONE ctermfg=194 ctermbg=146 cterm=NONE +hi subtitle guifg=#000000 guibg=#66bbbb guisp=#66bbbb gui=NONE ctermfg=NONE ctermbg=73 cterm=NONE +hi prompt guifg=NONE guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=NONE ctermbg=15 cterm=NONE +hi cssboxattr guifg=#92AF72 guibg=NONE guisp=NONE gui=NONE ctermfg=107 ctermbg=NONE cterm=NONE +hi cssgeneratedcontentattr guifg=#92AF72 guibg=NONE guisp=NONE gui=NONE ctermfg=107 ctermbg=NONE cterm=NONE +hi htmlarg guifg=#d3d7cf guibg=NONE guisp=NONE gui=NONE ctermfg=151 ctermbg=NONE cterm=NONE +hi phpcomparison guifg=#ffffff guibg=NONE guisp=NONE gui=NONE ctermfg=15 ctermbg=NONE cterm=NONE +hi javascriptnumber guifg=#B3EBBF guibg=NONE guisp=NONE gui=NONE ctermfg=151 ctermbg=NONE cterm=NONE +hi cssimportant guifg=#EB5D49 guibg=NONE guisp=NONE gui=NONE ctermfg=203 ctermbg=NONE cterm=NONE +hi diffcomment guifg=#6B6B6B guibg=NONE guisp=NONE gui=NONE ctermfg=242 ctermbg=NONE cterm=NONE +hi cssfontprop guifg=#F3F2CC guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi phpidentifier guifg=#7895B7 guibg=NONE guisp=NONE gui=NONE ctermfg=67 ctermbg=NONE cterm=NONE +hi cssauralprop guifg=#F3F2CC guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi difffile guifg=#ffffff guibg=NONE guisp=NONE gui=NONE ctermfg=15 ctermbg=NONE cterm=NONE +hi csscommonattr guifg=#92AF72 guibg=NONE guisp=NONE gui=NONE ctermfg=107 ctermbg=NONE cterm=NONE +hi rubyfunction guifg=#CBC983 guibg=NONE guisp=NONE gui=NONE ctermfg=186 ctermbg=NONE cterm=NONE +hi cssbraces guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi cssfontattr guifg=#92AF72 guibg=NONE guisp=NONE gui=NONE ctermfg=107 ctermbg=NONE cterm=NONE +hi phpvarselector guifg=#babdb6 guibg=NONE guisp=NONE gui=NONE ctermfg=250 ctermbg=NONE cterm=NONE +hi cssrenderprop guifg=#F3F2CC guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi diffadded guifg=#ffaa00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=214 ctermbg=NONE cterm=NONE +hi cssgeneratedcontentprop guifg=#F3F2CC guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi csspagingprop guifg=#F3F2CC guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi csscolor guifg=#B3EBBF guibg=NONE guisp=NONE gui=NONE ctermfg=151 ctermbg=NONE cterm=NONE +hi csscolorattr guifg=#92AF72 guibg=NONE guisp=NONE gui=NONE ctermfg=107 ctermbg=NONE cterm=NONE +hi phpspecialfunction guifg=#CBC983 guibg=NONE guisp=NONE gui=NONE ctermfg=186 ctermbg=NONE cterm=NONE +hi csstableprop guifg=#F3F2CC guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi cssuiattr guifg=#92AF72 guibg=NONE guisp=NONE gui=NONE ctermfg=107 ctermbg=NONE cterm=NONE +hi cssuiprop guifg=#d3d7cf guibg=NONE guisp=NONE gui=NONE ctermfg=151 ctermbg=NONE cterm=NONE +hi rubymodule guifg=#ee6969 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE +hi diffline guifg=#00ff00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=10 ctermbg=NONE cterm=NONE +hi colorcolumn guifg=NONE guibg=#444444 guisp=#444444 gui=NONE ctermfg=NONE ctermbg=238 cterm=NONE +hi rubydefine guifg=#ee6969 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE +hi csstextattr guifg=#92AF72 guibg=NONE guisp=NONE gui=NONE ctermfg=107 ctermbg=NONE cterm=NONE +hi cssfunctionname guifg=#CBC983 guibg=NONE guisp=NONE gui=NONE ctermfg=186 ctermbg=NONE cterm=NONE +hi diffnoeol guifg=#cccccc guibg=NONE guisp=NONE gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +hi cssidentifier guifg=#fcaf3e guibg=NONE guisp=NONE gui=NONE ctermfg=215 ctermbg=NONE cterm=NONE +hi csstextprop guifg=#F3F2CC guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi csscolorprop guifg=#F3F2CC guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi diffremoved guifg=#ff0000 guibg=#000000 guisp=#000000 gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +hi phpc1top guifg=#ffffff guibg=NONE guisp=NONE gui=NONE ctermfg=15 ctermbg=NONE cterm=NONE +hi csstagname guifg=#fcaf3e guibg=NONE guisp=NONE gui=NONE ctermfg=215 ctermbg=NONE cterm=NONE +hi cssclassname guifg=#CBC983 guibg=NONE guisp=NONE gui=NONE ctermfg=186 ctermbg=NONE cterm=NONE +hi phpmemberselector guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi cssfunction guifg=#CBC983 guibg=NONE guisp=NONE gui=NONE ctermfg=186 ctermbg=NONE cterm=NONE +hi cssboxprop guifg=#F3F2CC guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi djangostatement guifg=#005f00 guibg=#ddffaa guisp=#ddffaa gui=NONE ctermfg=22 ctermbg=193 cterm=NONE +hi doctrans guifg=#ffffff guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=15 ctermbg=15 cterm=NONE +hi helpnote guifg=#000000 guibg=#ffd700 guisp=#ffd700 gui=NONE ctermfg=NONE ctermbg=220 cterm=NONE +hi doccode guifg=#00aa00 guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE +hi docspecial guifg=#4876ff guibg=NONE guisp=NONE gui=NONE ctermfg=69 ctermbg=NONE cterm=NONE +hi htmlstatement guifg=#af5f87 guibg=NONE guisp=NONE gui=NONE ctermfg=132 ctermbg=NONE cterm=NONE +hi spellerrors guifg=#000000 guibg=NONE guisp=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE +hi debug guifg=#ffe5ff guibg=#5a645a guisp=#5a645a gui=NONE ctermfg=225 ctermbg=241 cterm=NONE +hi warningmsg guifg=#ffe5ff guibg=#7d7d8b guisp=#7d7d8b gui=NONE ctermfg=225 ctermbg=245 cterm=NONE +hi ifdefifout guifg=#a998a9 guibg=NONE guisp=NONE gui=NONE ctermfg=248 ctermbg=NONE cterm=NONE +hi condtional guifg=#ff0000 guibg=#000000 guisp=#000000 gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +"hi cursorime -- no settings -- +"hi def -- no settings -- +hi vimmodeline guifg=#5fd75f guibg=NONE guisp=NONE gui=NONE ctermfg=77 ctermbg=NONE cterm=NONE +hi preproc guifg=#e5e5ff guibg=NONE guisp=NONE gui=NONE ctermfg=189 ctermbg=NONE cterm=NONE +hi taglistcomment guifg=#000000 guibg=#798779 guisp=#798779 gui=NONE ctermfg=NONE ctermbg=65 cterm=NONE +hi taglisttitle guifg=#ffe5f7 guibg=#000000 guisp=#000000 gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE +hi taglistfilename guifg=#ffe5ff guibg=#877987 guisp=#877987 gui=NONE ctermfg=225 ctermbg=102 cterm=NONE +hi taglisttagscope guifg=#000000 guibg=#798779 guisp=#798779 gui=NONE ctermfg=NONE ctermbg=65 cterm=NONE +hi match guifg=#0000ff guibg=#ffff00 guisp=#ffff00 gui=NONE ctermfg=21 ctermbg=11 cterm=NONE +hi namespace guifg=#006400 guibg=NONE guisp=NONE gui=NONE ctermfg=22 ctermbg=NONE cterm=NONE +hi tablinefillsel guifg=#0000ff guibg=NONE guisp=NONE gui=NONE ctermfg=21 ctermbg=NONE cterm=NONE +"hi semicolon -- no settings -- +hi regexp guifg=#44B4CC guibg=#008b8b guisp=#008b8b gui=NONE ctermfg=74 ctermbg=30 cterm=NONE +hi rubymethod guifg=#DDE93D guibg=#ffff00 guisp=#ffff00 gui=NONE ctermfg=227 ctermbg=11 cterm=NONE +hi rubynumber guifg=#CCFF33 guibg=#ffff00 guisp=#ffff00 gui=NONE ctermfg=191 ctermbg=11 cterm=NONE +"hi railsuserclass -- no settings -- +"hi railsusermethod -- no settings -- +hi htmlhead guifg=NONE guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=NONE ctermbg=15 cterm=NONE +hi javascript guifg=#434343 guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=238 ctermbg=15 cterm=NONE +hi literal guifg=#0000ff guibg=NONE guisp=NONE gui=NONE ctermfg=21 ctermbg=NONE cterm=NONE +hi rubyfloat guifg=#8b0000 guibg=NONE guisp=NONE gui=NONE ctermfg=88 ctermbg=NONE cterm=NONE +hi rubyinteger guifg=#8b0000 guibg=NONE guisp=NONE gui=NONE ctermfg=88 ctermbg=NONE cterm=NONE +hi rubysharpbang guifg=#00ff00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=10 ctermbg=NONE cterm=NONE +hi rubydocumentation guifg=#ffffff guibg=#a9a9a9 guisp=#a9a9a9 gui=NONE ctermfg=15 ctermbg=248 cterm=NONE +hi sourceline guifg=#6eadff guibg=#323238 guisp=#323238 gui=NONE ctermfg=75 ctermbg=237 cterm=NONE +hi javaexceptions guifg=#dc8972 guibg=NONE guisp=NONE gui=NONE ctermfg=173 ctermbg=NONE cterm=NONE +hi bufexploreractbuf guifg=#333398 guibg=#1d1d20 guisp=#1d1d20 gui=NONE ctermfg=61 ctermbg=234 cterm=NONE +hi bufexplorertogglesplit guifg=NONE guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE +hi mytaglisttagscope guifg=#4392cf guibg=#242428 guisp=#242428 gui=NONE ctermfg=74 ctermbg=235 cterm=NONE +hi level14c guifg=#cca073 guibg=NONE guisp=NONE gui=NONE ctermfg=180 ctermbg=NONE cterm=NONE +hi bufexplorertitle guifg=NONE guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE +hi level8c guifg=#ffd0a1 guibg=NONE guisp=NONE gui=NONE ctermfg=223 ctermbg=NONE cterm=NONE +hi mytaglistcomment guifg=#4392cf guibg=#242428 guisp=#242428 gui=NONE ctermfg=74 ctermbg=235 cterm=NONE +hi bufexplorersorttype guifg=NONE guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE +hi bufexplorermapping guifg=NONE guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE +hi bufexploreropenin guifg=NONE guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE +hi level11c guifg=#ffd0a1 guibg=NONE guisp=NONE gui=NONE ctermfg=223 ctermbg=NONE cterm=NONE +hi bufexplorerbufnbr guifg=#141488 guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=18 ctermbg=236 cterm=NONE +hi level7c guifg=#8b7d8b guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi level16c guifg=#aa7f55 guibg=NONE guisp=NONE gui=NONE ctermfg=137 ctermbg=NONE cterm=NONE +hi javaclassdecl guifg=#bebebd guibg=NONE guisp=NONE gui=NONE ctermfg=7 ctermbg=NONE cterm=NONE +hi javatypedef guifg=#a62512 guibg=NONE guisp=NONE gui=NONE ctermfg=124 ctermbg=NONE cterm=NONE +hi level6c guifg=#8b7d7d guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi level1c guifg=#774f27 guibg=NONE guisp=NONE gui=NONE ctermfg=3 ctermbg=NONE cterm=NONE +hi level15c guifg=#bb9064 guibg=NONE guisp=NONE gui=NONE ctermfg=137 ctermbg=NONE cterm=NONE +hi bufexplorerlockedbuf guifg=#141488 guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=18 ctermbg=236 cterm=NONE +hi bufexplorermodbuf guifg=#141488 guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=18 ctermbg=236 cterm=NONE +hi level9c guifg=#eec093 guibg=NONE guisp=NONE gui=NONE ctermfg=180 ctermbg=NONE cterm=NONE +hi bufexplorerhelp guifg=NONE guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE +hi javadebug guifg=#59986f guibg=NONE guisp=NONE gui=NONE ctermfg=72 ctermbg=NONE cterm=NONE +hi javadoccomment guifg=#76b88d guibg=NONE guisp=NONE gui=NONE ctermfg=72 ctermbg=NONE cterm=NONE +hi level5c guifg=#7d8b8b guibg=NONE guisp=NONE gui=NONE ctermfg=66 ctermbg=NONE cterm=NONE +hi bufexplorertoggleopen guifg=NONE guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE +hi bufexplorersortby guifg=NONE guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE +hi level10c guifg=#ffe5ff guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE +hi bufexplorercurbuf guifg=#ffe5ff guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=225 ctermbg=236 cterm=NONE +hi level4c guifg=#5a645a guibg=NONE guisp=NONE gui=NONE ctermfg=241 ctermbg=NONE cterm=NONE +hi bufexplorerhidbuf guifg=#141488 guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=18 ctermbg=236 cterm=NONE +hi bufexplorerunlbuf guifg=#141488 guibg=#2b2b30 guisp=#2b2b30 gui=NONE ctermfg=18 ctermbg=236 cterm=NONE +hi mytaglisttagname guifg=#6eadff guibg=#242428 guisp=#242428 gui=NONE ctermfg=75 ctermbg=235 cterm=NONE +hi level12c guifg=#eec093 guibg=NONE guisp=NONE gui=NONE ctermfg=180 ctermbg=NONE cterm=NONE +hi bufexplorerxxxbuf guifg=#6e6eff guibg=#050570 guisp=#050570 gui=NONE ctermfg=63 ctermbg=17 cterm=NONE +hi level3c guifg=#a998a9 guibg=NONE guisp=NONE gui=NONE ctermfg=248 ctermbg=NONE cterm=NONE +hi mytaglisttitle guifg=#6eadff guibg=#242428 guisp=#242428 gui=NONE ctermfg=75 ctermbg=235 cterm=NONE +hi level13c guifg=#ddb083 guibg=NONE guisp=NONE gui=NONE ctermfg=180 ctermbg=NONE cterm=NONE +hi level2c guifg=#7d7d8b guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi bufexploreraltbuf guifg=#6e6eff guibg=#050570 guisp=#050570 gui=NONE ctermfg=63 ctermbg=17 cterm=NONE +hi javastring guifg=#b86d37 guibg=NONE guisp=NONE gui=NONE ctermfg=137 ctermbg=NONE cterm=NONE +hi javarepeat guifg=#bcba75 guibg=NONE guisp=NONE gui=NONE ctermfg=143 ctermbg=NONE cterm=NONE +hi javafuncdef guifg=#b52411 guibg=NONE guisp=NONE gui=NONE ctermfg=124 ctermbg=NONE cterm=NONE +hi javascopedecl guifg=#853926 guibg=NONE guisp=NONE gui=NONE ctermfg=88 ctermbg=NONE cterm=NONE +hi javaparen2 guifg=#a0c0ff guibg=NONE guisp=NONE gui=NONE ctermfg=153 ctermbg=NONE cterm=NONE +hi javaparen1 guifg=#80a0ff guibg=NONE guisp=NONE gui=NONE ctermfg=12 ctermbg=NONE cterm=NONE +hi javabraces guifg=#406090 guibg=NONE guisp=NONE gui=NONE ctermfg=60 ctermbg=NONE cterm=NONE +hi javaparen guifg=#6080e0 guibg=NONE guisp=NONE gui=NONE ctermfg=68 ctermbg=NONE cterm=NONE +hi javaexternal guifg=#666666 guibg=NONE guisp=NONE gui=NONE ctermfg=241 ctermbg=NONE cterm=NONE +hi javalangobject guifg=#6080c0 guibg=NONE guisp=NONE gui=NONE ctermfg=67 ctermbg=NONE cterm=NONE +hi mailsubject guifg=#A5C261 guibg=NONE guisp=NONE gui=NONE ctermfg=107 ctermbg=NONE cterm=NONE +hi rubyattribute guifg=#becbf5 guibg=NONE guisp=NONE gui=NONE ctermfg=189 ctermbg=NONE cterm=NONE +hi rubypredifinedidentifier guifg=#ff0000 guibg=NONE guisp=NONE gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +hi rubyconditional guifg=#d8f881 guibg=NONE guisp=NONE gui=NONE ctermfg=192 ctermbg=NONE cterm=NONE +hi rubyeval guifg=#88d1f0 guibg=NONE guisp=NONE gui=NONE ctermfg=117 ctermbg=NONE cterm=NONE +hi mailheaderkey guifg=#FFC66D guibg=NONE guisp=NONE gui=NONE ctermfg=215 ctermbg=NONE cterm=NONE +hi rubyconditionalmodifier guifg=#d8f881 guibg=NONE guisp=NONE gui=NONE ctermfg=192 ctermbg=NONE cterm=NONE +hi rubyinclude guifg=#ee6969 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE +hi mailemail guifg=#A5C261 guibg=NONE guisp=NONE gui=NONE ctermfg=107 ctermbg=NONE cterm=NONE +hi rubyoptionaldo guifg=#d8f881 guibg=NONE guisp=NONE gui=NONE ctermfg=192 ctermbg=NONE cterm=NONE +hi typedef guifg=#66D9EF guibg=NONE guisp=NONE gui=NONE ctermfg=81 ctermbg=NONE cterm=NONE +hi yamltab guifg=NONE guibg=#FF0000 guisp=#FF0000 gui=NONE ctermfg=NONE ctermbg=196 cterm=NONE +"hi yamlbasekey -- no settings -- +hi phpdocblock guifg=#94E1E4 guibg=#050505 guisp=#050505 gui=NONE ctermfg=116 ctermbg=232 cterm=NONE +hi icursor guifg=NONE guibg=#babdb6 guisp=#babdb6 gui=NONE ctermfg=NONE ctermbg=250 cterm=NONE +hi charachter guifg=#ffff00 guibg=NONE guisp=NONE gui=NONE ctermfg=11 ctermbg=NONE cterm=NONE +hi done guifg=#ffffff guibg=#bebebe guisp=#bebebe gui=NONE ctermfg=15 ctermbg=7 cterm=NONE +hi perlpod guifg=#B86A18 guibg=NONE guisp=NONE gui=NONE ctermfg=130 ctermbg=NONE cterm=NONE +hi autohigroup guifg=NONE guibg=#ffff00 guisp=#ffff00 gui=NONE ctermfg=NONE ctermbg=11 cterm=NONE +hi tags guifg=#ffa500 guibg=NONE guisp=NONE gui=NONE ctermfg=214 ctermbg=NONE cterm=NONE +hi phprelation guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi phpoperator guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi phparraypair guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi phpunknownselector guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi javascriptoperator guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi phppropertyselector guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi htmltitle guifg=#cfcfcf guibg=NONE guisp=NONE gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +hi phpsemicolon guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi javascriptbraces guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi phpassignbyref guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi csspseudoclassid guifg=#eeeeec guibg=NONE guisp=NONE gui=NONE ctermfg=255 ctermbg=NONE cterm=NONE +hi phpfunctions guifg=#d3d7cf guibg=NONE guisp=NONE gui=NONE ctermfg=151 ctermbg=NONE cterm=NONE +hi phppropertyselectorinstring guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi phpregiondelimiter guifg=#ad7fa8 guibg=NONE guisp=NONE gui=NONE ctermfg=139 ctermbg=NONE cterm=NONE +hi phpparent guifg=#888a85 guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi cssselectorop guifg=#eeeeec guibg=NONE guisp=NONE gui=NONE ctermfg=255 ctermbg=NONE cterm=NONE +hi perlsharpbang guifg=#c0c090 guibg=#505050 guisp=#505050 gui=NONE ctermfg=144 ctermbg=239 cterm=NONE +hi diffchanged guifg=#00ccff guibg=#000000 guisp=#000000 gui=NONE ctermfg=45 ctermbg=NONE cterm=NONE +hi diffoldline guifg=#00cc00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=40 ctermbg=NONE cterm=NONE +hi doxygenstart guifg=#00ff00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=10 ctermbg=NONE cterm=NONE +hi perlstatement guifg=#c0c090 guibg=NONE guisp=NONE gui=NONE ctermfg=144 ctermbg=NONE cterm=NONE +hi doxygenstartl guifg=#00ff00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=10 ctermbg=NONE cterm=NONE +hi diffnewfile guifg=#00cc00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=40 ctermbg=NONE cterm=NONE +hi doxygencommentl guifg=#00aa00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE +hi vimcommenttitle guifg=#00ff00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=10 ctermbg=NONE cterm=NONE +hi doxygenparamname guifg=#0000ff guibg=#000000 guisp=#000000 gui=NONE ctermfg=21 ctermbg=NONE cterm=NONE +hi diffoldfile guifg=#00cc00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=40 ctermbg=NONE cterm=NONE +hi doxygenbriefl guifg=#00aa00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE +hi helphypertextjump guifg=#ffaa00" guibg=#000000 guisp=#000000 gui=NONE ctermfg=214 ctermbg=NONE cterm=NONE +hi doxygenbriefline guifg=#00aa00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE +hi doxygenparamdirection guifg=#cccc00 guibg=#000000 guisp=#000000 gui=NONE ctermfg=184 ctermbg=NONE cterm=NONE +hi perlvarplain guifg=#74c5c6 guibg=#343434 guisp=#343434 gui=NONE ctermfg=116 ctermbg=236 cterm=NONE +hi perlstatementstorage guifg=#ffffff guibg=#000000 guisp=#000000 gui=NONE ctermfg=15 ctermbg=NONE cterm=NONE +hi perlvarplain2 guifg=#74c6a8 guibg=#343434 guisp=#343434 gui=NONE ctermfg=115 ctermbg=236 cterm=NONE +hi doxygenargumentword guifg=#0000ff guibg=#000000 guisp=#000000 gui=NONE ctermfg=21 ctermbg=NONE cterm=NONE +"hi cssattributeselector -- no settings -- +hi tmesupport guifg=#7d6c55 guibg=NONE guisp=NONE gui=NONE ctermfg=101 ctermbg=NONE cterm=NONE +hi cterm=.((s:fontface==plain) ? none : bold) guifg=#efface guibg=#efface guisp=#efface gui=NONE ctermfg=230 ctermbg=230 cterm=NONE +hi cterm_style guifg=#efface guibg=NONE guisp=NONE gui=NONE ctermfg=230 ctermbg=NONE cterm=NONE +hi moremsg guifg=#489000 guibg=NONE guisp=NONE gui=NONE ctermfg=64 ctermbg=NONE cterm=NONE +hi identifer guifg=#99AAAA guibg=#000000 guisp=#000000 gui=NONE ctermfg=109 ctermbg=NONE cterm=NONE +hi debugstop guifg=#ffffff guibg=#90ee90 guisp=#90ee90 gui=NONE ctermfg=15 ctermbg=120 cterm=NONE +hi debugbreak guifg=#ffffff guibg=#8b0000 guisp=#8b0000 gui=NONE ctermfg=15 ctermbg=88 cterm=NONE +hi htm guifg=#8f8f8f guibg=NONE guisp=NONE gui=NONE ctermfg=245 ctermbg=NONE cterm=NONE +hi js guifg=#cd5c5c guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE +hi defined guifg=#e0ffff guibg=NONE guisp=NONE gui=NONE ctermfg=195 ctermbg=NONE cterm=NONE +hi linenr guifg=#686868 guibg=NONE guisp=NONE gui=NONE ctermfg=242 ctermbg=NONE cterm=NONE +"hi texmath -- no settings -- +hi vimoption guifg=#ffd700 guibg=NONE guisp=NONE gui=NONE ctermfg=220 ctermbg=NONE cterm=NONE +hi vimerror guifg=#ff0000 guibg=NONE guisp=NONE gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +hi cincluded guifg=#9acd32 guibg=NONE guisp=NONE gui=NONE ctermfg=149 ctermbg=NONE cterm=NONE +hi texsection guifg=#adff2f guibg=NONE guisp=NONE gui=NONE ctermfg=118 ctermbg=NONE cterm=NONE +hi texmatcher guifg=#9acd32 guibg=NONE guisp=NONE gui=NONE ctermfg=149 ctermbg=NONE cterm=NONE +hi mysemis guifg=#99ff00 guibg=NONE guisp=NONE gui=NONE ctermfg=118 ctermbg=NONE cterm=NONE +hi mydots guifg=#0099ff guibg=NONE guisp=NONE gui=NONE ctermfg=33 ctermbg=NONE cterm=NONE +hi myassignments guifg=#99ff00 guibg=NONE guisp=NONE gui=NONE ctermfg=118 ctermbg=NONE cterm=NONE +hi fortrantype guifg=#0F8200 guibg=NONE guisp=NONE gui=NONE ctermfg=2 ctermbg=NONE cterm=NONE +hi fortranlabelnumber guifg=#8b0000 guibg=NONE guisp=NONE gui=NONE ctermfg=88 ctermbg=NONE cterm=NONE +hi fortranunitheader guifg=#a020f0 guibg=NONE guisp=NONE gui=NONE ctermfg=129 ctermbg=NONE cterm=NONE +hi perlfunctionname guifg=#ffffff guibg=#343434 guisp=#343434 gui=NONE ctermfg=15 ctermbg=236 cterm=NONE +hi perlstatementinclude guifg=#c0c090 guibg=#3b4038 guisp=#3b4038 gui=NONE ctermfg=144 ctermbg=238 cterm=NONE +hi perlcontrol guifg=#c0c090 guibg=#404040 guisp=#404040 gui=NONE ctermfg=144 ctermbg=238 cterm=NONE +hi perllabel guifg=#c0c090 guibg=#404040 guisp=#404040 gui=NONE ctermfg=144 ctermbg=238 cterm=NONE +hi perlmatchstartend guifg=#c0c090 guibg=#424242 guisp=#424242 gui=NONE ctermfg=144 ctermbg=238 cterm=NONE +hi perlrepeat guifg=#c0b790 guibg=#343434 guisp=#343434 gui=NONE ctermfg=144 ctermbg=236 cterm=NONE +hi perlshellcommand guifg=NONE guibg=#424242 guisp=#424242 gui=NONE ctermfg=NONE ctermbg=238 cterm=NONE +hi perlstatementfiledesc guifg=#a2c090 guibg=#343434 guisp=#343434 gui=NONE ctermfg=108 ctermbg=236 cterm=NONE +hi perlstatementsub guifg=#c0c090 guibg=#343434 guisp=#343434 gui=NONE ctermfg=144 ctermbg=236 cterm=NONE +hi perloperator guifg=#c0c090 guibg=#404040 guisp=#404040 gui=NONE ctermfg=144 ctermbg=238 cterm=NONE +hi perlvarsimplemembername guifg=#b3b3b3 guibg=#343434 guisp=#343434 gui=NONE ctermfg=249 ctermbg=236 cterm=NONE +hi perlnumber guifg=#80ac7b guibg=#343434 guisp=#343434 gui=NONE ctermfg=108 ctermbg=236 cterm=NONE +hi perlvarnotinmatches guifg=#915555 guibg=#343434 guisp=#343434 gui=NONE ctermfg=95 ctermbg=236 cterm=NONE +hi perlqq guifg=#cccccc guibg=#393939 guisp=#393939 gui=NONE ctermfg=252 ctermbg=237 cterm=NONE +hi perlstatementcontrol guifg=#dcdb6b guibg=#343434 guisp=#343434 gui=NONE ctermfg=185 ctermbg=236 cterm=NONE +hi perlstatementhash guifg=#c0c090 guibg=#404040 guisp=#404040 gui=NONE ctermfg=144 ctermbg=238 cterm=NONE +hi perlvarsimplemember guifg=#c0c090 guibg=#343434 guisp=#343434 gui=NONE ctermfg=144 ctermbg=236 cterm=NONE +hi perlidentifier guifg=#90c0c0 guibg=NONE guisp=NONE gui=NONE ctermfg=109 ctermbg=NONE cterm=NONE +hi perlstringstartend guifg=#b07050 guibg=#353535 guisp=#353535 gui=NONE ctermfg=137 ctermbg=236 cterm=NONE +hi perlspecialbeom guifg=#cccccc guibg=#404040 guisp=#404040 gui=NONE ctermfg=252 ctermbg=238 cterm=NONE +hi perlstatementnew guifg=#c0c090 guibg=#424242 guisp=#424242 gui=NONE ctermfg=144 ctermbg=238 cterm=NONE +hi perlpackagedecl guifg=#80ac7b guibg=#404040 guisp=#404040 gui=NONE ctermfg=108 ctermbg=238 cterm=NONE +hi unitheader guifg=#000000 guibg=#00ffff guisp=#00ffff gui=NONE ctermfg=NONE ctermbg=14 cterm=NONE +hi io guifg=#ff0000 guibg=NONE guisp=NONE gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +hi communicator guifg=#000000 guibg=#eeee00 guisp=#eeee00 gui=NONE ctermfg=NONE ctermbg=11 cterm=NONE +hi tooltip guifg=#000000 guibg=#d3d3d3 guisp=#d3d3d3 gui=NONE ctermfg=NONE ctermbg=252 cterm=NONE +hi _coperators guifg=#ffffff guibg=NONE guisp=NONE gui=NONE ctermfg=15 ctermbg=NONE cterm=NONE +hi cream_showmarkshl guifg=#000000 guibg=#aacc77 guisp=#aacc77 gui=NONE ctermfg=NONE ctermbg=150 cterm=NONE +hi badword guifg=#ff9999 guibg=#003333 guisp=#003333 gui=NONE ctermfg=210 ctermbg=23 cterm=NONE +hi plsqlconditional guifg=#99CCFF guibg=NONE guisp=NONE gui=NONE ctermfg=153 ctermbg=NONE cterm=NONE +hi plsqlstorage guifg=#f5deb3 guibg=NONE guisp=NONE gui=NONE ctermfg=223 ctermbg=NONE cterm=NONE +hi plsqlrepeat guifg=#99CCFF guibg=NONE guisp=NONE gui=NONE ctermfg=153 ctermbg=NONE cterm=NONE +hi plsqlfunction guifg=#FFAAAA guibg=NONE guisp=NONE gui=NONE ctermfg=217 ctermbg=NONE cterm=NONE +hi attribute guifg=#CCCCCC guibg=NONE guisp=NONE gui=NONE ctermfg=252 ctermbg=NONE cterm=NONE +hi vcursor guifg=#ffffff guibg=#efface guisp=#efface gui=NONE ctermfg=15 ctermbg=230 cterm=NONE +hi ccursor guifg=#ffffff guibg=#8b0000 guisp=#8b0000 gui=NONE ctermfg=15 ctermbg=88 cterm=NONE +hi ocursor guifg=#ffffff guibg=#008b8b guisp=#008b8b gui=NONE ctermfg=15 ctermbg=30 cterm=NONE +hi preconduit guifg=#702589 guibg=NONE guisp=NONE gui=NONE ctermfg=54 ctermbg=NONE cterm=NONE +hi rubyglobalvariable guifg=#5f8700 guibg=NONE guisp=NONE gui=NONE ctermfg=64 ctermbg=NONE cterm=NONE +hi operatorcurlybrackets guifg=#5fafff guibg=NONE guisp=NONE gui=NONE ctermfg=75 ctermbg=NONE cterm=NONE +hi comments guifg=#0066ff guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE +hi pmenum guifg=#584f58 guibg=#1c191c guisp=#1c191c gui=NONE ctermfg=240 ctermbg=234 cterm=NONE +hi mydiffsubname guifg=#00ffff guibg=NONE guisp=NONE gui=NONE ctermfg=14 ctermbg=NONE cterm=NONE +hi mydiffcommline guifg=#ffffff guibg=#8b0000 guisp=#8b0000 gui=NONE ctermfg=15 ctermbg=88 cterm=NONE +hi mailqu guifg=#006400 guibg=#000000 guisp=#000000 gui=NONE ctermfg=22 ctermbg=NONE cterm=NONE +hi mydiffnew guifg=#ff0000 guibg=NONE guisp=NONE gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +hi mydiffremoved guifg=#ff0000 guibg=NONE guisp=NONE gui=NONE ctermfg=196 ctermbg=NONE cterm=NONE +hi mydiffnormal guifg=#000000 guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=NONE ctermbg=15 cterm=NONE +hi mailq guifg=#008b8b guibg=#000000 guisp=#000000 gui=NONE ctermfg=30 ctermbg=NONE cterm=NONE +hi lisplist guifg=#555555 guibg=NONE guisp=NONE gui=NONE ctermfg=240 ctermbg=NONE cterm=NONE diff --git a/vim/colors/github.vim b/vim/colors/github.vim new file mode 100644 index 0000000..ab926ee --- /dev/null +++ b/vim/colors/github.vim @@ -0,0 +1,116 @@ +" Vim color file -- with 256 colour support! +" +" Author: Anthony Carapetis <anthony.carapetis@gmail.com> +" Contributors: Lucas Tadeu <lucastadeuteixeira@gmail.com> +" +" Note: Based on github's syntax highlighting theme +" Used Brian Mock's darkspectrum as a starting point/template +" Thanks to Ryan Heath for an easy list of some of the colours: +" http://rpheath.com/posts/356-github-theme-for-syntax-gem + +set background=light + +if version > 580 + hi clear + if exists("syntax_on") + syntax reset + endif +endif + +let colors_name = "github" + +" {{{ General colors +hi Normal ctermfg=0 ctermbg=255 guifg=#000000 guibg=#F8F8FF +hi Cursor ctermfg=239 ctermbg=15 guifg=#F8F8FF guibg=#444454 +hi Visual ctermfg=15 ctermbg=61 guifg=#FFFFFF guibg=#3465a3 +hi VisualNOS ctermfg=15 ctermbg=24 guifg=#FFFFFF guibg=#204a87 +hi Search ctermfg=236 ctermbg=228 guifg=#000000 guibg=#FFFF8C cterm=bold gui=bold +hi Folded ctermfg=8 ctermbg=15 guifg=#808080 guibg=#ECECEC gui=bold cterm=bold +hi Title ctermfg=167 guifg=#ef5939 +hi StatusLine ctermfg=238 ctermbg=250 guifg=#404040 guibg=#bbbbbb gui=bold cterm=bold +hi StatusLineNC ctermfg=238 ctermbg=252 guifg=#404040 guibg=#d4d4d4 gui=italic cterm=italic +hi VertSplit ctermfg=250 ctermbg=250 guifg=#bbbbbb guibg=#bbbbbb gui=none cterm=none +hi LineNr ctermfg=246 ctermbg=15 guifg=#959595 guibg=#ECECEC gui=bold cterm=bold +hi SpecialKey ctermfg=6 guifg=#177F80 gui=italic cterm=italic +hi WarningMsg ctermfg=167 guifg=#ef5939 +hi ErrorMsg ctermbg=15 ctermfg=196 guibg=#f8f8ff guifg=#ff1100 gui=undercurl cterm=undercurl +hi ColorColumn ctermbg=254 guibg=#e4e4e4 +" }}} + +" {{{ Vim => 7.0 specific colors +if version >= 700 + hi CursorLine ctermbg=253 guibg=#D8D8DD + hi MatchParen ctermfg=0 ctermbg=252 guifg=#000000 guibg=#cdcdfd + hi Pmenu ctermfg=15 ctermbg=8 guifg=#ffffff guibg=#808080 gui=bold cterm=bold + hi PmenuSel ctermfg=0 ctermbg=252 guifg=#000000 guibg=#cdcdfd gui=italic cterm=italic + hi PmenuSbar ctermfg=238 ctermbg=0 guifg=#444444 guibg=#000000 + hi PmenuThumb ctermfg=248 ctermbg=248 guifg=#aaaaaa guibg=#aaaaaa +endif +" }}} + +" {{{ Diff highlighting +hi DiffAdd ctermfg=233 ctermbg=194 guifg=#003300 guibg=#DDFFDD gui=none cterm=none +hi DiffChange ctermbg=255 guibg=#ececec gui=none cterm=none +hi DiffText ctermfg=233 ctermbg=189 guifg=#000033 guibg=#DDDDFF gui=none cterm=none +hi DiffDelete ctermfg=252 ctermbg=224 guifg=#DDCCCC guibg=#FFDDDD gui=none cterm=none +" }}} + +" {{{ Syntax highlighting +hi Ignore ctermfg=8 guifg=#808080 +hi Identifier ctermfg=31 guifg=#0086B3 +hi PreProc ctermfg=247 guifg=#A0A0A0 gui=bold cterm=bold +hi Comment ctermfg=246 guifg=#999988 +hi Constant ctermfg=6 guifg=#177F80 gui=none cterm=none +hi String ctermfg=161 guifg=#D81745 +hi Function ctermfg=88 guifg=#990000 gui=bold cterm=bold +hi Statement ctermfg=0 guifg=#000000 gui=bold cterm=bold +hi Type ctermfg=60 guifg=#445588 gui=bold cterm=bold +hi Number ctermfg=30 guifg=#1C9898 +hi Todo ctermfg=15 ctermbg=88 guifg=#FFFFFF guibg=#990000 gui=bold cterm=bold +hi Special ctermfg=28 guifg=#159828 gui=bold cterm=bold +hi Todo ctermbg=15 ctermfg=196 guibg=#f8f8ff guifg=#ff1100 gui=underline cterm=underline +hi Label ctermfg=0 guifg=#000000 gui=bold cterm=bold +hi StorageClass ctermfg=0 guifg=#000000 gui=bold cterm=bold +hi Structure ctermfg=0 guifg=#000000 gui=bold cterm=bold +hi TypeDef ctermfg=0 guifg=#000000 gui=bold cterm=bold + +" {{{ Links +hi! link FoldColumn Folded +hi! link CursorColumn CursorLine +hi! link NonText LineNr +" }}} + +" {{{ Aliases +hi link cppSTL Function +hi link cppSTLType Type +hi link Character Number +hi link htmlTag htmlEndTag +hi link htmlLink Underlined +hi link pythonFunction Identifier +hi link Question Type +hi link CursorIM Cursor +hi link VisualNOS Visual +hi link xmlTag Identifier +hi link xmlTagName Identifier +hi link shDeref Identifier +hi link shVariable Function +hi link rubySharpBang Special +hi link perlSharpBang Special +hi link schemeFunc Statement +" }}} + +" {{{ Tabs +hi TabLine ctermfg=238 ctermbg=188 guifg=#404040 guibg=#dddddd gui=none +hi TabLineFill ctermfg=238 ctermbg=188 guifg=#404040 guibg=#dddddd gui=none +hi TabLineSel ctermfg=238 guifg=#404040 gui=bold +" }}} + +" {{{ Spelling +if has("spell") + hi spellBad guisp=#fcaf3e + hi spellCap guisp=#73d216 + hi spellRare guisp=#fcaf3e + hi spellLocal guisp=#729fcf +endif +" }}} + diff --git a/vim/colors/gotham.vim b/vim/colors/gotham.vim new file mode 100644 index 0000000..7ca6d47 --- /dev/null +++ b/vim/colors/gotham.vim @@ -0,0 +1,229 @@ +" _____ _____ _____ _ _ ___ ___ ___ +" | __ \ _ |_ _| | | | / _ \ | \/ | +" | | \/ | | | | | | |_| |/ /_\ \| . . | +" | | __| | | | | | | _ || _ || |\/| | +" | |_\ \ \_/ / | | | | | || | | || | | | +" \____/\___/ \_/ \_| |_/\_| |_/\_| |_/ +" +" URL: https://github.com/whatyouhide/vim-gotham +" Aurhor: Andrea Leopardi <an.leopardi@gmail.com> +" Version: ϡ +" License: MIT + + +" Bootstrap =================================================================== + +hi clear +if exists('syntax_on') | syntax reset | endif +set background=dark +let g:colors_name = 'gotham' + + +" Helper functions ============================================================= + +" Execute the 'highlight' command with a List of arguments. +function! s:Highlight(args) + exec 'highlight ' . join(a:args, ' ') +endfunction + +function! s:AddGroundValues(accumulator, ground, color) + let new_list = a:accumulator + for [where, value] in items(a:color) + call add(new_list, where . a:ground . '=' . value) + endfor + + return new_list +endfunction + +function! s:Col(group, fg_name, ...) + " ... = optional bg_name + + let pieces = [a:group] + + if a:fg_name !=# '' + let pieces = s:AddGroundValues(pieces, 'fg', s:colors[a:fg_name]) + endif + + if a:0 > 0 && a:1 !=# '' + let pieces = s:AddGroundValues(pieces, 'bg', s:colors[a:1]) + endif + + call s:Clear(a:group) + call s:Highlight(pieces) +endfunction + +function! s:Attr(group, attr) + let l:attrs = [a:group, 'term=' . a:attr, 'cterm=' . a:attr, 'gui=' . a:attr] + call s:Highlight(l:attrs) +endfunction + +function! s:Clear(group) + exec 'highlight clear ' . a:group +endfunction + + +" Colors ====================================================================== + +" Let's store all the colors in a dictionary. +let s:colors = {} + +" Base colors. +let s:colors.base0 = { 'gui': '#0c1014', 'cterm': 0 } +let s:colors.base1 = { 'gui': '#11151c', 'cterm': 8 } +let s:colors.base2 = { 'gui': '#091f2e', 'cterm': 10 } +let s:colors.base3 = { 'gui': '#0a3749', 'cterm': 12 } +let s:colors.base4 = { 'gui': '#245361', 'cterm': 11 } +let s:colors.base5 = { 'gui': '#599cab', 'cterm': 14 } +let s:colors.base6 = { 'gui': '#99d1ce', 'cterm': 7 } +let s:colors.base7 = { 'gui': '#d3ebe9', 'cterm': 15 } + +" Other colors. +let s:colors.red = { 'gui': '#c23127', 'cterm': 1 } +let s:colors.orange = { 'gui': '#d26937', 'cterm': 9 } +let s:colors.yellow = { 'gui': '#edb443', 'cterm': 3 } +let s:colors.magenta = { 'gui': '#888ca6', 'cterm': 13 } +let s:colors.violet = { 'gui': '#4e5166', 'cterm': 5 } +let s:colors.blue = { 'gui': '#195466', 'cterm': 4 } +let s:colors.cyan = { 'gui': '#33859E', 'cterm': 6 } +let s:colors.green = { 'gui': '#2aa889', 'cterm': 2 } + + +" Native highlighting ========================================================== + +let s:background = 'base0' +let s:linenr_background = 'base1' + +" Everything starts here. +call s:Col('Normal', 'base6', s:background) + +" Line, cursor and so on. +call s:Col('Cursor', '', 'base6') +call s:Col('CursorLine', '', 'base1') + +" Sign column, line numbers. +call s:Col('LineNr', 'base4', s:linenr_background) +call s:Col('CursorLineNr', 'base5', s:linenr_background) +call s:Col('SignColumn', '', s:linenr_background) +call s:Col('ColorColumn', '', s:linenr_background) + +" Visual selection. +call s:Col('Visual', '', 'base3') + +" Easy-to-guess code elements. +call s:Col('Comment', 'base4') +call s:Col('String', 'green') +call s:Col('Number', 'orange') +call s:Col('Statement', 'base5') +call s:Col('Special', 'orange') +call s:Col('Identifier', 'base5') + +" Constants, Ruby symbols. +call s:Col('Constant', 'magenta') + +" Some HTML tags (<title>, some <h*>s) +call s:Col('Title', 'orange') + +" <a> tags. +call s:Col('Underlined', 'yellow') +call s:Attr('Underlined', 'underline') + +" Types, HTML attributes, Ruby constants (and class names). +call s:Col('Type', 'orange') + +" Stuff like 'require' in Ruby. +call s:Col('PreProc', 'red') + +" Tildes on the bottom of the page. +call s:Col('NonText', 'base4') + +" TODO and similar tags. +call s:Col('Todo', 'magenta', s:background) + +" The column separating vertical splits. +call s:Col('VertSplit', 'base2', 'base2') +call s:Col('StatusLineNC', 'base2', 'base2') + +" Matching parenthesis. +call s:Col('MatchParen', 'base1', 'orange') + +" Special keys, e.g. some of the chars in 'listchars'. See ':h listchars'. +call s:Col('SpecialKey', 'base4') + +" Folds. +call s:Col('Folded', 'base6', 'blue') +call s:Col('FoldColumn', 'base5', 'base3') + +" Searching. +call s:Col('Search', 'base2', 'yellow') +call s:Attr('IncSearch', 'reverse') + +" Popup menu. +call s:Col('Pmenu', 'base6', 'base2') +call s:Col('PmenuSel', 'base7', 'base4') +call s:Col('PmenuSbar', '', 'base2') +call s:Col('PmenuThumb', '', 'base4') + +" Command line stuff. +call s:Col('ErrorMsg', 'red', 'base1') +call s:Col('ModeMsg', 'blue') + +" Wild menu. +" StatusLine determines the color of the non-active entries in the wild menu. +call s:Col('StatusLine', 'base4', 'base2') +call s:Col('WildMenu', 'base7', 'cyan') + +" The 'Hit ENTER to continue prompt'. +call s:Col('Question', 'green') + +" Tab line. +call s:Col('TabLineSel', 'base7', 'base4') " the selected tab +call s:Col('TabLine', 'base6', 'base2') " the non-selected tabs +call s:Col('TabLineFill', 'base0', 'base0') " the rest of the tab line + +" Spelling. +call s:Col('SpellBad', 'base7', 'red') +call s:Col('SpellCap', 'base7', 'blue') +call s:Col('SpellLocal', 'yellow') +call s:Col('SpellRare', 'base7', 'violet') + +" Diffing. +call s:Col('DiffAdd', 'green') +call s:Col('DiffChange', 'cyan') +call s:Col('DiffDelete', 'red') +call s:Col('DiffText', 'yellow') + + +" Programming languages and filetypes ========================================== + +" Ruby. +call s:Col('rubyDefine', 'blue') +call s:Col('rubyStringDelimiter', 'green') + +" HTML (and often Markdown). +call s:Col('htmlArg', 'blue') +call s:Col('htmlItalic', 'magenta') +call s:Col('htmlBold', 'cyan', '') + + +" Plugin " ===================================================================== + +" GitGutter +call s:Col('GitGutterAdd', 'green', s:linenr_background) +call s:Col('GitGutterChange', 'cyan', s:linenr_background) +call s:Col('GitGutterDelete', 'orange', s:linenr_background) +call s:Col('GitGutterChangeDelete', 'magenta', s:linenr_background) + +" CtrlP +call s:Col('CtrlPNoEntries', 'base7', 'orange') " no entries +call s:Col('CtrlPMatch', 'green') " matching part +call s:Col('CtrlPPrtBase', 'base4') " '>>>' prompt +call s:Col('CtrlPPrtText', 'cyan') " text in the prompt +call s:Col('CtrlPPtrCursor', 'base7') " cursor in the prompt + + + +" Cleanup ===================================================================== + +unlet s:colors +unlet s:background +unlet s:linenr_background diff --git a/vim/colors/hybrid-light.vim b/vim/colors/hybrid-light.vim new file mode 100644 index 0000000..9151a92 --- /dev/null +++ b/vim/colors/hybrid-light.vim @@ -0,0 +1,328 @@ +" File: hybrid-light.vim +" Maintainer: Andrew Wong (w0ng) +" URL: https://github.com/w0ng/vim-hybrid +" Modified: 27 Jan 2013 06:05 AM AEST +" License: MIT + +" Description:"{{{ +" ---------------------------------------------------------------------------- +" A clone of Solarized light with a custom colour palette. Currently a WIP. + +"}}} +" Initialisation:"{{{ +" ---------------------------------------------------------------------------- +if !has("gui_running") && &t_Co < 256 + finish +endif + +set background=light +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "hybrid-light" + +"}}} +" GUI And Cterm Palettes:"{{{ +" ---------------------------------------------------------------------------- +if has("gui_running") + let s:vmode = "gui" + let s:background = "#e4e4e4" + let s:foreground = "#000000" + let s:selection = "#bcbcbc" + let s:line = "#d0d0d0" + let s:comment = "#5f5f5f" + let s:red = "#5f0000" + let s:orange = "#875f00" + let s:yellow = "#5f5f00" + let s:green = "#005f00" + let s:aqua = "#005f5f" + let s:blue = "#00005f" + let s:purple = "#5f005f" + let s:window = "#9e9e9e" + let s:darkcolumn = "#808080" + let s:addbg = "#d7ffd7" + let s:changebg = "#d7d7ff" + let s:delbg = "#ffd7d7" +else + let s:vmode = "cterm" + let s:background = "254" + let s:foreground = "16" + let s:selection = "250" + let s:line = "252" + let s:comment = "59" + let s:red = "52" + let s:orange = "94" + let s:yellow = "58" + let s:green = "22" + let s:aqua = "23" + let s:blue = "17" + let s:purple = "53" + let s:window = "247" + let s:darkcolumn = "244" + let s:addbg = "194" + let s:changebg = "189" + let s:delbg = "224" +endif + +"}}} +" Formatting Options:"{{{ +" ---------------------------------------------------------------------------- +let s:none = "NONE" +let s:t_none = "NONE" +let s:n = "NONE" +let s:c = ",undercurl" +let s:r = ",reverse" +let s:s = ",standout" +let s:b = ",bold" +let s:u = ",underline" +let s:i = ",italic" + +"}}} +" Highlighting Primitives:"{{{ +" ---------------------------------------------------------------------------- +exe "let s:bg_none = ' ".s:vmode."bg=".s:none ."'" +exe "let s:bg_foreground = ' ".s:vmode."bg=".s:foreground."'" +exe "let s:bg_background = ' ".s:vmode."bg=".s:background."'" +exe "let s:bg_selection = ' ".s:vmode."bg=".s:selection ."'" +exe "let s:bg_line = ' ".s:vmode."bg=".s:line ."'" +exe "let s:bg_comment = ' ".s:vmode."bg=".s:comment ."'" +exe "let s:bg_red = ' ".s:vmode."bg=".s:red ."'" +exe "let s:bg_orange = ' ".s:vmode."bg=".s:orange ."'" +exe "let s:bg_yellow = ' ".s:vmode."bg=".s:yellow ."'" +exe "let s:bg_green = ' ".s:vmode."bg=".s:green ."'" +exe "let s:bg_aqua = ' ".s:vmode."bg=".s:aqua ."'" +exe "let s:bg_blue = ' ".s:vmode."bg=".s:blue ."'" +exe "let s:bg_purple = ' ".s:vmode."bg=".s:purple ."'" +exe "let s:bg_window = ' ".s:vmode."bg=".s:window ."'" +exe "let s:bg_darkcolumn = ' ".s:vmode."bg=".s:darkcolumn."'" +exe "let s:bg_addbg = ' ".s:vmode."bg=".s:addbg ."'" +exe "let s:bg_changebg = ' ".s:vmode."bg=".s:changebg ."'" +exe "let s:bg_delbg = ' ".s:vmode."bg=".s:delbg ."'" + +exe "let s:fg_none = ' ".s:vmode."fg=".s:none ."'" +exe "let s:fg_foreground = ' ".s:vmode."fg=".s:foreground."'" +exe "let s:fg_background = ' ".s:vmode."fg=".s:background."'" +exe "let s:fg_selection = ' ".s:vmode."fg=".s:selection ."'" +exe "let s:fg_line = ' ".s:vmode."fg=".s:line ."'" +exe "let s:fg_comment = ' ".s:vmode."fg=".s:comment ."'" +exe "let s:fg_red = ' ".s:vmode."fg=".s:red ."'" +exe "let s:fg_orange = ' ".s:vmode."fg=".s:orange ."'" +exe "let s:fg_yellow = ' ".s:vmode."fg=".s:yellow ."'" +exe "let s:fg_green = ' ".s:vmode."fg=".s:green ."'" +exe "let s:fg_aqua = ' ".s:vmode."fg=".s:aqua ."'" +exe "let s:fg_blue = ' ".s:vmode."fg=".s:blue ."'" +exe "let s:fg_purple = ' ".s:vmode."fg=".s:purple ."'" +exe "let s:fg_window = ' ".s:vmode."fg=".s:window ."'" +exe "let s:fg_darkcolumn = ' ".s:vmode."fg=".s:darkcolumn."'" +exe "let s:fg_addbg = ' ".s:vmode."fg=".s:addbg ."'" +exe "let s:fg_changebg = ' ".s:vmode."fg=".s:changebg ."'" +exe "let s:fg_delbg = ' ".s:vmode."fg=".s:delbg ."'" + +exe "let s:fmt_none = ' ".s:vmode."=NONE". " term=NONE" ."'" +exe "let s:fmt_bold = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b ."'" +exe "let s:fmt_bldi = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b ."'" +exe "let s:fmt_undr = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u ."'" +exe "let s:fmt_undb = ' ".s:vmode."=NONE".s:u.s:b. " term=NONE".s:u.s:b."'" +exe "let s:fmt_undi = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u ."'" +exe "let s:fmt_curl = ' ".s:vmode."=NONE".s:c. " term=NONE".s:c ."'" +exe "let s:fmt_ital = ' ".s:vmode."=NONE".s:i. " term=NONE".s:i ."'" +exe "let s:fmt_stnd = ' ".s:vmode."=NONE".s:s. " term=NONE".s:s ."'" +exe "let s:fmt_revr = ' ".s:vmode."=NONE".s:r. " term=NONE".s:r ."'" +exe "let s:fmt_revb = ' ".s:vmode."=NONE".s:r.s:b. " term=NONE".s:r.s:b."'" + +if has("gui_running") + exe "let s:sp_none = ' guisp=".s:none ."'" + exe "let s:sp_foreground = ' guisp=".s:foreground."'" + exe "let s:sp_background = ' guisp=".s:background."'" + exe "let s:sp_selection = ' guisp=".s:selection ."'" + exe "let s:sp_line = ' guisp=".s:line ."'" + exe "let s:sp_comment = ' guisp=".s:comment ."'" + exe "let s:sp_red = ' guisp=".s:red ."'" + exe "let s:sp_orange = ' guisp=".s:orange ."'" + exe "let s:sp_yellow = ' guisp=".s:yellow ."'" + exe "let s:sp_green = ' guisp=".s:green ."'" + exe "let s:sp_aqua = ' guisp=".s:aqua ."'" + exe "let s:sp_blue = ' guisp=".s:blue ."'" + exe "let s:sp_purple = ' guisp=".s:purple ."'" + exe "let s:sp_window = ' guisp=".s:window ."'" + exe "let s:sp_addbg = ' guisp=".s:addbg ."'" + exe "let s:sp_changebg = ' guisp=".s:changebg ."'" + exe "let s:sp_delbg = ' guisp=".s:delbg ."'" +else + let s:sp_none = "" + let s:sp_foreground = "" + let s:sp_background = "" + let s:sp_selection = "" + let s:sp_line = "" + let s:sp_comment = "" + let s:sp_red = "" + let s:sp_orange = "" + let s:sp_yellow = "" + let s:sp_green = "" + let s:sp_aqua = "" + let s:sp_blue = "" + let s:sp_purple = "" + let s:sp_window = "" + let s:sp_addbg = "" + let s:sp_changebg = "" + let s:sp_delbg = "" +endif + +"}}} +" Vim Highlighting: (see :help highlight-groups)"{{{ +" ---------------------------------------------------------------------------- +exe "hi! ColorColumn" .s:fg_none .s:bg_line .s:fmt_none +" Conceal" +" Cursor" +" CursorIM" +exe "hi! CursorColumn" .s:fg_none .s:bg_line .s:fmt_none +exe "hi! CursorLine" .s:fg_none .s:bg_line .s:fmt_none +exe "hi! Directory" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi! DiffAdd" .s:fg_green .s:bg_addbg .s:fmt_none +exe "hi! DiffChange" .s:fg_purple .s:bg_changebg .s:fmt_none +exe "hi! DiffDelete" .s:fg_red .s:bg_delbg .s:fmt_none +exe "hi! DiffText" .s:fg_background .s:bg_purple .s:fmt_none +exe "hi! ErrorMsg" .s:fg_background .s:bg_red .s:fmt_stnd +exe "hi! VertSplit" .s:fg_window .s:bg_none .s:fmt_none +exe "hi! Folded" .s:fg_background .s:bg_darkcolumn .s:fmt_none +exe "hi! FoldColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none +exe "hi! SignColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none +" Incsearch" +exe "hi! LineNr" .s:fg_comment .s:bg_line .s:fmt_none +exe "hi! CursorLineNr" .s:fg_orange .s:bg_none .s:fmt_bold +exe "hi! MatchParen" .s:fg_background .s:bg_aqua .s:fmt_none +exe "hi! ModeMsg" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! MoreMsg" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! NonText" .s:fg_selection .s:bg_none .s:fmt_none +exe "hi! Normal" .s:fg_foreground .s:bg_background .s:fmt_none +exe "hi! Pmenu" .s:fg_foreground .s:bg_selection .s:fmt_none +exe "hi! PmenuSel" .s:fg_foreground .s:bg_selection .s:fmt_revr +" PmenuSbar" +" PmenuThumb" +exe "hi! Question" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! Search" .s:fg_background .s:bg_yellow .s:fmt_none +exe "hi! SpecialKey" .s:fg_selection .s:bg_none .s:fmt_none +exe "hi! SpellBad" .s:fg_red .s:bg_none .s:fmt_undr +exe "hi! SpellCap" .s:fg_blue .s:bg_none .s:fmt_undr +exe "hi! SpellLocal" .s:fg_aqua .s:bg_none .s:fmt_undr +exe "hi! SpellRare" .s:fg_purple .s:bg_none .s:fmt_undr +exe "hi! StatusLine" .s:fg_comment .s:bg_background .s:fmt_revr +exe "hi! StatusLineNC" .s:fg_window .s:bg_foreground .s:fmt_revr +exe "hi! TabLine" .s:fg_foreground .s:bg_darkcolumn .s:fmt_revr +" TabLineFill" +" TabLineSel" +exe "hi! Title" .s:fg_yellow .s:bg_none .s:fmt_none +exe "hi! Visual" .s:fg_none .s:bg_selection .s:fmt_none +" VisualNos" +exe "hi! WarningMsg" .s:fg_red .s:bg_none .s:fmt_none +" WildMenu" + +"}}} +" Generic Syntax Highlighting: (see :help group-name)"{{{ +" ---------------------------------------------------------------------------- +exe "hi! Comment" .s:fg_comment .s:bg_none .s:fmt_none + +exe "hi! Constant" .s:fg_aqua .s:bg_none .s:fmt_none +"exe "hi! String" .s:fg_green .s:bg_none .s:fmt_none +" Character" +" Number" +" Boolean" +" Float" + +exe "hi! Identifier" .s:fg_blue .s:bg_none .s:fmt_none +"exe "hi! Function" .s:fg_yellow .s:bg_none .s:fmt_none + +exe "hi! Statement" .s:fg_green .s:bg_none .s:fmt_none +" Conditional" +" Repeat" +" Label" +"exe "hi! Operator" .s:fg_foreground .s:bg_none .s:fmt_none +" Keyword" +" Exception" + +exe "hi! PreProc" .s:fg_orange .s:bg_none .s:fmt_none +" Include" +" Define" +" Macro" +" PreCondit" + +exe "hi! Type" .s:fg_yellow .s:bg_none .s:fmt_none +" StorageClass" +"exe "hi! Structure" .s:fg_aqua .s:bg_none .s:fmt_none +" Typedef" + +exe "hi! Special" .s:fg_red .s:bg_none .s:fmt_none +" SpecialChar" +" Tag" +" Delimiter" +" SpecialComment" +" Debug" +" +exe "hi! Underlined" .s:fg_purple .s:bg_none .s:fmt_none + +exe "hi! Ignore" .s:fg_none .s:bg_none .s:fmt_none + +exe "hi! Error" .s:fg_red .s:bg_none .s:fmt_undr + +exe "hi! Todo" .s:fg_comment .s:bg_addbg .s:fmt_none + +" Quickfix window +exe "hi! qfLineNr" .s:fg_yellow .s:bg_none .s:fmt_none +" qfFileName" +" qfLineNr" +" qfError" + +"}}} +" Diff Syntax Highlighting:"{{{ +" ---------------------------------------------------------------------------- +" Diff +" diffOldFile +" diffNewFile +" diffFile +" diffOnly +" diffIdentical +" diffDiffer +" diffBDiffer +" diffIsA +" diffNoEOL +" diffCommon +hi! link diffRemoved Special +" diffChanged +hi! link diffAdded Statement +" diffLine +" diffSubname +" diffComment + +"}}} +" Legal:"{{{ +" ---------------------------------------------------------------------------- +" Copyright (c) 2011 Ethan Schoonover +" Copyright (c) 2013 w0ng +" +" Permission is hereby granted, free of charge, to any per‐ +" son obtaining a copy of this software and associated doc‐ +" umentation files (the “Software”), to deal in the Soft‐ +" ware without restriction, including without limitation +" the rights to use, copy, modify, merge, publish, distrib‐ +" ute, sublicense, and/or sell copies of the Software, and +" to permit persons to whom the Software is furnished to do +" so, subject to the following conditions: +" +" The above copyright notice and this permission notice +" shall be included in all copies or substantial portions +" of the Software. +" +" THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY +" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +" THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU‐ +" LAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CON‐ +" TRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON‐ +" NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +" THE SOFTWARE. + +" }}} diff --git a/vim/colors/hybrid.vim b/vim/colors/hybrid.vim new file mode 100644 index 0000000..166907b --- /dev/null +++ b/vim/colors/hybrid.vim @@ -0,0 +1,441 @@ +" File: hybrid.vim +" Maintainer: Andrew Wong (w0ng) +" URL: https://github.com/w0ng/vim-hybrid +" Modified: 27 Jan 2013 07:33 AM AEST +" License: MIT + +" Description:"{{{ +" ---------------------------------------------------------------------------- +" The RGB colour palette is taken from Tomorrow-Night.vim: +" https://github.com/chriskempson/vim-tomorrow-theme +" +" The syntax highlighting scheme is taken from jellybeans.vim: +" https://github.com/nanotech/jellybeans.vim +" +" The code taken from solarized.vim +" https://github.com/altercation/vim-colors-solarized + +"}}} +" Requirements And Recommendations:"{{{ +" ---------------------------------------------------------------------------- +" This colourscheme is intended for use on: +" - gVim 7.3 for Linux, Mac and Windows. +" - Vim 7.3 for Linux, using a 256 colour enabled terminal. +" +" By default, Vim will use the closest matching cterm equivalent of the RGB +" colours. +" +" However, Due to the limited 256 palette, colours in Vim and gVim will still +" be noticeably different. In order to get a uniform appearance and the way +" that this colourscheme was intended, it is HIGHLY recommended that you: +" +" 1. Add these colours to ~/.Xresources: +" +" https://gist.github.com/3278077 +" +" 2. Use Xresources colours by setting in ~/.vimrc: +" +" let g:hybrid_use_Xresources = 1 +" colorscheme hybrid +" +" For iTerm2 users: +" 1. Install this color preset on your iTerm2: +" +" https://gist.github.com/luan/6362811 +" +" 2. Use iTerm colours by setting in ~/.vimrc: +" +" let g:hybrid_use_iTerm_colors = 1 +" colorscheme hybrid +" + +"}}} +" Initialisation:"{{{ +" ---------------------------------------------------------------------------- +if !has("gui_running") && &t_Co < 256 + finish +endif + +if !exists("g:hybrid_use_Xresources") + let g:hybrid_use_Xresources = 0 +endif + +if !exists("g:hybrid_use_iTerm_colors") + let g:hybrid_use_iTerm_colors = 0 +endif + +set background=dark +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "hybrid" + +"}}} +" GUI And Cterm Palettes:"{{{ +" ---------------------------------------------------------------------------- +if has("gui_running") + let s:vmode = "gui" + let s:background = "#1d1f21" + let s:foreground = "#c5c8c6" + let s:selection = "#373b41" + let s:line = "#282a2e" + let s:comment = "#707880" + let s:red = "#cc6666" + let s:orange = "#de935f" + let s:yellow = "#f0c674" + let s:green = "#b5bd68" + let s:aqua = "#8abeb7" + let s:blue = "#81a2be" + let s:purple = "#b294bb" + let s:window = "#303030" + let s:darkcolumn = "#1c1c1c" + let s:addbg = "#5F875F" + let s:addfg = "#d7ffaf" + let s:changebg = "#5F5F87" + let s:changefg = "#d7d7ff" + let s:darkblue = "#00005f" + let s:darkcyan = "#005f5f" + let s:darkred = "#5f0000" + let s:darkpurple = "#5f005f" +else + let s:vmode = "cterm" + let s:background = "234" + let s:window = "236" + let s:darkcolumn = "234" + let s:addbg = "65" + let s:addfg = "193" + let s:changebg = "60" + let s:changefg = "189" + let s:darkblue = "17" + let s:darkcyan = "24" + let s:darkred = "52" + let s:darkpurple = "53" + if g:hybrid_use_Xresources == 1 + let s:foreground = "15" " White + let s:selection = "8" " DarkGrey + let s:line = "0" " Black + let s:comment = "7" " LightGrey + let s:red = "9" " LightRed + let s:orange = "3" " DarkYellow + let s:yellow = "11" " LightYellow + let s:green = "10" " LightGreen + let s:aqua = "14" " LightCyan + let s:blue = "12" " LightBlue + let s:purple = "13" " LightMagenta + elseif g:hybrid_use_iTerm_colors == 1 + let s:background = "NONE" + let s:foreground = "7" + let s:selection = "0" + let s:line = "0" + let s:comment = "15" + let s:red = "1" + let s:orange = "11" + let s:yellow = "3" + let s:green = "2" + let s:aqua = "6" + let s:blue = "4" + let s:purple = "5" + else + let s:foreground = "250" + let s:selection = "237" + let s:line = "235" + let s:comment = "243" + let s:red = "167" + let s:orange = "173" + let s:yellow = "221" + let s:green = "143" + let s:aqua = "109" + let s:blue = "110" + let s:purple = "139" + endif +endif + +"}}} +" Formatting Options:"{{{ +" ---------------------------------------------------------------------------- +let s:none = "NONE" +let s:t_none = "NONE" +let s:n = "NONE" +let s:c = ",undercurl" +let s:r = ",reverse" +let s:s = ",standout" +let s:b = ",bold" +let s:u = ",underline" +let s:i = ",italic" + +"}}} +" Highlighting Primitives:"{{{ +" ---------------------------------------------------------------------------- +exe "let s:bg_none = ' ".s:vmode."bg=".s:none ."'" +exe "let s:bg_foreground = ' ".s:vmode."bg=".s:foreground."'" +exe "let s:bg_background = ' ".s:vmode."bg=".s:background."'" +exe "let s:bg_selection = ' ".s:vmode."bg=".s:selection ."'" +exe "let s:bg_line = ' ".s:vmode."bg=".s:line ."'" +exe "let s:bg_comment = ' ".s:vmode."bg=".s:comment ."'" +exe "let s:bg_red = ' ".s:vmode."bg=".s:red ."'" +exe "let s:bg_orange = ' ".s:vmode."bg=".s:orange ."'" +exe "let s:bg_yellow = ' ".s:vmode."bg=".s:yellow ."'" +exe "let s:bg_green = ' ".s:vmode."bg=".s:green ."'" +exe "let s:bg_aqua = ' ".s:vmode."bg=".s:aqua ."'" +exe "let s:bg_blue = ' ".s:vmode."bg=".s:blue ."'" +exe "let s:bg_purple = ' ".s:vmode."bg=".s:purple ."'" +exe "let s:bg_window = ' ".s:vmode."bg=".s:window ."'" +exe "let s:bg_darkcolumn = ' ".s:vmode."bg=".s:darkcolumn."'" +exe "let s:bg_addbg = ' ".s:vmode."bg=".s:addbg ."'" +exe "let s:bg_addfg = ' ".s:vmode."bg=".s:addfg ."'" +exe "let s:bg_changebg = ' ".s:vmode."bg=".s:changebg ."'" +exe "let s:bg_changefg = ' ".s:vmode."bg=".s:changefg ."'" +exe "let s:bg_darkblue = ' ".s:vmode."bg=".s:darkblue ."'" +exe "let s:bg_darkcyan = ' ".s:vmode."bg=".s:darkcyan ."'" +exe "let s:bg_darkred = ' ".s:vmode."bg=".s:darkred ."'" +exe "let s:bg_darkpurple = ' ".s:vmode."bg=".s:darkpurple."'" + +exe "let s:fg_none = ' ".s:vmode."fg=".s:none ."'" +exe "let s:fg_foreground = ' ".s:vmode."fg=".s:foreground."'" +exe "let s:fg_background = ' ".s:vmode."fg=".s:background."'" +exe "let s:fg_selection = ' ".s:vmode."fg=".s:selection ."'" +exe "let s:fg_line = ' ".s:vmode."fg=".s:line ."'" +exe "let s:fg_comment = ' ".s:vmode."fg=".s:comment ."'" +exe "let s:fg_red = ' ".s:vmode."fg=".s:red ."'" +exe "let s:fg_orange = ' ".s:vmode."fg=".s:orange ."'" +exe "let s:fg_yellow = ' ".s:vmode."fg=".s:yellow ."'" +exe "let s:fg_green = ' ".s:vmode."fg=".s:green ."'" +exe "let s:fg_aqua = ' ".s:vmode."fg=".s:aqua ."'" +exe "let s:fg_blue = ' ".s:vmode."fg=".s:blue ."'" +exe "let s:fg_purple = ' ".s:vmode."fg=".s:purple ."'" +exe "let s:fg_window = ' ".s:vmode."fg=".s:window ."'" +exe "let s:fg_darkcolumn = ' ".s:vmode."fg=".s:darkcolumn."'" +exe "let s:fg_addbg = ' ".s:vmode."fg=".s:addbg ."'" +exe "let s:fg_addfg = ' ".s:vmode."fg=".s:addfg ."'" +exe "let s:fg_changebg = ' ".s:vmode."fg=".s:changebg ."'" +exe "let s:fg_changefg = ' ".s:vmode."fg=".s:changefg ."'" +exe "let s:fg_darkblue = ' ".s:vmode."fg=".s:darkblue ."'" +exe "let s:fg_darkcyan = ' ".s:vmode."fg=".s:darkcyan ."'" +exe "let s:fg_darkred = ' ".s:vmode."fg=".s:darkred ."'" +exe "let s:fg_darkpurple = ' ".s:vmode."fg=".s:darkpurple."'" + +exe "let s:fmt_none = ' ".s:vmode."=NONE". " term=NONE" ."'" +exe "let s:fmt_bold = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b ."'" +exe "let s:fmt_bldi = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b ."'" +exe "let s:fmt_undr = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u ."'" +exe "let s:fmt_undb = ' ".s:vmode."=NONE".s:u.s:b. " term=NONE".s:u.s:b."'" +exe "let s:fmt_undi = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u ."'" +exe "let s:fmt_curl = ' ".s:vmode."=NONE".s:c. " term=NONE".s:c ."'" +exe "let s:fmt_ital = ' ".s:vmode."=NONE".s:i. " term=NONE".s:i ."'" +exe "let s:fmt_stnd = ' ".s:vmode."=NONE".s:s. " term=NONE".s:s ."'" +exe "let s:fmt_revr = ' ".s:vmode."=NONE".s:r. " term=NONE".s:r ."'" +exe "let s:fmt_revb = ' ".s:vmode."=NONE".s:r.s:b. " term=NONE".s:r.s:b."'" + +if has("gui_running") + exe "let s:sp_none = ' guisp=".s:none ."'" + exe "let s:sp_foreground = ' guisp=".s:foreground."'" + exe "let s:sp_background = ' guisp=".s:background."'" + exe "let s:sp_selection = ' guisp=".s:selection ."'" + exe "let s:sp_line = ' guisp=".s:line ."'" + exe "let s:sp_comment = ' guisp=".s:comment ."'" + exe "let s:sp_red = ' guisp=".s:red ."'" + exe "let s:sp_orange = ' guisp=".s:orange ."'" + exe "let s:sp_yellow = ' guisp=".s:yellow ."'" + exe "let s:sp_green = ' guisp=".s:green ."'" + exe "let s:sp_aqua = ' guisp=".s:aqua ."'" + exe "let s:sp_blue = ' guisp=".s:blue ."'" + exe "let s:sp_purple = ' guisp=".s:purple ."'" + exe "let s:sp_window = ' guisp=".s:window ."'" + exe "let s:sp_addbg = ' guisp=".s:addbg ."'" + exe "let s:sp_addfg = ' guisp=".s:addfg ."'" + exe "let s:sp_changebg = ' guisp=".s:changebg ."'" + exe "let s:sp_changefg = ' guisp=".s:changefg ."'" + exe "let s:sp_darkblue = ' guisp=".s:darkblue ."'" + exe "let s:sp_darkcyan = ' guisp=".s:darkcyan ."'" + exe "let s:sp_darkred = ' guisp=".s:darkred ."'" + exe "let s:sp_darkpurple = ' guisp=".s:darkpurple."'" +else + let s:sp_none = "" + let s:sp_foreground = "" + let s:sp_background = "" + let s:sp_selection = "" + let s:sp_line = "" + let s:sp_comment = "" + let s:sp_red = "" + let s:sp_orange = "" + let s:sp_yellow = "" + let s:sp_green = "" + let s:sp_aqua = "" + let s:sp_blue = "" + let s:sp_purple = "" + let s:sp_window = "" + let s:sp_addbg = "" + let s:sp_addfg = "" + let s:sp_changebg = "" + let s:sp_changefg = "" + let s:sp_darkblue = "" + let s:sp_darkcyan = "" + let s:sp_darkred = "" + let s:sp_darkpurple = "" +endif + +"}}} +" Vim Highlighting: (see :help highlight-groups)"{{{ +" ---------------------------------------------------------------------------- +exe "hi! ColorColumn" .s:fg_none .s:bg_line .s:fmt_none +" Conceal" +" Cursor" +" CursorIM" +exe "hi! CursorColumn" .s:fg_none .s:bg_line .s:fmt_none +exe "hi! CursorLine" .s:fg_none .s:bg_line .s:fmt_none +exe "hi! Directory" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi! DiffAdd" .s:fg_addfg .s:bg_addbg .s:fmt_none +exe "hi! DiffChange" .s:fg_changefg .s:bg_changebg .s:fmt_none +exe "hi! DiffDelete" .s:fg_background .s:bg_red .s:fmt_none +exe "hi! DiffText" .s:fg_background .s:bg_blue .s:fmt_none +exe "hi! ErrorMsg" .s:fg_background .s:bg_red .s:fmt_stnd +exe "hi! VertSplit" .s:fg_window .s:bg_none .s:fmt_none +exe "hi! Folded" .s:fg_comment .s:bg_darkcolumn .s:fmt_none +exe "hi! FoldColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none +exe "hi! SignColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none +" Incsearch" +exe "hi! LineNr" .s:fg_selection .s:bg_none .s:fmt_none +exe "hi! CursorLineNr" .s:fg_yellow .s:bg_none .s:fmt_bold +exe "hi! MatchParen" .s:fg_background .s:bg_changebg .s:fmt_none +exe "hi! ModeMsg" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! MoreMsg" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! NonText" .s:fg_selection .s:bg_none .s:fmt_none +exe "hi! Pmenu" .s:fg_foreground .s:bg_selection .s:fmt_none +exe "hi! PmenuSel" .s:fg_foreground .s:bg_selection .s:fmt_revr +" PmenuSbar" +" PmenuThumb" +exe "hi! Question" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! Search" .s:fg_background .s:bg_yellow .s:fmt_none +exe "hi! SpecialKey" .s:fg_selection .s:bg_none .s:fmt_none +exe "hi! SpellCap" .s:fg_blue .s:bg_darkblue .s:fmt_undr +exe "hi! SpellLocal" .s:fg_aqua .s:bg_darkcyan .s:fmt_undr +exe "hi! SpellBad" .s:fg_red .s:bg_darkred .s:fmt_undr +exe "hi! SpellRare" .s:fg_purple .s:bg_darkpurple .s:fmt_undr +exe "hi! StatusLine" .s:fg_comment .s:bg_background .s:fmt_revr +exe "hi! StatusLineNC" .s:fg_window .s:bg_comment .s:fmt_revr +exe "hi! TabLine" .s:fg_foreground .s:bg_darkcolumn .s:fmt_revr +" TabLineFill" +" TabLineSel" +exe "hi! Title" .s:fg_yellow .s:bg_none .s:fmt_none +exe "hi! Visual" .s:fg_none .s:bg_selection .s:fmt_none +" VisualNos" +exe "hi! WarningMsg" .s:fg_red .s:bg_none .s:fmt_none +" WildMenu" + +" Use Xresources for background colour +if has('gui_running') || (g:hybrid_use_Xresources != 1 && g:hybrid_use_iTerm_colors != 1) + exe "hi! Normal" .s:fg_foreground .s:bg_background .s:fmt_none +else + exe "hi! Normal" .s:fg_foreground .s:bg_none .s:fmt_none +endif + +"}}} +" Generic Syntax Highlighting: (see :help group-name)"{{{ +" ---------------------------------------------------------------------------- +exe "hi! Comment" .s:fg_comment .s:bg_none .s:fmt_none + +exe "hi! Constant" .s:fg_red .s:bg_none .s:fmt_none +exe "hi! String" .s:fg_green .s:bg_none .s:fmt_none +" Character" +" Number" +" Boolean" +" Float" + +exe "hi! Identifier" .s:fg_purple .s:bg_none .s:fmt_none +exe "hi! Function" .s:fg_yellow .s:bg_none .s:fmt_none + +exe "hi! Statement" .s:fg_blue .s:bg_none .s:fmt_none +" Conditional" +" Repeat" +" Label" +exe "hi! Operator" .s:fg_aqua .s:bg_none .s:fmt_none +" Keyword" +" Exception" + +exe "hi! PreProc" .s:fg_aqua .s:bg_none .s:fmt_none +" Include" +" Define" +" Macro" +" PreCondit" + +exe "hi! Type" .s:fg_orange .s:bg_none .s:fmt_none +" StorageClass" +exe "hi! Structure" .s:fg_aqua .s:bg_none .s:fmt_none +" Typedef" + +exe "hi! Special" .s:fg_green .s:bg_none .s:fmt_none +" SpecialChar" +" Tag" +" Delimiter" +" SpecialComment" +" Debug" +" +exe "hi! Underlined" .s:fg_blue .s:bg_none .s:fmt_none + +exe "hi! Ignore" .s:fg_none .s:bg_none .s:fmt_none + +exe "hi! Error" .s:fg_red .s:bg_darkred .s:fmt_undr + +exe "hi! Todo" .s:fg_addfg .s:bg_none .s:fmt_none + +" Quickfix window highlighting +exe "hi! qfLineNr" .s:fg_yellow .s:bg_none .s:fmt_none +" qfFileName" +" qfLineNr" +" qfError" + +"}}} +" Diff Syntax Highlighting:"{{{ +" ---------------------------------------------------------------------------- +" Diff +" diffOldFile +" diffNewFile +" diffFile +" diffOnly +" diffIdentical +" diffDiffer +" diffBDiffer +" diffIsA +" diffNoEOL +" diffCommon +hi! link diffRemoved Constant +" diffChanged +hi! link diffAdded Special +" diffLine +" diffSubname +" diffComment + +"}}} +" Legal:"{{{ +" ---------------------------------------------------------------------------- +" Copyright (c) 2011 Ethan Schoonover +" Copyright (c) 2009-2012 NanoTech +" Copyright (c) 2012 w0ng +" +" Permission is hereby granted, free of charge, to any per‐ +" son obtaining a copy of this software and associated doc‐ +" umentation files (the “Software”), to deal in the Soft‐ +" ware without restriction, including without limitation +" the rights to use, copy, modify, merge, publish, distrib‐ +" ute, sublicense, and/or sell copies of the Software, and +" to permit persons to whom the Software is furnished to do +" so, subject to the following conditions: +" +" The above copyright notice and this permission notice +" shall be included in all copies or substantial portions +" of the Software. +" +" THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY +" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +" THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU‐ +" LAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CON‐ +" TRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON‐ +" NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +" THE SOFTWARE. + +" }}} diff --git a/vim/colors/hybrid.vim.1 b/vim/colors/hybrid.vim.1 new file mode 100644 index 0000000..166907b --- /dev/null +++ b/vim/colors/hybrid.vim.1 @@ -0,0 +1,441 @@ +" File: hybrid.vim +" Maintainer: Andrew Wong (w0ng) +" URL: https://github.com/w0ng/vim-hybrid +" Modified: 27 Jan 2013 07:33 AM AEST +" License: MIT + +" Description:"{{{ +" ---------------------------------------------------------------------------- +" The RGB colour palette is taken from Tomorrow-Night.vim: +" https://github.com/chriskempson/vim-tomorrow-theme +" +" The syntax highlighting scheme is taken from jellybeans.vim: +" https://github.com/nanotech/jellybeans.vim +" +" The code taken from solarized.vim +" https://github.com/altercation/vim-colors-solarized + +"}}} +" Requirements And Recommendations:"{{{ +" ---------------------------------------------------------------------------- +" This colourscheme is intended for use on: +" - gVim 7.3 for Linux, Mac and Windows. +" - Vim 7.3 for Linux, using a 256 colour enabled terminal. +" +" By default, Vim will use the closest matching cterm equivalent of the RGB +" colours. +" +" However, Due to the limited 256 palette, colours in Vim and gVim will still +" be noticeably different. In order to get a uniform appearance and the way +" that this colourscheme was intended, it is HIGHLY recommended that you: +" +" 1. Add these colours to ~/.Xresources: +" +" https://gist.github.com/3278077 +" +" 2. Use Xresources colours by setting in ~/.vimrc: +" +" let g:hybrid_use_Xresources = 1 +" colorscheme hybrid +" +" For iTerm2 users: +" 1. Install this color preset on your iTerm2: +" +" https://gist.github.com/luan/6362811 +" +" 2. Use iTerm colours by setting in ~/.vimrc: +" +" let g:hybrid_use_iTerm_colors = 1 +" colorscheme hybrid +" + +"}}} +" Initialisation:"{{{ +" ---------------------------------------------------------------------------- +if !has("gui_running") && &t_Co < 256 + finish +endif + +if !exists("g:hybrid_use_Xresources") + let g:hybrid_use_Xresources = 0 +endif + +if !exists("g:hybrid_use_iTerm_colors") + let g:hybrid_use_iTerm_colors = 0 +endif + +set background=dark +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "hybrid" + +"}}} +" GUI And Cterm Palettes:"{{{ +" ---------------------------------------------------------------------------- +if has("gui_running") + let s:vmode = "gui" + let s:background = "#1d1f21" + let s:foreground = "#c5c8c6" + let s:selection = "#373b41" + let s:line = "#282a2e" + let s:comment = "#707880" + let s:red = "#cc6666" + let s:orange = "#de935f" + let s:yellow = "#f0c674" + let s:green = "#b5bd68" + let s:aqua = "#8abeb7" + let s:blue = "#81a2be" + let s:purple = "#b294bb" + let s:window = "#303030" + let s:darkcolumn = "#1c1c1c" + let s:addbg = "#5F875F" + let s:addfg = "#d7ffaf" + let s:changebg = "#5F5F87" + let s:changefg = "#d7d7ff" + let s:darkblue = "#00005f" + let s:darkcyan = "#005f5f" + let s:darkred = "#5f0000" + let s:darkpurple = "#5f005f" +else + let s:vmode = "cterm" + let s:background = "234" + let s:window = "236" + let s:darkcolumn = "234" + let s:addbg = "65" + let s:addfg = "193" + let s:changebg = "60" + let s:changefg = "189" + let s:darkblue = "17" + let s:darkcyan = "24" + let s:darkred = "52" + let s:darkpurple = "53" + if g:hybrid_use_Xresources == 1 + let s:foreground = "15" " White + let s:selection = "8" " DarkGrey + let s:line = "0" " Black + let s:comment = "7" " LightGrey + let s:red = "9" " LightRed + let s:orange = "3" " DarkYellow + let s:yellow = "11" " LightYellow + let s:green = "10" " LightGreen + let s:aqua = "14" " LightCyan + let s:blue = "12" " LightBlue + let s:purple = "13" " LightMagenta + elseif g:hybrid_use_iTerm_colors == 1 + let s:background = "NONE" + let s:foreground = "7" + let s:selection = "0" + let s:line = "0" + let s:comment = "15" + let s:red = "1" + let s:orange = "11" + let s:yellow = "3" + let s:green = "2" + let s:aqua = "6" + let s:blue = "4" + let s:purple = "5" + else + let s:foreground = "250" + let s:selection = "237" + let s:line = "235" + let s:comment = "243" + let s:red = "167" + let s:orange = "173" + let s:yellow = "221" + let s:green = "143" + let s:aqua = "109" + let s:blue = "110" + let s:purple = "139" + endif +endif + +"}}} +" Formatting Options:"{{{ +" ---------------------------------------------------------------------------- +let s:none = "NONE" +let s:t_none = "NONE" +let s:n = "NONE" +let s:c = ",undercurl" +let s:r = ",reverse" +let s:s = ",standout" +let s:b = ",bold" +let s:u = ",underline" +let s:i = ",italic" + +"}}} +" Highlighting Primitives:"{{{ +" ---------------------------------------------------------------------------- +exe "let s:bg_none = ' ".s:vmode."bg=".s:none ."'" +exe "let s:bg_foreground = ' ".s:vmode."bg=".s:foreground."'" +exe "let s:bg_background = ' ".s:vmode."bg=".s:background."'" +exe "let s:bg_selection = ' ".s:vmode."bg=".s:selection ."'" +exe "let s:bg_line = ' ".s:vmode."bg=".s:line ."'" +exe "let s:bg_comment = ' ".s:vmode."bg=".s:comment ."'" +exe "let s:bg_red = ' ".s:vmode."bg=".s:red ."'" +exe "let s:bg_orange = ' ".s:vmode."bg=".s:orange ."'" +exe "let s:bg_yellow = ' ".s:vmode."bg=".s:yellow ."'" +exe "let s:bg_green = ' ".s:vmode."bg=".s:green ."'" +exe "let s:bg_aqua = ' ".s:vmode."bg=".s:aqua ."'" +exe "let s:bg_blue = ' ".s:vmode."bg=".s:blue ."'" +exe "let s:bg_purple = ' ".s:vmode."bg=".s:purple ."'" +exe "let s:bg_window = ' ".s:vmode."bg=".s:window ."'" +exe "let s:bg_darkcolumn = ' ".s:vmode."bg=".s:darkcolumn."'" +exe "let s:bg_addbg = ' ".s:vmode."bg=".s:addbg ."'" +exe "let s:bg_addfg = ' ".s:vmode."bg=".s:addfg ."'" +exe "let s:bg_changebg = ' ".s:vmode."bg=".s:changebg ."'" +exe "let s:bg_changefg = ' ".s:vmode."bg=".s:changefg ."'" +exe "let s:bg_darkblue = ' ".s:vmode."bg=".s:darkblue ."'" +exe "let s:bg_darkcyan = ' ".s:vmode."bg=".s:darkcyan ."'" +exe "let s:bg_darkred = ' ".s:vmode."bg=".s:darkred ."'" +exe "let s:bg_darkpurple = ' ".s:vmode."bg=".s:darkpurple."'" + +exe "let s:fg_none = ' ".s:vmode."fg=".s:none ."'" +exe "let s:fg_foreground = ' ".s:vmode."fg=".s:foreground."'" +exe "let s:fg_background = ' ".s:vmode."fg=".s:background."'" +exe "let s:fg_selection = ' ".s:vmode."fg=".s:selection ."'" +exe "let s:fg_line = ' ".s:vmode."fg=".s:line ."'" +exe "let s:fg_comment = ' ".s:vmode."fg=".s:comment ."'" +exe "let s:fg_red = ' ".s:vmode."fg=".s:red ."'" +exe "let s:fg_orange = ' ".s:vmode."fg=".s:orange ."'" +exe "let s:fg_yellow = ' ".s:vmode."fg=".s:yellow ."'" +exe "let s:fg_green = ' ".s:vmode."fg=".s:green ."'" +exe "let s:fg_aqua = ' ".s:vmode."fg=".s:aqua ."'" +exe "let s:fg_blue = ' ".s:vmode."fg=".s:blue ."'" +exe "let s:fg_purple = ' ".s:vmode."fg=".s:purple ."'" +exe "let s:fg_window = ' ".s:vmode."fg=".s:window ."'" +exe "let s:fg_darkcolumn = ' ".s:vmode."fg=".s:darkcolumn."'" +exe "let s:fg_addbg = ' ".s:vmode."fg=".s:addbg ."'" +exe "let s:fg_addfg = ' ".s:vmode."fg=".s:addfg ."'" +exe "let s:fg_changebg = ' ".s:vmode."fg=".s:changebg ."'" +exe "let s:fg_changefg = ' ".s:vmode."fg=".s:changefg ."'" +exe "let s:fg_darkblue = ' ".s:vmode."fg=".s:darkblue ."'" +exe "let s:fg_darkcyan = ' ".s:vmode."fg=".s:darkcyan ."'" +exe "let s:fg_darkred = ' ".s:vmode."fg=".s:darkred ."'" +exe "let s:fg_darkpurple = ' ".s:vmode."fg=".s:darkpurple."'" + +exe "let s:fmt_none = ' ".s:vmode."=NONE". " term=NONE" ."'" +exe "let s:fmt_bold = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b ."'" +exe "let s:fmt_bldi = ' ".s:vmode."=NONE".s:b. " term=NONE".s:b ."'" +exe "let s:fmt_undr = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u ."'" +exe "let s:fmt_undb = ' ".s:vmode."=NONE".s:u.s:b. " term=NONE".s:u.s:b."'" +exe "let s:fmt_undi = ' ".s:vmode."=NONE".s:u. " term=NONE".s:u ."'" +exe "let s:fmt_curl = ' ".s:vmode."=NONE".s:c. " term=NONE".s:c ."'" +exe "let s:fmt_ital = ' ".s:vmode."=NONE".s:i. " term=NONE".s:i ."'" +exe "let s:fmt_stnd = ' ".s:vmode."=NONE".s:s. " term=NONE".s:s ."'" +exe "let s:fmt_revr = ' ".s:vmode."=NONE".s:r. " term=NONE".s:r ."'" +exe "let s:fmt_revb = ' ".s:vmode."=NONE".s:r.s:b. " term=NONE".s:r.s:b."'" + +if has("gui_running") + exe "let s:sp_none = ' guisp=".s:none ."'" + exe "let s:sp_foreground = ' guisp=".s:foreground."'" + exe "let s:sp_background = ' guisp=".s:background."'" + exe "let s:sp_selection = ' guisp=".s:selection ."'" + exe "let s:sp_line = ' guisp=".s:line ."'" + exe "let s:sp_comment = ' guisp=".s:comment ."'" + exe "let s:sp_red = ' guisp=".s:red ."'" + exe "let s:sp_orange = ' guisp=".s:orange ."'" + exe "let s:sp_yellow = ' guisp=".s:yellow ."'" + exe "let s:sp_green = ' guisp=".s:green ."'" + exe "let s:sp_aqua = ' guisp=".s:aqua ."'" + exe "let s:sp_blue = ' guisp=".s:blue ."'" + exe "let s:sp_purple = ' guisp=".s:purple ."'" + exe "let s:sp_window = ' guisp=".s:window ."'" + exe "let s:sp_addbg = ' guisp=".s:addbg ."'" + exe "let s:sp_addfg = ' guisp=".s:addfg ."'" + exe "let s:sp_changebg = ' guisp=".s:changebg ."'" + exe "let s:sp_changefg = ' guisp=".s:changefg ."'" + exe "let s:sp_darkblue = ' guisp=".s:darkblue ."'" + exe "let s:sp_darkcyan = ' guisp=".s:darkcyan ."'" + exe "let s:sp_darkred = ' guisp=".s:darkred ."'" + exe "let s:sp_darkpurple = ' guisp=".s:darkpurple."'" +else + let s:sp_none = "" + let s:sp_foreground = "" + let s:sp_background = "" + let s:sp_selection = "" + let s:sp_line = "" + let s:sp_comment = "" + let s:sp_red = "" + let s:sp_orange = "" + let s:sp_yellow = "" + let s:sp_green = "" + let s:sp_aqua = "" + let s:sp_blue = "" + let s:sp_purple = "" + let s:sp_window = "" + let s:sp_addbg = "" + let s:sp_addfg = "" + let s:sp_changebg = "" + let s:sp_changefg = "" + let s:sp_darkblue = "" + let s:sp_darkcyan = "" + let s:sp_darkred = "" + let s:sp_darkpurple = "" +endif + +"}}} +" Vim Highlighting: (see :help highlight-groups)"{{{ +" ---------------------------------------------------------------------------- +exe "hi! ColorColumn" .s:fg_none .s:bg_line .s:fmt_none +" Conceal" +" Cursor" +" CursorIM" +exe "hi! CursorColumn" .s:fg_none .s:bg_line .s:fmt_none +exe "hi! CursorLine" .s:fg_none .s:bg_line .s:fmt_none +exe "hi! Directory" .s:fg_blue .s:bg_none .s:fmt_none +exe "hi! DiffAdd" .s:fg_addfg .s:bg_addbg .s:fmt_none +exe "hi! DiffChange" .s:fg_changefg .s:bg_changebg .s:fmt_none +exe "hi! DiffDelete" .s:fg_background .s:bg_red .s:fmt_none +exe "hi! DiffText" .s:fg_background .s:bg_blue .s:fmt_none +exe "hi! ErrorMsg" .s:fg_background .s:bg_red .s:fmt_stnd +exe "hi! VertSplit" .s:fg_window .s:bg_none .s:fmt_none +exe "hi! Folded" .s:fg_comment .s:bg_darkcolumn .s:fmt_none +exe "hi! FoldColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none +exe "hi! SignColumn" .s:fg_none .s:bg_darkcolumn .s:fmt_none +" Incsearch" +exe "hi! LineNr" .s:fg_selection .s:bg_none .s:fmt_none +exe "hi! CursorLineNr" .s:fg_yellow .s:bg_none .s:fmt_bold +exe "hi! MatchParen" .s:fg_background .s:bg_changebg .s:fmt_none +exe "hi! ModeMsg" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! MoreMsg" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! NonText" .s:fg_selection .s:bg_none .s:fmt_none +exe "hi! Pmenu" .s:fg_foreground .s:bg_selection .s:fmt_none +exe "hi! PmenuSel" .s:fg_foreground .s:bg_selection .s:fmt_revr +" PmenuSbar" +" PmenuThumb" +exe "hi! Question" .s:fg_green .s:bg_none .s:fmt_none +exe "hi! Search" .s:fg_background .s:bg_yellow .s:fmt_none +exe "hi! SpecialKey" .s:fg_selection .s:bg_none .s:fmt_none +exe "hi! SpellCap" .s:fg_blue .s:bg_darkblue .s:fmt_undr +exe "hi! SpellLocal" .s:fg_aqua .s:bg_darkcyan .s:fmt_undr +exe "hi! SpellBad" .s:fg_red .s:bg_darkred .s:fmt_undr +exe "hi! SpellRare" .s:fg_purple .s:bg_darkpurple .s:fmt_undr +exe "hi! StatusLine" .s:fg_comment .s:bg_background .s:fmt_revr +exe "hi! StatusLineNC" .s:fg_window .s:bg_comment .s:fmt_revr +exe "hi! TabLine" .s:fg_foreground .s:bg_darkcolumn .s:fmt_revr +" TabLineFill" +" TabLineSel" +exe "hi! Title" .s:fg_yellow .s:bg_none .s:fmt_none +exe "hi! Visual" .s:fg_none .s:bg_selection .s:fmt_none +" VisualNos" +exe "hi! WarningMsg" .s:fg_red .s:bg_none .s:fmt_none +" WildMenu" + +" Use Xresources for background colour +if has('gui_running') || (g:hybrid_use_Xresources != 1 && g:hybrid_use_iTerm_colors != 1) + exe "hi! Normal" .s:fg_foreground .s:bg_background .s:fmt_none +else + exe "hi! Normal" .s:fg_foreground .s:bg_none .s:fmt_none +endif + +"}}} +" Generic Syntax Highlighting: (see :help group-name)"{{{ +" ---------------------------------------------------------------------------- +exe "hi! Comment" .s:fg_comment .s:bg_none .s:fmt_none + +exe "hi! Constant" .s:fg_red .s:bg_none .s:fmt_none +exe "hi! String" .s:fg_green .s:bg_none .s:fmt_none +" Character" +" Number" +" Boolean" +" Float" + +exe "hi! Identifier" .s:fg_purple .s:bg_none .s:fmt_none +exe "hi! Function" .s:fg_yellow .s:bg_none .s:fmt_none + +exe "hi! Statement" .s:fg_blue .s:bg_none .s:fmt_none +" Conditional" +" Repeat" +" Label" +exe "hi! Operator" .s:fg_aqua .s:bg_none .s:fmt_none +" Keyword" +" Exception" + +exe "hi! PreProc" .s:fg_aqua .s:bg_none .s:fmt_none +" Include" +" Define" +" Macro" +" PreCondit" + +exe "hi! Type" .s:fg_orange .s:bg_none .s:fmt_none +" StorageClass" +exe "hi! Structure" .s:fg_aqua .s:bg_none .s:fmt_none +" Typedef" + +exe "hi! Special" .s:fg_green .s:bg_none .s:fmt_none +" SpecialChar" +" Tag" +" Delimiter" +" SpecialComment" +" Debug" +" +exe "hi! Underlined" .s:fg_blue .s:bg_none .s:fmt_none + +exe "hi! Ignore" .s:fg_none .s:bg_none .s:fmt_none + +exe "hi! Error" .s:fg_red .s:bg_darkred .s:fmt_undr + +exe "hi! Todo" .s:fg_addfg .s:bg_none .s:fmt_none + +" Quickfix window highlighting +exe "hi! qfLineNr" .s:fg_yellow .s:bg_none .s:fmt_none +" qfFileName" +" qfLineNr" +" qfError" + +"}}} +" Diff Syntax Highlighting:"{{{ +" ---------------------------------------------------------------------------- +" Diff +" diffOldFile +" diffNewFile +" diffFile +" diffOnly +" diffIdentical +" diffDiffer +" diffBDiffer +" diffIsA +" diffNoEOL +" diffCommon +hi! link diffRemoved Constant +" diffChanged +hi! link diffAdded Special +" diffLine +" diffSubname +" diffComment + +"}}} +" Legal:"{{{ +" ---------------------------------------------------------------------------- +" Copyright (c) 2011 Ethan Schoonover +" Copyright (c) 2009-2012 NanoTech +" Copyright (c) 2012 w0ng +" +" Permission is hereby granted, free of charge, to any per‐ +" son obtaining a copy of this software and associated doc‐ +" umentation files (the “Software”), to deal in the Soft‐ +" ware without restriction, including without limitation +" the rights to use, copy, modify, merge, publish, distrib‐ +" ute, sublicense, and/or sell copies of the Software, and +" to permit persons to whom the Software is furnished to do +" so, subject to the following conditions: +" +" The above copyright notice and this permission notice +" shall be included in all copies or substantial portions +" of the Software. +" +" THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY +" KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO +" THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICU‐ +" LAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CON‐ +" TRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CON‐ +" NECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +" THE SOFTWARE. + +" }}} diff --git a/vim/colors/railcasts.vim b/vim/colors/railcasts.vim new file mode 100644 index 0000000..a3a876f --- /dev/null +++ b/vim/colors/railcasts.vim @@ -0,0 +1,137 @@ +" Vim color scheme +" +" Name: railscast.vim +" Maintainer: Josh O'Rourke <joshorourke@me.com> +" License: public domain +" +" A GUI Only port of the RailsCasts TextMate theme [1] to Vim. +" Some parts of this theme were borrowed from the well-documented Lucius theme [2]. +" +" [1] http://railscasts.com/about +" [2] http://www.vim.org/scripts/script.php?script_id=2536 + +set background=dark +hi clear +if exists("syntax_on") + syntax reset +endif +let g:colors_name = "railscasts" + +highlight clear SignColumn " gitgutter settings + +" Colors +" Brown #BC9458 +" Dark Blue #6D9CBE +" Dark Green #519F50 +" Dark Orange #CC7833 +" Light Blue #D0D0FF +" Light Green #A5C261 +" Tan #FFC66D + +hi Normal guifg=#E6E1DC guibg=#2B2B2B ctermfg=white ctermbg=234 +hi Cursor guifg=#000000 guibg=#FFFFFF ctermfg=0 ctermbg=15 +hi CursorLine guibg=#333435 ctermbg=235 cterm=NONE +hi Search guibg=#5A647E ctermfg=NONE ctermbg=236 cterm=underline +hi Visual guibg=#5A647E ctermbg=60 +hi LineNr guifg=#888888 ctermfg=242 +hi StatusLine guibg=#414243 gui=NONE guifg=#E6E1DC +hi StatusLineNC guibg=#414243 gui=NONE +hi VertSplit guibg=#414243 gui=NONE guifg=#414243 +hi CursorLineNr guifg=#f4f800 ctermfg=248 +hi ColorColumn guibg=#333435 ctermbg=235 + +" Folds +" ----- +" line used for closed folds +hi Folded guifg=#F6F3E8 guibg=#444444 gui=NONE + +" Invisible Characters +" ------------------ +hi NonText guifg=#777777 gui=NONE +hi SpecialKey guifg=#777777 gui=NONE + +" Misc +" ---- +" directory names and other special names in listings +hi Directory guifg=#A5C261 gui=NONE + +" Popup Menu +" ---------- +" normal item in popup +hi Pmenu guifg=#F6F3E8 guibg=#444444 gui=NONE +" selected item in popup +hi PmenuSel guifg=#000000 guibg=#A5C261 gui=NONE +" scrollbar in popup +hi PMenuSbar guibg=#5A647E gui=NONE +" thumb of the scrollbar in the popup +hi PMenuThumb guibg=#AAAAAA gui=NONE + + +"rubyComment +hi Comment guifg=#BC9458 gui=italic ctermfg=137 +hi Todo guifg=#BC9458 guibg=NONE gui=italic ctermfg=94 + +"rubyPseudoVariable +"nil, self, symbols, etc +hi Constant guifg=#6D9CBE ctermfg=73 + +"rubyClass, rubyModule, rubyDefine +"def, end, include, etc +hi Define guifg=#CC7833 ctermfg=173 + +"rubyInterpolation +hi Delimiter guifg=#519F50 + +"rubyError, rubyInvalidVariable +hi Error guifg=#FFFFFF guibg=#990000 ctermfg=221 ctermbg=88 + +"rubyFunction +hi Function guifg=#FFC66D gui=NONE ctermfg=221 cterm=NONE + +"rubyIdentifier +"@var, @@var, $var, etc +hi Identifier guifg=#D0D0FF gui=NONE ctermfg=73 cterm=NONE + +"rubyInclude +"include, autoload, extend, load, require +hi Include guifg=#CC7833 gui=NONE ctermfg=173 cterm=NONE + +"rubyKeyword, rubyKeywordAsMethod +"alias, undef, super, yield, callcc, caller, lambda, proc +hi Keyword guifg=#CC7833 ctermfg=172 cterm=NONE + +" same as define +hi Macro guifg=#CC7833 gui=NONE ctermfg=172 + +"rubyInteger +hi Number guifg=#A5C261 ctermfg=107 + +" #if, #else, #endif +hi PreCondit guifg=#CC7833 gui=NONE ctermfg=172 cterm=NONE + +" generic preprocessor +hi PreProc guifg=#CC7833 gui=NONE ctermfg=103 + +"rubyControl, rubyAccess, rubyEval +"case, begin, do, for, if unless, while, until else, etc. +hi Statement guifg=#CC7833 gui=NONE ctermfg=172 cterm=NONE + +"rubyString +hi String guifg=#A5C261 ctermfg=107 + +hi Title guifg=#FFFFFF ctermfg=15 + +"rubyConstant +hi Type guifg=#DA4939 gui=NONE + +hi DiffAdd guifg=#E6E1DC guibg=#144212 +hi DiffDelete guifg=#E6E1DC guibg=#660000 + +hi link htmlTag xmlTag +hi link htmlTagName xmlTagName +hi link htmlEndTag xmlEndTag + +hi xmlTag guifg=#E8BF6A +hi xmlTagName guifg=#E8BF6A +hi xmlEndTag guifg=#E8BF6A + diff --git a/vim/colors/sorcerer.vim b/vim/colors/sorcerer.vim new file mode 100644 index 0000000..ffe808d --- /dev/null +++ b/vim/colors/sorcerer.vim @@ -0,0 +1,208 @@ +" 'sorcerer.vim' -- Vim color scheme. +" Maintainer: Andrew Lawson +" Forked from 'vim-scripts/Sorcerer' by Jeet Sukumaran +" Based on 'Mustang' by Henrique C. Alves (hcarvalhoalves@gmail.com), + +set background=dark + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "sorcerer" + +" GUI Colors {{{1 +" ============================================================================ + +hi Normal guifg=#c2c2b0 guibg=#222222 gui=NONE +hi ColorColumn guifg=NONE guibg=#1c1c1c +hi Cursor guifg=NONE guibg=#626262 gui=NONE +hi CursorColumn guibg=#2d2d2d +hi CursorLine guibg=#2d2d2d +hi DiffAdd guifg=#000000 guibg=#3cb371 gui=NONE +hi DiffDelete guifg=#000000 guibg=#aa4450 gui=NONE +hi DiffChange guifg=#000000 guibg=#4f94cd gui=NONE +hi DiffText guifg=#000000 guibg=#8ee5ee gui=NONE +hi Directory guifg=#1e90ff guibg=NONE gui=NONE +hi ErrorMsg guifg=#ff6a6a guibg=NONE gui=bold +hi FoldColumn guifg=#68838b guibg=#4B4B4B gui=bold +hi Folded guifg=#406060 guibg=#232c2c gui=NONE +hi IncSearch guifg=#ffffff guibg=#ff4500 gui=bold +hi LineNr guifg=#686858 guibg=NONE gui=NONE +hi MatchParen guifg=#fff000 guibg=NONE gui=bold +hi ModeMsg guifg=#000000 guibg=#00ff00 gui=bold +hi MoreMsg guifg=#2e8b57 guibg=NONE gui=bold +hi NonText guifg=#404050 guibg=NONE gui=NONE + +hi Pmenu guifg=#ffffff guibg=#444444 +hi PmenuSel guifg=#000000 guibg=#b1d631 +" hi PmenuSbar guifg=#ffffff guibg=#c1cdc1 gui=NONE +" hi PmenuThumb guifg=#ffffff guibg=#838b83 gui=NONE + +hi Question guifg=#00ee00 guibg=NONE gui=bold +hi Search guifg=#000000 guibg=#d6e770 gui=bold +hi SignColumn guifg=#ffffff guibg=NONE gui=NONE +hi SpecialKey guifg=#505060 guibg=NONE gui=NONE +hi SpellBad guisp=#ee2c2c gui=undercurl +hi SpellCap guisp=#0000ff gui=undercurl +hi SpellLocal guisp=#008b8b gui=undercurl +hi SpellRare guisp=#ff00ff gui=undercurl +hi StatusLine guifg=#000000 guibg=#808070 gui=bold +hi StatusLineNC guifg=#000000 guibg=#404c4c gui=italic +hi VertSplit guifg=#404c4c guibg=#404c4c gui=NONE +hi TabLine guifg=fg guibg=#d3d3d3 gui=underline +hi TabLineFill guifg=fg guibg=NONE gui=reverse +hi TabLineSel guifg=fg guibg=NONE gui=bold +hi Title guifg=#528b8b guibg=NONE gui=bold +hi Visual guifg=#000000 guibg=#6688aa gui=NONE +hi WarningMsg guifg=#ee9a00 guibg=NONE gui=NONE +hi WildMenu guifg=#000000 guibg=#87ceeb gui=NONE +hi ExtraWhitespace guifg=fg guibg=#528b8b gui=NONE + +" Syntax highlighting +hi Comment guifg=#686858 gui=italic +hi Boolean guifg=#ff9800 gui=NONE +hi String guifg=#779b70 gui=NONE +hi Identifier guifg=#9ebac2 gui=NONE +hi Function guifg=#faf4c6 gui=NONE +hi Type guifg=#7e8aa2 gui=NONE +hi Statement guifg=#90b0d1 gui=NONE +hi Keyword guifg=#90b0d1 gui=NONE +hi Constant guifg=#ff9800 gui=NONE +hi Number guifg=#cc8800 gui=NONE +hi Special guifg=#719611 gui=NONE +hi PreProc guifg=#528b8b gui=NONE +hi Todo guifg=#8f6f8f guibg=#202020 gui=italic,underline,bold + +" Diff +hi diffOldFile guifg=#88afcb guibg=NONE gui=italic +hi diffNewFile guifg=#88afcb guibg=NONE gui=italic +hi diffFile guifg=#88afcb guibg=NONE gui=italic +hi diffLine guifg=#88afcb guibg=NONE gui=italic +hi link diffSubname diffLine +hi diffAdded guifg=#3cb371 guibg=NONE gui=NONE +hi diffRemoved guifg=#aa4450 guibg=NONE gui=NONE +hi diffChanged guifg=#4f94cd guibg=NONE gui=NONE +hi link diffOnly Constant +hi link diffIdentical Constant +hi link diffDiffer Constant +hi link diffBDiffer Constant +hi link diffIsA Constant +hi link diffNoEOL Constant +hi link diffCommon Constant +hi link diffComment Constant + +" Python +hi pythonException guifg=#90b0d1 guibg=NONE gui=NONE +hi pythonExClass guifg=#996666 guibg=NONE gui=NONE +hi pythonDecorator guifg=#888555 guibg=NONE gui=NONE +hi link pythonDecoratorFunction pythonDecorator + +" 1}}} + +" 256 Colors {{{1 +" ============================================================================ +hi Normal cterm=NONE ctermbg=NONE ctermfg=145 +hi ColorColumn cterm=NONE ctermbg=16 ctermfg=NONE +hi Cursor cterm=NONE ctermbg=241 ctermfg=fg +hi CursorColumn cterm=NONE ctermbg=16 ctermfg=fg +hi CursorLine cterm=NONE ctermbg=236 ctermfg=fg +hi DiffAdd cterm=NONE ctermbg=71 ctermfg=16 +hi DiffDelete cterm=NONE ctermbg=124 ctermfg=16 +hi DiffChange cterm=NONE ctermbg=68 ctermfg=16 +hi DiffText cterm=NONE ctermbg=117 ctermfg=16 +hi Directory cterm=NONE ctermbg=234 ctermfg=33 +hi ErrorMsg cterm=bold ctermbg=NONE ctermfg=203 +hi FoldColumn cterm=bold ctermbg=239 ctermfg=66 +hi Folded cterm=NONE ctermbg=16 ctermfg=60 +hi IncSearch cterm=bold ctermbg=202 ctermfg=231 +hi LineNr cterm=NONE ctermbg=NONE ctermfg=59 +hi MatchParen cterm=bold ctermbg=NONE ctermfg=226 +hi ModeMsg cterm=bold ctermbg=46 ctermfg=16 +hi MoreMsg cterm=bold ctermbg=234 ctermfg=29 +hi NonText cterm=NONE ctermbg=NONE ctermfg=59 +hi Pmenu cterm=NONE ctermbg=238 ctermfg=231 +hi PmenuSbar cterm=NONE ctermbg=250 ctermfg=fg +hi PmenuSel cterm=NONE ctermbg=149 ctermfg=16 +hi Question cterm=bold ctermbg=NONE ctermfg=46 +hi Search cterm=bold ctermbg=185 ctermfg=16 +hi SignColumn cterm=NONE ctermbg=NONE ctermfg=231 +hi SpecialKey cterm=NONE ctermbg=NONE ctermfg=59 +hi SpellBad cterm=undercurl ctermbg=NONE ctermfg=196 +hi SpellCap cterm=undercurl ctermbg=NONE ctermfg=21 +hi SpellLocal cterm=undercurl ctermbg=NONE ctermfg=30 +hi SpellRare cterm=undercurl ctermbg=NONE ctermfg=201 +hi StatusLine cterm=bold ctermbg=101 ctermfg=16 +hi StatusLineNC cterm=NONE ctermbg=102 ctermfg=16 +hi VertSplit cterm=NONE ctermbg=102 ctermfg=102 +hi TabLine cterm=bold ctermbg=102 ctermfg=16 +hi TabLineFill cterm=NONE ctermbg=102 ctermfg=16 +hi TabLineSel cterm=bold ctermbg=16 ctermfg=59 +hi Title cterm=bold ctermbg=NONE ctermfg=66 +hi Visual cterm=NONE ctermbg=67 ctermfg=16 +hi WarningMsg cterm=NONE ctermbg=234 ctermfg=208 +hi WildMenu cterm=NONE ctermbg=116 ctermfg=16 +hi ExtraWhitespace cterm=NONE ctermbg=66 ctermfg=fg + +hi Comment cterm=NONE ctermbg=NONE ctermfg=59 +hi Boolean cterm=NONE ctermbg=NONE ctermfg=208 +hi String cterm=NONE ctermbg=NONE ctermfg=101 +hi Identifier cterm=NONE ctermbg=NONE ctermfg=145 +hi Function cterm=NONE ctermbg=NONE ctermfg=230 +hi Type cterm=NONE ctermbg=NONE ctermfg=103 +hi Statement cterm=NONE ctermbg=NONE ctermfg=110 +hi Keyword cterm=NONE ctermbg=NONE ctermfg=110 +hi Constant cterm=NONE ctermbg=NONE ctermfg=208 +hi Number cterm=NONE ctermbg=NONE ctermfg=172 +hi Special cterm=NONE ctermbg=NONE ctermfg=64 +hi PreProc cterm=NONE ctermbg=NONE ctermfg=66 +hi Todo cterm=bold,underline ctermbg=234 ctermfg=96 + +hi diffOldFile cterm=NONE ctermbg=NONE ctermfg=67 +hi diffNewFile cterm=NONE ctermbg=NONE ctermfg=67 +hi diffFile cterm=NONE ctermbg=NONE ctermfg=67 +hi diffLine cterm=NONE ctermbg=NONE ctermfg=67 +hi diffAdded cterm=NONE ctermfg=NONE ctermfg=71 +hi diffRemoved cterm=NONE ctermfg=NONE ctermfg=124 +hi diffChanged cterm=NONE ctermfg=NONE ctermfg=68 +hi link diffSubname diffLine +hi link diffOnly Constant +hi link diffIdentical Constant +hi link diffDiffer Constant +hi link diffBDiffer Constant +hi link diffIsA Constant +hi link diffNoEOL Constant +hi link diffCommon Constant +hi link diffComment Constant + +hi pythonClass cterm=NONE ctermbg=NONE ctermfg=fg +hi pythonDecorator cterm=NONE ctermbg=NONE ctermfg=101 +hi pythonExClass cterm=NONE ctermbg=NONE ctermfg=95 +hi pythonException cterm=NONE ctermbg=NONE ctermfg=110 +hi pythonFunc cterm=NONE ctermbg=NONE ctermfg=fg +hi pythonFuncParams cterm=NONE ctermbg=NONE ctermfg=fg +hi pythonKeyword cterm=NONE ctermbg=NONE ctermfg=fg +hi pythonParam cterm=NONE ctermbg=NONE ctermfg=fg +hi pythonRawEscape cterm=NONE ctermbg=NONE ctermfg=fg +hi pythonSuperclasses cterm=NONE ctermbg=NONE ctermfg=fg +hi pythonSync cterm=NONE ctermbg=NONE ctermfg=fg + +hi Conceal cterm=NONE ctermbg=248 ctermfg=252 +hi Error cterm=NONE ctermbg=196 ctermfg=231 +hi Ignore cterm=NONE ctermbg=NONE ctermfg=234 +hi InsertModeCursorLine cterm=NONE ctermbg=16 ctermfg=fg +hi NormalModeCursorLine cterm=NONE ctermbg=235 ctermfg=fg +hi PmenuThumb cterm=reverse ctermbg=NONE ctermfg=fg +hi StatusLineAlert cterm=NONE ctermbg=160 ctermfg=231 +hi StatusLineUnalert cterm=NONE ctermbg=238 ctermfg=144 +hi Test cterm=NONE ctermbg=NONE ctermfg=fg +hi Underlined cterm=underline ctermbg=NONE ctermfg=111 +hi VisualNOS cterm=bold,underline ctermbg=NONE ctermfg=fg +hi cCursor cterm=reverse ctermbg=NONE ctermfg=fg +hi iCursor cterm=NONE ctermbg=210 ctermfg=16 +hi lCursor cterm=NONE ctermbg=145 ctermfg=234 +hi nCursor cterm=NONE ctermbg=46 ctermfg=16 +hi vCursor cterm=NONE ctermbg=201 ctermfg=16 +" 1}}} diff --git a/vim/colors/tango2.vim b/vim/colors/tango2.vim new file mode 100644 index 0000000..16918ea --- /dev/null +++ b/vim/colors/tango2.vim @@ -0,0 +1,101 @@ +" Vim color file - tango2 +" Generated by http://bytefluent.com/vivify 2014-08-07 +set background=dark +if version > 580 + hi clear + if exists("syntax_on") + syntax reset + endif +endif + +set t_Co=256 +let g:colors_name = "tango2" + +"hi IncSearch -- no settings -- +"hi WildMenu -- no settings -- +"hi SignColumn -- no settings -- +hi SpecialComment guifg=#5EAFE5 guibg=NONE guisp=NONE gui=NONE ctermfg=74 ctermbg=NONE cterm=NONE +hi Typedef guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +"hi Title -- no settings -- +hi Folded guifg=NONE guibg=#d2d2d2 guisp=#d2d2d2 gui=NONE ctermfg=NONE ctermbg=252 cterm=NONE +hi PreCondit guifg=#e9ba6e guibg=NONE guisp=NONE gui=NONE ctermfg=179 ctermbg=NONE cterm=NONE +hi Include guifg=#e9ba6e guibg=NONE guisp=NONE gui=NONE ctermfg=179 ctermbg=NONE cterm=NONE +"hi TabLineSel -- no settings -- +"hi StatusLineNC -- no settings -- +"hi CTagsMember -- no settings -- +"hi NonText -- no settings -- +"hi CTagsGlobalConstant -- no settings -- +"hi DiffText -- no settings -- +"hi ErrorMsg -- no settings -- +"hi Ignore -- no settings -- +hi Debug guifg=#5EAFE5 guibg=NONE guisp=NONE gui=NONE ctermfg=74 ctermbg=NONE cterm=NONE +hi PMenuSbar guifg=NONE guibg=#848688 guisp=#848688 gui=NONE ctermfg=NONE ctermbg=102 cterm=NONE +hi Identifier guifg=#AD7FA8 guibg=NONE guisp=NONE gui=NONE ctermfg=139 ctermbg=NONE cterm=NONE +hi SpecialChar guifg=#5EAFE5 guibg=NONE guisp=NONE gui=NONE ctermfg=74 ctermbg=NONE cterm=NONE +hi Conditional guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +hi StorageClass guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +hi Todo guifg=#EBC450 guibg=NONE guisp=NONE gui=NONE ctermfg=221 ctermbg=NONE cterm=NONE +hi Special guifg=#5EAFE5 guibg=NONE guisp=NONE gui=NONE ctermfg=74 ctermbg=NONE cterm=NONE +"hi LineNr -- no settings -- +"hi StatusLine -- no settings -- +hi Normal guifg=#eeeeec guibg=#2E3436 guisp=#2E3436 gui=NONE ctermfg=255 ctermbg=237 cterm=NONE +hi Label guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +"hi CTagsImport -- no settings -- +hi PMenuSel guifg=#88dd88 guibg=#949698 guisp=#949698 gui=NONE ctermfg=114 ctermbg=246 cterm=NONE +hi Search guifg=NONE guibg=#81ABBD guisp=#81ABBD gui=NONE ctermfg=NONE ctermbg=109 cterm=NONE +"hi CTagsGlobalVariable -- no settings -- +hi Delimiter guifg=#5EAFE5 guibg=NONE guisp=NONE gui=NONE ctermfg=74 ctermbg=NONE cterm=NONE +hi Statement guifg=#729FCF guibg=NONE guisp=NONE gui=NONE ctermfg=110 ctermbg=NONE cterm=NONE +"hi SpellRare -- no settings -- +"hi EnumerationValue -- no settings -- +hi Comment guifg=#6d7e8a guibg=NONE guisp=NONE gui=italic ctermfg=66 ctermbg=NONE cterm=NONE +hi Character guifg=#8ae234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +"hi Float -- no settings -- +hi Number guifg=#8ae234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +hi Boolean guifg=#729FCF guibg=NONE guisp=NONE gui=NONE ctermfg=110 ctermbg=NONE cterm=NONE +hi Operator guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +"hi CursorLine -- no settings -- +"hi Union -- no settings -- +"hi TabLineFill -- no settings -- +"hi Question -- no settings -- +"hi WarningMsg -- no settings -- +"hi VisualNOS -- no settings -- +"hi DiffDelete -- no settings -- +"hi ModeMsg -- no settings -- +"hi CursorColumn -- no settings -- +hi Define guifg=#e9ba6e guibg=NONE guisp=NONE gui=NONE ctermfg=179 ctermbg=NONE cterm=NONE +hi Function guifg=#9BCF8D guibg=NONE guisp=NONE gui=bold ctermfg=114 ctermbg=NONE cterm=bold +"hi FoldColumn -- no settings -- +hi PreProc guifg=#e9ba6e guibg=NONE guisp=NONE gui=NONE ctermfg=179 ctermbg=NONE cterm=NONE +"hi EnumerationName -- no settings -- +"hi Visual -- no settings -- +"hi MoreMsg -- no settings -- +"hi SpellCap -- no settings -- +"hi VertSplit -- no settings -- +hi Exception guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +hi Keyword guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +hi Type guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +"hi DiffChange -- no settings -- +hi Cursor guifg=#000000 guibg=#ffffff guisp=#ffffff gui=NONE ctermfg=NONE ctermbg=15 cterm=NONE +"hi SpellLocal -- no settings -- +"hi Error -- no settings -- +hi PMenu guifg=#dddddd guibg=#545658 guisp=#545658 gui=NONE ctermfg=253 ctermbg=240 cterm=NONE +"hi SpecialKey -- no settings -- +hi Constant guifg=#8ae234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +"hi DefinedName -- no settings -- +hi Tag guifg=#5EAFE5 guibg=NONE guisp=NONE gui=NONE ctermfg=74 ctermbg=NONE cterm=NONE +hi String guifg=#8ae234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +hi PMenuThumb guifg=NONE guibg=#a4a6a8 guisp=#a4a6a8 gui=NONE ctermfg=NONE ctermbg=248 cterm=NONE +"hi MatchParen -- no settings -- +"hi LocalVariable -- no settings -- +hi Repeat guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +"hi SpellBad -- no settings -- +"hi CTagsClass -- no settings -- +"hi Directory -- no settings -- +hi Structure guifg=#8AE234 guibg=NONE guisp=NONE gui=NONE ctermfg=113 ctermbg=NONE cterm=NONE +hi Macro guifg=#e9ba6e guibg=NONE guisp=NONE gui=NONE ctermfg=179 ctermbg=NONE cterm=NONE +"hi Underlined -- no settings -- +"hi DiffAdd -- no settings -- +"hi TabLine -- no settings -- +hi cursorim guifg=#192224 guibg=#536991 guisp=#536991 gui=NONE ctermfg=235 ctermbg=60 cterm=NONE +"hi clear -- no settings -- @@ -0,0 +1,117 @@ +filetype plugin indent on +syntax on + +set runtimepath+=/usr/share/vim/vimfiles/ + +call pathogen#infect() + +" Color +"let g:hybrid_use_Xresources = 1 + +if has("gui_running") + set guioptions=c + colo gruvbox + set bg=dark + set guifont=Envy\ Code\ R\ 9 +else + set bg=light +endif + +" Settings +set noerrorbells +set novisualbell + +set showcmd +set autoread + +set nobackup +set nowb +set noswapfile +set wrap +set scrolloff=3 +set autochdir + +if expand("%:p") =~ '\.*blender\.*' + set tabstop=4 + set shiftwidth=4 + set smarttab + set autoindent + set smartindent + set ci + set cin + set ofu=syntaxcomplete#Complete + set showmatch + set incsearch +else + set expandtab + set smarttab + set sw=4 + set ts=4 + set sts=4 + set ai + set si +endif + +let NERDTreeIgnore=['.pyc$'] + +" Filetyp dependent + +au BufRead /tmp/mutt-* set tw=80 +au BufRead,BufNewFile *.md set tw=80 ft=markdown +au Bufread,BufNewFile *.go set ft=go + +au Bufread,BufNewFile *.oz set ft=oz + +au Bufread,BufNewFile *.rb set sw=2 ts=2 sts=2 + +au BufRead,BufNewFile *.html call HtmlDjangoSettings() + +function! HtmlDjangoSettings() + if (&ft=='htmldjango') + inoremap <Leader>t {% %}<Esc>hhi + inoremap <Leader>s {{ }}<Esc>hhi + endif +endfunction + +" Some functions +set colorcolumn=0 +function! Toggle_colorcolumn() + if &colorcolumn == 0 + set colorcolumn=80 + else + set colorcolumn=0 + endif +endfunction + + +""""" Mappings """""" +" Setting nop to the arrows keys +nmap <F1> <Esc> +map <up> <nop> +map <down> <nop> +map <right> <nop> +map <left> <nop> +imap <up> <nop> +imap <down> <nop> +imap <right> <nop> +imap <left> <nop> + +nnoremap <F2> :NERDTreeToggle<cr> +nmap <F3> :TagbarToggle<cr> + +map <c-h> <c-w>h +map <c-j> <c-w>j +map <c-k> <c-w>k +map <c-l> <c-w>l + +" Yank behaves really good +map Y y$ + +" Nice for wrapped lines +nnoremap j gj +nnoremap k gk +inoremap jk <Esc> + +nnoremap <Leader>p :call Toggle_colorcolumn() <cr> +" Diff +nnoremap <F4> :diffg 3 <cr> |