X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=emacs.el;h=7dc64bb33bca2089fd1461a6f5b0a6c4ead7b3d9;hb=c8198d65fb55b4cb98c5354c6a35fc2ee671a5ac;hp=364adec4c4eaac379f1181cf74bf484789c9a4fd;hpb=16f950b489d03a23e80080626bcadfafe24b3f98;p=elisp.git diff --git a/emacs.el b/emacs.el index 364adec..7dc64bb 100644 --- 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. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;