Jason Ryan avatar Jason Ryan committed 1708381

PKGBUILD commits

Comments (0)

Files changed (11)

Build/dmenu/PKGBUILD

+# Patched for xft support
+
+pkgname=dmenu
+pkgver=4.5
+pkgrel=3
+pkgdesc="A generic menu for X"
+url="http://tools.suckless.org/dmenu/"
+arch=('i686' 'x86_64')
+groups=('modified')
+license=('MIT')
+depends=('sh' 'libxinerama' 'libxft')
+source=(http://dl.suckless.org/tools/$pkgname-$pkgver.tar.gz
+http://tools.suckless.org/dmenu/patches/$pkgname-$pkgver-xft.diff)
+md5sums=('9c46169ed703732ec52ed946c27d84b4'
+         'd448ec9120718b0aedbdb338f4fa69ba')
+
+build(){
+  cd $srcdir/$pkgname-$pkgver
+  patch -p1 < ../$pkgname-$pkgver-xft.diff
+  sed -i 's:-I/usr/local/include/freetype2:-I/usr/include/freetype2:' config.mk
+  
+  make \
+    X11INC=/usr/include/X11 \
+    X11LIB=/usr/lib/X11 
+}
+
+package() {
+  cd $srcdir/$pkgname-$pkgver
+  make PREFIX=/usr DESTDIR=$pkgdir install
+  install -m644 -D LICENSE $pkgdir/usr/share/licenses/$pkgname/LICENSE
+}

Build/ruby-build-git/PKGBUILD

+# Maintainer: jason ryan <jasonwryan@gmail.com>
+# Contributor: megadriver <megadriver at gmx dot com>
+# Contributor: Vasil Yonkov <bustervill at gmail dot com>
+# Contributor: Guten Ye <ywzhaifei [at] gmail [dot] com>
+
+pkgname=ruby-build-git
+pkgver=20130501_9f8d533
+pkgrel=1
+pkgdesc="Compile and install Ruby"
+arch=('any')
+url="http://github.com/sstephenson/ruby-build"
+license=("MIT")
+makedepends=('git')
+provides=('ruby-build')
+conflicts=('ruby-build')
+_gitname="ruby-build"
+source=("git://github.com/sstephenson/ruby-build.git")
+sha1sums=('SKIP')
+
+pkgver() {
+    cd "$srcdir"/"$_gitname"
+    printf '%s\n' "$(awk '{field = $NF}; END {print field}'\
+        <(git log --grep=^ruby-build -1))_$(awk -F- '{print $NF}'\
+        <(git describe --always))"
+}
+
+package() {
+  cd "$srcdir"/"$_gitname"
+
+  mkdir -p "$pkgdir"/usr/bin
+  mkdir -p "$pkgdir"/usr/share/ruby-build
+
+  cp bin/* "$pkgdir"/usr/bin
+  cp share/ruby-build/* "$pkgdir"/usr/share/ruby-build
+  install -D -m644 LICENSE "$pkgdir"/usr/share/licenses/"$_gitname"/LICENSE
+}

Build/slock/PKGBUILD

+# $Id: PKGBUILD 78848 2012-10-25 20:30:11Z spupykin $
+# Maintainer: Sergej Pupykin <pupykin.s+arch@gmail.com>
+# Contributor: Sebastian A. Liem <sebastian at liem dot se>
+
+pkgname=slock
+pkgver=1.1
+pkgrel=1
+pkgdesc="A simple screen locker for X"
+arch=('i686' 'x86_64')
+groups=('modified')
+url="http://tools.suckless.org/slock"
+license=('MIT')
+depends=('libxext')
+source=("http://dl.suckless.org/tools/$pkgname-$pkgver.tar.gz")
+md5sums=('e3b25abdfd54c81562de4d63d3565be7')
+
+build() {
+  cd "$srcdir/slock-$pkgver"
+  sed -i 's/-DCOLOR2=\\"\\#005577\\"/-DCOLOR2=\\"\\#302B54\\"/' config.mk
+  make X11INC=/usr/include/X11 X11LIB=/usr/lib/X11
+}
+
+package() {
+  cd "$srcdir/slock-$pkgver"
+  make PREFIX=/usr DESTDIR="$pkgdir" install
+  install -m644 -D LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
+}

Build/surfraw-git/PKGBUILD

+# Maintainer: jason ryan <jasonwryan@gmail.com>
+# Contributor: Andrew Kopplin <revrollic@gmail.com>
+
+pkgname=surfraw-git
+pkgver=2.2.8_gff6adcd
+pkgrel=1
+pkgdesc="Shell Users' Revolutionary Front Rage Against the Web"
+arch=('any')
+url="http://surfraw.alioth.debian.org/"
+license=('custom')
+depends=('perl')
+makedepends=('git')
+install=$pkgname.install
+provides=('surfraw')
+conflicts=('surfraw')
+backup=('etc/xdg/surfraw/conf' 'etc/xdg/surfraw/bookmarks')
+_gitname="surfraw"
+source=("$_gitname::git://git.debian.org/"$_gitname"/"$_gitname".git")
+sha1sums=('SKIP')
+
+pkgver() {
+    cd "$_gitname"
+    printf "%s\n" "$(awk '{field = $NF}; END {print field}'\
+        <(git log --grep=version -1))_$(awk -F- '{print $NF}'\
+        <(git describe --always))"
+}
+
+build() {
+    cd "$_gitname"
+    ./prebuild   
+    ./configure --prefix=/usr --sysconfdir=/etc --disable-opensearch
+    make
+}
+
+package() {
+    cd "$_gitname"
+    make DESTDIR="$pkgdir" install
+    # license
+    install -D -m644 COPYING "$pkgdir"/usr/share/licenses/"$_gitname"/COPYING 
+}

Build/tabbed/PKGBUILD

+# $Id: PKGBUILD 75438 2012-08-23 21:00:37Z lfleischer $
+# Maintainer: Lukas Fleischer <archlinux at cryptocrack dot de>
+# Contributor: totoloco <totoloco at gmx>
+
+pkgname=tabbed
+pkgver=0.4.1
+pkgrel=1
+pkgdesc='Simple generic tabbed fronted to xembed aware applications.'
+arch=('i686' 'x86_64')
+groups=('modified')
+url='http://tools.suckless.org/tabbed'
+license=('custom:MIT/X')
+depends=('libx11')
+install='tabbed.install'
+source=("http://dl.suckless.org/tools/${pkgname}-${pkgver}.tar.gz"
+        'config.h')
+md5sums=('6349b763f8a4d5e42d18245169fb136c'
+         '5aa6c1fdc7971b21363704391bea6e1b')
+
+build() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+
+  cp "${srcdir}/config.h" config.h
+
+  sed -i 's/CPPFLAGS =/CPPFLAGS +=/g' config.mk
+  sed -i 's/CFLAGS =/CFLAGS +=/g' config.mk
+  sed -i 's/LDFLAGS =/LDFLAGS +=/g' config.mk
+
+  make
+}
+
+package() {
+  cd "${srcdir}/${pkgname}-${pkgver}"
+
+  make PREFIX=/usr DESTDIR="${pkgdir}" install
+  install -Dm0644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
+}

Build/tabbed/tabs_on_right.patch

+diff --git a/tabbed.c.bak b/tabbed.c
+index b3c3c12..6f08ac6 100644
+--- a/tabbed.c.bak
++++ b/tabbed.c
+@@ -586,10 +592,23 @@ manage(Window w) {
+ 					XGrabKey(dpy, code, keys[i].mod | modifiers[j], w,
+ 						 True, GrabModeAsync, GrabModeAsync);
+ 		}
++
+ 		c = emallocz(sizeof *c);
+-		c->next = clients;
++		c->next = NULL;
+ 		c->win = w;
+-		clients = c;
++
++		Client *p;
++
++		if(clients) {
++			for(p = clients; p->next; p = p->next);
++			p->next = c;
++		} else {
++			clients = c;
++		}
++
++		for(p = clients; p; p = p->next)
++			fprintf(stderr, "Client: %s\n", p->name);
++
+ 		updatetitle(c);
+ 		drawbar();
+ 		XMapRaised(dpy, w);

Build/ttf-droid-monovar/PKGBUILD

+# Maintainer: Jason Ryan <jasonwryan at gmail dot com>
+# Contributor: Ignas Anikevicius <anikevicius at gmail dot com>
+
+pkgname=ttf-droid-monovar
+pkgver=1.0
+pkgrel=4
+pkgdesc="A monospacedfont created by Ascender Corporation with dotted and slashed zeros."
+url="http://www.cosmix.org/software/"
+license=('apache')
+depends=('fontconfig' 'xorg-font-utils')
+source=('http://www.cosmix.org/software/files/DroidSansMonoSlashed.zip'
+'http://www.cosmix.org/software/files/DroidSansMonoDotted.zip')
+install=ttf-droid-monovar.install
+arch=('any')
+md5sums=('4df780cb87f2931233123117feac5e2c'
+         '76a1c759e328ac15fd0d33ee9a4b3723')
+        
+package() {
+     cd "$srcdir"
+       install -d -m755 "$pkgdir"/usr/share/fonts/TTF
+       install -m 644 DroidSansMonoSlashed.ttf \
+               "$pkgdir"/usr/share/fonts/TTF/DroidSansMonoSlashed.ttf
+       install -m 644 DroidSansMonoDotted.ttf \
+               "$pkgdir"/usr/share/fonts/TTF/DroidSansMonoDotted.ttf
+}
+

Build/vimprobable2-git/PKGBUILD

+# Maintainer: jason ryan <jasonwryan@gmail.com>
+# Contributor: totoloco <totoloco en gmail>
+
+pkgname=vimprobable2-git
+pkgver=1.3.0_b451324
+pkgrel=1
+pkgdesc="WWW browser that behaves like the Vimperator plugin available for Mozilla Firefox. It is based on the WebKit engine (using GTK bindings). It is a fork of the currently abandoned vimpression (former webkitbrowser)."
+arch=('i686' 'x86_64')
+url="http://www.yllr.net/vimprobable/"
+license=('mit')
+depends=('libwebkit>=1.1.11 gtk2 libsoup')
+makedepends=('git')
+provides=('vimprobable2')
+conflicts=('vimprobable2')
+_gitname="vimprobable"
+_gitbranch="vimprobable2"
+source=("$_gitname::git://git.code.sf.net/p/$_gitname/code")
+md5sums=('SKIP')
+
+pkgver() {
+  cd "$_gitname"
+  printf '%s\n' "$(awk '/^ / {print $2}' <(git log --grep=version -1))_$(git describe --always)"
+}
+
+prepare() {
+  cd "$srcdir/$_gitname"
+  sed -i 's:LIBS = gtk+-2.0 webkit-1.0 libsoup-2.4:LIBS = gtk+-2.0 webkit-1.0 libsoup-2.4 javascriptcoregtk-1.0:' Makefile
+  if [[ -f "$SRCDEST"/config.h ]]; then
+      msg "Using your config.h" && cp "$SRCDEST"/config.h .
+  fi
+  if [[ -f "$SRCDEST"/keymap.h ]]; then
+      msg "Using your keymap.h" && cp "$SRCDEST"/keymap.h .
+  fi
+}
+
+build() {
+  cd "$srcdir/$_gitname"
+  make
+}
+
+package() {
+  cd "$srcdir/$_gitname"
+  make PREFIX=/usr MANDIR=/usr/share/man DESTDIR="$pkgdir" install
+  mkdir -p "$pkgdir"/usr/share/licenses/"$_gitbranch"
+  chmod 0755  "$pkgdir"/usr/share/licenses/"$_gitbranch"/
+  install -m 644 LICENSE "$pkgdir"/usr/share/licenses/"$_gitbranch"/LICENSE
+}

Build/vimprobable2-git/config.h

+/*
+    (c) 2009 by Leon Winter
+    (c) 2009-2012 by Hannes Schueller
+    (c) 2009-2010 by Matto Fransen
+    (c) 2010-2011 by Hans-Peter Deifel
+    (c) 2010-2011 by Thomas Adam
+    (c) 2011 by Albert Kim
+    (c) 2013 Daniel Carl
+    see LICENSE file
+*/
+
+/* Vimprobable version number */
+#define VERSION "1.3.0"
+#define INTERNAL_VERSION "Vimprobable2/"VERSION
+
+extern Client client;
+
+/* general settings */
+char startpage[MAX_SETTING_SIZE]        = "https://bbs.archlinux.org/";
+char useragent[MAX_SETTING_SIZE]        = "Vimprobable2/" VERSION;
+char acceptlanguage[MAX_SETTING_SIZE]   = "";
+static const gboolean enablePlugins     = TRUE; /* TRUE keeps plugins enabled */
+static const gboolean enableJava        = TRUE; /* FALSE disables Java applets */
+static const gboolean enablePagecache   = FALSE; /* TRUE turns on the page cache. */
+static gboolean escape_input_on_load    = TRUE; /* TRUE will disable automatic focusing of input fields via Javascript*/
+char temp_dir[MAX_SETTING_SIZE]         = "/tmp"; /* location of temporary files, default will be overridden if TEMPDIR is set */
+
+/* appearance */
+char statusbgcolor[MAX_SETTING_SIZE]    = "#222222";            /* background color for status bar */
+char statuscolor[MAX_SETTING_SIZE]      = "#696969";            /* color for status bar */
+char sslbgcolor[MAX_SETTING_SIZE]       = "#222222";            /* background color for status bar with SSL url */
+char sslinvalidbgcolor[MAX_SETTING_SIZE]= "#8A2F58";            /* background color for status bar with unverified SSL url */
+char sslcolor[MAX_SETTING_SIZE]         = "#53A6A6";            /* color for status bar with SSL url */
+
+                                        /*  normal,                 warning,                error       */
+static const char *urlboxfont[]         = { "Envy Code R 9",   "Droid Sans Mono Slashed 9",   "Droid Sans Mono Slashed 9"};
+static const char *urlboxcolor[]        = { "#CCCCCC",              "#CC99CC",              "#FFB6C1" };
+static const char *urlboxbgcolor[]      = { "#212121",              "#111111",              "#212121" };
+
+                                        /*  normal,                 error               */
+static const char *completionfont[]     = { "Envy Code R 9",   "Droid Sans Mono Slashed 9" };
+                                                                                        /* topborder color */
+static const char *completioncolor[]    = { "#899CA1",              "#BF4D80",              "#444444" };
+                                                                                        /* current row background */
+static const char *completionbgcolor[]  = { "#3D3D3D",              "#8C4665",              "#5C5C5C" };
+/* pango markup for prefix highliting:      opening,                closing             */
+#define             COMPLETION_TAG_OPEN     "<b>"
+#define             COMPLETION_TAG_CLOSE    "</b>"
+
+static const char statusfont[]          = "Envy Code R 9";   /* font for status bar */
+#define             ENABLE_HISTORY_INDICATOR
+#define             ENABLE_INCREMENTAL_SEARCH
+#define             ENABLE_GTK_PROGRESS_BAR
+#define             ENABLE_WGET_PROGRESS_BAR
+static const int progressbartick        = 20;
+static const char progressborderleft    = '[';
+static const char progressbartickchar   = '=';
+static const char progressbarcurrent    = '>';
+static const char progressbarspacer     = ' ';
+static const char progressborderright   = ']';
+
+/* external handlers:
+ * the handle (first string) contain what the handled links have to start with
+ * the handlers (second string) contain the external applications which should be called for this sort of link
+ *    %s can be used as a placeholder for the link argument after the handler
+ *    e.g.: "mailto:user@example.org
+ *       "handle" is "mailto:"
+ *       "%s" will translate to "user@example.org"
+ */
+static URIHandler uri_handlers[] = {
+    { "mailto:",          "urxvtc -e mutt %s" },
+    { "ftp://",           "urxvtc -e wget ftp://%s" },
+    { "vimprobableedit:", "urxvt -title scratchpad -geometry 86x24+40+60 -e vim %s" },
+};
+
+/* cookies */
+#define             ENABLE_COOKIE_SUPPORT
+#define             COOKIES_STORAGE_FILENAME    "%s/vimprobable/cookies", client.config.config_base
+#define             COOKIES_STORAGE_READONLY    FALSE   /* if TRUE new cookies will be lost if you quit */
+
+/* downloads directory */
+#define             DOWNLOADS_PATH              "%s", getenv("HOME")
+
+/* font size */
+#define             DEFAULT_FONT_SIZE           13
+
+/* user styles */
+#define             USER_STYLESHEET             "%s/vimprobable/style.css", client.config.config_base
+
+/* user javascript */
+#define             ENABLE_USER_SCRIPTFILE
+#define             USER_SCRIPTFILE             "%s/vimprobable/scripts.js", client.config.config_base
+
+/* ssl */
+static gboolean strict_ssl              = TRUE; /* FALSE will accept any SSL certificate at face value */
+static char ca_bundle[MAX_SETTING_SIZE] = "/etc/ssl/certs/ca-certificates.crt";
+
+/* proxy */
+static const gboolean use_proxy         = TRUE; /* TRUE if you're going to use a proxy (whose address
+                                                  is specified in http_proxy environment variable), false otherwise */
+/* scrolling */
+static unsigned int scrollstep          = 40;   /* cursor difference in pixel */
+static unsigned int pagingkeep          = 40;   /* pixels kept when paging */
+#define             DISABLE_SCROLLBAR
+
+/* searching */
+#define             ENABLE_MATCH_HIGHLITING
+static const int searchoptions          = CaseInsensitive | Wrapping;
+gboolean complete_case_sensitive        = TRUE;
+
+/* search engines */
+static Searchengine searchengines[] = {
+    { "d",         "https://duckduckgo.com/html/?q=%s&t=Vimprobable" },
+    { "g",         "http://www.google.com/search?hl=en&source=hp&ie=ISO-8859-l&q=%s" },
+    { "a",         "https://wiki.archlinux.org/index.php?title=Special%%3ASearch&search=%s&go=Go" },
+    { "w",         "https://secure.wikimedia.org/wikipedia/en/w/index.php?title=Special%%3ASearch&search=%s&go=Go" },
+    { "b",         "http://www.google.com/search?q=site:bbs.archlinux.org+%s" },
+    /* Hack to shorten urls */
+    { "B",         "http://api.bit.ly/v3/shorten?login=jasonwryan&apikey=R_b71a9d75eecaed78de197596f35126d9&longUrl=%s&format=txt" },
+};
+
+static char defaultsearch[MAX_SETTING_SIZE] = "d";
+
+/* command mapping */
+Command commands[COMMANDSIZE] = {
+    /* command,                                        function,         argument */
+    { "ba",                                            navigate,         {NavigationBack} },
+    { "back",                                          navigate,         {NavigationBack} },
+    { "ec",                                            script,           {Info} },
+    { "echo",                                          script,           {Info} },
+    { "echoe",                                         script,           {Error} },
+    { "echoerr",                                       script,           {Error} },
+    { "fw",                                            navigate,         {NavigationForward} },
+    { "fo",                                            navigate,         {NavigationForward} },
+    { "forward",                                       navigate,         {NavigationForward} },
+    { "javascript",                                    script,           {Silent} },
+    { "o",                                             open_arg,         {TargetCurrent} },
+    { "open",                                          open_arg,         {TargetCurrent} },
+    { "q",                                             quit,             {0} },
+    { "quit",                                          quit,             {0} },
+    { "re",                                            navigate,         {NavigationReload} },
+    { "re!",                                           navigate,         {NavigationForceReload} },
+    { "reload",                                        navigate,         {NavigationReload} },
+    { "reload!",                                       navigate,         {NavigationForceReload} },
+    { "qt",                                            search_tag,       {0} },
+    { "st",                                            navigate,         {NavigationCancel} },
+    { "stop",                                          navigate,         {NavigationCancel} },
+    { "t",                                             open_arg,         {TargetNew} },
+    { "tabopen",                                       open_arg,         {TargetNew} },
+    { "print",                                         print_frame,      {0} },
+    { "ha",                                            print_frame,      {0} },
+    { "bma",                                           bookmark,         {0} },
+    { "bookmark",                                      bookmark,         {0} },
+    { "source",                                        view_source,      {0} },
+    { "openeditor",                                    open_editor,      {0} },
+    { "set",                                           browser_settings, {0} },
+    { "map",                                           mappings,         {0} },
+    { "inspect",                                       open_inspector,   {0} },
+    { "jumpleft",                                      scroll,           {ScrollJumpTo   | DirectionLeft} },
+    { "jumpright",                                     scroll,           {ScrollJumpTo   | DirectionRight} },
+    { "jumptop",                                       scroll,           {ScrollJumpTo   | DirectionTop} },
+    { "jumpbottom",                                    scroll,           {ScrollJumpTo   | DirectionBottom} },
+    { "pageup",                                        scroll,           {ScrollMove     | DirectionTop      | UnitPage} },
+    { "pagedown",                                      scroll,           {ScrollMove     | DirectionBottom   | UnitPage} },
+    { "navigationback",                                navigate,         {NavigationBack} },
+    { "navigationforward",                             navigate,         {NavigationForward} },
+    { "scrollleft",                                    scroll,           {ScrollMove     | DirectionLeft     | UnitLine} },
+    { "scrollright",                                   scroll,           {ScrollMove     | DirectionRight    | UnitLine} },
+    { "scrollup",                                      scroll,           {ScrollMove     | DirectionTop      | UnitLine} },
+    { "scrolldown",                                    scroll,           {ScrollMove     | DirectionBottom   | UnitLine} },
+    { "zi",                                            zoom,             {ZoomIn         | ZoomText} },
+    { "zo",                                            zoom,             {ZoomOut        | ZoomText} },
+    { "pgzi",                                          zoom,             {ZoomIn         | ZoomFullContent} },
+    { "pgzo",                                          zoom,             {ZoomOut        | ZoomFullContent} },
+};
+
+/* mouse bindings
+   you can use MOUSE_BUTTON_1 to MOUSE_BUTTON_5
+*/
+static Mouse mouse[] = {
+    /* modmask,             modkey,         button,            function,        argument */
+    { 0,                    0,              MOUSE_BUTTON_2,    paste,           {TargetCurrent  | ClipboardPrimary  | ClipboardGTK, client.state.rememberedURI} },
+    { GDK_CONTROL_MASK,     0,              MOUSE_BUTTON_2,    paste,           {TargetNew  | ClipboardPrimary  | ClipboardGTK} },
+    { GDK_CONTROL_MASK,     0,              MOUSE_BUTTON_1,    open_remembered, {TargetNew} },
+};
+
+/* settings (arguments of :set command) */
+static Setting browsersettings[] = {
+    /* public name,      internal variable   webkit setting                 integer value?  boolean value?   colour value?   reload page? */
+    { "useragent",       useragent,          "user-agent",                  FALSE,          FALSE,           FALSE,          FALSE  },
+    { "scripts",         NULL,               "enable-scripts",              FALSE,          TRUE,            FALSE,          FALSE  },
+    { "plugins",         NULL,               "enable-plugins",              FALSE,          TRUE,            FALSE,          FALSE  },
+    { "pagecache",       NULL,               "enable-page-cache",           FALSE,          TRUE,            FALSE,          FALSE  },
+    { "java",            NULL,               "enable-java-applet",          FALSE,          TRUE,            FALSE,          FALSE  },
+    { "images",          NULL,               "auto-load-images",            FALSE,          TRUE,            FALSE,          FALSE  },
+    { "shrinkimages",    NULL,               "auto-shrink-images",          FALSE,          TRUE,            FALSE,          FALSE  },
+    { "cursivefont",     NULL,               "cursive-font-family",         FALSE,          FALSE,           FALSE,          FALSE  },
+    { "defaultencoding", NULL,               "default-encoding",            FALSE,          FALSE,           FALSE,          FALSE  },
+    { "defaultfont",     NULL,               "default-font-family",         FALSE,          FALSE,           FALSE,          FALSE  },
+    { "fontsize",        NULL,               "default-font-size",           TRUE,           FALSE,           FALSE,          FALSE  },
+    { "monofontsize",    NULL,               "default-monospace-font-size", TRUE,           FALSE,           FALSE,          FALSE  },
+    { "caret",           NULL,               "enable-caret-browsing",       FALSE,          TRUE,            FALSE,          FALSE  },
+    { "fantasyfont",     NULL,               "fantasy-font-family",         FALSE,          FALSE,           FALSE,          FALSE  },
+    { "minimumfontsize", NULL,               "minimum-font-size",           TRUE,           FALSE,           FALSE,          FALSE  },
+    { "monofont",        NULL,               "monospace-font-family",       FALSE,          FALSE,           FALSE,          FALSE  },
+    { "backgrounds",     NULL,               "print-backgrounds",           FALSE,          TRUE,            FALSE,          FALSE  },
+    { "sansfont",        NULL,               "sans-serif-font-family",      FALSE,          FALSE,           FALSE,          FALSE  },
+    { "seriffont",       NULL,               "serif-font-family",           FALSE,          FALSE,           FALSE,          FALSE  },
+    { "stylesheet",      NULL,               "user-stylesheet-uri",         FALSE,          FALSE,           FALSE,          FALSE  },
+    { "resizetextareas", NULL,               "resizable-text-areas",        FALSE,          TRUE,            FALSE,          FALSE  },
+    { "webinspector",    NULL,               "enable-developer-extras",     FALSE,          TRUE,            FALSE,          FALSE  },
+
+    { "homepage",        startpage,          "",                            FALSE,          FALSE,           FALSE,          FALSE  },
+    { "statusbgcolor",   statusbgcolor,      "",                            FALSE,          FALSE,           TRUE,           TRUE   },
+    { "statuscolor",     statuscolor,        "",                            FALSE,          FALSE,           TRUE,           TRUE   },
+    { "sslbgcolor",      sslbgcolor,         "",                            FALSE,          FALSE,           TRUE,           TRUE   },
+    { "sslcolor",        sslcolor,           "",                            FALSE,          FALSE,           TRUE,           TRUE   },
+    { "acceptlanguage",  acceptlanguage,     "",                            FALSE,          FALSE,           FALSE,          FALSE  },
+    { "defaultsearch",   defaultsearch,      "",                            FALSE,          FALSE,           FALSE,          FALSE  },
+    { "qmark",           NULL,               "",                            FALSE,          FALSE,           FALSE,          FALSE  },
+    { "proxy",           NULL,               "",                            FALSE,          TRUE,            FALSE,          FALSE  },
+    { "windowsize",      NULL,               "",                            FALSE,          FALSE,           FALSE,          FALSE  },
+    { "scrollbars",      NULL,               "",                            FALSE,          TRUE,            FALSE,          FALSE  },
+    { "statusbar",       NULL,               "",                            FALSE,          TRUE,            FALSE,          FALSE  },
+    { "inputbox",        NULL,               "",                            FALSE,          TRUE,            FALSE,          FALSE  },
+    { "completioncase",  NULL,               "",                            FALSE,          TRUE,            FALSE,          FALSE  },
+    { "escapeinput",     NULL,               "",                            FALSE,          TRUE,            FALSE,          FALSE  },
+    { "strictssl",       NULL,               "",                            FALSE,          TRUE,            FALSE,          FALSE  },
+    { "cabundle",        ca_bundle,          "",                            FALSE,          FALSE,           FALSE,          FALSE  },
+    { "tempdir",         temp_dir,           "",                            FALSE,          FALSE,           FALSE,          FALSE  },
+};

Build/vimprobable2-git/hinting.js

+/*
+    (c) 2009 by Leon Winter
+    (c) 2009, 2010 by Hannes Schueller
+    (c) 2010 by Hans-Peter Deifel
+    (c) 2011 by Daniel Carl
+    see LICENSE file
+*/
+function Hints() {
+    var config = {
+        maxAllowedHints: 500,
+        hintCss: "z-index:100000;font-family:monospace;font-size:12px;"
+               + "font-weight:normal;color:black;background-color:#CCC;"
+               + "padding:0px 1px;position:absolute;",
+        hintClass: "hinting_mode_hint",
+        hintClassFocus: "hinting_mode_hint_focus",
+        elemBackground: "none",
+        elemBackgroundFocus: "none",
+        elemColor: "none"
+    };
+
+    var hintContainer;
+    var currentFocusNum = 1;
+    var hints = [];
+    var mode;
+
+    this.createHints = function(inputText, hintMode)
+    {
+        if (hintMode) {
+            mode = hintMode;
+        }
+
+        var topwin = window;
+        var top_height = topwin.innerHeight;
+        var top_width = topwin.innerWidth;
+        var xpath_expr;
+
+        var hintCount = 0;
+        this.clearHints();
+
+        function helper (win, offsetX, offsetY) {
+            var doc = win.document;
+
+            var win_height = win.height;
+            var win_width = win.width;
+
+            /* Bounds */
+            var minX = offsetX < 0 ? -offsetX : 0;
+            var minY = offsetY < 0 ? -offsetY : 0;
+            var maxX = offsetX + win_width > top_width ? top_width - offsetX : top_width;
+            var maxY = offsetY + win_height > top_height ? top_height - offsetY : top_height;
+
+            var scrollX = win.scrollX;
+            var scrollY = win.scrollY;
+
+            hintContainer = doc.createElement("div");
+            hintContainer.id = "hint_container";
+
+            xpath_expr = _getXpathXpression(inputText);
+
+            var res = doc.evaluate(xpath_expr, doc,
+                function (p) {
+                    return "http://www.w3.org/1999/xhtml";
+                }, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+
+            /* generate basic hint element which will be cloned and updated later */
+            var hintSpan = doc.createElement("span");
+            hintSpan.setAttribute("class", config.hintClass);
+            hintSpan.style.cssText = config.hintCss;
+
+            /* due to the different XPath result type, we will need two counter variables */
+            var rect, elem, text, node, show_text;
+            for (var i = 0; i < res.snapshotLength; i++) {
+                if (hintCount >= config.maxAllowedHints) {
+                    break;
+                }
+
+                elem = res.snapshotItem(i);
+                rect = elem.getBoundingClientRect();
+                if (!rect || rect.left > maxX || rect.right < minX || rect.top > maxY || rect.bottom < minY) {
+                    continue;
+                }
+
+                var style = topwin.getComputedStyle(elem, "");
+                if (style.display == "none" || style.visibility != "visible") {
+                    continue;
+                }
+
+                var leftpos = Math.max((rect.left + scrollX), scrollX);
+                var toppos = Math.max((rect.top + scrollY), scrollY);
+
+                /* making this block DOM compliant */
+                var hint = hintSpan.cloneNode(false);
+                hint.setAttribute("id", "vimprobablehint" + hintCount);
+                hint.style.left = leftpos + "px";
+                hint.style.top =  toppos + "px";
+                text = doc.createTextNode(hintCount + 1);
+                hint.appendChild(text);
+
+                hintContainer.appendChild(hint);
+                hintCount++;
+                hints.push({
+                    elem:       elem,
+                    number:     hintCount,
+                    span:       hint,
+                    background: elem.style.background,
+                    foreground: elem.style.color}
+                );
+
+                /* make the link black to ensure it's readable */
+                elem.style.color = config.elemColor;
+                elem.style.background = config.elemBackground;
+            }
+
+            doc.documentElement.appendChild(hintContainer);
+
+            /* recurse into any iframe or frame element */
+            var frameTags = ["frame","iframe"];
+            for (var f = 0; f < frameTags.length; ++f) {
+                var frames = doc.getElementsByTagName(frameTags[f]);
+                for (i = 0, nframes = frames.length; i < nframes; ++i) {
+                    elem = frames[i];
+                    rect = elem.getBoundingClientRect();
+                    if (!elem.contentWindow || !rect || rect.left > maxX || rect.right < minX || rect.top > maxY || rect.bottom < minY) {
+                        continue;
+                    }
+                    helper(elem.contentWindow, offsetX + rect.left, offsetY + rect.top);
+                }
+            }
+        }
+
+        helper(topwin, 0, 0);
+
+        this.clearFocus();
+        this.focusHint(1);
+        if (hintCount == 1) {
+            /* just one hinted element - might as well follow it */
+            return this.fire(1);
+        }
+    };
+
+    /* set focus on hint with given number */
+    this.focusHint = function(n)
+    {
+        /* reset previous focused hint */
+        var hint = _getHintByNumber(currentFocusNum);
+        if (hint !== null) {
+            hint.elem.className = hint.elem.className.replace(config.hintClassFocus, config.hintClass);
+            hint.elem.style.background = config.elemBackground;
+        }
+
+        currentFocusNum = n;
+
+        /* mark new hint as focused */
+        hint = _getHintByNumber(currentFocusNum);
+        if (hint !== null) {
+            hint.elem.className = hint.elem.className.replace(config.hintClass, config.hintClassFocus);
+            hint.elem.style.background = config.elemBackgroundFocus;
+        }
+    };
+
+    /* set focus to next avaiable hint */
+    this.focusNextHint = function()
+    {
+        var index = _getHintIdByNumber(currentFocusNum);
+
+        if (typeof(hints[index + 1]) != "undefined") {
+            this.focusHint(hints[index + 1].number);
+        } else {
+            this.focusHint(hints[0].number);
+        }
+    };
+
+    /* set focus to previous avaiable hint */
+    this.focusPreviousHint = function()
+    {
+        var index = _getHintIdByNumber(currentFocusNum);
+        if (index !== 0 && typeof(hints[index - 1].number) != "undefined") {
+            this.focusHint(hints[index - 1].number);
+        } else {
+            this.focusHint(hints[hints.length - 1].number);
+        }
+    };
+
+    /* filters hints matching given number */
+    this.updateHints = function(n)
+    {
+        if (n === 0) {
+            return this.createHints();
+        }
+        /* remove none matching hints */
+        var i, remove = [];
+        for (i = 0; i < hints.length; ++i) {
+            var hint = hints[i];
+            if (0 !== hint.number.toString().indexOf(n.toString())) {
+                remove.push(hint.number);
+            }
+        }
+
+        for (i = 0; i < remove.length; ++i) {
+            _removeHint(remove[i]);
+        }
+
+        if (hints.length === 1) {
+            return this.fire(hints[0].number);
+        } else {
+            return this.focusHint(n);
+        }
+    };
+
+    this.clearFocus = function()
+    {
+        if (document.activeElement && document.activeElement.blur) {
+            document.activeElement.blur();
+        }
+    };
+
+    /* remove all hints and set previous style to them */
+    this.clearHints = function()
+    {
+        if (hints.length === 0) {
+            return;
+        }
+        for (var i = 0; i < hints.length; ++i) {
+            var hint = hints[i];
+            if (typeof(hint.elem) != "undefined") {
+                hint.elem.style.background = hint.background;
+                hint.elem.style.color = hint.foreground;
+                hint.span.parentNode.removeChild(hint.span);
+            }
+        }
+        hints = [];
+        hintContainer.parentNode.removeChild(hintContainer);
+        window.onkeyup = null;
+    };
+
+    /* fires the modeevent on hint with given number */
+    this.fire = function(n)
+    {
+        var doc, result;
+        n = n ? n : currentFocusNum;
+        var hint = _getHintByNumber(n);
+        if (typeof(hint.elem) == "undefined") {
+            return "done;";
+        }
+
+        var el = hint.elem;
+        var tag = el.nodeName.toLowerCase();
+
+        this.clearHints();
+
+        if (tag == "iframe" || tag == "frame" || tag == "textarea" || tag == "input" && (el.type == "text" || el.type == "password" || el.type == "checkbox" || el.type == "radio") || tag == "select") {
+            el.focus();
+            if (tag == "input" || tag == "textarea") {
+                return "insert;";
+            }
+            return "done;";
+        }
+
+        switch (mode)
+        {
+            case "f": result = _open(el); break;
+            case "F": result = _openNewWindow(el); break;
+            case "i": result = "open;" + _getElemtSource(el); break;
+            case "I": result = "tabopen;" + _getElemtSource(el); break;
+            case "s": result = "save;" + _getElemtSource(el); break;
+            case "y": result = "yank;" + _getElemtSource(el); break;
+            case "O": result = "colon;" + _getElemtSource(el); break;
+            default:  result = _getElemtSource(el); break;
+        }
+
+        return result;
+    };
+
+    this.focusInput = function()
+    {
+        if (document.getElementsByTagName("body")[0] === null || typeof(document.getElementsByTagName("body")[0]) != "object") {
+            return;
+        }
+
+        /* prefixing html: will result in namespace error */
+        var hinttags = "//input[@type='text'] | //input[@type='password'] | //textarea";
+        var r = document.evaluate(hinttags, document,
+            function(p) {
+                return "http://www.w3.org/1999/xhtml";
+            }, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
+        var i;
+        var j = 0;
+        var k = 0;
+        var first = null;
+        var tag;
+        for (i = 0; i < r.snapshotLength; i++) {
+            var elem = r.snapshotItem(i);
+            if (k === 0) {
+                if (elem.style.display != "none" && elem.style.visibility != "hidden") {
+                    first = elem;
+                } else {
+                    k--;
+                }
+            }
+            if (j === 1 && elem.style.display != "none" && elem.style.visibility != "hidden") {
+                elem.focus();
+                return "insert;";
+            }
+            if (elem == document.activeElement) {
+                j = 1;
+            }
+            k++;
+        }
+        /* no appropriate field found focused - focus the first one */
+        if (j === 0 && first !== null) {
+            first.focus();
+            return "insert;";
+        }
+    };
+
+    /* retrieves text content fro given element */
+    function _getTextFromElement(el)
+    {
+        if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {
+            text = el.value;
+        } else if (el instanceof HTMLSelectElement) {
+            if (el.selectedIndex >= 0) {
+                text = el.item(el.selectedIndex).text;
+            } else{
+                text = "";
+            }
+        } else {
+            text = el.textContent;
+        }
+        return text.toLowerCase();
+    }
+
+    /* retrieves the hint for given hint number */
+    function _getHintByNumber(n)
+    {
+        var index = _getHintIdByNumber(n);
+        if (index !== null) {
+            return hints[index];
+        }
+        return null;
+    }
+
+    /* retrieves the id of hint with given number */
+    function _getHintIdByNumber(n)
+    {
+        for (var i = 0; i < hints.length; ++i) {
+            var hint = hints[i];
+            if (hint.number === n) {
+                return i;
+            }
+        }
+        return null;
+    }
+
+    /* removes hint with given number from hints array */
+    function _removeHint(n)
+    {
+        var index = _getHintIdByNumber(n);
+        if (index === null) {
+            return;
+        }
+        var hint = hints[index];
+        if (hint.number === n) {
+            hint.elem.style.background = hint.background;
+            hint.elem.style.color = hint.foreground;
+            hint.span.parentNode.removeChild(hint.span);
+
+            /* remove hints from all hints */
+            hints.splice(index, 1);
+        }
+    }
+
+    /* opens given element */
+    function _open(elem)
+    {
+        if (elem.target == "_blank") {
+            elem.removeAttribute("target");
+        }
+        _clickElement(elem);
+        return "done;";
+    }
+
+    /* opens given element into new window */
+    function _openNewWindow(elem)
+    {
+        var oldTarget = elem.target;
+
+        /* set target to open in new window */
+        elem.target = "_blank";
+        _clickElement(elem);
+        elem.target = oldTarget;
+
+        return "done;";
+    }
+    
+    /* fire moudedown and click event on given element */
+    function _clickElement(elem)
+    {
+        doc = elem.ownerDocument;
+        view = elem.contentWindow;
+
+        var evObj = doc.createEvent("MouseEvents");
+        evObj.initMouseEvent("mousedown", true, true, view, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, null);
+        elem.dispatchEvent(evObj);
+
+        evObj = doc.createEvent("MouseEvents");
+        evObj.initMouseEvent("click", true, true, view, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, null);
+        elem.dispatchEvent(evObj);
+    }
+
+    /* retrieves the url of given element */
+    function _getElemtSource(elem)
+    {
+        var url = elem.href || elem.src;
+        return url;
+    }
+
+    /* retrieves the xpath expression according to mode */
+    function _getXpathXpression(text)
+    {
+        var expr;
+        if (typeof(text) == "undefined") {
+            text = "";
+        }
+        switch (mode) {
+            case "f":
+            case "F":
+                if (text === "") {
+                    expr = "//*[@onclick or @onmouseover or @onmousedown or @onmouseup or @oncommand or @class='lk' or @role='link' or @href] | //input[not(@type='hidden')] | //a[href] | //area | //textarea | //button | //select";
+                } else {
+                    expr = "//*[(@onclick or @onmouseover or @onmousedown or @onmouseup or @oncommand or @class='lk' or @role='link' or @href) and contains(., '" + text + "')] | //input[not(@type='hidden') and contains(., '" + text + "')] | //a[@href and contains(., '" + text + "')] | //area[contains(., '" + text + "')] |  //textarea[contains(., '" + text + "')] | //button[contains(@value, '" + text + "')] | //select[contains(., '" + text + "')]";
+                }
+                break;
+            case "i":
+            case "I":
+                if (text === "") {
+                    expr = "//img[@src]";
+                } else {
+                    expr = "//img[@src and contains(., '" + text + "')]";
+                }
+                break;
+            default:
+                if (text === "") {
+                    expr = "//*[@role='link' or @href] | //a[href] | //area | //img[not(ancestor::a)]";
+                } else {
+                    expr = "//*[(@role='link' or @href) and contains(., '" + text + "')] | //a[@href and contains(., '" + text + "')] | //area[contains(., '" + text + "')] | //img[not(ancestor::a) and contains(., '" + text + "')]";
+                }
+                break;
+        }
+        return expr;
+    }
+};
+hints = new Hints();

Build/vimprobable2-git/keymap.h

+/*
+    (c) 2009 by Leon Winter
+    (c) 2009-2011 by Hannes Schueller
+    (c) 2009-2010 by Matto Fransen
+    (c) 2010-2011 by Hans-Peter Deifel
+    (c) 2010-2011 by Thomas Adam
+    (c) 2011 by Albert Kim
+    see LICENSE file
+*/
+#ifndef _KEYMAP
+
+#define _KEYMAP
+
+/* key bindings for normal mode
+    Note: GDK_VoidSymbol is a wildcard so it matches on every modkey
+*/
+Key keys[] = {
+    /* modmask,             modkey,         key,            function,   argument */
+    { 0,                    GDK_q,          GDK_1,          quickmark,  { .s = "1" } },
+    { 0,                    GDK_q,          GDK_2,          quickmark,  { .s = "2"  } },
+    { 0,                    GDK_q,          GDK_3,          quickmark,  { .s = "3" } },
+    { 0,                    GDK_q,          GDK_4,          quickmark,  { .s = "4" } },
+    { 0,                    GDK_q,          GDK_5,          quickmark,  { .s = "5" } },
+    { 0,                    GDK_q,          GDK_6,          quickmark,  { .s = "6" } },
+    { 0,                    GDK_q,          GDK_7,          quickmark,  { .s = "7" } },
+    { 0,                    GDK_q,          GDK_8,          quickmark,  { .s = "8" } },
+    { 0,                    GDK_q,          GDK_9,          quickmark,  { .s = "9" } },
+    { 0,                    0,              GDK_0,          scroll,     {ScrollJumpTo   | DirectionLeft} },
+    { 0,                    0,              GDK_dollar,     scroll,     {ScrollJumpTo   | DirectionRight} },
+    { 0,                    GDK_g,          GDK_g,          scroll,     {ScrollJumpTo   | DirectionTop} },
+    { 0,                    0,              GDK_G,          scroll,     {ScrollJumpTo   | DirectionBottom} },
+    { 0,                    0,              GDK_h,          scroll,     {ScrollMove     | DirectionLeft     | UnitLine} },
+    { 0,                    0,              GDK_j,          scroll,     {ScrollMove     | DirectionBottom   | UnitLine} },
+    { 0,                    0,              GDK_k,          scroll,     {ScrollMove     | DirectionTop      | UnitLine} },
+    { 0,                    0,              GDK_l,          scroll,     {ScrollMove     | DirectionRight    | UnitLine} },
+    { 0,                    0,              GDK_space,      scroll,     {ScrollMove     | DirectionBottom   | UnitPage} },
+    { GDK_SHIFT_MASK,       0,              GDK_space,      scroll,     {ScrollMove     | DirectionTop      | UnitPage} },
+    { GDK_CONTROL_MASK,     0,              GDK_b,          scroll,     {ScrollMove     | DirectionTop      | UnitPage} },
+    { GDK_CONTROL_MASK,     0,              GDK_f,          scroll,     {ScrollMove     | DirectionBottom   | UnitPage} },
+    { GDK_CONTROL_MASK,     0,              GDK_d,          scroll,     {ScrollMove     | DirectionBottom   | UnitBuffer} },
+    { GDK_CONTROL_MASK,     0,              GDK_u,          scroll,     {ScrollMove     | DirectionTop      | UnitBuffer} },
+    { GDK_CONTROL_MASK,     0,              GDK_e,          scroll,     {ScrollMove     | DirectionBottom   | UnitLine} },
+    { GDK_CONTROL_MASK,     0,              GDK_y,          scroll,     {ScrollMove     | DirectionTop      | UnitLine} },
+
+    { 0,                    GDK_g,          GDK_t,          fake_key_event,   { .s = "l", .i = ShiftMask + ControlMask   } },
+    { 0,                    GDK_g,          GDK_T,          fake_key_event,   { .s = "h", .i = ShiftMask + ControlMask  } },
+    { 0,                    GDK_g,          GDK_1,          fake_key_event,   { .s = "1", .i = ControlMask   } },
+    { 0,                    GDK_g,          GDK_2,          fake_key_event,   { .s = "2", .i = ControlMask   } },
+    { 0,                    GDK_g,          GDK_3,          fake_key_event,   { .s = "3", .i = ControlMask   } },
+    { 0,                    GDK_g,          GDK_4,          fake_key_event,   { .s = "4", .i = ControlMask   } },
+    { 0,                    GDK_g,          GDK_5,          fake_key_event,   { .s = "5", .i = ControlMask   } },
+    { 0,                    GDK_g,          GDK_6,          fake_key_event,   { .s = "6", .i = ControlMask   } },
+    { 0,                    GDK_g,          GDK_7,          fake_key_event,   { .s = "7", .i = ControlMask   } },
+    { 0,                    GDK_g,          GDK_8,          fake_key_event,   { .s = "8", .i = ControlMask   } },
+    { 0,                    GDK_g,          GDK_9,          fake_key_event,   { .s = "9", .i = ControlMask   } },
+    { 0,                    GDK_g,          GDK_0,          fake_key_event,   { .s = "0", .i = ControlMask   } },
+
+    { GDK_CONTROL_MASK,     0,              GDK_i,          navigate,   {NavigationBack} },
+    { GDK_CONTROL_MASK,     0,              GDK_o,          navigate,   {NavigationForward} },
+    { 0,                    0,              GDK_b,          navigate,   {NavigationBack} },
+    { 0,                    0,              GDK_H,          navigate,   {NavigationBack} },
+    { 0,                    0,              GDK_m,          navigate,   {NavigationForward} },
+    { 0,                    0,              GDK_L,          navigate,   {NavigationForward} },
+    { 0,                    0,              GDK_r,          navigate,   {NavigationReload} },
+    { 0,                    0,              GDK_R,          navigate,   {NavigationForceReload} },
+    { GDK_CONTROL_MASK,     0,              GDK_s,          navigate,   {NavigationCancel} },
+
+    { 0,                    0,              GDK_plus,       zoom,       {ZoomIn         | ZoomText} },
+    { 0,                    0,              GDK_minus,      zoom,       {ZoomOut        | ZoomText} },
+    { 0,                    0,              GDK_KP_Add,     zoom,       {ZoomIn         | ZoomText} },
+    { 0,                    0,              GDK_KP_Subtract,zoom,       {ZoomOut        | ZoomText} },
+    { 0,                    GDK_z,          GDK_i,          zoom,       {ZoomIn         | ZoomText} },
+    { 0,                    GDK_z,          GDK_o,          zoom,       {ZoomOut        | ZoomText} },
+    { 0,                    GDK_z,          GDK_z,          zoom,       {ZoomReset      | ZoomText} },
+    { 0,                    GDK_z,          GDK_I,          zoom,       {ZoomIn         | ZoomFullContent} },
+    { 0,                    GDK_z,          GDK_O,          zoom,       {ZoomOut        | ZoomFullContent} },
+    { 0,                    GDK_z,          GDK_Z,          zoom,       {ZoomReset      | ZoomFullContent} },
+
+    { 0,                    0,              GDK_y,          yank,       {SourceURL      | ClipboardPrimary  | ClipboardGTK} },
+    { 0,                    0,              GDK_Y,          yank,       {SourceSelection| ClipboardPrimary  | ClipboardGTK} },
+
+    { 0,                    GDK_g,          GDK_u,          descend,    {NthSubdir} },
+    { 0,                    GDK_g,          GDK_U,          descend,    {Rootdir} },
+
+    { 0,                    GDK_g,          GDK_h,          open_arg,   {TargetCurrent, startpage} },
+    { 0,                    GDK_g,          GDK_H,          open_arg,   {TargetNew,     startpage} },
+
+    { 0,                    0,              GDK_p,          paste,      {TargetCurrent  | ClipboardPrimary  | ClipboardGTK} },
+    { 0,                    0,              GDK_P,          paste,      {TargetNew      | ClipboardPrimary  | ClipboardGTK} },
+
+    { GDK_CONTROL_MASK,     0,              GDK_a,          number,     {Increment} },
+    { GDK_CONTROL_MASK,     0,              GDK_x,          number,     {Decrement} },
+
+    { 0,                    0,              GDK_n,          search,     {DirectionNext      | CaseInsensitive   | Wrapping} },
+    { 0,                    0,              GDK_N,          search,     {DirectionPrev      | CaseInsensitive   | Wrapping} },
+
+    { 0,                    0,              GDK_colon,      input,      {.s = ":" } },
+    { 0,                    0,              GDK_o,          input,      {.s = ":open "} },
+    { 0,                    0,              GDK_O,          input,      {.s = ":open ", .i = InsertCurrentURL} },
+    { 0,                    0,              GDK_t,          input,      {.s = ":tabopen "} },
+    { 0,                    0,              GDK_T,          input,      {.s = ":tabopen ", .i = InsertCurrentURL} },
+    { 0,                    0,              GDK_slash,      input,      {.s = "/"} },
+    { 0,                    0,              GDK_KP_Divide,  input,      {.s = "/"} },
+    { 0,                    0,              GDK_question,   input,      {.s = "?"} },
+
+    { 0,                    0,              GDK_period,     input,      {.s = "."} },
+    { 0,                    0,              GDK_comma,      input,      {.s = ","} },
+    { 0,                    GDK_semicolon,  GDK_i,          input,      {.s = ";i"} },
+    { 0,                    GDK_semicolon,  GDK_s,          input,      {.s = ";s"} },
+    { 0,                    GDK_semicolon,  GDK_y,          input,      {.s = ";y"} },
+    { 0,                    GDK_semicolon,  GDK_o,          input,      {.s = ";o"} },
+    { 0,                    GDK_semicolon,  GDK_t,          input,      {.s = ";t"} },
+    { 0,                    GDK_semicolon,  GDK_w,          input,      {.s = ";w"} },
+    { 0,                    GDK_semicolon,  GDK_I,          input,      {.s = ";I"} },
+    { 0,                    GDK_semicolon,  GDK_O,          input,      {.s = ";O"} },
+    { 0,                    GDK_semicolon,  GDK_T,          input,      {.s = ";T"} },
+    { 0,                    GDK_semicolon,  GDK_W,          input,      {.s = ";W"} },
+
+    /* this needs to be a binding using CTRL for obvious reasons */
+    { GDK_CONTROL_MASK,     0,              GDK_t,          open_editor,{} },
+
+    { 0,                    GDK_VoidSymbol, GDK_Escape,     set,        {ModeNormal} },
+    { GDK_CONTROL_MASK,     GDK_VoidSymbol, GDK_bracketleft,set,        {ModeNormal} },
+    { GDK_CONTROL_MASK,     0,              GDK_p,          set,        {ModePassThrough} },
+    { GDK_CONTROL_MASK,     0,              GDK_v,          set,        {ModeSendKey} },
+    { 0,                    0,              GDK_f,          input,      {.s = "."} },
+    { 0,                    0,              GDK_F,          input,      {.s = ","} },
+
+    { 0,                    GDK_g,          GDK_i,          focus_input,{} },
+    { 0,                    0,              GDK_u,          revive,     {} },
+
+        /* custom commands */
+    { 0,                    GDK_g,          GDK_b,          input,      {.s = ":tabopen http://bitbucket.jasonwryan.com" } },
+    { 0,                    GDK_g,          GDK_e,          input,      {.s = ":tabopen https://wiki.archlinux.org/index.php/Forum_Etiquette" } },
+    { 0,                    GDK_g,          GDK_f,          input,      {.s = ":tabopen http://flickr.jasonwryan.com" } },
+    { 0,                    GDK_g,          GDK_j,          input,      {.s = ":tabopen http://jasonwryan.com" } },
+    { 0,                    GDK_g,          GDK_p,          input,      {.s = ":tabopen http://127.0.0.1:4000" } },
+    { 0,                    GDK_g,          GDK_r,          input,      {.s = ":tabopen http://newsblur.com" } },
+    { 0,                    GDK_g,          GDK_s,          input,      {.s = ":tabopen http://unix.stackexchange.com" } },
+
+    { 0,                    0,              GDK_d,          quit,       {0} },
+	/* leave this last line as last */
+    { 0,                    0,              0,              0,          {0} },
+};
+
+#endif
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.