Fixed how the name is added to the history in selector/find-file.
[elisp.git] / emacs.el
index 364adec..7dc64bb 100644 (file)
--- a/emacs.el
+++ b/emacs.el
@@ -25,7 +25,7 @@
   (add-to-list 'load-path "/usr/share/emacs/site-lisp/vm/")
   (add-to-list 'load-path "/usr/share/emacs/site-lisp/bbdb/lisp/")
   (add-to-list 'load-path "/usr/share/emacs/site-lisp/mailcrypt/")
-)
+  )
 
 ;; It's better to set the preferences in the .Xresources so that the
 ;; window is not first displayed with the wrong options
@@ -51,6 +51,7 @@
 
 (add-to-list 'load-path "~/sources/gpl/elisp")
 (add-to-list 'load-path "~/sources/elisp")
+(add-to-list 'load-path "~/local/elisp")
 
 ;; No, I do not like menus
 (menu-bar-mode -1)
@@ -90,7 +91,7 @@
 (icomplete-mode 1)
 
 ;; (setq highlight-current-line-globally t
-      ;; highlight-current-line-ignore-regexp "Faces\\|Colors\\| \\*Mini\\|\\*media\\|INBOX")
+;; highlight-current-line-ignore-regexp "Faces\\|Colors\\| \\*Mini\\|\\*media\\|INBOX")
 
 ;; (highlight-current-line-minor-mode 1)
 ;; (highlight-current-line-set-bg-color "gray75")
@@ -337,11 +338,11 @@ load-warning buffer in case of failure."
 
 ;; ;; If my own letter icon is here, use it and change its color
 ;; (when (file-exists-p "~/local/share/emacs/letter.xbm")
-  ;; (setq-default display-time-mail-icon
-                ;; (find-image
-                 ;; '((:type xbm
-                          ;; :file "~/local/share/emacs/letter.xbm"
-                          ;; :ascent center)))))
+;; (setq-default display-time-mail-icon
+;; (find-image
+;; '((:type xbm
+;; :file "~/local/share/emacs/letter.xbm"
+;; :ascent center)))))
 
 ;; My funky setting of face colors. Basically, we switch to a sober
 ;; look and darken a bit the colors which need to (because of the
@@ -383,6 +384,7 @@ load-warning buffer in case of failure."
      (font-lock-function-name-face :foreground "cyan")
      (flyspell-incorrect-face :foreground "red2")
      (flyspell-duplicate-face :foreground "OrangeRed2")
+     (hl-line :background "white")
      (sh-heredoc :foreground "blue")
      (sh-heredoc-face :foreground "blue")
      (font-lock-keyword-face :foreground "blue")
@@ -414,7 +416,7 @@ load-warning buffer in case of failure."
 
 (when window-system
   ;; (setq
-   ;; display-time-use-mail-icon t)
+  ;; display-time-use-mail-icon t)
 
   (ff/configure-faces
    '(
@@ -438,6 +440,7 @@ load-warning buffer in case of failure."
      ;; (font-lock-comment-face :foreground "dark violet")
      (flyspell-incorrect-face :foreground "red2")
      (flyspell-duplicate-face :foreground "OrangeRed2")
+     (hl-line :background "white")
      (header-line :background "gray65")
      (sh-heredoc :foreground "darkorange3")
      (sh-heredoc-face :foreground "darkorange3")
@@ -876,7 +879,7 @@ printer."
                    (propertize
                     (with-temp-buffer (apply 'call-process x)
                                       (buffer-string))
-                    'face '(:background "gray80"))
+                    'face '(:background "#c0c0ff"))
                  (with-temp-buffer (apply 'call-process x)
                                    (buffer-string))
                  ))
@@ -948,8 +951,8 @@ printer."
 
                              )
 
- ;;  display-time-format "%b %a %e %H:%M"
- ;;  display-time-mail-face nil
+ ;; display-time-format "%b %a %e %H:%M"
+ ;; display-time-mail-face nil
  )
 
 ;; Show the time, mail and stuff
