(Download this .emacs)
(setq disabled-command-function nil)
(and (fboundp 'menu-bar-mode) (menu-bar-mode -1))
(and (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
(and (fboundp 'tool-bar-mode) (tool-bar-mode -1))
(and (fboundp 'tooltip-mode) (fboundp 'x-show-tip) (tooltip-mode -1))
(and (fboundp 'blink-cursor-mode) (blink-cursor-mode (- (*) (*) (*))))
(fset 'yes-or-no-p 'y-or-n-p)
(and (require 'battery nil t)
(functionp battery-status-function)
(or (equal (cdr (assoc ?L (funcall battery-status-function))) "on-line")
(display-battery-mode)))
(or standard-display-table (setq standard-display-table (make-display-table)))
(aset standard-display-table ?\^L (vconcat (make-vector 64 ?-) "^L"))
(if (facep 'escape-glyph)
(let* ((face (lsh (face-id 'escape-glyph) 22)) (backslash (+ face ?\\))
(dot (+ face #x2023)))
(set-char-table-extra-slot standard-display-table 4 (vector dot))))
(setq gc-cons-percentage 0.3)
(setq print-gensym t)
(setq print-circle t)
(setq redisplay-dont-pause t)
(setq tabify-regexp "^[ \t]+")
(setq-default major-mode (lambda ()
(if buffer-file-name
(fundamental-mode)
(let ((buffer-file-name (buffer-name)))
(set-auto-mode)))))
split-window-horizontallyfollow-mode
(cond
((eq window-system 'x)
(create-fontset-from-ascii-font "-misc-fixed-medium-r-*--10-*-*-*-*-*-*-*")
(setq default-frame-alist
(append
'(
(font . "-misc-fixed-medium-r-normal--10-*-*-*-c-60-iso8859-1")
(cursor-type . bar)
(vertical-scroll-bars . nil)
(horizontal-scroll-bars . nil)
(scroll-bar-width . 0)
(internal-border-width . 0)
(menu-bar-lines . 0)
(tool-bar-lines . 0)
(line-spacing . 0))
default-frame-alist))))
(when (and (display-mouse-p) (require 'avoid nil t))
(defun mouse-avoidance-banish-destination ()
(cons (+ 3 (frame-width)) (frame-height)))
(mouse-avoidance-mode 'banish))
(defun my-colors-light (&optional frame)
"Set colors suitable for working in light environments,
i.e. in daylight or under bright electric lamps."
(interactive)
(setq frame-background-mode 'light)
(if frame
(select-frame frame)
(setq frame (selected-frame)))
(set-background-color "white")
(set-foreground-color "black")
(when (facep 'region)
(set-face-background 'region "DarkGrey" frame))
(when (facep 'fringe)
(set-face-background 'fringe (face-background 'default) frame)
(set-face-foreground 'fringe (face-foreground 'default) frame))
(when (and (facep 'mode-line)
(file-exists-p "/root")
(file-writable-p "/root"))
(set-face-background 'mode-line "firebrick")))
(define-key global-map [f6 ?c ?s] 'my-colors-light)
(defun my-colors-dark (&optional frame)
"Set colors suitable for working in the darkness without electricity."
(interactive)
(setq frame-background-mode 'dark)
(if frame
(select-frame frame)
(setq frame (selected-frame)))
(set-background-color "black")
(set-foreground-color "DarkGrey")
(when (facep 'region)
(set-face-background 'region "DimGray" frame))
(when (facep 'fringe)
(set-face-background 'fringe (face-background 'default) frame)
(set-face-foreground 'fringe (face-foreground 'default) frame)))
(define-key global-map [f6 ?c ?d] 'my-colors-dark)
calendar-latitudecalendar-longitudesolar-sunrise-sunset(defun my-colors-set (&optional frame)
(interactive)
(require 'solar)
(if (and calendar-latitude calendar-longitude calendar-time-zone)
(let* ((l (solar-sunrise-sunset (calendar-current-date)))
(sunrise-string (apply 'solar-time-string (car l)))
(sunset-string (apply 'solar-time-string (car (cdr l))))
(current-time-string (format-time-string "%H:%M")))
(if (or (string-lessp current-time-string sunrise-string)
(string-lessp sunset-string current-time-string))
(my-colors-dark frame)
(my-colors-light frame))
(if (and (boundp 'my-sunset-timer) (timerp my-sunset-timer))
(cancel-timer my-sunset-timer))
(if (and (boundp 'my-sunrise-timer) (timerp my-sunrise-timer))
(cancel-timer my-sunrise-timer))
(setq my-sunset-timer (run-at-time sunset-string (* 60 60 24)
'my-colors-dark))
(setq my-sunrise-timer (run-at-time sunrise-string (* 60 60 24)
'my-colors-light)))))
(add-to-list 'after-make-frame-functions 'my-colors-set)
(defun my-faces-fix (&optional frame)
"Fix defined faces."
(interactive)
custom-define-hook custom-declare-faceface (when (boundp 'face)
(dolist (face (face-list))
(when (face-italic-p face frame)
(if (equal (face-foreground face frame) "black")
(set-face-foreground face "gray50" frame)))
(when (face-bold-p face frame)
(set-face-bold-p face nil frame)
(set-face-underline-p face t frame))
(when (numberp (face-attribute face :height frame))
(set-face-attribute face frame :height 'unspecified))
(when (numberp (face-attribute face :width frame))
(set-face-attribute face frame :width 'unspecified))
)))
my-faces-fix(add-to-list 'custom-define-hook 'my-faces-fix)
(define-key global-map [(control left)] 'backward-sexp)
(define-key global-map [(control right)] 'forward-sexp)
(define-key global-map [(control meta left)] 'backward-word)
(define-key global-map [(control meta right)] 'forward-word)
(define-key global-map [(meta left)] 'dired-jump)
(define-key global-map [(meta right)] 'my-find-thing-at-point)
(define-key global-map [(control meta up)] 'backward-paragraph)
(define-key global-map [(control meta down)] 'forward-paragraph)
(define-key global-map [home] 'beginning-of-visual-line)
(define-key global-map [end] 'end-of-visual-line)
(define-key global-map [up] 'previous-line)
(define-key global-map [down] 'next-line)
(define-key global-map "\C-p" 'previous-logical-line) (define-key global-map "\C-n" 'next-logical-line)
(define-key global-map [(control backspace)] 'backward-kill-word)
(define-key global-map [(control ?=)] 'compare-windows)
compare-windowscomapre-windows(defalias 'comapre-windows 'compare-windows)
(define-key global-map [(control kp-home)] 'beginning-of-buffer)
(define-key global-map [(control kp-end)] 'end-of-buffer)
(define-key global-map [(control shift kp-5)] 'goto-line)
(define-key global-map [(control kp-begin)] 'goto-line)
(define-key global-map [(meta kp-divide)] 'hippie-expand)
(define-key global-map [(control x) (c) (b)] 'clone-buffer)
(define-key ctl-x-map "\C-\M-u" 'raise-sexp) C-M-u(define-key ctl-x-map "\M-(" 'delete-pair)
(define-key global-map [f1] 'info)
(define-key global-map [(control f1)] 'info-lookup-symbol)
(define-key global-map [f2] 'save-buffer)
(define-key global-map [f9] 'call-last-kbd-macro)
(define-key global-map [(control f9)] 'compile)
(define-key global-map [(meta f7)] 'grep) (define-key global-map [(meta shift f7)] 'grep-find)
(define-key goto-map "re" 'grep)
(define-key goto-map "rr" 'rgrep)
(define-key goto-map "rl" 'lgrep)
(define-key goto-map "\M-r\M-e" 'grep)
(define-key goto-map "\M-r\M-r" 'rgrep)
(define-key goto-map "\M-r\M-l" 'lgrep)
(define-key global-map [f11] 'previous-buffer) (define-key global-map [f12] 'next-buffer)
(define-key global-map [(control f11)] 'previous-error)
(define-key global-map [(control f12)] 'next-error)
(define-key global-map [(control shift f11)] 'compilation-previous-file)
(define-key global-map [(control shift f12)] 'compilation-next-file)
(defvar my-next-error-prev-buffer nil)
(defun my-next-error ()
(when (and my-next-error-prev-buffer
(not (eq my-next-error-prev-buffer (current-buffer)))
(memq buffer-undo-list '(nil t))
(memq this-command '(next-error previous-error))
(eq (with-current-buffer next-error-last-buffer major-mode)
'grep-mode))
(kill-buffer my-next-error-prev-buffer))
(setq my-next-error-prev-buffer (current-buffer)))
(add-hook 'next-error-hook 'my-next-error)
utf-*-with-signature
(setq auto-coding-regexp-alist
(delete (rassoc 'utf-16be-with-signature auto-coding-regexp-alist)
(delete (rassoc 'utf-16le-with-signature auto-coding-regexp-alist)
(delete (rassoc 'utf-8-with-signature auto-coding-regexp-alist)
auto-coding-regexp-alist))))
C-zC-zC-xC-cC-cC-zsuspend-emacsiconify-or-deiconify-frame(defvar my-map
(let ((map (make-sparse-keymap))
(c-z (global-key-binding "\C-z")))
(global-unset-key "\C-z")
(define-key global-map "\C-z" map)
(define-key map "\C-z" c-z)
map))
(when window-system
(define-key global-map [escape] 'keyboard-escape-quit)
M-TAB (define-key my-map [escape] esc-map)
(define-key my-map [(control ?u)] 'rotate-window-buffers)
(define-key my-map "t" 'toggle-truncate-lines)
(define-key my-map "v" 'set-variable)
(define-key my-map "V" 'customize-variable)
(define-key my-map "r" 'revert-buffer)
(define-key my-map "p" (lambda () (interactive) (my-shell-command "perl test.pl")))
)
(when window-system
(define-key esc-map "\"" 'insert-pair)
(define-key esc-map "[" 'insert-pair)
(define-key esc-map "{" 'insert-pair)
(define-key esc-map ")" 'up-list)
(add-to-list 'insert-pair-alist '(?\' ?\` ?\')))
(define-key my-map "`" 'insert-pair)
(define-key my-map "<" 'insert-pair)
frame-parametersfringe-query-style
(defun my-change-cursor ()
"Change cursor color and type depending on insertion mode and input method."
(set-cursor-color
(cond (current-input-method "red3") ((eq (frame-parameter (selected-frame) 'background-mode) 'dark)
"DarkGrey")
(t "black")))
(setq default-cursor-type (cond (overwrite-mode 'box)
(t 'bar))))
(add-hook 'post-command-hook 'my-change-cursor)
(defun my-find-thing-at-point ()
"Find variable, function or file at point."
(interactive)
(cond ((not (eq (variable-at-point) 0))
(call-interactively 'describe-variable))
((function-called-at-point)
(call-interactively 'describe-function))
(t (find-file-at-point))))
(defun my-next-link-or-scroll-page-forward (next-point)
"Scroll one screen forward when no more next links are visible on the screen.
The argument `next-point' is the point's position of the next link."
(if (and (> (window-end) next-point) (> next-point (point)))
(goto-char next-point)
(if (>= (window-end) (point-max))
(goto-char (point-max))
(progn (View-scroll-page-forward-set-page-size) (move-to-window-line 0)))))
(defun my-prev-link-or-scroll-page-backward (prev-point)
"Scroll one screen backward when no more previous links are visible on the screen.
The argument `prev-point' is the point's position of the previous link."
(if (and (< (window-start) prev-point) (< prev-point (point)))
(goto-char prev-point)
(if (<= (window-start) (point-min))
(goto-char (point-min))
(progn (View-scroll-page-backward-set-page-size)))))
(defvar my-scroll-auto-timer nil)
(defun my-scroll-auto (arg)
"Scroll text of current window automatically with a given frequency.
With a numeric prefix ARG, use its value as frequency in seconds.
With C-u, C-0 or M-0, cancel the timer."
(interactive
(list (progn
(if (and (boundp 'my-scroll-auto-timer)
(timerp my-scroll-auto-timer))
(cancel-timer my-scroll-auto-timer))
(or current-prefix-arg
(read-from-minibuffer
"Enter scroll frequency measured in seconds (0 or RET for cancel): "
nil nil t nil "0")))))
(if (not (or (eq arg 0) (equal arg '(4))))
(setq my-scroll-auto-timer (run-at-time t arg 'scroll-up 1))))
(define-key my-map "s" 'my-scroll-auto)
(add-to-list 'same-window-buffer-names "*Apropos*")
(add-to-list 'same-window-buffer-names "*Buffer List*")
(add-to-list 'same-window-buffer-names "*Colors*")
(add-to-list 'same-window-buffer-names "*Command History*")
(add-to-list 'same-window-buffer-names "*Diff*")
(add-to-list 'same-window-buffer-names "*Proced*")
(add-to-list 'same-window-buffer-names "*vc-dir*")
(add-to-list 'same-window-regexps "\\*compilation\\*\\(\\|<[0-9]+>\\)")
(add-to-list 'same-window-regexps "\\*grep\\*\\(\\|<[0-9]+>\\)")
(add-to-list 'same-window-regexps "\\*Help\\*\\(\\|<[0-9]+>\\)")
(defun my-move-to-window-top (&optional arg)
"Position point to the top line of the window."
(interactive)
(move-to-window-line 0))
(define-key global-map [(control prior)] 'my-move-to-window-top)
(defun my-move-to-window-bottom (&optional arg)
"Position point to the bottom line of the window."
(interactive)
(move-to-window-line -1))
(define-key global-map [(control next)] 'my-move-to-window-bottom)
(defun my-windows-balance ()
(interactive)
(other-window 1)
(balance-windows)
(shrink-window-if-larger-than-buffer)
(other-window -1))
(define-key my-map "wb" 'my-windows-balance)
recenter-top-bottom
move-to-window-line-top-bottom
(setq recenter-position (car recenter-positions))
(defun isearch-beginning-of-buffer ()
"Move isearch point to the beginning of the buffer."
(interactive)
(goto-char (point-min))
(isearch-repeat-forward))
(define-key isearch-mode-map "\M-<" 'isearch-beginning-of-buffer)
(defun isearch-end-of-buffer ()
"Move isearch point to the end of the buffer."
(interactive)
(goto-char (point-max))
(isearch-repeat-backward))
(define-key isearch-mode-map "\M->" 'isearch-end-of-buffer)
(define-key isearch-mode-map "\t" 'isearch-complete)
(define-key minibuffer-local-isearch-map "\t" 'isearch-complete-edit)
(define-key isearch-mode-map [(control return)] 'isearch-exit)
(defun my-isearch-exit-leave-lazy-highlight ()
"Exit search and leave extra match highlighting."
(interactive)
(let ((lazy-highlight-cleanup nil))
(when isearch-lazy-highlight
(isearch-lazy-highlight-new-loop (point-min) (point-max)))
(isearch-exit)))
(define-key isearch-mode-map [(shift return)]
'my-isearch-exit-leave-lazy-highlight)
(add-hook 'isearch-mode-end-hook
(lambda ()
(when (eq last-input-char 'C-return)
(if (and isearch-forward isearch-other-end)
(goto-char isearch-other-end))
(if isearch-regexp
(setq regexp-search-ring (cdr regexp-search-ring))
(setq search-ring (cdr search-ring))))))
C-wM-f
(setq search-whitespace-regexp "\\W+")
(add-hook 'occur-hook (lambda () (occur-rename-buffer t)))
(defun substitute-regexp (substitution)
"Use s/old/new/g regexp syntax for `query-replace'."
(interactive
(list
(read-from-minibuffer "Substitute regexp: " '("s///g" . 3) nil nil
'query-replace-history nil t)))
(if (string-match "^s/\\(.*\\)/\\(.*\\)/\\([gi]*\\)" substitution)
(let* ((sregex (match-string 1 substitution))
(ssubst (match-string 2 substitution))
(sflags (match-string 3 substitution))
(case-fold-search (string-match "i" sflags)))
(perform-replace
sregex ssubst (string-match "g" sflags)
t nil nil nil
(if (and transient-mark-mode mark-active) (region-beginning))
(if (and transient-mark-mode mark-active) (region-end))))
(error "Invalid syntax")))
(add-hook 'minibuffer-exit-hook
(lambda ()
(when (string-match
"^rm"
(car (symbol-value minibuffer-history-variable)))
(set minibuffer-history-variable
(cdr (symbol-value minibuffer-history-variable))))))
(define-key minibuffer-local-map "\eN" 'next-complete-history-element)
(define-key minibuffer-local-map "\eP" 'previous-complete-history-element)
(defun delete-history-element ()
"Delete the current minibuffer history element from the history.
After deleting the element, the history position is changed either
to the the previous history element, or to the next history element
if the deleted element was the last in the history list."
(interactive)
(cond
((= minibuffer-history-position 1)
(set minibuffer-history-variable
(cdr (symbol-value minibuffer-history-variable))))
((> minibuffer-history-position 1)
(setcdr (nthcdr (- minibuffer-history-position 2)
(symbol-value minibuffer-history-variable))
(nthcdr minibuffer-history-position
(symbol-value minibuffer-history-variable)))))
(condition-case nil (next-history-element 1) (error nil))
(condition-case nil (previous-history-element 1) (error nil)))
(define-key minibuffer-local-map "\ek" 'delete-history-element)
(define-key minibuffer-local-isearch-map "\ek" 'delete-history-element)
(defun minibuffer-history-position-message ()
(if (memq this-command '(next-history-element previous-history-element))
(minibuffer-message
(propertize
(format "%s[%s]"
(make-string
1
?\ )
minibuffer-history-position) 'face 'shadow))))
(defvar minibuffer-history-position-overlay)
(make-variable-buffer-local 'minibuffer-history-position-overlay)
(defun minibuffer-history-position-setup ()
"Set up a minibuffer for `minibuffer-history-position-mode'.
The prompt should already have been inserted."
(setq minibuffer-history-position-overlay (make-overlay (point-min) (1+ (point-min))))
(overlay-put minibuffer-history-position-overlay 'evaporate t))
(defun minibuffer-history-position-update ()
"Update a minibuffer for `minibuffer-history-position-mode'."
(overlay-put minibuffer-history-position-overlay 'before-string
(propertize (format "(%d) " minibuffer-history-position)
'face 'minibuffer-prompt)))
(defun my-info-refresh (&optional arg)
"Display some useful information in the echo area instead of the mode line.
With prefix arg, insert the current timestamp to the current buffer."
(interactive "P")
(cond
((equal arg '(4)) (insert (format-time-string "%Y%m%d" (current-time))))
((equal arg '(16)) (insert (format-time-string "%Y-%m-%d" (current-time))))
(t (message "%s"
(concat
(format-time-string "%Y-%m-%d %H:%M:%S %z" (current-time)) " "
(aref calendar-day-abbrev-array (nth 6 (decode-time (current-time))))
" : "
(or (buffer-file-name) default-directory))))))
(define-key my-map [f5] 'my-info-refresh)
(define-key global-map [f5] 'my-info-refresh)
(defun my-work-log-add (&optional arg)
(interactive "P")
(find-file my-work-log-file)
(goto-char (point-max))
(cond ((re-search-backward "^[0-9-]+ [0-9:]+\\( +\\)[^0-9]" nil t)
(goto-char (match-beginning 1))
(replace-match "" t t nil 1)
(insert (format-time-string " %H:%M " (current-time))))
((re-search-backward "^[0-9-]+ [0-9:]+" nil t)
(forward-line 1)
(insert (format-time-string "%Y-%m-%d %H:%M \n" (current-time)))
(backward-char))))
(define-key my-map "wl" 'my-work-log-add)
(defun my-buffer-xray ()
"Display text properties and overlays of current buffer by adding markups."
(interactive)
(let* ((newbuf (get-buffer-create (format "*xray-buffer*/%s" (buffer-name))))
(s (buffer-substring (point-min) (point-max))) (overlays (sort (overlays-in (point-min) (point-max))
(lambda (a b) (< (overlay-start a)
(overlay-start b)))))
(oi 0)
(ois (mapcar (lambda (o) (setq oi (1+ oi)) (cons o oi))
overlays))
(poss (sort
(append
(let ((p (point-min)) (pp))
(while p
(setq pp (cons (cons p (text-properties-at p)) pp))
(setq p (next-property-change p)))
pp)
(mapcar (lambda (o)
(list (overlay-start o) 'os (cdr (assq o ois))))
overlays)
(mapcar (lambda (o)
(list (overlay-end o) 'oe (cdr (assq o ois))))
overlays))
(lambda (a b) (if (= (car a) (car b))
(or (null (cadr b))
(and (eq (cadr a) 'os) (eq (cadr b) 'os)
(> (caddr a) (caddr b)))
(and (eq (cadr a) 'oe) (eq (cadr b) 'oe)
(< (caddr a) (caddr b))))
(> (car a) (car b))))))
(p (point)))
(switch-to-buffer newbuf)
(insert s)
(goto-char p)
(save-excursion
(mapcar (lambda (pos)
(goto-char (car pos))
(cond
((eq (cadr pos) 'os)
(insert (format "<o%s>" (caddr pos))))
((eq (cadr pos) 'oe)
(insert (format "</o%s>" (caddr pos))))
((null (cdr pos))
(insert "</p>"))
(t (let ((props (cdr pos)))
(insert "<p")
(while props
(insert (format " %s=\"" (car props)))
(insert
(cond
((overlayp (cadr props))
(format "o%s" (cdr (assq (cadr props) ois))))
(t
(format "%s" (cadr props)))))
(insert "\"")
(setq props (cddr props)))
(insert ">")))))
poss))
(run-hooks 'my-buffer-xray)))
(add-hook 'my-buffer-xray 'html-mode)
(defun qv (&optional url anchor)
"Add or activate live bookmarks.
When called interactively, put the address of the current location
inside a function call to `qv' into the clipboard that can be
pasted in another buffer that stores bookmarks.
Otherwise, after typing `C-x C-e' on the bookmark funcall
goes to the saved location."
(interactive)
(if (called-interactively-p)
(kill-new
(message "%s"
(concat "(qv "
(cond
(buffer-file-name
(format "\"%s\"\n \"^%s$\"" buffer-file-name
(replace-regexp-in-string
"^[ \t]*" "[ \t]*"
(replace-regexp-in-string
"\"" "\\\\\""
(replace-regexp-in-string
"\\\\" "\\\\\\\\"
(regexp-quote
(buffer-substring-no-properties
(line-beginning-position)
(line-end-position)))))))))
")")))
(cond
((file-exists-p url)
(find-file url)
(cond
((integerp anchor)
(goto-line anchor))
((stringp anchor)
(goto-char (point-min))
(if (re-search-forward anchor)
(goto-char (match-beginning 0)))))))))
(require 'misc)
(require 'tempo)
(require 'wid-edit)
(require 'generic)
(require 'generic-x)
(setq auto-mode-alist (delete (rassoc 'javascript-generic-mode auto-mode-alist)
auto-mode-alist))
(require 'ffap)
(when (require 'ee-autoloads nil t)
(define-key global-map [f1] 'ee-info)
(define-key global-map [(control tab)] 'ee-buffers)
(define-key my-map "eb" 'ee-buffers)
(define-key my-map "ehc" 'ee-history-command)
(define-key my-map "ehe" 'ee-history-extended-command)
(define-key my-map "ehs" 'ee-history-shell-command)
(define-key my-map "ei" 'ee-imenu)
(define-key my-map "em" 'ee-marks)
(define-key my-map "eo" 'ee-outline)
(define-key my-map "epr" 'ee-programs)
(define-key my-map "eps" 'ee-ps)
(define-key my-map "et" 'ee-tags)
(define-key my-map "ewa" 'ee-windows-add)
(define-key my-map "eww" 'ee-windows)
(define-key global-map [(meta ?\xa7)] 'ee-windows-and-add-current)
(define-key global-map [(meta ?\x8a7)] 'ee-windows-and-add-current)
(define-key global-map [(meta ?`)] 'ee-windows-and-add-current)
(define-key global-map [(super ?`)] 'ee-windows-and-add-current)
(eval-after-load "ee-windows"
'(progn
(define-key ee-windows-keymap [(meta ?\xa7)] 'ee-windows-select-and-delete-current)
(define-key ee-windows-keymap [(meta ?\x8a7)] 'ee-windows-select-and-delete-current)
(define-key ee-windows-keymap [(meta ?`)] 'ee-windows-select-and-delete-current)
(define-key ee-windows-keymap [(super ?`)] 'ee-windows-select-and-delete-current)
(define-key ee-windows-keymap [( ?\xa7)] 'ee-view-record-next)
(define-key ee-windows-keymap [(?\x8a7)] 'ee-view-record-next)
(define-key ee-windows-keymap [( ?`)] 'ee-view-record-next)
(define-key ee-windows-keymap [( ?\xbd)] 'ee-view-record-prev)
(define-key ee-windows-keymap [(?\x8bd)] 'ee-view-record-prev)
(define-key ee-windows-keymap [( ?~)] 'ee-view-record-prev))))
(when (require 'wincows nil t)
(define-key global-map [(meta ?\xa7)] 'wincows)
(define-key global-map [(meta ?\x8a7)] 'wincows)
(define-key global-map [(meta ?`)] 'wincows)
(define-key global-map [(super ?`)] 'wincows)
(eval-after-load "wincows"
'(progn
(define-key wincows-mode-map [(meta ?\xa7)] 'wincows-select)
(define-key wincows-mode-map [(meta ?\x8a7)] 'wincows-select)
(define-key wincows-mode-map [(meta ?`)] 'wincows-select)
(define-key wincows-mode-map [(super ?`)] 'wincows-select)
(define-key wincows-mode-map [( ?\xa7)] 'wincows-next-line)
(define-key wincows-mode-map [(?\x8a7)] 'wincows-next-line)
(define-key wincows-mode-map [( ?`)] 'wincows-next-line)
(define-key wincows-mode-map [( ?\xbd)] 'wincows-prev-line)
(define-key wincows-mode-map [(?\x8bd)] 'wincows-prev-line)
(define-key wincows-mode-map [( ?~)] 'wincows-prev-line))))
(defun my-reindent-then-newline-and-indent-and-indent-sexp ()
"Reindent current line, insert newline, then indent the new line.
Move backward out of one level of parentheses.
Indent each line of the list starting just after point."
(interactive "*")
(reindent-then-newline-and-indent)
(save-excursion
(backward-up-list)
(indent-sexp)))
(defun my-join-line-and-indent-sexp ()
"Join this line to previous and fix up whitespace at join.
Move backward out of one level of parentheses.
Indent each line of the list starting just after point."
(interactive "*")
(join-line)
(save-excursion
(backward-up-list)
(let ((indent-sexp-function (key-binding "\e\C-q")))
(if indent-sexp-function (call-interactively indent-sexp-function)))))
(defun my-join-line-and-indent-sexp-or-backward-kill-word ()
"If point is on the whitespaces at the beginning of a line,
then join this line to previous and indent each line of the upper list.
Otherwise, kill characters backward until encountering the end of a word."
(interactive "*")
(if (save-excursion (and (skip-chars-backward " \t") (bolp)))
(my-join-line-and-indent-sexp)
(backward-kill-word 1)))
(global-set-key [C-backspace] 'my-join-line-and-indent-sexp-or-backward-kill-word)
(defun my-lisp-indent-or-complete (&optional arg)
"Complete Lisp symbol, or indent line or region.
If the character preceding point is symbol-constituent, then perform
completion on Lisp symbol preceding point using `lisp-complete-symbol'.
Otherwise, call `indent-for-tab-command' that indents line or region."
(interactive "P")
(if (and (not (and transient-mark-mode mark-active
(not (eq (region-beginning) (region-end)))))
(memq (char-syntax (preceding-char)) (list ?w ?_))
(not (bobp)))
(lisp-complete-symbol)
(indent-for-tab-command arg)))
(defun my-beginning-of-line-or-indentation (arg)
"Jump to the beginning of the line or to the indentation (like `M-m')."
(interactive "p")
(if (bolp)
(beginning-of-line-text arg) (if (fboundp 'move-beginning-of-line)
(move-beginning-of-line arg)
(beginning-of-line arg))))
(define-key global-map [(control ?a)] 'my-beginning-of-line-or-indentation)
(defun my-reindent-then-newline-and-indent ()
"Create the next number item in the numbered list, or reindent."
(interactive)
(let ((num 1))
(if (save-excursion
(backward-paragraph)
(forward-line)
(not (and (looking-at "^\\s-*\\([0-9]\\)\\.")
(setq num (match-string 1)))))
(reindent-then-newline-and-indent)
(insert (format "\n\n%s. " (1+ (string-to-number num)))))))
(define-key global-map [(control return)] 'reindent-then-newline-and-indent)
(define-key global-map [(control shift return)] 'my-reindent-then-newline-and-indent)
(define-key lisp-mode-map [(control return)]
'my-reindent-then-newline-and-indent-and-indent-sexp)
(tempo-define-template "lisp-print-map" '("(map (lambda (x) ) " p ")"))
(define-key lisp-mode-map "\C-zim" 'tempo-template-lisp-print-map)
(define-key emacs-lisp-mode-map [(control return)]
'my-reindent-then-newline-and-indent-and-indent-sexp)
(define-key emacs-lisp-mode-map [tab] 'my-lisp-indent-or-complete)
(define-key emacs-lisp-mode-map "\C-xF" 'find-function)
(define-key emacs-lisp-mode-map "\C-x4F" 'find-function-other-window)
(define-key emacs-lisp-mode-map "\C-x5F" 'find-function-other-frame)
(define-key emacs-lisp-mode-map "\C-xK" 'find-function-on-key)
(define-key emacs-lisp-mode-map "\C-xV" 'find-variable)
(define-key emacs-lisp-mode-map "\C-x4V" 'find-variable-other-window)
(define-key emacs-lisp-mode-map "\C-x5V" 'find-variable-other-frame)
(tempo-define-template "emacs-lisp-print-message" '("(message \"%s\" " p ")"))
(define-key emacs-lisp-mode-map "\C-zim" 'tempo-template-emacs-lisp-print-message)
(tempo-define-template "emacs-lisp-print-defun"
'("(defun " p " ()\n (interactive)\n\n)\n"))
(define-key emacs-lisp-mode-map "\C-zid" 'tempo-template-emacs-lisp-print-defun)
(define-key lisp-interaction-mode-map [(control return)]
'my-reindent-then-newline-and-indent-and-indent-sexp)
(tempo-define-template "lisp-print-map" '("(map (lambda (x) ) " p ")"))
(define-key lisp-interaction-mode-map "\C-zim" 'tempo-template-emacs-lisp-print-message)
(font-lock-add-keywords
nil `(("\\<lambda\\>"
(0 (progn (compose-region (match-beginning 0) (match-end 0)
,(make-char 'greek-iso8859-7 107))
nil)))))
(eval-after-load "scheme"
'(progn
(define-key scheme-mode-map [(control return)]
'my-reindent-then-newline-and-indent-and-indent-sexp)
))
(eval-after-load "clojure-mode"
'(progn (add-hook 'clojure-mode-hook
(lambda ()
(set (make-local-variable 'inferior-lisp-program)
"java -cp clojure.jar clojure.lang.Repl")))))
(autoload 'sndtr-mode "sndtr" "Major mode for editing Snd transcripts." t)
(add-to-list 'auto-mode-alist '("\\.trs\\'" . sndtr-mode))
(add-to-list 'auto-mode-alist '("\\.marks\\'" . scheme-mode))
(defun run-snd ()
(interactive)
(run-scheme "snd -notebook" "snd"))
(add-to-list 'same-window-buffer-names "*snd*")
(setq inferior-lisp-prompt "^[^<> \n]*>+:? *")
(add-hook
'inferior-scheme-mode-hook
(lambda ()
(setq comint-prompt-regexp "^[^<>\n]*>+ *") (define-key global-map "\C-zii"
(lambda ()
(interactive)
(let* ((proc (scheme-proc))
(m (marker-position (process-mark proc)))
(str
(save-excursion
(comint-send-string
proc
"(list (selection-position) (selection-length))\n")
(accept-process-output proc)
(set-buffer "*scheme*")
(buffer-substring
m
(marker-position (process-mark proc))))))
(insert str))))))
^
(add-to-list 'auto-mode-alist '("\\.ss$" . scheme-mode))
(add-to-list
'auto-insert-alist
'(perl-mode
nil
"#!/usr/bin/perl -w" \n
"# -*- Perl -*-" \n
"# \$Revision\$" \n
\n
"while (<>) {" \n
> "chomp;" \n
> _ \n
> "print \"$_\\n\";\n"
"}\n"))
(tempo-define-template "perl-skeleton"
'("#!/usr/bin/perl -w\n# -*- Perl -*-\n# \$Revision\$\n\nwhile (<>) {\n chomp;\n "
p "\n}\n"))
(tempo-define-template "perl-s-skeleton" '("s/" p "//;"))
(tempo-define-template "perl-print-skeleton" '("print \"$_" p "\\n\";"))
(tempo-define-template "perl-while-skeleton" '("while (<>) {\n chomp;\n " p "\n}\n"))
(eval-after-load "perl-mode"
'(progn
(define-key perl-mode-map "\C-ziw" 'tempo-template-perl-while-skeleton)
(define-key perl-mode-map "\C-zip" 'tempo-template-perl-print-skeleton)
(define-key perl-mode-map "\C-zis" 'tempo-template-perl-s-skeleton)))
(setq auto-mode-alist
(append '(("\\.perl\\'" . perl-mode)
("\\.pm\\'" . perl-mode)
("\\.pl\\'" . perl-mode))
auto-mode-alist))
(defun my-pl-find-file-hook ()
(if (and (looking-at "#")
(or
(string-match "Prolog" mode-name)
(equal mode-name "Fundamental")))
(perl-mode)))
(eval-after-load "man"
'(progn
(add-hook
'Man-cooked-hook
(lambda ()
(if (string-match "^\\([0-9]+ *\\)?perl" Man-arguments)
(Man-highlight-references0
"DESCRIPTION"
"\\(perl\\(?:[a-z0-9]+[a-z]\\|[a-z][a-z0-9]+\\)\\)[^a-z0-9]"
1 0 'Man-xref-man-page))))))
(setq prolog-system 'swi)
(setq prolog-indent-width 8)
(setq prolog-electric-dot-flag t)
(setq prolog-program-switches
'((sicstus ("-i"))
(swi ("-G8M"))
(t nil)))
(setq prolog-info-predicate-index "(prolog)Predicates188")
(setq auto-mode-alist
(append '(
("prolog.*\\.pl?\\'" . prolog-mode) ("\\.[Pp][Rr][Oo]\\'" . prolog-mode)
("\\.ari\\'" . prolog-mode) ) auto-mode-alist))
(add-to-list 'auto-mode-alist '("\\.m\\'" . mercury-mode))
(add-hook
'prolog-mode-hook
(lambda ()
(require 'prolog)
(setq prolog-system 'swi)
(define-key prolog-mode-map [(control f1)]
(lambda () (interactive) (my-search-prolog-doc-at-point)))
(fset 'prolog-add-predicate-comment
[?\C-n ?\C-o C-f5 ?\C-a up ?\M-3 ?% ? ?\M-2 C-right ?\C-k ?\C-m ?\M-2 ?% ? ? ])
(define-key prolog-mode-map "\C-zic" 'prolog-add-predicate-comment)
(set (make-local-variable 'outline-regexp) "%%%+")
(set (make-local-variable 'outline-level) (lambda () (- 5 (outline-level))))
))
(add-hook
'prolog-inferior-mode-hook
(lambda ()
(define-key prolog-inferior-mode-map [(control f1)]
(lambda () (interactive) (my-search-prolog-doc-at-point)))
(define-key prolog-inferior-mode-map "\C-zo" 'comint-kill-output-since-last-prompt)
(set (make-local-variable 'outline-regexp) "^[1-9][0-9]* \\?- ")
(set (make-local-variable 'outline-level) (lambda () 1))))
(defun my-search-prolog-doc-at-point ()
(let* ((wordchars "a-zA-Z_0-9")
(str
(concat "\^L\n\n"
(current-word)
"(")))
(view-file "~/doc/prog/prolog/PROLOG")
(if (not (re-search-forward str nil t))
(progn
(goto-char (point-min))
(re-search-forward str nil t)))
(show-entry) (message str)))
(add-to-list 'auto-mode-alist '("\\.yaws\\'" . erlang-mode))
(add-to-list 'interpreter-mode-alist '("runhugs" . literate-haskell-mode))
(setq html-quick-keys t)
(eval-after-load "sgml-mode"
'(progn
(modify-syntax-entry ?. "." sgml-mode-syntax-table)
(modify-syntax-entry ?: "." sgml-mode-syntax-table)
(setq html-tag-face-alist (append '(("a" . underline))
html-tag-face-alist))))
(eval-after-load "sgml-mode"
'(progn
(define-skeleton html-headline-1
"HTML level 1 headline tags."
nil
"<h1><a name=\"" (setq str (read-input "Name: "))
"\" id=\"" str "\">" _ "</a></h1>")
(define-skeleton html-headline-2
"HTML level 2 headline tags."
nil
"<h2><a name=\"" (setq str (read-input "Name: "))
"\" id=\"" str "\">" _ "</a></h2>")))
(add-hook 'html-mode-hook 'turn-off-auto-fill)
(add-hook 'html-mode-hook
(lambda ()
(define-key html-mode-map "\C-c&" 'sgml-name-char)
))
(add-hook 'html-mode-hook
(lambda ()
sgml-mode sgml-xml-guess (setq sgml-xml-mode t)
))
(defvar my-auto-insert-html-mode-language "en")
(add-to-list
'auto-insert-alist
'(html-mode
nil
(when (string-match "\\.\\([^.][^.]\\)\\.html$" buffer-file-name)
(setq my-auto-insert-html-mode-language
(match-string 1 buffer-file-name))
"")
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n"
" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n"
"<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\""
my-auto-insert-html-mode-language "\" lang=\""
my-auto-insert-html-mode-language "\">\n"
"<head>\n"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset="
(if (equal my-auto-insert-html-mode-language "ru") "koi8-r" "iso-8859-1")
"\" />\n"
"<meta http-equiv=\"Content-Language\" content=\""
my-auto-insert-html-mode-language "\" />\n"
"<meta name=\"description\" content=\"\" />\n"
"<meta name=\"keywords\" content=\"\" />\n"
"<title>" (capitalize (setq str (downcase (read-input "Title: ")))) "</title>\n"
"<link rel=\"stylesheet\" type=\"text/css\" href=\"/jurta.css\" />\n"
"</head>\n"
"<body>\n<h1><a name=\"" str "\" id=\"" str "\">" str "</a></h1>\n"
_
"\n"
"</body>\n"
"</html>\n"))
(global-set-key [print] 'htmlfontify-buffer)
(defun my-gud-gdb-find-file-OLD (f)
(save-excursion
(let ((buf (find-file-noselect f)))
(set-buffer buf)
(use-local-map (nconc (make-sparse-keymap) (current-local-map)))
(define-key (current-local-map) [f4]
(lambda () (interactive) (gud-call "tbreak %f:%l") (gud-call "cont")))
(define-key (current-local-map) [f5]
(lambda () (interactive)
(if (and transient-mark-mode mark-active)
(gud-call (concat "print "
(buffer-substring-no-properties
(region-beginning) (region-end))))
(gud-call "print %e"))))
(define-key (current-local-map) [f7]
(lambda () (interactive) (gud-call "step %p")))
(define-key (current-local-map) [f8]
(lambda () (interactive) (gud-call "next %p")))
))
(gud-gdb-find-file f))
(defun my-gud-perldb-find-file (f)
(save-excursion
(let ((buf (find-file-noselect f)))
(set-buffer buf)
(use-local-map (nconc (make-sparse-keymap) (current-local-map)))
(define-key (current-local-map) [f4]
(lambda () (interactive) (gud-call "c %l")))
(define-key (current-local-map) [f5]
(lambda () (interactive) (gud-call ".")))
(define-key (current-local-map) [f6]
(lambda () (interactive) (gud-call "x %e")))
(define-key (current-local-map) [f7]
(lambda () (interactive) (gud-call "s")))
(define-key (current-local-map) [f8]
(lambda () (interactive) (gud-call "n")))))
(gud-perldb-find-file f))
(add-hook 'perldb-mode-hook
(lambda ()
(setq gud-find-file 'my-gud-perldb-find-file)))
(define-key global-map [(shift f5)] 'outline-minor-mode)
(eval-after-load "outline"
'(progn
(define-key outline-mode-map [(control ?o)] outline-mode-prefix-map)
C-M-lC-lf5 (define-key outline-mode-map [(control ?*)]
(lambda () (interactive) (show-branches)))
(define-key outline-minor-mode-map [f5] outline-mode-prefix-map)
C-M-lC-lf5 (define-key outline-minor-mode-map [(control ?*)]
(lambda () (interactive) (show-branches)))
(require 'foldout)))
(add-hook
'outline-mode-hook
(lambda ()
(hide-body)))
(add-hook
'outline-minor-mode-hook
(lambda ()
(hide-body)))
(defun my-outline-hide-entry-or-subtree ()
(interactive)
(if (save-excursion (next-line 1) (or (looking-at outline-regexp) (eobp)))
(if (>= (funcall outline-level)
(save-excursion (next-line 1)
(or (and (eobp) 0) (funcall outline-level))))
(if (= (funcall outline-level) 1)
(goto-char (point-min))
(outline-up-heading 1))
(hide-subtree))
(progn (hide-entry) (beginning-of-line))))
(defun my-outline-show-entry-or-subtree ()
(interactive)
(if (save-excursion
(re-search-forward (concat "\n\\(" outline-regexp "\\)")
(save-excursion
(outline-next-visible-heading 1) (point))
t))
(show-children)
(show-entry)))
(eval-after-load "diff-mode"
'(progn
(define-key diff-mode-map [(control meta down)] 'diff-hunk-next)
(define-key diff-mode-map [(control meta up)] 'diff-hunk-prev)
(define-key diff-mode-map [(control meta shift down)] 'diff-file-next)
(define-key diff-mode-map [(control meta shift up)] 'diff-file-prev)
diff-indicator-...
))
(define-generic-mode 'diff-generic-mode
(list ?#)
nil
'(("^\\(<-? \\)" 1 'font-lock-keyword-face)
("^\\(-?> \\)" 1 'font-lock-function-name-face)
("^\\(\\(<!\\|!>\\) .*\\)" 1 'font-lock-warning-face))
(list "\\.subpatch\\'")
nil
"For diffuniq and subpatch.")
(setenv "PAGER" "/bin/cat")
(add-hook 'text-mode-hook 'turn-on-auto-fill)
(add-hook 'fill-nobreak-predicate 'fill-french-nobreak-p)
(add-hook 'fill-nobreak-predicate 'fill-single-word-nobreak-p)
(eval-after-load "view"
'(progn
(define-key view-mode-map [?\S- ] 'View-scroll-page-backward)
(define-key view-mode-map " " 'View-scroll-page-forward-set-page-size)
(define-key view-mode-map "g" (lambda () (interactive) (revert-buffer nil t t)))
(define-key view-mode-map "l" 'View-goto-line)
(define-key view-mode-map [f2] 'toggle-truncate-lines)
(define-key view-mode-map [(meta left)]
(lambda ()
(interactive)
(goto-char (point-min))
(View-quit)))
(define-key view-mode-map [(meta down)]
(lambda ()
(interactive)
(if (>= (window-end) (point-max))
(goto-char (point-max))
(View-scroll-page-forward-set-page-size))))
(define-key view-mode-map [(meta up)]
(lambda ()
(interactive)
(if (<= (window-start) (point-min))
(goto-char (point-min))
(View-scroll-page-backward-set-page-size))))
(defadvice View-scroll-line-forward (after my-View-scroll-line-forward activate)
"Fix point position to be at the bottom line."
(move-to-window-line -1)
(beginning-of-line))
))
(eval-after-load "doc-view"
'(progn
(define-key doc-view-mode-map [?\S- ] 'doc-view-scroll-down-or-previous-page)
))
image-dired-cmd-create-standard-thumbnail-command(defun my-make-thumbnail (file)
(let* ((image-file (concat "file://" (expand-file-name file)))
(thumb-file (expand-file-name
(concat "~/.thumbnails/normal/" (md5 image-file) ".png")))
(file-attrs (file-attributes file))
(modif-time (float-time (nth 5 file-attrs))))
(unless (file-exists-p thumb-file)
(shell-command
(mapconcat
'identity
(list
"convert"
(format "\"%s\"" file)
(format "-set \"Description\" \"Thumbnail of %s\"" image-file)
(format "-set \"Software\" \"ImageMagick, GNU Emacs %s\"" emacs-version)
(format "-set \"Thumb::URI\" \"%s\"" image-file)
(format "-set \"Thumb::MTime\" \"%.0f\"" modif-time)
"-set \"Thumb::Size\" \"%b\""
"-set \"Thumb::Image::Width\" \"%w\""
"-set \"Thumb::Image::Height\" \"%h\""
"-set \"Thumb::Image::Mimetype\" \"image/jpeg\""
"-resize 128x128" "+profile \"*\""
"-type TrueColorMatte"
(format "png:\"%s\"" thumb-file))
" ")))
thumb-file))
(defadvice thumbs-mode (after my-thumbs-mode activate)
(toggle-truncate-lines -1))
(require 'dired-x)
dired-mark-sexp
(defun my-dired-run-find-file ()
"My view file for dired."
(interactive)
(let* ((file (dired-get-filename)))
(cond
((let* ((command
(and (functionp 'mm-mime-info)
(mm-mime-info
(mm-extension-to-mime (file-name-extension file))))))
(if (and command (stringp command))
cond (or (ignore (shell-command (concat (format command file) "&")))
t))))
((string-match "\\.html?$" file)
(cond
((fboundp 'w3m-goto-url-new-session)
(w3m-find-file-new-session file))
((fboundp 'browse-url)
(browse-url file))))
((string-match "\\.elc?$" file)
(load-file file))
((string-match "\\.info?$" file)
(info file))
( (let* ((file-list (list (dired-get-filename)))
(command (dired-guess-default file-list)))
(if (listp command)
(setq command (car command)))
(if command
(shell-command
(dired-shell-stuff-it command file-list nil 0)))))
(t
(message file)))))
(define-key dired-mode-map [(control return)] 'my-dired-run-find-file)
(mapc (lambda (elt)
(define-key dired-mode-map (car elt)
`(lambda ()
(interactive)
(dired-sort-other (concat dired-listing-switches ,(cadr elt))))))
'(([(control f3)] "" "by name")
([(control f4)] " -X" "by extension")
([(control f5)] " -t" "by date")
([(control f6)] " -S" "by size")
([(control shift f3)] " -r" "by reverse name")
([(control shift f4)] " -rX" "by reverse extension")
([(control shift f5)] " -rt" "by reverse date")
([(control shift f6)] " -rS" "by reverse size")))
(define-key dired-mode-map [f3]
(lambda () (interactive) (let (dired-view-command-alist) (dired-view-file))))
(define-key global-map [f3] 'kill-this-buffer)
(define-key global-map [(control f3)] 'kill-this-buffer-and-dired-jump)
(define-key dired-mode-map [(shift f3)] 'dired-find-file-literally)
(define-key dired-mode-map [f4] 'dired-find-file) (define-key global-map [f4] 'dired-jump)
(define-key dired-mode-map [(shift f5)] 'dired-count-sizes)
(define-key dired-mode-map [delete] 'dired-do-delete)
(define-key dired-mode-map [f7] 'dired-create-directory)
(define-key dired-mode-map [(shift f7)] 'find-dired)
(define-key dired-mode-map [(control meta ?=)] 'dired-compare-directories)
(define-key dired-mode-map [(meta left)]
(lambda (arg)
(interactive "P")
(if (not (and (memq ?R (append dired-actual-switches nil))
(dired-between-files)))
(dired-up-directory)
(if (dired-subdir-hidden-p (dired-current-directory))
(dired-tree-up 1)
(progn (dired-hide-subdir 1) (dired-previous-line 1))))))
(define-key dired-mode-map [(meta right)]
(lambda (arg)
(interactive "P")
(let (dired-view-command-alist)
(if (not (and (memq ?R (append dired-actual-switches nil))
(dired-between-files)))
(dired-view-file)
(if (dired-subdir-hidden-p (dired-current-directory))
(progn (dired-hide-subdir 1)
(dired-prev-subdir 1)
(dired-next-line 4))
(dired-view-file))))))
(defun my-dired-move-to-next-dir (arg)
(interactive "P")
(if (not (memq ?R (append dired-actual-switches nil)))
(dired-next-dirline-cycle 1)
(progn (dired-next-subdir 1))))
(define-key dired-mode-map [(meta down)] 'dired-next-line-cycle) (define-key dired-mode-map [(control meta down)] 'my-dired-move-to-next-dir)
(define-key dired-mode-map [tab] 'my-dired-move-to-next-dir)
(defun my-dired-move-to-prev-dir (arg)
(interactive "P")
(if (not (memq ?R (append dired-actual-switches nil)))
(dired-prev-dirline-cycle 1)
(progn (dired-prev-subdir 1))))
(define-key dired-mode-map [(meta up)] 'dired-previous-line-cycle) (define-key dired-mode-map [(control meta up)] 'my-dired-move-to-prev-dir)
(define-key dired-mode-map [(shift iso-lefttab)] 'my-dired-move-to-prev-dir)
(defun my-dired-do-shell-command-on-current-file (&optional arg)
"Run a shell command on the current file instead of marked files."
(interactive)
(let ((dired-marker-char ?M)) (call-interactively 'dired-do-shell-command)))
(define-key dired-mode-map "%!"
'my-dired-do-shell-command-on-current-file)
(define-key dired-mode-map [(control meta ?!)]
'my-dired-do-shell-command-on-current-file)
(defun my-dired-mark (arg)
"Mark ARG files and print the total size of marked files."
(interactive "P")
(dired-mark arg)
(dired-count-sizes dired-marker-char))
(define-key dired-mode-map [insert] 'my-dired-mark)
(defun my-dired-unmark-backward (arg)
"Move up lines, remove deletion flag there and print size of marked files."
(interactive "p")
(dired-unmark-backward arg)
(dired-count-sizes dired-marker-char))
(define-key dired-mode-map [backspace] 'my-dired-unmark-backward)
(define-key dired-mode-map [(control shift insert)]
(lambda () (interactive) (dired-copy-filename-as-kill 0)))
(define-key dired-mode-map "q" (lambda () (interactive) (quit-window 1)))
(add-hook 'dired-after-readin-hook
(lambda ()
generate-new-buffer-name dired-internal-noselect (rename-buffer (generate-new-buffer-name dired-directory))
))
(add-hook 'dired-mode-hook
(lambda ()
(when (string-match-p "\\(bzr\\|cvs\\)/emacs" default-directory)
(dired-omit-mode 1))))
(add-hook 'archive-mode-hook
(lambda ()
(define-key archive-mode-map [f3] 'archive-view)
(define-key archive-mode-map [(meta right)] 'archive-view) (define-key archive-mode-map [(meta left)] 'kill-this-buffer)
(define-key archive-mode-map "q" 'kill-this-buffer)))
(add-hook 'tar-mode-hook
(lambda ()
(define-key tar-mode-map "q" 'kill-this-buffer)
(define-key tar-mode-map [f3] 'tar-view)
(define-key tar-mode-map [(meta up)] 'tar-previous-line)
(define-key tar-mode-map [(meta down)] 'tar-next-line)
(define-key tar-mode-map [(meta left)] 'kill-this-buffer)
(define-key tar-mode-map [(meta right)] 'tar-view)))
flush-lines
(eval-after-load "wdired"
'(progn
(define-key wdired-mode-map [return] 'wdired-finish-edit)
(define-key wdired-mode-map [escape] 'wdired-abort-changes)))
locateswitch-to-buffer-other-windowpop-to-buffer(add-to-list 'same-window-buffer-names "*Locate*")
locate-default-make-command-line(defun locate-make-command-line-ignore-case (search-string)
(list locate-command "-i" search-string))
(setq locate-make-command-line 'locate-make-command-line-ignore-case)
(add-hook
'locate-post-command-hook
(lambda ()
(save-excursion
(goto-char (point-min))
(when (or (re-search-forward "Matches for .* using filter \\(.*\\):" nil t)
(re-search-forward "Matches for \\(.*\\):" nil t))
(highlight-regexp
isearch-highlight-regexp (mapconcat
(lambda (c)
(let ((s (string c)))
(if (string-match "[[:alpha:]]" s)
(format "[%s%s]" (upcase s) (downcase s))
(regexp-quote s))))
(match-string-no-properties 1) "")
'match)))))
(add-to-list 'same-window-regexps "\\*Shell Command Output\\*\\(\\|<[0-9]+>\\)")
(defadvice shell-command (around my-shell-command-around act)
(let ((messages-buffer-max-lines
(unless (memq last-input-char '(S-return ?\C-j))
messages-buffer-max-lines)))
ad-do-it
(when (memq last-input-char '(S-return ?\C-j))
(message "") (pop-to-buffer "*Shell Command Output*")
(goto-char (point-min)))))
(defadvice dired-do-shell-command (around my-dired-do-shell-command act)
(let ((messages-buffer-max-lines
(unless (memq last-input-char '(S-return ?\C-j))
messages-buffer-max-lines)))
ad-do-it
(when (memq last-input-char '(S-return ?\C-j))
(message "")
(pop-to-buffer "*Shell Command Output*")
(goto-char (point-min)))))
(defadvice dired-smart-shell-command (around my-dired-smart-shell-command act)
(let ((messages-buffer-max-lines
(unless (memq last-input-char '(S-return ?\C-j))
messages-buffer-max-lines)))
ad-do-it
(when (memq last-input-char '(S-return ?\C-j))
(message "")
(pop-to-buffer "*Shell Command Output*")
(goto-char (point-min)))))
(define-key esc-map "|" 'shell-command-on-region-or-buffer)
(define-key esc-map "\M-|" 'shell-command-on-region-or-buffer) (define-key global-map [(control ?|)] 'shell-command-on-region-or-buffer)
(define-key my-map "|" 'shell-command-on-region-or-buffer)
(add-hook 'comint-mode-hook (lambda ()
(define-key comint-mode-map [(meta down)] 'comint-next-prompt)
(define-key comint-mode-map [(meta up)] 'comint-previous-prompt)
(define-key comint-mode-map [C-up] nil)
(define-key comint-mode-map [C-down] nil)))
(if delete-selection-mode
(put 'comint-delchar-or-maybe-eof 'delete-selection 'supersede))
(eval-after-load "compile"
'(progn
(add-hook 'compilation-mode-hook
(lambda ()
(setq compilation-environment '("LANG=C"))
(setq buffer-read-only nil)))))
compilegrep(setq compilation-buffer-name-function
(lambda (mode-name)
(generate-new-buffer-name
(concat "*" (downcase mode-name) "*"))))
(defun my-compilation-buffer-name-function (mode-name)
(cond
((and (eq mode-command major-mode)
(eq major-mode (nth 1 compilation-arguments)))
(buffer-name))
((let ((window-buffers
(delete-dups
(delq nil (mapcar (lambda (w)
(with-current-buffer (window-buffer w)
(if (eq mode-command major-mode)
(window-buffer w))))
(window-list))))))
(if (eq (length window-buffers) 1)
(car window-buffers))))
((generate-new-buffer-name
(concat "*" (downcase mode-name) "*")))))
(if (boundp 'mode-command)
(setq compilation-buffer-name-function
'my-compilation-buffer-name-function))
(define-key global-map [(control ?\x8a7)] 'other-window)
(define-key global-map [(control ?\x8bd)] (lambda () (interactive) (other-window -1)))
(define-key global-map [(control ?\247)] 'other-window)
(define-key global-map [(control ?\275)] (lambda () (interactive) (other-window -1)))
(define-key global-map [(control ?`)] 'other-window)
(define-key global-map [(control ?~)] (lambda () (interactive) (other-window -1)))
(define-key global-map [(control ?<)] 'other-window)
(define-key global-map [(control ?>)] (lambda () (interactive) (other-window -1)))
(define-key global-map [(control ?,)] 'other-window)
(define-key global-map [(control ?.)] (lambda () (interactive) (other-window -1)))
(define-key global-map [(control print)] 'other-window)
buffer-list
(defadvice previous-buffer (after my-previous-buffer activate)
(my-display-prev-next-buffers))
(defadvice next-buffer (after my-next-buffer activate)
(my-display-prev-next-buffers))
(defun my-display-prev-next-buffers ()
"Show two previous, current and two next buffer names in the echo area.
Example:
-2:*Messages* -1:*Help* 0:.emacs 1:*info* 2:*scratch*"
(interactive)
(let ((i -3) b (bl (buffer-list (selected-frame))) (message-log-max nil))
(message "%s"
(mapconcat
(lambda (x)
(setq i (+ i 1))
(format "%d:%-12s"
i (substring (buffer-name x) 0
(min (length (buffer-name x)) 11))))
(append
(nreverse
(list
(setq b (get-next-valid-buffer (reverse bl) t))
(get-next-valid-buffer (cdr (memq b (reverse bl))) t)))
(list (current-buffer))
(list
(setq b (get-next-valid-buffer (cdr bl) t))
(get-next-valid-buffer (cdr (memq b bl)) t)))
" "))))
(defun describe-function-other-window ()
(interactive)
(let (same-window-buffer-names same-window-regexps)
(call-interactively 'describe-function)))
(defun describe-variable-other-window ()
(interactive)
(let (same-window-buffer-names same-window-regexps)
(call-interactively 'describe-variable)))
(define-key help-map "4f" 'describe-function-other-window)
(define-key help-map "4v" 'describe-variable-other-window)
(define-key help-map "A" 'apropos)
(define-key help-map "\M-f" 'find-function)
(defadvice describe-bindings (after my-describe-bindings activate)
(with-current-buffer "*Help*"
(save-excursion
(let ((inhibit-read-only t))
(goto-char (point-min))
(while (re-search-forward "^\^L$" nil t)
(put-text-property (match-beginning 0) (match-end 0)
'display (concat "^L" (make-string 64 ?-)))
)))
(set (make-local-variable 'outline-regexp) "^.*:$")
))
(eval-after-load "help"
'(progn
))
(define-key global-map "\C-h\C-i" 'info)
(eval-after-load "info"
'(progn
(define-key Info-mode-map [(control shift insert)]
(lambda () (interactive) (Info-copy-current-node-name 0)))
(define-key Info-mode-map [?\S- ] 'Info-scroll-down)
(define-key Info-mode-map [(meta right)] 'my-Info-forward)
(define-key Info-mode-map [(meta left)] 'Info-last)
(define-key Info-mode-map [(meta up)]
(lambda ()
(interactive)
(my-prev-link-or-scroll-page-backward
(save-excursion
(ignore-errors
(Info-prev-reference))
(point)))))
(define-key Info-mode-map [(meta down)]
(lambda ()
(interactive)
(my-next-link-or-scroll-page-forward
(save-excursion
(ignore-errors
(Info-next-reference))
(point)))))
(define-key Info-mode-map [return]
(lambda ()
(interactive)
(if nil (my-Info-forward)
(progn (scroll-up 1) (move-to-window-line -1) (beginning-of-line)))))
(when (equal (upcase system-name) "THINKPAD")
(define-key Info-mode-map [osfPrior] 'Info-last)
(define-key Info-mode-map [osfNext] 'Info-follow-nearest-node))))
(defun my-Info-forward (&optional fork)
"Follow the nearest node, or to go history forward, if point is not on ref."
(interactive "P")
(condition-case error
(Info-follow-nearest-node fork)
(error
(if (equal "Point neither on reference nor in menu item description"
(cadr error))
(Info-history-forward)
(message "%s" (cadr error))))))
(eval-after-load "man"
'(progn
(define-key Man-mode-map [(meta right)] 'push-button) (define-key Man-mode-map [(meta left)] 'quit-window)
(define-key Man-mode-map [(meta up)]
(lambda ()
(interactive)
(my-prev-link-or-scroll-page-backward
(save-excursion
(ignore-errors (Man-previous-section 1))
(point)))))
(define-key Man-mode-map [(meta down)]
(lambda ()
(interactive)
(my-next-link-or-scroll-page-forward
(save-excursion
(ignore-errors (Man-next-section 1))
(point)))))
(define-key Man-mode-map [f2] 'toggle-truncate-lines)
(define-key Man-mode-map [return] 'View-scroll-line-forward)))
(defvar my-dict-history nil
"History list for previous word definitions.")
(defun my-dict-search-word (word &optional output-buffer)
"Search the word under point (by default) or entered from minibuffer,
if prefix argument is not null. Search is preformed using
external program `dict2'. The output appears in the buffer `*Dictionary*'.
If the output is one line, it is displayed in the echo area.
If OUTPUT-BUFFER is not nil, or prefix argument is not nil or 0,
then output is inserted in the current buffer."
(interactive
(let* ((default (if (and transient-mark-mode mark-active)
(buffer-substring-no-properties
(region-beginning) (region-end))
(current-word)))
(value (if t (read-from-minibuffer
"Search word: " default nil nil 'my-dict-history)
default)))
(list (if (equal value "") default value)
(if (not (equal current-prefix-arg 0)) current-prefix-arg))))
(let* ((new-buffer-name (or output-buffer "*Dictionary*")))
(shell-command (concat "dict2 \"" word "\"") new-buffer-name)
(if (member new-buffer-name (mapcar (function buffer-name) (buffer-list)))
(with-current-buffer new-buffer-name
(goto-char (point-min))
(while (re-search-forward "{+\\([^}]+\\)}+" nil t)
(let* ((link-text (match-string 1))
(link-value link-text))
(replace-match "") (while (string-match "\n\\s-*" link-value) (setq link-value (replace-match " " t t link-value)))
(widget-create 'link
:format (concat "%[" link-text "%]")
:button-face 'info-xref
:notify (lambda (widget &rest ignore)
(push (widget-value widget) my-dict-history)
(my-dict-search-word (widget-value widget)))
:button-prefix ""
:button-suffix ""
link-value)))
(goto-char (point-min))
(setq buffer-read-only nil)
(select-window (get-buffer-window new-buffer-name))
(setq view-return-to-alist
(list (cons (selected-window)
(cons (next-window (selected-window)) t))))
(use-local-map (copy-keymap view-mode-map))
(set-keymap-parent (current-local-map) widget-keymap)
(define-key (current-local-map) [(meta right)] 'widget-button-press)
(define-key (current-local-map) [(meta left)]
(lambda () (interactive)
(pop my-dict-history)
(my-dict-search-word (car my-dict-history))))
(define-key (current-local-map) [(meta up)]
(lambda ()
(interactive)
(my-prev-link-or-scroll-page-backward
(save-excursion
(ignore-errors
(widget-backward 1))
(point)))))
(define-key (current-local-map) [(meta down)]
(lambda ()
(interactive)
(my-next-link-or-scroll-page-forward
(save-excursion
(ignore-errors
(widget-forward 1))
(point)))))
(define-key (current-local-map) "q"
(lambda () (interactive) (view-mode) (View-quit)))
)
(delete-other-windows))))
(when (require 'dictem nil t)
(setq dictem-server "dict.org")
(setq dictem-server "mova.org")
(setq dictem-server "localhost")
(setq dictem-port "2628")
(dictem-initialize)
(define-key my-map "dm" 'my-dictem-run-search)
(defun my-dictem-run-search (query)
(interactive
(list (dictem-read-query
(let ((word (assq 'word (plist-get (text-properties-at (point))
'link-data))))
(or (cdr word) (thing-at-point 'word))))))
(switch-to-buffer (get-buffer-create dictem-buffer-name))
(dictem-mode)
(dictem-run 'dictem-base-search "*" query "."))
(add-hook 'dictem-postprocess-match-hook
'dictem-postprocess-match)
(add-hook 'dictem-postprocess-definition-hook
'dictem-postprocess-definition-separator)
(add-hook 'dictem-postprocess-definition-hook
'dictem-postprocess-definition-hyperlinks)
(add-hook 'dictem-postprocess-show-info-hook
'dictem-postprocess-definition-hyperlinks)
(add-hook 'dictem-mode-hook
(lambda ()
(define-key dictem-mode-map [tab] 'dictem-next-link)
(define-key dictem-mode-map [(backtab)] 'dictem-previous-link)
(set (make-local-variable 'outline-regexp) "From")
(outline-minor-mode 1)
(define-key dictem-mode-map [(meta right)] 'my-dictem-run-search)))
(setq dictem-use-existing-buffer t)
(setq dictem-empty-initial-input t))
(add-to-list 'same-window-regexps "\\*dictem.*")
(add-hook 'diary-hook 'appt-make-list)
^
(setq w3-default-stylesheet "~/.default.css")
(eval-after-load "w3"
'(progn
(define-key w3-mode-map [(meta right)] 'widget-button-press)
(define-key w3-mode-map [(meta left)] 'w3-history-backward)
(define-key w3-mode-map [(meta down)] 'w3-widget-forward)
(define-key w3-mode-map [(meta up)] 'w3-widget-backward)
(define-key w3-mode-map [return] 'View-scroll-line-forward)
))
(eval-after-load "w3m"
'(progn
(define-key w3m-mode-map [(meta right)] 'w3m-view-this-url)
(define-key w3m-mode-map [(meta left)] 'w3m-view-previous-page)
(define-key w3m-mode-map [(meta shift right)] 'w3m-view-this-url-new-session)
(define-key w3m-mode-map [(control return)] 'w3m-view-this-url-new-session)
(define-key w3m-mode-map [(meta up)]
(lambda ()
(interactive)
(my-prev-link-or-scroll-page-backward
(save-excursion
(ignore-errors (w3m-previous-anchor))
(point)))))
(define-key w3m-mode-map [(meta down)]
(lambda ()
(interactive)
(my-next-link-or-scroll-page-forward
(save-excursion
(ignore-errors (w3m-next-anchor))
(point)))))
(define-key w3m-mode-map [return]
(lambda ()
(interactive)
(if (or (not (w3m-anchor))
(eq (point) (save-excursion (move-to-window-line -1) (point))))
(View-scroll-line-forward)
(w3m-view-this-url))))
(define-key w3m-mode-map [(control tab)] 'w3m-next-buffer)
(define-key w3m-mode-map [(control shift tab)] 'w3m-previous-buffer)
(define-key w3m-mode-map [(control shift iso-lefttab)] 'w3m-previous-buffer)
(setq w3m-user-agent (concat
"Emacs-w3m/" emacs-w3m-version
" " w3m-version
" Emacs/" emacs-version
(if (string-match "[Ll]inux" system-configuration)
(concat " (" system-configuration ")")
"")))
))
(add-hook
'w3m-display-hook
(lambda (url)
(rename-buffer
(generate-new-buffer-name
(concat "*w3m*<"
w3m-current-title
">")))))
(defun firefox-history-sql (profile-dir)
"Query FireFox browse history."
(interactive
(let ((profiles (directory-files "~/.mozilla/firefox/" t "\\.default\\'")))
(if (= (length profiles) 1)
(list (car profiles))
(list (read-directory-name "Select profile directory name: "
"~/.mozilla/firefox/" nil t nil)))))
(let ((sql-sqlite-program "sqlite3"))
sql-product-interactive (sql-sqlite profile-dir)))
(defun my-gnus ()
"Start a new Gnus, or locate the existing buffer *Group*."
(interactive)
(if (buffer-live-p (get-buffer "*Group*"))
(switch-to-buffer (get-buffer "*Group*"))
(gnus)))
(define-key my-map "g" 'my-gnus)
(define-key my-map "G" (lambda () (interactive)
(gnus-no-server)
(gnus-group-jump-to-group "nnml:mail.inbox")))
(define-key my-map "Q" 'smtpmail-send-queued-mail)
(eval-after-load "gnus"
'(progn
(setq gnus-group-line-format
"%M%m%S%p%P%4y:%B%(%-43,43g%) %3T %5t %2I %o\n")
(define-key gnus-group-mode-map [tab] 'gnus-group-next-unread-group)
(define-key gnus-group-mode-map [(shift iso-lefttab)] 'gnus-group-prev-unread-group)
(setq gnus-message-archive-group
'((lambda (group)
(if (or (message-news-p)
(not group)
(and (stringp group)
(or (eq (length group) 0)
(string-match "^nnml:list\." gnus-newsgroup-name)
(not (string-match "^nnml:" gnus-newsgroup-name)))))
"nnml:archive"
group))))
))
(eval-after-load "gnus-sum"
'(progn
(setq gnus-summary-line-format
"%U%R%z%I%(%[%4L: %4,4~(cut 4)o: %-20,20f%]%) %s\n")
(define-key gnus-summary-mode-map [?\S- ] 'gnus-summary-prev-page)
(define-key gnus-summary-mode-map [tab] 'gnus-summary-next-unread-article)
(define-key gnus-summary-mode-map [(shift iso-lefttab)]
'gnus-summary-prev-unread-article)
(define-key gnus-summary-mode-map [(meta right)] 'gnus-summary-show-thread)
(define-key gnus-summary-mode-map [(meta left)] 'gnus-summary-hide-thread)
(define-key gnus-summary-mode-map [delete] 'gnus-summary-delete-article)
(define-key gnus-summary-mode-map "r" 'gnus-summary-reply-with-original)
(define-key gnus-summary-mode-map "R" 'gnus-summary-wide-reply-with-original)
gnus-summary-show-thread (define-key gnus-summary-mode-map "\M-\C-s" 'isearch-forward-regexp)
(define-key gnus-summary-mode-map [(meta ?g)] nil)
(define-key gnus-summary-mode-map "x" nil)
(define-key gnus-summary-mode-map "\C-x\C-s" nil)
(setq gnus-thread-sort-functions
'(gnus-thread-sort-by-number)
)
(add-hook 'gnus-group-mode-hook
(lambda ()
(set (make-variable-buffer-local 'line-number-mode) nil)
(set (make-variable-buffer-local 'column-number-mode) nil)))
(add-hook 'gnus-summary-mode-hook
(lambda ()
(set (make-variable-buffer-local 'line-number-mode) nil)
(set (make-variable-buffer-local 'column-number-mode) nil)))
))
(eval-after-load "gnus-art"
'(progn
(setq gnus-visible-headers
(append
(if (listp gnus-visible-headers)
gnus-visible-headers
(list gnus-visible-headers))
(list (concat "^User-Agent:\\|^X-User-Agent:\\|"
"^X-Mailer:\\|^X-Newsreader:\\|^X-FTN-Tearline:\\|"
"^X-Http-User-Agent:"))))
(setq gnus-emphasis-alist
(cons
'("\\(the precise symptoms of the bug\\)"
0 1 gnus-emphasis-underline)
gnus-emphasis-alist))
(add-hook 'gnus-article-mode-hook
(lambda ()
(toggle-truncate-lines -1)
(setq bug-reference-url-format "http://debbugs.gnu.org/%s")
(bug-reference-mode 1))
t)
(define-key gnus-article-mode-map "R" 'gnus-summary-wide-reply-with-original)
(define-key gnus-article-mode-map [return]
(lambda ()
(interactive)
(if (or (not (get-char-property (point) 'button))
(eq (point) (save-excursion (move-to-window-line -1) (point))))
(progn (scroll-up 1) (move-to-window-line -1) (beginning-of-line))
(widget-button-press (point)))))
(define-key gnus-article-mode-map [(meta ?g)] nil)))
(defun my-gnus-copy-link-gnu-lists (&optional arg)
"Put the link to the article in the GNU archives into the kill ring.
Example:
\(browse-url (concat \"http://lists.gnu.org/archive/cgi-bin/namazu.cgi?idxname=\"
\"emacs-devel&query=\" (url-hexify-string (concat \"+message-id:\"
\"12345678.fsf@gnu.org\"))))"
(interactive "P")
(unless (eq major-mode 'gnus-summary-mode)
(error "Not in a gnus group buffer"))
(let ((list-archive
(with-current-buffer gnus-original-article-buffer
(gnus-fetch-field "list-archive")))
(message-id
(with-current-buffer gnus-original-article-buffer
(replace-regexp-in-string
"^<\\(.*\\)>$" "\\1" (gnus-fetch-field "message-id"))))
(text-template "\
\(browse-url (concat \"http://lists.gnu.org/archive/cgi-bin/namazu.cgi?idxname=\"\n\
\"%s&query=\" (url-hexify-string (concat \"+message-id:\"\n\
\"%s\"))))")
(text))
(if (string-match "<http://lists\\.gnu\\.org/[^>]*/\\([^/>]+\\)>" list-archive)
(setq text (format text-template (match-string 1 list-archive) message-id))
(error "Not in a GNU mailing list"))
(kill-new text)
(message "%s" text)))
(defun my-gnus-copy-link-gmane (&optional arg)
"Put the link to the article on gmane.org into the kill ring.
Example:
\(browse-url (concat \"http://thread.gmane.org/\"
(url-hexify-string \"12345678.fsf@gnu.org\")))"
(interactive "P")
(unless (eq major-mode 'gnus-summary-mode)
(error "Not in a gnus group buffer"))
(let ((message-id
(with-current-buffer gnus-original-article-buffer
(replace-regexp-in-string
"^<\\(.*\\)>$" "\\1" (gnus-fetch-field "message-id"))))
(text-template "\(browse-url (concat \"http://thread.gmane.org/\"\
(url-hexify-string \"%s\")))")
(text))
(setq text (format text-template message-id))
(kill-new text)
(message "%s" text)))
gnus-summary-tick-article-forward(defun my-gnus-summary-tick-article-forward (n &optional mark)
"Tick N articles forwards.
If N is negative, tick backwards instead.
The difference between N and the number of articles ticked is returned."
(interactive (list
(prefix-numeric-value current-prefix-arg)
(let ((mark (read-char "Tick char: " t)))
mark)))
(gnus-summary-mark-forward n (or mark gnus-ticked-mark)))
(require 'message)
(add-hook 'message-send-hook
'(lambda ()
(ispell-change-dictionary "american")
(ispell-message)
(ispell-change-dictionary "russian")
(ispell-message)))
(add-hook 'message-mode-hook
(lambda ()
(turn-on-auto-fill)
(define-key message-mode-map "\C-c\C-s" nil)))
(when (require 'mm nil t)
(mm-parse-mailcaps)
(mm-parse-mimetypes))
(load "smtpmail.el")
(eval-after-load "ange-ftp"
'(progn
(setq ange-ftp-skip-msgs (concat ange-ftp-skip-msgs "\\|^Yhdistetty"))))
(require 'server)
(unless (server-running-p)
(server-start))
(add-hook 'term-mode-hook
(lambda ()
^ (auto-fill-mode -1)
(setq tab-width 8)))
(add-hook 'cvs-mode-hook
(lambda ()
(define-key cvs-mode-map [f3] 'cvs-mode-view-file)))
(unless (rassoc 'css-mode auto-mode-alist)
(add-to-list 'auto-mode-alist '("\\.css\\'" . c-mode)))
(require 'wget nil t)
(setq wget-download-directory ".")
(setq wget-download-log-file "DOWNLOAD")
(setq wget-download-log-format "%T %U\n")
(setq wget-download-log-time-format "%Y-%m-%d")
(defun my-wget (uri &optional arg)
(interactive
(list
(read-string "URI: "
(if (and kill-ring
(string-match "^[hf]t?tp:" (current-kill 0)))
(current-kill 0)
(require 'thingatpt)
(thing-at-point-url-at-point)))
(when current-prefix-arg t)))
(wget uri arg))
(define-key my-map "wg" 'my-wget)
(setenv "WGETRC" (expand-file-name "~/.wgetrc-emacs"))
(let ((key (if (eq window-system 'w32) "<scroll>" "<Scroll_Lock>")))
(unless (lookup-key (current-global-map) (read-kbd-macro key))
(define-key (current-global-map) (read-kbd-macro key) 'scroll-lock-mode)))
(fset 'undefined 'yow)
fortunes-mod-bofh-excuses
(eval-after-load "tetris"
'(progn
(define-key tetris-mode-map [up] 'tetris-rotate-next)
(define-key tetris-mode-map [down] 'tetris-move-bottom)))
(defun my-digital-clock (&optional arg)
"Show digital clock in the separate Emacs frame.
Show digital clock in the same Emacs frame if called with C-0.
Cancel the clock if called with C-u."
(interactive "P")
(and (boundp 'my-digital-clock-timer) (timerp my-digital-clock-timer)
(cancel-timer my-digital-clock-timer))
(and (boundp 'my-digital-clock-frame) (framep my-digital-clock-frame)
(delete-frame my-digital-clock-frame))
(if (or (not arg) (numberp arg))
(setq my-digital-clock-timer
(run-at-time
t 1
(lambda ()
(message "%s"
(format-time-string "%Y-%m-%d %H:%M:%S" (current-time))
)))))
(or arg
(setq my-digital-clock-frame
(make-frame
`((top . 478) (left . 80) (width . 24) (height . 1)
(name . "TIME")
(minibuffer . only)
(buffer-predicate . nil)
(user-position . t)
(vertical-scroll-bars . nil)
(scrollbar-width . 0)
(menu-bar-lines . 0)
(foreground-color . "green")
(background-color . "black")
,(cond
((eq window-system 'x)
'(font . "-*-Fixed-Medium-R-*--64-*-*-*-C-*-*-*")))
(cursor-color . "gray2")
(cursor-type . bar)
(auto-lower . nil)
(auto-raise . t)
(border-width . 0)
(internal-border-width . 0))))))
(setq save-place-skip-check-regexp
(concat
save-place-skip-check-regexp
"\\|\\.\\(arc\\|lzh\\|zip\\|zoo\\)$"
"\\|\\.t\\(ar\\.\\)?gz$"
"\\|\\.t\\(ar\\.bz2\\|bz\\)$"))
(and (boundp 'desktop-modes-not-to-save)
(add-to-list 'desktop-modes-not-to-save 'dired-mode))
(if (boundp 'desktop-globals-to-save)
(setq desktop-globals-to-save
(delete-dups
(append
'( coding-system-history
compile-history
extended-command-history
find-tag-history
file-name-history
find-args-history
grep-history
grep-find-history
my-dict-history
minibuffer-history
minibuffer-history-search-history
query-replace-history
read-expression-history
regexp-history
dired-shell-command-history shell-command-history
search-ring
regexp-search-ring)
(delq 'register-alist desktop-globals-to-save)))))
(add-hook 'after-init-hook
(lambda ()
)
add-hook dired desktop-read t)
(add-hook 'after-init-hook
(lambda ()
(run-at-time
"1 second" nil
'shell-command-to-string "wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz"))
t)
(when (fboundp 'emacs-init-time)
(add-hook 'after-init-hook (lambda () (message "%s" (emacs-init-time))) t))