summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tom Willemse2013-05-15 17:35:51 +0200
committerGravatar Tom Willemse2013-05-15 17:35:51 +0200
commit6c2db7df0e40962537ce74d6f6213fac1782bd1b (patch)
tree57483bb4d37c243619d71123260711100afb1a93
parent8ae90ffbd18d4312806e11cdda99e3dadcc9bf57 (diff)
downloaddotfiles-phoenix.tar.gz
dotfiles-phoenix.zip
Update dotfilesphoenix
-rw-r--r--.Xdefaults42
-rw-r--r--.config/Makefile5
-rw-r--r--.config/awesome/Makefile5
-rw-r--r--.config/awesome/bowl.lua205
-rw-r--r--.config/awesome/ext.lua81
-rw-r--r--.config/awesome/infoline.lua183
-rw-r--r--.config/awesome/keychain.lua334
-rw-r--r--.config/awesome/oni.lua73
-rw-r--r--.config/awesome/rc.lua424
-rw-r--r--.config/awesome/themes/Makefile4
-rw-r--r--.config/awesome/themes/custom/Makefile4
-rw-r--r--.config/awesome/themes/custom/README3
-rw-r--r--.config/awesome/themes/custom/theme.lua96
-rw-r--r--.config/clfswm/Makefile4
-rw-r--r--.config/clfswm/clfswmrc25
-rw-r--r--.config/cower/Makefile2
-rw-r--r--.config/dunst/Makefile2
-rw-r--r--.config/fehlstart/Makefile4
-rw-r--r--.config/fehlstart/fehlstart.rc22
-rw-r--r--.config/fish/Makefile4
-rw-r--r--.config/fish/config.fish76
-rw-r--r--.config/herbstluftwm/Makefile6
-rwxr-xr-x.config/herbstluftwm/autostart121
-rwxr-xr-x.config/herbstluftwm/panel.sh150
-rw-r--r--.config/newsbeuter/.gitignore3
-rw-r--r--.config/newsbeuter/Makefile4
-rw-r--r--.config/newsbeuter/config27
-rw-r--r--.config/newsbeuter/urls176
-rw-r--r--.config/zathura/Makefile2
-rw-r--r--.conkerorrc/Makefile3
-rw-r--r--.conkerorrc/init.js9
-rw-r--r--.conkerorrc/styles/.gitignore1
-rw-r--r--.conkerorrc/styles/Makefile7
-rw-r--r--.conkerorrc/styles/base.less4
-rw-r--r--.conkerorrc/styles/git-scm.less18
-rw-r--r--.conkerorrc/styles/github.less162
-rw-r--r--.conkerorrc/styles/help.less21
-rw-r--r--.conkerorrc/styles/tango.less27
-rw-r--r--.conkerorrc/themes/Makefile4
-rw-r--r--.conkerorrc/themes/naquadah/Makefile5
-rw-r--r--.conkerorrc/themes/naquadah/conkeror--scrollbars.css36
-rw-r--r--.conkerorrc/themes/naquadah/hints--url-panel.css17
-rw-r--r--.conkerorrc/themes/naquadah/minibuffer.css52
-rw-r--r--.conkerorrc/themes/naquadah/mode-line.css11
-rw-r--r--.conkerorrc/themes/naquadah/new-tabs.css54
-rw-r--r--.conkerorrc/themes/naquadah/tab-bar.css41
-rw-r--r--.conkerorrc/themes/naquadah/theme.json9
-rw-r--r--.conkerorrc/themes/yoshi/Makefile5
-rw-r--r--.conkerorrc/themes/yoshi/conkeror--scrollbars.css36
-rw-r--r--.conkerorrc/themes/yoshi/hints--url-panel.css17
-rw-r--r--.conkerorrc/themes/yoshi/minibuffer.css49
-rw-r--r--.conkerorrc/themes/yoshi/mode-line.css11
-rw-r--r--.conkerorrc/themes/yoshi/new-tabs.css54
-rw-r--r--.conkerorrc/themes/yoshi/tab-bar.css41
-rw-r--r--.conkerorrc/themes/yoshi/theme.json9
-rw-r--r--.emacs.d/init.el312
-rw-r--r--.gitignore1
-rw-r--r--.local/Makefile4
-rw-r--r--.local/share/Makefile4
-rw-r--r--.local/share/applications/Makefile4
-rw-r--r--.local/share/applications/moc.desktop8
-rw-r--r--.local/share/applications/ncmpcpp.desktop8
-rw-r--r--.local/share/applications/poweroff.desktop8
-rw-r--r--.local/share/applications/reboot.desktop8
-rw-r--r--.moc/.gitignore5
-rw-r--r--.moc/Makefile5
-rw-r--r--.moc/config3
-rw-r--r--.moc/themes/Makefile4
-rw-r--r--.moc/themes/custom118
-rw-r--r--.mutt/.gitignore4
-rw-r--r--.mutt/Makefile6
-rw-r--r--.mutt/aethon.muttrc14
-rw-r--r--.mutt/arch.muttrc14
-rw-r--r--.mutt/colors.muttrc65
-rw-r--r--.mutt/gmail.muttrc14
-rw-r--r--.mutt/iactor.muttrc13
-rw-r--r--.mutt/macros1
-rw-r--r--.mutt/mailcap6
-rw-r--r--.mutt/muttrc121
-rw-r--r--.mutt/ninthfloor.muttrc13
-rw-r--r--.mutt/ryuslash.org.muttrc13
-rw-r--r--.mutt/sig0
-rw-r--r--.ncmpcpp/Makefile4
-rw-r--r--.ncmpcpp/config25
-rw-r--r--.offlineimaprc12
-rw-r--r--.pentadactyl/Makefile4
-rw-r--r--.pentadactyl/plugins/Makefile4
-rw-r--r--.pentadactyl/plugins/emacs.penta98
-rw-r--r--.sawfish/Makefile4
-rw-r--r--.sawfish/rc159
-rw-r--r--.ssh/Makefile2
-rw-r--r--.stumpwmrc110
-rw-r--r--.w3m/Makefile2
-rw-r--r--.weechat/Makefile4
-rw-r--r--.weechat/alias.conf38
-rw-r--r--.weechat/irc.conf154
-rw-r--r--.weechat/weechat.conf512
-rw-r--r--.zsh/Makefile2
-rw-r--r--.zsh/functions/Makefile7
-rw-r--r--.zsh/functions/add-to-list10
-rw-r--r--.zsh/functions/chpwd_show_todo7
-rwxr-xr-x.zsh/functions/chpwd_update_git_vars2
-rw-r--r--.zsh/functions/env2
-rw-r--r--.zsh/functions/get_cnt15
-rw-r--r--.zsh/functions/line8
-rw-r--r--.zsh/functions/precmd_maybe_festival15
-rwxr-xr-x.zsh/functions/precmd_update_git_vars6
-rw-r--r--.zsh/functions/precmd_update_updates11
-rw-r--r--.zsh/functions/preexec_update_vars16
-rw-r--r--.zsh/functions/prompt15
-rwxr-xr-x.zsh/functions/prompt_git_info23
-rw-r--r--.zsh/functions/rprompt4
-rwxr-xr-x.zsh/functions/update_current_git_vars30
-rw-r--r--.zsh/functions/welcome10
-rw-r--r--.zshrc27
-rw-r--r--Makefile10
-rw-r--r--dotfiles.mk66
-rw-r--r--emacs/.gitignore1
-rw-r--r--emacs/Makefile7
-rw-r--r--emacs/eshell/Makefile2
-rw-r--r--emacs/init.el536
-rw-r--r--emacs/init.org1599
-rw-r--r--emacs/site-lisp/Makefile2
-rw-r--r--emacs/site-lisp/dzen.el1
-rw-r--r--emacs/site-lisp/ext.el7
-rw-r--r--emacs/site-lisp/oni.el165
-rw-r--r--emacs/site-lisp/org-init.el9
-rw-r--r--emacs/snippets/Makefile2
-rw-r--r--emacs/snippets/html-mode/Makefile2
-rw-r--r--emacs/snippets/org-mode/Makefile2
-rw-r--r--emacs/snippets/org-mode/heading10
-rw-r--r--emacs/snippets/python-mode/Makefile2
-rw-r--r--sbcl/.gitignore1
-rw-r--r--sbcl/Makefile8
-rw-r--r--sbcl/sbclrc.org36
135 files changed, 2197 insertions, 5179 deletions
diff --git a/.Xdefaults b/.Xdefaults
index 3b7e385..12d7552 100644
--- a/.Xdefaults
+++ b/.Xdefaults
@@ -25,32 +25,32 @@ urxvt.boldFont: xft:Envy Code R:weight=bold:pixelsize=12
urxvt.italicFont: xft:Envy Code R:slant=italic:pixelsize=12
urxvt.depth: 32
-! urxvt.background: #111113
-! urxvt.foreground: #eeeeec
+urxvt.background: #bfbfbf
+urxvt.foreground: #111111
-! urxvt.color0: #111113
-! urxvt.color8: #eeeeec
+urxvt.color0: #3d3d3d
+urxvt.color8: #111111
-! urxvt.color1: #734a4a
-! urxvt.color9: #bf7d7d
+urxvt.color1: #543f3f
+urxvt.color9: #541515
-! urxvt.color2: #52734a
-! urxvt.color10: #8abf6d
+urxvt.color2: #43543f
+urxvt.color10: #225415
-! urxvt.color3: #6b734a
-! urxvt.color11: #b2bf6d
+urxvt.color3: #50543f
+urxvt.color11: #485415
-! urxvt.color4: #4a5b73
-! urxvt.color12: #6d97bf
+urxvt.color4: #3f4854
+urxvt.color12: #152e54
-! urxvt.color5: #6b4a73
-! urxvt.color13: #b27dbf
+urxvt.color5: #503f54
+urxvt.color13: #481554
-! urxvt.color6: #4a7373
-! urxvt.color14: #7dbfbf
+urxvt.color6: #3f5454
+urxvt.color14: #155454
-! urxvt.color7: #222224
-! urxvt.color15: #a5a5a4
+urxvt.color7: #969696
+urxvt.color15: #ededed
Xft.antialias: true
Xft.rgba: rgb
@@ -61,11 +61,17 @@ Xft.hintstyle: hintslight
Emacs.menuBar: off
Emacs.toolbar: off
Emacs.useXIM: off
+Emacs.background: #bfbfbf
Emacs.borderWidth: 0
Emacs.font: Envy Code R-10
+Emacs.foreground: #111111
Emacs.internalBorder: 0
Emacs.paneFont: Envy Code R-10
+Emacs.pointerColor: #111111
Emacs*menu*font: Envy Code R-10
+Emacs*menu*foreground: #111111
+Emacs*menu*background: #696969
+Emacs*menu*buttonForeground: #969696
Emacs*menu*verticalSpacing: 0
Emacs*menu*shadowThickness: 1
Emacs*menu*margin: 0
diff --git a/.config/Makefile b/.config/Makefile
index 0d9939f..91a7963 100644
--- a/.config/Makefile
+++ b/.config/Makefile
@@ -1,5 +1,4 @@
-DESTDIR:=$(DESTDIR)/.config
-modules=awesome clfswm cower dunst fehlstart fish herbstluftwm \
- newsbeuter zathura
+SUBDIR=.config
+modules=cower dunst zathura
include ../dotfiles.mk
diff --git a/.config/awesome/Makefile b/.config/awesome/Makefile
deleted file mode 100644
index bec3818..0000000
--- a/.config/awesome/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-DESTDIR:=$(DESTDIR)/awesome
-modules=themes
-objects=bowl.lua ext.lua infoline.lua keychain.lua oni.lua rc.lua
-
-include ../../dotfiles.mk
diff --git a/.config/awesome/bowl.lua b/.config/awesome/bowl.lua
deleted file mode 100644
index bf6af7b..0000000
--- a/.config/awesome/bowl.lua
+++ /dev/null
@@ -1,205 +0,0 @@
--- -*- coding: utf-8 -*-
---------------------------------------------------------------------------------
--- @author Nicolas Berthier <nberthier@gmail.com>
--- @copyright 2010 Nicolas Berthier
---------------------------------------------------------------------------------
---
--- Bowls are kind of helpers that can be drawn (at the bottom --- for now) of an
--- area, and displaying the current key prefix. It is inspired by emacs'
--- behavior, that prints prefix keys in the minibuffer after a certain time.
---
--- I call it `bowl' as a reference to the bowl that one might have at home,
--- where one puts its actual keys... A more serious name would be `hint' or
--- `tooltip' (but they do not fit well for this usage).
---
--- Example usage: see `rc.lua' file.
---
---------------------------------------------------------------------------------
-
---{{{ Grab environment (mostly aliases)
-local setmetatable = setmetatable
-local ipairs = ipairs
-local type = type
-local pairs = pairs
-local string = string
-local print = print
-local error = error
-
-local capi = capi
-local client = client
-local awesome = awesome
-local root = root
-local timer = timer
-
-local infoline = require ("infoline")
---}}}
-
-module ("bowl")
-
--- Privata data: we use weak keys in order to allow collection of private data
--- if keys (clients) are collected (i.e., no longer used, after having been
--- killed for instance)
-local data = setmetatable ({}, { __mode = 'k' })
-
---{{{ Default values
-
---- Default modifier filter
-local modfilter = {
- ["Mod1"] = "M",
- ["Mod4"] = "S",
- ["Control"] = "C",
- ["Shift"] = string.upper,
-}
-
--- Timers configuration
-local use_timers = true
-local timeout = 2.0
-
---}}}
-
---{{{ Keychain pretty-printing
-
-function mod_to_string (mods, k)
- local ret, k = "", k
- for _, mod in ipairs (mods) do
- if modfilter[mod] then
- local t = type (modfilter[mod])
- if t == "function" then
- k = modfilter[mod](k)
- elseif t == "string" then
- ret = ret .. modfilter[mod] .. "-"
- else
- error ("Invalid modifier key filter: got a " .. t)
- end
- else
- ret = ret .. mod .. "-"
- end
- end
- return ret, k
-end
-
-function ks_to_string (m, k)
- local m, k = mod_to_string (m, k)
- return m .. k
-end
-
---}}}
-
---{{{ Timer management
-
-local function delete_timer_maybe (d)
- if d.timer then -- stop and remove the timer
- d.timer:remove_signal ("timeout", d.timer_function)
- d.timer:stop ()
- d.timer = nil
- d.timer_expired = true
- end
-end
-
-local function delayed_call_maybe (d, f)
- if use_timers then
- if not d.timer_expired and not d.timer then
- -- create and start the timer
- d.timer = timer ({ timeout = timeout })
- d.timer_function = function () f (); delete_timer_maybe (d) end
- d.timer:add_signal ("timeout", d.timer_function)
- d.timer:start ()
- d.timer_expired = false
- elseif not d.timer_expired then
- -- restart the timer...
-
- -- XXX: What is the actual semantics of the call to `start' (ie,
- -- does it restart the timer with the initial timeout)?
- d.timer:stop ()
- d.timer.timeout = timeout -- reset timeout
- d.timer:start ()
- end
- else -- timers disabled
- f () -- call the given function directly
- end
-end
-
---}}}
-
---{{{ Infoline management
-
-function dispose (w)
- local d = data[w]
- if d.bowl then -- if bowl was enabled... (should always be true...)
- infoline.dispose (d.bowl)
- d.bowl = nil
- end
- delete_timer_maybe (d)
- data[w] = nil
-end
-
-function append (w, m, k)
- local d = data[w]
- local pretty_ks = ks_to_string (m, k) .. " "
- infoline.set_text (d.bowl, infoline.get_text (d.bowl) .. pretty_ks)
-
- local function enable_bowl ()
- -- XXX: is there a possible bad interleaving that could make
- -- this function execute while the bowl has already been
- -- disposed of? in which case the condition should be checked
- -- first...
-
- -- if d.bowl then
- infoline.attach (d.bowl, w)
- -- end
- end
-
- delayed_call_maybe (d, enable_bowl)
-end
-
-function create (w)
- -- XXX: Note the prefix text could be customizable...
- data[w] = { bowl = infoline.new (" ") }
-end
-
---}}}
-
-
---- Initializes the bowl module, with given properties; should be called before
---- ANY other function of this module.
--- Configurations fields include:
---
--- `use_timers', `timeout': A boolean defining whether bowls drawing should be
--- delayed, along with a number being this time shift, in seconds (Default
--- values are `true' and `2').
---
--- `modfilter': A table associating modifiers (Mod1, Mod4, Control, Shift, etc.)
--- with either a string (in this case it will replace the modifier when printed
--- in heplers) or functions (in this case the key string will be repaced by a
--- call to this function with the key string as parameter). Default value is:
--- { ["Mod1"] = "M", ["Mod4"] = "S", ["Control"] = "C", ["Shift"] =
--- string.upper }
---
--- @param c The table of properties.
-function init (c)
- local c = c or { }
- modfilter = c.modfilter and c.modfilter or modfilter
- if c.use_timers ~= nil then use_timers = c.use_timers end
- if use_timers then
- timeout = c.timeout ~= nil and c.timeout or timeout
- end
-end
-
---- Setup signal listeners, that trigger appropriate functions for a default
---- behavior.
-function default_setup ()
- local function to_root (f) return function (...) f (root, ...) end end
- client.add_signal ("keychain::enter", create)
- client.add_signal ("keychain::append", append)
- client.add_signal ("keychain::leave", dispose)
- awesome.add_signal ("keychain::enter", to_root (create))
- awesome.add_signal ("keychain::append", to_root (append))
- awesome.add_signal ("keychain::leave", to_root (dispose))
-end
-
--- Local variables:
--- indent-tabs-mode: nil
--- fill-column: 80
--- lua-indent-level: 4
--- End:
--- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80
diff --git a/.config/awesome/ext.lua b/.config/awesome/ext.lua
deleted file mode 100644
index e7bdf00..0000000
--- a/.config/awesome/ext.lua
+++ /dev/null
@@ -1,81 +0,0 @@
-local client=client
-local awful=awful
-local pairs=pairs
-local table=table
-
-module("ext")
-
--- Returns true if all pairs in table1 are present in table2
-function match(table1, table2)
- for k, v in pairs(table1) do
- if table[k] ~= v and not table2[k]:find(v) then
- return false
- end
- end
-
- return true
-end
-
---- Spawns cmd if no client can be found matching properties
--- If such a client can be found, pop to first tag where it is
--- visible, and give it focus
-function run_or_raise(cmd, properties)
- local clients = client.get()
- local focused = awful.client.next(0)
- local findex = 0
- local matched_clients = { }
- local n = 0
-
- for i, c in pairs(clients) do
- -- make an array of matched clients
- if match(properties, c) then
- n = n + 1
- matched_clients[n] = c
-
- if n == focused then
- findex = n
- end
- end
- end
-
- if n > 0 then
- local c = matched_clients[1]
-
- -- if the focused window matched switch focus to next in list
- if 0 < findex and findex < n then
- c = matched_clients[findex + 1]
- end
-
- local ctags = c:tags()
-
- if table.getn(ctags) == 0 then
- -- ctags is empty, show client on current tag
- local curtag = awful.tag.selected()
- awful.client.movetotag(curtag, c)
- else
- -- Otherwise, pop to first tag client is visible on
- awful.tag.viewonly(ctags[1])
- end
-
- -- And then focus the client
- client.focus = c
- c:raise()
- awful.screen.focus(c.screen)
- return
- end
- awful.util.spawn(cmd)
-end
-
-function prev_client()
- awful.client.focus.history.previous()
- if client.focus then
- client.focus:raise()
- end
-end
-
-function next_client()
- awful.client.focus.byidx(1)
- if client.focus then
- client.focus:raise()
- end
-end
diff --git a/.config/awesome/infoline.lua b/.config/awesome/infoline.lua
deleted file mode 100644
index 2b8e00c..0000000
--- a/.config/awesome/infoline.lua
+++ /dev/null
@@ -1,183 +0,0 @@
--- -*- coding: utf-8 -*-
---------------------------------------------------------------------------------
--- @author Nicolas Berthier &lt;nberthier@gmail.com&gt;
--- @copyright 2010 Nicolas Berthier
---------------------------------------------------------------------------------
---
--- This is a module for defining infolines in awesome. An infoline is a wibox
--- attached to a region (typically, a client or the root window).
---
--- Remarks:
---
--- - It has not been tested with multiple screens yet.
---
--- Example usage: (TODO --- read the comments for now, there are not many
--- functions)
---
---------------------------------------------------------------------------------
-
---{{{ Grab environment (mostly aliases)
-local setmetatable = setmetatable
-local ipairs = ipairs
-local type = type
-local pairs = pairs
-local string = string
-local print = print
-local error = error
-local io = io
-
-local client = client
-local awesome = awesome
-local wibox = wibox
-local widget = widget
-local root = root
-local screen = screen
-local mouse = mouse
---}}}
-
-module ("infoline")
-
--- Privata data: we use weak keys in order to allow collection of private data
--- if keys (clients) are collected (i.e., no longer used, after having been
--- killed for instance).
---
--- XXX: For now, we have at most one infoline per client, but it could be
--- interesting to create several types of infolines (identified by indexes to be
--- allocated by this module), and associated to, e.g., different configuration
--- flags and positioning routine...
-local data = setmetatable ({}, { __mode = 'k' })
-
---{{{ Infoline positioning
-
--- XXX: this is a hack that positions an infoline at the bottom of a given area.
-local function setup_position (wb, geom)
- local b = wb:geometry ()
- b.x = geom.x
- b.width = geom.width
- b.y = geom.y + geom.height - awesome.font_height
- b.height = awesome.font_height
- wb:geometry (b)
-end
-
---}}}
-
---{{{ Configurations:
-
--- When true, this flag indicates that an infoline is hidden if its attached
--- client loses its focus. Otherwise, it remains always visible.
-follow_focus = true
-
---}}}
-
---{{{ Infoline updates
-
-function get_text (il) return il.wb.widgets[1].text end
-function set_text (il, text) il.wb.widgets[1].text = text end
-
--- Forces a refresh of the given infoline.
-function update (il)
- local wb = il.wb
- local c = il.cli
-
- if il.enabled then
- -- XXX: Note this could be much better if we had some sort of root and
- -- client interface unification: the following involves a priori useless
- -- code duplication...
- if c == root then
- wb.screen = mouse.screen -- XXX: is this the behavior we need?
- wb.visible = true
- setup_position (wb, screen[mouse.screen].workarea)
- else
- if c:isvisible () and (not follow_focus or client.focus == c) then
- wb.screen = c.screen
- wb.visible = true
- setup_position (wb, c:geometry ())
- else -- do we have to hide it?
- wb.visible = false
- end
- end
- elseif wb.visible then --otherwise we need to hide it.
- wb.visible = false
- end
-end
-
-local function update_from_client (c)
- -- Note that we may not have an infoline for this client, hence the
- -- conditional...
- if data[c] then update (data[c]) end
-end
-
--- Force execution of the above function on client state modification.
-client.add_signal ("focus", update_from_client)
-client.add_signal ("unfocus", update_from_client)
-client.add_signal ("unmanage", update_from_client)
-
---}}}
-
---{{{ Infoline management
-
---- Creates a new infoline, with the given initial text. Note it is not visible
---- by default, and not attached to any client.
-function new (text)
- local il = {
- wb = wibox ({
- ontop = true, -- XXX: setting a depth when attaching to
- --a client would be much better
- widgets = {
- widget ({ type = "textbox", align="left" })
- },
- })
- }
- -- these will remain false until the infoline is attached to a client.
- il.wb.visible = false
- il.enabled = false
- set_text (il, text or "")
- return il
-end
-
--- Attached infolines will react to the following client-related signals, and
--- automatically setup their position according to the client's geometry.
-local csignals = { "property::geometry", "property::minimized",
- "property::visible", "property::focus", "property::screen", }
-
--- Attaches an infoline to a client. Note the infoline becomes visible at that
--- time, if the client is currently visible (and if it has focus, when
--- `follow_focus' holds).
-function attach (il, c)
- data[c] = il
- il.cli = c
- il.enabled = true
- update (il)
- if c ~= root then
- -- subscribe to client-related signals
- for _, s in ipairs (csignals) do
- c:add_signal (s, update_from_client)
- end
- end
-end
-
---- Detach the given infoline from its client, if any.
-function dispose (il)
- local c = il.cli
- if c then -- note c can be nil here, if the given infoline has not been
- --attached to any client...
- il.enabled = false
- update (il) -- a shortcut here would be: `il.wb.visible = false'
- data[c] = nil
- if c ~= root then
- -- unsubscribe from client-related signals
- for _, s in ipairs (csignals) do
- c:remove_signal (s, update_from_client)
- end
- end
- end
-end
-
---}}}
-
--- Local variables:
--- indent-tabs-mode: nil
--- fill-column: 80
--- lua-indent-level: 4
--- End:
--- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80
diff --git a/.config/awesome/keychain.lua b/.config/awesome/keychain.lua
deleted file mode 100644
index 86ce7b2..0000000
--- a/.config/awesome/keychain.lua
+++ /dev/null
@@ -1,334 +0,0 @@
--- -*- coding: utf-8 -*-
---------------------------------------------------------------------------------
--- @author Nicolas Berthier &lt;nberthier@gmail.com&gt;
--- @copyright 2010 Nicolas Berthier
---------------------------------------------------------------------------------
---
--- This is a module for defining keychains à la emacs in awesome. I was also
--- inspired by ion3 behavior when designing it.
---
--- Remarks:
---
--- - This module does not handle `release' key bindings, but is it useful for
--- keychains?
---
--- - It has not been tested with multiple screens yet.
---
--- - There might (... must) be incompatibilities with the shifty module. Also,
--- defining global and per-client keychains with the same prefix is not
--- allowed (or leads to unspecified behaviors... --- in practice: the
--- per-client ones are ignored). However, I do think separation of per-client
--- and global keys is a bad idea if client keys do not have a higher priority
--- than the global ones...
---
--- Example usage: see `rc.lua' file.
---
---------------------------------------------------------------------------------
-
---{{{ Grab environment (mostly aliases)
-local setmetatable = setmetatable
-local ipairs = ipairs
-local type = type
-local pairs = pairs
-local string = string
-local print = print
-local error = error
-local io = io
-
-local capi = capi
-local client = client
-local awesome = awesome
-local root = root
-
-local akey = require ("awful.key")
-local join = awful.util.table.join
-local clone = awful.util.table.clone
---}}}
-
-module ("keychain")
-
--- Privata data: we use weak keys in order to allow collection of private data
--- if keys (clients) are collected (i.e., no longer used, after having been
--- killed for instance)
-local data = setmetatable ({}, { __mode = 'k' })
-
---{{{ Functional Tuples
--- see http://lua-users.org/wiki/FunctionalTuples for details
-
---- Creates a keystroke representation to fill the `escape' table configuration
---- property.
--- @param m Modifiers table.
--- @param k The key itself.
--- @return A keystroke representation (only for the escape sequence, for now?).
-function keystroke (m, k)
- if type (m) ~= "table" then
- error ("Keystroke modifiers must be given a table (got a "..
- type (m)..")")
- end
- if type (k) ~= "string" then
- error ("Keystroke key must be given a string (got a "..
- type (m)..")")
- end
- return function (fn) return fn (m, k) end
-end
-
--- keystroke accessors
-local function ks_mod (_m, _k) return _m end
-local function ks_key (_m, _k) return _k end
-
--- ---
-
---- Creates a final keychain binding to fill the keychain binding tables,
---- meaning that the given function will be executed at the end of the keychain.
--- @param m Modifiers table.
--- @param k The key.
--- @param cont The function to be bound to the given keys.
--- @return A "final" key binding.
-function key (m, k, cont)
- if type (cont) ~= "function" then
- error ("Final binding must be given a function (got a "..
- type (cont)..")")
- end
- return function (fn) return fn (keystroke (m, k), cont, true) end
-end
-
---- Creates an intermediate (prefix) keychain binding.
--- @param m Modifiers table.
--- @param k The key.
--- @param sub The subchain description table to be bound to the given keys.
--- @return An "intermediate" key binding.
-function subchain (m, k, sub)
- if type (sub) ~= "table" then
- error ("Subchain binding must be given a table (got a "..
- type (sub)..")")
- end
- return function (fn) return fn (keystroke (m, k), sub, false) end
-end
-
--- key/subchain binding accessors
-local function binding_ks (ks, cont, leaf) return ks end
-local function binding_cont (ks, cont, leaf) return cont end
-local function binding_leaf (ks, cont, leaf) return leaf end
-
---- Creates an intermediate keychain if sub is a table, or a final key binding
---- otherwise (and then sub must be a function).
--- @param m Modifiers table.
--- @param k The key.
--- @param sub Either the subchain description table, or the function, to be
--- bound to the given keys.
-function sub (m, k, sub)
- if type (sub) == "table" then
- return subchain (m, k, sub)
- else
- return key (m, k, sub)
- end
-end
-
---}}}
-
---{{{ Default values
-
---- Default escape sequences (S-g is inspired by emacs...)
-local escape_keystrokes = {
- keystroke ( { }, "Escape" ),
- keystroke ( { "Mod4" }, "g" ),
-}
-
---}}}
-
---{{{ Key table management facilities
-
-local function set_keys (c, k)
- if c == root then root.keys (k) else c:keys (k) end
-end
-
-local function keys_of (c)
- if c == root then return root.keys () else return c:keys () end
-end
-
---}}}
-
---{{{ Signal emission helper
-
-local function notif (sig, w, ...)
- if w ~= root then
- client.emit_signal (sig, w, ...)
- else -- we use global signals otherwise
- awesome.emit_signal (sig, ...)
- end
-end
-
---}}}
-
---{{{ Client/Root-related state management
-
-local function init_client_state_maybe (w)
- if data[w] == nil then
- local d = { }
- d.keys = keys_of (w) -- save client keys
- data[w] = d -- register client
- notif ("keychain::enter", w)
- end
-end
-
-local function restore_client_state (c)
- local w = c or root
- local d = data[w]
- -- XXX: Turns out that `d' can be nil already here, in case the keyboard has
- -- been grabbed since the previous call to this funtion... (that also seems
- -- to be called again upon release…)
- if d then
- set_keys (w, d.keys) -- restore client keys
- data[w] = nil -- unregister client
- end
-end
-
-local function leave (c)
- local w = c or root
-
- -- Destroy notifier structures if needed
- if data[w] then -- XXX: necessary test?
- notif ("keychain::leave", w)
- end
-end
-
--- force disposal of resources when clients are killed
-client.add_signal ("unmanage", leave)
-
---}}}
-
---{{{ Key binding tree access helpers
-
-local function make_on_entering (m, k, subchain) return
- function (c)
- local w = c or root
-
- -- Register and initialize client state, if not already in a keychain
- init_client_state_maybe (w)
-
- -- Update notifier text, and trigger its drawing if necessary
- notif ("keychain::append", w, m, k)
-
- -- Setup subchain
- set_keys (w, subchain)
- end
-end
-
-local function on_leaving (c)
- -- Trigger disposal routine
- leave (c)
-
- -- Restore initial key mapping of client
- restore_client_state (c)
-end
-
---}}}
-
---{{{ Configuration
-
--- Flag to detect late initialization error
-local already_used = false
-
--- Escape binding table built once upon initialization
-local escape_bindings = { }
-
---- Fills the escape bindings table with actual `awful.key' elements triggering
---- execution of `on_leaving'.
-local function init_escape_bindings ()
- escape_bindings = { }
- for _, e in ipairs (escape_keystrokes) do
- escape_bindings = join (escape_bindings,
- akey (e (ks_mod), e (ks_key), on_leaving))
- end
-end
-
--- Call it once upon module loading to initialize escape_bindings (in case
--- `init' is not called).
-init_escape_bindings ()
-
-
---- Initializes the keychain module, with given properties; to be called before
---- ANY other function of this module.
--- Configurations fields include:
---
--- `escapes': A table of keystrokes (@see keychain.keystroke) escaping keychains
--- (defaults are `Mod4-g' and `Escape').
---
--- @param c The table of properties.
-function init (c)
- local c = c or { }
-
- if already_used then
- -- heum... just signal the error: "print" or "error"?
- return print ("E: keychain: Call to `init' AFTER having bound keys!")
- end
-
- escape_keystrokes = c.escapes and c.escapes or escape_keystrokes
-
- -- Now, fill the escape bindings table again with actual `awful.key'
- -- elements triggering `on_leaving' executions, in case escape keys has
- -- changed.
- init_escape_bindings ()
-end
-
---}}}
-
---{{{ Keychain creation
-
---- Creates a new keychain binding.
--- @param m Modifiers table.
--- @param k The key.
--- @param chains A table of keychains, describing either final bindings (see
--- key constructor) or subchains (see subchain constructor). If arg is not a
--- table, then `awful.key' is called directly with the arguments.
--- @return A key binding for the `awful.key' module.
--- @see awful.key
-function new (m, k, chains)
-
- -- If the argument is a function, then we need to return an actual awful.key
- -- directly.
- if type (chains) ~= "table" then
- return akey (m, k, chains)
- end
-
- -- This table will contain the keys to be mapped upon <m, k> keystroke. It
- -- initially contains the escape bindings, so that one can still rebind them
- -- differently in `chains'.
- local subchain = clone (escape_bindings)
-
- already_used = true -- subsequent init avoidance flag...
-
- -- For each entry of the given chains, add a corresponding `awful.key'
- -- element in the subchain
- for _, e in ipairs (chains) do
- local ks = e (binding_ks)
- if e (binding_leaf) then
- -- We encountered a leaf in the chains.
- local function on_leaf (c) on_leaving (c); e (binding_cont) (c) end
- subchain = join (subchain, akey (ks (ks_mod), ks (ks_key), on_leaf))
- else
- -- Recursively call subchain creation. "Funny" detail: I think there
- -- is no way of creating ill-structured keychain descriptors that
- -- would produce infinite recursive calls here, since we control
- -- their creation with functional tuples, that cannot lead to cyclic
- -- structures...
- local subch = new (ks (ks_mod), ks (ks_key), e (binding_cont))
- subchain = join (subchain, subch)
- end
- end
-
- -- Then return an actual `awful.key', triggering the `on_entering' routine
- return akey (m, k, make_on_entering (m, k, subchain))
-end
---}}}
-
--- Setup `__call' entry in module's metatable so that we can create new prefix
--- binding using `keychain (m, k, ...)' directly.
-setmetatable (_M, { __call = function (_, ...) return new (...) end })
-
--- Local variables:
--- indent-tabs-mode: nil
--- fill-column: 80
--- lua-indent-level: 4
--- End:
--- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=80
diff --git a/.config/awesome/oni.lua b/.config/awesome/oni.lua
deleted file mode 100644
index 7cc5df1..0000000
--- a/.config/awesome/oni.lua
+++ /dev/null
@@ -1,73 +0,0 @@
-local awful = awful
-local beautiful = beautiful
-local client = client
-local ext = require("ext")
-local lfs = require("lfs")
-local pairs = pairs
-local string = string
-local table = table
-local widget = widget
-
-module("oni")
-
-local maildirfmt = "/home/slash/documents/mail/%s/inbox/new/"
-
-function mailcount(account)
- local i = 0
- local dir = string.format(maildirfmt, account)
-
- for file in lfs.dir(dir) do
- if file ~= "." and file ~= ".." then
- i = i + 1
- end
- end
-
- return i
-end
-
-local function showmail(name)
- awful.util.spawn("emacsclient -e '(oni:view-mail \"" .. name .. "\")'")
-end
-
-function mailcount_widgets(label, account, name)
- widgets = {}
- widgets.label = widget({ type = "textbox" })
- widgets.label.text = string.format(" %s: ", label)
- widgets.count = widget({ type = "textbox" })
- widgets.count.text = string.format(" %d ", mailcount(account))
- widgets.count.bg = beautiful.bg_focus
- widgets.count:buttons(
- awful.util.table.join(
- awful.button({ }, 1, function (c) showmail(name) end)))
-
- return widgets
-end
-
-function focus_raise(direction)
- awful.client.focus.bydirection(direction)
- if client.focus then client.focus:raise() end
-end
-
-function ror_browser()
- ext.run_or_raise("conkeror", { class = "Conkeror" })
-end
-
-function ror_editor()
- ext.run_or_raise("emacsclient -c -a emacs", { class = "Emacs" })
-end
-
-function ror_term()
- ext.run_or_raise("urxvt", { class = "URxvt" })
-end
-
-function run_browser()
- awful.util.spawn("conkeror")
-end
-
-function run_editor()
- awful.util.spawn("emacsclient -c -a emacs")
-end
-
-function run_term()
- awful.util.spawn("urxvt")
-end
diff --git a/.config/awesome/rc.lua b/.config/awesome/rc.lua
deleted file mode 100644
index 4056944..0000000
--- a/.config/awesome/rc.lua
+++ /dev/null
@@ -1,424 +0,0 @@
--- Standard awesome library
-local gears = require("gears")
-local awful = require("awful")
--- Widget and layout library
-local wibox = require("wibox")
--- Theme handling library
-local beautiful = require("beautiful")
--- Notification library
-local naughty = require("naughty")
-local menubar = require("menubar")
-local lfs = require("lfs")
-
-awful.rules = require("awful.rules")
-require("awful.autofocus")
-
-local maildir_base = os.getenv("HOME") .. "/documents/mail/"
-
-function ror(program, cls)
- local rorfunc = function ()
- local matcher = function (c)
- return awful.rules.match(c, { class = cls })
- end
-
- awful.client.run_or_raise(program, matcher)
- end
-
- return rorfunc
-end
-
-function ror_combo(mod, key, program, class)
- return awful.util.table.join(
- awful.key(mod, key, ror(program, class)),
- awful.key(awful.util.table.join(mod, { "Shift" }), key,
- function () awful.util.spawn(program) end))
-end
-
-function new_mail(maildir)
- local count = 0
-
- for file in lfs.dir(maildir_base .. maildir .. "/new") do
- if file ~= "." and file ~= ".." then
- count = count + 1
- end
- end
-
- for file in lfs.dir(maildir_base .. maildir .. "/cur") do
- if string.sub(file, -1) ~= "S" and file ~= "."
- and file ~= ".." then
- count = count + 1
- end
- end
-
- return count
-end
-
------ Error handling
--- Check if awesome encountered an error during startup and fell back
--- to another config (This code will only ever execute for the
--- fallback config)
-if awesome.startup_errors then
- naughty.notify({ preset = naughty.config.presets.critical,
- title = "Oops, there were errors during startup!",
- text = awesome.startup_errors })
-end
-
--- Handle runtime errors after startup
-do
- local in_error = false
- awesome.connect_signal("debug::error", function (err)
- -- Make sure we don't go into an endless error loop
- if in_error then return end
- in_error = true
-
- naughty.notify({ preset = naughty.config.presets.critical,
- title = "Oops, an error happened!",
- text = err })
- in_error = false
- end)
-end
-
------ Variable definitions
--- Themes define colours, icons, and wallpapers
-beautiful.init("/usr/share/awesome/themes/default/theme.lua")
-
--- This is used later as the default terminal and editor to run.
-terminal = "urxvt"
-editor = os.getenv("EDITOR") or "nano"
-editor_cmd = terminal .. " -e " .. editor
-
------ Default modkey.
--- Usually, Mod4 is the key with a logo between Control and Alt. If
--- you do not like this or do not have such a key, I suggest you to
--- remap Mod4 to another key using xmodmap or other tools. However,
--- you can use another modifier like Mod1, but it may interact with
--- others.
-modkey = "Mod4"
-
--- Table of layouts to cover with awful.layout.inc, order matters.
-local layouts =
-{
- awful.layout.suit.magnifier,
- awful.layout.suit.tile,
- awful.layout.suit.tile.left,
- awful.layout.suit.tile.bottom,
- awful.layout.suit.tile.top,
- awful.layout.suit.fair,
- awful.layout.suit.fair.horizontal,
- awful.layout.suit.spiral,
- awful.layout.suit.spiral.dwindle,
- awful.layout.suit.max,
- awful.layout.suit.max.fullscreen,
- awful.layout.suit.floating
-}
-
------ Wallpaper
-if beautiful.wallpaper then
- for s = 1, screen.count() do
- gears.wallpaper.maximized(beautiful.wallpaper, s, true)
- end
-end
-
------ Tags
--- Define a tag table which hold all screen tags.
-tags = {}
-for s = 1, screen.count() do
- -- Each screen has its own tag table.
- tags[s] = awful.tag({ 1, 2, 3, 4, 5, 6, 7, 8, 9 }, s, layouts[1])
-end
-
------ Menu
--- Create a laucher widget and a main menu
-myawesomemenu = {
- { "manual", terminal .. " -e man awesome" },
- { "edit config", editor_cmd .. " " .. awesome.conffile },
- { "restart", awesome.restart },
- { "quit", awesome.quit }
-}
-
-mymainmenu = awful.menu(
- { items = { { "awesome", myawesomemenu, beautiful.awesome_icon },
- { "open terminal", terminal } } })
-
-mylauncher = awful.widget.launcher({ image = beautiful.awesome_icon,
- menu = mymainmenu })
-
--- Menubar configuration
-menubar.utils.terminal = terminal -- Set the terminal for applications
- -- that require it
-
------ Wibox
--- Create a textclock widget
-mytextclock = awful.widget.textclock()
-
--- Create a wibox for each screen and add it
-mywibox = {}
-mypromptbox = {}
-mylayoutbox = {}
-mytaglist = {}
-mytasklist = {}
-
-mymaillist = wibox.widget.textbox()
-mymaillist:set_text(
- string.format(" ryu: %d gmail: %d aethon: %d 9f: %d",
- new_mail('ryuslash.org/inbox'),
- new_mail('gmail/inbox'),
- new_mail('aethon/inbox'),
- new_mail('ninthfloor/inbox')))
-mymaillisttimer = timer({ timeout = 60 })
-mymaillisttimer:connect_signal(
- "timeout",
- function ()
- mymaillist:set_text(
- string.format(" ryu: %d gmail: %d aethon: %d 9f: %d",
- new_mail('ryuslash.org/inbox'),
- new_mail('gmail/inbox'),
- new_mail('aethon/inbox'),
- new_mail('ninthfloor/inbox')))
- end)
-mymaillisttimer:start()
-
-mytodolist = wibox.widget.textbox()
-mytodolist:set_text(
- string.format(" ptodo: %d wtodo: %d",
- awful.util.pread("todo-count t"),
- awful.util.pread("todo-count w")))
-mytodolisttimer = timer({ timeout = 60 * 60 })
-mytodolisttimer:connect_signal(
- "timeout",
- function ()
- mytodolist:set_text(
- string.format(" pers: %d work: %d",
- awful.util.pread("todo-count t"),
- awful.util.pread("todo-count w")))
- end)
-mytodolisttimer:start()
-
-for s = 1, screen.count() do
- -- Create a promptbox for each screen
- mypromptbox[s] = awful.widget.prompt()
- -- Create an imagebox widget which will contains an icon
- -- indicating which layout we're using. We need one layoutbox per
- -- screen.
- mylayoutbox[s] = awful.widget.layoutbox(s)
- -- Create a taglist widget
- mytaglist[s] = awful.widget.taglist(
- s, awful.widget.taglist.filter.all, mytaglist.buttons)
-
- -- Create a tasklist widget
- mytasklist[s] = awful.widget.tasklist(
- s, awful.widget.tasklist.filter.currenttags, mytasklist.buttons)
-
- -- Create the wibox
- mywibox[s] = awful.wibox({ position = "top", screen = s })
-
- -- Widgets that are aligned to the left
- local left_layout = wibox.layout.fixed.horizontal()
- left_layout:add(mylauncher)
- left_layout:add(mytaglist[s])
- left_layout:add(mypromptbox[s])
-
- -- Widgets that are aligned to the right
- local right_layout = wibox.layout.fixed.horizontal()
- if s == 1 then
- right_layout:add(mytodolist)
- right_layout:add(mymaillist)
- right_layout:add(wibox.widget.systray())
- end
- right_layout:add(mytextclock)
- right_layout:add(mylayoutbox[s])
-
- -- Now bring it all together (with the tasklist in the middle)
- local layout = wibox.layout.align.horizontal()
- layout:set_left(left_layout)
- layout:set_middle(mytasklist[s])
- layout:set_right(right_layout)
-
- mywibox[s]:set_widget(layout)
-end
-
------ Key bindings
-globalkeys = awful.util.table.join(
- awful.key({ modkey, }, "Left", awful.tag.viewprev),
- awful.key({ modkey, }, "Right", awful.tag.viewnext),
- awful.key({ modkey, }, "Escape", awful.tag.history.restore),
-
- awful.key({ modkey, }, "n",
- function ()
- awful.client.focus.byidx(1)
- if client.focus then client.focus:raise() end
- end),
- awful.key({ modkey, }, "p",
- function ()
- awful.client.focus.byidx(-1)
- if client.focus then client.focus:raise() end
- end),
-
- -- Layout manipulation
- awful.key({ modkey, "Shift" }, "n",
- function () awful.client.swap.byidx(1) end),
- awful.key({ modkey, "Shift" }, "p",
- function () awful.client.swap.byidx(-1) end),
- awful.key({ modkey, "Control" }, "n",
- function () awful.screen.focus_relative(1) end),
- awful.key({ modkey, "Control" }, "p",
- function () awful.screen.focus_relative(-1) end),
- awful.key({ modkey, }, "u", awful.client.urgent.jumpto),
- awful.key({ modkey, }, "Tab",
- function ()
- awful.client.focus.history.previous()
- if client.focus then
- client.focus:raise()
- end
- end),
-
- -- Standard program
- awful.key({ modkey, }, "Return",
- function () awful.util.spawn(terminal) end),
- awful.key({ modkey, "Control" }, "r", awesome.restart),
- awful.key({ modkey, "Shift" }, "q", awesome.quit),
-
- awful.key({ modkey, }, "l",
- function () awful.tag.incmwfact( 0.05) end),
- awful.key({ modkey, }, "h",
- function () awful.tag.incmwfact(-0.05) end),
- awful.key({ modkey, "Shift" }, "h",
- function () awful.tag.incnmaster(1) end),
- awful.key({ modkey, "Shift" }, "l",
- function () awful.tag.incnmaster(-1) end),
- awful.key({ modkey, "Control" }, "h",
- function () awful.tag.incncol(1) end),
- awful.key({ modkey, "Control" }, "l",
- function () awful.tag.incncol(-1) end),
- awful.key({ modkey, }, "space",
- function () awful.layout.inc(layouts, 1) end),
- awful.key({ modkey, "Shift" }, "space",
- function () awful.layout.inc(layouts, -1) end),
-
- awful.key({ modkey, "Control" }, "j", awful.client.restore),
-
- -- Prompt
- awful.key({ modkey }, "r",
- function () mypromptbox[mouse.screen]:run() end),
-
- awful.key({ modkey }, "x",
- function ()
- awful.prompt.run(
- { prompt = "Run Lua code: " },
- mypromptbox[mouse.screen].widget,
- awful.util.eval, nil,
- awful.util.getdir("cache") .. "/history_eval")
- end),
-
- ror_combo({ modkey }, "e", 'emacsclient -ca emacs', 'Emacs'),
- ror_combo({ modkey }, "c", 'urxvt', 'URxvt'),
- ror_combo({ modkey }, "w", 'conkeror', 'Conkeror'),
- awful.key({ "Control", "Mod1" }, "l",
- function () awful.util.spawn('i3lock -c 000000') end))
-
-clientkeys = awful.util.table.join(
- awful.key({ modkey, }, "f",
- function (c) c.fullscreen = not c.fullscreen end),
- awful.key({ modkey, "Shift" }, "c",
- function (c) c:kill() end),
- awful.key({ modkey, "Control" }, "space",
- awful.client.floating.toggle),
- awful.key({ modkey, "Control" }, "Return",
- function (c) c:swap(awful.client.getmaster()) end),
- awful.key({ modkey, }, "o",
- function () awful.screen.focus_relative(1) end),
- awful.key({ modkey, "Shift" }, "o", awful.client.movetoscreen),
- awful.key({ modkey, }, "t", function (c) c.ontop = not c.ontop end),
- awful.key({ modkey, }, "m",
- function (c)
- c.maximized_horizontal = not c.maximized_horizontal
- c.maximized_vertical = not c.maximized_vertical
- end))
-
--- Compute the maximum number of digit we need, limited to 9
-keynumber = 0
-for s = 1, screen.count() do
- keynumber = math.min(9, math.max(#tags[s], keynumber))
-end
-
--- Bind all key numbers to tags. Be careful: we use keycodes to make
--- it works on any keyboard layout. This should map on the top row of
--- your keyboard, usually 1 to 9.
-for i = 1, keynumber do
- globalkeys = awful.util.table.join(
- globalkeys,
- awful.key({ modkey }, "#" .. i + 9,
- function ()
- local screen = mouse.screen
- if tags[screen][i] then
- awful.tag.viewonly(tags[screen][i])
- end
- end),
- awful.key({ modkey, "Control" }, "#" .. i + 9,
- function ()
- local screen = mouse.screen
- if tags[screen][i] then
- awful.tag.viewtoggle(tags[screen][i])
- end
- end),
- awful.key({ modkey, "Shift" }, "#" .. i + 9,
- function ()
- if client.focus and tags[client.focus.screen][i] then
- awful.client.movetotag(tags[client.focus.screen][i])
- end
- end),
- awful.key({ modkey, "Control", "Shift" }, "#" .. i + 9,
- function ()
- if client.focus and tags[client.focus.screen][i] then
- awful.client.toggletag(tags[client.focus.screen][i])
- end
- end))
-end
-
--- Set keys
-root.keys(globalkeys)
-
------ Rules
-awful.rules.rules = {
- -- All clients will match this rule.
- { rule = { },
- properties = { border_width = beautiful.border_width,
- border_color = beautiful.border_normal,
- focus = awful.client.focus.filter,
- keys = clientkeys } },
- { rule = { class = "pinentry" },
- properties = { floating = true } },
- { rule = { class = "gimp" },
- properties = { floating = true } },
- { rule = { class = "Conkeror" },
- properties = { floating = false,
- tag = tags[2][1] } },
- -- Set Firefox to always map on tags number 2 of screen 1.
- -- { rule = { class = "Firefox" },
- -- properties = { tag = tags[1][2] } },
-}
-
------ Signals
--- Signal function to execute when a new client appears.
-client.connect_signal(
- "manage",
- function (c, startup)
- if not startup then
- -- Set the windows at the slave, i.e. put it at the end of
- -- others instead of setting it master.
- -- awful.client.setslave(c)
-
- -- Put windows in a smart way, only if they does not set an
- -- initial position.
- if not c.size_hints.user_position
- and not c.size_hints.program_position then
- awful.placement.no_overlap(c)
- awful.placement.no_offscreen(c)
- end
- end
- end)
-
-client.connect_signal(
- "focus", function(c) c.border_color = beautiful.border_focus end)
-client.connect_signal(
- "unfocus", function(c) c.border_color = beautiful.border_normal end)
diff --git a/.config/awesome/themes/Makefile b/.config/awesome/themes/Makefile
deleted file mode 100644
index 85298f3..0000000
--- a/.config/awesome/themes/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/themes
-modules=custom
-
-include ../../../dotfiles.mk
diff --git a/.config/awesome/themes/custom/Makefile b/.config/awesome/themes/custom/Makefile
deleted file mode 100644
index 8cebe3d..0000000
--- a/.config/awesome/themes/custom/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/custom
-objects=theme.lua
-
-include ../../../../dotfiles.mk
diff --git a/.config/awesome/themes/custom/README b/.config/awesome/themes/custom/README
deleted file mode 100644
index 1ddb349..0000000
--- a/.config/awesome/themes/custom/README
+++ /dev/null
@@ -1,3 +0,0 @@
-Background images:
- Mikael Eriksson <mikael_eriksson@miffe.org>
- Licensed under CC-BY-SA-3.0
diff --git a/.config/awesome/themes/custom/theme.lua b/.config/awesome/themes/custom/theme.lua
deleted file mode 100644
index c65edc8..0000000
--- a/.config/awesome/themes/custom/theme.lua
+++ /dev/null
@@ -1,96 +0,0 @@
----------------------------
--- Default awesome theme --
----------------------------
-
-theme = {}
-
-theme.font = "osaka_unicode 10"
-
-theme.bg_normal = "#222222"
-theme.bg_focus = "#535d6c"
-theme.bg_urgent = "#ff0000"
-theme.bg_minimize = "#444444"
-
-theme.fg_normal = "#aaaaaa"
-theme.fg_focus = "#ffffff"
-theme.fg_urgent = "#ffffff"
-theme.fg_minimize = "#ffffff"
-
-theme.border_width = "1"
-theme.border_normal = "#000000"
-theme.border_focus = "#535d6c"
-theme.border_marked = "#91231c"
-
--- There are other variable sets
--- overriding the default one when
--- defined, the sets are:
--- [taglist|tasklist]_[bg|fg]_[focus|urgent]
--- titlebar_[bg|fg]_[normal|focus]
--- tooltip_[font|opacity|fg_color|bg_color|border_width|border_color]
--- mouse_finder_[color|timeout|animate_timeout|radius|factor]
--- Example:
---theme.taglist_bg_focus = "#ff0000"
-
--- Display the taglist squares
-theme.taglist_squares_sel = "/home/slash/.config/awesome/themes/custom/taglist/squarefw.png"
-theme.taglist_squares_unsel = "/home/slash/.config/awesome/themes/custom/taglist/squarew.png"
-
-theme.tasklist_floating_icon = "/home/slash/.config/awesome/themes/custom/tasklist/floatingw.png"
-
--- Variables set for theming the menu:
--- menu_[bg|fg]_[normal|focus]
--- menu_[border_color|border_width]
-theme.menu_submenu_icon = "/home/slash/.config/awesome/themes/custom/submenu.png"
-theme.menu_height = "15"
-theme.menu_width = "100"
-
--- You can add as many variables as
--- you wish and access them by using
--- beautiful.variable in your rc.lua
---theme.bg_widget = "#cc0000"
-
--- Define the image to load
-theme.titlebar_close_button_normal = "/home/slash/.config/awesome/themes/custom/titlebar/close_normal.png"
-theme.titlebar_close_button_focus = "/home/slash/.config/awesome/themes/custom/titlebar/close_focus.png"
-
-theme.titlebar_ontop_button_normal_inactive = "/home/slash/.config/awesome/themes/custom/titlebar/ontop_normal_inactive.png"
-theme.titlebar_ontop_button_focus_inactive = "/home/slash/.config/awesome/themes/custom/titlebar/ontop_focus_inactive.png"
-theme.titlebar_ontop_button_normal_active = "/home/slash/.config/awesome/themes/custom/titlebar/ontop_normal_active.png"
-theme.titlebar_ontop_button_focus_active = "/home/slash/.config/awesome/themes/custom/titlebar/ontop_focus_active.png"
-
-theme.titlebar_sticky_button_normal_inactive = "/home/slash/.config/awesome/themes/custom/titlebar/sticky_normal_inactive.png"
-theme.titlebar_sticky_button_focus_inactive = "/home/slash/.config/awesome/themes/custom/titlebar/sticky_focus_inactive.png"
-theme.titlebar_sticky_button_normal_active = "/home/slash/.config/awesome/themes/custom/titlebar/sticky_normal_active.png"
-theme.titlebar_sticky_button_focus_active = "/home/slash/.config/awesome/themes/custom/titlebar/sticky_focus_active.png"
-
-theme.titlebar_floating_button_normal_inactive = "/home/slash/.config/awesome/themes/custom/titlebar/floating_normal_inactive.png"
-theme.titlebar_floating_button_focus_inactive = "/home/slash/.config/awesome/themes/custom/titlebar/floating_focus_inactive.png"
-theme.titlebar_floating_button_normal_active = "/home/slash/.config/awesome/themes/custom/titlebar/floating_normal_active.png"
-theme.titlebar_floating_button_focus_active = "/home/slash/.config/awesome/themes/custom/titlebar/floating_focus_active.png"
-
-theme.titlebar_maximized_button_normal_inactive = "/home/slash/.config/awesome/themes/custom/titlebar/maximized_normal_inactive.png"
-theme.titlebar_maximized_button_focus_inactive = "/home/slash/.config/awesome/themes/custom/titlebar/maximized_focus_inactive.png"
-theme.titlebar_maximized_button_normal_active = "/home/slash/.config/awesome/themes/custom/titlebar/maximized_normal_active.png"
-theme.titlebar_maximized_button_focus_active = "/home/slash/.config/awesome/themes/custom/titlebar/maximized_focus_active.png"
-
--- You can use your own command to set your wallpaper
-theme.wallpaper_cmd = { "awsetbg -u feh -c /usr/share/archlinux/wallpaper/archlinux-simplyblack.png" }
-
--- You can use your own layout icons like this:
-theme.layout_fairh = "/home/slash/.config/awesome/themes/custom/layouts/fairhw.png"
-theme.layout_fairv = "/home/slash/.config/awesome/themes/custom/layouts/fairvw.png"
-theme.layout_floating = "/home/slash/.config/awesome/themes/custom/layouts/floatingw.png"
-theme.layout_magnifier = "/home/slash/.config/awesome/themes/custom/layouts/magnifierw.png"
-theme.layout_max = "/home/slash/.config/awesome/themes/custom/layouts/maxw.png"
-theme.layout_fullscreen = "/home/slash/.config/awesome/themes/custom/layouts/fullscreenw.png"
-theme.layout_tilebottom = "/home/slash/.config/awesome/themes/custom/layouts/tilebottomw.png"
-theme.layout_tileleft = "/home/slash/.config/awesome/themes/custom/layouts/tileleftw.png"
-theme.layout_tile = "/home/slash/.config/awesome/themes/custom/layouts/tilew.png"
-theme.layout_tiletop = "/home/slash/.config/awesome/themes/custom/layouts/tiletopw.png"
-theme.layout_spiral = "/home/slash/.config/awesome/themes/custom/layouts/spiralw.png"
-theme.layout_dwindle = "/home/slash/.config/awesome/themes/custom/layouts/dwindlew.png"
-
-theme.awesome_icon = "/usr/share/awesome/icons/awesome16.png"
-
-return theme
--- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
diff --git a/.config/clfswm/Makefile b/.config/clfswm/Makefile
deleted file mode 100644
index d79241a..0000000
--- a/.config/clfswm/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/clfswm
-objects=clfswmrc
-
-include ../../dotfiles.mk
diff --git a/.config/clfswm/clfswmrc b/.config/clfswm/clfswmrc
deleted file mode 100644
index f69623e..0000000
--- a/.config/clfswm/clfswmrc
+++ /dev/null
@@ -1,25 +0,0 @@
-;; -*- mode: lisp; -*-
-(in-package :clfswm)
-
-(defun start-i3lock ()
- "Run i3lock"
- (do-shell "exec i3lock -c 000000"))
-
-(defun start-i3lock-2 ()
- "Run i3lock in second mode"
- (setf *second-mode-leave-function* 'start-i3lock)
- (leave-second-mode))
-
-(defun my-bindings ()
- (define-main-key ("l" :mod-1 :control) 'start-i3lock)
- (define-second-key ("l" :mod-1 :control) 'start-i3lock-2))
-
-(add-hook *binding-hook* 'my-bindings)
-
-;; (defun my-init-hook ()
-;; (add-frame (create-frame :name "The Gimp" :x 0.6 :y 0 :w 0.3 :h 0.2) *root-frame*))
-
-;;y (add-hook *init-hook* 'my-init-hook)
-
-;;(setf *frame-background* "#252a2b")
-;;(setf *frame-foreground* "#eeeeec")
diff --git a/.config/cower/Makefile b/.config/cower/Makefile
index 8828ad3..c7765dc 100644
--- a/.config/cower/Makefile
+++ b/.config/cower/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/cower
+SUBDIR=cower
objects=config
include ../../dotfiles.mk
diff --git a/.config/dunst/Makefile b/.config/dunst/Makefile
index 4f8a4e5..6076e74 100644
--- a/.config/dunst/Makefile
+++ b/.config/dunst/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/dunst
+SUBDIR=dunst
objects=dunstrc
include ../../dotfiles.mk
diff --git a/.config/fehlstart/Makefile b/.config/fehlstart/Makefile
deleted file mode 100644
index 303a9ca..0000000
--- a/.config/fehlstart/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/fehlstart
-objects=fehlstart.rc
-
-include ../../dotfiles.mk
diff --git a/.config/fehlstart/fehlstart.rc b/.config/fehlstart/fehlstart.rc
deleted file mode 100644
index 6810f50..0000000
--- a/.config/fehlstart/fehlstart.rc
+++ /dev/null
@@ -1,22 +0,0 @@
-
-[Bindings]
-launch=<Super>r
-
-[Matching]
-strict=false
-executable=true
-
-[Update]
-interval=15
-
-[Icons]
-show=true
-cache=true
-
-[Border]
-color=#000000
-width=1
-
-[Window]
-width=200
-height=100
diff --git a/.config/fish/Makefile b/.config/fish/Makefile
deleted file mode 100644
index 2b32c1b..0000000
--- a/.config/fish/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/fish
-objects=config.fish
-
-include ../../dotfiles.mk
diff --git a/.config/fish/config.fish b/.config/fish/config.fish
deleted file mode 100644
index f515917..0000000
--- a/.config/fish/config.fish
+++ /dev/null
@@ -1,76 +0,0 @@
-function fish_prompt -d "Write out the prompt"
- set last_status $status
- set current_directory (prompt_pwd)
- set git_branch (git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/')
- set cnormal (set_color white)
-
- echo -n $cnormal
-
- printf '%s%s%s' (set_color magenta) (hostname|cut -d . -f 1) $cnormal
-
- if test -n "$current_directory"
- printf ' %s%s%s' (set_color $fish_color_cwd) $current_directory $cnormal
- end
-
- if test -n "$git_branch"
- printf '@%s%s%s' (set_color yellow) $git_branch $cnormal
- end
-
- if test $last_status -eq 0
- printf '%s' (set_color --bold green)
- else
- printf '%s' (set_color --bold red)
- end
-
- printf '>%s ' (set_color normal)
-end
-
-function grep
- /bin/grep --color=always $argv
-end
-
-function less
- /bin/less -FXRS $argv
-end
-
-function ls
- /bin/ls -F --color=always $argv
-end
-
-function mysql
- /usr/bin/mysql --pager $argv
-end
-
-function slrn
- set -x NNTPSERVER 'news.gmane.org'
- /usr/bin/slrn $argv
-end
-
-function shutdown
- dbus-send --system --print-reply \
- --dest="org.freedesktop.ConsoleKit" \
- /org/freedesktop/ConsoleKit/Manager \
- org.freedesktop.ConsoleKit.Manager.Stop
-end
-
-function reboot
- dbus-send --system --print-reply \
- --dest="org.freedesktop.ConsoleKit" \
- /org/freedesktop/ConsoleKit/Manager \
- org.freedesktop.ConsoleKit.Manager.Restart
-end
-
-function engage
- play -n -c1 synth whitenoise band -n 100 20 band -n 50 20 gain +25 fade h 1 864000 1
-end
-
-function lscompmod -d "List kernel modules used by hardware"
- lspci -mvk | awk '/^Module/ {print $2}' | sort -u
-end
-
-set -x PAGER 'less -FXRS'
-set -x BROWSER conkeror
-set -x EDITOR 'emacsclient -c -a emacs'
-set -x PATH ~/usr/bin $PATH /sbin /usr/sbin /usr/local/emacs/bin/ \
- /usr/local/bin /usr/local/stumpwm/bin /usr/local/scwm/bin \
- /usr/local/clfswm/bin /opt/plan9/bin
diff --git a/.config/herbstluftwm/Makefile b/.config/herbstluftwm/Makefile
deleted file mode 100644
index 62151ad..0000000
--- a/.config/herbstluftwm/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-DESTDIR:=$(DESTDIR)/herbstluftwm
-objects=autostart panel.sh
-
-include ../../dotfiles.mk
-
-install-autostart: MODE=744
diff --git a/.config/herbstluftwm/autostart b/.config/herbstluftwm/autostart
deleted file mode 100755
index 83d236f..0000000
--- a/.config/herbstluftwm/autostart
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/bin/bash
-
-# this is a simple config for herbstluftwm
-
-function hc() {
- herbstclient "$@"
-}
-
-hc emit_hook reload
-
-# remove all existing keybindings
-hc keyunbind --all
-
-# keybindings
-Mod=Mod4
-hc keybind $Mod-Shift-q quit
-hc keybind $Mod-Shift-r reload
-hc keybind $Mod-Shift-c close
-
-hc keybind $Mod-c spawn urxvt
-hc keybind $Mod-e spawn emacsclient -ca emacs
-hc keybind $Mod-w spawn conkeror
-
-# tags
-TAG_NAMES=( {1..9} )
-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
-
-# cycle through tags
-hc keybind $Mod-period use_index +1 --skip-visible
-hc keybind $Mod-comma use_index -1 --skip-visible
-hc keybind $Mod-Right use_index +1 --skip-visible
-hc keybind $Mod-Left use_index -1 --skip-visible
-
-# layouting
-hc keybind $Mod-r remove
-hc keybind $Mod-space cycle_layout 1
-hc keybind $Mod-u split vertical 0.5
-hc keybind $Mod-o split horizontal 0.5
-hc keybind $Mod-s floating toggle
-# hc keybind $Mod-f fullscreen toggle
-# hc keybind $Mod-p pseudotile toggle
-
-# resizing
-RESIZESTEP=0.05
-hc keybind $Mod-Control-h resize left +$RESIZESTEP
-hc keybind $Mod-Control-j resize down +$RESIZESTEP
-hc keybind $Mod-Control-k resize up +$RESIZESTEP
-hc keybind $Mod-Control-l resize right +$RESIZESTEP
-
-# mouse
-hc mouseunbind --all
-hc mousebind $Mod-Button1 move
-hc mousebind $Mod-Button2 resize
-hc mousebind $Mod-Button3 zoom
-
-# 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-b focus left
-hc keybind $Mod-n focus down
-hc keybind $Mod-p focus up
-hc keybind $Mod-f focus right
-hc keybind $Mod-i jumpto urgent
-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
-
-# colors
-hc set frame_border_active_color '#222222'
-hc set frame_border_normal_color '#101010'
-hc set frame_bg_normal_color '#565656'
-hc set frame_bg_active_color '#345F0C'
-hc set frame_border_width 1
-hc set window_border_width 3
-hc set window_border_inner_width 1
-hc set window_border_normal_color '#454545'
-hc set window_border_active_color '#9fbc00'
-hc set always_show_frame 1
-hc set frame_gap 4
-# add overlapping window borders
-hc set window_gap -2
-hc set frame_padding 2
-hc set smart_window_surroundings 0
-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=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)' 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
-
-hc pad 0 21
diff --git a/.config/herbstluftwm/panel.sh b/.config/herbstluftwm/panel.sh
deleted file mode 100755
index 22b46ae..0000000
--- a/.config/herbstluftwm/panel.sh
+++ /dev/null
@@ -1,150 +0,0 @@
-#!/bin/bash
-
-monitor=${1:-0}
-monitor2=1
-geometry=( $(herbstclient monitor_rect "$monitor") )
-if [ -z "$geometry" ] ;then
- echo "Invalid monitor $monitor"
- exit 1
-fi
-# geometry has the format: WxH+X+Y
-x=${geometry[0]}
-width=${geometry[2]}
-height=12
-y=0 #$(expr ${geometry[3]} - $height)
-tag_width=40
-font="-misc-tamsyn-medium-r-normal-*-14-*-*-*-*-*-iso8859-*"
-
-selcolor='#24c6e0'
-locolor='#657b83'
-bgcolor='#002b36'
-hicolor="#808080"
-urcolor="#e0c625"
-
-function uniq_linebuffered() {
- awk '$0 != l { print ; l=$0 ; fflush(); }' "$@"
-}
-
-function print_tags() {
- # draw tags
- echo -n "$separator"
- for i in "${TAGS[@]}" ; do
- if [[ "${TAGS2[@]}" == *"#${i:1}"* ]]; then
- echo -n "^bg($selcolor)^fg(#000000) ${i:1} ^fg()^bg()"
- elif [[ "${TAGS2[@]}" == *"+${i:1}"* ]]; then
- echo -n "^bg($locolor)^fg(#000000) ${i:1} ^fg()^bg()"
- else
- case ${i:0:1} in
- '#')
- echo -n "^bg($selcolor)^fg(#000000) ${i:1} ^fg()^bg()"
- ;;
- '+')
- echo -n "^bg($locolor)^fg(#000000) ${i:1} ^fg()^bg()"
- ;;
- ':')
- echo -n "^bg($hicolor)^fg(#000000) ${i:1} ^fg()^bg()"
- ;;
- '!')
- echo -n "^bg($urcolor)^fg(#000000) ${i:1} ^fg()^bg()"
- ;;
- *)
- echo -n "^bg($bgcolor)^fg(#ffffff) ${i:1} ^fg()^bg()"
- ;;
- esac
- fi
- echo -n "$separator"
- done
-}
-
-function print_mailboxes() {
- declare -A mailnames
- mailboxes=(ninthfloor gmail aethon ryuslash.org)
- mailnames=(
- [ninthfloor]="9f"
- [gmail]="gm"
- [aethon]="aet"
- [ryuslash.org]="ryu")
- mailtxt=""
- for j in "${mailboxes[@]}"; do
- mailfile="$HOME/documents/mail/$j/inbox/new/"
- mailcnt=$(ls $mailfile | wc -l)
-
- if [ $mailcnt -gt 0 ]; then
- mailsha1=$(echo $j | sha1sum)
- mailcolor="#${mailsha1:0:6}"
- else
- mailcolor=$bgcolor
- fi
-
- mailtxt="$mailtxt${separator}^bg($mailcolor)^fg(#ffffff) ${mailnames[$j]} ^fg()^bg()"
- done
- mailtxt_only=$(echo -n "$mailtxt" | sed 's.\^[^(]*([^)]*)..g')
- let mailtxt_width=$(textwidth "$font" "$mailtxt_only")+10
- echo -n "^p(_RIGHT)^p(-$mailtxt_width)$mailtxt"
-}
-
-function print_services() {
- services=(emacs httpd mysqld dunst xbindkeys mpdscribble sshd mpd)
- servicetxt=""
- for j in "${services[@]}"; do
- servicetxt="$servicetxt$separator$(status $j)"
- done
- servicetxt_only=$(echo -n "$servicetxt" | sed 's.\^[^(]*([^)]*)..g')
- let servicetxt_width=($(textwidth "$font" "$servicetxt_only")+7)/2
-
- echo -n "^p(_CENTER)^p(-$servicetxt_width)$servicetxt"
-}
-
-function status()
-{
- running=$(${1}_running 2>/dev/null || pidof $1)
-
- if [ -n "$running" ]; then
- color="darkgreen"
- else
- color="darkred"
- fi
-
- echo -n "^bg($color)^fg(#ffffff) $1 ^fg()^bg()"
-}
-
-function emacs_running()
-{
- ps ax | awk '{ print $5 " " $6 }' | grep -E "^emacs --daemon"
-}
-
-{
- childpid=$!
- herbstclient --idle
- kill $childpid
-} 2> /dev/null | {
- TAGS=( $(herbstclient tag_status $monitor) )
- TAGS2=( $(herbstclient tag_status $monitor2) )
-
- separator="^fg($bgcolor)^ro(1x$height)^fg()"
- print_tags
- print_services
- print_mailboxes
-
- echo
- # wait for next event
- read line || break
- cmd=( $line )
- # find out event origin
- case "${cmd[0]}" in
- tag*)
- TAGS=( $(herbstclient tag_status $monitor) )
- TAGS2=( $(herbstclient tag_status $monitor2) )
- ;;
- quit_panel)
- exit
- ;;
- esac
-
- sleep 1s
-} 2> /dev/null | dzen2 -w $width -x $x -y $y -fn "$font" -h $height \
- -ta l -bg "$bgcolor"
-
-# Local Variables:
-# eval: (git-auto-commit-mode 1)
-# End:
diff --git a/.config/newsbeuter/.gitignore b/.config/newsbeuter/.gitignore
deleted file mode 100644
index 8afd898..0000000
--- a/.config/newsbeuter/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-cache.*
-credentials
-history.*
diff --git a/.config/newsbeuter/Makefile b/.config/newsbeuter/Makefile
deleted file mode 100644
index fbf22de..0000000
--- a/.config/newsbeuter/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/newsbeuter
-objects=config urls
-
-include ../../dotfiles.mk
diff --git a/.config/newsbeuter/config b/.config/newsbeuter/config
deleted file mode 100644
index 257f150..0000000
--- a/.config/newsbeuter/config
+++ /dev/null
@@ -1,27 +0,0 @@
-
-auto-reload yes
-reload-threads 3
-reload-time 60
-
-browser firefox
-
-confirm-exit yes
-
-feedlist-format "%-35t %?d?- %-35d&? %> %u"
-articlelist-format "%-4i %f %t"
-feedlist-title-format "%N %V %> %u feeds with new articles"
-articlelist-title-format "%T"
-
-max-items 500
-
-show-read-feeds no
-show-read-articles no
-
-html-renderer "w3m -dump -T text/HTML -cols 72"
-
-color listfocus default red
-color info default black bold
-
-highlight article "^(Feed|Title|Author|Link|Date):.*" yellow default bold
-
-article-sort-order date-desc
diff --git a/.config/newsbeuter/urls b/.config/newsbeuter/urls
deleted file mode 100644
index 911e000..0000000
--- a/.config/newsbeuter/urls
+++ /dev/null
@@ -1,176 +0,0 @@
-# -*- mode: conf; eval: (git-auto-commit-mode 1) -*-
-http://ryuslash.ninth.su/blog/blog.xml
-#-----[ Followed projects ]-------------------------------------------
-# https://github.com/ryuslash.private.atom?token=7362ca0604736cd92b5441949e8c9cd4
-# http://gitorious.org/~ryuslash/watchlist.atom
-
-#-----[ Blogs ]-------------------------------------------------------
-# http://julien.danjou.info/blog/index.xml blogs
-# http://kakaroto.homelinux.net/feed/ blogs
-# http://awhan.wordpress.com/feed/ blogs
-http://beej.us/blog/feed/ blogs
-# http://torvalds-family.blogspot.com/feeds/posts/default blogs
-# http://emacs.wordpress.com/feed/ blogs
-http://feedproxy.google.com/SaferCode blogs
-# http://blog.gitorious.org/feed/ blogs
-# http://dieter.plaetinck.be/index.rss blogs
-http://irreal.org/blog/?feed=rss2
-
-# Reddit
-
-# http://www.reddit.com/r/announcements/new/.rss
-# http://www.reddit.com/r/archlinux/new/.rss
-# http://www.reddit.com/r/blog/new/.rss
-# http://www.reddit.com/r/c_language/new/.rss
-# http://www.reddit.com/r/C_Programming/new/.rss
-# http://www.reddit.com/r/coding/new/.rss
-# http://www.reddit.com/r/commandline/new/.rss
-# http://www.reddit.com/r/cpp/new/.rss
-# http://www.reddit.com/r/csharp/new/.rss
-# http://www.reddit.com/r/django/new/.rss
-# http://www.reddit.com/r/emacs/new/.rss
-# http://www.reddit.com/r/ExpertProgramming/new/.rss
-# http://www.reddit.com/r/Fedora/new/.rss
-# http://www.reddit.com/r/git/new/.rss
-# http://www.reddit.com/r/golang/new/.rss
-# http://www.reddit.com/r/javascript/new/.rss
-# http://www.reddit.com/r/linux/new/.rss
-# http://www.reddit.com/r/linux_gaming/new/.rss
-# http://www.reddit.com/r/LinuxHacking/new/.rss
-# http://www.reddit.com/r/maemo/new/.rss
-# http://www.reddit.com/r/n900/new/.rss
-# http://www.reddit.com/r/opensource/new/.rss
-# http://www.reddit.com/r/PHP/new/.rss
-# http://www.reddit.com/r/programming/new/.rss
-# http://www.reddit.com/r/Python/new/.rss
-# http://www.reddit.com/r/scheme/new/.rss
-# http://www.reddit.com/r/systems/new/.rss
-# http://www.reddit.com/r/wayland/new/.rss
-
-#-----[ CVS Changes ]-------------------------------------------------
-# http://git.naquadah.org/?p=naquadah-theme.git;a=rss cvs
-#http://git.naquadah.org/?p=rainbow.git;a=rss cvs
-# http://code.google.com/feeds/p/autopair/svnchanges/basic cvs
-# http://git.cs.fau.de/?p=re06huxa/herbstluftwm;a=atom cvs
-# https://github.com/knopwob/dunst/commits/master.atom cvs
-# https://github.com/akrennmair/newsbeuter/commits/master.atom
-# http://repo.or.cz/w/conkeror.git/atom
-# https://github.com/mooz/keysnail/commits/master.atom
-
-#-----[ Programming ]-------------------------------------------------
-# http://www.reddit.com/r/cpp/.rss devel
-# http://services.devx.com/outgoing/devxfeed.xml devel
-#http://www.dzone.com/feed/frontpage/rss.xml devel
-# http://www.reddit.com/r/ExpertProgramming/.rss devel
-# http://www.reddit.com/r/programming/.rss devel
-# http://steve-yegge.blogspot.com/feeds/posts/default devel
-# http://www.reddit.com/r/systems/.rss devel
-# http://www.reddit.com/r/coding/.rss devel
-# http://www.reddit.com/r/git/.rss devel
-# http://www.reddit.com/r/C_Programming/.rss devel
-# http://feeds.feedburner.com/FalloutTutorials devel
-# http://www.devarticles.com/rss.xml devel
-# http://www.script-tutorials.com/feed/rss/
-# http://news.ycombinator.com/rss
-# https://www.djangoproject.com/rss/community/q-and-a/
-
-#-----[ Linux and FLOSS ]---------------------------------------------
-# http://www.reddit.com/r/commandline/.rss linux
-# http://www.desktoplinux.com/backend/headlines.rss linux
-# http://distrowatch.com/news/dw.xml linux
-# http://www.howtoforge.com/node/feed linux
-# http://www.ibm.com/developerworks/views/linux/rss/libraryview.jsp?type_by=Articles linux
-# http://www.ibm.com/developerworks/views/linux/rss/libraryview.jsp?type_by=Tutorials linux
-# http://feeds.feedburner.com/LinuxMagazine linux
-# http://www.linuxprogrammingblog.com/rss.xml linux
-# http://linuxtoday.com/backend/biglt.rss linux
-# http://www.linux.com/rss/feeds.php linux
-# http://www.linuxinsider.com/perl/syndication/rssfull.pl linux
-# http://lwn.net/headlines/newrss linux
-# http://blogs.zdnet.com/open-source/wp-rss2.php linux
-# http://ostatic.com/blog/feed linux
-# http://www.reddit.com/r/linux/.rss linux
-# http://www.theopenforce.com/atom.xml linux
-# http://www.ubuntugeek.com/feed/ linux
-# http://www.warpedsystems.sk.ca/backend/index.xml linux
-# http://www.reddit.com/r/archlinux/.rss linux
-# http://www.reddit.com/r/linuxquestions/.rss linux
-http://www.echolinux.com/rss
-# http://www.tuxradar.com/rss
-
-#-----[ Emacs ]-------------------------------------------------------
-# http://wordpress.com/tag/emacs/feed/ emacs
-# http://www.reddit.com/r/emacs/.rss emacs
-# http://planet.emacsen.org/atom.xml emacs
-# http://emacsblog.org/feed/ emacs
-# http://www.emacswiki.org/emacs?action=rss emacs
-# http://feeds.feedburner.com/XahsEmacsBlog
-# http://www.masteringemacs.org/feed/
-# http://wikemacs.org/wiki/index.php?title=Special:RecentChanges&feed=atom
-# http://stackoverflow.com/feeds/tag?tagnames=emacs&sort=newest
-# http://stackoverflow.com/feeds/tag?tagnames=elisp&sort=newest
-
-#-----[ N900 ]--------------------------------------------------------
-# http://www.reddit.com/r/n900/.rss n900
-# http://maemo.org/news/planet-maemo/rss.xml n900
-# http://www.reddit.com/r/maemo/.rss n900
-
-#-----[ iPhone ]------------------------------------------------------
-http://icodeblog.com/feed/ iphone
-http://iphonesdkdev.blogspot.com/feeds/posts/default iphone
-http://iphonedevelopertips.com/feed iphone
-
-#-----[ Other Software ]----------------------------------------------
-# http://www.archlinux.org/feeds/news/ software
-# http://gitlog.wordpress.com/feed/ software
-# http://rollingrelease.com/?feed=rss software
-# http://sourceforge.net/export/rss2_keepsake.php?group_id=134378 software
-# http://valajournal.blogspot.com/feeds/posts/default software
-# http://www.gimp.org/news.rdf
-http://stackoverflow.com/feeds/tag?tagnames=git&sort=newest
-# http://git.savannah.gnu.org/cgit/identica-mode.git/atom/?h=master
-
-#-----[ Games ]-------------------------------------------------------
-# http://feeds.feedburner.com/qj/qjnet game
-# http://www.swtor.com/feed/news/all
-
-#-----[ Funny ]-------------------------------------------------------
-# http://feeds.feedburner.com/ClientsFromHell funny
-#http://feeds.feedburner.com/VeryDemotivational funny
-
-#-----[ Comics ]------------------------------------------------------
-# http://feeds.feedburner.com/AbstruseGoose comics
-# http://www.cad-comic.com/rss/rss.xml comics
-# http://feeds.dilbert.com/DilbertDailyStrip comics
-# http://feedproxy.google.com/uclick/garfield comics
-# http://feeds.feedburner.com/GeekAndPoke comics
-# http://feeds.feedburner.com/NotInventedHere comics
-# http://syndicated.livejournal.com/oglaf/data/rss comics
-# http://feeds.feedburner.com/omaketheater comics
-# http://www.penny-arcade.com/rss.xml comics
-# http://www.pvponline.com/rss/?section=article comics
-# http://www.questionablecontent.net/QCRSS.xml comics
-# http://feeds.feedburner.com/ScenesFromAMultiverse comics
-# http://www.vgcats.com/vgcats.rdf.xml comics
-# http://feeds2.feedburner.com/virtualshackles comics
-# http://xkcd.com/rss.xml comics
-# http://feeds.feedburner.com/maximumble?format=xml comics
-http://feeds.feedburner.com/ProgsLife comics
-# http://www.rsspect.com/rss/asw.xml
-# http://pbfcomics.com/feed/feed.xml
-http://feeds.feedburner.com/MinionComics
-# http://www.savagechickens.com/feed
-# http://feeds.feedburner.com/basiccomic
-
-#-----[ Misc ]--------------------------------------------------------
-http://wallbase.cc/rss misc
-http://www.mailinator.com/rss.jsp?email=ryuslash misc
-# http://www.reddit.com/r/unixporn/.rss misc
-
-
-#-----[ New ]----------------------------------------------------------
-# http://rss.feedsportal.com/c/32569/f/491734/index.rss
-# http://feeds.feedburner.com/TheGeekStuff
-# http://feeds2.feedburner.com/Command-line-fu
-# http://feeds.feedburner.com/GoDjango
-# http://identity.mozilla.com/rss
diff --git a/.config/zathura/Makefile b/.config/zathura/Makefile
index c6c93c1..b076c74 100644
--- a/.config/zathura/Makefile
+++ b/.config/zathura/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/zathura
+SUBDIR=zathura
objects=zathurarc
include ../../dotfiles.mk
diff --git a/.conkerorrc/Makefile b/.conkerorrc/Makefile
index 8161f39..0c22340 100644
--- a/.conkerorrc/Makefile
+++ b/.conkerorrc/Makefile
@@ -1,5 +1,4 @@
-DESTDIR:=$(DESTDIR)/.conkerorrc
-modules=themes styles
+SUBDIR=.conkerorrc
objects=gtk2rc init.js ext_restore.js
include ../dotfiles.mk
diff --git a/.conkerorrc/init.js b/.conkerorrc/init.js
index 1d1387c..3cef6cf 100644
--- a/.conkerorrc/init.js
+++ b/.conkerorrc/init.js
@@ -2,7 +2,6 @@ require("content-policy.js");
require("favicon");
load_paths.push("file:///usr/local/clark/share/conkeror/modules/");
-theme_load_paths.push("/home/slash/.conkerorrc/themes/");
require("clark");
@@ -148,11 +147,10 @@ define_webjump("chickadee",
// content_policy_bytype_table.object = oni_block_flash;
cwd = make_file("/home/slash/downloads/");
-hint_digits = "arstdhneio";
+hint_digits = "asdfghjkl;";
read_buffer_show_icons = true;
title_format_fn = ext_title_format;
url_remoting_fn = load_url_in_new_buffer;
-markam_program = "/home/slash/projects/markam/src/markam";
define_key(content_buffer_normal_keymap, "C-x C-b", "switch-to-buffer");
define_key(content_buffer_normal_keymap, "C-y", "paste-url-new-buffer");
@@ -171,7 +169,6 @@ add_hook("mode_line_hook", mode_line_adder(downloads_status_widget));
remove_hook("download_added_hook", open_download_buffer_automatically);
hints_minibuffer_annotation_mode(true);
-theme_load("yoshi");
external_content_handlers.set("application/pdf", "zathura");
external_content_handlers.set("application/vnd.ms-excel", "libreoffice");
@@ -305,7 +302,3 @@ register_user_stylesheet(
"}"
)
);
-
-oni_add_sheet("github.css");
-oni_add_sheet("help.css");
-oni_add_sheet("git-scm.css");
diff --git a/.conkerorrc/styles/.gitignore b/.conkerorrc/styles/.gitignore
deleted file mode 100644
index b3a5267..0000000
--- a/.conkerorrc/styles/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.css
diff --git a/.conkerorrc/styles/Makefile b/.conkerorrc/styles/Makefile
deleted file mode 100644
index c75377b..0000000
--- a/.conkerorrc/styles/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-DESTDIR:=$(DESTDIR)/styles
-objects=github.css help.css git-scm.css
-
-include ../../dotfiles.mk
-
-$(objects): %.css: %.less
- lessc -x $^ > $@
diff --git a/.conkerorrc/styles/base.less b/.conkerorrc/styles/base.less
deleted file mode 100644
index dcb5a5e..0000000
--- a/.conkerorrc/styles/base.less
+++ /dev/null
@@ -1,4 +0,0 @@
-@import "tango";
-
-@monospace-font: "Envy Code R";
-@background: #111113;
diff --git a/.conkerorrc/styles/git-scm.less b/.conkerorrc/styles/git-scm.less
deleted file mode 100644
index d69a97d..0000000
--- a/.conkerorrc/styles/git-scm.less
+++ /dev/null
@@ -1,18 +0,0 @@
-@import "base";
-
-@-moz-document domain(git-scm.com) {
- .book#main {
- background: @background !important;
- color: @aluminium-1 !important;
-
- code, pre {
- background: @aluminium-6 !important;
- color: @aluminium-2 !important;
- font-family: @monospace-font !important;
- }
-
- &, code, pre {
- border: none !important;
- }
- }
-}
diff --git a/.conkerorrc/styles/github.less b/.conkerorrc/styles/github.less
deleted file mode 100644
index e4d3ed0..0000000
--- a/.conkerorrc/styles/github.less
+++ /dev/null
@@ -1,162 +0,0 @@
-@import "base";
-
-@-moz-document url("https://github.com/"), url("https://github.com/dashboard") {
- #dashboard {
- .filter-bar {
- background: @aluminium-5 !important;
- border-bottom: none !important;
-
- li a.filter_selected {
- color: @aluminium-1 !important;
- }
- }
-
- .repos {
- border: none !important;
- background-color: @aluminium-6 !important;
-
- .bottom-bar {
- background-color: @aluminium-5 !important;
- }
-
- .top-bar {
- background: @aluminium-5 !important;
- border-bottom: none !important;
- }
-
- h2 {
- color: inherit !important;
- }
- }
-
- ul.repo_list li {
- &.private {
- background: @aluminium-5 !important;
- }
-
- a {
- border-width: 0 !important;
- }
- }
- }
-
- #footer {
- text-shadow: none !important;
- }
-
- .button .minibutton {
- background: @aluminium-6 !important;
- }
-
- .header {
- background: @aluminium-5 !important;
- color: @aluminium-1 !important;
- border-bottom: none !important;
- text-shadow: none !important;
-
- .divider-vertical {
- background: @aluminium-5 !important;
- border-right: none !important;
- }
-
- .top-nav a,
- .topsearch a#advanced_search,
- #user-links a {
- color: @aluminium-1 !important;
- }
- }
-
- .markdown-body {
- code, tt {
- background-color: @aluminium-5 !important;
- border: none !important;
- color: @aluminium-1 !important;
- font-family: @monospace-font !important;
- }
- }
-
- .minibutton.dark-grey {
- backgrond: @aluminium-6 !important;
- }
-
- .news {
- .alert {
- border-top: none !important;
-
- .branch-info,
- .pull-info {
- background: @aluminium-5 !important;
- color: @aluminium-1 !important;
- }
-
- .gravatar {
- background: none !important;
- }
-
- .simple .title {
- color: @aluminium-1 !important;
- }
- }
-
- .commits li img {
- background: none !important;
- }
-
- blockquote {
- color: @aluminium-1 !important;
- }
- }
-
- .pagehead .container > ul.tabs {
- background: @aluminium-6 !important;
- border: none !important;
-
- li a {
- text-shadow: none !important;
- border: none !important;
-
- &:hover,
- &.selected {
- background: @aluminium-5 !important;
- }
- }
- }
-
- .pagehead-actions a.feed {
- background: @aluminium-5 !important;
- border: none !important;
- }
-
- .pagination {
- background: @aluminium-6 !important;
- border: none !important;
-
- a {
- text-shadow: none !important;
- border-bottom: none !important;
-
- &:hover {
- background: @aluminium-5 !important;
- }
- }
- }
-
- a {
- color: @orange-1 !important;
-
- &:visited {
- color: @plum-1 !important;
- }
-
- &.header-logo-blacktocat {
- &, &:visited {
- color: @aluminium-1 !important;
- }
- }
- }
-
- body {
- background-color: @background !important;
- color: @aluminium-1 !important;
- }
-}
diff --git a/.conkerorrc/styles/help.less b/.conkerorrc/styles/help.less
deleted file mode 100644
index 339d7fa..0000000
--- a/.conkerorrc/styles/help.less
+++ /dev/null
@@ -1,21 +0,0 @@
-@import "base";
-
-@-moz-document url("chrome://conkeror-help/content/help.html") {
- body {
- background: @background !important;
- color: @aluminium-1 !important;
- }
-
- a {
- color: @orange-1 !important;
-
- &:visited {
- color: @plum-1 !important;
- }
- }
-
- pre, .key {
- background: @aluminium-5 !important;
- font-family: @monospace-font !important;
- }
-}
diff --git a/.conkerorrc/styles/tango.less b/.conkerorrc/styles/tango.less
deleted file mode 100644
index ed6858b..0000000
--- a/.conkerorrc/styles/tango.less
+++ /dev/null
@@ -1,27 +0,0 @@
-@butter-1: #fce94f;
-@butter-2: #edd400;
-@butter-3: #c4a000;
-@orange-1: #fcaf3e;
-@orange-2: #f57900;
-@orange-3: #ce5c00;
-@chocolate-1: #e9b96e;
-@chocolate-2: #c17d11;
-@chocolate-3: #8f5902;
-@chameleon-1: #8ae234;
-@chameleon-2: #73d216;
-@chameleon-3: #4e9a06;
-@sky-blue-1: #729fcf;
-@sky-blue-2: #3465a4;
-@sky-blue-3: #204a87;
-@plum-1: #ad7fa8;
-@plum-2: #75507b;
-@plum-3: #5c3566;
-@scarlet-red-1: #ef2929;
-@scarlet-red-2: #cc0000;
-@scarlet-red-3: #a40000;
-@aluminium-1: #eeeeec;
-@aluminium-2: #d3d7cf;
-@aluminium-3: #babdb6;
-@aluminium-4: #888a85;
-@aluminium-5: #555753;
-@aluminium-6: #2e3436;
diff --git a/.conkerorrc/themes/Makefile b/.conkerorrc/themes/Makefile
deleted file mode 100644
index adb917a..0000000
--- a/.conkerorrc/themes/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/themes
-modules=naquadah yoshi
-
-include ../../dotfiles.mk
diff --git a/.conkerorrc/themes/naquadah/Makefile b/.conkerorrc/themes/naquadah/Makefile
deleted file mode 100644
index 0512339..0000000
--- a/.conkerorrc/themes/naquadah/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-DESTDIR:=$(DESTDIR)/naquadah
-objects=conkeror--scrollbars.css hints--url-panel.css minibuffer.css \
- mode-line.css new-tabs.css tab-bar.css theme.json
-
-include ../../../dotfiles.mk
diff --git a/.conkerorrc/themes/naquadah/conkeror--scrollbars.css b/.conkerorrc/themes/naquadah/conkeror--scrollbars.css
deleted file mode 100644
index 0f70e96..0000000
--- a/.conkerorrc/themes/naquadah/conkeror--scrollbars.css
+++ /dev/null
@@ -1,36 +0,0 @@
-
-@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-
-/* The "background" behind the scrolling part of the scrollbar. */
-scrollbar {
- background-color: #222;
-}
-
-/* corner between horizontal and vertical scrollbars */
-scrollcorner {
- background-color: black;
-}
-
-/* The scroll up/down buttons. */
-scrollbarbutton {
- background-color: #666;
-}
-
-/* The actual scrolling part of the scrollbar. */
-thumb {
- background-color: #666;
-}
-
-thumb, scrollbarbutton {
- -moz-border-bottom-colors: #000 #333;
- -moz-border-left-colors: #aaa #888;
- -moz-border-right-colors: #000 #333;
- -moz-border-top-colors: #aaa #888;
-}
-
-scrollbarbutton:hover:active, scrollbarbutton[active="true"] {
- -moz-border-bottom-colors: #aaa #888;
- -moz-border-left-colors: #000 #333;
- -moz-border-right-colors: #aaa #888;
- -moz-border-top-colors: #000 #333;
-}
diff --git a/.conkerorrc/themes/naquadah/hints--url-panel.css b/.conkerorrc/themes/naquadah/hints--url-panel.css
deleted file mode 100644
index 143f3c1..0000000
--- a/.conkerorrc/themes/naquadah/hints--url-panel.css
+++ /dev/null
@@ -1,17 +0,0 @@
-
-@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-
-.panel {
- border-top: 4px double #333333;
- color: white;
- background-color: black;
-}
-
-.panel .panel-row-label {
- font-weight: bold;
-}
-
-.panel .url-panel-label {
- font-weight: bold;
-}
-
diff --git a/.conkerorrc/themes/naquadah/minibuffer.css b/.conkerorrc/themes/naquadah/minibuffer.css
deleted file mode 100644
index c882f3e..0000000
--- a/.conkerorrc/themes/naquadah/minibuffer.css
+++ /dev/null
@@ -1,52 +0,0 @@
-
-@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-
-#minibuffer {
- background-color: #252A2E;
- border: 0px none #444;
- border-top: 0;
- color: #EEEEEC;
- font: 11px Tahoma;
-}
-
-#minibuffer-input, #minibuffer-input * {
- color: #EEEEEC;
-}
-
-#minibuffer-prompt {
- color: #EEEEEC;
-}
-
-/* Completions display */
-
-tree.completions treechildren { border: none !important; }
-
-tree.completions treecol { -moz-binding: none !important; }
-tree.completions {
- -moz-appearance: none !important;
- border: 0px none !important;
- border-top: 4px double #333333 !important;
- background-color: #252A2E !important;
- -moz-border-top-colors: -moz-initial !important;
- color: #EEEEEC !important;
-}
-
-tree.completions treechildren::-moz-tree-row {
- background-color: #252A2E !important;
- border: none;
-}
-
-tree.completions treechildren::-moz-tree-row(current) {
- background-color: #0C191C !important;
- color: #EEEEEC;
-}
-
-tree.completions treechildren::-moz-tree-cell-text(completion-description) {
- color: green !important;
- font-weight: bold !important;
-}
-
-tree.completions treechildren::-moz-tree-cell-text(current) {
- color: #EEEEEC !important;
-}
-
diff --git a/.conkerorrc/themes/naquadah/mode-line.css b/.conkerorrc/themes/naquadah/mode-line.css
deleted file mode 100644
index 7e1ed45..0000000
--- a/.conkerorrc/themes/naquadah/mode-line.css
+++ /dev/null
@@ -1,11 +0,0 @@
-.mode-line {
- font: 11px Tahoma;
- padding: 0px;
- border: 1px solid #2E3436;
- color: #EEEEEC;
- background-color: #0C191C;
-}
-
-.mode-line label {
- color: #EEEEEC;
-}
diff --git a/.conkerorrc/themes/naquadah/new-tabs.css b/.conkerorrc/themes/naquadah/new-tabs.css
deleted file mode 100644
index f5d30c0..0000000
--- a/.conkerorrc/themes/naquadah/new-tabs.css
+++ /dev/null
@@ -1,54 +0,0 @@
-#tab2-bar {
- background: #222;
-}
-
-.tab2 {
- margin: 2px 0px 0px 2px;
- padding: 0px;
- height: 22px;
- border-width: 2px;
- border-bottom-width: 0;
- border-style: solid;
- -moz-border-radius: 3px 3px 0 0;
- -moz-border-left-colors: #888 #555;
- -moz-border-right-colors: #000 #171717;
- -moz-border-top-colors: #888 #555;
- background: #333;
- min-width: 200px;
- max-width: 200px;
- overflow: hidden; /* Chops end of label */
-}
-
-.tab2[selected=true] {
- -moz-border-left-colors: #aaa #888;
- -moz-border-right-colors: #000 #333;
- -moz-border-top-colors: #aaa #888;
- background: #666;
-}
-
-.tab2:hover {
- -moz-border-left-colors: #eee #bbb;
- -moz-border-right-colors: #333 #666;
- -moz-border-top-colors: #eee #bbb;
- background: #999;
-}
-
-.tab2-label {
- margin-left: 4px;
- padding-top: 1px;
- color: #fff;
- font: 11px Tahoma;
-}
-
-.tab2-icon {
- margin: 1px !important;
- padding: 1px;
- width: 20px;
- height: 15px;
- max-height: 15px;
- -moz-border-radius: 1px;
- background: black;
- color: white;
- font: 900 11px Tahoma;
- text-align: center;
-}
diff --git a/.conkerorrc/themes/naquadah/tab-bar.css b/.conkerorrc/themes/naquadah/tab-bar.css
deleted file mode 100644
index c451778..0000000
--- a/.conkerorrc/themes/naquadah/tab-bar.css
+++ /dev/null
@@ -1,41 +0,0 @@
-
-@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-
-/* TABS */
-#tab2-bar {
- background: #000;
-}
-
-#tab2-bar .tab2 {
- margin: 0;
- padding: 0;
- border: none;
- /*height: 19px;
- border: 1px solid #666;
- min-width: 200px;
- max-width: 200px;*/
- background: #333;
- overflow: hidden;
-}
-
-#tab2-bar .tab2-label {
- margin: 0;
- color: white;
- font: 11px Tahoma;
-}
-
-#tab2-bar .tab2-icon {
- height: 16px;
- width: 16px;
- background: #222;
- color: white;
- border: 1px solid #999;
- font: 900 11px Tahoma;
- text-align: center;
-}
-
-#tab2-bar .tab2[selected=true] {
- border: 1px solid white;
- background: #666;
- border: 1px solid #999;
-}
diff --git a/.conkerorrc/themes/naquadah/theme.json b/.conkerorrc/themes/naquadah/theme.json
deleted file mode 100644
index bb74ee1..0000000
--- a/.conkerorrc/themes/naquadah/theme.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{ "sheets" : [
- "conkeror--scrollbars.css",
- "new-tabs.css",
- "minibuffer.css",
- "mode-line.css",
- "hints--url-panel.css",
- "tab-bar.css"
- ]
-}
diff --git a/.conkerorrc/themes/yoshi/Makefile b/.conkerorrc/themes/yoshi/Makefile
deleted file mode 100644
index 158dade..0000000
--- a/.conkerorrc/themes/yoshi/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-DESTDIR:=$(DESTDIR)/yoshi
-objects=conkeror--scrollbars.css hints--url-panel.css minibuffer.css \
- mode-line.css new-tabs.css tab-bar.css theme.json
-
-include ../../../dotfiles.mk
diff --git a/.conkerorrc/themes/yoshi/conkeror--scrollbars.css b/.conkerorrc/themes/yoshi/conkeror--scrollbars.css
deleted file mode 100644
index 0f70e96..0000000
--- a/.conkerorrc/themes/yoshi/conkeror--scrollbars.css
+++ /dev/null
@@ -1,36 +0,0 @@
-
-@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-
-/* The "background" behind the scrolling part of the scrollbar. */
-scrollbar {
- background-color: #222;
-}
-
-/* corner between horizontal and vertical scrollbars */
-scrollcorner {
- background-color: black;
-}
-
-/* The scroll up/down buttons. */
-scrollbarbutton {
- background-color: #666;
-}
-
-/* The actual scrolling part of the scrollbar. */
-thumb {
- background-color: #666;
-}
-
-thumb, scrollbarbutton {
- -moz-border-bottom-colors: #000 #333;
- -moz-border-left-colors: #aaa #888;
- -moz-border-right-colors: #000 #333;
- -moz-border-top-colors: #aaa #888;
-}
-
-scrollbarbutton:hover:active, scrollbarbutton[active="true"] {
- -moz-border-bottom-colors: #aaa #888;
- -moz-border-left-colors: #000 #333;
- -moz-border-right-colors: #aaa #888;
- -moz-border-top-colors: #000 #333;
-}
diff --git a/.conkerorrc/themes/yoshi/hints--url-panel.css b/.conkerorrc/themes/yoshi/hints--url-panel.css
deleted file mode 100644
index 143f3c1..0000000
--- a/.conkerorrc/themes/yoshi/hints--url-panel.css
+++ /dev/null
@@ -1,17 +0,0 @@
-
-@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-
-.panel {
- border-top: 4px double #333333;
- color: white;
- background-color: black;
-}
-
-.panel .panel-row-label {
- font-weight: bold;
-}
-
-.panel .url-panel-label {
- font-weight: bold;
-}
-
diff --git a/.conkerorrc/themes/yoshi/minibuffer.css b/.conkerorrc/themes/yoshi/minibuffer.css
deleted file mode 100644
index 12ca4e8..0000000
--- a/.conkerorrc/themes/yoshi/minibuffer.css
+++ /dev/null
@@ -1,49 +0,0 @@
-
-@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-
-#minibuffer {
- background-color: #111113;
- border: none;
- color: #EEEEEC;
- font: 16px "Envy Code R";
-}
-
-#minibuffer-input, #minibuffer-input * {
- color: #EEEEEC;
-}
-
-#minibuffer-prompt {
- color: #EEEEEC;
-}
-
-/* Completions display */
-
-tree.completions treechildren { border: none !important; }
-
-tree.completions treecol { -moz-binding: none !important; }
-tree.completions {
- -moz-appearance: none !important;
- border: 0px none !important;
- background-color: #111113 !important;
- -moz-border-top-colors: -moz-initial !important;
- color: #EEEEEC !important;
- font: 18px "Envy Code R";
-}
-
-tree.completions treechildren::-moz-tree-row {
- background-color: #111113 !important;
- border: none;
-}
-
-tree.completions treechildren::-moz-tree-row(current) {
- background-color: #536580 !important;
- color: #EEEEEC;
-}
-
-tree.completions treechildren::-moz-tree-cell-text(completion-description) {
- color: #b8ffa6 !important;
-}
-
-tree.completions treechildren::-moz-tree-cell-text(current) {
- color: #EEEEEC !important;
-}
diff --git a/.conkerorrc/themes/yoshi/mode-line.css b/.conkerorrc/themes/yoshi/mode-line.css
deleted file mode 100644
index 31aabd7..0000000
--- a/.conkerorrc/themes/yoshi/mode-line.css
+++ /dev/null
@@ -1,11 +0,0 @@
-.mode-line {
- font: 16px "Envy Code R";
- padding: 0px;
- border: none;
- color: #EEEEEC;
- background-color: #222224;
-}
-
-.mode-line label {
- color: #EEEEEC;
-}
diff --git a/.conkerorrc/themes/yoshi/new-tabs.css b/.conkerorrc/themes/yoshi/new-tabs.css
deleted file mode 100644
index f5d30c0..0000000
--- a/.conkerorrc/themes/yoshi/new-tabs.css
+++ /dev/null
@@ -1,54 +0,0 @@
-#tab2-bar {
- background: #222;
-}
-
-.tab2 {
- margin: 2px 0px 0px 2px;
- padding: 0px;
- height: 22px;
- border-width: 2px;
- border-bottom-width: 0;
- border-style: solid;
- -moz-border-radius: 3px 3px 0 0;
- -moz-border-left-colors: #888 #555;
- -moz-border-right-colors: #000 #171717;
- -moz-border-top-colors: #888 #555;
- background: #333;
- min-width: 200px;
- max-width: 200px;
- overflow: hidden; /* Chops end of label */
-}
-
-.tab2[selected=true] {
- -moz-border-left-colors: #aaa #888;
- -moz-border-right-colors: #000 #333;
- -moz-border-top-colors: #aaa #888;
- background: #666;
-}
-
-.tab2:hover {
- -moz-border-left-colors: #eee #bbb;
- -moz-border-right-colors: #333 #666;
- -moz-border-top-colors: #eee #bbb;
- background: #999;
-}
-
-.tab2-label {
- margin-left: 4px;
- padding-top: 1px;
- color: #fff;
- font: 11px Tahoma;
-}
-
-.tab2-icon {
- margin: 1px !important;
- padding: 1px;
- width: 20px;
- height: 15px;
- max-height: 15px;
- -moz-border-radius: 1px;
- background: black;
- color: white;
- font: 900 11px Tahoma;
- text-align: center;
-}
diff --git a/.conkerorrc/themes/yoshi/tab-bar.css b/.conkerorrc/themes/yoshi/tab-bar.css
deleted file mode 100644
index c451778..0000000
--- a/.conkerorrc/themes/yoshi/tab-bar.css
+++ /dev/null
@@ -1,41 +0,0 @@
-
-@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
-
-/* TABS */
-#tab2-bar {
- background: #000;
-}
-
-#tab2-bar .tab2 {
- margin: 0;
- padding: 0;
- border: none;
- /*height: 19px;
- border: 1px solid #666;
- min-width: 200px;
- max-width: 200px;*/
- background: #333;
- overflow: hidden;
-}
-
-#tab2-bar .tab2-label {
- margin: 0;
- color: white;
- font: 11px Tahoma;
-}
-
-#tab2-bar .tab2-icon {
- height: 16px;
- width: 16px;
- background: #222;
- color: white;
- border: 1px solid #999;
- font: 900 11px Tahoma;
- text-align: center;
-}
-
-#tab2-bar .tab2[selected=true] {
- border: 1px solid white;
- background: #666;
- border: 1px solid #999;
-}
diff --git a/.conkerorrc/themes/yoshi/theme.json b/.conkerorrc/themes/yoshi/theme.json
deleted file mode 100644
index bb74ee1..0000000
--- a/.conkerorrc/themes/yoshi/theme.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{ "sheets" : [
- "conkeror--scrollbars.css",
- "new-tabs.css",
- "minibuffer.css",
- "mode-line.css",
- "hints--url-panel.css",
- "tab-bar.css"
- ]
-}
diff --git a/.emacs.d/init.el b/.emacs.d/init.el
deleted file mode 100644
index 21ecce6..0000000
--- a/.emacs.d/init.el
+++ /dev/null
@@ -1,312 +0,0 @@
-;;; init.el --- ryuslash's emacs init
-
-;;; Commentary:
-;; Does so much and changes so often
-
-
-;;; Code:
-
-(load (concat user-emacs-directory "init2"))
-
-(defface git-commit-summary-face
- '((t (:inherit org-level-1)))
- "Face for the git title line."
- :group 'local)
-
-(defface git-commit-overlong-summary-face
- '((t (:background "#873732")))
- "Face for commit titles that are too long."
- :group 'local)
-
-(defface git-commit-nonempty-second-line-face
- '((t (:inherit git-commit-overlong-summary-face)))
- "Face for the supposedly empty line in commit messages."
- :group 'local)
-
-(eval-after-load "ido" '(oni:ido-init))
-(eval-after-load "jabber" '(oni:jabber-init))
-(eval-after-load "newst-treeview" '(require 'newsticker-init))
-(eval-after-load "org" '(require 'org-init))
-(eval-after-load "rainbow-mode" '(oni:rainbow-mode-init))
-(eval-after-load "smex" '(oni:smex-init))
-(eval-after-load "yasnippet" '(oni:yasnippet-init))
-
-(autoload 'define-slime-contrib "slime")
-(autoload 'gtags-mode "gtags" nil t)
-(autoload 'jabber-connect "jabber" nil t)
-(autoload 'php-mode "php-mode" nil t)
-(autoload 'po-mode "po-mode" nil t)
-(autoload 'pony-mode "pony-mode" nil t)
-(autoload 'sawfish-mode "sawfish" nil t)
-(autoload 'server-running-p "server")
-(autoload 'slime-js-minor-mode "slime-js" nil t)
-(autoload 'xmodmap-mode "xmodmap-mode" nil t)
-(autoload 'w3m-bookmark-view "w3m" nil t)
-(autoload 'w3m-goto-url "w3m" nil t)
-
-(require 'geiser-install)
-(require 'uniquify)
-(require 'ext)
-(require 'oni)
-
-(put 'upcase-region 'disabled nil)
-(put 'downcase-region 'disabled nil)
-(put 'narrow-to-region 'disabled nil)
-(put 'scroll-left 'disabled nil)
-
-(setq-default bidi-paragraph-direction 'left-to-right)
-(setq-default c-basic-offset 4)
-(setq-default fci-rule-column 73)
-(setq-default gac-automatically-push-p t)
-(setq-default indent-tabs-mode nil)
-(setq-default php-mode-warn-if-mumamo-off nil)
-(setq-default require-final-newline t)
-(setq-default tab-width 4)
-(setq-default truncate-lines t)
-
-(setq appt-disp-window-function #'oni:appt-display-window-and-jabber)
-(setq appt-display-diary nil)
-(setq auto-mode-case-fold nil)
-(setq auto-save-file-name-transforms oni:auto-save-name-transforms)
-(setq avandu-article-render-function #'avandu-view-w3m)
-(setq backup-directory-alist oni:backup-directory-alist)
-(setq browse-url-browser-function 'browse-url-generic)
-(setq browse-url-generic-program (getenv "BROWSER"))
-(setq c-offsets-alist '((statement-block-intro . +)
- (knr-argdecl-intro . 5)
- (substatement-open . +)
- (substatement-label . 0)
- (label . 0)
- (statement-case-open . +)
- (statement-cont . +)
- (arglist-intro . +)
- (arglist-close . 0)
- (inline-open . 0)
- (brace-list-open . +)
- (topmost-intro-cont first c-lineup-topmost-intro-cont
- c-lineup-gnu-DEFUN-intro-cont)))
-(setq comment-auto-fill-only-comments t)
-(setq custom-file "~/.emacs.d/custom.el")
-(setq custom-theme-directory "~/.emacs.d/themes")
-(setq default-frame-alist
- `((border-width . 0)
- (internal-border-width . 0)
- (vertical-scroll-bars . nil)
- (menu-bar-lines . nil)
- (tool-bar-lines . nil)
- (font . "Envy Code R:pixelsize=18")
- (alpha 90 90)))
-(setq elnode-do-init nil)
-(setq erc-autojoin-channels-alist
- '(("freenode.net" "#ninthfloor" "#emacs")))
-(setq erc-hide-list '("JOIN" "PART" "QUIT"))
-(setq erc-insert-timestamp-function 'erc-insert-timestamp-left)
-(setq erc-nick "ryuslash")
-(setq erc-timestamp-format "[%H:%M] ")
-(setq erc-timestamp-only-if-changed-flag nil)
-(setq fci-rule-color "darkred")
-(setq frame-title-format '(:eval (concat "emacs: " (buffer-name))))
-(setq geiser-repl-history-filename "~/.emacs.d/geiser-history")
-(setq gnus-init-file "~/.emacs.d/gnus")
-(setq gtags-auto-update t)
-(setq help-at-pt-display-when-idle t)
-(setq highlight-80+-columns 72)
-(setq identica-enable-striping t)
-(setq ido-auto-merge-delay-time 1000000)
-(setq ido-default-buffer-method 'selected-window)
-(setq ido-max-window-height 1)
-(setq ido-save-directory-list-file nil)
-(setq ido-ubiquitous-command-exceptions
- '(org-refile org-capture-refile))
-(setq inferior-lisp-program "sbcl")
-(setq inhibit-default-init t)
-(setq inhibit-local-menu-bar-menus t)
-(setq inhibit-startup-message t)
-(setq initial-major-mode 'emacs-lisp-mode)
-(setq initial-scratch-message nil)
-(setq jabber-account-list '(("ryuslash@jabber.org")
- ("tom@ryuslash.org/Emacs"
- (:connection-type . ssl))))
-(setq jabber-chat-buffer-format "*jab:%n*")
-(setq jabber-chat-buffer-show-avatar nil)
-(setq jabber-chat-fill-long-lines nil)
-(setq jabber-chat-foreign-prompt-format "%t %u/%r <\n")
-(setq jabber-chat-local-prompt-format "%t %u/%r >\n")
-(setq jabber-chatstates-confirm nil)
-(setq jabber-history-dir "~/.emacs.d/jabber")
-(setq jabber-muc-autojoin '("aethon@muc.ryuslash.org"))
-(setq jabber-roster-show-bindings nil)
-(setq jit-lock-defer-time 0.2)
-(setq magit-repo-dirs '("~/projects/" "~/var/src/"))
-(setq message-log-max 1000)
-(setq message-send-mail-function 'message-send-mail-with-sendmail)
-(setq message-sendmail-extra-arguments '("-a" "ryuslash"))
-(setq package-archives
- '(("melpa" . "http://melpa.milkbox.net/packages/")
- ("marmalade" . "http://marmalade-repo.org/packages/")
- ("gnu" . "http://elpa.gnu.org/packages/")))
-(setq package-load-list '((htmlize "1.39")
- (lua-mode "20111107")
- all))
-(setq php-function-call-face 'font-lock-function-name-face)
-(setq php-mode-force-pear t)
-(setq pony-tpl-indent-moves t)
-(setq pp^L-^L-string-function 'oni:pretty-control-l-function)
-(setq pp^L-^L-string-pre nil)
-(setq rainbow-delimiters-max-face-count 12)
-(setq redisplay-dont-pause t)
-(setq send-mail-function 'smtpmail-send-it)
-(setq sendmail-program "/usr/bin/msmtp")
-(setq sentence-end-double-space nil)
-(setq smex-key-advice-ignore-menu-bar t)
-(setq smex-save-file "~/.emacs.d/smex-items")
-(setq split-height-threshold 40)
-(setq time-stamp-active t)
-(setq time-stamp-format "%04y-%02m-%02d %02H:%02M:%02S (%u)")
-(setq type-break-good-rest-interval (* 60 10))
-(setq type-break-interval (* 60 50))
-(setq type-break-keystroke-threshold '(nil . nil))
-(setq uniquify-buffer-name-style 'post-forward)
-(setq use-dialog-box nil)
-(setq user-full-name "Tom Willemsen")
-(setq user-mail-address "tom@ryuslash.org")
-(setq w3m-fill-column 72)
-(setq window-combination-resize t)
-(setq yas-fallback-behavior nil)
-(setq yas-prompt-functions '(yas-ido-prompt))
-
-(add-hook 'after-change-major-mode-hook 'set-current-mode-icon)
-(add-hook 'after-save-hook 'oni:after-save-func t)
-(add-hook 'before-save-hook 'oni:before-save-func)
-(add-hook 'c-mode-hook 'oni:c-mode-func)
-(add-hook 'css-mode-hook 'oni:css-mode-func)
-(add-hook 'diary-display-hook 'oni:diary-display-func)
-(add-hook 'emacs-startup-hook 'oni:emacs-startup-func)
-(add-hook 'emacs-lisp-mode-hook 'oni:emacs-lisp-mode-func)
-(add-hook 'erc-mode-hook 'oni:erc-mode-func)
-(add-hook 'go-mode-hook 'oni:go-mode-func)
-(add-hook 'gtags-mode-hook 'oni:gtags-mode-func)
-(add-hook 'haskell-mode-hook 'oni:haskell-mode-func)
-(add-hook 'html-mode-hook 'oni:html-mode-func)
-(add-hook 'jabber-alert-message-hooks 'oni:jabber-alert-message-func)
-(add-hook 'jabber-chat-mode-hook 'oni:jabber-chat-mode-func)
-(add-hook 'jabber-roster-mode-hook 'oni:jabber-roster-mode-func)
-(add-hook 'java-mode-hook 'oni:java-mode-func)
-(add-hook 'js-mode-hook 'oni:js-mode-func)
-(add-hook 'js2-mode-hook 'oni:js2-mode-func)
-(add-hook 'lua-mode-hook 'oni:lua-mode-func)
-(add-hook 'magit-log-edit-mode-hook 'oni:magit-log-edit-mode-func)
-(add-hook 'markdown-mode-hook 'oni:markdown-mode-func)
-(add-hook 'message-mode-hook 'oni:message-mode-func)
-(add-hook 'org-mode-hook 'oni:org-mode-func)
-(add-hook 'php-mode-hook 'oni:php-mode-func)
-(add-hook 'prog-mode-hook 'oni:prog-mode-func)
-(add-hook 'python-mode-hook 'oni:python-mode-func)
-(add-hook 'rst-mode-hook 'oni:rst-mode-func)
-(add-hook 'term-mode-hook 'oni:term-mode-func)
-(add-hook 'texinfo-mode-hook 'oni:texinfo-mode-func)
-(add-hook 'write-file-hooks 'oni:write-file-func)
-(add-hook 'yas-minor-mode-hook 'oni:yas-minor-mode-func)
-
-(define-key key-translation-map (kbd "C-j") (kbd "C-l"))
-(define-key key-translation-map (kbd "C-l") (kbd "C-j"))
-
-(global-set-key (kbd "'") 'oni:self-insert-dwim)
-(global-set-key (kbd "<XF86HomePage>") 'oni:raise-scratch)
-(global-set-key (kbd "<XF86Mail>") 'oni:view-mail)
-(global-set-key (kbd "<f10>") 'git-project-show-files)
-(global-set-key (kbd "<f5>") 'ext:reload-buffer)
-(global-set-key (kbd "<f6>") 'jabber-switch-to-roster-buffer)
-(global-set-key (kbd "<f7>") 'magit-status)
-(global-set-key (kbd "<hiragana>") 'oni:show-org-index)
-(global-set-key (kbd "C-<") 'oni:indent-shift-left)
-(global-set-key (kbd "C->") 'oni:indent-shift-right)
-(global-set-key (kbd "C-M-4") 'split-window-vertically)
-(global-set-key (kbd "C-M-SPC") 'er/expand-region)
-(global-set-key (kbd "C-M-d") 'kill-word)
-(global-set-key (kbd "C-M-w") 'backward-kill-word)
-(global-set-key (kbd "C-S-k") 'kill-whole-line)
-(global-set-key (kbd "C-a") 'oni:move-beginning-of-dwim)
-(global-set-key (kbd "C-c a") 'org-agenda)
-(global-set-key (kbd "C-c c") 'org-capture)
-(global-set-key (kbd "C-c i p") 'identica-update-status-interactive)
-(global-set-key (kbd "C-c p") 'oni:show-buffer-position)
-(global-set-key (kbd "C-c t") 'oni:raise-ansi-term)
-(global-set-key (kbd "C-d") 'oni:kill-region-or-forward-char)
-(global-set-key (kbd "C-e") 'oni:move-end-of-dwim)
-(global-set-key (kbd "C-k") 'oni:kill-region-or-line)
-(global-set-key (kbd "C-w") 'oni:kill-region-or-backward-char)
-(global-set-key (kbd "M-0") 'delete-window)
-(global-set-key (kbd "M-1") 'delete-other-windows)
-(global-set-key (kbd "M-2") 'split-window-below)
-(global-set-key (kbd "M-3") 'split-window-right)
-(global-set-key (kbd "M-4") 'split-window-horizontally)
-(global-set-key (kbd "M-n") 'idomenu)
-(global-set-key (kbd "M-o") 'other-window)
-(global-set-key (kbd "\"") 'oni:self-insert-dwim)
-
-(if (daemonp)
- (global-set-key "\C-x\C-c" 'oni:close-client-window))
-
-(when (or window-system (daemonp))
- (global-unset-key "\C-z"))
-
-(add-to-list 'auto-mode-alist '("\\.jl$" . sawfish-mode))
-(add-to-list 'auto-mode-alist '("\\.js\\(on\\)?$" . js2-mode))
-(add-to-list 'auto-mode-alist
- '("\\.m\\(ark\\)?d\\(?:o?wn\\)?$" . markdown-mode))
-(add-to-list 'auto-mode-alist '("\\.php[345]?$" . php-mode))
-(add-to-list 'auto-mode-alist '("\\.po\\'\\|\\.po\\." . po-mode))
-(add-to-list 'auto-mode-alist '("\\.tpl$" . html-mode))
-(add-to-list 'auto-mode-alist '("^PKGBUILD$" . shell-script-mode))
-(add-to-list 'auto-mode-alist '("^\\.Xmodmap$" . xmodmap-mode))
-
-(add-to-list 'compilation-finish-functions
- 'oni:compilation-finish-function)
-
-(add-to-list 'debug-ignored-errors "^Can't shift all lines enough")
-
-(add-to-list
- 'display-buffer-alist
- '("^\\*\\(?:.+-\\)?scratch\\*$" . ((display-buffer-same-window . nil))))
-(add-to-list
- 'display-buffer-alist
- '("^\\*git-project-list\\*$" . ((git-project-show-window . nil))))
-(add-to-list
- 'display-buffer-alist
- '("^\\*magit: .*\\*$" . ((display-buffer-same-window . nil))))
-
-(blink-cursor-mode -1)
-(column-number-mode -1)
-(line-number-mode -1)
-(tooltip-mode -1)
-
-(package-initialize)
-
-(auto-insert-mode)
-(cua-selection-mode t)
-(electric-indent-mode)
-(electric-pair-mode)
-(ido-mode)
-(ido-ubiquitous-mode)
-(savehist-mode)
-(show-paren-mode)
-(winner-mode)
-(display-battery-mode)
-
-(smex-initialize)
-(help-at-pt-set-timer)
-(windmove-default-keybindings)
-(global-diff-hl-mode)
-
-(load custom-file)
-;; (load "rudel-loaddefs.el")
-
-(unless (server-running-p)
- (server-start))
-
-(diminish 'auto-fill-function "_")
-
-(provide 'init)
-
-;;; init.el ends here
diff --git a/.gitignore b/.gitignore
index e69de29..6dc3062 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+Makefile.old
diff --git a/.local/Makefile b/.local/Makefile
deleted file mode 100644
index 4b1a1cf..0000000
--- a/.local/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/.local
-modules=share
-
-include ../dotfiles.mk
diff --git a/.local/share/Makefile b/.local/share/Makefile
deleted file mode 100644
index c06880a..0000000
--- a/.local/share/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/share
-modules=applications
-
-include ../../dotfiles.mk
diff --git a/.local/share/applications/Makefile b/.local/share/applications/Makefile
deleted file mode 100644
index 3d2ca22..0000000
--- a/.local/share/applications/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/applications
-objects=moc.desktop ncmpcpp.desktop poweroff.desktop reboot.desktop
-
-include ../../../dotfiles.mk
diff --git a/.local/share/applications/moc.desktop b/.local/share/applications/moc.desktop
deleted file mode 100644
index 7d83074..0000000
--- a/.local/share/applications/moc.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=moc
-GenericName=Music Player
-Comment=Play Music
-Exec=urxvt -e mocp
-Icon=audio-x-generic.png
-Type=Application
diff --git a/.local/share/applications/ncmpcpp.desktop b/.local/share/applications/ncmpcpp.desktop
deleted file mode 100644
index 8151a1e..0000000
--- a/.local/share/applications/ncmpcpp.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=ncmpcpp
-GenericName=Music Player
-Comment=Play Music
-Exec=urxvt -e ncmpcpp
-Icon=audio-x-generic.png
-Type=Application
diff --git a/.local/share/applications/poweroff.desktop b/.local/share/applications/poweroff.desktop
deleted file mode 100644
index b809e56..0000000
--- a/.local/share/applications/poweroff.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=poweroff
-GenericName=Power Off
-Comment=Turn off the power
-Exec=systemctl poweroff
-Icon=system-shutdown.png
-Type=Application
diff --git a/.local/share/applications/reboot.desktop b/.local/share/applications/reboot.desktop
deleted file mode 100644
index 34ca716..0000000
--- a/.local/share/applications/reboot.desktop
+++ /dev/null
@@ -1,8 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=reboot
-GenericName=Reboot
-Comment=Reboot the system
-Exec=systemctl reboot
-Icon=reload.png
-Type=Application
diff --git a/.moc/.gitignore b/.moc/.gitignore
deleted file mode 100644
index 1210ad5..0000000
--- a/.moc/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-cache/
-equalizer
-last_directory
-softmixer
-tags_cache
diff --git a/.moc/Makefile b/.moc/Makefile
deleted file mode 100644
index 5eb4fa2..0000000
--- a/.moc/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-DESTDIR:=$(DESTDIR)/.moc
-modules=themes
-objects=config
-
-include ../dotfiles.mk
diff --git a/.moc/config b/.moc/config
deleted file mode 100644
index 76619d2..0000000
--- a/.moc/config
+++ /dev/null
@@ -1,3 +0,0 @@
-Layout1 = playlist(0,0,100%,100%):directory(0,0,100%,100%)
-Layout2 = directory(0,0,50%,100%):playlist(50%,0,FILL,100%)
-CanStartInPlaylist = yes
diff --git a/.moc/themes/Makefile b/.moc/themes/Makefile
deleted file mode 100644
index fd61c62..0000000
--- a/.moc/themes/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/themes
-objects=custom
-
-include ../../dotfiles.mk
diff --git a/.moc/themes/custom b/.moc/themes/custom
deleted file mode 100644
index f9eef4d..0000000
--- a/.moc/themes/custom
+++ /dev/null
@@ -1,118 +0,0 @@
-# Example color theme for MOC.
-# You can use a theme by copying it to ~/.moc/themes directory and using
-# Theme config option or -T command line option.
-#
-# Fill free to make your own themes and send me them. It will be included in
-# official MOC releases or on the MOC web site.
-#
-# The format of this file is:
-# Lines beginning with # are comments.
-# Blank lines are ignored.
-# Every other line is expected to be in format:
-#
-# ELEMENT = FOREGROUND_COLOR BACKGROUND_COLOR [ATTRIBUTE[,ATTRIBUTE,..]]
-#
-# or
-#
-# colordef COLOR = RED GREEEN BLUE
-#
-# Where names are case insensitive.
-#
-# ELEMENT is an element of MOC interface. This can be:
-# background - default background for regions when nothing is displayed
-# frame - frames for windows
-# window_title - the title of the window (eg name of the current
-# directory)
-# directory - a directory in the menu
-# selected_directory - a directory that is selected using arrows
-# playlist - playlist file
-# selected_playlist - see selected directory
-# file - an ordinary file in the menu (mp3, ogg, ...)
-# selected_file - see selected directory
-# marked_file - a file that is currently beeing played
-# marked_selected_file - a file that is currently beeing played and is also
-# selected using arrows
-# info - information shown at the right side of files
-# status - the status line with a message
-# title - the title of the file that is currently beeing played
-# state - the state: play, stop, or paus (>, [], ||)
-# current_time - current time of playing
-# time_left - the time left to the end of playing the current file
-# total_time - the length of the currently played file
-# time_total_frames - the brackets outside the total time of a file ([10:13])
-# sound_parameters - the frequency and bitrate numbers
-# legend - "KHz" and "Kbps"
-# disabled - disabled element ([STEREO])
-# enabled - enabled element
-# empty_mixer_bar - "empty" part of the volume bar
-# filled_mixer_bar - "filled" part of the volume bar
-# empty_time_bar - "empty" part of the time bar
-# filled_time_bar - "filled" part of the time bar
-# entry - place wher user can type a search query or a file name
-# entry_title - the title of an entry
-# error - error message
-# message - information message
-# plist_time - total time of displayed items
-#
-# FOREGOUND_VOLOR and BACKGROUND_COLOR can have one of the following values:
-# black, red, green, yellow, blue, magenta, cyan, white, default (can be
-# transparent), grey (not standard, but works)
-#
-# Optional ATTRIBUTE parameters can be (from ncurses manual):
-# normal - default (no highlight)
-# standout - best highlighting mode of the terminal
-# underline - underlining
-# reverse - reverse video
-# blink - blinking
-# dim - half bright
-# bold - extra bright or bold
-# protect - protected mode
-#
-# You can specify a list of attributes separated by commas: attr1,attr2,attr3.
-# Don't use spaces anywhere in such a list.
-#
-# With colordef you can chend the definition of a color. It works only if
-# your termina supports it, if not those lines will be silently ignored.
-# COLOR must be a valid color name and the RED GREEN and BLUE are numbers
-# from 0 to 1000. Example:
-#
-# colordef red = 1000 0 0
-#
-# HINT: you have only 8 colors, but combined with attributes bold and/or
-# reversed you actually get more colors.
-#
-# If you don't specify some elements, the default values will be used.
-#
-# Here follows the default configuration:
-background = default default
-frame = default default
-window_title = default default
-directory = default default bold
-selected_directory = default black bold
-playlist = default default bold
-selected_playlist = default black bold
-file = default default
-selected_file = default black
-marked_file = green default bold
-marked_selected_file = green black bold
-info = blue default bold
-status = default default
-title = default default bold
-state = default default bold
-current_time = default default bold
-time_left = default default bold
-total_time = default default bold
-time_total_frames = default default
-sound_parameters = default default bold
-legend = default default
-disabled = blue default bold
-enabled = default default bold
-empty_mixer_bar = default default
-filled_mixer_bar = black cyan
-empty_time_bar = default default
-filled_time_bar = black cyan
-entry = default default
-entry_title = black cyan
-error = red default bold
-message = green default bold
-plist_time = default default
diff --git a/.mutt/.gitignore b/.mutt/.gitignore
deleted file mode 100644
index ce8da72..0000000
--- a/.mutt/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-cache
-temp
-alias
-certificates
diff --git a/.mutt/Makefile b/.mutt/Makefile
deleted file mode 100644
index d1e65d1..0000000
--- a/.mutt/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-DESTDIR:=$(DESTDIR)/.mutt
-objects=aethon.muttrc arch.muttrc colors.muttrc gmail.muttrc \
- iactor.muttrc macros mailcap muttrc ninthfloor.muttrc \
- ryuslash.org.muttrc sig
-
-include ../dotfiles.mk
diff --git a/.mutt/aethon.muttrc b/.mutt/aethon.muttrc
deleted file mode 100644
index 259098a..0000000
--- a/.mutt/aethon.muttrc
+++ /dev/null
@@ -1,14 +0,0 @@
-###
-# aethon.nl specific options
-###
-
-set from = "thomas@aethon.nl"
-set smtp_url = "smtp://thomas@aethon.nl@smtp.gmail.com:587/"
-set mbox = "+aethon/INBOX"
-set signature = "~/documents/work/aethon/signature.txt"
-set postponed = "+aethon/drafts"
-unset record
-
-macro index E "<change-folder>+aethon/archive<enter><limit>~B " "search everything"
-macro index D "<save-message>+aethon/trash<enter>" "move message to the trash"
-macro index S "<save-message>+aethon/spam<enter>" "mark message as spam"
diff --git a/.mutt/arch.muttrc b/.mutt/arch.muttrc
deleted file mode 100644
index 36b260b..0000000
--- a/.mutt/arch.muttrc
+++ /dev/null
@@ -1,14 +0,0 @@
-###
-# archlinux.us specific options
-###
-
-set from = "tom.willemsen@archlinux.us"
-set smtp_url = "smtp://tom.willemsen@archlinux.us@smtp.gmail.com:587/"
-set mbox = "+arch/INBOX"
-set postponed = "+arch/drafts"
-unset record
-unset signature
-
-macro index E "<change-folder>+arch/archive<enter><limit>~B " "search everything"
-macro index D "<save-message>+arch/trash<enter>" "move message to the trash"
-macro index S "<save-message>+arch/spam<enter>" "mark message as spam"
diff --git a/.mutt/colors.muttrc b/.mutt/colors.muttrc
deleted file mode 100644
index 0779b07..0000000
--- a/.mutt/colors.muttrc
+++ /dev/null
@@ -1,65 +0,0 @@
-### -*- eval: (git-auto-commit-mode 1) -*-
-# mutt colors file
-###
-
-# set default
-color normal default default
-
-# main colors
-# element foreground background
-color status color7 color1
-color indicator color0 color2
-color tree color5 default
-color error brightcolor1 default
-color message color3 default
-
-# uncolor certain messages
-uncolor index "~P"
-uncolor index "~N ~u"
-uncolor index "~N !~u"
-uncolor index "~T"
-uncolor index "~D"
-
-# and recolor them appropriately
-color index color3 default "~P"
-color index color2 default "~u"
-color index brightcolor2 default "~N ~u" # new ML mail
-color index brightcolor3 default "~N !~u" # new non-ML mail
-color index brightcolor5 default "~T"
-color index color1 default "~D"
-
-# set up the headers
-color header brightcolor2 default "^from:"
-color header brightcolor2 default "^to:"
-color header brightcolor2 default "^cc:"
-color header brightcolor2 default "^date:"
-color header brightcolor2 default "^subject:"
-
-# message bodies
-color attachment color3 default
-color search color1 color0
-color signature color5 default
-color tilde color4 default
-
-# urls
-color body brightcolor4 default "(^|<| )mailto:[^ ]+@[^ ]( |>|$)"
-color body brightcolor4 default "(^|<| )(http|https|ftp|file|telnet|news|finger)://[^ ]+( |>|$)"
-
-# smileys
-color body brightcolor5 default "(^| )+(|[<>|])[8;:](|[^ ])[)(/|DOPS]( |$)+"
-color body brightcolor5 default "(^| )+[)(/|DOPS](|[^ ])[8;:](|[<>|])( |$)+"
-
-# *bold*, _underline_ and /italic/
-color body brightcolor6 default "(^| )\\*[^*]+\\*( |$)"
-color body brightcolor6 default "(^| )_[^_]+_( |$)"
-color body brightcolor6 default "(^| )/[^/]+/( |$)"
-
-# quote blocks
-color quoted brightcolor7 default
-color quoted1 brightcolor1 default
-color quoted2 brightcolor2 default
-color quoted3 brightcolor3 default
-color quoted4 brightcolor4 default
-color quoted5 brightcolor5 default
-color quoted6 brightcolor6 default
-color quoted7 brightdefault default
diff --git a/.mutt/gmail.muttrc b/.mutt/gmail.muttrc
deleted file mode 100644
index 80c9178..0000000
--- a/.mutt/gmail.muttrc
+++ /dev/null
@@ -1,14 +0,0 @@
-###
-# gmail specific option
-###
-
-set from = "ryuslash@gmail.com"
-set smtp_url = "smtp://ryuslash@gmail.com@smtp.gmail.com:587/"
-set mbox = "+gmail/INBOX"
-set postponed = "+gmail/drafts"
-unset record
-unset signature
-
-macro index E "<change-folder>+gmail/archive<enter><limit>~B " "search everything"
-macro index D "<save-message>+gmail/trash<enter>" "move message to the trash"
-macro index S "<save-message>+gmail/spam<enter>" "mark message as spam"
diff --git a/.mutt/iactor.muttrc b/.mutt/iactor.muttrc
deleted file mode 100644
index f090b5f..0000000
--- a/.mutt/iactor.muttrc
+++ /dev/null
@@ -1,13 +0,0 @@
-###
-# iactor specific options
-###
-
-set from = "tom@iactor.nl"
-set smtp_url = "mail.iactor.nl:2525"
-set mbox = "+iactor/INBOX"
-set record = "+iactor/Sent"
-set postponed = "+iactor/Drafts"
-unset signature
-
-macro index E "<change-folder>+iactor/INBOX<enter><limit>~B " "search everything"
-macro index D "<save-message>+iactor/Trash<enter>" "move message to the trash"
diff --git a/.mutt/macros b/.mutt/macros
deleted file mode 100644
index 3f6ec6b..0000000
--- a/.mutt/macros
+++ /dev/null
@@ -1 +0,0 @@
-macro pager \cb <pipe-entry>'urlview'<enter> 'Follow links with urlview'
diff --git a/.mutt/mailcap b/.mutt/mailcap
deleted file mode 100644
index fba56f6..0000000
--- a/.mutt/mailcap
+++ /dev/null
@@ -1,6 +0,0 @@
-text/html; w3m -dump -T text/html -cols 80 %s; nametemplate=%s.html; copiousoutput
-application/vnd.openxmlformats-officedocument.wordprocessingml.document; libreoffice %s
-application/vnd.ms-excel; libreoffice %s
-image/jpeg; feh %s
-image/png; feh %s
-application/pdf; gv %s
diff --git a/.mutt/muttrc b/.mutt/muttrc
deleted file mode 100644
index 2af358d..0000000
--- a/.mutt/muttrc
+++ /dev/null
@@ -1,121 +0,0 @@
-# ~/.muttrc
-###
-
-# directories and commands
-set alias_file = ~/.mutt/alias # alias file
-set header_cache = ~/.mutt/cache/headers # where to store headers
-set message_cachedir = ~/.mutt/cache/bodies # where to store bodies
-set certificate_file = ~/.mutt/certificates # where to store certs
-set mailcap_path = ~/.mutt/mailcap # entries for filetypes
-set tmpdir = ~/.mutt/temp # where to keep temp files
-set editor = "emacsclient -c"
-
-# main options
-set mbox_type = Maildir # mailbox type
-set folder = ~/documents/mail # mailbox location
-set spoolfile = "+ninthfloor/INBOX" # ninthfloor is the default inbox
-set timeout = 3 # idle time before scanning
-set mail_check = 0 # minimum time between scans
-set sort_alias = alias # sort alias file by alias
-set reverse_alias # show names from alias file in index
-unset move # gmail does that
-set delete # don't ask, just do
-unset confirmappend # don't ask, just do!
-set quit # don't ask, just do!!
-unset mark_old # read/new is good enough for me
-set beep_new # bell on new mails
-set pipe_decode # strip headers and eval mimes when piping
-set thorough_search # strip headers and eval mimes before searching
-set ssl_force_tls = yes
-
-# index options
-set sort = threads # like gmail
-set sort_aux = last-date-received # not like gmail
-set uncollapse_jump # don't collapse on an unread message
-#set sort_re # thread based on regex
-
-# pager options
-set pager_index_lines = 10 # number of index lines to
- # show
-set pager_context = 5 # number of context lines
- # to show
-set pager_stop # don't go to next message
- # automatically
-set menu_scroll # scroll in menus
-set smart_wrap # don't split words
-set tilde # show tildes like in vim
-unset markers # no ugly plus signs
-auto_view text/html # view html automatically
-alternative_order text/plain text/enriched text/html # save html for last
-set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+| {4}"
-
-# formats
-set status_format = "-%r %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?] (%s/%S) %> (%P) "
-set date_format = "%d %b %H:%M"
-set index_format = "%3C %Z %D [%-12.12L] %s"
-set alias_format = "%4n %t %-20a %r"
-
-# composing mail
-set realname = "Tom Willemse" # who am I?
-set envelope_from # which from?
-set sig_dashes # dashes before my sig... sweet
-set edit_headers # show headers when composing
-set fast_reply # skip to compose when replying
-set askcc # ask for CC:
-set fcc_attach # save attachments with the body
-unset mime_forward # forward attachments as part fo body
-set forward_format = "Fwd: %s" # format for subject when forwarding
-set forward_decode # decode when forwarding
-set attribution = "On %d, %n wrote:" # set the attribution
-set reply_to # reply to Reply to: field
-set reverse_name # reply as whomever it was to
-set include # include message in replies
-set forward_quote # include message inforwards
-
-# headers to show
-ignore * # ignore all headers
-unignore from: to: cc: date: subject: # show only these
-hdr_order from: to: cc: date: subject: # and in this order
-
-# boxes
-mailboxes +arch/INBOX #+arch/archive +arch/sent +arch/drafts +arch/spam +arch/trash
-mailboxes +gmail/INBOX #+gmail/archive +gmail/sent +gmail/drafts +gmail/spam +gmail/trash
-mailboxes +iactor/INBOX #+iactor/INBOX.Admin +iactor/INBOX.Important +iactor/INBOX.Intern +iactor/INBOX.Taken +iactor/Sent +iactor/Drafts +iactor/Trash
-mailboxes +aethon/INBOX
-mailboxes +ninthfloor/INBOX +ninthfloor/mailinglists
-mailboxes +ryuslash.org/INBOX
-
-# always sourced
-source $alias_file # required for functionality
-source ~/.mutt/colors.muttrc # source colors file
-source ~/.mutt/ninthfloor.muttrc # source arch as default
-
-# account specific sources
-folder-hook arch/* source ~/.mutt/arch.muttrc
-folder-hook gmail/* source ~/.mutt/gmail.muttrc
-folder-hook iactor/* source ~/.mutt/iactor.muttrc
-folder-hook aethon/* source ~/.mutt/aethon.muttrc
-folder-hook ninthfloor/* source ~/.mutt/ninthfloor.muttrc
-folder-hook ryuslash.org/* source ~/.mutt/ryuslash.org.muttrc
-
-# abook
-set query_command = "abook --mutt-query '%s'"
-
-# macros
-macro index I "<change-folder>!<enter>" "go to Inbox"
-macro index Z "<shell-escape>/usr/bin/offlineimap -q -o<enter>" "sync IMAP"
-macro generic,index,pager \ca "<shell-escape>abook<return>" "launch abook"
-macro index,pager A "<pipe-message>abook --add-email<return>" "add the sender address to abook"
-macro generic,index,pager <ESC>1 "<change-folder>=ninthfloor/INBOX<return>" "Show ninthfloor inbox"
-macro generic,index,pager <ESC>2 "<change-folder>=gmail/INBOX<return>" "Show gmail inbox"
-macro generic,index,pager <ESC>3 "<change-folder>=arch/INBOX<return>" "Show arch inbox"
-macro generic,index,pager <ESC>4 "<change-folder>=aethon/INBOX<return>" "Show aethon inbox"
-macro generic,index,pager <ESC>5 "<change-folder>=ryuslash.org/INBOX<return>" "Show ryuslash.org inbox"
-macro generic,index,pager <ESC>6 "<change-folder>=iactor/INBOX<return>" "Show iactor inbox"
-
-# key bindings
-bind pager \177 previous-line # default didn't want to work anymore
-#bind generic i what-key
-
-# mailing lists
-subscribe dev@suckless.org
diff --git a/.mutt/ninthfloor.muttrc b/.mutt/ninthfloor.muttrc
deleted file mode 100644
index 16a3358..0000000
--- a/.mutt/ninthfloor.muttrc
+++ /dev/null
@@ -1,13 +0,0 @@
-###
-# ninthfloor specific options
-###
-
-set from = "ryuslash@ninthfloor.org"
-set smtp_url = "smtp://ryuslash@mail.ninthfloor.org:587"
-set mbox = "+ninthfloor/INBOX"
-set record = "+ninthfloor/Sent"
-set postponed = "+ninthfloor/Drafts"
-unset signature
-
-macro index E "<change-folder>+ninthfloor/INBOX<enter><limit>~B " "search everything"
-macro index D "<save-message>+ninthfloor/Trash<enter>" "move message to the trash"
diff --git a/.mutt/ryuslash.org.muttrc b/.mutt/ryuslash.org.muttrc
deleted file mode 100644
index 315aa9d..0000000
--- a/.mutt/ryuslash.org.muttrc
+++ /dev/null
@@ -1,13 +0,0 @@
-###
-# ryuslash.org specific options
-###
-
-set from = "tom@ryuslash.org"
-set smtp_url = "smtp://tom@ryuslash.org@smtp.alwaysdata.com:587"
-set mbox = "+ryuslash.org/INBOX"
-set record = "+ryuslash.org/Sent"
-set postponed = "+ryuslash.org/Drafts"
-unset signature
-
-macro index E "<change-folder>+ryuslash.org/INBOX<enter><limit>~B " "search everything"
-macro index D "<save-message>+ninthfloor/Trash<enter>" "move message to the trash"
diff --git a/.mutt/sig b/.mutt/sig
deleted file mode 100644
index e69de29..0000000
--- a/.mutt/sig
+++ /dev/null
diff --git a/.ncmpcpp/Makefile b/.ncmpcpp/Makefile
deleted file mode 100644
index 728f643..0000000
--- a/.ncmpcpp/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/.ncmpcpp
-objects=config
-
-include ../dotfiles.mk
diff --git a/.ncmpcpp/config b/.ncmpcpp/config
deleted file mode 100644
index 6d8655f..0000000
--- a/.ncmpcpp/config
+++ /dev/null
@@ -1,25 +0,0 @@
-# Playlist
-autocenter_mode = "yes"
-centered_cursor = "yes"
-now_playing_prefix = "$b"
-now_playing_suffix = "$/b"
-playlist_display_mode = "classic" # (classic/columns)
-song_list_format = "{$3%a$9 - }{$4%t$9} {$R$5[%b]$9}"
-
-# Bars
-display_bitrate = "no"
-progressbar_look = ">> "
-song_status_format = "$0%t$9 {$1by$9 $0%a$9} {$1from$9 $0%b$9}{$1,$9 $0%y$9}"
-titles_visibility = "no"
-
-# Browser
-browser_display_mode = "classic" # (classic/columns)
-browser_playlist_prefix = "$2plist >$9 "
-
-# Others
-allow_physical_directories_deletion = "yes"
-allow_physical_files_deletion = "yes"
-fancy_scrolling = "yes"
-mpd_music_dir = "/mnt/music/mp3"
-search_engine_display_mode = "columns" # (classic/columns)
-user_interface = "alternative" # (classic/alternative)
diff --git a/.offlineimaprc b/.offlineimaprc
index 875e49c..5b96d16 100644
--- a/.offlineimaprc
+++ b/.offlineimaprc
@@ -8,7 +8,7 @@ pythonfile = ~/.offlineimap.py
[Account ryuslash.org]
localrepository = ryuslash.org-local
remoterepository = ryuslash.org-remote
-postsynchook = /home/slash/usr/bin/emacs-send-mail ryuslash.org; /home/slash/usr/bin/mode-line-mail ryuslash.org ryu
+# postsynchook = /home/slash/usr/bin/emacs-send-mail ryuslash.org
[Repository ryuslash.org-local]
type = Maildir
@@ -25,7 +25,7 @@ nametrans = lambda folder: folder.lower()
[Account aethon]
localrepository = aethon-local
remoterepository = aethon-remote
-postsynchook = /home/slash/usr/bin/emacs-send-mail aethon; /home/slash/usr/bin/mode-line-mail aethon ae
+# postsynchook = /home/slash/usr/bin/emacs-send-mail aethon
[Repository aethon-local]
type = Maildir
@@ -37,14 +37,14 @@ type = Gmail
remoteusereval = getuser("imap.google.com-aethon")
remotepasseval = getpassword("imap.google.com-aethon")
realdelete = no
-cert_fingerprint = 6d1b5b5ee0180ab493b71d3b94534b5ab937d042
+cert_fingerprint = b0ba392bba326e6feb1add4d04fa0fb86cd173fa
folderfilter = lambda folder: folder in ['INBOX', '[Gmail]/Concepten', '[Gmail]/Verzonden berichten', '[Gmail]/Prullenbak']
nametrans = lambda folder: re.sub('^INBOX$', 'inbox', re.sub('^\[Gmail\]/Concepten$', 'drafts', re.sub('^\[Gmail\]/Verzonden berichten$', 'sent', re.sub('^\[Gmail\]/Prullenbak$', 'trash', folder))))
[Account gmail]
localrepository = gmail-local
remoterepository = gmail-remote
-postsynchook = /home/slash/usr/bin/emacs-send-mail gmail; /home/slash/usr/bin/mode-line-mail gmail g
+# postsynchook = /home/slash/usr/bin/emacs-send-mail gmail
[Repository gmail-local]
type = Maildir
@@ -56,14 +56,14 @@ type = Gmail
remoteusereval = getuser("imap.google.com")
remotepasseval = getpassword("imap.google.com")
realdelete = no
-cert_fingerprint = 6d1b5b5ee0180ab493b71d3b94534b5ab937d042
+cert_fingerprint = b0ba392bba326e6feb1add4d04fa0fb86cd173fa
folderfilter = lambda folder: folder in ['INBOX', '[Gmail]/Drafts', '[Gmail]/Sent Mail', '[Gmail]/Trash']
nametrans = lambda folder: re.sub('^INBOX$', 'inbox', re.sub('^\[Gmail\]/Drafts$', 'drafts', re.sub('^\[Gmail\]/Sent Mail$', 'sent', re.sub('^\[Gmail\]/Trash$', 'trash', folder))))
[Account ninthfloor]
localrepository = ninthfloor-local
remoterepository = ninthfloor-remote
-postsynchook = /home/slash/usr/bin/emacs-send-mail ninthfloor; /home/slash/usr/bin/mode-line-mail ninthfloor 9f
+# postsynchook = /home/slash/usr/bin/emacs-send-mail ninthfloor
[Repository ninthfloor-local]
type = Maildir
diff --git a/.pentadactyl/Makefile b/.pentadactyl/Makefile
deleted file mode 100644
index e0640d2..0000000
--- a/.pentadactyl/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/.pentadactyl
-modules=plugins
-
-include ../dotfiles.mk
diff --git a/.pentadactyl/plugins/Makefile b/.pentadactyl/plugins/Makefile
deleted file mode 100644
index 8ed9478..0000000
--- a/.pentadactyl/plugins/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/plugins
-objects=emacs.penta
-
-include ../../dotfiles.mk
diff --git a/.pentadactyl/plugins/emacs.penta b/.pentadactyl/plugins/emacs.penta
deleted file mode 100644
index e28bce3..0000000
--- a/.pentadactyl/plugins/emacs.penta
+++ /dev/null
@@ -1,98 +0,0 @@
-set editor=emacsclient
-set go=bCs
-set hintkeys="arstdhneio"
-set stal=never
-set titlestring=
-
-highlight -a Hint text-transform: uppercase
-
-map -b <A-x> :
-map -b -m base <C-g> <Esc>
-
-map -b -m c <C-n> <Tab>
-map -b -m c <C-p> <S-Tab>
-
-map -b -m i <C-n> <Down>
-map -b -m i <C-p> <Up>
-
-map -b -m c,i <C-/> <C-v><C-z>
-map -b -m c,i <C-b> <Left>
-map -b -m c,i <C-f> <Right>
-map -b -m c,i <A-w> <C-v><C-c>
-map -b -m c,i <C-w> <C-v><C-x>
-map -b -m c,i <C-y> <C-v><C-v>
-
-map -b <A-<> gg
-map -b <A->> G
-map -b <A-v> <C-u>
-map -b <A-w> y
-
-map -b <C-_> u
-map -b <C-a> 0
-map -b <C-b> <A-left>
-map -b <C-e> $
-map -b <C-f> <A-right>
-map -b <C-j> gT
-map -b <C-k> gt
-map -b <C-n> 2j
-map -b <C-p> 2k
-map -b <C-r> ?
-map -b <C-s> /
-map -b <C-v> <C-d>
-map -b <C-w> Y
-map -b <C-y> P
-
-map -b <C-x>~ ~
-map -b <C-x>e gF
-map -b <C-x>g gf
-map -b <C-x>h gh
-map -b <C-x>i gi
-map -b <C-x>k d
-map -b <C-x>m ;c
-map -b <C-x>p ;i
-map -b <C-x>r r
-map -b <C-x>R R
-map -b <C-x>u gu
-
-map -b <C-x><C-b> b
-map -b <C-x><C-c> ZZ
-map -b <C-x><C-f> t
-map -b <C-x><C-r> :restart<CR>
-map -b <C-x><C-u> gU
-map -b <C-x><C-v> O
-
-map <C-d> <Nop>
-map <C-u> <Nop>
-map <C-x> <Nop>
-map <C-g> <Nop>
-map <C-h> <Nop>
-map : <Nop>
-map ~ <Nop>
-map / <Nop>
-map ? <Nop>
-map $ <Nop>
-map 0 <Nop>
-map b <Nop>
-map B <Nop>
-map d <Nop>
-map F <Nop>
-map gg <Nop>
-map gh <Nop>
-map gi <Nop>
-map gU <Nop>
-map G <Nop>
-map i <Nop>
-map j <Nop>
-map k <Nop>
-map o <Nop>
-map O <Nop>
-map p <Nop>
-map P <Nop>
-map q <Nop>
-map r <Nop>
-map t <Nop>
-map u <Nop>
-map w <Nop>
-map y <Nop>
-map Y <Nop>
-map ZZ <Nop>
diff --git a/.sawfish/Makefile b/.sawfish/Makefile
deleted file mode 100644
index b680366..0000000
--- a/.sawfish/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/.sawfish
-objects=rc
-
-include ../dotfiles.mk
diff --git a/.sawfish/rc b/.sawfish/rc
deleted file mode 100644
index cfb3a16..0000000
--- a/.sawfish/rc
+++ /dev/null
@@ -1,159 +0,0 @@
-;; -*- mode: sawfish; -*-
-(require 'rep.regexp)
-(require 'sawfish.wm.commands.grow-pack)
-(require 'sawfish.wm.commands.shrink-yank)
-(require 'sawfish.wm.commands.x-cycle)
-(require 'sawfish.wm.ext.match-window)
-(require 'sawfish.wm.util.display-window)
-(require 'sawfish.wm.util.prompt)
-(require 'sawfish.wm.util.window-order)
-(require 'sawfish.wm.util.stacking)
-
-(define oni:window-packing-keymap (make-keymap))
-(define oni:window-growing-keymap (make-keymap))
-(define oni:window-shrinking-keymap (make-keymap))
-(define oni:window-yanking-keymap (make-keymap))
-(define oni:window-management-keymap (make-keymap))
-(define oni:extended-keymap (make-keymap))
-
-(defun oni:emacs-main-window-p (window)
- "Check wether or not WINDOW is Emacs' main window."
- (let ((name (window-name window)))
- (and (string-match "^emacs: " name)
- (not (string= "emacs: *Sauron*" name)))))
-
-(defun oni:place-emacs-windows ()
- "Place Emacs' main, sauron and optionally speedbar windows the
-way I like them."
- (let ((main-window (car (filter-windows oni:emacs-main-window-p)))
- (sauron-window (get-window-by-name "emacs: *Sauron*"))
- (speedbar-window (get-window-by-name "^Speedbar " #:regex t)))
- (move-window-to main-window 0 0)
- (move-window-to sauron-window 0 0)
-
- (set-window-type sauron-window 'transient)
- (pack-window-down sauron-window)
- (grow-window-right sauron-window)
-
- (when speedbar-window
- (move-window-to speedbar-window 0 0)
- (set-window-type speedbar-window 'transient)
- (yank-window-right main-window)
- (grow-window-down speedbar-window))
-
- (grow-window-down main-window)
- (grow-window-right main-window)))
-
-(define-command 'oni:place-emacs-windows oni:place-emacs-windows)
-
-(defun oni:run-or-raise (command #!key id name class role)
- "Either run COMMAND, or if a window with class CLASS is found,
-raise it."
- (let* ((windows (filter
- (lambda (x)
- (and (or (not id) (equal (window-id x) id))
- (or (not name (equal (window-name x) name)))
- (or (not class) (equal (window-class x) class))
- (or (not role) (equal (window-role x) role))))
- (window-order)))
- (first (car windows))
- (w (if (equal first (input-focus)) (last windows) first)))
- (if w (display-window w)
- (call-command `(run-shell-command ,command)))))
-
-(setq custom-show-symbols t)
-(setq default-frame-style 'naquadah)
-(setq default-font (get-font-typed "Xft" "Monaco-10"))
-(setq grow-is-maximize nil)
-(setq prompt-color (cons (get-color "#eeeeec")
- (get-color "#111113")))
-(setq user-apps-menu
- '(("Emacs" (system "emacsclient -c &"))
- ("Terminal" (system "urxvt &"))))
-
-(bind-keys oni:window-packing-keymap
- "p" 'pack-window-up
- "n" 'pack-window-down
- "b" 'pack-window-left
- "f" 'pack-window-right)
-
-(bind-keys oni:window-growing-keymap
- "p" 'grow-window-up
- "n" 'grow-window-down
- "b" 'grow-window-left
- "f" 'grow-window-right)
-
-(bind-keys oni:window-shrinking-keymap
- "p" 'shrink-window-up
- "n" 'shrink-window-down
- "b" 'shrink-window-left
- "f" 'shrink-window-right)
-
-(bind-keys oni:window-yanking-keymap
- "p" 'yank-window-up
- "n" 'yank-window-down
- "b" 'yank-window-left
- "f" 'yank-window-right)
-
-(bind-keys oni:window-management-keymap
- "M" 'maximize-window-toggle
- "p" oni:window-packing-keymap
- "g" oni:window-growing-keymap
- "s" oni:window-shrinking-keymap
- "y" oni:window-yanking-keymap
- "E" 'oni:place-emacs-windows)
-
-(bind-keys global-keymap
- "XF86AudioPlay" '(run-shell-command "mpc toggle")
- "XF86AudioStop" '(run-shell-command "mpc stop")
- "XF86AudioMute" '(run-shell-command "amixer sset Master toggle")
- "XF86AudioLowerVolume" '(run-shell-command "mpc volume -5")
- "XF86AudioRaiseVolume" '(run-shell-command "mpc volume +5")
- "XF86AudioPrev" '(run-shell-command "mpc prev")
- "XF86AudioNext" '(run-shell-command "mpc next"))
-
-(bind-keys oni:extended-keymap
- "w" oni:window-management-keymap
- "Super-b" 'popup-window-list-menu)
-
-;; (ungrab-keymap global-keymap)
-(bind-keys
- global-keymap
- "C-M-l" '(run-shell-command "i3lock -c \"#000000\"")
- "C-Super-B" 'shrink-window-left
- "C-Super-F" 'shrink-window-right
- "C-Super-N" 'shrink-window-down
- "C-Super-P" 'shrink-window-up
- "C-Super-TAB" 'cycle-class
- "C-Super-`" 'popup-window-menu
- "C-Super-b" 'grow-window-left
- "C-Super-f" 'grow-window-right
- "C-Super-n" 'grow-window-down
- "C-Super-p" 'grow-window-up
- "Menu" 'popup-root-menu
- "Super-!" '(run-shell-command (prompt-for-string "Run: "))
- "Super-:" 'call-command
- "Super-B" 'yank-window-left
- "Super-C" '(run-shell-command "urxvt")
- "Super-E" '(run-shell-command (getenv "EDITOR"))
- "Super-F" 'yank-window-right
- "Super-M" 'maximize-window-toggle
- "Super-N" 'yank-window-down
- "Super-P" 'yank-window-up
- "Super-TAB" 'cycle-windows
- "Super-W" '(run-shell-command (getenv "BROWSER"))
- "Super-`" 'popup-root-menu
- "Super-b" 'pack-window-left
- "Super-c" '(oni:run-or-raise "urxvt" #:class "URxvt")
- "Super-e" '(oni:run-or-raise (getenv "EDITOR") #:class "Emacs")
- "Super-f" 'pack-window-right
- "Super-n" 'pack-window-down
- "Super-p" 'pack-window-up
- "Super-w" '(oni:run-or-raise (getenv "BROWSER") #:class "Conkeror")
- "Super-x" oni:extended-keymap
- )
-;; (grab-keymap global-keymap)
-
-(add-window-matcher '((WM_CLASS . "^(Firefox|Conkeror)/Navigator$"))
- '((position . north-east)
- (maximized . all)))
diff --git a/.ssh/Makefile b/.ssh/Makefile
index 2461e6c..b805834 100644
--- a/.ssh/Makefile
+++ b/.ssh/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/.ssh
+SUBDIR=.ssh
objects=config
include ../dotfiles.mk
diff --git a/.stumpwmrc b/.stumpwmrc
index 386da9c..be1e61c 100644
--- a/.stumpwmrc
+++ b/.stumpwmrc
@@ -1,9 +1,9 @@
;; -*- mode: lisp; -*-
-(require 'swank)
+; (require 'swank)
+(require 'cl-ppcre)
(in-package :stumpwm)
-
-(require 'cl-ppcre)
+;; (load "/usr/share/stumpwm/contrib/app-menu.lisp")
(defmacro elisp (&body body)
"Run BODY through emacsclient."
@@ -13,21 +13,26 @@
:wait nil))
;; Naquadah
-(defun colour (key)
- (let ((colours (list :lblack #xeeeeec :dblack #x111113
- :lwhite #xa5a5a4 :dwhite #x222224
- :lred #xbf6d6d :dred #x744a4a
- :lorange #xbfa47d :dorange #x73634a
- :lyellow #xb2bf6d :dyellow #x6b734a
- :lgreen #x8abf6d :dgreen #x52734a
- :lturquoise #x7dbf97 :dturquoise #x4a735b
- :lcyan #x7dbfbf :dcyan #x4a7373
- :lblue #x6d97bf :dblue #x4a5b73
- :lpurple #x8a7dbf :dpurple #x524a73
- :lmagenta #xb27dbf :dmagenta #x6b4a73
- :lpink #xbf6da4 :dpink #x734a63)))
- (getf colours key)))
-
+ ;; (defun colour (key)
+ ;; (let ((colours (list :lblack #xeeeeec :dblack #x111113
+ ;; :lwhite #xa5a5a4 :dwhite #x222224
+ ;; :lred #xbf6d6d :dred #x744a4a
+ ;; :lorange #xbfa47d :dorange #x73634a
+ ;; :lyellow #xb2bf6d :dyellow #x6b734a
+ ;; :lgreen #x8abf6d :dgreen #x52734a
+ ;; :lturquoise #x7dbf97 :dturquoise #x4a735b
+ ;; :lcyan #x7dbfbf :dcyan #x4a7373
+ ;; :lblue #x6d97bf :dblue #x4a5b73
+ ;; :lpurple #x8a7dbf :dpurple #x524a73
+ ;; :lmagenta #xb27dbf :dmagenta #x6b4a73
+ ;; :lpink #xbf6da4 :dpink #x734a63)))
+ ;; (getf colours key)))
+
+(setf *app-menu* '(("Editor" . "emacs")
+ ("Browser" . "conkeror")
+ ("Terminal" . "urxvt")
+ ("Office" . "libreoffice")
+ ("Gimp" . "gimp")))
(defvar *conkeror-program* "conkeror"
"The executable to run to start Conkeror.")
(defvar *emacs-program* "emacsclient -c -a emacs"
@@ -48,17 +53,16 @@
(defun get-mail-count (mailbox &optional (inbox "inbox"))
"Check how many new messages there are in MAILBOX."
(length
- (directory
- (format nil "/home/slash/documents/mail/~A/~A/new/*.*"
- mailbox inbox))))
-
-(defun mpd-playing-p ()
- "Check if MPD is currently in the playing state."
- (and (cl-ppcre:scan
- "\\n\\[playing\\]"
- (with-output-to-string (status)
- (sb-ext:run-program "/usr/bin/mpc" '() :output status)))
- t))
+ (append
+ (directory
+ (format nil "/home/slash/documents/mail/~A/~A/new/*.*"
+ mailbox inbox))
+ (remove-if (lambda (d)
+ (let ((dir (namestring d)))
+ (string= dir "S" :start1 (1- (length dir)))))
+ (directory
+ (format nil "/home/slash/documents/mail/~A/~A/cur/*.*"
+ mailbox inbox))))))
(defun set-jabber-away ()
"Tell emacs to set jabber to away presence."
@@ -74,16 +78,6 @@
*jabber-connected*)
(jabber-send-default-presence))))
-(defun mpd-pause ()
- "Pause MPD playback."
- (when (setf *mpd-was-playing-p* (mpd-playing-p))
- (sb-ext:run-program "/usr/bin/mpc" '("pause") :wait nil)))
-
-(defun mpd-play ()
- "Resume MPD playback."
- (when *mpd-was-playing-p*
- (sb-ext:run-program "/usr/bin/mpc" '("play") :wait nil)))
-
(defcommand run-emacs () ()
"Open Emacs"
(run-shell-command *emacs-program*))
@@ -129,23 +123,23 @@ it and run *screen-unlocked-hook* after it has been unlocked."
"/usr/bin/i3lock" '("-n" "-c" "000000") :wait nil
:status-hook #'run-stumpwm-hook-on-exit))
-(set-bg-color (colour :dwhite))
-(set-border-color (colour :lwhite))
-(set-fg-color (colour :lblack))
-(set-float-focus-color (colour :dblack))
-(set-float-unfocus-color (colour :dwhite))
-(set-focus-color (colour :dblack))
-(set-font "-*-tamsyn-medium-r-normal-*-17-*-*-*-*-0-iso8859-1")
-(set-unfocus-color (colour :dwhite))
-(set-win-bg-color (colour :dwhite))
-
-(setf *colors* (mapcar #'colour '(:lwhite :lred :lgreen :lyellow :lblue
- :lmagenta :lcyan :lblack)))
+;; (set-bg-color (colour :dwhite))
+;; (set-border-color (colour :lwhite))
+;; (set-fg-color (colour :lblack))
+;; (set-float-focus-color (colour :lblue))
+;; (set-float-unfocus-color (colour :dwhite))
+;; (set-focus-color (colour :lblue))
+;; (set-font "-*-tamsyn-medium-r-normal-*-17-*-*-*-*-0-iso8859-1")
+;; (set-unfocus-color (colour :dwhite))
+;; (set-win-bg-color (colour :dblack))
+
+;; (setf *colors* (mapcar #'colour '(:lwhite :lred :lgreen :lyellow :lblue
+;; :lmagenta :lcyan :lblack)))
(setf *input-window-gravity* :bottom-left)
(setf *message-window-gravity* :top-right)
-(setf *mode-line-background-color* (colour :dwhite))
-(setf *mode-line-border-color* (colour :dwhite))
-(setf *mode-line-foreground-color* (colour :lblack))
+;; (setf *mode-line-background-color* (colour :dwhite))
+;; (setf *mode-line-border-color* (colour :dwhite))
+;; (setf *mode-line-foreground-color* (colour :lblack))
(setf *shell-program* (getenv "SHELL"))
(setf *transient-border-width* 1)
(setf *window-border-style* :thin)
@@ -159,9 +153,7 @@ it and run *screen-unlocked-hook* after it has been unlocked."
(get-mail-count "ninthfloor")))))
(add-hook *lock-screen-hook* 'set-jabber-away)
-(add-hook *lock-screen-hook* 'mpd-pause)
(add-hook *screen-unlocked-hook* 'set-jabber-online)
-(add-hook *screen-unlocked-hook* 'mpd-play)
(set-prefix-key (kbd "C-z"))
@@ -191,11 +183,11 @@ it and run *screen-unlocked-hook* after it has been unlocked."
(define-frame-preference "Default"
(0 t nil :class "Emacs")
- (1 t nil :class "Firefox")
+ (2 t nil :class "Firefox")
(1 t nil :class "URxvt")
- (1 t nil :class "Conkeror"))
+ (2 t nil :class "Conkeror"))
(if (not (head-mode-line (current-head)))
(toggle-mode-line (current-screen) (current-head)))
-(swank:create-server)
+; (swank:create-server)
diff --git a/.w3m/Makefile b/.w3m/Makefile
index 85d09d5..ba96315 100644
--- a/.w3m/Makefile
+++ b/.w3m/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/.w3m
+SUBDIR=.w3m
objects=config
include ../dotfiles.mk
diff --git a/.weechat/Makefile b/.weechat/Makefile
deleted file mode 100644
index 8a0618a..0000000
--- a/.weechat/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-DESTDIR:=$(DESTDIR)/.weechat
-objects=alias.conf irc.conf weechat.conf
-
-include ../dotfiles.mk
diff --git a/.weechat/alias.conf b/.weechat/alias.conf
deleted file mode 100644
index dc8e9b3..0000000
--- a/.weechat/alias.conf
+++ /dev/null
@@ -1,38 +0,0 @@
-#
-# alias.conf -- weechat v0.3.6
-#
-
-[cmd]
-AAWAY = "allserv /away"
-AME = "allchan /me"
-AMSG = "allchan /msg *"
-ANICK = "allserv /nick"
-BYE = "quit"
-C = "buffer clear"
-CHAT = "dcc chat"
-CL = "buffer clear"
-CLOSE = "buffer close"
-EXIT = "quit"
-ident = "msg NickServ identify $*"
-IG = "ignore"
-J = "join"
-K = "kick"
-KB = "kickban"
-LEAVE = "part"
-M = "msg"
-MUB = "unban *"
-N = "names"
-Q = "query"
-REDRAW = "window refresh"
-SAY = "msg *"
-SIGNOFF = "quit"
-T = "topic"
-UB = "unban"
-V = "command core version"
-W = "who"
-WC = "window merge"
-WI = "whois"
-WII = "whois $1 $1"
-WW = "whowas"
-
-[completion]
diff --git a/.weechat/irc.conf b/.weechat/irc.conf
deleted file mode 100644
index 1e15734..0000000
--- a/.weechat/irc.conf
+++ /dev/null
@@ -1,154 +0,0 @@
-#
-# irc.conf -- weechat v0.3.6
-#
-
-[look]
-buffer_switch_autojoin = on
-buffer_switch_join = on
-color_nicks_in_names = off
-color_nicks_in_nicklist = off
-color_nicks_in_server_messages = on
-color_pv_nick_like_channel = on
-display_away = local
-display_ctcp_blocked = on
-display_ctcp_reply = on
-display_ctcp_unknown = on
-display_host_join = on
-display_host_join_local = on
-display_host_quit = on
-display_old_topic = on
-display_pv_away_once = on
-display_pv_back = on
-hide_nickserv_pwd = on
-highlight_tags = "irc_privmsg,irc_notice"
-item_away_message = on
-item_channel_modes = on
-item_channel_modes_hide_key = off
-item_display_server = buffer_plugin
-item_nick_modes = on
-item_nick_prefix = on
-msgbuffer_fallback = current
-new_channel_position = none
-new_pv_position = none
-nick_color_force = ""
-nick_color_stop_chars = "_|["
-nick_completion_smart = speakers
-nick_prefix = ""
-nick_suffix = ""
-notice_as_pv = auto
-notify_tags_ison = "notify_message"
-notify_tags_whois = "notify_message"
-part_closes_buffer = off
-raw_messages = 256
-server_buffer = merge_with_core
-smart_filter = on
-smart_filter_delay = 5
-smart_filter_join = on
-smart_filter_nick = on
-smart_filter_quit = on
-topic_strip_colors = off
-
-[color]
-input_nick = lightcyan
-item_away = yellow
-item_channel_modes = default
-item_lag_counting = default
-item_lag_finished = yellow
-message_join = green
-message_quit = red
-nick_prefix = green
-nick_prefixes = "q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"
-nick_suffix = green
-notice = green
-reason_quit = default
-topic_new = white
-topic_old = darkgray
-
-[network]
-autoreconnect_delay_growing = 2
-autoreconnect_delay_max = 1800
-colors_receive = on
-colors_send = on
-lag_check = 60
-lag_disconnect = 0
-lag_min_show = 500
-lag_refresh_interval = 1
-notify_check_ison = 1
-notify_check_whois = 5
-send_unknown_commands = off
-
-[msgbuffer]
-
-[ctcp]
-
-[ignore]
-
-[server_default]
-addresses = ""
-anti_flood_prio_high = 2
-anti_flood_prio_low = 2
-autoconnect = off
-autojoin = ""
-autoreconnect = on
-autoreconnect_delay = 10
-autorejoin = off
-autorejoin_delay = 30
-away_check = 0
-away_check_max_nicks = 25
-command = ""
-command_delay = 0
-connection_timeout = 60
-default_msg_part = "WeeChat %v"
-default_msg_quit = "WeeChat %v"
-ipv6 = off
-local_hostname = ""
-nicks = "slash,slash1,slash2,slash3,slash4"
-notify = ""
-password = ""
-proxy = ""
-realname = ""
-sasl_mechanism = plain
-sasl_password = ""
-sasl_timeout = 15
-sasl_username = ""
-ssl = off
-ssl_cert = ""
-ssl_dhkey_size = 2048
-ssl_priorities = "NORMAL"
-ssl_verify = on
-username = "slash"
-
-[server]
-freenode.addresses = "irc.freenode.net"
-freenode.proxy
-freenode.ipv6
-freenode.ssl
-freenode.ssl_cert
-freenode.ssl_priorities
-freenode.ssl_dhkey_size
-freenode.ssl_verify
-freenode.password
-freenode.sasl_mechanism
-freenode.sasl_username
-freenode.sasl_password
-freenode.sasl_timeout
-freenode.autoconnect = on
-freenode.autoreconnect
-freenode.autoreconnect_delay
-freenode.nicks = "ryuslash"
-freenode.username = "ryuslash"
-freenode.realname
-freenode.local_hostname
-freenode.command
-freenode.command_delay
-freenode.autojoin
-freenode.autorejoin
-freenode.autorejoin_delay
-freenode.connection_timeout
-freenode.anti_flood_prio_high
-freenode.anti_flood_prio_low
-freenode.away_check
-freenode.away_check_max_nicks
-freenode.default_msg_part
-freenode.default_msg_quit
-freenode.notify
diff --git a/.weechat/weechat.conf b/.weechat/weechat.conf
deleted file mode 100644
index 60ae637..0000000
--- a/.weechat/weechat.conf
+++ /dev/null
@@ -1,512 +0,0 @@
-#
-# weechat.conf -- weechat v0.3.6
-#
-
-[debug]
-
-[startup]
-command_after_plugins = ""
-command_before_plugins = ""
-display_logo = on
-display_version = on
-
-[look]
-align_end_of_lines = message
-bar_more_down = "++"
-bar_more_left = "<<"
-bar_more_right = ">>"
-bar_more_up = "--"
-buffer_notify_default = all
-buffer_time_format = "%H:%M:%S"
-color_basic_force_bold = off
-color_inactive_buffer = off
-color_inactive_message = on
-color_inactive_prefix = on
-color_inactive_prefix_buffer = on
-color_inactive_time = off
-color_inactive_window = off
-color_pairs_auto_reset = 5
-color_real_white = off
-command_chars = ""
-confirm_quit = off
-day_change = on
-day_change_time_format = "%a, %d %b %Y"
-eat_newline_glitch = off
-highlight = ""
-highlight_regex = ""
-highlight_tags = ""
-hotlist_add_buffer_if_away = on
-hotlist_buffer_separator = ", "
-hotlist_count_max = 2
-hotlist_count_min_msg = 2
-hotlist_names_count = 3
-hotlist_names_length = 0
-hotlist_names_level = 12
-hotlist_names_merged_buffers = off
-hotlist_short_names = on
-hotlist_sort = group_time_asc
-hotlist_unique_numbers = on
-input_cursor_scroll = 20
-input_share = none
-input_share_overwrite = off
-input_undo_max = 32
-item_buffer_filter = "*"
-item_time_format = "%H:%M"
-jump_current_to_previous_buffer = on
-jump_previous_buffer_when_closing = on
-mouse = off
-mouse_timer_delay = 100
-nickmode = on
-nickmode_empty = off
-paste_max_lines = 3
-prefix_action = " *"
-prefix_align = right
-prefix_align_max = 0
-prefix_align_min = 0
-prefix_align_more = on
-prefix_buffer_align = right
-prefix_buffer_align_max = 0
-prefix_buffer_align_more = on
-prefix_error = "=!="
-prefix_join = "-->"
-prefix_network = "--"
-prefix_quit = "<--"
-prefix_suffix = "|"
-read_marker = line
-read_marker_always_show = off
-read_marker_string = "- "
-save_config_on_exit = on
-save_layout_on_exit = none
-scroll_amount = 3
-scroll_page_percent = 100
-search_text_not_found_alert = on
-separator_horizontal = "-"
-separator_vertical = ""
-set_title = on
-time_format = "%a, %d %b %Y %T"
-
-[palette]
-
-[color]
-bar_more = lightmagenta
-chat = default
-chat_bg = default
-chat_buffer = white
-chat_channel = white
-chat_delimiters = green
-chat_highlight = yellow
-chat_highlight_bg = magenta
-chat_host = cyan
-chat_inactive_buffer = darkgray
-chat_inactive_window = darkgray
-chat_nick = lightcyan
-chat_nick_colors = "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen,blue"
-chat_nick_other = cyan
-chat_nick_self = white
-chat_prefix_action = white
-chat_prefix_buffer = brown
-chat_prefix_buffer_inactive_buffer = darkgray
-chat_prefix_error = yellow
-chat_prefix_join = lightgreen
-chat_prefix_more = lightmagenta
-chat_prefix_network = magenta
-chat_prefix_quit = lightred
-chat_prefix_suffix = green
-chat_read_marker = magenta
-chat_read_marker_bg = default
-chat_server = brown
-chat_tags = red
-chat_text_found = yellow
-chat_text_found_bg = lightmagenta
-chat_time = default
-chat_time_delimiters = brown
-chat_value = cyan
-input_actions = lightgreen
-input_text_not_found = red
-nicklist_away = cyan
-nicklist_group = green
-nicklist_offline = blue
-separator = blue
-status_count_highlight = magenta
-status_count_msg = brown
-status_count_other = default
-status_count_private = green
-status_data_highlight = lightmagenta
-status_data_msg = yellow
-status_data_other = default
-status_data_private = lightgreen
-status_filter = green
-status_more = yellow
-status_name = white
-status_name_ssl = lightgreen
-status_number = yellow
-status_time = default
-
-[completion]
-default_template = "%(nicks)|%(irc_channels)"
-nick_add_space = on
-nick_completer = ":"
-nick_first_only = off
-nick_ignore_chars = "[]`_-^"
-partial_completion_alert = on
-partial_completion_command = off
-partial_completion_command_arg = off
-partial_completion_count = on
-partial_completion_other = off
-
-[history]
-display_default = 5
-max_commands = 100
-max_lines = 4096
-max_visited_buffers = 50
-
-[proxy]
-
-[network]
-gnutls_ca_file = "%h/ssl/CAs.pem"
-gnutls_handshake_timeout = 30
-
-[plugin]
-autoload = "*"
-debug = off
-extension = ".so"
-path = "%h/plugins"
-save_config_on_unload = on
-
-[bar]
-input.color_bg = default
-input.color_delim = cyan
-input.color_fg = default
-input.conditions = ""
-input.filling_left_right = vertical
-input.filling_top_bottom = horizontal
-input.hidden = off
-input.items = "[input_prompt]+(away),[input_search],[input_paste],input_text"
-input.position = bottom
-input.priority = 1000
-input.separator = off
-input.size = 1
-input.size_max = 0
-input.type = window
-nicklist.color_bg = default
-nicklist.color_delim = cyan
-nicklist.color_fg = default
-nicklist.conditions = "nicklist"
-nicklist.filling_left_right = vertical
-nicklist.filling_top_bottom = columns_vertical
-nicklist.hidden = off
-nicklist.items = "buffer_nicklist"
-nicklist.position = right
-nicklist.priority = 200
-nicklist.separator = on
-nicklist.size = 0
-nicklist.size_max = 0
-nicklist.type = window
-status.color_bg = red
-status.color_delim = cyan
-status.color_fg = default
-status.conditions = ""
-status.filling_left_right = vertical
-status.filling_top_bottom = horizontal
-status.hidden = off
-status.items = "[time],[buffer_count],[buffer_plugin],buffer_number+:+buffer_name+{buffer_nicklist_count}+buffer_filter,[lag],[hotlist],completion,scroll"
-status.position = bottom
-status.priority = 500
-status.separator = off
-status.size = 1
-status.size_max = 0
-status.type = window
-title.color_bg = red
-title.color_delim = cyan
-title.color_fg = white
-title.conditions = ""
-title.filling_left_right = vertical
-title.filling_top_bottom = horizontal
-title.hidden = off
-title.items = "buffer_title"
-title.position = top
-title.priority = 500
-title.separator = off
-title.size = 1
-title.size_max = 0
-title.type = window
-
-[layout]
-
-[notify]
-
-[filter]
-
-[key]
-ctrl-? = "/input delete_previous_char"
-ctrl-A = "/input move_beginning_of_line"
-ctrl-B = "/input move_previous_char"
-ctrl-Cb = "/input insert \x02"
-ctrl-Cc = "/input insert \x03"
-ctrl-Ci = "/input insert \x1D"
-ctrl-Co = "/input insert \x0F"
-ctrl-Cr = "/input insert \x12"
-ctrl-Cu = "/input insert \x15"
-ctrl-D = "/input delete_next_char"
-ctrl-E = "/input move_end_of_line"
-ctrl-F = "/input move_next_char"
-ctrl-H = "/input delete_previous_char"
-ctrl-I = "/input complete_next"
-ctrl-J = "/input return"
-ctrl-K = "/input delete_end_of_line"
-ctrl-L = "/window refresh"
-ctrl-M = "/input return"
-ctrl-N = "/buffer +1"
-ctrl-P = "/buffer -1"
-ctrl-R = "/input search_text"
-ctrl-Sctrl-U = "/input set_unread"
-ctrl-T = "/input transpose_chars"
-ctrl-U = "/input delete_beginning_of_line"
-ctrl-W = "/input delete_previous_word"
-ctrl-X = "/input switch_active_buffer"
-ctrl-Y = "/input clipboard_paste"
-meta-meta2-1~ = "/window scroll_top"
-meta-meta2-23~ = "/bar scroll nicklist * yb"
-meta-meta2-24~ = "/bar scroll nicklist * ye"
-meta-meta2-4~ = "/window scroll_bottom"
-meta-meta2-5~ = "/window scroll_up"
-meta-meta2-6~ = "/window scroll_down"
-meta-meta2-7~ = "/window scroll_top"
-meta-meta2-8~ = "/window scroll_bottom"
-meta-meta2-A = "/buffer -1"
-meta-meta2-B = "/buffer +1"
-meta-meta2-C = "/buffer +1"
-meta-meta2-D = "/buffer -1"
-meta-0 = "/buffer *10"
-meta-1 = "/buffer *1"
-meta-2 = "/buffer *2"
-meta-3 = "/buffer *3"
-meta-4 = "/buffer *4"
-meta-5 = "/buffer *5"
-meta-6 = "/buffer *6"
-meta-7 = "/buffer *7"
-meta-8 = "/buffer *8"
-meta-9 = "/buffer *9"
-meta-< = "/input jump_previously_visited_buffer"
-meta-= = "/filter toggle"
-meta-> = "/input jump_next_visited_buffer"
-meta-OA = "/input history_global_previous"
-meta-OB = "/input history_global_next"
-meta-OC = "/input move_next_word"
-meta-OD = "/input move_previous_word"
-meta-OF = "/input move_end_of_line"
-meta-OH = "/input move_beginning_of_line"
-meta-Oa = "/input history_global_previous"
-meta-Ob = "/input history_global_next"
-meta-Oc = "/input move_next_word"
-meta-Od = "/input move_previous_word"
-meta2-15~ = "/buffer -1"
-meta2-17~ = "/buffer +1"
-meta2-18~ = "/window -1"
-meta2-19~ = "/window +1"
-meta2-1;3A = "/buffer -1"
-meta2-1;3B = "/buffer +1"
-meta2-1;3C = "/buffer +1"
-meta2-1;3D = "/buffer -1"
-meta2-1;5A = "/input history_global_previous"
-meta2-1;5B = "/input history_global_next"
-meta2-1~ = "/input move_beginning_of_line"
-meta2-20~ = "/bar scroll title * x-50%"
-meta2-21~ = "/bar scroll title * x+50%"
-meta2-23~ = "/bar scroll nicklist * y-100%"
-meta2-24~ = "/bar scroll nicklist * y+100%"
-meta2-3~ = "/input delete_next_char"
-meta2-4~ = "/input move_end_of_line"
-meta2-5;3~ = "/window scroll_up"
-meta2-5~ = "/window page_up"
-meta2-6;3~ = "/window scroll_down"
-meta2-6~ = "/window page_down"
-meta2-7~ = "/input move_beginning_of_line"
-meta2-8~ = "/input move_end_of_line"
-meta2-A = "/input history_previous"
-meta2-B = "/input history_next"
-meta2-C = "/input move_next_char"
-meta2-D = "/input move_previous_char"
-meta2-F = "/input move_end_of_line"
-meta2-G = "/window page_down"
-meta2-H = "/input move_beginning_of_line"
-meta2-I = "/window page_up"
-meta2-Z = "/input complete_previous"
-meta-_ = "/input redo"
-meta-a = "/input jump_smart"
-meta-b = "/input move_previous_word"
-meta-d = "/input delete_next_word"
-meta-f = "/input move_next_word"
-meta-h = "/input hotlist_clear"
-meta-jmeta-l = "/input jump_last_buffer"
-meta-jmeta-r = "/server raw"
-meta-jmeta-s = "/server jump"
-meta-j01 = "/buffer 1"
-meta-j02 = "/buffer 2"
-meta-j03 = "/buffer 3"
-meta-j04 = "/buffer 4"
-meta-j05 = "/buffer 5"
-meta-j06 = "/buffer 6"
-meta-j07 = "/buffer 7"
-meta-j08 = "/buffer 8"
-meta-j09 = "/buffer 9"
-meta-j10 = "/buffer 10"
-meta-j11 = "/buffer 11"
-meta-j12 = "/buffer 12"
-meta-j13 = "/buffer 13"
-meta-j14 = "/buffer 14"
-meta-j15 = "/buffer 15"
-meta-j16 = "/buffer 16"
-meta-j17 = "/buffer 17"
-meta-j18 = "/buffer 18"
-meta-j19 = "/buffer 19"
-meta-j20 = "/buffer 20"
-meta-j21 = "/buffer 21"
-meta-j22 = "/buffer 22"
-meta-j23 = "/buffer 23"
-meta-j24 = "/buffer 24"
-meta-j25 = "/buffer 25"
-meta-j26 = "/buffer 26"
-meta-j27 = "/buffer 27"
-meta-j28 = "/buffer 28"
-meta-j29 = "/buffer 29"
-meta-j30 = "/buffer 30"
-meta-j31 = "/buffer 31"
-meta-j32 = "/buffer 32"
-meta-j33 = "/buffer 33"
-meta-j34 = "/buffer 34"
-meta-j35 = "/buffer 35"
-meta-j36 = "/buffer 36"
-meta-j37 = "/buffer 37"
-meta-j38 = "/buffer 38"
-meta-j39 = "/buffer 39"
-meta-j40 = "/buffer 40"
-meta-j41 = "/buffer 41"
-meta-j42 = "/buffer 42"
-meta-j43 = "/buffer 43"
-meta-j44 = "/buffer 44"
-meta-j45 = "/buffer 45"
-meta-j46 = "/buffer 46"
-meta-j47 = "/buffer 47"
-meta-j48 = "/buffer 48"
-meta-j49 = "/buffer 49"
-meta-j50 = "/buffer 50"
-meta-j51 = "/buffer 51"
-meta-j52 = "/buffer 52"
-meta-j53 = "/buffer 53"
-meta-j54 = "/buffer 54"
-meta-j55 = "/buffer 55"
-meta-j56 = "/buffer 56"
-meta-j57 = "/buffer 57"
-meta-j58 = "/buffer 58"
-meta-j59 = "/buffer 59"
-meta-j60 = "/buffer 60"
-meta-j61 = "/buffer 61"
-meta-j62 = "/buffer 62"
-meta-j63 = "/buffer 63"
-meta-j64 = "/buffer 64"
-meta-j65 = "/buffer 65"
-meta-j66 = "/buffer 66"
-meta-j67 = "/buffer 67"
-meta-j68 = "/buffer 68"
-meta-j69 = "/buffer 69"
-meta-j70 = "/buffer 70"
-meta-j71 = "/buffer 71"
-meta-j72 = "/buffer 72"
-meta-j73 = "/buffer 73"
-meta-j74 = "/buffer 74"
-meta-j75 = "/buffer 75"
-meta-j76 = "/buffer 76"
-meta-j77 = "/buffer 77"
-meta-j78 = "/buffer 78"
-meta-j79 = "/buffer 79"
-meta-j80 = "/buffer 80"
-meta-j81 = "/buffer 81"
-meta-j82 = "/buffer 82"
-meta-j83 = "/buffer 83"
-meta-j84 = "/buffer 84"
-meta-j85 = "/buffer 85"
-meta-j86 = "/buffer 86"
-meta-j87 = "/buffer 87"
-meta-j88 = "/buffer 88"
-meta-j89 = "/buffer 89"
-meta-j90 = "/buffer 90"
-meta-j91 = "/buffer 91"
-meta-j92 = "/buffer 92"
-meta-j93 = "/buffer 93"
-meta-j94 = "/buffer 94"
-meta-j95 = "/buffer 95"
-meta-j96 = "/buffer 96"
-meta-j97 = "/buffer 97"
-meta-j98 = "/buffer 98"
-meta-j99 = "/buffer 99"
-meta-k = "/input grab_key_command"
-meta-n = "/window scroll_next_highlight"
-meta-p = "/window scroll_previous_highlight"
-meta-r = "/input delete_line"
-meta-u = "/input scroll_unread"
-meta-wmeta-meta2-A = "/window up"
-meta-wmeta-meta2-B = "/window down"
-meta-wmeta-meta2-C = "/window right"
-meta-wmeta-meta2-D = "/window left"
-meta-wmeta2-1;3A = "/window up"
-meta-wmeta2-1;3B = "/window down"
-meta-wmeta2-1;3C = "/window right"
-meta-wmeta2-1;3D = "/window left"
-meta-wmeta-b = "/window balance"
-meta-wmeta-s = "/window swap"
-meta-z = "/window zoom"
-ctrl-_ = "/input undo"
-
-[key_search]
-ctrl-J = "/input search_stop"
-ctrl-M = "/input search_stop"
-ctrl-R = "/input search_switch_case"
-meta2-A = "/input search_previous"
-meta2-B = "/input search_next"
-
-[key_cursor]
-ctrl-J = "/cursor stop"
-ctrl-M = "/cursor stop"
-meta-meta2-A = "/cursor move area_up"
-meta-meta2-B = "/cursor move area_down"
-meta-meta2-C = "/cursor move area_right"
-meta-meta2-D = "/cursor move area_left"
-meta2-1;3A = "/cursor move area_up"
-meta2-1;3B = "/cursor move area_down"
-meta2-1;3C = "/cursor move area_right"
-meta2-1;3D = "/cursor move area_left"
-meta2-A = "/cursor move up"
-meta2-B = "/cursor move down"
-meta2-C = "/cursor move right"
-meta2-D = "/cursor move left"
-@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}"
-@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}"
-@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}"
-@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop"
-@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}"
-@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop"
-@chat:m = "hsignal:chat_quote_message;/cursor stop"
-@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop"
-
-[key_mouse]
-@bar(input):button2 = "/input grab_mouse_area"
-@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%"
-@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e"
-@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%"
-@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b"
-@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}"
-@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}"
-@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}"
-@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}"
-@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}"
-@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
-@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
-@chat:button1 = "/window ${_window_number}"
-@chat:button1-gesture-left = "/window ${_window_number};/buffer -1"
-@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1"
-@chat:button1-gesture-right = "/window ${_window_number};/buffer +1"
-@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer"
-@chat:wheeldown = "/window scroll_down -window ${_window_number}"
-@chat:wheelup = "/window scroll_up -window ${_window_number}"
-@*:button3 = "/cursor go ${_x},${_y}"
diff --git a/.zsh/Makefile b/.zsh/Makefile
index 077367e..acd5e4e 100644
--- a/.zsh/Makefile
+++ b/.zsh/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/.zsh
+SUBDIR=.zsh
modules=functions
include ../dotfiles.mk
diff --git a/.zsh/functions/Makefile b/.zsh/functions/Makefile
index baf5c6b..f71df23 100644
--- a/.zsh/functions/Makefile
+++ b/.zsh/functions/Makefile
@@ -1,7 +1,4 @@
-DESTDIR:=$(DESTDIR)/functions
-objects=chpwd_show_todo chpwd_update_git_vars env get_cnt line \
- precmd_maybe_festival precmd_update_git_vars precmd_update_updates \
- preexec_update_vars prompt prompt_git_info rprompt \
- update_current_git_vars welcome venv
+SUBDIR=functions
+objects=env venv add-to-list
include ../../dotfiles.mk
diff --git a/.zsh/functions/add-to-list b/.zsh/functions/add-to-list
new file mode 100644
index 0000000..18720e0
--- /dev/null
+++ b/.zsh/functions/add-to-list
@@ -0,0 +1,10 @@
+# -*- mode: sh; -*-
+if [[ ! "${(P)${1}}" =~ (^|:)"$2"(:|$) ]]; then
+ if [ -n "$3" ]; then
+ # Append
+ typeset -g $1="${(P)${1}}:$2"
+ else
+ # Prepend
+ typeset -g $1="$2:${(P)${1}}"
+ fi
+fi
diff --git a/.zsh/functions/chpwd_show_todo b/.zsh/functions/chpwd_show_todo
deleted file mode 100644
index 88ee853..0000000
--- a/.zsh/functions/chpwd_show_todo
+++ /dev/null
@@ -1,7 +0,0 @@
-# -*- mode: Shell-script -*-
-
-if [ -e ".toudou" ]; then
- toudou
-elif [ "$PWD" = "$HOME" ]; then
- toudou list -g
-fi
diff --git a/.zsh/functions/chpwd_update_git_vars b/.zsh/functions/chpwd_update_git_vars
deleted file mode 100755
index 0ef846a..0000000
--- a/.zsh/functions/chpwd_update_git_vars
+++ /dev/null
@@ -1,2 +0,0 @@
-# -*- mode: shell-script -*-
-update_current_git_vars
diff --git a/.zsh/functions/env b/.zsh/functions/env
index 6eb728a..a79fd5d 100644
--- a/.zsh/functions/env
+++ b/.zsh/functions/env
@@ -1,3 +1,3 @@
# -*- mode: shell-script -*-
-/usr/bin/env "$@" | grep -v ^LESS_TERMCAP_
+/usr/bin/env "$@" | grep -v \^LESS_TERMCAP_
diff --git a/.zsh/functions/get_cnt b/.zsh/functions/get_cnt
deleted file mode 100644
index 5fc3d4f..0000000
--- a/.zsh/functions/get_cnt
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- mode: shell-script -*-
-
-if [ -n "$1" ]; then
- if [ -e "$HOME/.local/share/$1.cnt" ]; then
- cnt=$(/bin/cat "$HOME/.local/share/$1.cnt")
- fi
-
- if [ -z "$cnt" ]; then
- cnt=0
- fi
-
- echo $cnt
-else
- echo "No count name specified" >&2
-fi
diff --git a/.zsh/functions/line b/.zsh/functions/line
deleted file mode 100644
index 58f7aed..0000000
--- a/.zsh/functions/line
+++ /dev/null
@@ -1,8 +0,0 @@
-# -*- mode: shell-script; eval: (git-auto-commit-mode 1) -*-
-
-let start=$(expr $1 + 1)
-let width=$(expr $COLUMNS - $2)
-
-for i in {$start..$width}; do
- echo -n \\x2d
-done
diff --git a/.zsh/functions/precmd_maybe_festival b/.zsh/functions/precmd_maybe_festival
deleted file mode 100644
index 3f8baa3..0000000
--- a/.zsh/functions/precmd_maybe_festival
+++ /dev/null
@@ -1,15 +0,0 @@
-cmdstatus=$?
-
-if [ -n "$__COMMAND_EXECUTING" -a $__COMMAND_EXECUTING -gt 0 \
- -a -n "$__COMMAND_EXEC_TIME" ]; then
- __COMMAND_EXECUTING=0
- duration=$(expr $(date +%s) - $__COMMAND_EXEC_TIME)
-
- if [ $duration -gt 30 ]; then
- if [ $cmdstatus -eq 0 ]; then
- echo "done" | festival --tts
- else
- echo "failed" | festival --tts
- fi
- fi
-fi
diff --git a/.zsh/functions/precmd_update_git_vars b/.zsh/functions/precmd_update_git_vars
deleted file mode 100755
index 172456a..0000000
--- a/.zsh/functions/precmd_update_git_vars
+++ /dev/null
@@ -1,6 +0,0 @@
-# -*- mode: shell-script -*-
-
-if [ -n "$__EXECUTED_GIT_COMMAND" ]; then
- update_current_git_vars
- unset __EXECUTED_GIT_COMMAND
-fi
diff --git a/.zsh/functions/precmd_update_updates b/.zsh/functions/precmd_update_updates
deleted file mode 100644
index 639fd5c..0000000
--- a/.zsh/functions/precmd_update_updates
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- mode: shell-script -*-
-
-if [ -n "$__EXECUTED_PACMAN_COMMAND" ]; then
- update_pac_cnt
- unset __EXECUTED_PACMAN_COMMAND
-fi
-
-if [ -n "$__EXECUTED_COWER_COMMAND" ]; then
- update_aur_cnt
- unset __EXECUTED_COWER_COMMAND
-fi
diff --git a/.zsh/functions/preexec_update_vars b/.zsh/functions/preexec_update_vars
deleted file mode 100644
index f8c1b44..0000000
--- a/.zsh/functions/preexec_update_vars
+++ /dev/null
@@ -1,16 +0,0 @@
-# -*- mode: shell-script -*-
-
-case "$1" in
- git*)
- __EXECUTED_GIT_COMMAND=1
- ;;
- cower*)
- __EXECUTED_COWER_COMMAND=1
- ;;
- *pacman*)
- __EXECUTED_PACMAN_COMMAND=1
- ;;
-esac
-
-__COMMAND_EXEC_TIME=$(date +%s)
-__COMMAND_EXECUTING=1
diff --git a/.zsh/functions/prompt b/.zsh/functions/prompt
deleted file mode 100644
index 6fe927b..0000000
--- a/.zsh/functions/prompt
+++ /dev/null
@@ -1,15 +0,0 @@
-# -*- mode: shell-script; eval: (git-auto-commit-mode 1) -*-
-
-local pac_cnt=$(get_cnt updates)
-local aur_cnt=$(get_cnt aur)
-local hostname=$(hostname | cut -d . -f 1)
-
-if [ $pac_cnt -gt 0 -o $aur_cnt -gt 0 ]; then
- printf "%s%d%s/%s%d%s:" \
- "%{${fg[cyan]}%}" $pac_cnt "%{${fg[default]}%}" \
- "%{${fg[cyan]}%}" $aur_cnt "%{${fg[default]}%}"
-fi
-
-printf '%s%s%s:%s%s%s%s ' \
- "%{${fg[magenta]}%}" $hostname "%{${fg[default]}%}" \
- "%(?.%{${fg[green]}%}.%{${fg[red]}%})" "%~" "%{${fg[default]}%}"
diff --git a/.zsh/functions/prompt_git_info b/.zsh/functions/prompt_git_info
deleted file mode 100755
index 76d889a..0000000
--- a/.zsh/functions/prompt_git_info
+++ /dev/null
@@ -1,23 +0,0 @@
-# -*- mode: shell-script -*-
-
-if [ -n "$__CURRENT_GIT_BRANCH" ]; then
- local s="("
- s+="$__CURRENT_GIT_BRANCH"
- case "$__CURRENT_GIT_BRANCH_STATUS" in
- ahead)
- s+="↑"
- ;;
- diverged)
- s+="↕"
- ;;
- behind)
- s+="↓"
- ;;
- esac
- if [ -n "$__CURRENT_GIT_BRANCH_IS_DIRTY" ]; then
- s+="⚡"
- fi
- s+=")"
-
- printf " %s%s" "%{${fg[yellow]}%}" $s
-fi
diff --git a/.zsh/functions/rprompt b/.zsh/functions/rprompt
deleted file mode 100644
index 3392379..0000000
--- a/.zsh/functions/rprompt
+++ /dev/null
@@ -1,4 +0,0 @@
-# -*- mode: shell-script -*-
-
-local git_info="$(prompt_git_info)"
-printf '%s%s' $git_info "%{${fg[default]}%}"
diff --git a/.zsh/functions/update_current_git_vars b/.zsh/functions/update_current_git_vars
deleted file mode 100755
index 71f37e7..0000000
--- a/.zsh/functions/update_current_git_vars
+++ /dev/null
@@ -1,30 +0,0 @@
-# -*- mode: Shell-script -*-
-unset __CURRENT_GIT_BRANCH
-unset __CURRENT_GIT_BRANCH_STATUS
-unset __CURRENT_GIT_BRANCH_IS_DIRTY
-
-local st="$(git status 2>/dev/null)"
-if [[ -n "$st" ]]; then
- local -a arr
- arr=(${(f)st})
-
- if [[ $arr[1] =~ 'Not currently on any branch.' ]]; then
- __CURRENT_GIT_BRANCH='no-branch'
- else
- __CURRENT_GIT_BRANCH="${arr[1][(w)4]}"
- fi
-
- if [[ $arr[2] =~ 'Your branch is' ]]; then
- if [[ $arr[2] =~ 'ahead' ]]; then
- __CURRENT_GIT_BRANCH_STATUS='ahead'
- elif [[ $arr[2] =~ 'devirged' ]]; then
- __CURRENT_GIT_BRANCH_STATUS='diverged'
- else
- __CURRENT_GIT_BRANCH_STATUS='behind'
- fi
- fi
-
- if [[ ! $st =~ 'nothing to commit' ]]; then
- __CURRENT_GIT_BRANCH_IS_DIRTY='1'
- fi
-fi
diff --git a/.zsh/functions/welcome b/.zsh/functions/welcome
deleted file mode 100644
index bd6aacd..0000000
--- a/.zsh/functions/welcome
+++ /dev/null
@@ -1,10 +0,0 @@
-# -*- mode: shell-script; eval: (git-auto-commit-mode 1) -*-
-
-echo " , _ _ _ |"
-echo " /#\\ __ _ _ __ ___| |__ | (_)_ __ _ ___ __ |"
-echo " /###\\ / _\` | '__/ __| '_ \\| | | '_ \\| | | \\ \\/ / |"
-echo " /#####\\ | (_| | | | (__| | | | | | | | | |_| |> < |"
-echo " /##,-,##\\ \\__,_|_| \\___|_| |_|_|_|_| |_|\\__,_/_/\\_\\ |"
-echo " /##( )##\\ |"
-echo " /#.-- --.#\\ A simple, lightweight linux distribution. |"
-echo " /\` \`\\ |"
diff --git a/.zshrc b/.zshrc
index 735e5bc..cbc5673 100644
--- a/.zshrc
+++ b/.zshrc
@@ -35,7 +35,7 @@ alias mysql="mysql --pager"
alias -s pdf="zathura"
alias -s xls="libreoffice"
-setopt notify
+setopt NOTIFY
setopt PROMPT_SUBST # Allow for functions in the prompt
setopt EXTENDED_GLOB
@@ -46,21 +46,17 @@ typeset -ga preexec_functions
typeset -ga precmd_functions
typeset -ga chpwd_functions
-add-zsh-hook preexec preexec_update_vars
-add-zsh-hook precmd precmd_update_git_vars
-add-zsh-hook precmd precmd_update_updates
-add-zsh-hook precmd precmd_maybe_festival
add-zsh-hook precmd vcs_info
-add-zsh-hook chpwd chpwd_update_git_vars
-zstyle ':vcs_info:*' actionformats '%B%F{5}%a%f%%b %s:%r-%b %S'
+zstyle ':vcs_info:*' actionformats '%B%F{1}%a%f%%b (%F{3}%s%f) %F{5}%r%f:%F{4}%b%f %F{2}%S%f'
zstyle ':vcs_info:*' enable bzr git hg svn
-zstyle ':vcs_info:*' formats '%s:%r-%b %S'
-zstyle ':vcs_info:*' nvcsformats '%~'
+zstyle ':vcs_info:*' formats '(%F{3}%s%f) %F{5}%r%f:%F{4}%b%f %F{2}%S%f'
+zstyle ':vcs_info:*' nvcsformats '%F{2}%~%f'
zstyle ':vcs_info:bzr:*' branchformat '%b'
# Set the prompt.
-PROMPT='%B%(?.%F{2}+.%F{1}-) %F{6}%m%b%f ${vcs_info_msg_0_} %# '
+PROMPT='${vcs_info_msg_0_}
+%B%F{6}%m%b%f %B%(?.%F{2}+.%F{1}-)%b> '
# Set terminal name to current running application
case $TERM in
@@ -70,6 +66,17 @@ case $TERM in
;;
esac
+add-to-list PATH "$HOME/usr/bin"
+add-to-list PATH "/usr/local/clark/bin" t
+
+add-to-list INFOPATH "$HOME/documents/info"
+add-to-list INFOPATH "$HOME/.emacs.d/vendor-lisp/org/doc"
+add-to-list INFOPATH "/usr/local/clark/share/info" t
+
+export XDG_CACHE_HOME="$HOME/.cache"
+export XDG_CONFIG_HOME="$HOME/.config"
+export XDG_DATA_HOME="$HOME/.local/share"
+
# Set terminal keys
bindkey "\e[1~" beginning-of-line
bindkey "\e[4~" end-of-line
diff --git a/Makefile b/Makefile
index 8b7f397..cee630e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,8 @@
export DESTDIR:=$(HOME)
-modules=emacs .config .conkerorrc .local .moc .mutt .ncmpcpp \
- .pentadactyl .sawfish .ssh .w3m .weechat .zsh
-objects=.bash_profile .beetsconfig .conky_box.lua .conkyrc .gitconfig \
- .guile .hgrc .offlineimap.py .offlineimaprc .screenrc .scwmrc \
- .slrnrc .stumpwmrc .tmux.conf .urlview .xbindkeysrc.scm .Xdefaults \
- .xinitrc .Xmodmap .xsession .zprofile .zshrc .zile
+modules=emacs .config .conkerorrc .ssh .w3m .zsh sbcl
+objects=.bash_profile .beetsconfig .gitconfig .guile .hgrc \
+ .offlineimap.py .offlineimaprc .screenrc .stumpwmrc .urlview \
+ .Xdefaults .xinitrc .Xmodmap .xsession .zprofile .zshrc .zile
export MAKEROOT=y
diff --git a/dotfiles.mk b/dotfiles.mk
index 892c5b5..4132992 100644
--- a/dotfiles.mk
+++ b/dotfiles.mk
@@ -2,11 +2,19 @@ LOAD_PATH=. /usr/share/emacs/site-lisp $(HOME)/.emacs.d/site-lisp
EMACS=emacs $(addprefix -L ,$(LOAD_PATH))
MODE=644
+ifeq ($(shell if [ "`tput colors`" -gt 0 ]; then echo -n "y"; fi),y)
FG_BLU=\033[0;34m
FG_YEL=\033[0;33m
FG_GRE=\033[0;32m
FG_RED=\033[0;31m
CLR_RE=\033[0;00m
+else
+FG_BLU=
+FG_YEL=
+FG_GRE=
+FG_RED=
+CLR_RE=
+endif
compile = $(EMACS) -Q -batch -eval "(byte-compile-file \"$(1)\")"
define newer =
@@ -19,24 +27,44 @@ endef
check-objects=$(addprefix check-,$(objects))
install-objects=$(addprefix install-,$(objects))
reverse-objects=$(addprefix reverse-,$(objects))
+cleanup-objects=$(addprefix cleanup-,$(objects))
uninstall-objects=$(addprefix uninstall-,$(objects))
check-modules=$(addprefix check-,$(modules))
install-modules=$(addprefix install-,$(modules))
reverse-modules=$(addprefix reverse-,$(modules))
+cleanup-modules=$(addprefix cleanup-,$(modules))
uninstall-modules=$(addprefix uninstall-,$(modules))
-.PHONY: all install uninstall check uninstall $(modules) \
- $(install-objects) $(uninstall-objects) $(check-objects) \
- $(install-modules) $(uninstall-modules) $(check-modules) \
- $(reverse) $(reverse-objects) $(reverse-modules)
+.PHONY: all install cleanup check cleanup $(modules) \
+ $(install-objects) $(cleanup-objects) $(check-objects) \
+ $(install-modules) $(cleanup-modules) $(check-modules) \
+ $(reverse) $(reverse-objects) $(reverse-modules) \
+ $(uninstall-objects) $(uninstall-modules)
all: $(modules) $(objects)
ifeq ($(MAKEROOT),y)
check: $(check-modules) $(check-objects)
-install: $(install-modules) $(install-objects)
+install: cleanup $(install-modules) $(install-objects) Makefile.old
reverse: $(reverse-modules) $(reverse-objects)
uninstall: $(uninstall-modules) $(uninstall-objects)
+ @rmdir --ignore-fail-on-non-empty $(DESTDIR) 2> /dev/null || true
+ifeq ($(firstword $(MAKEFILE_LIST)),Makefile.old)
+cleanup: $(cleanup-modules) $(cleanup-objects)
+ @rmdir --ignore-fail-on-non-empty $(DESTDIR) 2> /dev/null || true
+else
+cleanup: export NEWOBJS = $(objects)
+cleanup: export NEWMODS = $(modules)
+cleanup:
+ @$(MAKE) -s -f Makefile.old cleanup
+
+Makefile.old: $(firstword $(MAKEFILE_LIST))
+ @cp "$^" "$@"
+
+ifdef SUBDIR
+DESTDIR:=$(DESTDIR)/$(SUBDIR)
+endif
+endif
else
check:
@$(MAKE) -s -C ../ check
@@ -44,6 +72,8 @@ install:
@$(MAKE) -s -C ../ install
reverse:
@$(MAKE) -s -C ../ reverse
+cleanup:
+ @$(MAKE) -s -C ../ cleanup
uninstall:
@$(MAKE) -s -C ../ uninstall
endif
@@ -70,14 +100,17 @@ $(reverse-objects): reverse-%:
$(reverse-modules): reverse-%:
@$(MAKE) -s -C $* reverse MKDPREFIX=$(MKDPREFIX)$*/
-$(uninstall-objects): uninstall-%:
- @$(if $(call older,$*), \
- echo -e "$(FG_RED)+ $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)", \
- echo -e "$(FG_GRE)- $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)"; \
- rm -f "$(DESTDIR)/$*")
+$(cleanup-objects): cleanup-%:
+ @$(if $(findstring $*,$(NEWOBJS)),, \
+ @$(if $(call older,$*), \
+ echo -e "$(FG_RED)+ $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)", \
+ echo -e "$(FG_GRE)- $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)"; \
+ unlink "$(DESTDIR)/$*" || true))
-$(uninstall-modules): uninstall-%:
- @$(MAKE) -C $* uninstall MKDPREFIX=$(MKDPREFIX)$*/
+$(cleanup-modules): cleanup-%:
+ @$(if $(findstring $*,$(NEWMODS)), \
+ @$(MAKE) -C $* cleanup MKDPREFIX=$(MKDPREFIX)$*/, \
+ @$(MAKE) -C $* uninstall MKDPREFIX=$(MKDPREFIX)$*/)
$(check-objects): check-%:
@$(if $(call newer,$*), \
@@ -89,5 +122,14 @@ $(check-objects): check-%:
$(check-modules): check-%:
@$(MAKE) -s -C $* check MKDPREFIX=$(MKDPREFIX)$*/
+$(uninstall-objects): uninstall-%:
+ @$(if $(call older,$*), \
+ echo -e "$(FG_RED)+ $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)", \
+ echo -e "$(FG_GRE)- $(FG_YEL)$(MKDPREFIX)$*$(CLR_RE)"; \
+ unlink "$(DESTDIR)/$*" || true)
+
+$(uninstall-modules): uninstall-%:
+ @$(MAKE) -s -C $* uninstall MKDPREFIX=$(MKDPREFIX)$*/
+
$(filter %.elc,$(objects)): %.elc: %.el
$(call compile,$^)
diff --git a/emacs/.gitignore b/emacs/.gitignore
index 771231f..513ac08 100644
--- a/emacs/.gitignore
+++ b/emacs/.gitignore
@@ -14,3 +14,4 @@ rinit.*
!rinit.org
history
*.html
+init.el
diff --git a/emacs/Makefile b/emacs/Makefile
index 43ee5ec..8d99401 100644
--- a/emacs/Makefile
+++ b/emacs/Makefile
@@ -1,7 +1,12 @@
-DESTDIR:=$(DESTDIR)/.emacs.d
+SUBDIR=.emacs.d
objects=init.elc init.el gnus.elc gnus.el
modules=eshell site-lisp snippets
EMACS=emacs
include ../dotfiles.mk
+
+init.el: init.org
+ $(EMACS) -Q -batch \
+ -eval "(progn (require 'org) (require 'ob-tangle) \
+ (org-babel-tangle-file \"$^\"))"
diff --git a/emacs/eshell/Makefile b/emacs/eshell/Makefile
index fd3b0f2..3b6ce2f 100644
--- a/emacs/eshell/Makefile
+++ b/emacs/eshell/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/eshell
+SUBDIR=eshell
objects=alias
modules=
diff --git a/emacs/init.el b/emacs/init.el
index 9198675..3db05da 100644
--- a/emacs/init.el
+++ b/emacs/init.el
@@ -1,35 +1,28 @@
-;;; Turn the menu, scroll-bar and tool-bar off quickly, so they don't
-;;; jump around as much.
-(menu-bar-mode -1)
+(menu-bar-mode -1)
(scroll-bar-mode -1)
-(tool-bar-mode -1)
-
-(defmacro eval-after-init (&rest body)
- "Defer execution of BODY until after Emacs init.
-
-Some functionality is dependent on code loaded by package.el.
-Instead of requiring package.el to load very early on, have some
-functionality deferred to a point after Emacs has initialized and
-package.el is loaded anyway."
- `(add-hook 'emacs-startup-hook #'(lambda () ,@body)))
-
-;;; Add some project directories and my site-lisp directory to the
-;;; load path to make it easy to (auto)load them.
+(tool-bar-mode -1)
+
(mapc #'(lambda (dir)
(add-to-list 'load-path dir)
(let ((loaddefs (concat dir "/loaddefs.el")))
(when (file-exists-p loaddefs)
(load loaddefs))))
- '("~/projects/emacs/mode-icons" "~/.emacs.d/site-lisp"
- "~/projects/emacs/pony-mode/src" "~/projects/emacs/php-mode"))
-
-;;; I have never, yet, accidentally said `y' or `n' when asked.
+ '("~/.emacs.d/site-lisp" "~/projects/emacs/pony-mode/src"
+ "~/projects/emacs/php-mode" "~/.emacs.d/vendor-lisp/org/lisp"
+ "~/.emacs.d/vendor-lisp/org/contrib/lisp"))
+
+(require 'ext)
+(require 'oni)
+
+(setq custom-theme-directory "~/.emacs.d/themes")
+(oni:eval-after-init (load-theme 'yoshi t))
+
(defalias 'yes-or-no-p 'y-or-n-p)
-;;; These are much more feature-rich.
(defalias 'list-buffers 'ibuffer)
+
(defalias 'dabbrev-expand 'hippie-expand)
-
+
(defun ext:comp-finish-function (buf str)
"Close the compilation buffer quickly if everything went OK."
(if (string-match "exited abnormally" str)
@@ -37,30 +30,76 @@ package.el is loaded anyway."
(message "compilation errors, press C-x ` to visit")
;; no errors, make the compilation window go away in 0.5 seconds
(when (member (buffer-name) '("*Compilation*" "*compilation*"))
- (run-at-time 0.5 nil 'delete-windows-on buf)
+ (delete-windows-on buf)
(message "No compilation errors!"))))
(add-to-list 'compilation-finish-functions 'ext:comp-finish-function)
-;;; I close the compilation window if there are no errors. Seeing it
-;;; scroll past lets me see if there were any warnings I might want to
-;;; look at.
(setq compilation-scroll-output t)
-
-;;; Enable the excellent `paredit-mode' for any lisp-like languages.
-(add-hook 'clojure-mode-hook 'paredit-mode)
+
+(add-hook 'prog-mode-hook 'auto-fill-mode)
+(add-hook 'text-mode-hook 'auto-fill-mode)
+
+(add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
+(add-hook 'ielm-mode-hook 'eldoc-mode)
+
+(add-hook 'html-mode-hook 'fci-mode)
+(add-hook 'prog-mode-hook 'fci-mode)
+
+(add-hook 'css-mode-hook 'flycheck-mode)
+(add-hook 'emacs-lisp-mode-hook 'flycheck-mode)
+(add-hook 'go-mode-hook 'flycheck-mode)
+(add-hook 'html-mode-hook 'flycheck-mode)
+(add-hook 'js2-mode-hook 'flycheck-mode)
+(add-hook 'lua-mode-hook 'flycheck-mode)
+(add-hook 'php-mode-hook 'flycheck-mode)
+(add-hook 'python-mode-hook 'flycheck-mode)
+(add-hook 'rst-mode-hook 'flycheck-mode)
+(add-hook 'ruby-mode-hook 'flycheck-mode)
+(add-hook 'rust-mode-hook 'flycheck-mode)
+(add-hook 'sh-mode-hook 'flycheck-mode)
+
+(add-hook 'text-mode-hook 'flyspell-mode)
+
+(add-hook 'clojure-mode-hook 'paredit-mode)
(add-hook 'emacs-lisp-mode-hook 'paredit-mode)
-(add-hook 'lisp-mode-hook 'paredit-mode)
-(add-hook 'sawfish-mode-hook 'paredit-mode)
-(add-hook 'scheme-mode-hook 'paredit-mode)
-
-;;; Remove the pylint and pyflakes checkers from the flycheck
-;;; configuration so the flake8 checker remains.
+(add-hook 'lisp-mode-hook 'paredit-mode)
+(add-hook 'sawfish-mode-hook 'paredit-mode)
+(add-hook 'scheme-mode-hook 'paredit-mode)
+(add-hook 'ielm-mode-hook 'paredit-mode)
+
+(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
+
+(add-hook 'css-mode-hook 'rainbow-mode)
+
+(add-hook 'js2-mode-hook 'slime-js-minor-mode)
+
+(add-hook 'html-mode-hook 'smartparens-mode)
+(add-hook 'python-mode-hook 'smartparens-mode)
+
+(add-hook 'jabber-chat-mode-hook 'visual-line-mode)
+(add-hook 'erc-mode-hook 'visual-line-mode)
+
+(add-hook 'markdown-mode-hook 'whitespace-mode)
+(add-hook 'python-mode-hook 'whitespace-mode)
+
+(add-hook 'html-mode-hook 'yas-minor-mode)
+(add-hook 'org-mode-hook 'yas-minor-mode)
+(add-hook 'prog-mode-hook 'yas-minor-mode)
+
+(defun oni:turn-on-tagedit-mode ()
+ (require 'tagedit)
+ (tagedit-mode)
+ (tagedit-add-paredit-like-keybindings)
+ (tagedit-add-experimental-features))
+
+(add-hook 'html-mode-hook 'oni:turn-on-tagedit-mode)
+
(eval-after-load "flycheck"
'(progn
(mapc (lambda (c) (delq c flycheck-checkers))
'(python-pylint python-pyflakes))))
-
+
(defun oni:pretty-control-l-function (win)
"Just make a string of either `fci-rule-column' or
`fill-column' length -1. Use the `-' character. WIN is ignored."
@@ -68,61 +107,47 @@ package.el is loaded anyway."
(make-string
(1- (if (boundp 'fci-rule-column) fci-rule-column fill-column)) ?-))
-;;; Use `oni:pretty-control-l-function' to create a nice horizontal
-;;; line.
-(setq pp^L-^L-string-function 'oni:pretty-control-l-function)
+(setq pp^L-^L-string-function 'oni:pretty-control-l-function
+ pp^L-^L-string-pre nil)
-;;; Don't put anything before the pp^L string.
-(setq pp^L-^L-string-pre nil)
-
-;;; Enable pp^L at startup and again for each frame created.
(add-hook 'emacs-startup-hook 'pretty-control-l-mode)
(add-hook 'after-make-frame-functions
'(lambda (arg) (pretty-control-l-mode)))
-
+
(setq erc-autojoin-channels-alist
- '(("freenode.net" "#ninthfloor" "#emacs")))
+ '(("freenode.net" "#ninthfloor" "#emacs" "#dispass")))
+
(setq erc-hide-list '("PART"))
-(setq erc-insert-timestamp-function 'erc-insert-timestamp-left)
-(setq erc-timestamp-format "[%H:%M] ")
-(setq erc-timestamp-only-if-changed-flag nil)
+
+(setq erc-insert-timestamp-function 'erc-insert-timestamp-left
+ erc-timestamp-format "[%H:%M] "
+ erc-timestamp-only-if-changed-flag nil)
+
(setq erc-nick "ryuslash")
-(defun oni:erc-mode-func ()
- "Function for `erc-mode-hook'."
- (erc-fill-mode -1)
- (visual-line-mode)
- (setq truncate-lines nil))
+(defun oni:turn-off-erc-fill-mode () (erc-fill-mode -1))
+(add-hook 'erc-mode-hook 'oni:turn-off-erc-fill-mode)
-(add-hook 'erc-mode-hook 'oni:erc-mode-func)
-
-;;; Since unison requires unbuffered input it should not show up in
-;;; eshell, but a real term shell.
(eval-after-load "em-term"
'(add-to-list 'eshell-visual-commands "unison"))
-;;; To be able to highlight the eshell prompt just as I want it with
-;;; regular text properties the standard highlighting should be turned
-;;; off, otherwise it always overwrites whatever text properties it
-;;; finds.
(setq eshell-highlight-prompt nil)
(defun oni:eshell-prompt-function ()
"Show a pretty shell prompt."
(let ((status (if (zerop eshell-last-command-status) ?+ ?-))
- (hostname (shell-command-to-string "hostname"))
+ (hostname (oni:hostname))
(dir (abbreviate-file-name (eshell/pwd)))
(branch
(shell-command-to-string
- "git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d'"))
- (userstatus (if (zerop (user-uid)) ?# ?$)))
+ "git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d'")))
(concat
(propertize (char-to-string status)
'face `(:foreground ,(if (= status ?+)
"green"
"red")))
" "
- (propertize (substring hostname 0 -1) 'face 'mode-line-buffer-id)
+ (propertize hostname 'face 'mode-line-buffer-id)
" "
(propertize (oni:shorten-dir dir) 'face 'font-lock-string-face)
" "
@@ -131,19 +156,10 @@ package.el is loaded anyway."
;; Cut off "* " and "\n"
(substring branch 2 -1)
'face 'font-lock-function-name-face))
- " \n"
- (propertize (char-to-string userstatus)
- 'face `(:foreground "blue"))
- "> ")))
+ " \n> ")))
(setq eshell-prompt-function 'oni:eshell-prompt-function
- eshell-prompt-regexp "^[#$]> ")
-
-(defun oni:eshell-mode-func ()
- "Function for `eshell-mode-hook'."
- (setq truncate-lines nil))
-
-(add-hook 'eshell-mode-hook 'oni:eshell-mode-func)
+ eshell-prompt-regexp "^> ")
(defun oni:raise-eshell ()
"Start or switch back to `eshell'.
@@ -151,52 +167,44 @@ Also change directories to current working directory."
(interactive)
(let ((dir (file-name-directory
(or (buffer-file-name) "~/")))
- (hasfile (not (eq (buffer-file-name) nil))))
+ (hasfile (not (eq (buffer-file-name) nil)))
+ (started (and (boundp 'eshell-buffer-name) eshell-buffer-name
+ (buffer-live-p (get-buffer eshell-buffer-name)))))
(eshell)
- (if (and hasfile (eq eshell-process-list nil))
- (progn
- (eshell/cd dir)
- (eshell-reset)))))
+ (when (and hasfile (eq eshell-process-list nil))
+ (eshell/cd dir)
+ (when started
+ (eshell-reset)))))
(global-set-key (kbd "<f8>") 'oni:raise-eshell)
-
-;;; Since I don't ever get any mail from people that use right-to-left
-;;; text, and even if I did I wouldn't be able to read it, I don't
-;;; need bidirectional text support. You shouldn't actually disable it
-;;; (if that's even still possible) since, supposedly, it is an
-;;; integral part of the display engine now, but telling it to always
-;;; use left-to-right should keep it from slowing your emacs down.
+
+(add-hook 'eshell-mode-hook 'buffer-disable-undo)
+
(setq-default bidi-paragraph-direction 'left-to-right)
-
-;;; Enable the following commands because they're useful sometimes and
-;;; I'm not an Emacs beginner anymore, they don't confuse me.
-(put 'upcase-region 'disabled nil)
-(put 'downcase-region 'disabled nil)
+
+(put 'downcase-region 'disabled nil)
+(put 'narrow-to-page 'disabled nil)
(put 'narrow-to-region 'disabled nil)
-(put 'scroll-left 'disabled nil)
-
-(defun oni:jabber-init ()
- "Initialization function for jabber."
- (remove-hook 'jabber-alert-presence-hooks 'jabber-presence-echo))
+(put 'scroll-left 'disabled nil)
+(put 'upcase-region 'disabled nil)
-(eval-after-load "jabber" '(oni:jabber-init))
+(eval-after-load "jabber"
+ '(remove-hook 'jabber-alert-presence-hooks 'jabber-presence-echo))
(autoload 'jabber-message-libnotify "jabber-libnotify")
-(autoload 'jabber-muc-libnotify "jabber-libnotify")
+(autoload 'jabber-muc-libnotify "jabber-libnotify")
(add-hook 'jabber-alert-message-hooks 'jabber-message-libnotify)
-(add-hook 'jabber-alert-muc-hooks 'jabber-muc-libnotify)
+(add-hook 'jabber-alert-muc-hooks 'jabber-muc-libnotify)
-(setq jabber-history-enabled t
- jabber-history-muc-enabled t)
+(setq jabber-history-enabled t
+ jabber-history-muc-enabled t
+ jabber-use-global-history nil
+ jabber-history-dir "~/.emacs.d/jabber-hist")
-(setq jabber-use-global-history nil
- jabber-history-dir "~/.emacs.d/jabber-hist")
-
-(setq jabber-account-list '(("ryuslash@jabber.org")
- ("tom@ryuslash.org/drd"
+(setq jabber-account-list `((,(concat "tom@ryuslash.org/" (oni:hostname))
(:connection-type . ssl))))
-
+
(defun oni:ido-init ()
"Initialization functionn for ido."
(setq ido-ignore-buffers
@@ -213,7 +221,7 @@ Also change directories to current working directory."
(eval-after-load "ido" '(oni:ido-init))
-(setq ido-auto-merge-delay-time 1000000)
+(setq ido-auto-merge-work-directories-length -1)
(setq ido-default-buffer-method 'selected-window)
@@ -223,166 +231,183 @@ Also change directories to current working directory."
(ido-mode)
-(setq ido-ubiquitous-command-exceptions
- '(org-refile org-capture-refile))
+(setq ido-ubiquitous-command-exceptions '(org-refile org-capture-refile))
(add-hook 'emacs-startup-hook 'ido-ubiquitous-mode)
(global-set-key (kbd "M-n") 'idomenu)
-
+
(setq minibuffer-eldef-shorten-default t)
(minibuffer-electric-default-mode)
-
+
(setq mode-line-default-help-echo "")
-
+
(eval-after-load "jedi" '(setcar jedi:server-command "python2"))
(add-hook 'python-mode-hook 'jedi:setup)
(setq jedi:tooltip-method nil)
-
-(defface git-commit-summary-face
- '((t (:inherit org-level-1)))
- "Face for the git title line."
- :group 'local)
-
-(defface git-commit-overlong-summary-face
- '((t (:background "#873732")))
- "Face for commit titles that are too long."
- :group 'local)
-
-(defface git-commit-nonempty-second-line-face
- '((t (:inherit git-commit-overlong-summary-face)))
- "Face for the supposedly empty line in commit messages."
- :group 'local)
(eval-after-load "org" '(require 'org-init))
-(defun indent-defun ()
- "Indent the current defun."
- (interactive)
- (save-excursion
- (mark-defun)
- (indent-region (region-beginning) (region-end))))
-
-(global-set-key (kbd "C-M-z") 'indent-defun)
+(global-set-key (kbd "C-M-z") 'ext:indent-defun)
(defadvice term-handle-exit (after oni:kill-buffer-after-exit activate)
"Kill the term buffer if the process finished."
- (let ((msg (ad-get-arg 1)))
- (when (string-equal msg "finished\n")
- (kill-buffer (current-buffer)))))
-
-(defun oni:change-prev-case (num dir)
- (let ((regfunc (if (eq dir 'up) 'upcase-region 'downcase-region))
- (wordfunc (if (eq dir 'up) 'upcase-word 'downcase-word)))
- (if (> num 1)
- (funcall regfunc (point) (- (point) num))
- (funcall wordfunc -1))))
-
-(defun oni:upcase-prev (num)
- (interactive "p")
- (oni:change-prev-case num 'up))
-
-(defun oni:downcase-prev (num)
- (interactive "p")
- (oni:change-prev-case num 'down))
+ (kill-buffer (current-buffer)))
(global-set-key (kbd "C-c u") 'oni:upcase-prev)
(global-set-key (kbd "C-c d") 'oni:downcase-prev)
-(defun oni:vala-mode-func ()
- "Function for `vala-mode-hook'."
- (setq indent-tabs-mode nil))
-
(add-hook 'vala-mode-hook 'oni:vala-mode-func)
-(eval-after-load "rainbow-mode" '(oni:rainbow-mode-init))
-(eval-after-load "smex" '(oni:smex-init))
-(eval-after-load "yasnippet" '(oni:yasnippet-init))
+(global-set-key (kbd "M-x") 'smex)
+(global-set-key (kbd "C-M-x") 'smex-major-mode-commands)
(autoload 'define-slime-contrib "slime")
-(autoload 'gtags-mode "gtags" nil t)
-(autoload 'jabber-connect "jabber" nil t)
-(autoload 'php-mode "php-mode" nil t)
-(autoload 'po-mode "po-mode" nil t)
-(autoload 'pony-mode "pony-mode" nil t)
-(autoload 'sawfish-mode "sawfish" nil t)
-(autoload 'server-running-p "server")
-(autoload 'slime-js-minor-mode "slime-js" nil t)
-(autoload 'xmodmap-mode "xmodmap-mode" nil t)
-(autoload 'w3m-bookmark-view "w3m" nil t)
-(autoload 'w3m-goto-url "w3m" nil t)
+
+(autoload 'gtags-mode "gtags" nil t)
+(autoload 'jabber-connect "jabber" nil t)
+(autoload 'php-mode "php-mode" nil t)
+(autoload 'po-mode "po-mode" nil t)
+(autoload 'pony-mode "pony-mode" nil t)
+(autoload 'sawfish-mode "sawfish" nil t)
+(autoload 'server-running-p "server")
+(autoload 'slime-js-minor-mode "slime-js" nil t)
+(autoload 'w3m-bookmark-view "w3m" nil t)
+(autoload 'w3m-goto-url "w3m" nil t)
+(autoload 'xmodmap-mode "xmodmap-mode" nil t)
(require 'uniquify)
-(require 'ext)
-(require 'oni)
-(setq-default c-basic-offset 4)
+(setq-default c-basic-offset 4
+ tab-width 4)
+
(setq-default fci-rule-column 73)
+
(setq-default indent-tabs-mode nil)
+
(setq-default php-mode-warn-if-mumamo-off nil)
+
(setq-default require-final-newline t)
-(setq-default tab-width 4)
+
(setq-default truncate-lines t)
(setq appt-disp-window-function #'oni:appt-display-window-and-jabber)
+
(setq appt-display-diary nil)
+
(setq auto-mode-case-fold nil)
-(setq auto-save-file-name-transforms oni:auto-save-name-transforms)
-(setq avandu-article-render-function #'avandu-view-w3m)
-(setq backup-directory-alist oni:backup-directory-alist)
-(setq browse-url-browser-function 'browse-url-generic)
-(setq browse-url-generic-program (getenv "BROWSER"))
-(setq c-offsets-alist '((statement-block-intro . +)
- (knr-argdecl-intro . 5)
- (substatement-open . +)
- (substatement-label . 0)
- (label . 0)
- (statement-case-open . +)
- (statement-cont . +)
- (arglist-intro . +)
- (arglist-close . 0)
- (inline-open . 0)
- (brace-list-open . +)
- (topmost-intro-cont first c-lineup-topmost-intro-cont
- c-lineup-gnu-DEFUN-intro-cont)))
-(setq comment-auto-fill-only-comments t)
+
+(setq auto-save-file-name-transforms
+ `((".*" "~/.local/share/emacs/autosave/" t)))
+
+(setq backup-directory-alist `((".*" . "~/.local/share/emacs/backup/")))
+
+(setq browse-url-browser-function 'browse-url-generic
+ browse-url-generic-program (getenv "BROWSER"))
+
+(setq c-offsets-alist
+ '((statement-block-intro . +)
+ (knr-argdecl-intro . 5)
+ (substatement-open . +)
+ (substatement-label . 0)
+ (label . 0)
+ (statement-case-open . +)
+ (statement-cont . +)
+ (arglist-intro . +)
+ (arglist-close . 0)
+ (inline-open . 0)
+ (brace-list-open . +)
+ (topmost-intro-cont first c-lineup-topmost-intro-cont
+ c-lineup-gnu-DEFUN-intro-cont)))
+
(setq custom-file "~/.emacs.d/custom.el")
-(setq custom-theme-directory "~/.emacs.d/themes")
+
(setq default-frame-alist
`((border-width . 0)
(internal-border-width . 0)
(vertical-scroll-bars . nil)
(menu-bar-lines . nil)
(tool-bar-lines . nil)
- (font . "Envy Code R:pixelsize=12")))
+ (font . "Inconsolata:pixelsize=18")))
+
(setq elnode-do-init nil)
-(setq fci-rule-color "darkred")
+
(setq frame-title-format '(:eval (concat "emacs: " (buffer-name))))
+
(setq geiser-repl-history-filename "~/.emacs.d/geiser-history")
+
(setq gnus-init-file "~/.emacs.d/gnus")
+
(setq gtags-auto-update t)
+
(setq help-at-pt-display-when-idle t)
-(setq highlight-80+-columns 72)
-(setq identica-enable-striping t)
-(setq inferior-lisp-program "sbcl")
-(setq inhibit-default-init t)
-(setq inhibit-local-menu-bar-menus t)
-(setq inhibit-startup-message t)
-(setq initial-major-mode 'emacs-lisp-mode)
-(setq initial-scratch-message nil)
+
+(setq inferior-lisp-program "sbcl --noinform --no-linedit")
+
+(setq inhibit-default-init t
+ inhibit-local-menu-bar-menus t
+ inhibit-startup-message t)
+
+(setq initial-major-mode 'emacs-lisp-mode
+ initial-scratch-message nil)
+
(setq jabber-avatar-cache-directory "~/.emacs.d/jabber-avatars/")
-(setq jabber-chat-buffer-format "*jab:%n*")
-(setq jabber-chat-buffer-show-avatar nil)
+
+(setq jabber-chat-buffer-format "+%n"
+ jabber-chat-foreign-prompt-format "%t %u/%r <\n"
+ jabber-chat-local-prompt-format "%t %u/%r >\n"
+ jabber-groupchat-buffer-format "++%n"
+ jabber-groupchat-prompt-format "%t %u --\n")
+
+(setq jabber-chat-buffer-show-avatar nil
+ jabber-vcard-avatars-publish nil
+ jabber-vcard-avatars-retrieve nil)
+
(setq jabber-chat-fill-long-lines nil)
-(setq jabber-chat-foreign-prompt-format "%t %u/%r <\n")
-(setq jabber-chat-local-prompt-format "%t %u/%r >\n")
+
(setq jabber-chatstates-confirm nil)
+
(setq jabber-muc-autojoin '("aethon@muc.ryuslash.org"))
+
(setq jabber-roster-show-bindings nil)
-(setq jabber-vcard-avatars-publish nil)
-(setq jabber-vcard-avatars-retrieve nil)
+(setq jabber-show-offline-contacts nil)
+
(setq jit-lock-defer-time 0.2)
+
+(defun turn-on-compilation-shell-for-pony ()
+ (add-hook 'pony-minor-mode-hook 'compilation-shell-minor-mode nil t))
+(add-hook 'comint-mode-hook 'turn-on-compilation-shell-for-pony)
+
+(defun oni:smartparens-set-keys ()
+ (local-set-key (kbd "DEL") 'sp-backward-delete-char)
+ (local-set-key (kbd "<deletechar>") 'sp-delete-char)
+ (local-set-key (kbd "C-d") 'sp-delete-char))
+
+(add-hook 'smartparens-mode-on-hook 'oni:smartparens-set-keys)
+
+(eval-after-load "emms"
+ `(progn
+ (emms-minimalistic)
+ (emms-default-players)
+
+ (require 'emms-player-mpd)
+ (add-to-list 'emms-player-list 'emms-player-mpd)
+ (setq emms-player-mpd-music-directory "/mnt/music/mp3")
+
+ (require 'emms-mode-line)
+ (setq emms-mode-line-mode-line-function 'oni:mode-line-current-song)
+ (emms-mode-line 1)))
+
+(defun oni:set-smartparens-keys ()
+ (local-set-key (kbd "<C-left>") 'sp-forward-barf-sexp)
+ (local-set-key (kbd "<C-right>") 'sp-forward-slurp-sexp))
+
+(defun oni:local-set-smartparens-hook ()
+ (add-hook 'smartparens-mode-hook 'oni:set-smartparens-keys nil t))
+
+(add-hook 'python-mode-hook 'oni:local-set-smartparens-hook)
+
(setq magit-repo-dirs '("~/projects/"))
(setq message-log-max 1000)
(setq message-send-mail-function 'message-send-mail-with-sendmail)
@@ -399,7 +424,7 @@ Also change directories to current working directory."
(setq pony-tpl-indent-moves t)
(setq rainbow-delimiters-max-face-count 12)
(setq redisplay-dont-pause t)
-(setq send-mail-function 'smtpmail-send-it)
+(setq send-mail-function 'sendmail-send-it)
(setq sendmail-program "/usr/bin/msmtp")
(setq sentence-end-double-space nil)
(setq smex-key-advice-ignore-menu-bar t)
@@ -426,30 +451,25 @@ Also change directories to current working directory."
(add-hook 'css-mode-hook 'oni:css-mode-func)
(add-hook 'diary-display-hook 'oni:diary-display-func)
(add-hook 'emacs-startup-hook 'oni:emacs-startup-func)
-(add-hook 'emacs-lisp-mode-hook 'oni:emacs-lisp-mode-func)
(add-hook 'go-mode-hook 'oni:go-mode-func)
(add-hook 'gtags-mode-hook 'oni:gtags-mode-func)
(add-hook 'haskell-mode-hook 'oni:haskell-mode-func)
-(add-hook 'html-mode-hook 'oni:html-mode-func)
-(add-hook 'jabber-chat-mode-hook 'oni:jabber-chat-mode-func)
(add-hook 'jabber-roster-mode-hook 'oni:jabber-roster-mode-func)
(add-hook 'java-mode-hook 'oni:java-mode-func)
(add-hook 'js-mode-hook 'oni:js-mode-func)
(add-hook 'js2-mode-hook 'oni:js2-mode-func)
(add-hook 'lua-mode-hook 'oni:lua-mode-func)
-(add-hook 'magit-log-edit-mode-hook 'oni:magit-log-edit-mode-func)
(add-hook 'markdown-mode-hook 'oni:markdown-mode-func)
-(add-hook 'message-mode-hook 'oni:message-mode-func)
-(add-hook 'org-mode-hook 'oni:org-mode-func)
(add-hook 'php-mode-hook 'oni:php-mode-func)
(add-hook 'prog-mode-hook 'oni:prog-mode-func)
(add-hook 'python-mode-hook 'oni:python-mode-func)
-(add-hook 'rst-mode-hook 'oni:rst-mode-func)
(add-hook 'term-mode-hook 'oni:term-mode-func)
-(add-hook 'texinfo-mode-hook 'oni:texinfo-mode-func)
(add-hook 'write-file-hooks 'oni:write-file-func)
(add-hook 'yas-minor-mode-hook 'oni:yas-minor-mode-func)
+(define-key key-translation-map (kbd "C-j") (kbd "C-l"))
+(define-key key-translation-map (kbd "C-l") (kbd "C-j"))
+
(global-set-key (kbd "'") 'oni:self-insert-dwim)
(global-set-key (kbd "<XF86HomePage>") 'oni:raise-scratch)
(global-set-key (kbd "<XF86Mail>") 'gnus)
@@ -471,10 +491,7 @@ Also change directories to current working directory."
(global-set-key (kbd "C-c i p") 'identica-update-status-interactive)
(global-set-key (kbd "C-c p") 'oni:show-buffer-position)
(global-set-key (kbd "C-c t") 'oni:raise-ansi-term)
-(global-set-key (kbd "C-d") 'oni:kill-region-or-forward-char)
(global-set-key (kbd "C-e") 'oni:move-end-of-dwim)
-(global-set-key (kbd "C-k") 'oni:kill-region-or-line)
-(global-set-key (kbd "C-w") 'oni:kill-region-or-backward-char)
(global-set-key (kbd "M-0") 'delete-window)
(global-set-key (kbd "M-1") 'delete-other-windows)
(global-set-key (kbd "M-2") 'split-window-below)
@@ -503,13 +520,13 @@ Also change directories to current working directory."
(add-to-list
'display-buffer-alist
- '("^\\*\\(?:.+-\\)?scratch\\*$" . ((display-buffer-same-window . nil))))
+ '("^\\*\\(?:.+-\\)?scratch\\*$" display-buffer-same-window))
(add-to-list
'display-buffer-alist
- '("^\\*git-project-list\\*$" . ((git-project-show-window . nil))))
+ '("^\\*git-project-list\\*$" git-project-show-window))
(add-to-list
'display-buffer-alist
- '("^\\*magit: .*\\*$" . ((display-buffer-same-window . nil))))
+ '("^\\*magit: .*\\*$" display-buffer-same-window))
(blink-cursor-mode -1)
(column-number-mode -1)
@@ -532,11 +549,15 @@ Also change directories to current working directory."
;;; Diminish lighter for a bunch of minor modes that should be on in
;;; certain modes and usually just clogg up the mode line.
(diminish 'auto-fill-function)
-(eval-after-load "eldoc" '(diminish 'eldoc-mode))
-(eval-after-load "paredit" '(diminish 'paredit-mode))
+
(eval-after-load "auto-complete" '(diminish 'auto-complete-mode))
+(eval-after-load "eldoc" '(diminish 'eldoc-mode))
(eval-after-load "flycheck" '(diminish 'flycheck-mode))
+(eval-after-load "paredit" '(diminish 'paredit-mode))
+(eval-after-load "rainbow-mode" '(diminish 'rainbow-mode))
(eval-after-load "smartparens" '(diminish 'smartparens-mode))
+(eval-after-load "yasnippet" '(diminish 'yas-minor-mode))
+
;;; Popping up multiple frames out of the blue does not usually play
;;; well with (manual) tiling window managers.
@@ -560,30 +581,33 @@ Also change directories to current working directory."
(setq eltuki-blog-dir "~/documents/blog")
(setq sp-cancel-autoskip-on-backward-movement nil)
-
-(add-hook 'python-mode-hook 'smartparens-mode)
-(add-hook 'html-mode-hook 'smartparens-mode)
(defun oni:scroll-down-or-prev-page (arg)
"Either scroll down or go to the previous page.
Depending on the value of `buffer-narrowed-p'."
- (interactive "P")
+ (interactive "^P")
(if (buffer-narrowed-p)
- (progn
- (narrow-to-page (or arg -1))
- (goto-char (point-min)))
+ (let ((scroll-error-top-bottom nil))
+ (condition-case nil
+ (scroll-down-command arg)
+ (beginning-of-buffer
+ (narrow-to-page -1)
+ (goto-char (point-min)))))
(scroll-down-command arg)))
(defun oni:scroll-up-or-next-page (arg)
"Either scroll up or go to the next page.
Depending on the value of `buffer-narrowed-p'."
- (interactive "P")
+ (interactive "^P")
(if (buffer-narrowed-p)
- (progn
- (narrow-to-page (or arg 1))
- (goto-char (point-min)))
+ (let ((scroll-error-top-bottom nil))
+ (condition-case nil
+ (scroll-up-command arg)
+ (end-of-buffer
+ (narrow-to-page 1)
+ (goto-char (point-min)))))
(scroll-up-command arg)))
(global-set-key (kbd "<prior>") 'oni:scroll-down-or-prev-page)
@@ -596,15 +620,25 @@ Depending on the value of `buffer-narrowed-p'."
(setq eap-music-library "/mnt/music")
(setq eap-playlist-library "~/music/playlists")
-;;; Turn on `compilation-minor-mode' whenever `pony-minor-mode' starts
-;;; in a `comint-mode' buffer. Since buffers like `*ponymanage*' and
-;;; `*ponyserver*' don't have their own specialized modes, but use
-;;; `comint-mode' and turn on `pony-minor-mode', and I don't want to
-;;; enable `compilation-minor-mode' for *every* `comint-mode' buffer,
-;;; we can add a hook that adds a local hook.
-(defun turn-on-compilation-for-pony ()
- (add-hook 'pony-minor-mode-hook 'compilation-minor-mode nil t))
-(add-hook 'comint-mode-hook 'turn-on-compilation-for-pony)
+;;;; Auto-complete
+
+(setq-default ac-sources '(ac-source-imenu
+ ac-source-gtags
+ ac-source-abbrev
+ ac-source-yasnippet
+ ac-source-words-in-buffer
+ ac-source-words-in-same-mode-buffers
+ ac-source-dictionary
+ ac-source-functions
+ ac-source-symbols
+ ac-source-variables
+ ac-source-features))
+
+;;;; Magit
+
+(setq magit-default-tracking-name-function
+ 'magit-default-tracking-name-branch-only)
+(setq magit-diff-refine-hunk 'all)
;;; Finally, load any `customize' settings and slime.
(load custom-file)
diff --git a/emacs/init.org b/emacs/init.org
new file mode 100644
index 0000000..6605dcd
--- /dev/null
+++ b/emacs/init.org
@@ -0,0 +1,1599 @@
+#+TITLE: Emacs Init
+#+STARTUP: showall
+#+HTML_HEAD: <link href="http://ryuslash.org/bootstrap/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
+#+PROPERTy: tangle init.el
+#+OPTIONS: num:nil
+
+* Turn off useless visual components :gui:
+
+ Turn the menu, scroll-bar and tool-bar off quickly. If this happens
+ later on then the GUI will show these components for a longer time.
+ Even though these options are also specified in my [[file:../.Xdefaults][Xdefaults]] I like
+ having them here too, as a precaution and to turn them off for
+ non-graphical interfaces as well.
+
+ #+BEGIN_SRC emacs-lisp :padline no
+ (menu-bar-mode -1)
+ (scroll-bar-mode -1)
+ (tool-bar-mode -1)
+ #+END_SRC
+
+* Setup load-path :load_path:
+
+ Not everything can be installed with ~package.el~. Or some things can,
+ but I prefer installing them manually because it's easier. Anyway,
+ some additions should be made to =load-path= and if the file
+ ~loaddefs.el~ exists, load it for the autoloads.
+
+ #+BEGIN_SRC emacs-lisp
+ (mapc #'(lambda (dir)
+ (add-to-list 'load-path dir)
+ (let ((loaddefs (concat dir "/loaddefs.el")))
+ (when (file-exists-p loaddefs)
+ (load loaddefs))))
+ '("~/.emacs.d/site-lisp" "~/projects/emacs/pony-mode/src"
+ "~/projects/emacs/php-mode" "~/.emacs.d/vendor-lisp/org/lisp"
+ "~/.emacs.d/vendor-lisp/org/contrib/lisp"))
+ #+END_SRC
+
+* Load other functions
+
+ Including all the functions being used here would make this file
+ immens and perhaps also somewhat unclear. In any case there are a
+ number of functions that I have found on the web in ~ext.el~, and a
+ number that I have written myself in ~oni.el~. So load them.
+
+ #+BEGIN_SRC emacs-lisp
+ (require 'ext)
+ (require 'oni)
+ #+END_SRC
+
+* Load theme :theme:
+
+ I have been experimenting with my own color theme for quite a while
+ now. I use ~package.el~ to install it, so to load it I need to wait
+ until after it has been loaded to enable it. Some of these settings
+ have also been specified in my [[file:../.Xdefaults][Xdefaults]] so that it doesn't start
+ with a completely white background (for too long).
+
+ #+BEGIN_SRC emacs-lisp
+ (setq custom-theme-directory "~/.emacs.d/themes")
+ (oni:eval-after-init (load-theme 'yoshi t))
+ #+END_SRC
+
+* Replace yes or no with y or n :y_or_n_p:
+
+ I have never had the trouble of accidentally pressing ~y~ at the
+ moment Emacs wants to ask me something. And having to type ~yes <RET>~
+ for a simple question gets in the way of things, so I prefer
+ =y-or-n-p=.
+
+ #+BEGIN_SRC emacs-lisp
+ (defalias 'yes-or-no-p 'y-or-n-p)
+ #+END_SRC
+
+* Replace list-buffers with ibuffer :ibuffer:
+
+ ~ibuffer~ offers some excellent ways to manage buffers. One of which
+ is the function to filter the buffer list on (almost) any predicate,
+ including the buffer's mode. ~list-buffers~ is simplistic compared to
+ this.
+
+ #+BEGIN_SRC emacs-lisp
+ (defalias 'list-buffers 'ibuffer)
+ #+END_SRC
+
+* Replace dabbrev with hippie-expand :hippie_expand:
+
+ =hippie-expand= has an expansion that functions the same as
+ =dabbrev-expand= and it also has many more. I cannot think of a reason
+ why =dabbrev-expand= should be used when =hippie-expand= is also an
+ option.
+
+ #+BEGIN_SRC emacs-lisp
+ (defalias 'dabbrev-expand 'hippie-expand)
+ #+END_SRC
+
+* Hide compilation window after success :compilation:
+
+ If compilation was succesfull I really don't need to see the
+ compilation window. So if either ~*Compilation*~ or ~*compilation*~
+ finishes correctly, delete the windows and show a message instead.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun ext:comp-finish-function (buf str)
+ "Close the compilation buffer quickly if everything went OK."
+ (if (string-match "exited abnormally" str)
+ ;; there were errors
+ (message "compilation errors, press C-x ` to visit")
+ ;; no errors, make the compilation window go away in 0.5 seconds
+ (when (member (buffer-name) '("*Compilation*" "*compilation*"))
+ (delete-windows-on buf)
+ (message "No compilation errors!"))))
+
+ (add-to-list 'compilation-finish-functions 'ext:comp-finish-function)
+ #+END_SRC
+
+* Scroll compilation window :compilation:
+
+ Even though I don't need to see the result of the compilation if
+ everything went as it should, scroll the output window so that I can
+ see whether there are any warnings and I should have a look anyway.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq compilation-scroll-output t)
+ #+END_SRC
+
+* Enable auto-fill-mode :auto_fill:
+
+ =auto-fill-mode= automatically inserts newlines when a line becomes
+ too long. This is useful for both text modes and the comments in
+ programming modes. What it takes for a line to become too long is
+ specified by the =fill-column= variable.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'prog-mode-hook 'auto-fill-mode)
+ (add-hook 'text-mode-hook 'auto-fill-mode)
+ #+END_SRC
+
+* Enable eldoc-mode :eldoc:
+
+ =eldoc-mode= shows the arguments for the function call at point in the
+ minibuffer, or in the mode-line if you're in the minibuffer. This is
+ very useful when writing Emacs Lisp code.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
+ (add-hook 'ielm-mode-hook 'eldoc-mode)
+ #+END_SRC
+
+* Enable fill-column-indicator :fill_column_indicator:
+
+ Emacs has many packages that try to deal with showing a right
+ margin, the 80th column which your code should not go beyond. None
+ of these packages get it quite right, but =fill-column-indicator= gets
+ pretty close.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'html-mode-hook 'fci-mode)
+ (add-hook 'prog-mode-hook 'fci-mode)
+ #+END_SRC
+
+* Enable flycheck-mode :flycheck:
+
+ Flycheck is a modern version of Flymake. They're not actually
+ related, but Flycheck did come from the idea of Flymake. Flycheck
+ has some interesting graphical elements (uses the fringe) and seems
+ to have a pretty flexible way of creating new checkers. I enable it
+ for all the modes that I use it supports.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'css-mode-hook 'flycheck-mode)
+ (add-hook 'emacs-lisp-mode-hook 'flycheck-mode)
+ (add-hook 'go-mode-hook 'flycheck-mode)
+ (add-hook 'html-mode-hook 'flycheck-mode)
+ (add-hook 'js2-mode-hook 'flycheck-mode)
+ (add-hook 'lua-mode-hook 'flycheck-mode)
+ (add-hook 'php-mode-hook 'flycheck-mode)
+ (add-hook 'python-mode-hook 'flycheck-mode)
+ (add-hook 'rst-mode-hook 'flycheck-mode)
+ (add-hook 'ruby-mode-hook 'flycheck-mode)
+ (add-hook 'rust-mode-hook 'flycheck-mode)
+ (add-hook 'sh-mode-hook 'flycheck-mode)
+ #+END_SRC
+
+* Enable flyspell-mode :flyspell:
+
+ What Flymake and Flycheck are to compilation, Flyspell is to
+ spelling. Runs spell checking in the background and highlights
+ spelling errors. It might be useful in programming mode comments,
+ but that seems a bit over the top for me, I care about the code, not
+ so much about the words used. So I only enable it in =text-mode=.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'text-mode-hook 'flyspell-mode)
+ #+END_SRC
+
+* Enable paredit-mode :paredit:
+
+ I had long thought of =paredit-mode= as overly complex and not very
+ useful. Though maybe I did try it out last before I started writing
+ so much Lisp code. In any case, I was wrong, it is one of the best
+ modes to use when editing Lisp and Lisp-like languages, changes your
+ whole perspective on the code.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'clojure-mode-hook 'paredit-mode)
+ (add-hook 'emacs-lisp-mode-hook 'paredit-mode)
+ (add-hook 'lisp-mode-hook 'paredit-mode)
+ (add-hook 'sawfish-mode-hook 'paredit-mode)
+ (add-hook 'scheme-mode-hook 'paredit-mode)
+ (add-hook 'ielm-mode-hook 'paredit-mode)
+ #+END_SRC
+
+* Enable rainbow-delimiters-mode :rainbow_delimiters:
+
+ Any language can have quite deeply nested "delimeters", meaning
+ parentheses, brackets, curly braces. It helps to see their depth
+ visually. Not just in Lisp.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
+ #+END_SRC
+
+* Enable rainbow-mode :rainbow:
+
+ When editing color-heavy "code", like CSS, it's useful to be able to
+ see color you're specifying. =rainbow-mode= does this.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'css-mode-hook 'rainbow-mode)
+ #+END_SRC
+
+* Enable slime-js-minor-mode :js2:
+
+ SLIME is one of the coolest things about using Emacs to edit Lisp
+ code, so if there is something similar for JavaScript, even makes it
+ worth it to use the seemingly over-engineered =js2-mode=.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'js2-mode-hook 'slime-js-minor-mode)
+ #+END_SRC
+
+* Enable smartparens-mode :smartparens:
+
+ =smartparens-mode= is a less strict and less lisp-focused mode that
+ tries to do something similar to =paredit-mode=. It is nice to use if
+ you're not writing in a Lisp-like language.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'html-mode-hook 'smartparens-mode)
+ (add-hook 'python-mode-hook 'smartparens-mode)
+ #+END_SRC
+
+* Enable visual-line-mode :visual_line:
+
+ Having words run off the screen in a chat session is unpleasant.
+ Having the words cut-off wherever the line ends is even worse! Use
+ =visual-line-mode= to get some proper word wrapping behaviour in these
+ buffers.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'jabber-chat-mode-hook 'visual-line-mode)
+ (add-hook 'erc-mode-hook 'visual-line-mode)
+ #+END_SRC
+
+* Enable whitespace-mode :whitespace:
+
+ In most programming languages whitespace is pretty unimportant. As
+ long as the readers can stand it the compilers/interpreters usually
+ don't care. Of course this is not true for Python, and Markdown also
+ has special meanings for some whitespace in some places, so enabling
+ =whitespace-mode= is a good idea, just for these two situations.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'markdown-mode-hook 'whitespace-mode)
+ (add-hook 'python-mode-hook 'whitespace-mode)
+ #+END_SRC
+
+* Enable yas-minor-mode :yas:
+
+ I still need to figure out where this mode comes in in my workflow.
+ I try to limit code-repetition as much as I can and anything that
+ does repeat often is so trivial that it doesn't benefit from
+ snippets. And using snippets for =if= statements and such doesn't
+ strike me as terribly useful either. But perhaps I haven't seen the
+ magic of it yet. I do know that it is an interesting tool and I wish
+ to find a use for it at some point.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'html-mode-hook 'yas-minor-mode)
+ (add-hook 'org-mode-hook 'yas-minor-mode)
+ (add-hook 'prog-mode-hook 'yas-minor-mode)
+ #+END_SRC
+
+* Enable tagedit-mode :tagedit:
+
+ =tagedit-mode= tries to be for XML/HTML what =paredit-mode= is for Lisp.
+ And because of this, it *rocks*. It almost makes me feel sorry that I
+ don't write all that much XML or HTML nowadays. Enable the
+ experimental features as well, so it's really close to =paredit-mode=.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun oni:turn-on-tagedit-mode ()
+ (require 'tagedit)
+ (tagedit-mode)
+ (tagedit-add-paredit-like-keybindings)
+ (tagedit-add-experimental-features))
+
+ (add-hook 'html-mode-hook 'oni:turn-on-tagedit-mode)
+ #+END_SRC
+
+* Disable the pylint and pyflakes checkers :flycheck:
+
+ I use flake8 in =python-mode=, so I have no need for the =python-pylint=
+ and =python-pyflakes= checkers. Since this works on a variable that is
+ defined in the ~flycheck~ package, it should only run *after* ~flycheck~
+ has been loaded.
+
+ #+BEGIN_SRC emacs-lisp
+ (eval-after-load "flycheck"
+ '(progn
+ (mapc (lambda (c) (delq c flycheck-checkers))
+ '(python-pylint python-pyflakes))))
+ #+END_SRC
+
+* Make ^L look pretty :ppcL:
+
+ Occasionally I might put a ~^L~ character in some code to create a
+ page separator. But seeing ~^L~ there isn't all that pretty, not when
+ you have something like ~pp^L-mode~. Show a line of ~-~ all the way to
+ the =fill-column= - =1=. To do this we should also remove the prefix.
+
+ If the variable =fci-rule-colum= is bound, use that, so that it
+ always goes up-to, but not beyond the little red line shown at the
+ right margin.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun oni:pretty-control-l-function (win)
+ "Just make a string of either `fci-rule-column' or
+ `fill-column' length -1. Use the `-' character. WIN is ignored."
+ (ignore win)
+ (make-string
+ (1- (if (boundp 'fci-rule-column) fci-rule-column fill-column)) ?-))
+
+ (setq pp^L-^L-string-function 'oni:pretty-control-l-function
+ pp^L-^L-string-pre nil)
+ #+END_SRC
+
+ This mode should be activated each time a frame is made, since it
+ uses certain frame properties.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'emacs-startup-hook 'pretty-control-l-mode)
+ (add-hook 'after-make-frame-functions
+ '(lambda (arg) (pretty-control-l-mode)))
+ #+END_SRC
+
+* Auto-join some channels in ERC :erc:
+
+ If ever I log in to IRC with ERC I would like to join these
+ channels, seeing as how *if* I talk, it's usually in one of these.
+ Though it's rare.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq erc-autojoin-channels-alist
+ '(("freenode.net" "#ninthfloor" "#emacs" "#dispass")))
+ #+END_SRC
+
+* Don't show part messages in ERC :erc:
+
+ They don't interest me.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq erc-hide-list '("PART"))
+ #+END_SRC
+
+ I used to hide more messages, but I found out that it can be
+ confusing to not be able to see *any* joins and quits at all.
+
+* Move the timestamp in ERC :erc:
+
+ I prefer having a timestamp on the left-side of a message in the
+ form of ~00:00~ instead of te usual. Having it right-aligned messes up
+ the non-filled text and having it only show up when it's changed
+ makes the buffer messy.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq erc-insert-timestamp-function 'erc-insert-timestamp-left
+ erc-timestamp-format "[%H:%M] "
+ erc-timestamp-only-if-changed-flag nil)
+ #+END_SRC
+
+* Set IRC nickname :erc:
+
+ This way I don't have to tell ERC what my nickname is every time.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq erc-nick "ryuslash")
+ #+END_SRC
+
+* Turn off filling in ERC :erc:
+
+ Turn of =erc-fill-mode= so that =visual-line-mode= can do its thing.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun oni:turn-off-erc-fill-mode () (erc-fill-mode -1))
+ (add-hook 'erc-mode-hook 'oni:turn-off-erc-fill-mode)
+ #+END_SRC
+
+* Specify some visual commands for eshell :eshell:
+
+ Eshell uses buffered input, always, but some commands need
+ unbuffered input, put those commands in =eshell-visual-commands= to
+ have them open in a dedicated =*term*= buffer. Since this variable is
+ defined in the ~em-term~ module, it should only be changed after shis
+ module loads.
+
+ #+BEGIN_SRC emacs-lisp
+ (eval-after-load "em-term"
+ '(add-to-list 'eshell-visual-commands "unison"))
+ #+END_SRC
+
+* Disable prompt highlighting in eshell :eshell:
+
+ Since I'm using a custom prompt with some custom colors I don't need
+ the eshell prompt to be highlighted, which overwrites any colors I
+ specify.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq eshell-highlight-prompt nil)
+ #+END_SRC
+
+* Customize eshell prompt :eshell:
+
+ Create a prompt that shows the following:
+
+ - The exit code of the previous command: a green ~+~ for exit code ~0~
+ and a red ~-~ for any non-zero exit code.
+
+ - The hostname of the device running the current Emacs instance.
+
+ - An abbreviated indication of the current directory. To keep things
+ short this abbreviation is the first letter of each parent
+ directory and the full name of the current directory, still
+ separated by ~/~, though.
+
+ - Which branch (if any) the current directory has been checked-out
+ of. This is not shown if the current directory is not a git
+ directory.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun oni:eshell-prompt-function ()
+ "Show a pretty shell prompt."
+ (let ((status (if (zerop eshell-last-command-status) ?+ ?-))
+ (hostname (oni:hostname))
+ (dir (abbreviate-file-name (eshell/pwd)))
+ (branch
+ (shell-command-to-string
+ "git branch --contains HEAD 2>/dev/null | sed -e '/^[^*]/d'")))
+ (concat
+ (propertize (char-to-string status)
+ 'face `(:foreground ,(if (= status ?+)
+ "green"
+ "red")))
+ " "
+ (propertize hostname 'face 'mode-line-buffer-id)
+ " "
+ (propertize (oni:shorten-dir dir) 'face 'font-lock-string-face)
+ " "
+ (when (not (string= branch ""))
+ (propertize
+ ;; Cut off "* " and "\n"
+ (substring branch 2 -1)
+ 'face 'font-lock-function-name-face))
+ " \n> ")))
+ #+END_SRC
+
+ Set the prompt function to the function above and tell eshell the
+ format of its prompt.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq eshell-prompt-function 'oni:eshell-prompt-function
+ eshell-prompt-regexp "^> ")
+ #+END_SRC
+
+* Add a pop-up function for eshell :eshell:
+
+ When working I often need to switch to a shell to issue some quick
+ commands and then be on my merry way again, to help with this I have
+ added a function which tries to move the current working directory
+ to that of the file being worked on and shows eshell. I bind this
+ function to ~f8~ for easy access.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun oni:raise-eshell ()
+ "Start or switch back to `eshell'.
+ Also change directories to current working directory."
+ (interactive)
+ (let ((dir (file-name-directory
+ (or (buffer-file-name) "~/")))
+ (hasfile (not (eq (buffer-file-name) nil)))
+ (started (and (boundp 'eshell-buffer-name) eshell-buffer-name
+ (buffer-live-p (get-buffer eshell-buffer-name)))))
+ (eshell)
+ (when (and hasfile (eq eshell-process-list nil))
+ (eshell/cd dir)
+ (when started
+ (eshell-reset)))))
+
+ (global-set-key (kbd "<f8>") 'oni:raise-eshell)
+ #+END_SRC
+
+* Disable undo in eshell buffers :eshell:
+
+ Eshell buffers can get big and undo does not serve any real purpose
+ in these buffers. Instead of getting boundary limit popups all the
+ time, which I do want to keep for other buffers, it's easier to
+ just turn off undo information for such buffers.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'eshell-mode-hook 'buffer-disable-undo)
+ #+END_SRC
+
+* Disable bidirectional support :bidi:
+
+ Since I don't ever get any mail from people that use right-to-left
+ text, and even if I did I wouldn't be able to read it, I don't need
+ bidirectional text support. You shouldn't actually disable it (if
+ that's even still possible) since, supposedly, it is an integral
+ part of the display engine now, but telling it to always use
+ left-to-right should keep it from slowing your emacs down.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq-default bidi-paragraph-direction 'left-to-right)
+ #+END_SRC
+
+* Enable some "advanced" functions
+
+ These functions are disabled by default, because beginners find them
+ confusing, apparently. Though I won't say I'm an Emacs master or
+ guru, I *can* say that I'm not a beginner, and these functions have
+ not confused me yet. So enable them.
+
+ #+BEGIN_SRC emacs-lisp
+ (put 'downcase-region 'disabled nil)
+ (put 'narrow-to-page 'disabled nil)
+ (put 'narrow-to-region 'disabled nil)
+ (put 'scroll-left 'disabled nil)
+ (put 'upcase-region 'disabled nil)
+ #+END_SRC
+
+* Don't echo status changes for jabber :jabber:
+
+ If I'm talking to someone I'll see their status and if they're
+ offline and I want to say something I can say it anyway, I don't
+ need constant updates in my echo-area on the status of my jabber
+ buddies. But since this relies on something from the ~jabber~ module,
+ only run it after that module has been loaded.
+
+ #+BEGIN_SRC emacs-lisp
+ (eval-after-load "jabber"
+ '(remove-hook 'jabber-alert-presence-hooks 'jabber-presence-echo))
+ #+END_SRC
+
+* Use libnotify for jabber notifications :jabber:
+
+ The functions don't seem to be loaded automatically, so add
+ autoloads for the libnotify functions.
+
+ #+BEGIN_SRC emacs-lisp
+ (autoload 'jabber-message-libnotify "jabber-libnotify")
+ (autoload 'jabber-muc-libnotify "jabber-libnotify")
+
+ (add-hook 'jabber-alert-message-hooks 'jabber-message-libnotify)
+ (add-hook 'jabber-alert-muc-hooks 'jabber-muc-libnotify)
+ #+END_SRC
+
+* Enable history :jabber:
+
+ Enable chat history for both regular chats and multi-user chats. I
+ disabled history completely for a long time, but sometimes you miss
+ things that way. Store history in per-contact files under
+ ~HOME/.emacs.d/jabber-hist~.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jabber-history-enabled t
+ jabber-history-muc-enabled t
+ jabber-use-global-history nil
+ jabber-history-dir "~/.emacs.d/jabber-hist")
+ #+END_SRC
+
+* Setup accounts for jabber :jabber:
+
+ Each account should have the current hostname appended to its
+ account name, so that multiple PCs can log in on the same account at
+ the same time and it's easy to note from where I'm talking.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jabber-account-list `((,(concat "tom@ryuslash.org/" (oni:hostname))
+ (:connection-type . ssl))))
+ #+END_SRC
+
+* Have ido ignore certain buffers :ido:
+
+ These buffers are either uninteresting, reached through other means
+ (such as a special keybinding) or they get in the way of how I work.
+ For any or all of these reasons I wish to ignore them.
+
+ - ~^\\`\s~ :: Any buffers that start with a space should be ignored.
+
+ - ~^irc\\.~ :: Any buffer that starts with ~irc.~ is a buffer that has
+ informational messages on the irc server I'm connected
+ to, these don't change often and have other ways of
+ grabbing my attention. If I need them I will find them.
+
+ - ~^\\#~ :: Any buffer starting with an ~#~ is most-likely an IRC chat
+ buffer, these have ways of letting me know it there is
+ anything interesting going on there, I don't usually need
+ them clogging up my ido.
+
+ - ~^\\*Customize Option:~ :: Anything starting with ~*Customize Option:~
+ is part of Emacs's customize interface and thus doesn't need to
+ be shown in the ido buffer list.
+
+ - ~*-jabber-roster-*~ :: Is also accessible through ~f6~, so no need for
+ it in my ido list.
+
+ - ~*Messages*~ :: Also accessible through ~C-h e~, so no need for it.
+
+ - ~*fsm-debug*~ :: A buffer used by ~jabber.el~ to track some debug
+ information, I have never had to look at it yet.
+
+ - ~*magit-process*~ :: The buffer where magit's git process runs,
+ usually accessible with ~$~ from any magit buffer, and the only
+ other time I need to find is if I have to kill it to reset
+ magit's process.
+
+ - ~*magit-edit-log*~ :: The commit message buffer from magit. Usually
+ accessible with ~C-c c~ if needed.
+
+ - ~*Backtrace*~ :: Usually only interesting for as long as I'm looking
+ at it, if I bury it, I usually don't need it
+ anymore.
+
+ - ~*Ibuffer*~ :: is reached by the key compination ~C-x C-b~, is
+ therefore not needed to show up when using ido, and
+ even gets glitchy when using ido, because the
+ information doesn't get updated.
+
+ Since this requires a variable defined in the ~ido~ module, delay
+ execution until it is loaded.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun oni:ido-init ()
+ "Initialization functionn for ido."
+ (setq ido-ignore-buffers
+ (list "^\\` " "^irc\\." "^\\#" "^\\*Customize Option:"
+ (eval-when-compile
+ (regexp-opt
+ '("*-jabber-roster-*"
+ "*Messages*"
+ "*fsm-debug*"
+ "*magit-process*"
+ "*magit-edit-log*"
+ "*Backtrace*"
+ "*Ibuffer*"))))))
+
+ (eval-after-load "ido" '(oni:ido-init))
+ #+END_SRC
+
+* Disable automatic merging in ido :ido:
+
+ ido has this wonderful/infuriating feature of trying to correct your
+ mistakes by suggesting files in other directories if it can't find
+ the file you wish to open in the current directory. This becomes
+ bothersome especially when working with django, since the same files
+ tend to show up in several directories. Disable it.
+
+ According to the docstring this should be a way to disable it,
+ previously I just used a very long timeout by setting
+ =ido-auto-merge-delay-time= to ~1000000~.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq ido-auto-merge-work-directories-length -1)
+ #+END_SRC
+
+* Instruct ido to open buffers in selected window :ido:
+
+ By default, when more than one frame exists and you try to switch
+ to a buffer that is already visible in another frame, ido pops up
+ the other frame. This is not what I want, just open the buffer in
+ the selected window no matter what.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq ido-default-buffer-method 'selected-window)
+ #+END_SRC
+
+* Minimize maximum minibuffer height for ido :ido:
+
+ I hate it when the minibuffer gets bigger than one line, so don't
+ let ido do that.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq ido-max-window-height 1)
+ #+END_SRC
+
+* Don't save history for ido :ido:
+
+ I don't see the point in saving that history.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq ido-save-directory-list-file nil)
+ #+END_SRC
+
+* Turn on ido-mode :ido:
+
+ =ido-mode= is an excellent file and buffer selection tool, it
+ improves upon regular selection in numerous ways.
+
+ #+BEGIN_SRC emacs-lisp
+ (ido-mode)
+ #+END_SRC
+
+* Exclude functions from ido-ubiquitous :ido_ubiquitous:
+
+ Not all functions work well with =ido-ubiquitous-mode=, like
+ =org-refile=, so exclude them from using =ido-ubiquitous-mode=.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq ido-ubiquitous-command-exceptions '(org-refile org-capture-refile))
+ #+END_SRC
+
+* Enable ido-ubiquitous-mode :ido_ubiquitous:
+
+ =ido-ubiquitous-mode= lets you use ido for almost anything! Anything
+ which looks and acts like file or buffer selection anyway.
+
+ Since it is installed with ELPA, wait until /after/ emacs has been
+ initialized.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'emacs-startup-hook 'ido-ubiquitous-mode)
+ #+END_SRC
+
+* Enable idomenu :idomenu:
+
+ Imenu is an awesome feature, but since I don't use any menus it is
+ a little lost on me. =idomenu= uses Imenu, but shows it in an
+ ido-like way, which works perfectly. Bind it to ~M-n~.
+
+ #+BEGIN_SRC emacs-lisp
+ (global-set-key (kbd "M-n") 'idomenu)
+ #+END_SRC
+
+* Use electric default in minibuffer :minibuffer:
+
+ The =minibuffer-electric-default-mode= hides the default value if you
+ start typing. This leaves more room for typing. I also want the
+ "short" default indicator (~[default]~ instead of ~(default: default)~).
+
+ #+BEGIN_SRC emacs-lisp
+ (setq minibuffer-eldef-shorten-default t)
+ (minibuffer-electric-default-mode)
+ #+END_SRC
+
+* Don't show help message on empty parts :mode_line:
+
+ When hovering the mouse over empty parts of the mode-line, just show
+ nothing, don't clutter up my echo area and ~*Messages*~ buffer.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq mode-line-default-help-echo "")
+ #+END_SRC
+
+* Enable jedi :jedi:
+
+ jedi is an interesting auto-completion program for the Python
+ programming language. On archlinux the program you usually want to
+ use is ~python2~, so change the =jedi:server-command= accordingly and
+ run =jedi:setup= when =python-mode= starts to enable it.
+
+ #+BEGIN_SRC emacs-lisp
+ (eval-after-load "jedi" '(setcar jedi:server-command "python2"))
+ (add-hook 'python-mode-hook 'jedi:setup)
+ #+END_SRC
+
+* Don't use a tooltip :jedi:
+
+ The coolest thing about jedi is its eldoc-like argument display. If
+ it can figure out what the arguments are they're shown. But please
+ don't use tooltips, just the echo area.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jedi:tooltip-method nil)
+ #+END_SRC
+
+* Org initialization :org:
+
+ Since my intialization for =org-mode= got so big, I moved it to a
+ separate file. This file should be loaded after the =org= module
+ loads.
+
+ #+BEGIN_SRC emacs-lisp
+ (eval-after-load "org" '(require 'org-init))
+ #+END_SRC
+
+* Indent-defun
+
+ The emacsredux website had an interesting [[http://emacsredux.com/blog/2013/03/28/indent-defun/][tip]].
+
+ #+BEGIN_SRC emacs-lisp
+ (global-set-key (kbd "C-M-z") 'ext:indent-defun)
+ #+END_SRC
+
+* Close term buffer after exit :term:
+
+ When quitting the process in a term buffer, in other words, when
+ quitting the shell, kill the buffer. Killing the shell, but not
+ killing the buffer is a pain, it keeps you from quickly starting a
+ term and quickly closing it too. This advice should be disabled if
+ ever the shell crashes, because it doesn't look at the exit code,
+ since the standard exit code is that of the last run command.
+
+ #+BEGIN_SRC emacs-lisp
+ (defadvice term-handle-exit (after oni:kill-buffer-after-exit activate)
+ "Kill the term buffer if the process finished."
+ (kill-buffer (current-buffer)))
+ #+END_SRC
+
+* Changing case
+
+ I have no capslock key, and holding shift whilst typing big words
+ is annoying, so I wrote a couple of functions to help with that and
+ bind them to ~C-c u~ and ~C-c d~.
+
+ #+BEGIN_SRC emacs-lisp
+ (global-set-key (kbd "C-c u") 'oni:upcase-prev)
+ (global-set-key (kbd "C-c d") 'oni:downcase-prev)
+ #+END_SRC
+
+* Turn off usage of tabs for vala-mode :vala:
+
+ Somehow =vala-mode= thinks it's ok for it to decide that it's users
+ should always use tabs. As far as I'm aware the vala compiler has
+ no such restriction, so turn it off.
+
+ #+BEGIN_SRC emacs-lisp
+ (add-hook 'vala-mode-hook 'oni:vala-mode-func)
+ #+END_SRC
+
+* Use smex :smex:
+
+ Smex is to command selection what ido is to file selection. Very
+ similar too, it was written with ido specifically in mind.
+
+ #+BEGIN_SRC emacs-lisp
+ (global-set-key (kbd "M-x") 'smex)
+ (global-set-key (kbd "C-M-x") 'smex-major-mode-commands)
+ #+END_SRC
+
+* Autoload define-slime-contrib :js2:
+
+ =slime-js-minor-mode= uses this function but forgets to require its
+ module, so I set up an autoload function for when I need it and
+ haven't yet used slime.
+
+ #+BEGIN_SRC emacs-lisp
+ (autoload 'define-slime-contrib "slime")
+ #+END_SRC
+
+* Autoload some other functions
+
+ These need to have autoloads specified for various reasons, mostly
+ because they're installed manually or because they're old.
+
+ #+BEGIN_SRC emacs-lisp
+ (autoload 'gtags-mode "gtags" nil t)
+ (autoload 'jabber-connect "jabber" nil t)
+ (autoload 'php-mode "php-mode" nil t)
+ (autoload 'po-mode "po-mode" nil t)
+ (autoload 'pony-mode "pony-mode" nil t)
+ (autoload 'sawfish-mode "sawfish" nil t)
+ (autoload 'server-running-p "server")
+ (autoload 'slime-js-minor-mode "slime-js" nil t)
+ (autoload 'w3m-bookmark-view "w3m" nil t)
+ (autoload 'w3m-goto-url "w3m" nil t)
+ (autoload 'xmodmap-mode "xmodmap-mode" nil t)
+ #+END_SRC
+
+* Uniquify buffers better :uniquify:
+
+ The default way to make sure buffer names are unique is rather
+ uninformative, =uniquify= has a few better options.
+
+ #+BEGIN_SRC emacs-lisp
+ (require 'uniquify)
+ #+END_SRC
+
+* Use 4 spaces per indentation level
+
+ Often I see 8 being used, but that just seems too wide to me.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq-default c-basic-offset 4
+ tab-width 4)
+ #+END_SRC
+
+* Place fill-column-indicator :fill_column_indicator:
+
+ Place the ruler one character farther than what I usually prefer to
+ have my lines wrap to, this will indicate where it should not cross,
+ not where it should not continue.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq-default fci-rule-column 73)
+ #+END_SRC
+
+* Disable use of tabs
+
+ By default, use spaces, not tabs. Tabs are madness.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq-default indent-tabs-mode nil)
+ #+END_SRC
+
+* Don't warn about mumamo :php:
+
+ I haven't yet seen a mode that offers good multiple major modes
+ support. And so I don't use any, so don't warn me that I don't.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq-default php-mode-warn-if-mumamo-off nil)
+ #+END_SRC
+
+* Ensure a final newline
+
+ When looking at diffs, it can be annoying to have 2 extra line
+ changes, just because te previous last line suddenly gets a newline
+ and the new one doesn't. Plus it's very uniform to have a ~\n~ at the
+ end of _every_ line.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq-default require-final-newline t)
+ #+END_SRC
+
+* Truncate lines
+
+ Just let most line run off the screen. I don't like wrapping my code
+ around. I shouldn't make my lines too long in the first place, but
+ in case I have a very small window I prefer the lines to remain
+ unchanged, visually.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq-default truncate-lines t)
+ #+END_SRC
+
+* Send appointments to jabber :jabber:
+
+ When an appointment is coming up, show me in a buffer, but also
+ send a message to my jabber account.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq appt-disp-window-function #'oni:appt-display-window-and-jabber)
+ #+END_SRC
+
+* Don't display diary when appt is initialized :appt:
+
+ If the diary is displayed after the initialization of =appt= I would
+ get a diary buffer each time I load =org-mode=. Since I don't use the
+ diary, except for what =org-mode= puts in there for notifications and
+ such, I really don't want to see it, ever.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq appt-display-diary nil)
+ #+END_SRC
+
+* Don't case fold with auto modes
+
+ I haven't had to deal with wrongly-cased filenames since I stopped
+ using windows.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq auto-mode-case-fold nil)
+ #+END_SRC
+
+* Save all auto saves in /tmp
+
+ Having auto save files everywhere cloggs up the filesystem. Move
+ them all into ~/tmp~, though I should probably use a less volatile
+ location.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq auto-save-file-name-transforms
+ `((".*" "~/.local/share/emacs/autosave/" t)))
+ #+END_SRC
+
+* Save all backup files to /tmp
+
+ Having backuf files everywhere also cloggs up the filesystem. Move
+ them all into ~/tmp~ as well, though here too I should probably use a
+ less volatile location.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq backup-directory-alist `((".*" . "~/.local/share/emacs/backup/")))
+ #+END_SRC
+
+* Automatically determine browser :browse:
+
+ Use the =BROWSER= environment variable to figure out which browser to
+ call for =browse-url=. And use the =browse-url-generic= function to open
+ urls, otherwise this setting would have no meaning.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq browse-url-browser-function 'browse-url-generic
+ browse-url-generic-program (getenv "BROWSER"))
+ #+END_SRC
+
+* Customize C indentation :c:
+
+ When writing C code, when calling a function I prefer the
+ indentation to look like:
+
+ #+BEGIN_SRC c :tangle no
+ call_some_function(
+ argument1,
+ argument2
+ );
+ #+END_SRC
+
+ To be able to shorten lines with long function calls. As opposed to
+ the default:
+
+ #+BEGIN_SRC c :tangle no
+ call_some_function(
+ argument1,
+ argument2,
+ );
+ #+END_SRC
+
+ Which doesn't really help in making lines shorter. And I also
+ happen to think it looks hideous.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq c-offsets-alist
+ '((statement-block-intro . +)
+ (knr-argdecl-intro . 5)
+ (substatement-open . +)
+ (substatement-label . 0)
+ (label . 0)
+ (statement-case-open . +)
+ (statement-cont . +)
+ (arglist-intro . +)
+ (arglist-close . 0)
+ (inline-open . 0)
+ (brace-list-open . +)
+ (topmost-intro-cont first c-lineup-topmost-intro-cont
+ c-lineup-gnu-DEFUN-intro-cont)))
+ #+END_SRC
+
+* Move customize settings into their own file :custom:
+
+ Any settings I change using the customize interface should go into
+ a separate file. My ~init.el~ is under version control and I don't
+ want each local change made in this way to be recorded in the VCS.
+ Plus the code generated by customize is an eyesore.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq custom-file "~/.emacs.d/custom.el")
+ #+END_SRC
+
+* Setup some frame parameters
+
+ Disable borders, disable scroll-bars, tool-bars and menu-bars (this
+ is the third place I'm doing this, I *really* want them gone, don't
+ I). And set the preferred font.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq default-frame-alist
+ `((border-width . 0)
+ (internal-border-width . 0)
+ (vertical-scroll-bars . nil)
+ (menu-bar-lines . nil)
+ (tool-bar-lines . nil)
+ (font . "Inconsolata:pixelsize=18")))
+ #+END_SRC
+
+* Stop elnode from running automatically :elnode:
+
+ I like elnode, but it really should stop starting itself up every
+ time I start emacs. Not only can this cause problems with trying
+ to run on the same port, but also this starts running programs that
+ I have no idea of, whatever I was testing last.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq elnode-do-init nil)
+ #+END_SRC
+
+* Mention the buffer in the frame title
+
+ Having 5 Emacs frames all named "emacs" doesn't help to identify
+ them, so add the opened buffer name to the title.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq frame-title-format '(:eval (concat "emacs: " (buffer-name))))
+ #+END_SRC
+
+* Store geiser history under .emacs.d
+
+ Everything Emacs related should be stored under ~HOME/.emacs.d~ so as
+ not to fill my home directory with a bunch of directories.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq geiser-repl-history-filename "~/.emacs.d/geiser-history")
+ #+END_SRC
+
+* Change gnus init file
+
+ My gnus init file is separate, since I don't always immediately use
+ gnus.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq gnus-init-file "~/.emacs.d/gnus")
+ #+END_SRC
+
+* Automatically update gtags TAGS :gtags:
+
+ Before there was this option I had some complicated function to do
+ the same thing from somewhere, now that isn't necessary anymore.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq gtags-auto-update t)
+ #+END_SRC
+
+* Display help-at-point
+
+ When the cursor is in a location where a help message would be
+ shown by hovering the mouse over it, show that help after a short
+ time of idling on that spot. Another step in using no mouse
+ whatsoever without losing any functionality.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq help-at-pt-display-when-idle t)
+ #+END_SRC
+
+* Set inferior lisp program to SBCL :lisp:
+
+ SBCL seems like a very good Lisp implementation to use, widely
+ supported by packagers too. =--noinform= keeps the copyright message
+ from showing up and =--no-linedit= is used by the =linedit= package to
+ determine that it shouldn't be enabled.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq inferior-lisp-program "sbcl --noinform --no-linedit")
+ #+END_SRC
+
+* Inhibit stuff
+
+ I don't need to see the startup message, I don't want the default
+ init messing with my own stuff and I don't even know what
+ =inhibit-local-menu-bar-menus= does, but it doesn't sound like I need
+ is, since I don't use menu bars.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq inhibit-default-init t
+ inhibit-local-menu-bar-menus t
+ inhibit-startup-message t)
+ #+END_SRC
+
+* Change the initial major mode and message
+
+ The =lisp-interaction-mode= is a nice idea on paper, but usually when
+ I want to use the ~*scratch*~ buffer, it just gets in my way, so use
+ =emacs-lisp-mode= instead. Also, by now I know what the ~*scratch*~
+ buffer is for, so I really don't need that message telling me what
+ it does.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq initial-major-mode 'emacs-lisp-mode
+ initial-scratch-message nil)
+ #+END_SRC
+
+* Store jabber avatar cache under .emacs.d :jabber:
+
+ Even though I don't use avatars anymore I don't want ~jabber.el~
+ creating directories all over the place, so just to be safe I put
+ it under ~HOME/.emacs.d~.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jabber-avatar-cache-directory "~/.emacs.d/jabber-avatars/")
+ #+END_SRC
+
+* Setup formats :jabber:
+
+ Most of the time I prefer having my message start at the beginning
+ of the line, in case someone sends me a piece of code or I send
+ them some, it's easier to read if you don't have to change it first.
+
+ But that leaves a lot of empty space on that prompt line, best fill
+ it up as mucha as is still useful.
+
+ Also show the chat buffer names as just the contact's name prefixed
+ with a ~+~ to keep them short and clean.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jabber-chat-buffer-format "+%n"
+ jabber-chat-foreign-prompt-format "%t %u/%r <\n"
+ jabber-chat-local-prompt-format "%t %u/%r >\n"
+ jabber-groupchat-buffer-format "++%n"
+ jabber-groupchat-prompt-format "%t %u --\n")
+ #+END_SRC
+
+* Don't use avatars :jabber:
+
+ I did for a while, but since there is no concensus over what is
+ good and what is bad, buffers start looking messy, so I just
+ disabled them completely. I know most of the people I chat with
+ personally, so it doesn't really add much anyway.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jabber-chat-buffer-show-avatar nil
+ jabber-vcard-avatars-publish nil
+ jabber-vcard-avatars-retrieve nil)
+ #+END_SRC
+
+* Don't fill :jabber:
+
+ Just like ERC, don't fill lines so that =visual-line-mode= can do
+ its thing.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jabber-chat-fill-long-lines nil)
+ #+END_SRC
+
+* Don't send chatstates :jabber:
+
+ Don't let people know what I'm doing, don't send them information
+ on that I'm typing or not, etc. This isn't very useful and it
+ sometimes creates confusion when I accidentally start typing in the
+ wrong buffer.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jabber-chatstates-confirm nil)
+ #+END_SRC
+
+* Autojoin some channels :jabber:
+
+ Just one, really, the only one I'm in.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jabber-muc-autojoin '("aethon@muc.ryuslash.org"))
+ #+END_SRC
+
+* Keep the roster buffer clean :jabber:
+
+ Most of the time I really don't need to see the keybindings for the
+ roster buffers, so hide them initially. And the offline contacts as
+ well.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jabber-roster-show-bindings nil)
+ (setq jabber-show-offline-contacts nil)
+ #+END_SRC
+
+* Defer font locking a little :fontlock:
+
+ By deferring font-lock for a very short time it should improve
+ scrolling performance.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq jit-lock-defer-time 0.2)
+ #+END_SRC
+
+* Turn on compilation-shell-minor-mode for pony buffers :pony:
+
+ Turn on =compilation-shell-minor-mode= whenever =pony-minor-mode= starts
+ in a =comint-mode= buffer. Since buffers like ~*ponymanage*~ and
+ ~*ponyserver*~ don't have their own specialized modes, but use
+ =comint-mode= and turn on =pony-minor-mode=, and I don't want to enable
+ =compilation-shell-minor-mode= for *every* =comint-mode= buffer, we can
+ add a hook that adds a local hook.
+
+ I use =compilation-shell-minor-mode= because some pony mode buffers
+ are interactive, such as the pony-shell buffer.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun turn-on-compilation-shell-for-pony ()
+ (add-hook 'pony-minor-mode-hook 'compilation-shell-minor-mode nil t))
+ (add-hook 'comint-mode-hook 'turn-on-compilation-shell-for-pony)
+ #+END_SRC
+
+* Make smartparens a little stricter :smartparens:
+
+ Set the delete and backspace keys to some smartparens keybindings
+ that should make pair balancing a little stricter. These key
+ bindings refuse to delete pair delimeters or skip over them if they
+ still have content.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun oni:smartparens-set-keys ()
+ (local-set-key (kbd "DEL") 'sp-backward-delete-char)
+ (local-set-key (kbd "<deletechar>") 'sp-delete-char)
+ (local-set-key (kbd "C-d") 'sp-delete-char))
+
+ (add-hook 'smartparens-mode-on-hook 'oni:smartparens-set-keys)
+ #+END_SRC
+
+* Initialize EMMS :emms:
+
+ Initialize a minimal EMMS setup. Load the default players so we can
+ use mplayer or any of the generic mp3 and ogg players.
+
+ Load the MPD player so we can connect to MPD and use that if
+ possible, set the music directory to MPD's music directory so it
+ knows how to translate filenames to something MPD understands.
+
+ Load the =emms-mode-line= module so we can display some information in
+ the mode-line about which song is playing and set my preferred
+ function for extracting this information. The =emms-info-mpd= function
+ doesn't seem to return anything, so I've had to improvise to turn
+ absolute file names into something nicer.
+
+ #+BEGIN_SRC emacs-lisp
+ (eval-after-load "emms"
+ `(progn
+ (emms-minimalistic)
+ (emms-default-players)
+
+ (require 'emms-player-mpd)
+ (add-to-list 'emms-player-list 'emms-player-mpd)
+ (setq emms-player-mpd-music-directory "/mnt/music/mp3")
+
+ (require 'emms-mode-line)
+ (setq emms-mode-line-mode-line-function 'oni:mode-line-current-song)
+ (emms-mode-line 1)))
+ #+END_SRC
+
+* Enable some smartparen keybindings in python :smartparens:python:
+
+ Since, for example, HTML mode uses the same keys for similar
+ functions from the ~tagedit~ package, these keys should only be
+ enabled for (for the moment) python mode.
+
+ This should be set before the =smartparens-mode= function is added
+ to the =python-mode-hook= so that the hook will run when smartparens
+ is turned on.
+
+ #+BEGIN_SRC emacs-lisp
+ (defun oni:set-smartparens-keys ()
+ (local-set-key (kbd "<C-left>") 'sp-forward-barf-sexp)
+ (local-set-key (kbd "<C-right>") 'sp-forward-slurp-sexp))
+
+ (defun oni:local-set-smartparens-hook ()
+ (add-hook 'smartparens-mode-hook 'oni:set-smartparens-keys nil t))
+
+ (add-hook 'python-mode-hook 'oni:local-set-smartparens-hook)
+ #+END_SRC
+
+* All the rest
+
+ This still needs to be sorted out and documented, haven't had time
+ for it yet.
+
+ #+BEGIN_SRC emacs-lisp
+ (setq magit-repo-dirs '("~/projects/"))
+ (setq message-log-max 1000)
+ (setq message-send-mail-function 'message-send-mail-with-sendmail)
+ (setq message-sendmail-extra-arguments '("-a" "ryuslash"))
+ (setq package-archives
+ '(("melpa" . "http://melpa.milkbox.net/packages/")
+ ("marmalade" . "http://marmalade-repo.org/packages/")
+ ("gnu" . "http://elpa.gnu.org/packages/")))
+ (setq package-load-list '((htmlize "1.39")
+ (lua-mode "20111107")
+ all))
+ (setq php-function-call-face 'font-lock-function-name-face)
+ (setq php-mode-force-pear t)
+ (setq pony-tpl-indent-moves t)
+ (setq rainbow-delimiters-max-face-count 12)
+ (setq redisplay-dont-pause t)
+ (setq send-mail-function 'sendmail-send-it)
+ (setq sendmail-program "/usr/bin/msmtp")
+ (setq sentence-end-double-space nil)
+ (setq smex-key-advice-ignore-menu-bar t)
+ (setq smex-save-file "~/.emacs.d/smex-items")
+ (setq split-height-threshold 40)
+ (setq time-stamp-active t)
+ (setq time-stamp-format "%04y-%02m-%02d %02H:%02M:%02S (%u)")
+ (setq type-break-good-rest-interval (* 60 10))
+ (setq type-break-interval (* 60 50))
+ (setq type-break-keystroke-threshold '(nil . nil))
+ (setq uniquify-buffer-name-style 'post-forward)
+ (setq use-dialog-box nil)
+ (setq user-full-name "Tom Willemse")
+ (setq user-mail-address "tom@ryuslash.org")
+ (setq w3m-fill-column 72)
+ (setq window-combination-resize t)
+ (setq yas-fallback-behavior nil)
+ (setq yas-prompt-functions '(yas-ido-prompt))
+
+ (add-hook 'after-change-major-mode-hook 'set-current-mode-icon)
+ (add-hook 'after-save-hook 'oni:after-save-func t)
+ (add-hook 'before-save-hook 'oni:before-save-func)
+ (add-hook 'c-mode-hook 'oni:c-mode-func)
+ (add-hook 'css-mode-hook 'oni:css-mode-func)
+ (add-hook 'diary-display-hook 'oni:diary-display-func)
+ (add-hook 'emacs-startup-hook 'oni:emacs-startup-func)
+ (add-hook 'go-mode-hook 'oni:go-mode-func)
+ (add-hook 'gtags-mode-hook 'oni:gtags-mode-func)
+ (add-hook 'haskell-mode-hook 'oni:haskell-mode-func)
+ (add-hook 'jabber-roster-mode-hook 'oni:jabber-roster-mode-func)
+ (add-hook 'java-mode-hook 'oni:java-mode-func)
+ (add-hook 'js-mode-hook 'oni:js-mode-func)
+ (add-hook 'js2-mode-hook 'oni:js2-mode-func)
+ (add-hook 'lua-mode-hook 'oni:lua-mode-func)
+ (add-hook 'markdown-mode-hook 'oni:markdown-mode-func)
+ (add-hook 'php-mode-hook 'oni:php-mode-func)
+ (add-hook 'prog-mode-hook 'oni:prog-mode-func)
+ (add-hook 'python-mode-hook 'oni:python-mode-func)
+ (add-hook 'term-mode-hook 'oni:term-mode-func)
+ (add-hook 'write-file-hooks 'oni:write-file-func)
+ (add-hook 'yas-minor-mode-hook 'oni:yas-minor-mode-func)
+
+ (define-key key-translation-map (kbd "C-j") (kbd "C-l"))
+ (define-key key-translation-map (kbd "C-l") (kbd "C-j"))
+
+ (global-set-key (kbd "'") 'oni:self-insert-dwim)
+ (global-set-key (kbd "<XF86HomePage>") 'oni:raise-scratch)
+ (global-set-key (kbd "<XF86Mail>") 'gnus)
+ (global-set-key (kbd "<f10>") 'git-project-show-files)
+ (global-set-key (kbd "<f5>") 'ext:reload-buffer)
+ (global-set-key (kbd "<f6>") 'jabber-switch-to-roster-buffer)
+ (global-set-key (kbd "<f7>") 'magit-status)
+ (global-set-key (kbd "<hiragana>") 'oni:show-org-index)
+ (global-set-key (kbd "C-<") 'oni:indent-shift-left)
+ (global-set-key (kbd "C->") 'oni:indent-shift-right)
+ (global-set-key (kbd "C-M-4") 'split-window-vertically)
+ (global-set-key (kbd "C-M-SPC") 'er/expand-region)
+ (global-set-key (kbd "C-M-d") 'kill-word)
+ (global-set-key (kbd "C-M-w") 'backward-kill-word)
+ (global-set-key (kbd "C-S-k") 'kill-whole-line)
+ (global-set-key (kbd "C-a") 'oni:move-beginning-of-dwim)
+ (global-set-key (kbd "C-c a") 'org-agenda)
+ (global-set-key (kbd "C-c c") 'org-capture)
+ (global-set-key (kbd "C-c i p") 'identica-update-status-interactive)
+ (global-set-key (kbd "C-c p") 'oni:show-buffer-position)
+ (global-set-key (kbd "C-c t") 'oni:raise-ansi-term)
+ (global-set-key (kbd "C-e") 'oni:move-end-of-dwim)
+ (global-set-key (kbd "M-0") 'delete-window)
+ (global-set-key (kbd "M-1") 'delete-other-windows)
+ (global-set-key (kbd "M-2") 'split-window-below)
+ (global-set-key (kbd "M-3") 'split-window-right)
+ (global-set-key (kbd "M-4") 'split-window-horizontally)
+ (global-set-key (kbd "M-o") 'other-window)
+ (global-set-key (kbd "\"") 'oni:self-insert-dwim)
+
+ (if (daemonp)
+ (global-set-key "\C-x\C-c" 'oni:close-client-window))
+
+ (when (or window-system (daemonp))
+ (global-unset-key "\C-z"))
+
+ (add-to-list 'auto-mode-alist '("\\.jl$" . sawfish-mode))
+ (add-to-list 'auto-mode-alist '("\\.js\\(on\\)?$" . js2-mode))
+ (add-to-list 'auto-mode-alist
+ '("\\.m\\(ark\\)?d\\(?:o?wn\\)?$" . markdown-mode))
+ (add-to-list 'auto-mode-alist '("\\.php[345]?$" . php-mode))
+ (add-to-list 'auto-mode-alist '("\\.po\\'\\|\\.po\\." . po-mode))
+ (add-to-list 'auto-mode-alist '("\\.tpl$" . html-mode))
+ (add-to-list 'auto-mode-alist '("^PKGBUILD$" . shell-script-mode))
+ (add-to-list 'auto-mode-alist '("^\\.Xmodmap$" . xmodmap-mode))
+
+ (add-to-list 'debug-ignored-errors "^Can't shift all lines enough")
+
+ (add-to-list
+ 'display-buffer-alist
+ '("^\\*\\(?:.+-\\)?scratch\\*$" display-buffer-same-window))
+ (add-to-list
+ 'display-buffer-alist
+ '("^\\*git-project-list\\*$" git-project-show-window))
+ (add-to-list
+ 'display-buffer-alist
+ '("^\\*magit: .*\\*$" display-buffer-same-window))
+
+ (blink-cursor-mode -1)
+ (column-number-mode -1)
+ (line-number-mode -1)
+ (tooltip-mode -1)
+
+ (package-initialize)
+
+ (auto-insert-mode)
+ (electric-indent-mode)
+ (savehist-mode)
+ (show-paren-mode)
+ (winner-mode)
+
+ (smex-initialize)
+ (help-at-pt-set-timer)
+ (windmove-default-keybindings)
+ (global-diff-hl-mode)
+
+ ;;; Diminish lighter for a bunch of minor modes that should be on in
+ ;;; certain modes and usually just clogg up the mode line.
+ (diminish 'auto-fill-function)
+
+ (eval-after-load "auto-complete" '(diminish 'auto-complete-mode))
+ (eval-after-load "eldoc" '(diminish 'eldoc-mode))
+ (eval-after-load "flycheck" '(diminish 'flycheck-mode))
+ (eval-after-load "paredit" '(diminish 'paredit-mode))
+ (eval-after-load "rainbow-mode" '(diminish 'rainbow-mode))
+ (eval-after-load "smartparens" '(diminish 'smartparens-mode))
+ (eval-after-load "yasnippet" '(diminish 'yas-minor-mode))
+
+
+ ;;; Popping up multiple frames out of the blue does not usually play
+ ;;; well with (manual) tiling window managers.
+ (setq ediff-window-setup-function 'ediff-setup-windows-plain)
+
+ ;;; Not being able to find newly written functions in imenu is a pain.
+ (setq imenu-auto-rescan t)
+
+ ;;; Yanking at click makes not sense to me. I normally have my cursor
+ ;;; where it needs to point and if I *have* to use the mouse I prefer
+ ;;; just clicking it wherever it lands, without having to drag it all
+ ;;; the way to the proper place.
+ (setq mouse-yank-at-point t)
+
+ ;;; Always having to move the cursor around so much after scrolling
+ ;;; gets annoying.
+ (setq scroll-preserve-screen-position t)
+
+ ;;; I store my blog posts in `~/documents/blog', not the default
+ ;;; `~/Blog'.
+ (setq eltuki-blog-dir "~/documents/blog")
+
+ (setq sp-cancel-autoskip-on-backward-movement nil)
+
+ (defun oni:scroll-down-or-prev-page (arg)
+ "Either scroll down or go to the previous page.
+
+ Depending on the value of `buffer-narrowed-p'."
+ (interactive "^P")
+ (if (buffer-narrowed-p)
+ (let ((scroll-error-top-bottom nil))
+ (condition-case nil
+ (scroll-down-command arg)
+ (beginning-of-buffer
+ (narrow-to-page -1)
+ (goto-char (point-min)))))
+ (scroll-down-command arg)))
+
+ (defun oni:scroll-up-or-next-page (arg)
+ "Either scroll up or go to the next page.
+
+ Depending on the value of `buffer-narrowed-p'."
+ (interactive "^P")
+ (if (buffer-narrowed-p)
+ (let ((scroll-error-top-bottom nil))
+ (condition-case nil
+ (scroll-up-command arg)
+ (end-of-buffer
+ (narrow-to-page 1)
+ (goto-char (point-min)))))
+ (scroll-up-command arg)))
+
+ (global-set-key (kbd "<prior>") 'oni:scroll-down-or-prev-page)
+ (global-set-key (kbd "<next>") 'oni:scroll-up-or-next-page)
+
+ ;;; Emacs Alsa Player
+ (add-to-list 'load-path "~/.emacs.d/site-lisp/eap")
+ (load "eap-autoloads")
+
+ (setq eap-music-library "/mnt/music")
+ (setq eap-playlist-library "~/music/playlists")
+
+ ;;;; Auto-complete
+
+ (setq-default ac-sources '(ac-source-imenu
+ ac-source-gtags
+ ac-source-abbrev
+ ac-source-yasnippet
+ ac-source-words-in-buffer
+ ac-source-words-in-same-mode-buffers
+ ac-source-dictionary
+ ac-source-functions
+ ac-source-symbols
+ ac-source-variables
+ ac-source-features))
+
+ ;;;; Magit
+
+ (setq magit-default-tracking-name-function
+ 'magit-default-tracking-name-branch-only)
+ (setq magit-diff-refine-hunk 'all)
+
+ ;;; Finally, load any `customize' settings and slime.
+ (load custom-file)
+ (load (expand-file-name "~/quicklisp/slime-helper.el"))
+ #+END_SRC
diff --git a/emacs/site-lisp/Makefile b/emacs/site-lisp/Makefile
index bf452e9..91ee32e 100644
--- a/emacs/site-lisp/Makefile
+++ b/emacs/site-lisp/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/site-lisp
+SUBDIR=site-lisp
objects=dzen.elc dzen.el eltuki.elc eltuki.el ext.elc ext.el \
metalexpress.elc metalexpress.el mu4e-init.elc mu4e-init.el \
oni.elc oni.el org-init.elc org-init.el quick-edit-mode.elc \
diff --git a/emacs/site-lisp/dzen.el b/emacs/site-lisp/dzen.el
index d946458..da83099 100644
--- a/emacs/site-lisp/dzen.el
+++ b/emacs/site-lisp/dzen.el
@@ -25,6 +25,7 @@
;;; Code:
(require 'newst-backend)
+(require 'sawfish)
(defvar dzen-process nil
"Dzen2's process.")
diff --git a/emacs/site-lisp/ext.el b/emacs/site-lisp/ext.el
index eb84a3f..9bfbe34 100644
--- a/emacs/site-lisp/ext.el
+++ b/emacs/site-lisp/ext.el
@@ -38,6 +38,13 @@
buffer-file-name))))
(list "pycheck.sh" (list local-file))))
+(defun ext:indent-defun ()
+ "Indent the current defun."
+ (interactive)
+ (save-excursion
+ (mark-defun)
+ (indent-region (region-beginning) (region-end))))
+
(defun ext:reload-buffer ()
"Reload current buffer."
(interactive)
diff --git a/emacs/site-lisp/oni.el b/emacs/site-lisp/oni.el
index cf73ac1..b90bd4a 100644
--- a/emacs/site-lisp/oni.el
+++ b/emacs/site-lisp/oni.el
@@ -34,6 +34,15 @@ DOT are intentionally being skipped."
(concat (symbol-name user) "@" (symbol-name host) "."
(symbol-name com)))
+(defmacro oni:eval-after-init (&rest body)
+ "Defer execution of BODY until after Emacs init.
+
+ Some functionality is dependent on code loaded by package.el.
+ Instead of requiring package.el to load very early on, have some
+ functionality deferred to a point after Emacs has initialized and
+ package.el is loaded anyway."
+ `(add-hook 'emacs-startup-hook #'(lambda () ,@body)))
+
(defun oni:after-save-func ()
"Function for `after-save-hook'."
(oni:compile-el)
@@ -66,6 +75,13 @@ DOT are intentionally being skipped."
(local-set-key [f9] 'compile)
(local-set-key "\C-j" 'oni:newline-and-indent))
+(defun oni:change-prev-case (num dir)
+ (let ((regfunc (if (eq dir 'up) 'upcase-region 'downcase-region))
+ (wordfunc (if (eq dir 'up) 'upcase-word 'downcase-word)))
+ (if (> num 1)
+ (funcall regfunc (point) (- (point) num))
+ (funcall wordfunc -1))))
+
(defun oni:close-client-window ()
"Close a client's frames."
(interactive)
@@ -86,8 +102,7 @@ DOT are intentionally being skipped."
(defun oni:css-mode-func ()
"Function for `css-mode-hook'."
- (local-set-key "\C-j" 'oni:newline-and-indent)
- (rainbow-mode))
+ (local-set-key "\C-j" 'oni:newline-and-indent))
(defun oni:current-jabber-status ()
"Return a string representing the current jabber status."
@@ -100,9 +115,9 @@ DOT are intentionally being skipped."
"Function for `diary-display-hook'."
(diary-fancy-display))
-(defun oni:emacs-lisp-mode-func ()
- "Function for `emacs-lisp-mode-hook'."
- (eldoc-mode))
+(defun oni:downcase-prev (num)
+ (interactive "p")
+ (oni:change-prev-case num 'down))
(defun oni:emacs-startup-func ()
"Function for `emacs-init-hook'."
@@ -123,11 +138,9 @@ DOT are intentionally being skipped."
"Function for `haskell-mode-hook'."
(turn-on-haskell-indentation))
-(defun oni:html-mode-func ()
- "Function for `html-mode-hook'."
- (yas-minor-mode)
- (fci-mode)
- (flycheck-mode))
+(defun oni:hostname ()
+ "Get the current machine's hostname."
+ (substring (shell-command-to-string "hostname") 0 -1))
(defun oni:indent-shift-left (start end &optional count)
"Rigidly indent region.
@@ -174,10 +187,6 @@ If COUNT has been specified indent by that much, otherwise look at
(notifications-notify :title title
:body text))
-(defun oni:jabber-chat-mode-func ()
- "Function for `jabber-chat-mode-hook'."
- (visual-line-mode))
-
(defun oni:jabber-roster-mode-func ()
"Function for `jabber-roster-mode-hook'."
(setq mode-line-format
@@ -189,68 +198,22 @@ If COUNT has been specified indent by that much, otherwise look at
(defun oni:js-mode-func ()
"Function for `js-mode-hook'."
- (rainbow-delimiters-mode)
(local-set-key "\C-j" 'oni:newline-and-indent))
(defun oni:js2-mode-func ()
"Function for `js2-mode-hook'."
- (oni:prog-mode-func)
(oni:js-mode-func)
- (local-set-key (kbd "<f5>") #'slime-js-reload)
- (slime-js-minor-mode))
-
-(defun oni:kill-region-or-backward-char ()
- "Either `kill-region' or `backward-delete-char-untabify'."
- (interactive)
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (backward-delete-char-untabify 1)))
-
-(defun oni:kill-region-or-forward-char ()
- "Either `kill-region' or `delete-forward-char'."
- (interactive)
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (delete-forward-char 1)))
-
-(defun oni:kill-region-or-line ()
- "Either `kill-region' or `kill-line'."
- (interactive)
- (if (region-active-p)
- (kill-region (region-beginning) (region-end))
- (kill-line)))
+ (local-set-key (kbd "<f5>") #'slime-js-reload))
(defun oni:lua-mode-func()
"Function for `lua-mode-hook'."
(local-unset-key (kbd ")"))
(local-unset-key (kbd "]"))
- (local-unset-key (kbd "}"))
- (flycheck-mode))
-
-(defun oni:magit-log-edit-mode-func ()
- "Function for `magit-log-edit-mode-hook'."
- (auto-fill-mode)
- (font-lock-add-keywords
- nil
- '(("\\`\\(.\\{,50\\}\\)\\(.*\\)\n?\\(.*\\)$"
- (1 'git-commit-summary-face)
- (2 'git-commit-overlong-summary-face)
- (3 'git-commit-nonempty-second-line-face))
- ("`\\([^']+\\)'" 1 font-lock-constant-face))
- t))
+ (local-unset-key (kbd "}")))
(defun oni:markdown-mode-func ()
"Function for `markdown-mode-hook'."
- (setq-local comment-auto-fill-only-comments nil)
- (setq-local whitespace-style '(face trailing))
- (auto-fill-mode)
- (whitespace-mode))
-
-(defun oni:message-mode-func ()
- "Function for `message-mode-hook'."
- (setq-local comment-auto-fill-only-comments nil)
- (auto-fill-mode)
- (flyspell-mode))
+ (setq-local whitespace-style '(face trailing)))
(defun oni:mini-fix-timestamp-string (date-string)
"A minimal version of Xah Lee's `fix-timestamp-string'.
@@ -276,6 +239,20 @@ code. Found at http://xahlee.org/emacs/elisp_parse_time.html"
(match-string 2 date-string)
(match-string 1 date-string)))
+(defun oni:mode-line-current-song ()
+ "Extract current song information from a path.
+
+EMMS only shows me the absolute path of a song, this function
+extracts the parts I want to know about."
+ (let* ((song (emms-track-name (emms-playlist-current-selected-track)))
+ (matchp (string-match "\\([^/]+\\)/\\([0-9]\\{4\\}\\) - \\(.+\\)/\\([0-9]\\{2,3\\}\\) - \\(.+\\)\\..\\{3,4\\}$" song))
+ (band (substring song (match-beginning 1) (match-end 1)))
+ (year (substring song (match-beginning 2) (match-end 2)))
+ (album (substring song (match-beginning 3) (match-end 3)))
+ (track (substring song (match-beginning 4) (match-end 4)))
+ (title (substring song (match-beginning 5) (match-end 5))))
+ (format "[%s - %s]" band title)))
+
(defun oni:move-beginning-of-dwim ()
"Move to beginning of line either after indentation or before."
(interactive)
@@ -328,44 +305,25 @@ When dealing with braces, add another line and indent that too."
(save-excursion (newline-and-indent)))
(newline-and-indent))
-(defun oni:org-mode-func ()
- "Function for `org-mode-hook'."
- (auto-fill-mode)
- (yas-minor-mode)
- (set (make-local-variable 'comment-auto-fill-only-comments) nil))
-
(defun oni:php-mode-func ()
"Function for `php-mode-hook'."
(local-set-key "\C-j" 'oni:newline-and-indent)
(c-set-offset 'arglist-intro '+)
(c-set-offset 'arglist-close '0)
- (rainbow-delimiters-mode)
- (setq-local fci-rule-column 80)
- (flycheck-mode))
+ (setq-local fci-rule-column 80))
(defun oni:prog-mode-func ()
"Function for `prog-mode-hook'."
- (rainbow-delimiters-mode)
- (fci-mode)
- (yas-minor-mode)
- (auto-fill-mode))
+ (setq-local comment-auto-fill-only-comments t))
(defun oni:python-mode-func ()
"Function for `python-mode-hook'."
- (flycheck-mode)
(local-set-key (kbd "C->") 'python-indent-shift-right)
(local-set-key (kbd "C-<") 'python-indent-shift-left)
(set (make-local-variable 'electric-indent-chars) nil)
- (rainbow-delimiters-mode)
(setq fci-rule-column 79
fill-column 72)
- (setq-local whitespace-style '(tab-mark))
- (fci-mode)
- (whitespace-mode))
-
-(defun oni:rainbow-mode-init ()
- "Initialization function for rainbow-mode."
- (diminish 'rainbow-mode))
+ (setq-local whitespace-style '(tab-mark)))
(defun oni:raise-ansi-term (arg)
"Create or show an `ansi-term' buffer."
@@ -437,10 +395,6 @@ use. If MODE is not nil, open a new buffer with the name
default-directory "' request-pull " (when patchp "-p ")
from " " url " " to))))))
-(defun oni:rst-mode-func ()
- "Function for `rst-mode-hook'."
- (auto-fill-mode))
-
(defun oni:self-insert-dwim ()
"Execute self insert, but when the region is active call self
insert at the end of the region and at the beginning."
@@ -472,10 +426,12 @@ insert at the end of the region and at the beginning."
(interactive)
(find-file "~/documents/org/index.org"))
-(defun oni:smex-init ()
- "Initialization function for smex."
- (global-set-key (kbd "M-x") 'smex)
- (global-set-key (kbd "C-M-x") 'smex-major-mode-commands))
+(defun oni:skip-ex-tag ()
+ (let ((tags (org-entry-get (point) "TAGS")))
+ (when (and tags (string-match-p ":ex:" tags))
+ (save-excursion
+ (org-forward-element)
+ (point)))))
(defun oni:split-window-interactive (dir)
"Split windows in direction DIR.
@@ -515,10 +471,13 @@ If no direction is given, don't split."
"Function for `term-mode-hook'."
(setq truncate-lines nil))
-(defun oni:texinfo-mode-func ()
- "Function for `texinfo-mode-hook'."
- (setq-local comment-auto-fill-only-comments nil)
- (auto-fill-mode))
+(defun oni:upcase-prev (num)
+ (interactive "p")
+ (oni:change-prev-case num 'up))
+
+(defun oni:vala-mode-func ()
+ "Function for `vala-mode-hook'."
+ (setq indent-tabs-mode nil))
(defun oni:write-file-func ()
"Function for `write-file-hooks'."
@@ -530,18 +489,6 @@ If no direction is given, don't split."
(define-key yas-minor-mode-map [(tab)] nil)
(define-key yas-minor-mode-map (kbd "C-\\") 'yas-expand))
-(defun oni:yasnippet-init ()
- "Initialization function for yasnippet."
- (diminish 'yas-minor-mode))
-
-(defvar oni:auto-save-name-transforms
- `((".*" ,temporary-file-directory t))
- "Place all auto-save files in `temporary-file-directory'.")
-
-(defvar oni:backup-directory-alist
- `((".*" . ,temporary-file-directory))
- "Palce all backup files in `temporary-file-directory'.")
-
(defvar oni:mailbox-map
'("top" ("menu"
("ryulash.org" . "ryuslash")
diff --git a/emacs/site-lisp/org-init.el b/emacs/site-lisp/org-init.el
index 3c698d2..ca822aa 100644
--- a/emacs/site-lisp/org-init.el
+++ b/emacs/site-lisp/org-init.el
@@ -101,10 +101,10 @@
(search . " %i %-12:c")))
(setq org-agenda-sorting-strategy
'((agenda habit-down time-up priority-down category-keep)
- (todo user-defined-down)
+ (todo priority-down user-defined-down)
(tags priority-down category-keep)
(search category-keep)))
-(setq org-agenda-tags-column -101)
+(setq org-agenda-tags-column (1+ (- (window-width))))
(setq org-directory (expand-file-name "~/documents/org"))
(setq org-default-notes-file (concat org-directory "/org"))
(setq org-capture-templates
@@ -112,6 +112,8 @@
"* TODO %?")
("T" "Linked task" entry (file "~/documents/org/tasks")
"* TODO %?\n\n %a")
+ ("a" "Appointment" entry (file "~/documents/org/tasks")
+ "* %?\n SCHEDULED: %^T\n\n %a")
("n" "General note" entry (file ,org-default-notes-file)
(function oni:note-template))))
(setq org-contacts-files '("~/documents/org/misc/contacts.org"))
@@ -132,7 +134,7 @@
(setq org-refile-use-outline-path 'file)
(setq org-return-follows-link t)
(setq org-src-fontify-natively t)
-(setq org-tags-column -101)
+(setq org-tags-column (- 70))
(setq org-tags-exclude-from-inheritance '("crypt"))
(setq org-todo-keyword-faces
'(("TODO" :foreground "#ff756e" :background "#171719" :box (:width 1 :color "#282830"))
@@ -146,6 +148,7 @@
("ACQUIRE" :foreground "#ff756e" :background "#171719" :box (:width 1 :color "#282830"))
("IGNORED" :foreground "#999999" :background "#222224" :box (:width 1 :color "#333335"))))
(setq org-use-fast-todo-selection t)
+(setq org-agenda-skip-function-global 'oni:skip-ex-tag)
(setq org-use-property-inheritance '("slug"))
(add-hook 'org-agenda-mode-hook 'org-agenda-to-appt)
diff --git a/emacs/snippets/Makefile b/emacs/snippets/Makefile
index 12ff544..e003ed3 100644
--- a/emacs/snippets/Makefile
+++ b/emacs/snippets/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/snippets
+SUBDIR=snippets
modules=html-mode org-mode python-mode
include ../../dotfiles.mk
diff --git a/emacs/snippets/html-mode/Makefile b/emacs/snippets/html-mode/Makefile
index b2dff78..2d6defe 100644
--- a/emacs/snippets/html-mode/Makefile
+++ b/emacs/snippets/html-mode/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/html-mode
+SUBDIR=html-mode
objects=for generic-block
include ../../../dotfiles.mk
diff --git a/emacs/snippets/org-mode/Makefile b/emacs/snippets/org-mode/Makefile
index 34d4cd9..670b139 100644
--- a/emacs/snippets/org-mode/Makefile
+++ b/emacs/snippets/org-mode/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/org-mode
+SUBDIR=org-mode
objects=codeblock heading project snippet
include ../../../dotfiles.mk
diff --git a/emacs/snippets/org-mode/heading b/emacs/snippets/org-mode/heading
index 48dca7f..9d5451e 100644
--- a/emacs/snippets/org-mode/heading
+++ b/emacs/snippets/org-mode/heading
@@ -2,8 +2,8 @@
# name: Heading
# key: *
# --
-*$1 ${2:TODO} $3
- ${1:$(make-string (length text) ?\ )} :PROPERTIES:
- ${1:$(make-string (length text) ?\ )} :CATEGORY: $4
- ${1:$(make-string (length text) ?\ )} :END:
- ${1:$(make-string (length text) ?\ )} $0 \ No newline at end of file
+${1:*} ${2:TODO} $3
+${1:$(make-string (length text) ?\ )} :PROPERTIES:
+${1:$(make-string (length text) ?\ )} :CATEGORY: $4
+${1:$(make-string (length text) ?\ )} :END:
+${1:$(make-string (length text) ?\ )} $0 \ No newline at end of file
diff --git a/emacs/snippets/python-mode/Makefile b/emacs/snippets/python-mode/Makefile
index 192657b..8e8b652 100644
--- a/emacs/snippets/python-mode/Makefile
+++ b/emacs/snippets/python-mode/Makefile
@@ -1,4 +1,4 @@
-DESTDIR:=$(DESTDIR)/python-mode
+SUBDIR=python-mode
objects=defm_empty form form_valid import_from permission_guard url
include ../../../dotfiles.mk
diff --git a/sbcl/.gitignore b/sbcl/.gitignore
new file mode 100644
index 0000000..bb16faa
--- /dev/null
+++ b/sbcl/.gitignore
@@ -0,0 +1 @@
+.sbclrc
diff --git a/sbcl/Makefile b/sbcl/Makefile
new file mode 100644
index 0000000..1be8c1a
--- /dev/null
+++ b/sbcl/Makefile
@@ -0,0 +1,8 @@
+objects=.sbclrc
+
+include ../dotfiles.mk
+
+.sbclrc: sbclrc.org
+ $(EMACS) -Q -batch \
+ -eval "(progn (require 'org) (require 'ob-tangle) \
+ (org-babel-tangle-file \"$^\"))"
diff --git a/sbcl/sbclrc.org b/sbcl/sbclrc.org
new file mode 100644
index 0000000..aaa4ee3
--- /dev/null
+++ b/sbcl/sbclrc.org
@@ -0,0 +1,36 @@
+#+TITLE: SBCL Init
+#+STARTUP: showall
+#+HTML_HEAD: <link href="http://ryuslash.org/bootstrap/css/bootstrap.min.css" type="text/css" rel="stylesheet" />
+#+PROPERTY: tangle .sbclrc
+#+OPTIONS: num:nil
+
+* Install quicklisp
+
+ This bit of code was generated by quicklisp in order to load its
+ initialization file at startup.
+
+ #+BEGIN_SRC lisp :padline no
+ ;;; The following lines added by ql:add-to-init-file:
+ #-quicklisp
+ (let ((quicklisp-init (merge-pathnames "quicklisp/setup.lisp"
+ (user-homedir-pathname))))
+ (when (probe-file quicklisp-init)
+ (load quicklisp-init)))
+ #+END_SRC
+
+* Install linedit
+
+ This Chunk of code installs [[http://common-lisp.net/project/linedit/][Linedit]], a readline-like module for the
+ SBCL REPL. Found thanks to [[http://irreal.org/blog/?p=1913][Irreal]]'s post on the matter. This snippet
+ first checks if it should even be enabled, my [[file:~/projects/dotfiles/emacs/init.org::*Set%20inferior%20lisp%20program%20to%20SBCL][Emacs init file]] file
+ tells SLIME to disable linedit.
+
+ #+BEGIN_SRC lisp
+ (if (member "--no-linedit" sb-ext:*posix-argv* :test 'equal)
+ (setf sb-ext:*posix-argv*
+ (remove "--no-linedit" sb-ext:*posix-argv* :test 'equal))
+ (when (interactive-stream-p *terminal-io*)
+ (require :sb-aclrepl)
+ (require :linedit)
+ (funcall (intern "INSTALL-REPL" :linedit) :wrap-current t)))
+ #+END_SRC