@@ -1083,15 +1086,18 @@ of commands in `ff/default-bash-commands' is used for auto-completion"
 
 ;; Please consider the security-related consequences of using it
 
-(defun ff/make-shell-scripts-executable (&optional filename)
-  (setq filename (or filename (buffer-name)))
-  (when (and (string-match "\\.sh$\\|\\.pl$\\|\\.rb" filename)
-             (not (file-executable-p filename))
-             )
-    (set-file-modes filename 493)
-    (message "Made %s executable" filename)))
+;; (defun ff/make-shell-scripts-executable (&optional filename)
+  ;; (setq filename (or filename (buffer-name)))
+  ;; (when (and (string-match "\\.sh$\\|\\.pl$\\|\\.rb" filename)
+             ;; (not (file-executable-p filename))
+             ;; )
+    ;; (set-file-modes filename 493)
+    ;; (message "Made %s executable" filename)))
+
+;; (add-hook 'after-save-hook 'ff/make-shell-scripts-executable)
 
-(add-hook 'after-save-hook 'ff/make-shell-scripts-executable)
+(add-hook 'after-save-hook
+      'executable-make-buffer-file-executable-if-script-p)
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Cool stuff to navigate in emacs-lisp sources
@@ -1402,8 +1408,8 @@ universal argument starts xfig even if the .fig does not exist"
   (define-key global-map [(control \?)] 'lookup-dict))
 
 ;; (defun ff/generate-password () (interactive)
-  ;; (let ((c "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"))
-    ;; (nth (random (length c)) c))
+;; (let ((c "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-"))
+;; (nth (random (length c)) c))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Automatization of things I do often
@@ -1511,7 +1517,7 @@ universal argument starts xfig even if the .fig does not exist"
     (goto-char (point-min))
     (when (and (re-search-forward "START_IP_HEADER" nil t)
                (re-search-forward "END_IP_HEADER" nil t))
-        (message "yep"))
+      (message "yep"))
     ))
 
 (defun ff/add-gpl ()
@@ -1662,8 +1668,8 @@ int main(int argc, char **argv) {
 
 (defun ff/cout-var (arg)
   "Invoked on a line with a list of variables names,
-it inserts a line which displays their values in cout
-(or cerr if the function is invoked with a universal arg)"
+it inserts a line which displays their values in cout, or cerr if
+the function is invoked with a universal arg"
   (interactive "P")
   (let ((line (if arg "cerr" "cout")))
     (goto-char (point-at-bol))
@@ -1714,8 +1720,8 @@ and refilling all the paragraphs."
    (define-key latex-mode-map [(control c) (control a)] 'align-current)
    (define-key latex-mode-map [(control end)] 'tex-close-latex-block)
    (define-key latex-mode-map [(control tab)] 'ispell-complete-word)
-   (flyspell-mode)
-   (reftex-mode)
+   ;; (flyspell-mode 1)
+   ;; (reftex-mode 1)
    ))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1841,10 +1847,11 @@ a file in /tmp"
         (ff/add-copyrights)
         (ff/start-c))
 
-      (when (string-match "\\.cc$" filename)
+      (when (string-match "\.\\(cc\\|cpp\\)$" filename)
         (c++-mode)
         (ff/add-copyrights)
-        (let ((headername  (replace-regexp-in-string "\.cc" ".h" filename)))
+        (let ((headername  (replace-regexp-in-string "\\.\\(cc\\|cpp\\)$" ".h"
+                                                     filename)))
           (if (file-exists-p headername)
               (insert (concat "\n#include \"" (file-name-nondirectory headername) "\"\n"))
             (ff/start-c++))
@@ -1919,7 +1926,7 @@ a file in /tmp"
     )
   )
 
-(setq compilation-finish-functions (cons 'ff/restore-windows-if-no-error compilation-finish-functions))
+(add-to-list 'compilation-finish-functions 'ff/restore-windows-if-no-error)
 
 (defun ff/fast-compile ()
   "Compiles without asking anything."
@@ -2023,7 +2030,7 @@ This may be a useful alternative binding for \\[delete-other-windows]
       (while (re-search-forward "[0-9\.]+" nil t)
         (let ((value (string-to-number (buffer-substring (match-beginning 0) (match-end 0)))))
           (delete-region (match-beginning 0) (match-end 0))
-          (insert (format "%0.2f" value)))))))
+          (insert (format "%0.0f" value)))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Keymaping
@@ -2263,11 +2270,17 @@ next one. With universal argument, kill all killable buffers."
 (when (ff/load-or-alert "media")
 
   (unless window-system
-    (ff/configure-faces '(
-                          (media/mode-string-face :foreground "blue4" :weight 'bold)
-                          (media/current-tune-face :foreground "black" :background "yellow" :weight 'normal)
-                          (media/instant-highlight-face :foreground "black" :background "orange" :weight 'normal)
-                          ))
+    (ff/configure-faces
+     '(
+       (media/mode-string-face
+        :foreground "blue4" :weight 'bold)
+
+       (media/current-tune-face
+        :foreground "black" :background "yellow" :weight 'normal)
+
+       (media/instant-highlight-face
+        :foreground "black" :background "orange" :weight 'normal)
+       ))
     )
 
   (define-key global-map [(meta \\)] 'media)
@@ -2396,17 +2409,29 @@ proposes to visit them."
   (flyspell-mode)
   (when flyspell-mode (flyspell-buffer)))
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; The fridge!
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun ff/move-region-to-fridge () (interactive)
   "Cut the current region, paste it in a file called ./fridge
 with a time tag, and save this file"
-  (kill-region (region-beginning) (region-end))
-  (with-current-buffer (find-file-noselect "fridge")
-    (goto-char (point-max))
-    (insert "\n"
-            (format-time-string "%Y %b %d %H:%M:%S" (current-time))
-            "\n\n")
-    (yank)
-    (save-buffer)
+  (unless (use-region-p) (error "No region selected"))
+  (let ((bn (file-name-nondirectory (buffer-file-name))))
+    (kill-region (region-beginning) (region-end))
+    (with-current-buffer (find-file-noselect "fridge")
+      (goto-char (point-max))
+      (insert "\n")
+      (insert "######################################################################\n")
+      (insert "\n"
+              (format-time-string "%Y %b %d %H:%M:%S" (current-time))
+              " (from "
+              bn
+              ")\n\n")
+      (yank)
+      (save-buffer)
+      (message "Region moved to fridge")
+      )
     )
   )
 
@@ -2466,6 +2491,8 @@ with a time tag, and save this file"
 (define-key ff/map "3" 'ff/twin-horizontal-current-buffer)
 (define-key ff/map [?\C-3] 'ff/twin-horizontal-current-buffer)
 
+(define-key ff/map " " 'delete-trailing-whitespace)
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Hacks so that all keys are functionnal in xterm and through ssh.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;