Update.
[elisp.git] / emacs.el
index 3e49e71..63b51c3 100644 (file)
--- a/emacs.el
+++ b/emacs.el
@@ -130,8 +130,12 @@ load-warning buffer in case of failure."
 
 ;; make emacs use the clipboard so that copy/paste works for other
 ;; x-programs. I have no clue how all that clipboard thing works.
+
 ;; (setq x-select-enable-clipboard t)
 ;; (setq interprogram-paste-function 'x-cut-buffer-or-selection-value)
+;; (setq x-select-enable-primary t)
+;; (setq x-select-enable-clipboard t)
+;; (global-set-key "\C-y" 'clipboard-yank)
 
 (setq
 
@@ -291,6 +295,8 @@ load-warning buffer in case of failure."
 ;; What modes for what file extentions
 (add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
 
+(require 'org-table)
+
 (add-to-list 'auto-mode-alist '("\\.txt\\'" . (lambda()
                                                 (text-mode)
                                                 (orgtbl-mode)
@@ -342,7 +348,7 @@ load-warning buffer in case of failure."
    ))
 
 ;; "tool" bar? Are you kidding?
-(when (boundp 'tool-bar-mode) (tool-bar-mode -1))
+(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
 
 ;; ;; If my own letter icon is here, use it and change its color
 ;; (when (file-exists-p "~/local/share/emacs/letter.xbm")
@@ -428,7 +434,8 @@ load-warning buffer in case of failure."
 
   (ff/configure-faces
    '(
-     (escape-glyph :foreground "#c0c0c0" :weight 'bold)
+     ;; (escape-glyph :foreground "#c0c0c0" :weight 'bold)
+     (escape-glyph :foreground "green3" :weight 'bold)
      (default :background "gray90" :foreground "black")
      (cperl-array-face :background "gray90" :foreground "blue" :weight 'bold)
      (cperl-hash-face :background "gray90" :foreground "purple" :weight 'bold)
@@ -491,11 +498,13 @@ load-warning buffer in case of failure."
 (add-hook 'sh-mode-hook
           (lambda ()
             (set-face-attribute 'sh-heredoc nil
-                                :foreground "black"
-                                :background "#fff0f0")
+                                :foreground "#604000"
+                                :background "white"
+                                :italic t)
             (set-face-attribute 'sh-heredoc-face nil
-                                :foreground "black"
-                                :background "#fff0f0")
+                                :foreground "#604000"
+                                :background "white"
+                                :italic t)
             ))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -681,8 +690,8 @@ occurrences "
 (load "ps-print")
 
 (setq ps-print-color-p nil
-      ;; ps-paper-type 'letter
-      ps-paper-type 'a4
+      ps-paper-type 'letter
+      ;; ps-paper-type 'a4
       ;; ps-top-margin (* 1.75 56.692)
       ;; ps-left-margin 56.692
       ;; ps-bottom-margin 56.692
@@ -827,8 +836,10 @@ printer."
                                 (ff/battery-percent "energy"))))
 
           ((string= battery-status "Discharging")
-           (format "B%d%%"  (max (ff/battery-percent "charge")
-                                 (ff/battery-percent "energy"))))
+           (let* ((c (max (ff/battery-percent "charge")
+                          (ff/battery-percent "energy")))
+                  (s (format "B%d%%" c)))
+             (if (>= c 20) s (propertize s 'face 'font-lock-warning-face))))
 
           (t battery-status)
 
@@ -1129,6 +1140,8 @@ goback argument, go back where we were."
 ;; Failsafe version if we can't load bbdb
 (defun ff/explicit-name (email) email)
 
+(load "vc-git")
+
 (when (ff/load-or-alert "bbdb")
 
   (setq
@@ -1192,6 +1205,8 @@ ff/known-address-face is used."
     )
 
   (ff/configure-faces '((ff/robot-address-face :foreground "green4")
+                        (ff/personal-address-face :foreground "dark magenta"
+                                                  :weight 'bold)
                         (ff/important-address-face :foreground "blue2"
                                                    ;; :underline t
                                                    ;; :background "white"
@@ -1200,7 +1215,6 @@ ff/known-address-face is used."
                                                    ;; :slant 'italic
                                                    )))
 
-
   )
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1420,21 +1434,20 @@ universal argument starts xfig even if the .fig does not exist"
   (insert "%% -*- mode: latex; mode: reftex; mode: flyspell; coding: utf-8; tex-command: \"pdflatex.sh\" -*-
 
 \\documentclass[12pt]{article}
-\\usepackage[a4paper,top=2.5cm,bottom=2cm,left=1.5cm,right=1.5cm]{geometry}
+\\usepackage[a4paper,top=2.5cm,bottom=2cm,left=2.5cm,right=2.5cm]{geometry}
 \\usepackage[utf8]{inputenc}
 \\usepackage{amsmath}
 \\usepackage{amssymb}
-\\usepackage{hyperref}
+\\usepackage[pdftex]{graphicx}
+\\usepackage{microtype}
+\\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue,citecolor=blue]{hyperref}
 
-%% \\usepackage[pdftex]{graphicx}
-%% \\usepackage{eurosym}
+\\setlength{\\parindent}{0cm}
+\\setlength{\\parskip}{12pt}
+\\renewcommand{\\baselinestretch}{1.3}
 
-\\hypersetup{
-  colorlinks=true,
-  linkcolor=blue,
-  urlcolor=blue,
-  citecolor=blue
-}
+\\def\\argmax{\\operatornamewithlimits{argmax}}
+\\def\\argmin{\\operatornamewithlimits{argmin}}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %% Sans serif fonts
@@ -1444,12 +1457,16 @@ universal argument starts xfig even if the .fig does not exist"
 %% \\renewcommand{\\ttdefault}{pcr}
 %% \\renewcommand*\\familydefault{\\sfdefault}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% \\def\\argmax{\\operatornamewithlimits{argmax}}
-%% \\def\\argmin{\\operatornamewithlimits{argmin}}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% \\setlength{\\parindent}{0cm}
-%% \\setlength{\\parskip}{12pt}
-%% \\renewcommand{\\baselinestretch}{1.3}
+%% The \\todo command
+\\newcounter{nbdrafts}
+\\setcounter{nbdrafts}{0}
+\\makeatletter
+\\newcommand{\\checknbdrafts}{
+\\ifnum \\thenbdrafts > 0
+\\@latex@warning@no@line{*WARNING* The document contains \\thenbdrafts \\space draft note(s)}
+\\fi}
+\\newcommand{\\todo}[1]{\\addtocounter{nbdrafts}{1}{\\color{red} #1}}
+\\makeatother
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 \\begin{document}
@@ -1822,7 +1839,7 @@ a file in /tmp"
 
       (when (string-match "\\.sh$" filename)
         (sh-mode)
-        (insert "#!/bin/bash\n\nset -e\n\n")
+        (insert "#!/bin/bash\n\nset -e\nset -o pipefail\n\n")
         (save-excursion
           (ff/add-copyrights))
         )
@@ -2105,6 +2122,9 @@ This may be a useful alternative binding for \\[delete-other-windows]
   (setq longlines-show-hard-newlines t
         longlines-auto-wrap t
         ;; longlines-show-effect #("|\n" 0 2 (face escape-glyph))
+        ;; longlines-show-effect #("∴\n" 0 2 (face escape-glyph))
+        longlines-show-effect #("•\n" 0 2 (face escape-glyph))
+        ;; longlines-show-effect #("↵\n" 0 2 (face escape-glyph))
         )
 
   ;; (defun ff/auto-longlines ()
@@ -2247,30 +2267,26 @@ next one. With universal argument, kill all killable buffers."
 
 (load "recentf")
 
-(setq recentf-exclude
-      (append recentf-exclude
-              '("enotes$" "secure-notes$" "media-playlists$"
-                "bbdb$"
-                "svn-commit.tmp$" ".git/COMMIT_EDITMSG$"
-                "\.bbl$" "\.aux$" "\.toc$"))
+;; If we just check for file-symlink-p, everytime we start emacs it
+;; will check all the remote files listed in recentf-list, so we check
+;; that they are not remote first
+(defun ff/file-not-remote-but-symlink (filename)
+  (and (not (file-remote-p filename)) (file-symlink-p filename)))
+
+(setq recentf-exclude (append recentf-exclude
+                              '(
+                                ff/file-not-remote-but-symlink
+                                "enotes$" "secure-notes$" "media-playlists$"
+                                "bbdb$"
+                                "svn-commit.tmp$" ".git/COMMIT_EDITMSG$"
+                                "\.bbl$" "\.aux$" "\.toc$"
+                                ))
       recentf-max-saved-items 1000
       recentf-save-file "~/private/emacs/recentf"
       )
 
 (when (boundp 'recentf-keep) (add-to-list 'recentf-keep 'file-remote-p))
 
-;; Removes the link if we add the file itself (I am fed up with
-;; duplicates because of vc-follow-symlinks)
-
-(defadvice recentf-add-file (before ff/remove-links (filename) activate)
-  ;; If we are adding a filename corresponding to the last link we
-  ;; have added, remove the latter
-  (when (and recentf-list
-             (file-symlink-p (car recentf-list))
-             (string= filename (file-chase-links filename)))
-    (setq recentf-list (cdr recentf-list))
-    ))
-
 (recentf-mode 1)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -2315,6 +2331,21 @@ next one. With universal argument, kill all killable buffers."
         )
   )
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; A fast indexed / search in mbox
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; This is one of my own things, check my web page to get it
+
+(when (ff/load-or-alert "~/sources/gpl/mymail/mymail-vm.el")
+
+  (define-key vm-summary-mode-map "\\" 'mymail/vm-visit-folder)
+  (define-key global-map [S-f7] 'mymail/vm-visit-folder)
+  (setq mymail/default-search-request "today"
+        mymail/default-additional-search-requests "!s ^\\[SPAM\\],!s \\] STATUS,")
+  (add-to-list 'recentf-exclude "/tmp/mymail-vm-.*\.mbox")
+)
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; A dynamic search
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -2457,6 +2488,8 @@ with a time tag, and save this file"
 
 (setq ff/map (make-sparse-keymap))
 (define-key global-map [(control \`)] ff/map)
+;;(define-key global-map [(control @)] ff/map)
+
 (define-key esc-map "`" ff/map)
 
 (defun ff/git-status (&optional dir) (interactive)
@@ -2488,6 +2521,7 @@ with a time tag, and save this file"
 (define-key ff/map [(control o)] 'selector/quick-pick-recent)
 (define-key ff/map "s" 'selector/quick-move-in-buffer)
 (define-key ff/map "S" 'selector/search-sentence)
+(define-key ff/map "t" (lambda () (interactive) (find-file "~/private/TODO.txt")))
 (define-key ff/map "h" 'ff/tidy-html)
 (define-key ff/map "c" 'ff/count-char)
 (define-key ff/map [(control p)] 'ff/print-to-file)