X-Git-Url: https://www.fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=elisp.git;a=blobdiff_plain;f=emacs.el;h=69e002f38b3145cf229ebf10ead5fc514dff375e;hp=63b51c3eae4b6d820d4657a9dca3ba9eb2d927b7;hb=270866b336934dda55b88baf1f6a75c7a860c305;hpb=10b4d5177ae8d16fd25bad4a4a960b8563f5bea6 diff --git a/emacs.el b/emacs.el index 63b51c3..69e002f 100644 --- a/emacs.el +++ b/emacs.el @@ -31,6 +31,11 @@ ;; Xft.antialias: true ;; Xft.rgba: rgb +;; This is where I put most of my emacs-related files +(setq ff/emacs-dir "~/private/emacs") +(unless (file-exists-p ff/emacs-dir) + (mkdir ff/emacs-dir t)) + ;; Give the focus to the emacs window if we are under a windowing ;; system @@ -48,8 +53,9 @@ (menu-bar-mode -1) ;; Nor fringes -(when (functionp 'fringe-mode) (fringe-mode '(0 . 0))) +;; (when (functionp 'fringe-mode) (fringe-mode '(0 . 0))) ;; (when (functionp 'fringe-mode) (fringe-mode '(0 . 1))) +(when (functionp 'fringe-mode) (fringe-mode 10)) ;; And I do not like scrollbar neither (when (functionp 'scroll-bar-mode) (scroll-bar-mode -1)) @@ -73,7 +79,7 @@ (iswitchb-mode 1) ;; Save the minibuffer history -(setq savehist-file "~/private/emacs/savehist") +(setq savehist-file (concat ff/emacs-dir "/savehist")) (when (functionp 'savehist-mode) (savehist-mode 1)) ;; And allow minibuffer recursion @@ -208,7 +214,8 @@ load-warning buffer in case of failure." ;; And I like ascii files epa-armor t - tramp-default-method "ssh" + ;; tramp-default-method "ssh" + tramp-default-method "scp" ;; I have no problem with files having their own local variables enable-local-eval t @@ -219,6 +226,12 @@ load-warning buffer in case of failure." mc-use-default-recipients t ;; browse-url-new-window-flag t + + ;; I do not like compilation to automatically split the active window + ;; vertically, even when the said window is very wide + split-height-threshold 0 + split-width-threshold nil + ) ;; The backups @@ -300,7 +313,7 @@ load-warning buffer in case of failure." (add-to-list 'auto-mode-alist '("\\.txt\\'" . (lambda() (text-mode) (orgtbl-mode) - (auto-fill-mode) + ;; (auto-fill-mode) (flyspell-mode)))) (add-hook 'c++-mode-hook 'flyspell-prog-mode) @@ -377,6 +390,8 @@ load-warning buffer in case of failure." (ff/configure-faces '((italic :underline nil) (info-title-2 :foreground "green") + (font-lock-comment-delimiter-face :foreground "blue") + (font-lock-comment-face :foreground "blue") (cperl-array-face :background "gray90" :foreground "blue" :weight 'bold) (cperl-hash-face :background "gray90" :foreground "purple" :weight 'bold) (diff-added :background "gray90" :foreground "green4" :weight 'bold) @@ -393,11 +408,10 @@ load-warning buffer in case of failure." (font-lock-string-face :foreground "green") (font-lock-variable-name-face :foreground "blue") (font-lock-constant-face :foreground "blue") - (font-lock-function-name-face :foreground "blue") (font-lock-preprocessor-face :foreground "green") (font-lock-function-name-face :foreground "cyan") - (flyspell-incorrect-face :foreground "red2") - (flyspell-duplicate-face :foreground "OrangeRed2") + (flyspell-incorrect :foreground "red2") + (flyspell-duplicate :foreground "OrangeRed2") (hl-line :background "white") (sh-heredoc :foreground "black" :background "#fff0f0") (sh-heredoc-face :foreground "black" :background "#fff0f0") @@ -415,11 +429,16 @@ load-warning buffer in case of failure." :inverse-video nil) (mode-line-inactive :background "gray60" :foreground "black" :box nil :inverse-video nil) - (region :background "springgreen2") + (region :background "white" :foreground "black") (ff/date-info-face :foreground "white" :weight 'bold) (ff/mail-alarm-face :foreground "red" :weight 'bold) + (selector/selection :background "yellow") (gui-button-face :background "green" :foreground "white") (enotes/information-face :foreground "cyan") + + (file-name-shadow :foreground "black") + (shadow :foreground "black") + (warning :foreground "black" :background "red") )) ) @@ -435,6 +454,7 @@ load-warning buffer in case of failure." (ff/configure-faces '( ;; (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) @@ -451,11 +471,12 @@ load-warning buffer in case of failure." (font-lock-builtin-face :foreground "deeppink3") (font-lock-string-face :foreground "dark olive green") (font-lock-variable-name-face :foreground "sienna") - (font-lock-function-name-face :foreground "blue4" :weight 'bold) + ;; (font-lock-function-name-face :foreground "blue" :weight 'bold) + (font-lock-function-name-face :foreground "blue") ;; (font-lock-comment-delimiter-face :foreground "dark violet") ;; (font-lock-comment-face :foreground "dark violet") - (flyspell-incorrect-face :foreground "red2") - (flyspell-duplicate-face :foreground "OrangeRed2") + (flyspell-incorrect :background "#ff0000" :foreground "black") + (flyspell-duplicate :background "#ff9000" :foreground "black") (hl-line :background "white") (sh-heredoc :foreground "black" :background "#fff0f0") (sh-heredoc-face :foreground "black" :background "#fff0f0") @@ -475,15 +496,15 @@ load-warning buffer in case of failure." :inverse-video nil) (header-line :background "cornflowerblue" :foreground "black" :box nil :inverse-video nil) - (mode-line-inactive :background "#b0b0b0" :foreground "black" :box nil + (mode-line-inactive :background "gray80" :foreground "black" :box nil :inverse-video nil) ;; (fringe :background "black" :foreground "gray90") - (fringe :background "gray65") - (tex-verbatim :family "courrier") + (fringe :background "gray80") (ff/date-info-face :foreground "white" :weight 'bold) (ff/mail-alarm-face :foreground "white" :background "red2") ;; (alarm-vc-face :foreground "black" :background "yellow" :weight 'normal) - )) + (gui-button-face :background "green" :foreground "black") + )) ) ;; When we are root, put the modeline in red @@ -605,31 +626,6 @@ load-warning buffer in case of failure." ;; Counting various entities in text ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun ff/count-char () - "Prints the number of characters between the first previous \"--\" -and the firt next \"--\"." - (interactive) - (let ((from (save-excursion (re-search-backward "^--$\\|BEGIN_COUNT" nil t))) - (to (save-excursion (re-search-forward "^--$\\|END_COUNT" nil t)))) - (if (and to from) (message "%d character(s)" (- to from 6)) - (error "Can not find the -- delimiters")))) - -(defun ff/count-words () - "Print number of words between the first previous \"--\" and the -firt next \"--\"." - (interactive) - (let ((from (save-excursion (re-search-backward "^--$" nil t))) - (to (save-excursion (re-search-forward "^--$" nil t)))) - (if (and to from) - (save-excursion - (goto-char from) - (let ((count 0)) - (while (< (point) to) - (re-search-forward "\\w+\\W+") - (setq count (1+ count))) - (message "%d word(s)" count))) - (error "Can not find the -- delimiters")))) - (defun ff/word-occurences () "Display in a new buffer the list of words sorted by number of occurrences " @@ -817,7 +813,7 @@ printer." (if (> temp 50) (concat (let ((s (format "%dC " temp))) - (if (> temp 65) (propertize s 'face + (if (> temp 70) (propertize s 'face 'font-lock-warning-face) s)) ) @@ -1205,9 +1201,9 @@ 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" + (ff/personal-address-face :foreground "blue2" :weight 'bold) + (ff/important-address-face :foreground "red3" + ;; :foreground "blue2" ;; :underline t ;; :background "white" ;; :foreground "green4" @@ -1229,7 +1225,7 @@ ff/known-address-face is used." ) (defface ff/secure-date - '((t (:background "gold" :weight bold))) + '((t (:background "white" :weight bold))) "The face to display the dates in the modeline.") (defun ff/secure-note-add () (interactive) @@ -1240,7 +1236,7 @@ ff/known-address-face is used." (goto-char (point-min)) (insert "-- " (format-time-string "%Y %b %d %H:%M:%S" (current-time)) - " ------------------------------------------------\n\n") + " --\n\n") (previous-line 1) ;; Colorizes the dates @@ -1248,10 +1244,11 @@ ff/known-address-face is used." (save-excursion (goto-char (point-min)) (while (re-search-forward - "^-+ [0-9]+ [a-z]+ [0-9]+ [0-9]+:[0-9]+:[0-9]+.+$" + "^-- [0-9]+ [a-z]+ [0-9]+ [0-9]+:[0-9]+:[0-9]+ -+$" nil t) (add-text-properties - (match-beginning 0) (match-end 0) '(face ff/secure-date)))) + (match-beginning 0) (1+ (match-end 0)) + '(face ff/secure-date rear-nonsticky t)))) (set-buffer-modified-p nil) (setq buffer-undo-list nil) @@ -1655,6 +1652,11 @@ int main(int argc, char **argv) { + @@ -1726,21 +1728,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) - ;; Strange that I have to specify that - ;; (setq paragraph-separate "[% \f]*$") - ;; (setq paragraph-separate - ;; (concat "[%]*\\|[\f%]\\|[ \t]*\\($\\|" - ;; "\\\\[][]\\|" - ;; "\\\\" (regexp-opt (append - ;; (mapcar 'car latex-section-alist) - ;; '("begin" "label" "end" )) t) - ;; "\\>\\|\\\\\\(" (regexp-opt '("item" "bibitem" "newline" - ;; "noindent" "newpage" "footnote" - ;; "marginpar" "parbox" "caption")) - ;; "\\|\\$\\$\\|[a-z]*\\(space\\|skip\\|page[a-z]*\\)" - ;; "\\>\\)[ \t]*\\($\\|%\\)\\)")) - ;; (flyspell-mode 1) - ;; (reftex-mode 1) + (copy-face 'default 'tex-verbatim) + ;; (ff/configure-faces '((tex-verbatim :background "gray95"))) )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1991,6 +1980,19 @@ a file in /tmp" ;; (when (ff/load-or-alert "flyspell-timer" t) ;; (add-hook 'flyspell-mode-hook 'flyspell-timer-ensure-idle-timer)) +(defun ff/start-flyspell () (interactive) + (ff/configure-faces + '( + ;; (flyspell-incorrect :background "#ff0000" :foreground "black") + ;; (flyspell-duplicate :background "#ff9000" :foreground "black") + (flyspell-incorrect :foreground "#ff0000" :weight 'bold) + (flyspell-duplicate :foreground "#ff9000" :weight 'bold) + )) + ;; (flyspell-buffer) + ) + +(add-hook 'flyspell-mode-hook 'ff/start-flyspell) + (defun ff/pick-dictionnary () (interactive) (when (and (boundp 'flyspell-mode) flyspell-mode) (if (and current-input-method (string-match "latin" current-input-method)) @@ -2282,7 +2284,7 @@ next one. With universal argument, kill all killable buffers." "\.bbl$" "\.aux$" "\.toc$" )) recentf-max-saved-items 1000 - recentf-save-file "~/private/emacs/recentf" + recentf-save-file (concat ff/emacs-dir "/recentf") ) (when (boundp 'recentf-keep) (add-to-list 'recentf-keep 'file-remote-p)) @@ -2318,7 +2320,7 @@ next one. With universal argument, kill all killable buffers." media/add-current-song-to-interrupted-when-killing t media/duration-to-history 30 media/history-size 1000 - media/playlist-file "~/private/emacs/media-playlists" + media/playlist-file (concat ff/emacs-dir "/media-playlists") media/mplayer/args '( "-framedrop" "-zoom" @@ -2327,25 +2329,10 @@ next one. With universal argument, kill all killable buffers." ;; "-stop-xscreensaver" ;; "-osdlevel" "3" ) - media/mplayer/timing-request-period 5.0 + media/mplayer/timing-request-period 1.0 ) ) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; 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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2405,6 +2392,16 @@ proposes to visit them." ) ) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; My script to automatically count the number of words and characters +;; between two markers + +(ff/load-or-alert "text-counters.el") + +;; Display them in the modeline when in text-mode + +(add-hook 'text-mode-hook 'tc/add-text-counters-in-modeline) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; A function to remove temporary alarm windows ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2482,13 +2479,41 @@ with a time tag, and save this file" ) ) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Let's be zen. Remove the modeline and fringes. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(setq ff/zen-original-setting nil) + +(defun ff/zen () (interactive) + (if ff/zen-original-setting + (setq mode-line-format (car ff/zen-original-setting) + fringe-mode (cdr ff/zen-original-setting) + ff/zen-original-setting nil) + (setq ff/zen-original-setting (cons mode-line-format fringe-mode) + mode-line-format nil + fringe-mode '(0 . 0)) + (delete-other-windows) + ) + (fringe-mode fringe-mode) + (if ff/zen-original-setting + (message "Zen mode") + (message "Cluttered mode")) + ) + +;; (define-key global-map [(control x) (x)] 'ff/zen) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; My own keymap ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq ff/map (make-sparse-keymap)) (define-key global-map [(control \`)] ff/map) -;;(define-key global-map [(control @)] ff/map) + +(unless window-system + ;; (define-key global-map [(control @)] ff/map) + (define-key global-map [(meta O) \`] ff/map) +) (define-key esc-map "`" ff/map) @@ -2547,6 +2572,7 @@ with a time tag, and save this file" (define-key ff/map [?\C-3] 'ff/twin-horizontal-current-buffer) (define-key ff/map " " 'delete-trailing-whitespace) +(define-key ff/map [(control x)] 'ff/zen) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Hacks so that all keys are functionnal in xterm and through ssh. @@ -2714,9 +2740,9 @@ With argument ARG, do this that many times." ;; Where to save the bookmarks and where is bbdb -(setq bookmark-default-file "~/private/emacs/bmk" +(setq bookmark-default-file (concat ff/emacs-dir "/bmk") bbdb-file "~/private/bbdb" - custom-file "~/private/emacs/custom") + custom-file (concat ff/emacs-dir "/custom")) ;; enotes.el is one of my own scripts, check my web page