diff --git a/.Xdefaults b/.Xdefaults index 63bbbd6..983cb5d 100644 --- a/.Xdefaults +++ b/.Xdefaults @@ -1,22 +1,29 @@ Xft.antialias: true URxvt*scrollBar: false -URxvt*background: rgba:0000/0000/0000/aaaa +URxvt*background: rgba:0000/0000/0000/cccc +!URxvt*background: rgba:1111/1111/1111/dddd URxvt*depth: 32 URxvt*foreground: #dddddd -#URxvt*transparent: true +!URxvt*foreground: #c3c6c8 +!URxvt*transparent: true URxvt*transparent: false -#URxvt*fading: 2% -#URxvt*shading: 30 -#URxvt*fadeColor: grey +!URxvt*fading: 2% +!URxvt*shading: 30 +!URxvt*fadeColor: grey URxvt*buffered: true URxvt*cursorColor: green +!URxvt*cursorColor: #007998 !URxvt*font: xft:Terminus:pixelsize=11,xft:IPAGothic:antialias=true URxvt*font: 6x13,xft:IPAGothic:antialias=true !URxvt*perl-ext-common: default +!URxvt*color1: #007998 +!URxvt*color9: #228bba URxvt.perl-ext-common: default,matcher URxvt*urlLauncher: urxvt-to-uzbl.sh URxvt.colorUL: #cc0000 +URxvt.searchable-scrollback: CM-S +!URxvt.colorUL: #007998 !URxvt.borderLess:True !URxvt.reverseVideo:True @@ -34,7 +41,7 @@ URxvt.colorUL: #cc0000 !UXTerm*foreground:gray !UXTerm*cursorColor:yellow !UXTerm*pointerColor:white -!XTerm*vt100.metaSendsEscape:true +XTerm*vt100.metaSendsEscape:true !Requiresxfonts-terminusandaXrestartforanychanges !UXTerm*font:terminus-16 @@ -61,4 +68,13 @@ URxvt.colorUL: #cc0000 Emacs*font: Bitstream Vera Sans Mono-8:antialias=True Emacs*menuBar: off Emacs*toolBar: off -Emacs.verticalScrollBars: off +Emacs*verticalScrollBars: off + +XClock*Foreground: #007998 +XClock*Background: #222222 +XClock*chime: True +XClock*update: 1 +!XCalc*Foreground: #007998 +!XCalc*Background: #222222 +XCalc*customization: -color +XCalc*rpn: True diff --git a/.emacs b/.emacs index 8d81979..9b94895 100644 --- a/.emacs +++ b/.emacs @@ -1,226 +1,15 @@ -(require 'cl) +(defconst dot-emacs (concat (getenv "HOME") "/" ".emacs.hunner.el") + "My dot emacs file") -(mapcar (lambda (x) (add-to-list 'load-path (expand-file-name x))) - '("~/.emacs.d" - )) +(require 'bytecomp) +(setq compiled-dot-emacs (byte-compile-dest-file dot-emacs)) -(defun require-all (packages) - (mapcar #'require packages)) +(if (or (not (file-exists-p compiled-dot-emacs)) + (file-newer-than-file-p dot-emacs compiled-dot-emacs) + (equal (nth 4 (file-attributes dot-emacs)) (list 0 0))) + (load dot-emacs) + (load compiled-dot-emacs)) -(require-all '( - ido - color-theme - gentooish - irblack - parenface - bar-cursor - )) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; GLOBAL -(color-theme-initialize) - -;(if window-system -; (color-theme-gentooish) -; (color-theme-dark-laptop)) -(color-theme-irblack) - -(bar-cursor-mode 1) -(menu-bar-mode 0) -(global-linum-mode) -(setq linum-format "%3d ") -(setq-default indent-tabs-mode nil) -(setq indent-tabs-mode nil) -(setq make-backup-files nil) -(set-language-environment "UTF-8") -(set-input-method "japanese-ascii") -(winner-mode t) -(display-battery-mode t) -(setq display-time-24hr-format t) -(display-time-mode t) - -(tooltip-mode nil) -(setq midnight-mode t) -(setq show-trailing-whitespace t) -(setq column-number-mode nil) -(setq size-indication-mode nil) -(setq mode-line-position nil) -(mouse-avoidance-mode 'animate) -(ido-mode t) - -(global-set-key "\C-m" 'reindent-then-newline-and-indent) ;No tabs -(global-set-key "\C-a" 'beginning-of-line-text) - -(defun indent-or-expand (arg) - "Either indent according to mode, or expand the word preceding - point." - (interactive "*P") - (if (and - (or (bobp) (= ?w (char-syntax (char-before)))) - (or (eobp) (not (= ?w (char-syntax (char-after)))))) - (dabbrev-expand arg) - (indent-according-to-mode))) -(global-set-key [C-tab] 'indent-according-to-mode) - -;; Proxy for ssh tunnel + privoxy -(setq url-proxy-services '(("no_proxy" . "localhost") - ("http" . "localhost:8118"))) - -(setq save-place-file "~/.emacs.d/saveplace") ;; keep my ~/ clean -(setq-default save-place t) ;; activate it for all buffers -(require 'saveplace) ;; get the package - - -;; Enable ergoemacs layout -(setenv "ERGOEMACS_KEYBOARD_LAYOUT" "dv") ; US Dvorak layout -(load "~/.emacs.d/ergoemacs-keybindings-5.1/ergoemacs-mode") -(ergoemacs-mode 1) - -;; Make % work like vi -(global-set-key "%" 'match-paren) -(defun match-paren (arg) - "Go to the matching paren if on a paren; otherwise insert %." - (interactive "p") - (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1)) - ((looking-at "\\s\)") (forward-char 1) (backward-list 1)) - (t (self-insert-command (or arg 1))))) - -;; Prevent Emacs from stupidly auto-changing my working directory -(defun find-file-save-default-directory () - (interactive) - (setq saved-default-directory default-directory) - (ido-find-file) - (setq default-directory saved-default-directory)) -(global-set-key "\C-x\C-f" 'find-file-save-default-directory) - -;; Give killing lines advice -(defadvice kill-ring-save (before slick-copy activate compile) - "When called interactively with no active region, copy a single line instead." - (interactive - (if mark-active (list (region-beginning) (region-end)) - (message "Copied line") - (list (line-beginning-position) - (line-beginning-position 2))))) -(defadvice kill-region (before slick-cut activate compile) - "When called interactively with no active region, kill a single line instead." - (interactive - (if mark-active (list (region-beginning) (region-end)) - (list (line-beginning-position) - (line-beginning-position 2))))) - -;; Set my location sunrise-sunset -;; (setq calendar-latitude 40.1) -;; (setq calendar-longitude -88.2) -;; (setq calendar-location-name "Portland, OR") -(setq calendar-latitude 17.5) -(setq calendar-longitude 78.5) -(setq calendar-location-name "Hyderabad, India") - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Haskell mode -;; -(load "~/.emacs.d/haskell-mode/haskell-site-file") -(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode) -(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) -;;(add-hook 'haskell-mode-hook 'turn-on-haskell-indent) -;;(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Generic Lisp / Emacs Lisp -;; from http://www.emacswiki.org/emacs/AutoIndentation - -(defadvice yank (after indent-region activate) - (if (member major-mode '(clojure-mode emacs-lisp-mode lisp-mode)) - (let ((mark-even-if-inactive t)) - (indent-region (region-beginning) (region-end) nil)))) - -(defun tab-fix () - (local-set-key [tab] 'indent-or-expand)) -(defun slime-tab-fix () - (local-set-key [tab] 'slime-complete-symbol)) -(add-hook 'emacs-lisp-mode-hook 'tab-fix) -(add-hook 'lisp-mode-hook 'slime-tab-fix) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Clojure / SLIME - -(add-to-list 'auto-mode-alist '("\\.clj$" . clojure-mode)) -;(define-key clojure-mode-map (kbd "") 'indent-or-expand) - -(defmacro defclojureface (name color desc &optional others) - `(defface ,name '((((class color)) (:foreground ,color ,@others))) ,desc :group 'faces)) - -(defclojureface clojure-parens "DimGrey" "Clojure parens") -(defclojureface clojure-braces "#49b2c7" "Clojure braces") -(defclojureface clojure-brackets "SteelBlue" "Clojure brackets") -(defclojureface clojure-keyword "khaki" "Clojure keywords") -(defclojureface clojure-namespace "#c476f1" "Clojure namespace") -(defclojureface clojure-java-call "#4bcf68" "Clojure Java calls") -(defclojureface clojure-special "#b8bb00" "Clojure special") -(defclojureface clojure-double-quote "#b8bb00" "Clojure special" (:background "unspecified")) - -(defun tweak-clojure-syntax () - (mapcar (lambda (x) (font-lock-add-keywords nil x)) - '((("#?['`]*(\\|)" . 'clojure-parens)) - (("#?\\^?{\\|}" . 'clojure-brackets)) - (("\\[\\|\\]" . 'clojure-braces)) - ((":\\w+" . 'clojure-keyword)) - (("#?\"" 0 'clojure-double-quote prepend)) - (("nil\\|true\\|false\\|%[1-9]?" . 'clojure-special)) - (("(\\(\\.[^ \n)]*\\|[^ \n)]+\\.\\|new\\)\\([ )\n]\\|$\\)" 1 'clojure-java-call)) - ))) - -(add-hook 'clojure-mode-hook 'tweak-clojure-syntax) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Translation -(autoload 'babel "babel" - "Use a web translation service to translate the message MSG." t) -(autoload 'babel-region "babel" - "Use a web translation service to translate the current region." t) -(autoload 'babel-as-string "babel" - "Use a web translation service to translate MSG, returning a string." t) -(autoload 'babel-buffer "babel" - "Use a web translation service to translate the current buffer." t) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Custom -(custom-set-variables - ;; custom-set-variables was added by Custom. - ;; If you edit it by hand, you could mess it up, so be careful. - ;; Your init file should contain only one such instance. - ;; If there is more than one, they won't work right. - '(blink-cursor-mode nil) - '(case-fold-search t) - '(comint-scroll-to-bottom-on-input t) - '(fancy-splash-image "") - '(global-linum-mode t) - '(ido-decorations (quote ("" "" " | " " | ..." "[" "]" " [No match]" " [Matched]" " [Not readable]" " [Too big]" " [Confirm]"))) - '(ido-everywhere t) - '(inhibit-startup-screen t) - '(lisp-loop-forms-indentation 6) - '(lisp-loop-keyword-indentation 6) - '(lisp-simple-loop-indentation 6) - '(mode-line-format (quote ("%e--[" mode-line-buffer-identification "]" (vc-mode vc-mode) " " mode-line-modes " " global-mode-string " %-"))) - '(mode-line-in-non-selected-windows t) - '(mode-line-modes (quote ("%[" "(" (:propertize ("" mode-name)) ("" mode-line-process) (:propertize ("" minor-mode-alist)) "%n" ")" "%]"))) - '(require-final-newline t) - '(savehist-mode t nil (savehist)) - '(scroll-conservatively 100000) - '(scroll-down-aggressively 0.0) - '(scroll-margin 4) - '(scroll-step 1) - '(scroll-up-aggressively 0.0) - '(show-paren-mode t nil (paren)) - ) - - -;;; This was installed by package-install.el. -;;; This provides support for the package system and -;;; interfacing with ELPA, the package archive. -;;; Move this code earlier if you want to reference -;;; packages in your .emacs. -(when - (load - (expand-file-name "~/.emacs.d/elpa/package.el")) - (package-initialize)) +(add-hook 'kill-emacs-hook + '(lambda () (and (file-newer-than-file-p dot-emacs compiled-dot-emacs) + (byte-compile-file dot-emacs)))) diff --git a/.emacs.d/irblack.el b/.emacs.d/irblack.el index a213d4e..f456190 100644 --- a/.emacs.d/irblack.el +++ b/.emacs.d/irblack.el @@ -8,50 +8,57 @@ ;; (require 'color-theme) +;; White #EEEEEE #FFFFFF +;; Black #4E4E4E #7C7C7C ? / dim gray +;; Blue #96CBFE #FFFFCB slate blue +;; Green #A8FF60 #CEFFAB DarkOliveGreen2 +;; Cyan #C6C5FE #DFDFFE steel blue +;; Red #FF6C60 #FFB6B0 +;; Magenta #FF73FD #FF9CFE +;; Yellow #FFFFB6 #FFFFCB pale goldenrod (defun color-theme-irblack () "IR_black theme taken from Vim" (interactive) (color-theme-install '(color-theme-irblack - ((background-color . "#000000") - (background-mode . dark) - (border-color . "#454545") - (cursor-color . "#A8FF60") + (;; (background-color . "black") + ;; (background-mode . dark) + (border-color . "gray10") + (cursor-color . "DarkOliveGreen2") (foreground-color . "#F6F3E8") - (mouse-color . "#A8FF60")) - (default ((t (:background "#000000" :foreground "#F6F3E8")))) - (vertical-border ((t (:background "#666666")))) + (mouse-color . "DarkOliveGreen2")) + (default ((t (:foreground "#F6F3E8")))) + (vertical-border ((t (:background "gray20")))) (blue ((t (:foreground "blue")))) (border-glyph ((t (nil)))) - (buffers-tab ((t (:background "#141414" :foreground "#CACACA")))) - (font-lock-comment-face ((t (:foreground "#7C7C7C")))) - (font-lock-constant-face ((t (:foreground "#99CC99")))) - (font-lock-doc-string-face ((t (:foreground "#A8FF60")))) - (font-lock-function-name-face ((t (:foreground "#FFD2A7")))) - (font-lock-builtin-face ((t (:foreground "#96CBFE")))) - (font-lock-keyword-face ((t (:foreground "#96CBFE")))) - (font-lock-preprocessor-face ((t (:foreground "#96CBFE")))) - (font-lock-reference-face ((t (:foreground "#C6C5FE")))) + (buffers-tab ((t (:background "#141414" :foreground "#cacaca")))) + (font-lock-comment-face ((t (:foreground "dim gray")))) + (font-lock-constant-face ((t (:foreground "light green")))) + (font-lock-doc-string-face ((t (:foreground "DarkOliveGreen2")))) + (font-lock-function-name-face ((t (:foreground "burlywood")))) + (font-lock-builtin-face ((t (:foreground "slate blue")))) + (font-lock-keyword-face ((t (:foreground "slate blue")))) + (font-lock-preprocessor-face ((t (:foreground "slate blue")))) + (font-lock-reference-face ((t (:foreground "steel blue")))) (font-lock-regexp-grouping-backslash ((t (:foreground "#E9C062")))) (font-lock-regexp-grouping-construct ((t (:foreground "red")))) - (linum ((t (:background "#000000" :foreground "#666666")))) + (linum ((t (:background "black" :foreground "dim gray")))) (minibuffer-prompt ((t (:foreground "#888888")))) (ido-subdir ((t (:foreground "#CF6A4C")))) (ido-first-match ((t (:foreground "#8F9D6A")))) (ido-only-match ((t (:foreground "#8F9D6A")))) - (mumamo-background-chunk-submode ((t (:background "#222222")))) - (font-lock-string-face ((t (:foreground "#A8FF60")))) - (font-lock-type-face ((t (:foreground "#FFFFB6")))) - (font-lock-variable-name-face ((t (:foreground "#C6C5FE")))) + (font-lock-string-face ((t (:foreground "DarkOliveGreen2")))) + (font-lock-type-face ((t (:foreground "pale goldenrod")))) + (font-lock-variable-name-face ((t (:foreground "steel blue")))) (font-lock-warning-face ((t (:background "#CC1503" :foreground "#FFFFFF")))) (gui-element ((t (:background "#D4D0C8" :foreground "black")))) - (region ((t (:background "#660000")))) - (mode-line ((t (:background "grey75" :foreground "black")))) + (region ((t (:background "dark red")))) + (mode-line ((t (:background "dim gray" :foreground "dark gray")))) (highlight ((t (:background "#111111")))) (highline-face ((t (:background "SeaGreen")))) (left-margin ((t (nil)))) @@ -61,11 +68,12 @@ (underline ((nil (:underline nil)))) ;; mumamo - (mumamo-background-chunk-major ((t (:background "#000000")))) - (mumamo-background-chunk-submode1 ((t (:background "#0A0A0A")))) - (mumamo-background-chunk-submode2 ((t (:background "#0A0A0A")))) - (mumamo-background-chunk-submode3 ((t (:background "#0A0A0A")))) - (mumamo-background-chunk-submode4 ((t (:background "#0A0A0A")))) + ;(mumamo-background-chunk-major ((t (:background "#000000")))) + ;(mumamo-background-chunk-submode ((t (:background "#222222")))) + ;(mumamo-background-chunk-submode1 ((t (:background "#0A0A0A")))) + ;(mumamo-background-chunk-submode2 ((t (:background "#0A0A0A")))) + ;(mumamo-background-chunk-submode3 ((t (:background "#0A0A0A")))) + ;(mumamo-background-chunk-submode4 ((t (:background "#0A0A0A")))) ;; diff-mode (diff-added ((t (:background "#253B22" :foreground "#F8F8F8")))) @@ -75,11 +83,32 @@ ;; nxml - (nxml-delimiter ((t (:foreground "#96CBFE")))) - (nxml-name ((t (:foreground "#96CBFE")))) - (nxml-element-local-name ((t (:foreground "#96CBFE")))) - (nxml-attribute-local-name ((t (:foreground "#FFD7B1")))) + ;(nxml-delimiter ((t (:foreground "#96CBFE")))) + ;(nxml-name ((t (:foreground "#96CBFE")))) + ;(nxml-element-local-name ((t (:foreground "#96CBFE")))) + ;(nxml-attribute-local-name ((t (:foreground "#FFD7B1")))) + ;; erc + ;(erc-default-face ((t (nil)))) + ;(erc-direct-msg-face ((t (:foreground "#007998")))) + ;(erc-input-face ((t (:foreground "#feffff")))) + ;(erc-bold-face ((t (:bold t :weight bold)))) + ;(erc-inverse-face ((t (:background "Black" :foreground "White")))) + ;(erc-underline-face ((t (:underline t)))) + ;(erc-prompt-face ((t (:foreground "#c3c6c8")))) + ;(erc-notice-face ((t (:foreground "#7c7c7c")))) + ;(erc-action-face ((t (:bold t :weight bold)))) + ;(erc-error-face ((t (:foreground "#007998")))) + ;(erc-timestamp-face ((t (:foreground "#7c7c7c")))) + ;(erc-nick-default-face ((t (:foreground "#feffff")))) + ;(erc-nick-msg-face ((t (:bold t :foreground "#007998" :weight bold)))) + ;; erc-dangerous-host-face + ;; erc-keyword-face + (erc-current-nick-face ((t (:foreground "#007998")))) + + ;; (erc-command-indicator-face ((t (:bold t :weight bold)))) + ;; (erc-header-line ((t (:background "grey90" :foreground "grey20")))) + ;; (erc-my-nick-face ((t (:bold t :foreground "brown" :weight bold)))) ))) (provide 'irblack) diff --git a/.emacs.hunner.el b/.emacs.hunner.el new file mode 100644 index 0000000..f0bdbb2 --- /dev/null +++ b/.emacs.hunner.el @@ -0,0 +1,304 @@ +(require 'cl) + +(mapcar (lambda (x) (add-to-list 'load-path (expand-file-name x))) + '("~/.emacs.d" + )) + +(defun require-all (packages) + (mapcar #'require packages)) + +(require-all '( + color-theme + irblack + parenface + bar-cursor + )) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; GLOBAL +(color-theme-initialize) + +(if window-system + (set-background-color "black") + ()) +(color-theme-irblack) +;(if window-system +; (color-theme-gentooish) +; (color-theme-dark-laptop)) +;(load-file "~/.emacs.d/color-theme-twilight.el") +;(color-theme-twilight) +;(load-file "~/.emacs.d/color-theme-inkpot.el") +;(color-theme-inkpot) + +(bar-cursor-mode 1) +(menu-bar-mode 0) +(tool-bar-mode 0) +(global-linum-mode) +(setq linum-format "%3d ") +(setq-default indent-tabs-mode nil) +(setq indent-tabs-mode nil) +(setq make-backup-files nil) +(set-language-environment "UTF-8") +(set-input-method "japanese-ascii") +(winner-mode t) +(display-battery-mode t) +(setq display-time-24hr-format t) +(display-time-mode t) +(line-number-mode 1) +(column-number-mode 1) + +(tooltip-mode nil) +(setq midnight-mode t) +(setq column-number-mode nil) +(setq size-indication-mode nil) +(setq mode-line-position nil) +(mouse-avoidance-mode 'animate) +(ido-mode t) + +;; Ido and uniquify options from http://curiousprogrammer.wordpress.com/2009/07/13/my-emacs-defaults/ +(setq ido-enable-flex-matching t) +(setq ido-create-new-buffer 'always) +(setq uniquify-buffer-name-style 'reverse) +(setq uniquify-separator "|") +(setq uniquify-after-kill-buffer-p t) +(setq uniquify-ignore-buffers-re "^\\*") + +(global-set-key "\C-m" 'reindent-then-newline-and-indent) ;No tabs +(global-set-key "\C-a" 'beginning-of-line-text) + +(defun indent-or-expand (arg) + "Either indent according to mode, or expand the word preceding + point." + (interactive "*P") + (if (and + (or (bobp) (= ?w (char-syntax (char-before)))) + (or (eobp) (not (= ?w (char-syntax (char-after)))))) + (dabbrev-expand arg) + (indent-according-to-mode))) +(global-set-key [C-tab] 'indent-according-to-mode) + +;; Proxy for ssh tunnel + privoxy +;; (setq url-proxy-services '(("no_proxy" . "localhost") +;; ("http" . "localhost:8118"))) + +(setq-default save-place t) ;; activate it for all buffers +(setq save-place-file "~/.emacs.d/saveplace") ;; keep my ~/ clean + +(setq backup-directory-alist + `((".*" . "~/.emacs.d/backups/"))) +(setq auto-save-file-name-transforms + `((".*" "~/.emacs.d/backups/" t))) + +;; Enable ergoemacs layout +;; (setenv "ERGOEMACS_KEYBOARD_LAYOUT" "dv") ; US Dvorak layout +;; (load "~/.emacs.d/ergoemacs-keybindings-5.1/ergoemacs-mode") +;; (ergoemacs-mode 1) + +;; Highlight bad whitespace +(global-whitespace-mode t) +(setq whitespace-style (quote (tabs tab-mark))) + +;; Make % work like vi +(global-set-key "%" 'match-paren) +(defun match-paren (arg) + "Go to the matching paren if on a paren; otherwise insert %." + (interactive "p") + (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1)) + ((looking-at "\\s\)") (forward-char 1) (backward-list 1)) + (t (self-insert-command (or arg 1))))) + +;; Prevent Emacs from stupidly auto-changing my working directory +(defun find-file-save-default-directory () + (interactive) + (setq saved-default-directory default-directory) + (ido-find-file) + (setq default-directory saved-default-directory)) +(global-set-key "\C-x\C-f" 'find-file-save-default-directory) + +;; Give killing lines advice +(defadvice kill-ring-save (before slick-copy activate compile) + "When called interactively with no active region, copy a single line instead." + (interactive + (if mark-active (list (region-beginning) (region-end)) + (message "Copied line") + (list (line-beginning-position) + (line-beginning-position 2))))) +(defadvice kill-region (before slick-cut activate compile) + "When called interactively with no active region, kill a single line instead." + (interactive + (if mark-active (list (region-beginning) (region-end)) + (list (line-beginning-position) + (line-beginning-position 2))))) + +;; Tip of the day! +(defun totd () + (interactive) + (random t) ;; seed with time-of-day + (with-output-to-temp-buffer "*Tip of the day*" + (let* ((commands (loop for s being the symbols + when (commandp s) collect s)) + (command (nth (random (length commands)) commands))) + (princ + (concat "Your tip for the day is:\n" + "========================\n\n" + (describe-function command) + "\n\nInvoke with:\n\n" + (with-temp-buffer + (where-is command t) + (buffer-string))))))) + +;; Set my location sunrise-sunset +(setq calendar-latitude 45.4) +(setq calendar-longitude -122.6) +(setq calendar-location-name "Portland, OR") +;; (setq calendar-latitude 17.5) +;; (setq calendar-longitude 78.5) +;; (setq calendar-location-name "Hyderabad, India") + +;; Start the server for emacsclient +;(server-start) + +;; Custom key maps +(defun set-keys (commands) + (mapcar (lambda (x) + (global-set-key (read-kbd-macro (first x)) (second x))) + commands)) +(set-keys '( + ("C-c t" totd) + ("C-c s p" (lambda () (interactive) + (if (shellfm-running-p) + (shellfm-pause) + ((shellfm 1) (shellfm-station-recommended 1))))) + ("C-c s n" shellfm-skip-track) + ("C-c s r" shellfm-station-recommended) + ("C-c s s" shellfm-station-artist) + ("C-c s m" shellfm-station-playlist) + ("C-c s l" shellfm-love-track) + ("C-c s a" shellfm-add-to-playlist) + ("C-c s q" shellfm 0) + ("C-c s i" shellfm-track-info) + ("M-s" save-buffer) + ("M-N" make-frame) + ("M-W" delete-frame) + ("M-w" ido-kill-buffer) + ("M-1" delete-other-windows) + ("M-!" delete-window) + ("M-2" split-window-horizontally) + ("M-@" split-window-vertically) + ("M-a" beginning-of-line) + ("M-o" other-window) + ("M-O" other-window) + ("M-`" switch-to-next-frame) + ("M-~" switch-to-previous-frame) + )) + +;; Transparency +(set-frame-parameter (selected-frame) 'alpha '(85 85)) +(add-to-list 'default-frame-alist '(alpha 85 85)) +(eval-when-compile (require 'cl)) +(defun toggle-transparency () + (interactive) + (if (/= + (cadr (find 'alpha (frame-parameters nil) :key #'car)) + 10) + (set-frame-parameter nil 'alpha '(10 10)) + (set-frame-parameter nil 'alpha '(85 85)))) +(global-set-key (kbd "C-c T") 'toggle-transparency) + +;; (global-set-key (kbd "") +;; (lambda () (interactive) +;; (if (shellfm-running-p) +;; (shellfm-skip-track) +;; (shellfm 1)))) + +;; ERC stuff +;; (setq erc-encoding-coding-alist (quote (("#lisp" . utf-8) +;; ("#nihongo" . iso-2022-jp) ("#truelambda" . iso-latin-1) +;; ("#bitlbee" . iso-latin-1)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Haskell mode +;; +(load "~/.emacs.d/haskell-mode/haskell-site-file") +(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode) +(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation) +;;(add-hook 'haskell-mode-hook 'turn-on-haskell-indent) +;;(add-hook 'haskell-mode-hook 'turn-on-haskell-simple-indent) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Generic Lisp / Emacs Lisp +;; from http://www.emacswiki.org/emacs/AutoIndentation + +(defadvice yank (after indent-region activate) + (if (member major-mode '(clojure-mode emacs-lisp-mode lisp-mode)) + (let ((mark-even-if-inactive t)) + (indent-region (region-beginning) (region-end) nil)))) + +(defun tab-fix () + (local-set-key [tab] 'indent-or-expand)) +(defun slime-tab-fix () + (local-set-key [tab] 'slime-complete-symbol)) +(add-hook 'emacs-lisp-mode-hook 'tab-fix) +(add-hook 'lisp-mode-hook 'slime-tab-fix) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Translation +(autoload 'babel "babel" + "Use a web translation service to translate the message MSG." t) +(autoload 'babel-region "babel" + "Use a web translation service to translate the current region." t) +(autoload 'babel-as-string "babel" + "Use a web translation service to translate MSG, returning a string." t) +(autoload 'babel-buffer "babel" + "Use a web translation service to translate the current buffer." t) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Custom +(custom-set-variables + ;; custom-set-variables was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(blink-cursor-mode nil) + '(case-fold-search t) + '(comint-scroll-to-bottom-on-input t) + '(fancy-splash-image "") +;; '(frame-background-mode (quote dark)) + '(global-linum-mode t) + '(ido-decorations (quote ("" "" " | " " | ..." "[" "]" " [No match]" " [Matched]" " [Not readable]" " [Too big]" " [Confirm]"))) + '(ido-everywhere t) + '(inhibit-startup-screen t) + '(lisp-loop-forms-indentation 6) + '(lisp-loop-keyword-indentation 6) + '(lisp-simple-loop-indentation 6) + '(mode-line-format (quote ("%e--[" mode-line-buffer-identification "]" (vc-mode vc-mode) " " mode-line-modes " " global-mode-string " %-"))) + '(mode-line-in-non-selected-windows t) + '(mode-line-modes (quote ("%[" "(" (:propertize ("" mode-name)) ("" mode-line-process) (:propertize ("" minor-mode-alist)) "%n" ")" "%]"))) + '(mumamo-background-colors nil) + '(require-final-newline t) + '(savehist-mode t nil (savehist)) + '(scroll-conservatively 100000) + '(scroll-down-aggressively 0.0) + '(scroll-margin 4) + '(scroll-step 1) + '(scroll-up-aggressively 0.0) + '(show-paren-mode t nil (paren))) + + +;;; This was installed by package-install.el. +;;; This provides support for the package system and +;;; interfacing with ELPA, the package archive. +;;; Move this code earlier if you want to reference +;;; packages in your .emacs. +(when + (load + (expand-file-name "~/.emacs.d/elpa/package.el")) + (package-initialize) + (require 'starter-kit-elpa)) +(custom-set-faces + ;; custom-set-faces was added by Custom. + ;; If you edit it by hand, you could mess it up, so be careful. + ;; Your init file should contain only one such instance. + ;; If there is more than one, they won't work right. + '(mumamo-border-face-in ((t nil))) + '(mumamo-border-face-out ((t nil)))) diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..d4f0b1d --- /dev/null +++ b/.gitconfig @@ -0,0 +1,3 @@ +[user] + name = Hunter Haugen + email = h.haugen@gmail.com diff --git a/.vim/colors/inkpot.vim b/.vim/colors/inkpot.vim index 341bd51..a158e7b 100644 --- a/.vim/colors/inkpot.vim +++ b/.vim/colors/inkpot.vim @@ -56,7 +56,7 @@ if has("gui_running") hi CursorLine guibg=#2e2e37 hi IncSearch gui=BOLD guifg=#303030 guibg=#cd8b60 - hi Search gui=NONE guifg=#303030 guibg=#cd8b60 + hi Search gui=NONE guifg=#303030 guibg=#ad7b57 hi ErrorMsg gui=BOLD guifg=#ffffff guibg=#ce4e4e hi WarningMsg gui=BOLD guifg=#ffffff guibg=#ce8e4e hi ModeMsg gui=BOLD guifg=#7e7eae guibg=NONE @@ -148,7 +148,7 @@ else endif exec "hi IncSearch cterm=BOLD ctermfg=" . X(80) . " ctermbg=" . X(73) - exec "hi Search cterm=NONE ctermfg=" . X(80) . " ctermbg=" . X(73) + exec "hi Search cterm=NONE ctermfg=" . X(80) . " ctermbg=" . X(52) exec "hi ErrorMsg cterm=BOLD ctermfg=" . X(16) . " ctermbg=" . X(48) exec "hi WarningMsg cterm=BOLD ctermfg=" . X(16) . " ctermbg=" . X(68) exec "hi ModeMsg cterm=BOLD ctermfg=" . X(38) . " ctermbg=" . "NONE" diff --git a/.vimrc b/.vimrc index 6177542..6dc2992 100644 --- a/.vimrc +++ b/.vimrc @@ -1,26 +1,22 @@ scriptencoding utf-8 "----------------------------------------------------------------------- -"BaSS vimrc based con ciaran +"Hunner's vimrc based on BaSS & ciaran "----------------------------------------------------------------------- "----------------------------------------------------------------------- " terminal setup "----------------------------------------------------------------------- -" Extra terminal things +" Want utf8 at all times set termencoding=utf-8 set encoding=utf-8 - -" Turn off the menubar so we don't get key accelerators with Meta. -" Don't include the toolbar -set guioptions=aegiLt -"colorscheme ir_black set fenc=utf-8 +" change cursor colour depending upon mode if exists('&t_SI') let &t_SI = "\]12;lightgoldenrod\x7" - let &t_EI = "\]12;grey80\x7" + let &t_EI = "\]12;green\x7" endif "----------------------------------------------------------------------- @@ -46,8 +42,7 @@ set shortmess=a " Make backspace delete lots of things set backspace=indent,eol,start -" Create backups -"set backup +" Don't create backups set nobackup " Show us the command we're typing @@ -60,7 +55,7 @@ set showmatch set hlsearch set incsearch -" Selective case insensitivity +" Case insensitivity set ignorecase set infercase @@ -87,8 +82,8 @@ set whichwrap+=<,>,[,] " Use the cool tab complete menu set wildmenu -set wildignore+=*.o,*~ -set suffixes+=.in,.a +set wildignore+=*.o,*~,.lo +set suffixes+=.in,.a,.1 " Allow edit buffers to be hidden set hidden @@ -101,6 +96,9 @@ if has("syntax") syntax on endif +" enable virtual edit in vblock mode, and one past the end +set virtualedit=block,onemore + " Set our fonts if has("gui_kde") set guifont=Terminus/12/-1/5/50/0/0/0/0/0 @@ -116,6 +114,9 @@ if ! has("gui_running") colors inkpot else colors ir_black + " Turn off the menubar so we don't get key accelerators with Meta. + " Don't include the toolbar + set guioptions=aegit endif " set background=light gives a different style, feel free to choose between them. set background=dark @@ -131,7 +132,7 @@ set background=dark " set guioptions-=R "end -" By default, go for an indent of 4 tab stuff +" By default, go for an indent of 4 and use spaces set expandtab set shiftwidth=4 set tabstop=4 @@ -145,6 +146,7 @@ inoremap # X# if has("folding") set foldenable set foldmethod=marker + "set foldlevelstart=99 endif " Syntax when printing @@ -169,6 +171,22 @@ set laststatus=2 set statusline= set statusline+=%2*%-3.3n%0*\ " buffer number set statusline+=%f\ " file name +if has("eval") + let g:scm_cache = {} + fun! ScmInfo() + let l:key = getcwd() + if ! has_key(g:scm_cache, l:key) + if (isdirectory(getcwd() . "/.git")) + let g:scm_cache[l:key] = "[" . substitute(readfile(getcwd() . "/.git/HEAD", "", 1)[0], + \ "^.*/", "", "") . "] " + else + let g:scm_cache[l:key] = "" + endif + endif + return g:scm_cache[l:key] + endfun + set statusline+=%{ScmInfo()} " scm info +endif set statusline+=%h%1*%m%r%w%0* " flags set statusline+=\[%{strlen(&ft)?&ft:'none'}, " filetype set statusline+=%{&encoding}, " encoding @@ -206,9 +224,10 @@ endif " Nice window title if has('title') && (has('gui_running') || &title) set titlestring= - set titlestring+=%f\ " file name - set titlestring+=%h%m%r%w " flags - set titlestring+=\ -\ %{v:progname} " program name + set titlestring+=%f\ " file name + set titlestring+=%h%m%r%w " flags + set titlestring+=\ -\ %{v:progname} " program name + set titlestring+=\ -\ %{substitute(getcwd(),\ $HOME,\ '~',\ '')} " working directory endif " If possible, try to use a narrow number column. @@ -226,6 +245,7 @@ endif " Better include path set path+=src/ +let &inc.=' ["<]' " Show tabs and trailing whitespace visually if (&termencoding == "utf-8") || has("gui_running") @@ -241,7 +261,7 @@ else set list listchars=tab:>-,trail:.,extends:> endif endif -map :set nolist listchars +map :set nolist listchars:set noet:set sw=8:set ts=8 " Show lines longer than 80 characters "au BufWinEnter * let w:m1=matchadd('Search', '\%<81v.\%>77v', -1) @@ -273,7 +293,7 @@ if has("eval") " If we're in a wide window, enable line numbers. fun! WindowWidth() if winwidth(0) > 90 - setlocal foldcolumn=1 + setlocal foldcolumn=2 setlocal number else setlocal nonumber @@ -284,9 +304,17 @@ endif " content creation if has("autocmd") - augroup content - autocmd! - + augroup text + autocmd BufRead,BufNewFile *.txt + \ set nonumber tw=80 + augroup END + augroup helphelp + " For help files, move them to the top window and make + " behave like (jump to tag) + autocmd FileType help :call WindowToTop() + autocmd FileType help nmap + augroup END + augroup interplangs autocmd BufNewFile *.rb 0put ='# vim: set sw=2 sts=2 et tw=80 :' | \ 0put ='#!/usr/bin/env ruby' | set sw=2 sts=2 et tw=80 | \ norm G @@ -297,7 +325,8 @@ if has("autocmd") autocmd BufNewFile,BufRead *.php \ set ai - + augroup END + augroup html autocmd BufNewFile *.htm,*.html \ 0put ='' | \ $put ='' | @@ -313,12 +342,18 @@ if has("autocmd") \ $put ='' | \ $put ='' | \ set sw=2 sts=2 et tw=80 | norm G - + augroup END + augroup autotools autocmd BufNewFile *.hh 0put ='/* vim: set sw=4 sts=4 et foldmethod=syntax : */' | \ 1put ='' | call MakeIncludeGuards() | \ 5put ='#include \"config.h\"' | \ set sw=4 sts=4 et tw=80 | norm G + autocmd BufNewFile *.c 0put ='/* vim: set sw=4 sts=4 et foldmethod=syntax : */' | + \ 1put ='' | 2put ='' | call setline(3, '#include "' . + \ substitute(expand("%:t"), ".c$", ".h", "") . '"') | + \ set sw=4 sts=4 et tw=80 | norm G + autocmd BufNewFile *.cc 0put ='/* vim: set sw=4 sts=4 et foldmethod=syntax : */' | \ 1put ='' | 2put ='' | call setline(3, '#include "' . \ substitute(expand("%:t"), ".cc$", ".hh", "") . '"') | @@ -328,25 +363,26 @@ if has("autocmd") \ 0put ='dnl vim: set sw=8 sts=8 noet :' | \ $put ='' | \ call setline(line('$'), 'AC_INIT([' . substitute(expand('%:p:h'), - \ '^.\{-}/\([^/]\+\)\(/trunk\)\?$', '\1', '') . '], [0.0])') | - \ $put ='AC_PREREQ(2.5)' | + \ '^.\{-}/\([^/]\+\)\(/trunk\)\?$', '\1', '') . '], [0.1], [h.haugen@gmail.com])') | + \ $put ='AC_PREREQ(2.63)' | \ $put ='AC_CONFIG_SRCDIR([])' | \ $put ='AC_CONFIG_AUX_DIR(config)' | - \ $put ='AM_INIT_AUTOMAKE(1.9)' | + \ $put ='AM_INIT_AUTOMAKE([foreign -Wall -Werror 1.10])' | \ $put ='' | \ $put ='dnl check for required programs' | - \ $put ='AC_PROG_CXX' | + \ $put ='AC_PROG_CC dnl CXX' | \ $put ='AC_PROG_INSTALL' | \ $put ='AC_PROG_LN_S' | \ $put ='AC_PROG_RANLIB' | \ $put ='AC_PROG_MAKE_SET' | \ $put ='' | \ $put ='dnl output' | - \ $put ='AM_CONFIG_HEADER(config.h)' | - \ $put ='AC_OUTPUT(' | + \ $put ='AC_CONFIG_HEADERS([config.h])' | + \ $put ='AC_CONFIG_FILES([' | \ $put =' Makefile' | \ $put =' src/Makefile' | - \ $put =' )' | + \ $put ='])' | + \ $put ='AC_OUTPUT' | \ set sw=8 sts=8 noet | \ norm ggjjjjf] @@ -370,14 +406,15 @@ if has("autocmd") \ $put ='}' | \ $put ='' | \ $put ='run mkdir -p config' | - \ $put ='run $(get libtoolize 1.5 ) --copy --force --automake' | + \ $put ='run $(get libtoolize 2.2 ) --copy --force --automake' | \ $put ='rm -f config.cache' | - \ $put ='run $(get aclocal 1.9 )' | - \ $put ='run $(get autoheader 2.59 )' | - \ $put ='run $(get autoconf 2.59 )' | - \ $put ='run $(get automake 1.9 ) -a --copy' | + \ $put ='run $(get aclocal 1.10 )' | + \ $put ='run $(get autoheader 2.63 )' | + \ $put ='run $(get autoconf 2.63 )' | + \ $put ='run $(get automake 1.10 ) -a --copy' | \ set sw=4 sts=4 et tw=80 | \ norm gg=Ggg + autocmd BufWritePost autogen.bash !chmod 744 % autocmd BufNewFile Makefile.am \ 0put ='CLEANFILES = *~' | @@ -385,20 +422,94 @@ if has("autocmd") \ $put ='MAINTAINERCLEANFILES = Makefile.in configure config/* aclocal.m4 \' | \ $put ='' | \ call setline(line('$'), "\t\t\tconfig.h config.h.in") | + \ $put ='SUBDIRS = src' | \ $put ='AUTOMAKE_OPTIONS = foreign dist-bzip2' | \ $put ='EXTRA_DIST = autogen.bash' | + \ $put ='' | + \ $put ='maintainer-clean-local:' | + \ $put =' -rmdir config' | \ else | \ $put ='MAINTAINERCLEANFILES = Makefile.in' | + \ $put ='bin_PROGRAMS = ' . substitute(expand('%:p:h'),'^.\{-}/\([^/]\+\)\(/src\)\?$', '\1', '') | + \ $put = substitute(expand('%:p:h'), '^.\{-}/\([^/]\+\)\(/src\)\?$','\1', '') . '_SOURCES = main.c' | \ endif augroup END + augroup making + try + " if we have a vim which supports QuickFixCmdPost (vim7), + " give us an error window after running make, grep etc, but + " only if results are available. + autocmd QuickFixCmdPost * botright cwindow 5 + + autocmd QuickFixCmdPre make + \ let g:make_start_time=localtime() + + let g:paludis_configure_command = "! ./configure --prefix=/usr --sysconfdir=/etc" . + \ " --localstatedir=/var/lib --enable-qa " . + \ " --enable-ruby --enable-python --enable-vim --enable-bash-completion" . + \ " --enable-zsh-completion --with-repositories=all --with-clients=all --with-environments=all" . + \ " --enable-visibility --enable-gnu-ldconfig --enable-htmltidy" . + \ " --enable-ruby-doc --enable-python-doc --enable-xml" + + " Similarly, try to automatically run ./configure and / or + " autogen if necessary. + autocmd QuickFixCmdPre make + \ if ! filereadable('Makefile') | + \ if ! filereadable("configure") | + \ if filereadable("autogen.bash") | + \ exec "! ./autogen.bash" | + \ elseif filereadable("quagify.sh") | + \ exec "! ./quagify.sh" | + \ endif | + \ endif | + \ if filereadable("configure") | + \ if (isdirectory(getcwd() . "/paludis/util")) | + \ exec g:paludis_configure_command | + \ elseif (match(getcwd(), "libwrapiter") >= 0) | + \ exec "! ./configure --prefix=/usr --sysconfdir=/etc" | + \ else | + \ exec "! ./configure" | + \ endif | + \ endif | + \ endif + + autocmd QuickFixCmdPost make + \ let g:make_total_time=localtime() - g:make_start_time | + \ echo printf("Time taken: %dm%2.2ds", g:make_total_time / 60, + \ g:make_total_time % 60) + + autocmd QuickFixCmdPre * + \ let g:old_titlestring=&titlestring | + \ let &titlestring="[ " . expand("") . " ] " . &titlestring | + \ redraw + + autocmd QuickFixCmdPost * + \ let &titlestring=g:old_titlestring + + if hostname() == "snowmobile" + autocmd QuickFixCmdPre make + \ let g:active_line=getpid() . " vim:" . substitute(getcwd(), "^.*/", "", "") | + \ exec "silent !echo '" . g:active_line . "' >> ~/.config/awesome/active" + + autocmd QuickFixCmdPost make + \ exec "silent !sed -i -e '/^" . getpid() . " /d' ~/.config/awesome/active" + endif + + catch + endtry + augroup END endif "----------------------------------------------------------------------- " mappings "----------------------------------------------------------------------- -nmap :bnext +" Go to buffers +nmap :bprev +nmap :bnext +nmap , :bp +nmap . :bn " v_K is really really annoying vmap K k @@ -413,6 +524,8 @@ endif nmap cwc :cclose nmap cwo :botright copen 5p nmap cn :cnext +nmap - :cnext +nmap cp :cprevious " Annoying default mappings inoremap gk @@ -420,11 +533,21 @@ inoremap gj noremap gk noremap gj +" Better Bépo movement +noremap © h +noremap þ j +noremap ß k +noremap ® l + " Make in normal mode go down a page rather than left a -" character +" character, and backspace the opposite noremap noremap +" Scrolling with arrows controls the window +noremap +noremap + " Useful things from inside imode inoremap w :w inoremap q gq}k$ @@ -434,10 +557,14 @@ inoremap q gq}k$ "imap :silent nohlsearch "nmap :Kwbd "nmap c -"nmap :make check -"nmap :make -"nmap :!svn update -"nmap :!svn status \| grep -v '^?' \| sort -k2 +"nmap :exec "make check TESTS_ENVIRONMENT=true LOG_COMPILER=true XFAIL_TESTS=" +"nmap :exec "make -C " . expand("%:p:h") . " check TESTS_ENVIRONMENT=true LOG_COMPILER=true XFAIL_TESTS=" +nmap :make all-then-check +nmap :exec "make -C " . expand("%:p:h") . " check" +nmap :make +nmap :exec "make -C " . expand("%:p:h") +"nmap :exec "make -C " . expand("%:p:h") . " check SUBDIRS= check_PROGRAMS=" . GetCurrentTest() +" \ . " TESTS=" . GetCurrentTest() " Insert a single char noremap i ir @@ -473,6 +600,9 @@ noremap dbl :g/^$/d:nohls noremap enc :execute \ substitute(":'<,'>s/^.*/#&#/ \| :nohls", "#", input(">"), "g") +" Edit something in the current directory +noremap ed :e =expand("%:p:h")/ + " Enable fancy % matching if has("eval") runtime! macros/matchit.vim @@ -487,28 +617,98 @@ if has("digraphs") endif if has("eval") - " GNU format changelog entry - fun! MakeChangeLogEntry() - norm gg - /^\d - norm 2O - norm k - call setline(line("."), strftime("%Y-%m-%d") . - \ " J. Alberto Suárez López ") - norm 2o - call setline(line("."), "\t* ") - norm $ + " Work out include guard text + fun! IncludeGuardText() + let l:p = substitute(substitute(getcwd(), "/trunk", "", ""), '^.*/', "", "") + let l:t = substitute(expand("%"), "[./]", "_", "g") + return substitute(toupper(l:p . "_GUARD_" . l:t), "-", "_", "g") endfun - noremap cl :call MakeChangeLogEntry() - " command aliases, can't call these until after cmdalias.vim is loaded - au VimEnter * if exists("loaded_cmdalias") | - \ call CmdAlias("mkdir", "!mkdir") | - \ call CmdAlias("cvs", "!cvs") | - \ call CmdAlias("svn", "!svn") | - \ call CmdAlias("commit", "!svn commit -m \"") | - \ call CmdAlias("upload", "make upload") | - \ endif + " Make include guards + fun! MakeIncludeGuards() + norm gg + /^$/ + norm 2O + call setline(line("."), "#ifndef " . IncludeGuardText()) + norm o + call setline(line("."), "#define " . IncludeGuardText() . " 1") + norm G + norm o + call setline(line("."), "#endif") + endfun + noremap ig :call MakeIncludeGuards() +endif + +" fast buffer switching +if v:version >= 700 && has("eval") + let g:switch_header_map = { + \ 'cc': 'hh', + \ 'hh': 'cc', + \ 'c': 'h', + \ 'h': 'c', + \ 'cpp': 'hpp', + \ 'hpp': 'cpp' } + + fun! SwitchTo(f, split) abort + if ! filereadable(a:f) + echoerr "File '" . a:f . "' does not exist" + else + if a:split + new + endif + if 0 != bufexists(a:f) + exec ':buffer ' . bufnr(a:f) + else + exec ':edit ' . a:f + endif + endif + endfun + + fun! SwitchHeader(split) abort + let filename = expand("%:p:r") + let suffix = expand("%:p:e") + if suffix == '' + echoerr "Cannot determine header file (no suffix)" + return + endif + + let new_suffix = g:switch_header_map[suffix] + if new_suffix == '' + echoerr "Don't know how to find the header (suffix is " . suffix . ")" + return + end + + call SwitchTo(filename . '.' . new_suffix, a:split) + endfun + + fun! SwitchTest(split) abort + let filename = expand("%:p:r") + let suffix = expand("%:p:e") + if -1 != match(filename, '_TEST$') + let new_filename = substitute(filename, '_TEST$', '.' . suffix, '') + else + let new_filename = filename . '_TEST.' . suffix + end + call SwitchTo(new_filename, a:split) + endfun + + fun! SwitchMakefile(split) abort + let dirname = expand("%:p:h") + if filereadable(dirname . "/Makefile.am.m4") + call SwitchTo(dirname . "/Makefile.am.m4", a:split) + elseif filereadable(dirname . "/Makefile.am") + call SwitchTo(dirname . "/Makefile.am", a:split) + else + call SwitchTo(dirname . "/Makefile", a:split) + endif + endfun + + noremap sh :call SwitchHeader(0) + noremap st :call SwitchTest(0) + noremap sk :call SwitchMakefile(0) + noremap ssh :call SwitchHeader(1) + noremap sst :call SwitchTest(1) + noremap ssk :call SwitchMakefile(1) endif " super i_c-y / i_c-e @@ -614,6 +814,7 @@ if has("eval") && has("autocmd") autocmd FileType cpp :call abbrev_cpp() augroup END endif +" NB: Need more of these for more than cpp "----------------------------------------------------------------------- " special less.sh and man modes @@ -658,12 +859,6 @@ if has("eval") let ruby_operators=1 let ruby_space_errors=1 - " clojure options - let g:clj_want_gorilla = 1 - let g:clj_highlight_builtins = 1 - let g:clj_highlight_contrib = 1 - let g:clj_paren_rainbow = 1 - " php specific options let php_sql_query=1 let php_htmlInStrings=1 @@ -675,7 +870,8 @@ if has("eval") let Tlist_Compact_Format=1 let Tlist_WinWidth=28 let Tlist_Exit_OnlyWindow=1 - let Tlist_File_Fold_Auto_Close = 1 + let Tlist_File_Fold_Auto_Close=1 + let Tlist_Inc_Winwidth=0 "nnoremap :Tlist " Settings minibufexpl.vim @@ -749,7 +945,7 @@ endif " final commands "----------------------------------------------------------------------- " mio -let Tlist_Ctags_Cmd="/usr/bin/exuberant-ctags" +"let Tlist_Ctags_Cmd="/usr/bin/exuberant-ctags" " plegado ident para python au FileType python set foldmethod=indent " plegado syntax para sgml,htmls,xml y xsl @@ -780,11 +976,12 @@ map :set nu! map ggVGg? map :set encoding=utf-8 | :set fenc=utf-8 map :set encoding=iso8859-15 | :set fenc=iso8859-15 -map :SpellProposeAlternatives -map :SpellCheck -map :let spell_language_list = "english,spanish" -nnoremap :Tlist -nnoremap :TlistSync +"map :SpellProposeAlternatives +"map :SpellCheck +"map :let spell_language_list = "english,spanish" +"nnoremap :Tlist +"nnoremap :TlistSync +nnoremap :noh map !!date map :TC nmap :X :x @@ -792,11 +989,13 @@ nmap :W :w nmap :Q :q noremap rg :color relaxedgreen noremap ip :color inkpot +noremap :syntax sync fromstart +inoremap :syntax sync fromstart +syntax sync minlines=200 " Javac -set makeprg=javac\ % -set errorformat=%A%f:%l:\ %m,%-Z%p^,%-C%.%# -map :make +"set makeprg=javac\ % +"set errorformat=%A%f:%l:\ %m,%-Z%p^,%-C%.%# " CVS nmap cadd CVSAdd @@ -822,5 +1021,14 @@ if has("autocmd") au VimEnter * nohls endif +"ii irc stuff +" map c1 :.w! >> ~/irc/irc.cat.pdx.edu/indd +" map c2 :.w! >> ~/irc/irc.cat.pdx.edu/\#hack/indd +" map c3 :.w! >> ~/irc/irc.cat.pdx.edu/\#meow/indd +" map c4 :.w! >> ~/irc/irc.cat.pdx.edu/\#rtttoee/indd +" map c5 :.w! >> ~/irc/irc.cat.pdx.edu/\#robots/indd +" map c17 :.w! >> ~/irc/irc.cat.pdx.edu/\#cschat/indd +" imap /me ACTION + "----------------------------------------------------------------------- " vim: set shiftwidth=4 softtabstop=4 expandtab tw=72 : diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs index d4036a4..07dbd97 100644 --- a/.xmonad/xmonad.hs +++ b/.xmonad/xmonad.hs @@ -6,13 +6,13 @@ import XMonad hiding (Tall) import System.Exit +import XMonad.Layout.Circle +import XMonad.Layout.HintedTile +import XMonad.Layout.MagicFocus +import XMonad.Layout.Magnifier import XMonad.Layout.NoBorders (noBorders, smartBorders) import XMonad.Layout.ResizableTile import XMonad.Layout.SimplestFloat -import XMonad.Layout.Circle -import XMonad.Layout.MagicFocus -import XMonad.Layout.Magnifier -import XMonad.Layout.HintedTile import XMonad.Actions.CopyWindow import XMonad.Actions.DynamicWorkspaces import XMonad.Actions.GridSelect @@ -20,9 +20,10 @@ import XMonad.Actions.NoBorders import XMonad.Actions.Warp(warpToScreen) import XMonad.Actions.WindowBringer import XMonad.Prompt -import XMonad.Util.EZConfig (additionalKeysP) +import XMonad.Util.EZConfig import XMonad.Hooks.EwmhDesktops import XMonad.Hooks.ManageHelpers +import XMonad.Hooks.FadeInactive import XMonad.Hooks.SetWMName import Data.Monoid import Data.List @@ -32,7 +33,7 @@ import qualified XMonad.StackSet as W import qualified Data.Map as M -- mTerminal = "urxvt;ps -U $USER |grep dzen2|awk '{print $1}'|xargs kill -USR1" -mTerminal = "urxvt" +mTerminal = "urxvtc" mBorderWidth = 1 mModMask = mod4Mask @@ -40,7 +41,7 @@ mModMask = mod4Mask -- > workspaces = ["web", "irc", "code" ] ++ map show [4..9] -- mWorkspaces :: [WorkspaceId] -mWorkspaces = map show [1 .. 9 :: Int] +mWorkspaces = map show [0 .. 9 :: Int] -- Border colors for unfocused and focused windows, respectively. -- @@ -51,10 +52,12 @@ mFocusedBorderColor = "#dd0000" -- mKeys = [ ("M-S-n", sendMessage MirrorShrink ) -- Expand current window , ("M-S-t", sendMessage MirrorExpand ) -- Shrink current window + , ("M-r" , warpToCorner ) -- Kill the rodent , ("M-b" , withFocused toggleBorder ) -- Toggle the border of the currently focused window , ("M-g" , warpToCentre >> promptedWs) -- Gridselect to pick windows , ("M-S-b", spawn "ps -U hunner|grep dzen2|awk '{print $1}'|xargs kill -USR1") -- Bring dzen to the front - + , ("", spawn "xlock -mode fzort" ) -- SCReen LocK + -- Sticky/unsticky windows (does not work on workspaces created after the fact) , ("M-a" , windows copyToAll) -- Copy focused window to all workspaces , ("M-S-a", killAllOtherCopies) -- Uncopy focused window from all workspaces @@ -65,13 +68,14 @@ mKeys = [ ("M-S-n", sendMessage MirrorShrink ) -- Expand current window , ("M-S-g", warpToCentre >> goToSelected gsConfig ) -- Multimedia - , ("" , spawn "mpc toggle" ) -- play/pause mpd - , ("" , spawn "mpc stop" ) -- stop mpd - , ("" , spawn "mpc prev" ) -- prev song - , ("" , spawn "mpc next" ) -- next song - , ("", spawn "mpc volume -3" ) -- volume down via custom script - , ("", spawn "mpc volume +3" ) -- volume up via custom script - , ("" , spawn "amixer -q -- sset Headphone togglemute") -- toggle mute via custom script + , ("" , spawn "cmus-remote --pause" ) -- play/pause mpd + , ("" , spawn "cmus-remote --stop" ) -- stop mpd + , ("" , spawn "cmus-remote --prev" ) -- prev song + , ("" , spawn "cmus-remote --next" ) -- next song + , ("", spawn "amixer -q set PCM 1-") -- volume down + , ("", spawn "amixer -q set PCM 1+") -- volume up + , ("" , spawn "amixer -q set Headphone toggle") -- toggle mute + , ("M-" , spawn "amixer -q set Speaker toggle") -- Dynamic workspace commands , ("M-S-" , removeWorkspace) @@ -84,21 +88,29 @@ mKeys = [ ("M-S-n", sendMessage MirrorShrink ) -- Expand current window -- if there is a workspace existing target name that is empty, delete it before moving -- else leave everything as it is (no move/rename) ] + ++ -- mod-[1..9] %! Switch to workspace N if it exists + zip (map (("M-" ++) . show) [0..9]) (map (windows . W.greedyView) (workspaces mConfig)) + ++ -- mod-shift-[1..9] %! Move window to workspace N if it exists + zip (map (("M-S-" ++) . show) [0..9]) (map (windows . W.shift) (workspaces mConfig)) + -- Don't auto-assign the key shortcuts to dynamic workspaces. I want them staying on [1..9] only + -- ++ -- mod-[1..9] %! Switch to Nth workspace that exists in alphabetical order + -- zip (map (("M-" ++) . show) [0..9]) (map (withNthWorkspace W.greedyView) [0..]) + -- ++ -- mod-[1..9] %! Move window to Nth workspace that exists in alphabetical order + -- zip (map (("M-S-" ++) . show) [0..9]) (map (withNthWorkspace W.shift) [0..]) ++ -- mod-{o,e,u} %! Switch to physical/Xinerama screens 0, 1, or 2 zip (map ("M-" ++) ["o","e","u"]) (map (\x -> screenWorkspace x >>= flip whenJust (windows . W.view)) [0..]) ++ -- mod-shift-{o,e,u} %! Move client to screen 0, 1, or 2 zip (map ("M-S-" ++) ["o","e","u"]) (map (\x -> screenWorkspace x >>= flip whenJust (windows . W.shift)) [0..]) - -- Don't auto-assign the key shortcuts to dynamic workspaces. I want them staying on [1..9] only - -- ++ - -- zip (map (("M-" ++) . show) [1..9]) (map (withNthWorkspace W.greedyView) [0..]) - -- ++ - -- zip (map (("M-S-" ++) . show) [1..9]) (map (withNthWorkspace W.shift) [0..]) where -- Make the mouse jump to the middle of the screen for gridselect warpToCentre = gets (W.screen . W.current . windowset) >>= \x -> warpToScreen x 0.5 0.5 + warpToCorner = gets (W.screen . W.current . windowset) >>= \x -> warpToScreen x 1.0 1.0 promptedWs = wsgrid >>= \x -> whenJust x $ \y -> windows $ W.greedyView y wsgrid = gridselect gsConfig =<< gets (map (\x -> (x,x)) . (map W.tag . W.workspaces . windowset)) --wsgrid = gridselect gsConfig =<< gets (map (\x -> (x,x)) . (map W.tag . uncurry (++) . partition (isJust . W.stack) . W.workspaces . windowset)) -- (map W.tag . W.workspaces . windowset)) +mKeysExt = [((m .|. mModMask, k), f i) -- changing workspaces with bébo + | (i, k) <- zip ([0..]) [0x2a,0x22,0xab,0xbb,0x28,0x29,0x40,0x2b,0x2d,0x2f] + , (f, m) <- [(withNthWorkspace W.greedyView, 0), (withNthWorkspace W.shift, shiftMask)]] {- [10:28] dschoepe : gets (map W.tag . W.workspaces . windowset) should work [10:31] aavogt : somewhat useful variation on that is: @@ -159,12 +171,16 @@ mManageHook = composeAll , title =? "VLC media player" --> doFloat , className =? "Gimp" --> doFloat , className =? "Anki" --> doFloat + , className =? "XCalc" --> doFloat + , className =? "XClock" --> doFloat , className =? "Skype" --> doFloat , className =? "googleearth" --> doFloat , className =? "Pidgin" --> doFloat , className =? "mangclient" --> doFloat , className =? "CellWriter" --> doFloat , className =? "Gvba" --> doFloat + , className =? "Thunar" --> doFloat + , className =? "feh" --> doFloat , className =? "Cellwriter" --> doIgnore , resource =? "desktop_window" --> doIgnore , resource =? "kdesktop" --> doIgnore @@ -195,17 +211,19 @@ pickyFocusEventHook _ = return $ All True -- Run xmonad! -- -main = do - xmonad $ defaultConfig - { terminal = mTerminal - , focusFollowsMouse = mFocusFollowsMouse - , borderWidth = mBorderWidth - , modMask = mModMask - , workspaces = mWorkspaces - , normalBorderColor = mNormalBorderColor - , focusedBorderColor = mFocusedBorderColor - , layoutHook = mLayout - , manageHook = mManageHook - , handleEventHook = pickyFocusEventHook - , startupHook = ewmhDesktopsStartup >> setWMName "LG3D" - } `additionalKeysP` mKeys +main = xmonad $ mConfig +mConfig = defaultConfig + { terminal = mTerminal + , focusFollowsMouse = mFocusFollowsMouse + , borderWidth = mBorderWidth + , modMask = mModMask + , workspaces = mWorkspaces + , normalBorderColor = mNormalBorderColor + , focusedBorderColor = mFocusedBorderColor + , layoutHook = mLayout + , manageHook = mManageHook + , handleEventHook = pickyFocusEventHook + , startupHook = do + ewmhDesktopsStartup >> setWMName "LG3D" + return () >> checkKeymap mConfig mKeys + } `additionalKeysP` mKeys `additionalKeys` mKeysExt diff --git a/.zshrc b/.zshrc index 03db1fa..6ec1fff 100644 --- a/.zshrc +++ b/.zshrc @@ -1,11 +1,11 @@ # Options -setopt appendhistory autocd extendedglob nomatch notify dvorak # correct +setopt appendhistory hist_ignore_space hist_ignore_all_dups extendedglob nomatch notify dvorak # correct unsetopt beep bindkey -e zstyle :compinstall filename '~/.zshrc' autoload -Uz compinit compinit -u -bindkey '^L' push-line +#bindkey '^L' push-line bindkey "^I" expand-or-complete-prefix umask 022 @@ -19,20 +19,29 @@ esac #export LD_LIBRARY_PATH=/opt/csw/lib #zsh's path export PATH=/usr/sbin:/usr/bin:/sbin:/bin -export MANPATH=/usr/man:/usr/share/man -paths=(~/.cabal/bin /cat/bin /cat/games/bin /opt/csw/sbin /opt/csw/bin -/pkgs/ghc/current/bin /usr/sfw/sbin /usr/sfw/bin /opt/SUNWut/sbin -/opt/SUNWut/bin /usr/ccs/bin /usr/local/bin /usr/openwin/bin +export MANPATH=~/local/share/man:/usr/man:/usr/share/man +paths=(/cat/bin /cat/games/bin /opt/csw/sbin /opt/csw/bin +/pkgs/ghc/current/bin /pkgs/chromium/bin /usr/sfw/sbin /usr/sfw/bin +/opt/SUNWut/sbin /opt/SUNWut/bin /usr/ccs/bin /usr/local/bin /usr/openwin/bin /usr/bin/X11 /usr/local/bin/X11 /usr/openwin/bin/xview /opt/java/bin /opt/java5/bin /opt/java/jre/bin /opt/openoffice/program) +prepaths=(~/.cabal/bin ~/local/bin ~/local/sbin ~/local/share/bin) for dir in $paths ; do if [ -d $dir ] ; then export PATH=$PATH:$dir - if [ -d `dirname $dir` ] ; then + if [ -d `dirname $dir`/man ] ; then export MANPATH=$MANPATH:`dirname $dir`/man fi fi done +for dir in $prepaths ; do + if [ -d $dir ] ; then + export PATH=$dir:$PATH + if [ -d `dirname $dir`/man ] ; then + export MANPATH=`dirname $dir`/man:$MANPATH + fi + fi +done # Load profiles from /etc/profile.d if test -d /etc/profile.d/; then for profile in /etc/profile.d/*.sh; do @@ -40,11 +49,6 @@ if test -d /etc/profile.d/; then done unset profile fi -if [ -d ~/local/bin ] ; then - export PATH=~/local/bin:~/local/sbin:$PATH - export MANPATH=~/local/man:$MANPATH - export MANPATH=~/local/share/man:$MANPATH -fi #gem's path if [ -d ~/.gems/bin ] ; then export PATH="$HOME/.gems/bin:$PATH" @@ -58,8 +62,8 @@ fi export GEM_HOME="$HOME/.gems" export GEM_PATH="$GEM_HOME:/usr/lib/ruby/gems/1.8" zshhosts=(serenity.cat.pdx.edu hunner@mint.cic.pdx.edu drkatz.cat.pdx.edu walt.ece.pdx.edu bunny.cat.pdx.edu spof.cat.pdx.edu fops.cat.pdx.edu narsil.cat.pdx.edu hunner@odin.pdx.edu hunnur@alcmaeonllc.com mir.cat.pdx.edu geppetto.cat.pdx.edu) -HISTSIZE=10000 -SAVEHIST=10000 +HISTSIZE=1000 +SAVEHIST=1000 HISTFILE=~/.history PS1="%m%# " export LANG="en_US.UTF-8" @@ -73,7 +77,9 @@ export LC_COLLATE="C" #order files in ls export DIALOGOPTS='--visit-items' export MAIL=~/mail export MAILCHECK=0 -export AWT_TOOLKIT=MToolkit +#export AWT_TOOLKIT=MToolkit +#export AWT_TOOLKIT=XToolkit +export _JAVA_AWT_WM_NONREPARENTING=1 if [ -x `which less` ] ; then export PAGER==less else @@ -119,7 +125,8 @@ alias la="l -Fa" alias lla="ll -Fa" alias c="cd" alias e="TERM=rxvt-256color; emacs -nw" -alias ec="emacsclient" +alias et="TERM=rxvt-256color; emacsclient -t" +alias ec="emacsclient -c --eval '(set-background-color \"black\")'" alias ecx="emacsclient --eval '(make-frame-on-display \"$DISPLAY\")'" #alias s="TERM=xterm;ssh serenity.cat.pdx.edu" alias s="TERM=rxvt;ssh hunner@serenity.cat.pdx.edu" @@ -150,7 +157,7 @@ alias rm=rm; unalias rm #hack alias gem="nice -n19 gem" alias uzbl="uzbl-browser" #startup aliases -alias -s pdf="xpdf" +alias -s pdf="zathura" alias -s txt="vi" alias -s flv="mplayer" alias -s avi="mplayer" @@ -171,33 +178,11 @@ if [ x$DISPLAY != x ] ; then precmd() { [ -z "$WINTITLE" ] && print -Pn "\e]0;%m [%~]\a" || : } preexec() { [ -z "$WINTITLE" ] && print -Pn "\e]0;%m [$1]\a" || : } fi -resize() { printf '\33]50;%s%d\007' "xft:Terminus:pixelsize=" $1 ":antialias=true" } -asdf() { - if [ `uname -s` = "SunOS" ] ; then - if [ x`hostname` = x"chandra.cs.pdx.edu" ] ; then - xmodmap ~/keymaps/eo_dv_hunner_type7.pke - else - xmodmap ~/keymaps/eo_dv_hunner_type7.pke - fi - else - if [ x`hostname` = x"ni" ] ; then - xmodmap ~/keymaps/nu_x61.pke - else - xmodmap ~/keymaps/nu_std.pke - fi - fi -} -aoeu() { - if [ `uname -s` = "SunOS" ] ; then - xmodmap ~/keymaps/original-type7-sol.pke - else - if [ x`hostname` = x"ni" ] ; then - xmodmap ~/keymaps/qwerty_x61.pke - else - xmodmap ~/keymaps/kvar.pke - fi - fi -} +alias resize="printf '\33]50;%s%d\007' 'xft:Terminus:pixelsize=' $1" # ':antialias=true'" +alias asdf="xkbcomp -w0 ~/keymaps/xkb/hunner.xkb $DISPLAY" +alias auie="xkbcomp -w0 ~/keymaps/xkb/hunner.xkb $DISPLAY" +alias aoeu='setxkbmap us' +alias bepo='setxkbmap fr bepo "ctrl:swapcaps"' type7() { if [ `uname -s` = "SunOS" ] ; then xmodmap ~/keymaps/eo_dv_hunner_type7_sol.pke diff --git a/keymaps/nu_type7.pke b/keymaps/nu_type7.pke index 93f9e69..6de128c 100644 --- a/keymaps/nu_type7.pke +++ b/keymaps/nu_type7.pke @@ -8,64 +8,64 @@ clear Mod4 clear Mod5 keycode 8 = -keycode 9 = Escape dead_circumflex dead_grave dead_tilde NoSymbol Escape -keycode 10 = 7 ampersand 7 ampersand 7 ampersand -keycode 11 = 5 percent EuroSign cent 5 percent -keycode 12 = 3 numbersign 3 numbersign 3 numbersign +keycode 9 = Escape dead_circumflex dead_grave dead_tilde Escape +keycode 10 = 7 ampersand 7 ampersand 7 ampersand 7 ampersand +keycode 11 = 5 percent EuroSign cent 5 percent 5 percent EuroSign +keycode 12 = 3 numbersign 3 numbersign 3 numbersign sterling keycode 13 = 1 exclam 1 exclam 1 exclam -keycode 14 = 9 parenleft leftsinglequotemark leftdoublequotemark 9 parenleft -keycode 15 = 0 parenright rightsinglequotemark rightdoublequotemark 0 parenright +keycode 14 = 9 parenleft leftsinglequotemark leftdoublequotemark 9 parenleft degree +keycode 15 = 0 parenright rightsinglequotemark rightdoublequotemark 0 parenright plusminus keycode 16 = 2 at 2 at 2 at keycode 17 = 4 dollar 4 dollar 4 dollar keycode 18 = 6 asciicircum dead_circumflex asciicircum 6 asciicircum keycode 19 = 8 asterisk 8 asterisk 8 asterisk -keycode 20 = bracketleft braceleft bracketleft braceleft bracketleft braceleft -keycode 21 = bracketright braceright bracketright braceright bracketright braceright -keycode 22 = BackSpace bar BackSpace brokenbar BackSpace bar +keycode 20 = bracketleft braceleft bracketleft braceleft bracketleft braceleft dead_dasia dead_dasia +keycode 21 = bracketright braceright bracketright braceright bracketright braceright dead_psili dead_psili +keycode 22 = BackSpace bar BackSpace brokenbar BackSpace keycode 23 = Tab ISO_Left_Tab Tab ISO_Left_Tab Tab ISO_Left_Tab -keycode 24 = apostrophe quotedbl dead_acute dead_diaeresis apostrophe quotedbl -keycode 25 = comma less dead_cedilla dead_caron comma less -keycode 26 = period greater dead_breve dead_abovedot period greater -keycode 27 = p P paragraph P p P -keycode 28 = y Y yen heart y Y -keycode 29 = f F f F f F -keycode 30 = g G gcircumflex Gcircumflex g G -keycode 31 = c C ccircumflex Ccircumflex c C -keycode 32 = r R r R r R -keycode 33 = l L l L l L -keycode 34 = slash question dead_hook dead_hook slash question +keycode 24 = apostrophe quotedbl dead_acute dead_diaeresis apostrophe quotedbl dead_grave dead_grave +keycode 25 = comma less dead_cedilla dead_caron comma greater guillemotleft +keycode 26 = period greater dead_breve dead_abovedot period less guillemotright +keycode 27 = p P paragraph P Greek_pi Greek_PI +keycode 28 = y Y yen heart Greek_upsilon Greek_UPSILON +keycode 29 = f F f F Greek_phi Greek_PHI +keycode 30 = g G gcircumflex Gcircumflex Greek_gamma Greek_GAMMA +keycode 31 = c C ccircumflex Ccircumflex Greek_psi Greek_PSI copyright +keycode 32 = r R r R Greek_rho Greek_RHO registered +keycode 33 = l L l L Greek_lamda Greek_LAMDA +keycode 34 = slash question dead_hook question slash question slash question keycode 35 = equal plus dead_doubleacute dead_horn equal plus keycode 36 = Return NoSymbol Return NoSymbol Return keycode 37 = Control_L NoSymbol Control_L NoSymbol Control_L -keycode 38 = a A a A a A -keycode 39 = o O o O o O -keycode 40 = e E EuroSign cent e E -keycode 41 = u U U016D U016C u U -keycode 42 = i I i I i I -keycode 43 = d D d D d D -keycode 44 = h H hcircumflex Hcircumflex h H -keycode 45 = t T t T t T -keycode 46 = n N n N n N -keycode 47 = s S scircumflex Scircumflex s S -keycode 48 = minus underscore dead_macron dead_belowdot minus underscore -keycode 49 = grave asciitilde dead_grave dead_tilde grave asciitilde +keycode 38 = a A a A Greek_alpha Greek_ALPHA +keycode 39 = o O o O Greek_omicron Greek_OMICRON +keycode 40 = e E EuroSign cent Greek_epsilon Greek_EPSILON EuroSign +keycode 41 = u U U016D U016C Greek_theta Greek_THETA +keycode 42 = i I i I Greek_iota Greek_IOTA dead_iota dead_iota +keycode 43 = d D d D Greek_delta Greek_DELTA +keycode 44 = h H hcircumflex Hcircumflex Greek_eta Greek_ETA +keycode 45 = t T t T Greek_tau Greek_TAU +keycode 46 = n N n N Greek_nu Greek_NU +keycode 47 = s S scircumflex Scircumflex Greek_sigma Greek_SIGMA +keycode 48 = minus underscore dead_macron dead_belowdot minus underscore minus underscore +keycode 49 = grave asciitilde dead_grave dead_tilde grave asciitilde dead_grave dead_tilde keycode 50 = Shift_L NoSymbol Shift_L NoSymbol Shift_L keycode 51 = backslash bar brokenbar brokenbar backslash bar -keycode 52 = semicolon colon dead_ogonek dead_diaeresis semicolon colon -keycode 53 = q Q q Q q Q -keycode 54 = j J jcircumflex Jcircumflex j J -keycode 55 = k K k K k K -keycode 56 = x X x X x X -keycode 57 = b B b B b B -keycode 58 = m M m M m M -keycode 59 = w W w W w W -keycode 60 = v V v V v V -keycode 61 = z Z z Z z Z -keycode 62 = Shift_R NoSymbol Shift_R NoSymbol Shift_R +keycode 52 = semicolon colon dead_ogonek dead_diaeresis dead_acute dead_diaeresis dead_psili dead_psili +keycode 53 = q Q q Q semicolon colon periodcentered +keycode 54 = j J jcircumflex Jcircumflex Greek_xi Greek_XI +keycode 55 = k K k K Greek_kappa Greek_KAPPA +keycode 56 = x X x X Greek_chi Greek_CHI +keycode 57 = b B b B Greek_beta Greek_BETA +keycode 58 = m M m M Greek_mu Greek_MU +keycode 59 = w W w W Greek_finalsmallsigma Greek_SIGMA +keycode 60 = v V v V Greek_omega Greek_OMEGA +keycode 61 = z Z z Z Greek_zeta Greek_ZETA +keycode 62 = Shift_R ISO_Next_Group ISO_Group_Shift ISO_Next_Group ISO_Group_Shift ISO_First_Group keycode 63 = KP_Multiply XF86_ClearGrab KP_Multiply XF86_ClearGrab KP_Multiply XF86_ClearGrab keycode 64 = Alt_L Meta_L Alt_L Meta_L Alt_L Meta_L keycode 65 = space NoSymbol space NoSymbol space -keycode 66 = Caps_Lock NoSymbol Caps_Lock NoSymbol Caps_Lock +keycode 66 = Mode_switch NoSymbol Mode_switch NoSymbol Mode_switch keycode 67 = F1 XF86_Switch_VT_1 F1 XF86_Switch_VT_1 F1 XF86_Switch_VT_1 keycode 68 = F2 XF86_Switch_VT_2 F2 XF86_Switch_VT_2 F2 XF86_Switch_VT_2 keycode 69 = F3 XF86_Switch_VT_3 F3 XF86_Switch_VT_3 F3 XF86_Switch_VT_3 @@ -91,7 +91,7 @@ keycode 88 = KP_Down KP_2 KP_Down KP_2 KP_Down KP_2 keycode 89 = KP_Next KP_3 KP_Next KP_3 KP_Next KP_3 keycode 90 = KP_Insert KP_0 KP_Insert KP_0 KP_Insert KP_0 keycode 91 = KP_Delete KP_Decimal KP_Delete KP_Decimal KP_Delete KP_Decimal -keycode 92 = ISO_Level3_Shift NoSymbol ISO_Level3_Shift NoSymbol ISO_Level3_Shift +keycode 92 = Shift_R NoSymbol Shift_R NoSymbol Shift_R keycode 93 = keycode 94 = less greater less greater bar brokenbar keycode 95 = F11 XF86_Switch_VT_11 F11 XF86_Switch_VT_11 F11 XF86_Switch_VT_11 @@ -107,7 +107,7 @@ keycode 104 = KP_Enter NoSymbol KP_Enter NoSymbol KP_Enter keycode 105 = Control_R NoSymbol Control_R NoSymbol Control_R keycode 106 = KP_Divide XF86_Ungrab KP_Divide XF86_Ungrab KP_Divide XF86_Ungrab keycode 107 = Print Sys_Req Print Sys_Req Print Sys_Req -keycode 108 = Alt_R Meta_R Alt_R Meta_R Alt_R Meta_R +keycode 108 = Caps_Lock NoSymbol Caps_Lock NoSymbol Caps_Lock keycode 109 = Linefeed NoSymbol Linefeed NoSymbol Linefeed keycode 110 = Home NoSymbol Home NoSymbol Home keycode 111 = Up NoSymbol Up NoSymbol Up @@ -202,7 +202,7 @@ keycode 199 = keycode 200 = keycode 201 = keycode 202 = -keycode 203 = Mode_switch NoSymbol Mode_switch NoSymbol Mode_switch +keycode 203 = Alt_R Meta_R Alt_R Meta_R Alt_R Meta_R keycode 204 = NoSymbol Alt_L NoSymbol Alt_L NoSymbol Alt_L keycode 205 = NoSymbol Meta_L NoSymbol Meta_L NoSymbol Meta_L keycode 206 = NoSymbol Super_L NoSymbol Super_L NoSymbol Super_L @@ -212,7 +212,7 @@ keycode 209 = XF86AudioPause NoSymbol XF86AudioPause NoSymbol XF86AudioPause keycode 210 = XF86Launch3 NoSymbol XF86Launch3 NoSymbol XF86Launch3 keycode 211 = XF86Launch4 NoSymbol XF86Launch4 NoSymbol XF86Launch4 keycode 212 = -keycode 213 = XF86Suspend NoSymbol XF86Suspend NoSymbol XF86Suspend +keycode 213 = keycode 214 = XF86Close NoSymbol XF86Close NoSymbol XF86Close keycode 215 = XF86AudioPlay NoSymbol XF86AudioPlay NoSymbol XF86AudioPlay keycode 216 = XF86Forward NoSymbol XF86Forward NoSymbol XF86Forward @@ -256,37 +256,11 @@ keycode 253 = keycode 254 = keycode 255 = -!Original -!shift Shift_L (0x32), Shift_R (0x3e) -!lock Control_L (0x25) -!control , Control_R (0x6d), Caps_Lock (0x42) -!mod1 Alt_L (0x40), Alt_R (0x71), Meta_L (0x9c) -!mod2 Num_Lock (0x4d) -!mod3 -!mod4 Super_L (0x7f), Hyper_L (0x80) -!mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x7c) - -!2nd -!shift Shift_L (0x32), Shift_R (0x3e) -!lock Caps_Lock (0x25) -!control , Control_R (0x6d), Control_L (0x42) -!mod1 Alt_L (0x40), Alt_L (0x7d), ISO_Level3_Shift (0x71), ISO_Level3_Shift (0x7c), Meta_L (0x9c) -!mod2 Num_Lock (0x4d) -!mod3 -!mod4 Super_L (0x73), Super_L (0x7f), Hyper_L (0x80) -!mod5 Mode_switch (0x5d), ISO_Level3_Shift (0x71), ISO_Level3_Shift (0x7c) - -add shift = Shift_L Shift_R -add lock = Caps_Lock -add control = Control_L Control_R -add mod1 = Alt_L Meta_L Alt_R Meta_R -add mod2 = Mode_switch -add mod3 = Num_Lock -add mod4 = Super_L Hyper_L Super_R Hyper_R -add mod5 = ISO_Level3_Shift - -!remove Lock = Caps_Lock -!add Control = Caps_Lock -!remove Control = Control_L -!add Lock = Control_L -!keysym Caps_Lock = Mode_switch +add Shift = Shift_L Shift_R +add Lock = Caps_Lock +add Control = Control_L Control_R +add Mod1 = Alt_L Meta_L Alt_R Meta_R +add Mod2 = Num_Lock +add Mod3 = ISO_Level3_Shift +add Mod4 = Super_L Hyper_L Super_R Hyper_R +!add Mod5 = Mode_switch diff --git a/keymaps/xkb/hunner-carpalx.xkb b/keymaps/xkb/hunner-carpalx.xkb new file mode 100644 index 0000000..ffd8cb1 --- /dev/null +++ b/keymaps/xkb/hunner-carpalx.xkb @@ -0,0 +1,100 @@ +xkb_keymap { + xkb_keycodes { include "evdev+aliases(qwerty)" }; + xkb_types { include "complete" }; + xkb_compat { include "complete" }; + xkb_geometry { include "thinkpad(us)" }; + + xkb_symbols "hunner" { + include "pc+us(dvorak)+inet(evdev)" + + name[group1]="Dvorak"; + //name[group2]="Colemak"; + //name[group3]="QGMLWB"; + // Alphanumeric section + + // Unmodified Shift AltGr Shift+AltGr + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + + // Number row, left side + key { [ Escape ] }; + key { [ 7, ampersand ] }; + key { [ 5, percent, EuroSign, cent ] }; + key { [ 3, numbersign, sterling, sterling ] }; + key { [ 1, exclam, 1, exclamdown ] }; + key { [ 9, parenleft, dead_grave ] }; + + // Number row, right side + key { [ 0, parenright ] }; + key { [ 2, at ] }; + key { [ 4, dollar ] }; + key { [ 6, asciicircum, dead_circumflex, dead_circumflex ] }; + key { [ 8, asterisk ] }; + key { [ minus, underscore, endash, emdash ] }; + key { [ equal, plus, multiply, division ] }; + key { [ backslash, bar ] }; + + // Upper row, left side + key { [ Tab, ISO_Left_Tab ] }; + key { [ q, Q ] }; + key { [ g, G, gcircumflex, Gcircumflex ] }; + key { [ m, M ] }; + key { [ l, L ] }; + key { [ w, W ] }; + + // Upper row, right side + key { [ b, B ] }; + key { [ y, Y, yen, heart ] }; + key { [ u, U, U016D, U016C ] }; + key { [ v, V ] }; + key { [ semicolon, colon, dead_ogonek, dead_diaeresis ] }; + key { [ bracketleft, braceleft, hyphen ] }; + key { [ bracketright, braceright, dead_tilde ] }; + key { [ BackSpace, bar, brokenbar ] }; + + // Home row, left side + key { [ Control_L ] }; + key { [ d, D ] }; + key { [ s, S, scircumflex, Scircumflex ] }; + key { [ t, T, ssharp, ssharp ] }; + key { [ n, N ] }; + key { [ r, R ] }; + + // Home row, right side + key { [ i, I ] }; + key { [ a, A ] }; + key { [ e, E, EuroSign ] }; + key { [ o, O ] }; + key { [ h, H, hcircumflex, Hcircumflex ] }; + key { [ apostrophe, quotedbl, dead_acute, dead_diaeresis ] }; + key { [ Return ] }; + + // Lower row, left side + key { [ Shift_L ] }; + key { [ z, Z ] }; + key { [ x, X ] }; + key { [ c, C, ccircumflex, Ccircumflex ] }; + key { [ f, F ] }; + key { [ j, J, jcircumflex, Jcircumflex ] }; + + // Lower row, right side + key { [ k, K ] }; + key { [ p, P, paragraph ] }; + key { [ comma, less, dead_cedilla, dead_caron ] }; + key { [ period, greater, dead_breve, dead_abovedot ] }; + key { [ slash, question, dead_hook, questiondown ] }; + key { [ Shift_R ] }; + + // Mod row + key { [ Caps_Lock ] }; + key { [ Super_L ] }; + key { [ space, space ] }; + key { [ Super_R ] }; +// key { [ Menu ] }; + + modifier_map Lock { }; + modifier_map Control { }; + + include "group(alts_toggle)+level3(ralt_switch_for_alts_toggle)" + }; + +}; diff --git a/keymaps/xkb/hunner.xkb b/keymaps/xkb/hunner.xkb index f35ba74..88a5434 100644 --- a/keymaps/xkb/hunner.xkb +++ b/keymaps/xkb/hunner.xkb @@ -5,13 +5,15 @@ xkb_keymap { xkb_geometry { include "thinkpad(us)" }; xkb_symbols "hunner" { - include "pc+us(dvorak)+inet(evdev)" + include "pc+us(dvorak)+inet(evdev)+group(win_switch)" name[group1]="Dvorak"; + //name[group2]="Colemak"; + //name[group3]="QGMLWB"; // Alphanumeric section // Unmodified Shift AltGr Shift+AltGr - key { [ backslash, bar ] }; + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; // Number row, left side key { [ Escape ] }; @@ -29,7 +31,7 @@ xkb_keymap { key { [ 8, asterisk ] }; key { [ bracketleft, braceleft, hyphen ] }; key { [ bracketright, braceright, dead_tilde ] }; - key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ backslash, bar ] }; // Upper row, left side key { [ Tab, ISO_Left_Tab ] }; @@ -38,7 +40,6 @@ xkb_keymap { key { [ period, greater, dead_breve, dead_abovedot ] }; key { [ p, P, paragraph ] }; key { [ y, Y, yen, heart ] }; - key { [ BackSpace, bar, brokenbar ] }; // Upper row, right side key { [ f, F ] }; @@ -48,7 +49,7 @@ xkb_keymap { key { [ l, L ] }; key { [ slash, question, dead_hook, questiondown ] }; key { [ equal, plus, multiply, division ] }; - key { [ Return ] }; + key { [ BackSpace, bar, brokenbar ] }; // Home row, left side key { [ Control_L ] }; @@ -65,6 +66,7 @@ xkb_keymap { key { [ n, N ] }; key { [ s, S, scircumflex, Scircumflex ] }; key { [ minus, underscore, endash, emdash ] }; + key { [ Return ] }; // Lower row, left side key { [ Shift_L ] };