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 <nberthier@gmail.com> --- @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 <nberthier@gmail.com> --- @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 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 - 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=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 "") 'oni:raise-scratch) -(global-set-key (kbd "") 'oni:view-mail) -(global-set-key (kbd "") 'git-project-show-files) -(global-set-key (kbd "") 'ext:reload-buffer) -(global-set-key (kbd "") 'jabber-switch-to-roster-buffer) -(global-set-key (kbd "") 'magit-status) -(global-set-key (kbd "") '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 "+aethon/archive~B " "search everything" -macro index D "+aethon/trash" "move message to the trash" -macro index S "+aethon/spam" "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 "+arch/archive~B " "search everything" -macro index D "+arch/trash" "move message to the trash" -macro index S "+arch/spam" "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 "+gmail/archive~B " "search everything" -macro index D "+gmail/trash" "move message to the trash" -macro index S "+gmail/spam" "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 "+iactor/INBOX~B " "search everything" -macro index D "+iactor/Trash" "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 'urlview' '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 "!" "go to Inbox" -macro index Z "/usr/bin/offlineimap -q -o" "sync IMAP" -macro generic,index,pager \ca "abook" "launch abook" -macro index,pager A "abook --add-email" "add the sender address to abook" -macro generic,index,pager 1 "=ninthfloor/INBOX" "Show ninthfloor inbox" -macro generic,index,pager 2 "=gmail/INBOX" "Show gmail inbox" -macro generic,index,pager 3 "=arch/INBOX" "Show arch inbox" -macro generic,index,pager 4 "=aethon/INBOX" "Show aethon inbox" -macro generic,index,pager 5 "=ryuslash.org/INBOX" "Show ryuslash.org inbox" -macro generic,index,pager 6 "=iactor/INBOX" "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 "+ninthfloor/INBOX~B " "search everything" -macro index D "+ninthfloor/Trash" "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 "+ryuslash.org/INBOX~B " "search everything" -macro index D "+ninthfloor/Trash" "move message to the trash" diff --git a/.mutt/sig b/.mutt/sig deleted file mode 100644 index e69de29..0000000 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 : -map -b -m base - -map -b -m c -map -b -m c - -map -b -m i -map -b -m i - -map -b -m c,i -map -b -m c,i -map -b -m c,i -map -b -m c,i -map -b -m c,i -map -b -m c,i - -map -b gg -map -b > G -map -b -map -b y - -map -b u -map -b 0 -map -b -map -b $ -map -b -map -b gT -map -b gt -map -b 2j -map -b 2k -map -b ? -map -b / -map -b -map -b Y -map -b P - -map -b ~ ~ -map -b e gF -map -b g gf -map -b h gh -map -b i gi -map -b k d -map -b m ;c -map -b p ;i -map -b r r -map -b R R -map -b u gu - -map -b b -map -b ZZ -map -b t -map -b :restart -map -b gU -map -b O - -map -map -map -map -map -map : -map ~ -map / -map ? -map $ -map 0 -map b -map B -map d -map F -map gg -map gh -map gi -map gU -map G -map i -map j -map k -map o -map O -map p -map P -map q -map r -map t -map u -map w -map y -map Y -map ZZ 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)) +;; (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 *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. +(tool-bar-mode -1) -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. (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 "") '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. -(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 '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)) -(eval-after-load "jabber" '(oni:jabber-init)) +(add-hook 'eshell-mode-hook 'buffer-disable-undo) + +(setq-default bidi-paragraph-direction 'left-to-right) + +(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) + +(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 "") '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 "") 'sp-forward-barf-sexp) + (local-set-key (kbd "") '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 "") 'oni:raise-scratch) (global-set-key (kbd "") '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 "") '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: +#+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 ~ + 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 "") '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 "") '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 "") 'sp-forward-barf-sexp) + (local-set-key (kbd "") '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 "") 'oni:raise-scratch) + (global-set-key (kbd "") 'gnus) + (global-set-key (kbd "") 'git-project-show-files) + (global-set-key (kbd "") 'ext:reload-buffer) + (global-set-key (kbd "") 'jabber-switch-to-roster-buffer) + (global-set-key (kbd "") 'magit-status) + (global-set-key (kbd "") '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 "") 'oni:scroll-down-or-prev-page) + (global-set-key (kbd "") '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 "") #'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 "") #'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: +#+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