Initial
authorSergey Matveev <stargrave@stargrave.org>
Sun, 11 Aug 2019 17:29:55 +0000 (20:29 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sun, 11 Aug 2019 17:29:55 +0000 (20:29 +0300)
49 files changed:
aria2/.aria2/aria2-minimal.conf [new file with mode: 0644]
aria2/.aria2/aria2.conf [new file with mode: 0644]
git/.git-ignore [new file with mode: 0644]
git/.gitconfig [new file with mode: 0644]
gnupg/.gnupg/gpg-agent.conf [new file with mode: 0644]
gnupg/.gnupg/gpg.conf [new file with mode: 0644]
lynx/.lynx.cfg [new file with mode: 0644]
lynx/.lynxrc [new file with mode: 0644]
lynx/.mailcap [new file with mode: 0644]
mplayer/.mplayer/config [new file with mode: 0644]
mplayer/.mplayer/mencoder.conf [new file with mode: 0644]
mutt/.mutt/color [new file with mode: 0644]
mutt/.mutt/muttrc [new file with mode: 0644]
mutt/.muttrc [new file with mode: 0644]
nethack/.nethackrc [new file with mode: 0644]
nethack/.wizkit_ [new file with mode: 0644]
pdb/.pdbrc [new file with mode: 0644]
pip/.pip/pip.conf [new file with mode: 0644]
psql/.psqlrc [new file with mode: 0644]
readline/.inputrc [new file with mode: 0644]
tmux/.tmux.conf [new file with mode: 0644]
urlview/.urlview [new file with mode: 0644]
vim/.vim/ftplugin/go/autos.vim [new file with mode: 0644]
vim/.vim/ftplugin/go/fmt.vim [new file with mode: 0644]
vim/.vim/ftplugin/go/motion.vim [new file with mode: 0644]
vim/.vim/ftplugin/python/autos.vim [new file with mode: 0644]
vim/.vim/ftplugin/python/importcompl.vim [new file with mode: 0644]
vim/.vim/ftplugin/python/pep8.vim [new file with mode: 0644]
vim/.vim/ftplugin/python/pylint.vim [new file with mode: 0644]
vim/.vim/ftplugin/python/testname.vim [new file with mode: 0644]
vim/.vim/ftplugin/python/unused_remover.vim [new file with mode: 0644]
vim/.vim/plugin/chnglstnav.vim [new file with mode: 0644]
vim/.vim/plugin/ctags.vim [new file with mode: 0644]
vim/.vim/plugin/defsplit.vim [new file with mode: 0644]
vim/.vim/plugin/file_line.vim [new file with mode: 0644]
vim/.vim/plugin/ggrep.vim [new file with mode: 0644]
vim/.vim/plugin/grep.vim [new file with mode: 0644]
vim/.vim/plugin/killsig.vim [new file with mode: 0644]
vim/.vim/plugin/pastemode.vim [new file with mode: 0644]
vim/.vim/plugin/vimrclocal.vim [new file with mode: 0644]
vim/.vim/plugin/whereami.vim [new file with mode: 0644]
vim/.vim/plugin/zshfe.vim [new file with mode: 0644]
vim/.vim/plugin/zshfe.zsh [new file with mode: 0755]
vim/.vimrc [new file with mode: 0644]
x/.Xresources [new file with mode: 0644]
x/.xinitrc [new file with mode: 0755]
xombrero/.xombrero.conf [new file with mode: 0644]
zsh/.zprofile [new file with mode: 0644]
zsh/.zshrc [new file with mode: 0644]

diff --git a/aria2/.aria2/aria2-minimal.conf b/aria2/.aria2/aria2-minimal.conf
new file mode 100644 (file)
index 0000000..88bf22c
--- /dev/null
@@ -0,0 +1,5 @@
+max-concurrent-downloads=1
+ca-certificate=/etc/ssl/cert.pem
+disk-cache=0
+file-allocation=trunc
+force-save=true
diff --git a/aria2/.aria2/aria2.conf b/aria2/.aria2/aria2.conf
new file mode 100644 (file)
index 0000000..5e0d4a9
--- /dev/null
@@ -0,0 +1,11 @@
+max-concurrent-downloads=200
+ca-certificate=/etc/ssl/cert.pem
+bt-max-open-files=1000
+bt-max-peers=1000
+bt-save-metadata=true
+enable-dht=true
+enable-dht6=true
+seed-ratio=0.0
+disk-cache=0
+file-allocation=trunc
+force-save=true
diff --git a/git/.git-ignore b/git/.git-ignore
new file mode 100644 (file)
index 0000000..51a154d
--- /dev/null
@@ -0,0 +1,5 @@
+*.pyc
+*.swp
+.hypothesis
+start.sh
+tags
diff --git a/git/.gitconfig b/git/.gitconfig
new file mode 100644 (file)
index 0000000..4f5a87a
--- /dev/null
@@ -0,0 +1,32 @@
+[alias]
+       wt = worktree
+       unchanged = update-index --assume-unchanged
+[user]
+       name = Sergey Matveev
+       email = stargrave@stargrave.org
+       signingkey = "E49857EF"
+[color]
+       diff = auto
+       status = auto
+       branch = auto
+       interactive = auto
+[core]
+       excludesfile = /home/stargrave/.git-ignore
+       quotepath = false
+       filemode = true
+       logallrefupdates = true
+       whitespace = blank-at-eol, space-before-tab, tab-in-indent, blank-at-eof
+[log]
+       date = iso8601
+[push]
+       default = current
+[rebase]
+       autosquash = true
+[rerere]
+       enabled = true
+[notes]
+       displayRef = *
+[diff]
+       algorithm = patience
+[grep]
+       lineNumber = true
diff --git a/gnupg/.gnupg/gpg-agent.conf b/gnupg/.gnupg/gpg-agent.conf
new file mode 100644 (file)
index 0000000..6750342
--- /dev/null
@@ -0,0 +1,2 @@
+pinentry-program /usr/local/bin/pinentry-curses
+default-cache-ttl 14400
diff --git a/gnupg/.gnupg/gpg.conf b/gnupg/.gnupg/gpg.conf
new file mode 100644 (file)
index 0000000..26a91f4
--- /dev/null
@@ -0,0 +1,20 @@
+charset utf-8
+no-auto-key-retrieve
+keyserver hkps://hkps.pool.sks-keyservers.net
+no-secmem-warning
+no-greeting
+no-emit-version
+default-key AE1A8109E49857EF
+keyid-format 0xlong
+photo-viewer sxiv %i
+
+trust-model tofu+pgp
+#auto-key-locate pka dane wkd hkp://keys.gnupg.net local
+
+personal-cipher-preferences TWOFISH AES256 CAMELLIA256 AES192 CAMELLIA192 AES CAMELLIA128 CAST5 BLOWFISH IDEA 3DES
+personal-digest-preferences SHA512 SHA384 SHA256 SHA224 RIPEMD160 SHA1
+personal-compress-preferences ZLIB ZIP BZIP2 Uncompressed
+default-preference-list TWOFISH AES256 CAMELLIA256 AES192 CAMELLIA192 AES CAMELLIA128 CAST5 BLOWFISH IDEA 3DES SHA512 SHA384 SHA256 SHA224 RIPEMD160 SHA1 ZLIB ZIP BZIP2 Uncompressed
+cert-digest-algo SHA512
+
+group myself=AE1A8109E49857EF
diff --git a/lynx/.lynx.cfg b/lynx/.lynx.cfg
new file mode 100644 (file)
index 0000000..4a6f80c
--- /dev/null
@@ -0,0 +1,9 @@
+INCLUDE:/usr/local/etc/lynx.cfg
+PARTIAL:TRUE
+SHOW_KB_RATE:KB,ETA
+INFOSECS:1
+MESSAGESECS:1
+ALERTSECS:1
+NO_REFERER_HEADER:TRUE
+NO_FROM_HEADER:TRUE
+MAKE_LINKS_FOR_ALL_IMAGES:TRUE
diff --git a/lynx/.lynxrc b/lynx/.lynxrc
new file mode 100644 (file)
index 0000000..4f8fbea
--- /dev/null
@@ -0,0 +1,344 @@
+# Lynx User Defaults File
+# 
+# This file contains options saved from the Lynx Options Screen (normally
+# with the 'o' key).  To save options with that screen, you must select the
+# checkbox:
+#      Save options to disk
+#
+# You must then save the settings using the link on the line above the
+# checkbox:
+#      Accept Changes
+#
+# You may also use the command-line option "-forms_options", which displays
+# the simpler Options Menu instead.  Save options with that using the '>' key.
+# 
+# There is normally no need to edit this file manually, since the defaults
+# here can be controlled from the Options Screen, and the next time options
+# are saved from the Options Screen this file will be completely rewritten.
+# You have been warned...
+# 
+# If you are looking for the general configuration file - it is normally
+# called "lynx.cfg".  It has different content and a different format.
+# It is not this file.
+
+# accept_all_cookies allows the user to tell Lynx to automatically
+# accept all cookies if desired.  The default is "FALSE" which will
+# prompt for each cookie.  Set accept_all_cookies to "TRUE" to accept
+# all cookies.
+accept_all_cookies=off
+
+# anonftp_password allows the user to tell Lynx to use the personal
+# email address as the password for anonymous ftp.  If no value is given,
+# Lynx will use the personal email address.  Set anonftp_password
+# to a different value if you choose.
+anonftp_password=
+
+# bookmark_file specifies the name and location of the default bookmark
+# file into which the user can paste links for easy access at a later
+# date.
+bookmark_file=.lynx_bookmarks.html
+
+# If case_sensitive_searching is "on" then when the user invokes a search
+# using the 's' or '/' keys, the search performed will be case sensitive
+# instead of case INsensitive.  The default is usually "off".
+case_sensitive_searching=off
+
+# The character_set definition controls the representation of 8 bit
+# characters for your terminal.  If 8 bit characters do not show up
+# correctly on your screen you may try changing to a different 8 bit
+# set or using the 7 bit character approximations.
+# Current valid characters sets are:
+#    Western (ISO-8859-1)
+#    7 bit approximations (US-ASCII)
+#    Western (ISO-8859-15)
+#    Western (cp850)
+#    Western (windows-1252)
+#    IBM PC US codepage (cp437)
+#    DEC Multinational
+#    Macintosh (8 bit)
+#    NeXT character set
+#    HP Roman8
+#    Chinese
+#    Japanese (EUC-JP)
+#    Japanese (Shift_JIS)
+#    Korean
+#    Taipei (Big5)
+#    Vietnamese (VISCII)
+#    Transparent
+#    Eastern European (ISO-8859-2)
+#    Eastern European (cp852)
+#    Eastern European (windows-1250)
+#    Latin 3 (ISO-8859-3)
+#    Latin 4 (ISO-8859-4)
+#    Baltic Rim (ISO-8859-13)
+#    Baltic Rim (cp775)
+#    Baltic Rim (windows-1257)
+#    Cyrillic (ISO-8859-5)
+#    Cyrillic (cp866)
+#    Cyrillic (windows-1251)
+#    Cyrillic (KOI8-R)
+#    Arabic (ISO-8859-6)
+#    Arabic (cp864)
+#    Arabic (windows-1256)
+#    Celtic (ISO-8859-14)
+#    Greek (ISO-8859-7)
+#    Greek (cp737)
+#    Greek2 (cp869)
+#    Greek (windows-1253)
+#    Hebrew (ISO-8859-8)
+#    Hebrew (cp862)
+#    Hebrew (windows-1255)
+#    Turkish (ISO-8859-9)
+#    Turkish (cp857)
+#    North European (ISO-8859-10)
+#    UNICODE (UTF-8)
+#    RFC 1345 w/o Intro
+#    RFC 1345 Mnemonic
+#    Ukrainian Cyrillic (cp866u)
+#    Ukrainian Cyrillic (KOI8-U)
+#    Cyrillic-Asian (PT154)
+character_set=UNICODE (UTF-8)
+
+# cookie_accept_domains and cookie_reject_domains are comma-delimited
+# lists of domains from which Lynx should automatically accept or reject
+# all cookies.  If a domain is specified in both options, rejection will
+# take precedence.  The accept_all_cookies parameter will override any
+# settings made here.
+cookie_accept_domains=
+
+# cookie_file specifies the file from which to read persistent cookies.
+# The default is ~/.lynx_cookies.
+cookie_file=
+
+# cookie_loose_invalid_domains, cookie_strict_invalid_domains, and
+# cookie_query_invalid_domains are comma-delimited lists of which domains
+# should be subjected to varying degrees of validity checking.  If a
+# domain is set to strict checking, strict conformance to RFC2109 will
+# be applied.  A domain with loose checking will be allowed to set cookies
+# with an invalid path or domain attribute.  All domains will default to
+# querying the user for an invalid path or domain.
+cookie_loose_invalid_domains=
+
+cookie_query_invalid_domains=
+
+cookie_reject_domains=
+
+cookie_strict_invalid_domains=
+
+# dir_list_order specifies the directory list order under DIRED_SUPPORT
+# (if implemented).  The default is "ORDER_BY_NAME"
+dir_list_order=ORDER_BY_NAME
+
+# dir_list_styles specifies the directory list style under DIRED_SUPPORT
+# (if implemented).  The default is "MIXED_STYLE", which sorts both
+# files and directories together.  "FILES_FIRST" lists files first and
+# "DIRECTORIES_FIRST" lists directories first.
+dir_list_style=MIXED_STYLE
+
+# If emacs_keys is to "on" then the normal EMACS movement keys:
+#   ^N = down    ^P = up
+#   ^B = left    ^F = right
+# will be enabled.
+emacs_keys=off
+
+# file_editor specifies the editor to be invoked when editing local files
+# or sending mail.  If no editor is specified, then file editing is disabled
+# unless it is activated from the command line, and the built-in line editor
+# will be used for sending mail.
+file_editor=vim
+
+# The file_sorting_method specifies which value to sort on when viewing
+# file lists such as FTP directories.  The options are:
+#    BY_FILENAME -- sorts on the name of the file
+#    BY_TYPE     -- sorts on the type of the file
+#    BY_SIZE     -- sorts on the size of the file
+#    BY_DATE     -- sorts on the date of the file
+file_sorting_method=BY_FILENAME
+
+# If keypad_mode is set to "NUMBERS_AS_ARROWS", then the numbers on
+# your keypad when the numlock is on will act as arrow keys:
+#             8 = Up Arrow
+#   4 = Left Arrow    6 = Right Arrow
+#             2 = Down Arrow
+# and the corresponding keyboard numbers will act as arrow keys,
+# regardless of whether numlock is on.
+# If keypad_mode is set to "LINKS_ARE_NUMBERED", then numbers will
+# appear next to each link and numbers are used to select links.
+# If keypad_mode is set to "LINKS_AND_FORM_FIELDS_ARE_NUMBERED", then
+# numbers will appear next to each link and visible form input field.
+# Numbers are used to select links, or to move the "current link" to a
+# form input field or button.  In addition, options in popup menus are
+# indexed so that the user may type an option number to select an option in
+# a popup menu, even if the option isn't visible on the screen.  Reference
+# lists and output from the list command also enumerate form inputs.
+# NOTE: Some fixed format documents may look disfigured when
+# "LINKS_ARE_NUMBERED" or "LINKS_AND_FORM_FIELDS_ARE_NUMBERED" are
+# enabled.
+keypad_mode=LINKS_AND_FIELDS_ARE_NUMBERED
+
+# lineedit_mode specifies the key binding used for inputting strings in
+# prompts and forms.  If lineedit_mode is set to "Default Binding" then
+# the following control characters are used for moving and deleting:
+# 
+#              Prev  Next       Enter = Accept input
+#    Move char: <-    ->        ^G    = Cancel input
+#    Move word: ^P    ^N        ^U    = Erase line
+#  Delete char: ^H    ^R        ^A    = Beginning of line
+#  Delete word: ^B    ^F        ^E    = End of line
+# 
+# Current lineedit modes are:
+#    Default Binding
+#    Alternate Bindings
+#    Bash-like Bindings
+lineedit_mode=Default Binding
+
+# The following allow you to define sub-bookmark files and descriptions.
+# The format is multi_bookmark<capital_letter>=<filename>,<description>
+# Up to 26 bookmark files (for the English capital letters) are allowed.
+# We start with "multi_bookmarkB" since 'A' is the default (see above).
+multi_bookmarkB=
+multi_bookmarkC=
+multi_bookmarkD=
+multi_bookmarkE=
+multi_bookmarkF=
+multi_bookmarkG=
+multi_bookmarkH=
+multi_bookmarkI=
+multi_bookmarkJ=
+multi_bookmarkK=
+multi_bookmarkL=
+multi_bookmarkM=
+multi_bookmarkN=
+multi_bookmarkO=
+multi_bookmarkP=
+multi_bookmarkQ=
+multi_bookmarkR=
+multi_bookmarkS=
+multi_bookmarkT=
+multi_bookmarkU=
+multi_bookmarkV=
+multi_bookmarkW=
+multi_bookmarkX=
+multi_bookmarkY=
+multi_bookmarkZ=
+
+# personal_mail_address specifies your personal mail address.  The
+# address will be sent during HTTP file transfers for authorization and
+# logging purposes, and for mailed comments.
+# If you do not want this information given out, set the NO_FROM_HEADER
+# to TRUE in lynx.cfg, or use the -nofrom command line switch.  You also
+# could leave this field blank, but then you won't have it included in
+# your mailed comments.
+personal_mail_address=
+
+# personal_mail_name specifies your personal name, for mail.  The
+# name is sent for mailed comments.  Lynx will prompt for this,
+# showing the configured value as a default when sending mail.
+# This is not necessarily the same as a name provided as part of the
+# personal_mail_address.
+# Lynx does not save your changes to that default value as a side-effect
+# of sending email.  To update the default value, you must use the options
+# menu, or modify this file directly.
+personal_mail_name=
+
+# preferred_charset specifies the character set in MIME notation (e.g.,
+# ISO-8859-2, ISO-8859-5) which Lynx will indicate you prefer in requests
+# to http servers using an Accept-Charset header.  The value should NOT
+# include ISO-8859-1 or US-ASCII, since those values are always assumed
+# by default.  May be a comma-separated list.
+# If a file in that character set is available, the server will send it.
+# If no Accept-Charset header is present, the default is that any
+# character set is acceptable.  If an Accept-Charset header is present,
+# and if the server cannot send a response which is acceptable
+# according to the Accept-Charset header, then the server SHOULD send
+# an error response, though the sending of an unacceptable response
+# is also allowed.
+preferred_charset=
+
+# preferred_language specifies the language in MIME notation (e.g., en,
+# fr, may be a comma-separated list in decreasing preference)
+# which Lynx will indicate you prefer in requests to http servers.
+# If a file in that language is available, the server will send it.
+# Otherwise, the server will send the file in its default language.
+preferred_language=en
+
+# select_popups specifies whether the OPTIONs in a SELECT block which
+# lacks a MULTIPLE attribute are presented as a vertical list of radio
+# buttons or via a popup menu.  Note that if the MULTIPLE attribute is
+# present in the SELECT start tag, Lynx always will create a vertical list
+# of checkboxes for the OPTIONs.  A value of "on" will set popup menus
+# as the default while a value of "off" will set use of radio boxes.
+# The default can be overridden via the -popup command line toggle.
+select_popups=on
+
+# show_color specifies how to set the color mode at startup.  A value of
+# "never" will force color mode off (treat the terminal as monochrome)
+# at startup even if the terminal appears to be color capable.  A value of
+# "always" will force color mode on even if the terminal appears to be
+# monochrome, if this is supported by the library used to build lynx.
+# A value of "default" will yield the behavior of assuming
+# a monochrome terminal unless color capability is inferred at startup
+# based on the terminal type, or the -color command line switch is used, or
+# the COLORTERM environment variable is set.  The default behavior always is
+# used in anonymous accounts or if the "option_save" restriction is set.
+# The effect of the saved value can be overridden via
+# the -color and -nocolor command line switches.
+# The mode set at startup can be changed via the "show color" option in
+# the 'o'ptions menu.  If the option settings are saved, the "on" and
+# "off" "show color" settings will be treated as "default".
+show_color=default
+
+# show_cursor specifies whether to 'hide' the cursor to the right (and
+# bottom, if possible) of the screen, or to place it to the left of the
+# current link in documents, or current option in select popup windows.
+# Positioning the cursor to the left of the current link or option is
+# helpful for speech or braille interfaces, and when the terminal is
+# one which does not distinguish the current link based on highlighting
+# or color.  A value of "on" will set positioning to the left as the
+# default while a value of "off" will set 'hiding' of the cursor.
+# The default can be overridden via the -show_cursor command line toggle.
+show_cursor=on
+
+# show_dotfiles specifies that the directory listing should include
+# "hidden" (dot) files/directories.  If set "on", this will be
+# honored only if enabled via userdefs.h and/or lynx.cfg, and not
+# restricted via a command line switch.  If display of hidden files
+# is disabled, creation of such files via Lynx also is disabled.
+show_dotfiles=off
+
+# If sub_bookmarks is not turned "off", and multiple bookmarks have
+# been defined (see below), then all bookmark operations will first
+# prompt the user to select an active sub-bookmark file.  If the default
+# Lynx bookmark_file is defined (see above), it will be used as the
+# default selection.  When this option is set to "advanced", and the
+# user mode is advanced, the 'v'iew bookmark command will invoke a
+# statusline prompt instead of the menu seen in novice and intermediate
+# user modes.  When this option is set to "standard", the menu will be
+# presented regardless of user mode.
+sub_bookmarks=OFF
+
+# user_mode specifies the users level of knowledge with Lynx.  The
+# default is "NOVICE" which displays two extra lines of help at the
+# bottom of the screen to aid the user in learning the basic Lynx
+# commands.  Set user_mode to "INTERMEDIATE" to turn off the extra info.
+# Use "ADVANCED" to see the URL of the currently selected link at the
+# bottom of the screen.
+user_mode=ADVANCED
+
+# If verbose_images is "on", lynx will print the name of the image
+# source file in place of [INLINE], [LINK] or [IMAGE]
+# See also VERBOSE_IMAGES in lynx.cfg
+verbose_images=on
+
+# If vi_keys is set to "on", then the normal VI movement keys:
+#   j = down    k = up
+#   h = left    l = right
+# will be enabled.  These keys are only lower case.
+# Capital 'H', 'J' and 'K will still activate help, jump shortcuts,
+# and the keymap display, respectively.
+vi_keys=on
+
+# The visited_links setting controls how Lynx organizes the information
+# in the Visited Links Page.
+visited_links=LAST_REVERSED
+
diff --git a/lynx/.mailcap b/lynx/.mailcap
new file mode 100644 (file)
index 0000000..8c7d7ca
--- /dev/null
@@ -0,0 +1,5 @@
+text/html; /usr/local/bin/lynx -noreferer -partial -assume_charset=%{charset} -dump %s; copiousoutput; nametemplate=%s.html
+application/pdf; /usr/local/bin/zathura '%s'; test=test -n "$DISPLAY"
+image/jpeg; /usr/local/bin/sxiv '%s'; test=test -n "$DISPLAY"
+image/png; /usr/local/bin/sxiv '%s'; test=test -n "$DISPLAY"
+image/gif; /usr/local/bin/sxiv '%s'; test=test -n "$DISPLAY"
diff --git a/mplayer/.mplayer/config b/mplayer/.mplayer/config
new file mode 100644 (file)
index 0000000..feb853a
--- /dev/null
@@ -0,0 +1,12 @@
+vo=xv
+zoom=1
+framedrop=1
+hardframedrop=1
+cache=16384
+lavdopts=threads=2
+autosync=30
+#pp=6
+utf8=1
+
+[vo.vdpau]
+vc=ffh264vdpau,ffhevcvdpau,ffodivxvdpau,ffmpeg12vdpau
diff --git a/mplayer/.mplayer/mencoder.conf b/mplayer/.mplayer/mencoder.conf
new file mode 100644 (file)
index 0000000..37d46db
--- /dev/null
@@ -0,0 +1,3 @@
+oac=lavc=yes
+ovc=lavc=yes
+lavcopts=vhq=yes:trell=yes:v4mv=yes
diff --git a/mutt/.mutt/color b/mutt/.mutt/color
new file mode 100644 (file)
index 0000000..835e5ca
--- /dev/null
@@ -0,0 +1,34 @@
+color hdrdefault blue default
+color quoted blue default
+color signature red default
+color attachment red default
+color prompt brightmagenta default
+color message brightred default
+color error brightred default
+color indicator brightyellow red
+color status brightgreen blue
+color tree default default
+color normal default default
+color markers red default
+color search white black
+color tilde brightmagenta default
+color index blue default ~F
+#color index red default "~N|~O"
+
+color header brightmagenta default "subject:"
+color header brightred default "to:"
+color header brightred default "cc:"
+color header brightred default "list-id:"
+
+color header brightyellow default "date:"
+color header brightyellow default "received:"
+
+color header brightgreen default "from:"
+color header brightgreen default "reply-to:"
+color header brightgreen default "mail-reply-to:"
+color header brightgreen default "mail-followup-to:"
+color header brightgreen default "organization:"
+color header brightgreen default "user-agent:"
+
+color body brightgreen default "(http|https|ftp|news|telnet|finger)://[^ \"\t\r\n]*"
+color body brightgreen default "mailto:[-a-z_0-9.]+@[-a-z_0-9.]+"
diff --git a/mutt/.mutt/muttrc b/mutt/.mutt/muttrc
new file mode 100644 (file)
index 0000000..4256f0e
--- /dev/null
@@ -0,0 +1,92 @@
+set folder = "~/mail"
+set mbox_type = maildir
+# set mbox_type = mbox
+set spoolfile = =mbox
+set record = =sent-`date "+%y-%m"`
+set postponed = =postponed
+set certificate_file = ~/.mutt/certificates
+set net_inc = 1
+set edit_headers = yes
+set charset = "utf-8"
+set pager_stop = yes
+set sort = "threads"
+set sort_aux = "last-date-received"
+set pager_index_lines = 6
+set timeout = 60
+set rfc2047_parameters
+set reply_to = yes
+set fcc_clear = yes
+set signature = ~/.signature
+set hostname = "stargrave.org"
+set realname = "Sergey Matveev"
+set query_command="mu cfind --format=mutt-ab '%s'"
+set forward_format = "Fwd: %s"
+set indent_string = ">"
+set attribution = "*** %n [%(%Y-%m-%d %H:%M)]:"
+set index_format = "%4C %Z[%1H] %{%m-%d} [%N] %-15.15L (%?l?%4l&%4c?)%?M?[#%02M]?%?Y?[%Y]? %s"
+set pipe_decode = yes
+set crypt_protected_headers_write = yes
+
+macro index <F8> "<shell-escape>mu find --clearlinks --format=links --linksdir=~/mail/search " "mu find"
+macro index <F9> "<change-folder-readonly>~/mail/search<enter>" "mu find results"
+
+macro index <F5> ":set mbox_type = mbox\n" "mbox mailbox type"
+
+macro pager \cu |urlview\n
+macro index \cn "<next-unread-mailbox><enter>" "Go to new mail"
+alternative_order text/plain text/enriched text/html
+auto_view text/html
+unignore \
+    Mail-Followup-To \
+    List-Id \
+    Reply-To \
+    Mail-Reply-To \
+    Organization \
+    OpenPGP \
+    Return-Path \
+    X-Mailer \
+    User-Agent \
+    Message-Id
+
+macro index <F2> ":source ~/.mutt/accounts/stargrave.org\n" "Profile: stargrave.org"
+macro index <F3> ":source ~/.mutt/accounts/stcnet.ru\n" "Profile: stcnet.ru"
+macro index <F4> ":source ~/.mutt/accounts/riseup.net\n" "Profile: riseup.net"
+
+alternates stargrave@stargrave.org junk@stargrave.org
+mailboxes =mbox \
+    =rss \
+    =monitoring \
+    =arbeit \
+    =crypto \
+    =debian \
+    =fsf \
+    =gnunet \
+    =gnupg \
+    =golang \
+    =spam \
+    =stcnet \
+    =suckless \
+    =fbsd \
+    =tortalk \
+    =vim \
+    =zfs \
+    =zsh \
+    =sent-19-07 \
+    =sent-19-08 \
+    =back-19-07 \
+    =back-19-08
+source ~/.mutt/accounts/stargrave.org
+
+# set mime_forward = yes
+# set mime_forward_rest = yes
+
+fcc-hook .* $record
+
+folder-hook . "set sort = threads; push <collapse-all>"
+
+folder-hook =rss "set sort = date"
+folder-hook =monitoring "set sort = date"
+folder-hook =sent-19-07 "set sort = date-sent"
+folder-hook =sent-19-08 "set sort = date-sent"
+
+set print_command="cat > /tmp/mail-printed"
diff --git a/mutt/.muttrc b/mutt/.muttrc
new file mode 100644 (file)
index 0000000..cee08fb
--- /dev/null
@@ -0,0 +1,5 @@
+set hostname = "stargrave.org"
+source ~/.mutt/muttrc
+source ~/.mutt/color
+source ~/.mutt/lists
+source /usr/local/share/doc/mutt/samples/gpg.rc
diff --git a/nethack/.nethackrc b/nethack/.nethackrc
new file mode 100644 (file)
index 0000000..78b26af
--- /dev/null
@@ -0,0 +1,2 @@
+OPTIONS=windowtype:tty,color,boulder:0,pickup_types:$,!autopickup,showexp,fixinv,sortpack,hilite_pet,safe_pet,verbose,confirm
+WIZKIT=/root/.wizkit
diff --git a/nethack/.wizkit_ b/nethack/.wizkit_
new file mode 100644 (file)
index 0000000..e32a2e6
--- /dev/null
@@ -0,0 +1,44 @@
+30 blessed potions of gain level
+50 blessed potions of full healing
+50 blessed potions of gain energy
+50 blessed potions of gain ability
+
+blessed tin of blue dragon meat # shock resistance
+blessed tin of black dragon meat # disintegration resistance
+blessed tin of green dragon meat # poison resistance
+blessed tin of red dragon meat # fire resistance
+blessed tin of white dragon meat # cold resistance
+blessed tin of orange dragon meat # sleep resistance
+blessed tin of yellow dragon meat # acid resistance
+blessed tin of floating eye meat
+#blessed potion of invisibility
+#blessed tin of stalker meat
+blessed tin of quantum mechanic meat # speed
+blessed +7 greased fireproof elven leather helm
+blessed +7 greased rustproof helm of brilliance
+blessed +7 greased rustproof helm of telepathy
+blessed +7 greased fireproof speed boots
+blessed +7 shield of reflection
+blessed +7 fireproof elven cloak
+blessed +7 fireproof oilskin cloak
+blessed +7 fireproof elven mithril-coat
+blessed +7 fireproof leather gloves
+blessed +7 rustproof gauntlets of power
+blessed +7 fireproof elven shield
+blessed +7 fireproof tshirt
+blessed +7 gray dragon scale mail
+blessed +7 silver dragon scale mail
+blessed fireproof ring of free action
+blessed ring of slow digestion
+blessed fireproof amulet of reflection
+blessed luckstone
+blessed towel
+blessed pair of lenses
+blessed +7 silver dagger
+
+levitation
+touchstone
+blessed bag of holding
+blessed oilskin sack
+robe
+blessed unicorn horn
diff --git a/pdb/.pdbrc b/pdb/.pdbrc
new file mode 100644 (file)
index 0000000..0328df4
--- /dev/null
@@ -0,0 +1,5 @@
+import os
+
+alias hare os.system('kill %d' % os.getpid())
+alias hare9 os.system('kill -9 %d' % os.getpid())
+alias pp1 import pyderasn ;; print(pyderasn.pprint(%1, oid_maps=(locals().get('OID_STR_TO_NAME', {}),)))
diff --git a/pip/.pip/pip.conf b/pip/.pip/pip.conf
new file mode 100644 (file)
index 0000000..340acee
--- /dev/null
@@ -0,0 +1,18 @@
+[global]
+disable-pip-version-check = yes
+default-timeout = 120
+timeout = 120
+trusted-host = irc.stmdev.ru pyshop.ci.srv.szd
+# index-servers = mein
+
+[install]
+no-binary = :all:
+cache-dir = /tmp/pip-cache
+
+index-url = http://pip:pip@pyshop.ci.srv.szd/simple/
+# index-url = http://stargrave:stargrave@localhost:8080/simple/
+
+# [mein]
+# username: stargrave
+# password: stargrave
+# repository: http://localhost:8080/simple/
diff --git a/psql/.psqlrc b/psql/.psqlrc
new file mode 100644 (file)
index 0000000..fc98007
--- /dev/null
@@ -0,0 +1,8 @@
+CREATE OR REPLACE FUNCTION ppj(jsonb) RETURNS TEXT AS $$
+    SELECT jsonb_pretty($1);
+$$ LANGUAGE SQL;
+CREATE OR REPLACE FUNCTION ppj(jsonb[]) RETURNS SETOF TEXT AS $$
+    SELECT jsonb_pretty(unnest) FROM (SELECT unnest($1)) AS dummy;
+$$ LANGUAGE SQL;
+
+\timing on
diff --git a/readline/.inputrc b/readline/.inputrc
new file mode 100644 (file)
index 0000000..5c05974
--- /dev/null
@@ -0,0 +1,5 @@
+"\e[A": history-search-backward
+"\e[B": history-search-forward
+"\ 2": backward-word
+"\ 6": forward-word
+set editing-mode vi
diff --git a/tmux/.tmux.conf b/tmux/.tmux.conf
new file mode 100644 (file)
index 0000000..c59768c
--- /dev/null
@@ -0,0 +1,35 @@
+set-option -g mode-keys vi
+set-option -g base-index 1
+set-option -g default-terminal "screen-256color"
+set-option -g escape-time 50
+set-option -g repeat-time 0
+set-option -g history-limit 20000
+
+set-option -g prefix C-a
+unbind-key C-b
+bind-key C-a send-prefix
+
+bind-key -n C-PgUp previous-window
+bind-key -n C-PgDn next-window
+bind-key -n S-PgUp copy-mode -u
+bind '"' split-window -c "#{pane_current_path}"
+bind % split-window -h -c "#{pane_current_path}"
+bind c new-window -c "#{pane_current_path}"
+
+set-option -g status-style "bg=black,fg=white"
+set-option -g status-left "#S>"
+set-option -g status-right "#T"
+set-option -g status-justify centre
+
+set-window-option -g automatic-rename on
+set-window-option -g window-status-format "#I:#W:#T#F"
+set-window-option -g window-status-bg green
+set-window-option -g window-status-fg black
+set-window-option -g window-status-current-format "#I:#W#F"
+set-window-option -g window-status-current-bg red
+set-window-option -g window-status-last-bg cyan
+
+bind-key u capture-pane -J \; save-buffer /tmp/tmux-buffer \; split-window 'urlview /tmp/tmux-buffer' \; delete-buffer
+bind-key y capture-pane -J \; save-buffer /tmp/tmux-buffer \; split-window 'vim /tmp/tmux-buffer' \; delete-buffer
+bind-key b set-option status
+unbind-key L
diff --git a/urlview/.urlview b/urlview/.urlview
new file mode 100644 (file)
index 0000000..bde25e7
--- /dev/null
@@ -0,0 +1 @@
+COMMAND ~/xombrero/bin/xombrero -n %s
diff --git a/vim/.vim/ftplugin/go/autos.vim b/vim/.vim/ftplugin/go/autos.vim
new file mode 100644 (file)
index 0000000..7bc2dba
--- /dev/null
@@ -0,0 +1,2 @@
+let @e = "^iif err = \eA; err != nil {\e"
+let @r = "oif err != nil {\r}\eO "
diff --git a/vim/.vim/ftplugin/go/fmt.vim b/vim/.vim/ftplugin/go/fmt.vim
new file mode 100644 (file)
index 0000000..359545b
--- /dev/null
@@ -0,0 +1,69 @@
+" Copyright 2011 The Go Authors. All rights reserved.
+" Use of this source code is governed by a BSD-style
+" license that can be found in the LICENSE file.
+"
+" fmt.vim: Vim command to format Go files with gofmt.
+"
+" This filetype plugin add a new commands for go buffers:
+"
+"   :Fmt
+"
+"       Filter the current Go buffer through gofmt.
+"       It tries to preserve cursor position and avoids
+"       replacing the buffer with stderr output.
+"
+" Options:
+"
+"   g:go_fmt_commands [default=1]
+"
+"       Flag to indicate whether to enable the commands listed above.
+"
+"   g:gofmt_command [default="gofmt"]
+"
+"       Flag naming the gofmt executable to use.
+"
+if exists("b:did_ftplugin_go_fmt")
+    finish
+endif
+
+if !exists("g:go_fmt_commands")
+    let g:go_fmt_commands = 1
+endif
+
+if !exists("g:gofmt_command")
+    let g:gofmt_command = "gofmt"
+endif
+
+if g:go_fmt_commands
+    command! -buffer Fmt call s:GoFormat()
+endif
+
+function! s:GoFormat()
+    let view = winsaveview()
+    silent execute "%!" . g:gofmt_command
+    if v:shell_error
+        let errors = []
+        for line in getline(1, line('$'))
+            let tokens = matchlist(line, '^\(.\{-}\):\(\d\+\):\(\d\+\)\s*\(.*\)')
+            if !empty(tokens)
+                call add(errors, {"filename": @%,
+                                 \"lnum":     tokens[2],
+                                 \"col":      tokens[3],
+                                 \"text":     tokens[4]})
+            endif
+        endfor
+        if empty(errors)
+            % | " Couldn't detect gofmt error format, output errors
+        endif
+        undo
+        if !empty(errors)
+            call setqflist(errors, 'r')
+        endif
+        echohl Error | echomsg "Gofmt returned error" | echohl None
+    endif
+    call winrestview(view)
+endfunction
+
+let b:did_ftplugin_go_fmt = 1
+
+" vim:ts=4:sw=4:et
diff --git a/vim/.vim/ftplugin/go/motion.vim b/vim/.vim/ftplugin/go/motion.vim
new file mode 100644 (file)
index 0000000..041347c
--- /dev/null
@@ -0,0 +1,18 @@
+nnoremap <silent> <buffer> ]] :call <SID>Go_jump('/^\(func\\|type\)')<cr>
+nnoremap <silent> <buffer> [[ :call <SID>Go_jump('?^\(func\\|type\)')<cr>
+nnoremap <silent> <buffer> ]m :call <SID>Go_jump('/^\s*\(func\\|type\)')<cr>
+nnoremap <silent> <buffer> [m :call <SID>Go_jump('?^\s*\(func\\|type\)')<cr>
+
+if exists('*<SID>Go_jump') | finish | endif
+
+fun! <SID>Go_jump(motion) range
+    let cnt = v:count1
+    let save = @/    " save last search pattern
+    mark '
+    while cnt > 0
+        silent! exe a:motion
+        let cnt = cnt - 1
+    endwhile
+    call histdel('/', -1)
+    let @/ = save    " restore last search pattern
+endfun
diff --git a/vim/.vim/ftplugin/python/autos.vim b/vim/.vim/ftplugin/python/autos.vim
new file mode 100644 (file)
index 0000000..d837bde
--- /dev/null
@@ -0,0 +1,14 @@
+iabbrev #u # coding: utf-8
+iabbrev tt # type: 
+iabbrev tti # type: ignore
+iabbrev trace import pdb ; pdb.set_trace()<CR>pass
+iabbrev itrace import ipdb ; ipdb.set_trace()<CR>pass
+iabbrev embed import code ; code.interact(local=locals())
+iabbrev iembed from IPython import embed ; embed()
+iabbrev kargs *args, **kwargs
+iabbrev pyldis # pylint: disable=
+iabbrev deff def () -> None:<ESC>F(i
+iabbrev """ """<ESC>o"<ESC>2i"<ESC>kA
+nmap <leader>ss :set lazyredraw<CR>vip:sort u<CR>:'<,'>sort i<CR>:set nolazyredraw<CR>
+let @b = ">gvctry:\e<<oexcept Exception as err:\rimport pdb ; pdb.set_trace()\rpass\e>>k>>kP"
+let @n = "ddV/except.*:\r<n3dd"
diff --git a/vim/.vim/ftplugin/python/importcompl.vim b/vim/.vim/ftplugin/python/importcompl.vim
new file mode 100644 (file)
index 0000000..479e11f
--- /dev/null
@@ -0,0 +1,75 @@
+" Python imports insert completion
+" Maintainer: Sergey Matveev <stargrave@stargrave.org>
+" License: GNU General Public License version 3 of the License or later
+"
+" This plugin is intended for quick import-line insertion.
+" For example you have got "from foo.bar import Baz" import somewhere in
+" your Git-versioned code. In another file you can write "Baz" and then
+" press <F3> in insert mode. Completion menu will show you suggestions
+" of all import lines from your code containing Baz import.
+"
+" If you have Pylint or Pyflakes output in quickfix window, containing
+" unfedined variables errors, then you can you :call AllImportCompl()
+" function. It will go through the quickfix list and find all possible
+" imports, sort them and insert under current cursor position.
+"
+" It uses external "git grep" call and assumes that "canonical" Python
+" import format is used (single import per line).
+" You can use http://git.stargrave.org/cgit.cgi/pyimportcan.git/tree/pyimportcan.pl
+" utility to convert existing imports to that format.
+
+let s:git_grep_cmd = "git grep -H --line-number --ignore-case --no-color "
+
+if exists('g:loaded_importcompl') | finish | endif
+let g:loaded_importcompl = 1
+
+function! SortByLen(s1, s2)
+    if len(a:s1) == len(a:s2) | return a:s1 > a:s2 | endif
+    return 1 ? len(a:s1) > len(a:s2) : -1
+endfunction
+
+function! ImportCompl()
+    normal diw
+    let output = system(s:git_grep_cmd . '"^from .* import .*' . @" . '" -- "*.py" "**/*.py"')
+    let suggestions = []
+    for line in split(output, "\n")
+        if stridx(line, "unused-import") != -1 | continue | endif
+        let m = matchlist(line, '^.*:\d\+:\(.*\)$')
+        if len(m) == 0 | continue | endif
+        call insert(suggestions, m[1])
+    endfor
+    call sort(suggestions, "SortByLen")
+    call uniq(suggestions)
+    call reverse(suggestions)
+    call complete(col('.'), suggestions)
+    return ''
+endfunction
+
+inoremap <F3> <C-R>=ImportCompl()<CR>
+
+function! AllImportCompl()
+    let output = system(s:git_grep_cmd . '"^from .* import" -- "*.py" "**/*.py"')
+    let imports = {}
+    for line in split(output, "\n")
+        if stridx(line, "unused-import") != -1 | continue | endif
+        for regexp in [
+            \'^.*:\d\+:\(from .* import \(\w\+\).*\)$',
+            \'^.*:\d\+:\(from .* import \w\+ as \(\w\+\).*\)$',
+        \]
+            let m = matchlist(line, regexp)
+            if len(m) == 0 | break | endif
+            let imports[m[2]] = m[1]
+        endfor
+    endfor
+    let lines = getloclist(winnr())
+    if len(lines) == 0 | let lines = getqflist() | endif
+    let result = []
+    for line in lines
+        let m = matchlist(line.text, '\(E0602\|F821\).*' . "'" . '\(\w\+\)' . "'$")
+        if len(m) == 0 || !has_key(imports, m[2]) | continue | endif
+        call insert(result, imports[m[2]])
+    endfor
+    call sort(result, "i")
+    call uniq(result)
+    call append(".", result)
+endfunction
diff --git a/vim/.vim/ftplugin/python/pep8.vim b/vim/.vim/ftplugin/python/pep8.vim
new file mode 100644 (file)
index 0000000..5570eb6
--- /dev/null
@@ -0,0 +1,21 @@
+" PEP8 caller
+" Maintainer: Sergey Matveev <stargrave@stargrave.org>
+" License: GNU General Public License version 3 of the License or later
+"
+" Call pycodestyle utility and fill quickfix window with its results.
+
+sign define P8 text=P8 texthl=Error
+function! s:pep8()
+    set makeprg=pycodestyle\ --select=E,W\ %
+    silent make
+    sign unplace *
+    let l:id = 1
+    for item in getqflist()
+        execute(':sign place '.l:id.' name=P8 line='.l:item.lnum.' buffer='.l:item.bufnr)
+        let l:id = l:id + 2
+    endfor
+    redraw!
+    copen
+endfunction
+
+map <F5> :call <SID>pep8()<CR>
diff --git a/vim/.vim/ftplugin/python/pylint.vim b/vim/.vim/ftplugin/python/pylint.vim
new file mode 100644 (file)
index 0000000..4a61ee3
--- /dev/null
@@ -0,0 +1,98 @@
+" Asynchronous pylint utility call
+" Maintainer: Sergey Matveev <stargrave@stargrave.org>
+" License: GNU General Public License version 3 of the License or later
+"
+" This plugin allows you to asynchronously call pylint.
+"
+" * Add %{LintStatus()} to your statusline to see if pylint is running
+" * Press <F6> to start pylint on current file
+" * Press <S-F6> to open quickfix window with messages from pylint
+" * All lines with corresponding pylint existing warning will be highlighted
+" * If no warning and errors occurred, "pylint is clean" message will be shown
+" * If existing quickfix window is found, then it won't be overwritten.
+"   Start pylint manually (<F6>) to force its filling
+" * After Python file is saved, pylint is automatically started
+
+if exists('g:loaded_pylint') | finish | endif
+let g:loaded_pylint = 1
+
+function! LintStatus()
+    if exists("b:lint_job") && job_status(b:lint_job) == "run" | return "LN" | endif
+    return ""
+endfunction
+
+function! s:qffill(ch)
+    let msgs = []
+    while ch_status(a:ch) == 'buffered'
+        let msgs = add(msgs, ch_read(a:ch))
+    endwhile
+    cgetexpr msgs
+endfunction
+
+sign define LN text=LN texthl=Error
+
+function! PylintFinish(ch)
+    let l:errorformat_bak = &errorformat
+    set errorformat=%f:%l:\ [%t]%m,%f:%l:%m
+    call s:qffill(a:ch)
+    let &errorformat=l:errorformat_bak
+    sign unplace *
+    let l:id = 2
+    for item in getqflist()
+        if item.lnum == 0 | continue | endif
+        execute(':sign place '.l:id.' name=LN line='.l:item.lnum.' buffer='.l:item.bufnr)
+        let l:id = l:id + 2
+    endfor
+    redraw!
+    if l:id == 2
+        echohl MoreMsg | echomsg "pylint is clean" | echohl None
+        cclose
+    endif
+endfunction
+
+function! PylintStart()
+    if exists("g:pylint_disable") || (exists("b:lint_job") && job_status(b:lint_job) == "run")
+        return
+    endif
+    let ignores = [
+        \"locally-disabled",
+        \"no-init",
+        \"no-self-use",
+        \"too-few-public-methods",
+        \"missing-docstring",
+        \"too-many-instance-attributes",
+        \"invalid-name",
+        \"too-many-arguments",
+        \"too-many-locals",
+        \"too-many-public-methods",
+        \"no-value-for-parameter",
+    \]
+    if !exists("g:pylint_linter") | let g:pylint_linter = "flake8" | endif
+    if g:pylint_linter == "flake8"
+        let cmdline = [
+            \"flake8",
+            \"--ignore=E501",
+            \"--format=%(path)s:%(row)d: [%(code)s] %(text)s",
+            \"--max-line-length=90",
+            \expand("%p")
+        \]
+    elseif g:pylint_linter == "pylint"
+        let cmdline = [
+            \"pylint",
+            \"--jobs=4",
+            \"--reports=n",
+            \"--msg-template={path}:{line}: [{msg_id}({symbol}), {obj}] {msg}",
+            \"--disable=" . join(ignores, ","),
+            \"--persistent=n",
+            \expand("%p")
+        \]
+    else
+        echohl WarningMsg | echomsg "Unknown linter specified" | echohl None
+        return
+    endif
+    let b:lint_job = job_start(cmdline, {"in_mode": "nl",  "err_io": "null", "close_cb": "PylintFinish"})
+endfunction()
+
+map <F6> :unlet! g:pylint_disable<CR>:call PylintStart()<CR>
+map \e[17;2~ :redraw!<CR>:copen<CR>
+autocmd BufWritePost *.py call PylintStart()
diff --git a/vim/.vim/ftplugin/python/testname.vim b/vim/.vim/ftplugin/python/testname.vim
new file mode 100644 (file)
index 0000000..e388f1b
--- /dev/null
@@ -0,0 +1,24 @@
+" Nose-compatible test name preparer
+" Maintainer: Sergey Matveev <stargrave@stargrave.org>
+" License: GNU General Public License version 3 of the License or later
+"
+" When standing inside TestCase's test method, type <leader>t and full
+" Python (your.project.tests:TestCaseName.test_method_name) path will be
+" copied to clipboard ("*) register.
+
+function! TestName()
+    normal mm
+    normal ?.*\s*def .*[Tt]est\r
+    normal ^f(Byw
+    let postfix = @"
+    normal [[f(Byw
+    let postfix = @" . "." . postfix
+    normal `m
+    let base = join([""] + split(getcwd(), "/")[:-1], "/")
+    let prefix = substitute(expand("%:p:r")[len(base)+1:], "/", ".", "g")
+    let name = prefix . ":" . postfix
+    let @* = name
+    echomsg name
+endfunction
+
+nmap <leader>t :call TestName()<CR>
diff --git a/vim/.vim/ftplugin/python/unused_remover.vim b/vim/.vim/ftplugin/python/unused_remover.vim
new file mode 100644 (file)
index 0000000..5e6b1ba
--- /dev/null
@@ -0,0 +1,4 @@
+function! UnusedImportsRemover()
+    call setqflist(filter(getqflist(), "stridx(v:val.text, \"unused-import\") != -1 || stridx(v:val.text, \"imported but unused\") != -1"))
+    cdo d
+endfunction
diff --git a/vim/.vim/plugin/chnglstnav.vim b/vim/.vim/plugin/chnglstnav.vim
new file mode 100644 (file)
index 0000000..648fafb
--- /dev/null
@@ -0,0 +1,7 @@
+function! s:Chng(...)
+    if a:0 == 0 | return | endif
+    execute "normal " . a:1 . (a:1 > 0 ? "g;" : "g,")
+endfunction
+
+command! -nargs=? Chng call s:Chng(<args>)
+nmap <End> :changes<CR>:Chng<Space>
diff --git a/vim/.vim/plugin/ctags.vim b/vim/.vim/plugin/ctags.vim
new file mode 100644 (file)
index 0000000..4d98eb8
--- /dev/null
@@ -0,0 +1,28 @@
+" Exuberant Ctags creator
+" Maintainer: Sergey Matveev <stargrave@stargrave.org>
+" License: GNU General Public License version 3 of the License or later
+"
+" Create "tags" file in your project's root first.
+" Then :Ctags LANG to fill it.
+
+function! s:ctags(lang, verbose)
+    let dst = tagfiles()[0]
+    let src = "/" . join(split(dst, "/")[:-2], "/")
+    if dst[0] != "/"
+        let dst = getcwd() . "/tags"
+        let src = getcwd()
+    endif
+    let cmdline = [
+        \'uctags',
+        \'--languages=' . a:lang,
+        \'--python-kinds=-i',
+        \'--recurse',
+    \]
+    if a:verbose == v:true | let cmdline += ['--verbose'] | endif
+    let cmdline += ['-f', dst, src]
+    execute "!" . join(cmdline, " ")
+    if a:verbose != v:true | redraw! | endif
+endfunction
+
+command! -nargs=1 Ctags silent call s:ctags(<f-args>, v:false)
+command! -nargs=1 Ctagsv silent call s:ctags(<f-args>, v:true)
diff --git a/vim/.vim/plugin/defsplit.vim b/vim/.vim/plugin/defsplit.vim
new file mode 100644 (file)
index 0000000..f995c8a
--- /dev/null
@@ -0,0 +1,103 @@
+" Python function call splitter
+" Maintainer: Sergey Matveev <stargrave@stargrave.org>
+" License: GNU General Public License version 3 of the License or later
+"
+" This plugin splits Python function call on several lines.
+"
+"   def foobar(self, foo: str, bar: Some[thing, too]) -> None:
+" to
+"   def foobar(
+"           self,
+"           foo: str,
+"           bar: Some[thing, too],
+"   ) -> None:
+"
+"   foo(bar, baz)[0]
+" to
+"   foo(
+"       bar,
+"       baz,
+"   )[0]
+"
+" You can un-split it using :Undefsplit command on the line where
+" splitting starts.
+"
+" :Defsplit has optional argument specifying how many opening round
+" parenthesis must be skipped.
+" :Defsplit 1 on foo(baz(baz(...))) produces
+"    foo(baz(
+"        baz(...),
+"    ))
+"
+" Also there is :Brsplit command behaving similarly, but it splits other
+" types of brackets: "{}", "[]".
+
+if exists("g:loaded_defsplit") | finish | endif
+let g:loaded_defsplit = 1
+if !exists("g:defsplit_shift") | let g:defsplit_shift = "    " | endif
+
+function! s:bracket_find(brs_allowable, line, offset)
+    let possible = []
+    for bracket in a:brs_allowable
+        let found = stridx(a:line, bracket, a:offset)
+        if found != -1 | let possible += [found] | endif
+    endfor
+    return min(possible)
+endfunction
+
+function! s:defsplit(brs_allowable, single_line_comma, ...)
+    if a:0 == 0 | let skip = 0 | else | let skip = str2nr(a:1) | endif
+    let shift = g:defsplit_shift
+    let line = getline(".")
+    for i in range(len(line))
+        if line[i] != g:defsplit_shift[0]
+            let prfx = strpart(line, 0, i)
+            if line[i : i+3] ==# "def " ||
+                \line[i : i+5] ==# "class " ||
+                \line[i : i+9] ==# "async def "
+                let shift .= shift
+            endif
+            break
+        endif
+    endfor
+    let brs = {"(": ")", "[": "]", "{": "}"}
+    let brfirst = s:bracket_find(a:brs_allowable, line, 0)
+    let brlast = strridx(line, brs[line[brfirst]])
+    while skip > 0
+        let brfirst = s:bracket_find(a:brs_allowable, line, brfirst + 1)
+        let brlast = strridx(line, brs[line[brfirst]], brlast - 1)
+        let skip -= 1
+    endwhile
+    let [curly, round, squar, outbuf] = [0, 0, 0, ""]
+    let ready = [strpart(line, 0, brfirst + 1)]
+    let trailing_comma = 1
+    for c in split(line[brfirst + 1 : brlast-1], '\zs')
+        if c ==# "*" | let trailing_comma = 0 | endif
+        if outbuf ==# "" && c ==# " " | continue | endif
+        let outbuf .= c
+        if c ==# "," && !curly && !round && !squar
+            let ready = add(ready, prfx . shift . outbuf)
+            let outbuf = ""
+        elseif c ==# "[" | let squar += 1
+        elseif c ==# "]" | let squar -= 1
+        elseif c ==# "(" | let round += 1
+        elseif c ==# ")" | let round -= 1
+        elseif c ==# "{" | let curly += 1
+        elseif c ==# "}" | let curly -= 1
+        endif
+    endfor
+    if trailing_comma && !(a:single_line_comma == v:true && len(ready) == 1)
+        let outbuf = outbuf . ","
+    endif
+    let ready = add(ready, prfx . shift . outbuf)
+    let ready = add(ready, prfx . strpart(line, brlast))
+    call append(line("."), ready)
+    normal "_dd
+endfunction
+
+command! -nargs=? Defsplit call s:defsplit(["("], v:false, <f-args>)
+command! -nargs=? Brsplit call s:defsplit(["(", "[", "{"], v:false, <f-args>)
+command! -nargs=? Defsplits call s:defsplit(["("], v:true, <f-args>)
+command! -nargs=? Brsplits call s:defsplit(["(", "[", "{"], v:true, <f-args>)
+
+command! Undefsplit normal ^v%$J:keepp s/^\(.*\)\([([{]\) \(.*[^,]\),\?\([)\]}]\)\(.*\)$/\1\2\3\4\5<CR>:keepp s/, \?\([)\]}]\+\)$/\1/e<CR>:<CR>
diff --git a/vim/.vim/plugin/file_line.vim b/vim/.vim/plugin/file_line.vim
new file mode 100644 (file)
index 0000000..e5a6a92
--- /dev/null
@@ -0,0 +1,16 @@
+" Simplified version of http://www.vim.org/scripts/script.php?script_id=2184
+" that does not replace current window
+
+function! s:gotoline()
+    let names = matchlist(bufname("%"), '\(.\{-1,}\):\%(\(\d\+\)\%(:\(\d*\):\?\)\?\)\?$')
+    if empty(names) | return | endif
+    let file_name = names[1]
+    let line_num = names[2] == "" ? "0" : names[2]
+    let col_num = names[3] == "" ? "0" : names[3]
+    if !filereadable(file_name) | return | endif
+    exec "keepalt edit +" . line_num . " " . file_name
+    exec "normal! " . col_num . "|"
+endfunction
+
+autocmd! BufNewFile *:* nested call s:gotoline()
+autocmd! BufRead *:* nested call s:gotoline()
diff --git a/vim/.vim/plugin/ggrep.vim b/vim/.vim/plugin/ggrep.vim
new file mode 100644 (file)
index 0000000..657e7ea
--- /dev/null
@@ -0,0 +1,8 @@
+function! s:Vmg(pattern)
+    silent execute 'Ggrep "' . a:pattern . '"'
+    copen
+    redraw!
+    let g:pylint_disable=1
+endfunction
+
+command! -nargs=* -complete=file Vmg call s:Vmg(<q-args>)
diff --git a/vim/.vim/plugin/grep.vim b/vim/.vim/plugin/grep.vim
new file mode 100644 (file)
index 0000000..7154d2d
--- /dev/null
@@ -0,0 +1,10 @@
+function! s:Vim(pattern)
+    let ignorecase_bak=&ignorecase
+    set noignorecase
+    execute "vimgrep /" . a:pattern . "/ **/*"
+    copen
+    let &ignorecase=ignorecase_bak
+    let g:pylint_disable=1
+endfunction
+
+command! -nargs=* -complete=file Vim call s:Vim(<q-args>)
diff --git a/vim/.vim/plugin/killsig.vim b/vim/.vim/plugin/killsig.vim
new file mode 100644 (file)
index 0000000..d857425
--- /dev/null
@@ -0,0 +1,9 @@
+function! s:KillSignature()
+    call cursor(1, 1)
+    call search('^[>|] \?-- \?$')
+    if getpos(".")[1] != 1
+        normal d}
+    endif
+endfunction
+
+autocmd BufRead /tmp/mutt-* call s:KillSignature()
diff --git a/vim/.vim/plugin/pastemode.vim b/vim/.vim/plugin/pastemode.vim
new file mode 100644 (file)
index 0000000..d2dbd7e
--- /dev/null
@@ -0,0 +1,13 @@
+if &term =~ "screen.*"
+    let &t_ti = &t_ti . "\e[?2004h"
+    let &t_te = "\e[?2004l" . &t_te
+    function XTermPasteBegin(ret)
+        set pastetoggle=<Esc>[201~
+        set paste
+        return a:ret
+    endfunction
+    map <expr> <Esc>[200~ XTermPasteBegin("i")
+    imap <expr> <Esc>[200~ XTermPasteBegin("")
+    cmap <Esc>[200~ <nop>
+    cmap <Esc>[201~ <nop>
+endif
diff --git a/vim/.vim/plugin/vimrclocal.vim b/vim/.vim/plugin/vimrclocal.vim
new file mode 100644 (file)
index 0000000..18185e0
--- /dev/null
@@ -0,0 +1,3 @@
+if filereadable('.vimrc.local')
+    source .vimrc.local
+endif
diff --git a/vim/.vim/plugin/whereami.vim b/vim/.vim/plugin/whereami.vim
new file mode 100644 (file)
index 0000000..7136793
--- /dev/null
@@ -0,0 +1,7 @@
+function! WhereAmI()
+    let where = expand('%:p') . ":" . line('.')
+    let @* = where
+    echomsg where
+endfunction
+
+nmap <leader>w :call WhereAmI()<CR>
diff --git a/vim/.vim/plugin/zshfe.vim b/vim/.vim/plugin/zshfe.vim
new file mode 100644 (file)
index 0000000..fd5e5b1
--- /dev/null
@@ -0,0 +1,21 @@
+" zsh file completion caller
+" Maintainer: Sergey Matveev <stargrave@stargrave.org>
+" License: GNU General Public License version 3 of the License or later
+
+if exists("g:loaded_zshfe") | finish | endif
+let g:loaded_zshfe = 1
+if !exists("g:zshfe_path") | let g:zshfe_path=expand("~/.vim/plugin/zshfe.zsh") | endif
+
+function! s:zshfe(query, opencmd)
+    silent let result = systemlist(g:zshfe_path . " " . a:query)
+    if len(result) == 0 | return | endif
+    exec a:opencmd . " " . result[0][:-2]
+endfunction
+
+command! -nargs=1 Fe call s:zshfe(<f-args>, "edit")
+command! -nargs=1 Fsp call s:zshfe(<f-args>, "split")
+command! -nargs=1 Fvs call s:zshfe(<f-args>, "vsplit")
+
+nmap <Leader>e :Fe 
+nmap <Leader><space> :Fsp 
+nmap <Leader>v :Fvs 
diff --git a/vim/.vim/plugin/zshfe.zsh b/vim/.vim/plugin/zshfe.zsh
new file mode 100755 (executable)
index 0000000..0dfcd68
--- /dev/null
@@ -0,0 +1,8 @@
+#!/usr/bin/env zsh
+
+set -e
+zmodload zsh/zpty
+zpty zshfe zsh
+zpty -w zshfe "print ZSHFE $*"$'\t EFHSZ\nexit\n'
+zpty -r zshfe zshfe "*exit"
+echo "$zshfe" | sed -n "s/^ZSHFE \(.*\) EFHSZ/\1/p"
diff --git a/vim/.vimrc b/vim/.vimrc
new file mode 100644 (file)
index 0000000..4ad145e
--- /dev/null
@@ -0,0 +1,181 @@
+" vim: foldmethod=marker:foldlevel=0
+
+set t_Co=16
+syntax on
+filetype on
+filetype plugin on
+set nocompatible
+set encoding=utf-8
+"set t_kD=\7f
+set mouse="" " if Vim is compiled with mouse support
+set nomodeline
+
+set viminfo='100,<50,s10,f1,%,n~/secure/vim/info
+set viewdir=~/secure/vim/view
+set history=128
+set directory=~/secure/vim/tmp
+set undodir=~/secure/vim/undo
+set undofile
+
+set autoindent
+set tabstop=4
+set shiftwidth=4
+set smarttab
+set expandtab
+set nojoinspaces
+set scrolloff=2
+set backspace=indent,eol
+set shortmess=aoOtI
+set highlight-=v:Visual
+set highlight+=vr
+set cpoptions+=$
+set showcmd
+set showmatch
+set listchars=trail:·,tab:→→,nbsp:% ",eol:¶
+set list
+
+set cursorline
+set cursorcolumn
+set colorcolumn=80
+highlight ExtraWhitespace ctermbg=green ctermfg=blue
+match ExtraWhitespace /^\s*$/
+
+set relativenumber
+set numberwidth=3
+
+set ignorecase
+set smartcase
+set hlsearch
+set incsearch
+set gdefault
+set wildmode=longest:list
+set tags=tags;,./;
+set wildignore=**/_build/*,**/tags,**/.git,**/.hypothesis
+
+map <F4> :nohlsearch<CR>:MarkClear<CR>
+
+" Folding {{{
+set foldmethod=indent
+set foldnestmax=9
+set foldenable
+set foldcolumn=1
+set foldlevel=0
+
+autocmd BufWinEnter * normal zR
+highlight FoldColumn ctermfg=cyan ctermbg=black
+highlight CursorColumn ctermfg=cyan ctermbg=red
+" }}}
+
+" Statusline {{{
+highlight User1 ctermbg=blue ctermfg=black
+highlight User2 ctermbg=green ctermfg=black
+highlight User3 ctermbg=yellow ctermfg=black
+highlight User4 ctermbg=red ctermfg=black
+set laststatus=2
+set statusline=%n\|%F%m%r%h%w%q\ %=
+set statusline+=%1*%Y[%{strlen(&fenc)?&fenc:&enc},%{&ff}]
+set statusline+=%2*[%l/%L]
+set statusline+=%3*[%c%V:0x%B]
+set statusline+=%4*%{LintStatus()}
+set statusline+=%*\ %P
+
+function! LintStatus() " it is overrided in ftplugin/python/pylint.vim
+    return ""
+endfunction
+" }}}
+
+" View saving {{{
+autocmd BufWinLeave *.* mkview
+autocmd BufWinEnter *.* silent loadview
+" }}}
+
+" Windows related {{{
+noremap <C-j> <C-w>j
+noremap <C-k> <C-w>k
+noremap <C-l> <C-w>l
+noremap <C-h> <C-w>h
+nmap <leader>- <C-w>\|<C-w>_
+nmap <leader>= <C-w>=
+nmap <Del> :close<CR>
+autocmd VimResized * wincmd =
+" }}}
+
+" Tmux window naming {{{
+set titleold = ""
+set title
+" }}}
+
+" Fugitive {{{
+let g:fugitive_git_executable = "LANG=en.UTF-8 git"
+nmap <F7> "cyiw:execute "Gvsplit " . @c<CR>zR
+nmap <F9> :diffupdate<CR>:syntax off<CR>:syntax on<CR>
+" }}}
+
+" *-lists indentation and formatting {{{
+set comments-=mb:*
+set formatlistpat=^\\s*\\*\ \\s*
+set formatoptions+=n
+" }}}
+
+autocmd BufEnter * let &titlestring = expand("%:t")
+autocmd BufRead /tmp/mutt-* setlocal textwidth=72
+autocmd BufRead,BufNewFile *.pyi setlocal filetype=python
+autocmd BufRead,BufNewFile *.go setlocal noexpandtab
+autocmd BufRead,BufNewFile *.go let g:defsplit_shift=" "
+autocmd BufNewFile,BufRead *.tex abbreviate framedo \begin{frame}<CR>\frametitle{TODO}<CR>\end{frame}<ESC>k>>wwlcw
+autocmd BufNewFile,BufRead *.tex abbreviate itemdo \begin{itemize}<CR>\item <CR>\end{itemize}<ESC>k>>$a
+autocmd BufNewFile,BufRead *.tex abbreviate cnter \begin{center}<CR>\end{center}<ESC>k$o
+autocmd Filetype texinfo abbreviate \t @tab
+autocmd Filetype gitcommit setlocal textwidth=72
+autocmd BufRead /tmp/psql.edit* setlocal filetype=sql
+autocmd Filetype yaml setlocal shiftwidth=2
+
+set keywordprg=
+
+let g:netrw_banner = 0
+let g:netrw_bufsettings = "noma nomod nowrap ro nobl"
+
+" Often typos
+map q: :
+command! W w
+
+nmap <space> f<space>
+vmap <space> I<space><ESC>gv
+nmap _ f_l
+
+nmap <leader>] "*yiw
+nmap <leader>p "_diwP
+nmap <leader>o :let @*=expand("%:p")<CR>
+
+nmap ]q :cnext<CR>
+nmap [q :cprev<CR>
+
+nnoremap <leader>d "_d
+vnoremap <leader>d "_d
+
+cmap <C-O> <S-Left>
+cmap <C-P> <S-Right>
+
+map Q gq
+cmap ][ '[,']
+nmap <Tab> :buffers<CR>:buffer<Space>
+nmap <silent> <Home> :registers<CR>
+nmap <leader>' yiwciw"<C-r>""<ESC>
+nmap <leader>h1 yypVr=o
+nmap <leader>72 :set textwidth=72
+nmap <leader>sc 024i-<ESC>a >8 <ESC>24a-<ESC>
+nmap <leader><C-]> :vertical winc ]<CR>
+nnoremap <C-P> <C-I>
+
+nmap <F1> :help!<CR>
+imap <F1> <C-O>:help!<CR>
+
+nmap <leader>sp :setlocal spell spelllang=ru,en_gb
+highlight SpellBad cterm=inverse ctermfg=red ctermbg=black
+
+iabbrev итд и т.д.
+iabbrev итп и т.п.
+
+command! E Explore
+command! Ch cd %:p:h
+command! -bar -nargs=? -bang Tmp :silent vnew<bang>|setlocal buftype=nofile bufhidden=hide noswapfile buflisted filetype=<args> modifiable
diff --git a/x/.Xresources b/x/.Xresources
new file mode 100644 (file)
index 0000000..1c29c57
--- /dev/null
@@ -0,0 +1,20 @@
+XTerm.termName: screen-256color
+XTerm.vt100.internalBorder: 0
+XTerm.vt100.faceName: Inconsolata LGC:pixelsize=16:antialias=false:autohint=true
+XTerm.vt100.foreground: gray90
+XTerm.vt100.background: black
+XTerm.vt100.cursorColor: white
+XTerm.vt100.colorITMode: true
+XTerm.vt100.colorIT: yellow
+XTerm.vt100.saveLines: 0
+XTerm.vt100.scrollBar: false
+XTerm.vt100.utf8: 1
+XTerm.vt100.eightBitInput: true
+XTerm.vt100.bellIsUrgent: true
+XTerm.vt100.charClass: 33-126:48
+XTerm.vt100.Translations: #override \
+    Shift<Key>Page_Up: string("\e[5;2~") \n \
+    <Key>Menu: string("\ 1") \n \
+    <Key>Super_R: string("\ 1") \n \
+    Shift Alt<Key>Insert: insert-selection(CLIPBOARD, CUT_BUFFER1)
+XTerm.vt100.trimSelection: true
diff --git a/x/.xinitrc b/x/.xinitrc
new file mode 100755 (executable)
index 0000000..cd44c9f
--- /dev/null
@@ -0,0 +1,14 @@
+#!/bin/zsh
+
+xsetroot -solid \#222222 &
+xset b off
+# xrdb ~/.Xresources
+while :; do
+    life=$(apm -l)
+    xsetroot -name "$life% $(date "+%Y-%m-%dT%H:%M:%S")"
+    sleep 20
+done &
+rm -f ~/.ssh/agent ; ssh-agent -a ~/.ssh/agent
+find ~/secure/vim -type f -atime +1 -delete
+~/bin/cleanup.sh
+exec $HOME/src/dwm-6.1/dwm
diff --git a/xombrero/.xombrero.conf b/xombrero/.xombrero.conf
new file mode 100644 (file)
index 0000000..cb64110
--- /dev/null
@@ -0,0 +1,406 @@
+##
+## GENERAL SETTINGS
+##
+
+#
+# The strategy for the config file is as follows:
+#
+# Boolean values are the opposite of the default and need to simply be
+# uncommented to alter the default.
+#
+# Text values *are* set to the default and in order to change them one must
+# uncomment the option *and* change the value.
+#
+
+# NOTE: browser_mode and gui_mode MUST be the first entries in this
+# file!
+
+# Normal browser operation (default).
+# browser_mode         = normal
+
+# Prevent tracking operation.
+browser_mode           = whitelist
+
+# Classic GUI (default).
+# gui_mode             = classic
+
+# Minimalistic GUI.
+gui_mode               = minimal
+
+home                   = file:///home/stargrave/.lynx_bookmarks.html
+download_dir           = ~/data
+download_mode          = start
+# download_notifications = 1
+# window_maximize      = 1
+# window_width         = 1024
+# window_height                = 768
+# enable_spell_checking        = 1
+# spell_check_languages        = en_US
+# default_zoom_level   = 1.0
+encoding               = UTF-8
+ssl_ca_file            = /usr/local/share/certs/ca-root-nss.crt
+# ssl_strict_certs     = 1
+enable_strict_transport = 1
+# ctrl_click_focus     = 1
+# append_next          = 0
+# save_global_history  = 1
+color_visited_uris     = 0
+guess_search           = 1
+# enable_autoscroll    = 1
+# session_autosave     = 1
+# history_autosave     = 1
+# autofocus_onload     = 1
+# single_instance      = 1
+enable_socket          = 1
+# enable_js_autorun    = 0
+auto_load_images       = 0
+enable_localstorage    = 1
+# userstyle            = /usr/local/share/xombrero/style.css
+# userstyle_global     = 1
+enable_favicon_entry   = 0
+enable_favicon_tabs    = 0
+# preload_strict_transport = 1
+# referer              = always
+referer                = same-domain
+warn_cert_changes      = 1
+enable_cache           = 0
+# js_auto_open_windows = 0
+
+# See http://www.xroxy.com/proxylist.php for a good list of open
+# proxies.
+#
+# polipo
+# http_proxy                   = http://127.0.0.1:8123
+#
+# tsocks
+# http_proxy                   = http://127.0.0.1:1080
+#
+http_proxy = socks5://localhost:4444/
+# If you only occasionally use a proxy
+http_proxy_starts_enabled      = 0
+
+# Search engines; uncomment one of these lines for you favorite search
+# engine.
+#
+# Google
+# search_string                = https://www.google.com/search?q=%s
+#
+# Yahoo
+# search_string                = http://search.yahoo.com/search?p=%s
+#
+# Start Page
+# search_string                = https://startpage.com/do/search?language=english_us&cat=web&query=%s
+#
+# DuckDuckGo
+search_string          = https://www.duckduckgo.com/?q=%s
+
+# External editor.
+# NOTE: The editor specified here must not fork into the background.
+#
+# Examples of editors:
+external_editor = st -e vim -f <file>
+# external_editor      = gvim -f <file>
+# external_editor      = xterm -geometry 177x58+0+0 -font -*-fixed-medium-r-*-*-15-*-*-*-*-*-iso8859-* -e vim -f <file>
+# external_editor      = emacsclient -c <file>
+
+# "default_script" points to a script executed by the run_script
+# command. The only argument passed to this script is the current URI.
+#
+# default_script       = ~/.xombrero/playflash.sh
+
+# "user_agent" can be set to just about anything, for a comprehensive
+# list see: http://www.useragentstring.com/pages/All/ . If more than one
+# "user_agent" is given, then xombrero will use them in a round-robin
+# fashion for each request.
+#
+#user_agent            = Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
+#user_agent            = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
+#user_agent            = Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.27 Safari/532.0
+#user_agent            = Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_1 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7C144 Safari/528.16
+#user_agent = Mozilla/5.0 (Windows NT 6.1; WOW64; rv:40.0) Gecko/20100101 Firefox/40.1
+#
+
+##
+## ALIASES
+##
+
+# Aliases are given in the following format:
+#
+#   alias = <alias>, <link>
+#
+# Where the link part might contain "%s", the "%s" will be substituted
+# with the user's input when the alias is expanded.
+
+# alias = s,     https://www.google.com/search?q=%s
+# alias = w,     https://secure.wikimedia.org/wikipedia/en/w/index.php?title=Special%3ASearch&search=%s
+# alias = ports,  http://openports.se/search.php?so=%s
+
+alias = we, https://en.wikipedia.org/wiki/%s
+alias = wr, https://ru.wikipedia.org/wiki/%s
+alias = google, https://www.google.com/search?q=%s
+
+##
+## COOKIE, JAVASCRIPT AND PLUGIN WHITE LISTS
+##
+
+# Add the domains you trust.
+
+# cookie_wl            = .conformal.com
+# cookie_wl            = .peereboom.us
+
+# js_wl                        = .conformal.com
+# js_wl                        = .peereboom.us
+
+# pl_wl                        = .conformal.com
+# pl_wl                        = .peereboom.us
+
+
+##
+## FORCE HTTPS FOR SITES
+##
+
+# Add the domains of sites that should be only accesed over HTTPS.
+
+# force_https          = .conformal.com
+
+
+##
+## MIME TYPES
+##
+
+# PDF, note that xpdf can't load a URI directly; use "@" in front of
+# mime_type to indicate to download the file first.
+
+# mime_type            = application/pdf,kpdf
+# mime_type            = @application/pdf,xpdf
+
+# Specific MIME type for video.
+# mime_type            = video/x-ms-wmv,mplayer
+# mime_type            = video/quicktime,mplayer
+
+# Default MIME type for video.
+# mime_type            = video/*,mplayer
+
+# Default MIME type for audio.
+# mime_type            = audio/*,vlc
+
+# Word documents.
+# mime_type            = application/msword,soffice
+
+# Ignoring flash can be done by using the donothing pseudo-binary.
+# mime_type            = application/x-shockwave-flash,donothing
+
+
+##
+## ADVANCED SETTINGS
+##
+
+# resource_dir         = /usr/local/share/xombrero/
+# refresh_interval     = 10
+# url_regex            = ^[[:blank:]]*[^[:blank:]]*([[:alnum:]-]+\.)+[[:alnum:]-][^[:blank:]]*[[:blank:]]*$
+# gnutls_priority_string = NORMAL:%COMPAT
+
+# NOTE: webkit 1.4.x overwrites these values!
+# max_host_connections = 5
+# max_connections      = 25
+
+
+##
+## ADVANCED GUI SETTINGS
+##
+
+# The following low-level GUI settings are set by the high-level setting
+# "gui_mode".
+
+# The settings for "gui_mode = classic" are as follows:
+
+# fancy_bar            = 1
+# show_tabs            = 1
+# tab_style            = normal
+# userstyle_global     = 0
+# show_url             = 1
+# show_statusbar       = 0
+# show_scrollbars      = 1
+
+# The settings for "gui_mode = minimal" are as follows:
+
+# fancy_bar            = 0
+# show_tabs            = 1
+# tab_style            = compact
+# show_url             = 0
+# show_statusbar       = 1
+# show_scrollbars      = 0
+
+# The following are settings shared between "classic" and "minimal"
+# "gui_mode":
+
+# statusbar_elems      = BP
+statusbar_elems        = BP|T
+# icon_size            = 2
+# cmd_font             = monospace normal 9
+# oops_font            = monospace normal 9
+# statusbar_font       = monospace normal 9
+# tabbar_font          = monospace normal 9
+
+
+##
+## ADVANCED COOKIE AND JAVASCRIPT SETTINGS
+##
+
+# The following low-level settings are set by the high-level setting
+# "browser_mode", and shouldn't be tweaked manually unless you know what
+# you are doing.
+
+# The settings for "browser_mode = normal" are as follows:
+
+# allow_volatile_cookies       = 0
+# cookie_policy                        = allow
+# cookies_enabled              = 1
+# enable_cookie_whitelist      = 0
+# read_only_cookies            = 0
+# save_rejected_cookies                = 0
+# session_timeout              = 3600
+# enable_scripts               = 1
+# enable_js_whitelist          = 0
+# enable_localstorage          = 1
+# enable_plugins               = 1
+# enable_plugin_whitelist      = 0
+# allow_insecure_content       = 1
+# allow_insecure_scripts       = 1
+# do_not_track                 = 0
+
+# The settings for "browser_mode = whitelist" are as follows:
+
+# allow_volatile_cookies       = 0
+cookie_policy                  = no3rdparty
+# cookies_enabled              = 1
+# enable_cookie_whitelist      = 1
+# read_only_cookies            = 0
+# save_rejected_cookies                = 0
+# session_timeout              = 3600
+# enable_scripts               = 0
+# enable_js_whitelist          = 1
+# enable_localstorage          = 0
+# enable_plugins               = 0
+# enable_plugin_whitelist      = 1
+# allow_insecure_content       = 0
+# allow_insecure_scripts       = 0
+do_not_track                   = 1
+
+
+##
+## KEY BINDINGS
+##
+
+# To delete all default keybindings use "keybinding = clearall".
+#
+# keybinding   = clearall
+#
+# Key names can be found at:
+#
+#   http://git.gnome.org/browse/gtk+/tree/gdk/gdkkeysyms-compat.h
+#
+# Just chop off the "GDK_" part and you have the keyname. Or look at:
+#
+#   http://git.gnome.org/browse/gtk+/tree/gdk/gdkkeysyms.h
+#
+# and chop off "GDK_KEY_".
+#
+# Be aware that the names are case sensitive!
+#
+# The default keybindings are the following:
+#
+# keybinding   = command,colon
+# keybinding   = search,slash
+# keybinding   = searchb,question
+# keybinding   = command_mode,!Escape
+# keybinding   = insert_mode,i
+# keybinding   = cookiejar,!M1-j
+# keybinding   = downloadmgr,!M1-d
+# keybinding   = history,!M1-h
+# keybinding   = print,!C-p
+# keybinding   = quitall,!C-q
+# keybinding   = restart,!M1-q
+# keybinding   = run_script,!M1-r
+# keybinding   = js toggle,!C-j
+# keybinding   = cookie toggle,!M1-c
+# keybinding   = togglesrc,!C-s
+# keybinding   = yankuri,y
+# keybinding   = pasteuricur,p
+# keybinding   = pasteurinew,P
+# keybinding   = toplevel toggle,!F4
+# keybinding   = help,!F1
+# keybinding   = proxy toggle,!F2
+# keybinding   = searchnext,n
+# keybinding   = searchprevious,N
+# keybinding   = focusaddress,!F6
+# keybinding   = focussearch,!F7
+# keybinding   = hinting,f
+# keybinding   = hinting,period
+# keybinding   = hinting_newtab,S-F
+# keybinding   = hinting_newtab,comma
+# keybinding   = userstyle,s
+# keybinding   = userstyle_global,S
+# keybinding   = goback,BackSpace
+# keybinding   = goback,!M1-Left
+# keybinding   = goforward,!S-BackSpace
+# keybinding   = goforward,!M1-Right
+keybinding     = reload,r
+# keybinding   = reload,!F5
+# keybinding   = reload,!C-r
+# keybinding   = reload,!C-l
+# keybinding   = favorites,!M1-f
+# keybinding   = scrolldown,j
+# keybinding   = scrolldown,Down
+# keybinding   = scrollup,k
+# keybinding   = scrollup,Up
+# keybinding   = scrollbottom,G
+# keybinding   = scrollbottom,End
+# keybinding   = scrolltop,Home
+# keybinding   = scrollpagedown,space
+# keybinding   = scrollpagedown,!C-f
+# keybinding   = scrollpagedown,Page_Down
+# keybinding   = scrollhalfdown,!C-d
+# keybinding   = scrollpageup,Page_Up
+# keybinding   = scrollpageup,!C-b
+# keybinding   = scrollhalfup,!C-u
+# keybinding   = scrollright,l
+# keybinding   = scrollright,Right
+# keybinding   = scrollfarright,dollar
+# keybinding   = scrollleft,h
+# keybinding   = scrollleft,Left
+# keybinding   = scrollfarleft,0
+# keybinding   = statustoggle,!C-n
+keybinding     = stop,!C-c
+# keybinding   = stop,!S-F5
+# keybinding   = tabnew,!C-t
+#keybinding    = tabclose,!d
+keybinding     = tabclose,!C-w
+# keybinding   = tabundoclose,U
+# keybinding   = tabnext 1,!C-1
+# keybinding   = tabnext 2,!C-2
+# keybinding   = tabnext 3,!C-3
+# keybinding   = tabnext 4,!C-4
+# keybinding   = tabnext 5,!C-5
+# keybinding   = tabnext 6,!C-6
+# keybinding   = tabnext 7,!C-7
+# keybinding   = tabnext 8,!C-8
+# keybinding   = tabnext 9,!C-9
+# keybinding   = tabfirst,!C-less
+# keybinding   = tablast,!C-greater
+keybinding     = tabprevious,!C-Page_Up
+keybinding     = tabnext,!C-Page_Down
+keybinding     = tabnext,!C-Tab
+# keybinding   = focusout,!C-minus
+# keybinding   = focusin,!C-equal
+# keybinding   = focusin,!C-plus
+# keybinding   = focusreset,!C-0
+# keybinding   = editelement,!C-i
+# keybinding   = passthrough,!C-z
+keybinding     = :open ,o
+keybinding     = :open <uri>,O
+keybinding     = :tabnew ,t
+keybinding     = :tabnew <uri>,T
+
+# parse the contents of another configuration file
+# include_config       = ~/.xombrero_alternate.conf
diff --git a/zsh/.zprofile b/zsh/.zprofile
new file mode 100644 (file)
index 0000000..7098021
--- /dev/null
@@ -0,0 +1,71 @@
+# vim: foldmethod=marker:foldlevel=0
+
+# History {{{
+HISTFILE=~/secure/.history
+HISTSIZE=10240
+SAVEHIST=10240
+# }}}
+
+# Terminal {{{
+export COLORFGBG="default;default;0"
+export COLORTERM="xterm-256color"
+[ "$TERM" = "screen-256color" ] || TERM=xterm-256color
+export TERM
+# }}}
+
+# Basic envs {{{
+export SHELL=/bin/zsh
+export EDITOR=vim
+export PATH=$PATH:$HOME/bin:/sbin:/usr/sbin
+export TZ='Europe/Moscow'
+export IFCONFIG_FORMAT=inet:cidr,inet6:cidr
+export SSH_AUTH_SOCK=$HOME/.ssh/agent
+# }}}
+
+# Less options {{{
+export PAGER=less
+export LESSHISTFILE=-
+export LESS=RXi
+# }}}
+
+# ls options {{{
+export CLICOLOR=1
+export LSCOLORS="BxGxcxdxCxegDxabagacad"
+# }}}
+
+# Lynx options {{{
+export WWW_HOME=file:///home/stargrave/.lynx_bookmarks.html
+export SSL_CERT_FILE=/usr/local/openssl/cert.pem
+export LYNX_CFG=~/.lynx.cfg
+# }}}
+
+# sdcv options {{{
+export STARDICT_DATA_DIR=$HOME
+export SDCV_HISTSIZE=0
+# }}}
+
+# IRC options {{{
+export IRCNAME="Sergey Matveev"
+export IRCNICK="stargrave"
+# }}}
+
+# Python options {{{
+export PIP_RESPECT_VIRTUALENV=true
+export PIP_VIRTUALENV_BASE=~/.virtualenvs
+export PYTHONDONTWRITEBYTECODE=1
+# }}}
+
+export MAILDIR=$HOME/mail
+
+# XDG related junk {{{
+mkdir -p /tmp/stargrave-xdg
+export XDG_CACHE_HOME=/tmp/stargrave-xdg
+export XDG_CONFIG_DIR=/tmp/stargrave-xdg
+export XDG_DATA_HOME=/tmp/stargrave-xdg
+export XDG_RUNTIME_DIR=/tmp/stargrave-xdg
+# }}}
+
+export GOCACHE=/tmp/go-cache
+umask 077
+
+env | grep -q XAUTH || calendar
diff --git a/zsh/.zshrc b/zsh/.zshrc
new file mode 100644 (file)
index 0000000..ebfb44f
--- /dev/null
@@ -0,0 +1,210 @@
+# vim: foldmethod=marker:foldlevel=0
+
+# Basic options {{{
+setopt APPEND_HISTORY SHARE_HISTORY INC_APPEND_HISTORY HIST_IGNORE_ALL_DUPS
+setopt HIST_IGNORE_SPACE
+setopt INTERACTIVE_COMMENTS
+setopt GLOB_STAR_SHORT GLOB_DOTS EXTENDED_GLOB
+setopt NO_NOMATCH
+setopt AUTO_PUSHD PUSHD_IGNORE_DUPS
+# }}}
+
+# Vi mode {{{
+bindkey -v
+export KEYTIMEOUT=1
+# }}}
+
+# Home/end {{{
+bindkey "^[[1~" beginning-of-line
+bindkey "^[[4~" end-of-line
+# }}}
+
+# Command-line editing {{{
+autoload -U edit-command-line
+zle -N edit-command-line
+bindkey -M vicmd v edit-command-line
+# }}}
+
+# History search {{{
+autoload -U history-search-end
+zle -N history-beginning-search-backward-end history-search-end
+zle -N history-beginning-search-forward-end history-search-end
+bindkey "^[[A" history-beginning-search-backward-end
+bindkey "^[[B" history-beginning-search-forward-end
+bindkey "^R" history-incremental-search-backward
+# }}}
+
+# Prompt {{{
+function zle-line-init zle-keymap-select {
+    mode_vi="${${KEYMAP/vicmd/+}/(main|viins)/-}"
+    [ $timer ] && timer_show=$(( $SECONDS - $timer ))
+    prompt="%2~|"
+    prompt+="%U${timer_show}%u|"
+    prompt+="%B%?%b"
+    prompt+="${mode_vi}"
+    prompt+="%F{magenta}%#%f "
+    PS1="$prompt"
+    zle reset-prompt
+}
+zle -N zle-line-init
+zle -N zle-keymap-select
+
+preexec() {
+    timer=$SECONDS
+}
+
+precmd() {
+    print -n "\a"
+}
+# }}}
+
+# Tmux pane name {{{
+CTP()
+{
+    printf "\033]2;\033\\"
+}
+CTP
+# }}}
+
+# Aliases {{{
+alias l="ls -AF "
+alias ll="ls -AFl "
+alias ssh="TERM=xterm ssh"
+alias vi="vim"
+alias more="less"
+alias m="less "
+alias -g M="| less"
+alias mc="mc ; CTP"
+bindkey -s "\eOS" " popd\n" # F4
+
+f() {
+    # find . -name "*$1*" -print
+    print -C 1 **$1*
+}
+
+ssht() {
+    ssh -C -t "$1" tmux attach -t0
+}
+alias sshnm='ssh -o "ControlMaster no"'
+# }}}
+
+# Lynx {{{
+lwe() {
+    lynx -cookies "https://en.wikipedia.org/wiki/$1"
+}
+
+lwr() {
+    lynx -cookies "https://ru.wikipedia.org/wiki/$1"
+}
+# }}}
+
+# Git {{{
+alias Ga="git add"
+alias Gb="git branch"
+alias Gc="git checkout"
+alias Gd="git diff"
+alias Gs="git show"
+alias Gm="git diff --name-only --diff-filter=M"
+alias Gam="git commit --amend"
+
+git_common="--oneline --abbrev-commit"
+alias Gl="git log $git_common --graph --decorate=short"
+alias Gr="git --no-pager log $git_common -n 20 | perl -ne 'print \"@~\$n \$_\"; \$n++'"
+alias Grr="git --no-pager log $git_common --graph -n 1024 | vi -c 'e ++enc=utf8' -"
+alias Grpck="git gc --prune=now ; git repack -a -d --depth=4095 --window=10240"
+
+bindkey -s "\eOQ" " git status\n" # F2
+bindkey -s "\eOR" " git status --short\n" # F3
+# }}}
+
+# grep {{{
+GREP=/usr/local/bin/grep
+g() {
+    $GREP --color=always --with-filename --line-number --recursive $@ | less --RAW-CONTROL-CHARS
+}
+alias -g G="| $GREP --color"
+alias grep="$GREP"
+alias gg="git grep "
+# }}}
+
+# GPG agent {{{
+GPG_TTY=$(tty)
+export GPG_TTY
+# }}}
+
+# Virtualenv {{{
+venv() {
+    . /usr/local/bin/virtualenvwrapper.sh
+}
+# }}}
+
+# Mail {{{
+mailpath=(
+    ~/mail/mbox"?Neue Nachrichten in =mbox"
+    ~/mail/arbeit"?Neue Nachrichten in =arbeit"
+)
+alias arr="mutt -f =arbeit -e 'source ~/.mutt/accounts/stcnet.ru'"
+alias rss="mutt -f =rss"
+bindkey -s "\eOP" " inc\n" # F1
+# }}}
+
+# Calculator {{{
+autoload -U zcalc
+alias zc="zcalc"
+# }}}
+
+# Paths {{{
+export CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib"
+
+export MANPATH=/usr/share/man
+export MANPATH=$MANPATH:/usr/local/man
+export MANPATH=$MANPATH:/usr/local/share/man
+export MANPATH=$MANPATH:/usr/share/openssl/man
+export MANPATH=$MANPATH:/usr/local/lib/perl5/site_perl/man
+export MANPATH=$MANPATH:/usr/local/lib/perl5/5.26/perl/man
+
+export PATH=$PATH:$HOME/git/bin
+export MANPATH=$MANPATH:$HOME/git/share/man
+
+export PATH=$PATH:$HOME/postgresql/bin
+export MANPATH=$MANPATH:$HOME/postgresql/share/man
+
+export PATH=$HOME/texlive/2017/bin/amd64-freebsd:$PATH
+export INFOPATH=$INFOPATH:/usr/local/share/info:$HOME/texlive/2017/texmf-dist/doc/info
+export MANPATH=$MANPATH:$HOME/texlive/2017/texmf-dist/doc/man
+
+[ -e ~/postgresql/lib/libpq.so.5 ] && export LD_PRELOAD=$HOME/postgresql/lib/libpq.so.5
+# }}}
+
+# Completion {{{
+zstyle ":completion:*:functions" ignored-patterns "_*"
+zstyle ":completion:*" matcher-list "" 'm:{a-z\-}={A-Z\_}' 'r:|?=** m:{a-z\-}={A-Z\_}'
+
+_mycomp () {
+    [ $CURRENT -eq 1 ] && _command_names || _files
+}
+zstyle ":completion:*" completer _mycomp _parameters
+
+autoload -U compinit ; compinit -d /tmp/.zcompdump
+
+zstyle ":completion:*:default" list-colors ""
+autoload -U complist
+# }}}
+
+# Highlighting {{{
+ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets)
+. ~/work/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
+typeset -A ZSH_HIGHLIGHT_STYLES
+ZSH_HIGHLIGHT_STYLES[globbing]="fg=magenta"
+ZSH_HIGHLIGHT_STYLES[history-expansion]="fg=magenta"
+ZSH_HIGHLIGHT_STYLES[commandseparator]="fg=red"
+ZSH_HIGHLIGHT_STYLES[redirection]="fg=red"
+ZSH_HIGHLIGHT_STYLES[assign]="fg=cyan"
+# }}}
+
+# Autosuggestion {{{
+. ~/work/zsh-autosuggestions/zsh-autosuggestions.zsh
+ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=6"
+# }}}
+
+~/bin/cleanup.sh