From: Francois Fleuret Date: Wed, 21 Dec 2016 08:38:53 +0000 (+0100) Subject: Update. X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=elisp.git;a=commitdiff_plain;h=0fd5d8a4f454a74b52be3336af7b5d4b252acd0c Update. --- diff --git a/emacs.el b/emacs.el index 99c5e54..2271f58 100644 --- a/emacs.el +++ b/emacs.el @@ -970,9 +970,9 @@ printer." ,@(when (ff/battery-info-string) '((ff/battery-info-string))) - ;; '((propertize - ;; (ff/battery-info-string) - ;; 'face 'ff/battery-info-face))) + ;; '((propertize + ;; (ff/battery-info-string) + ;; 'face 'ff/battery-info-face))) " " @@ -1187,41 +1187,45 @@ goback argument, go back where we were." ;; The big stuff (bbdb, mailcrypt, etc.) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Failsafe version if we can't load bbdb -(defun ff/explicit-name (email) email) - (load "vc-git") -(when (ff/load-or-alert "bbdb") - - (setq - ;; Stop asking (if not t or nil, will not ask) - bbdb-offer-save 'never - ;; I hate when bbdb decides to mess up my windows - bbdb-use-pop-up nil - ;; I have no problem with bbdb asking me if the sender email - ;; does not match exactly the address we have in the database - bbdb-quiet-about-name-mismatches 0 - ;; I have european friends, too - bbdb-north-american-phone-numbers-p nil - ;; To cycle through all possible addresses - bbdb-complete-name-allow-cycling t - ;; Cycle with full names only, not through all net-addresses alone too - bbdb-dwim-net-address-allow-redundancy t - ;; Do not add new addresses automatically - bbdb-always-add-addresses nil - ) - - (defface ff/known-address-face - '((t (:foreground "blue2"))) - "The face to display known mail identities.") - - (defface ff/unknown-address-face - '((t (:foreground "gray50"))) - "The face to display unknown mail identities.") - - (defun ff/explicit-name (email) - "Returns a string identity for the first address in EMAIL. The +(setq bbdb-file "~/private/bbdb") + +(if (file-exists-p bbdb-file) + + ;; Failsafe version if we can't load bbdb + (defun ff/explicit-name (email) email) + + (when (ff/load-or-alert "bbdb") + + (setq + ;; Stop asking (if not t or nil, will not ask) + bbdb-offer-save 'never + ;; I hate when bbdb decides to mess up my windows + bbdb-use-pop-up nil + ;; I have no problem with bbdb asking me if the sender email + ;; does not match exactly the address we have in the database + bbdb-quiet-about-name-mismatches 0 + ;; I have european friends, too + bbdb-north-american-phone-numbers-p nil + ;; To cycle through all possible addresses + bbdb-complete-name-allow-cycling t + ;; Cycle with full names only, not through all net-addresses alone too + bbdb-dwim-net-address-allow-redundancy t + ;; Do not add new addresses automatically + bbdb-always-add-addresses nil + ) + + (defface ff/known-address-face + '((t (:foreground "blue2"))) + "The face to display known mail identities.") + + (defface ff/unknown-address-face + '((t (:foreground "gray50"))) + "The face to display unknown mail identities.") + + (defun ff/explicit-name (email) + "Returns a string identity for the first address in EMAIL. The identity is taken from bbdb if possible or from the address itself with mail-extract-address-components. The suffix \"& al.\" is added if there are more than one address. @@ -1231,35 +1235,36 @@ ff/unknown-address-face. If a record is found and contains a note 'face, the associated face is used, otherwise ff/known-address-face is used." - (and email - (let* ((data (mail-extract-address-components email)) - (name (car data)) - (net (cadr data)) - (record (bbdb-search-simple nil net))) + (and email + (let* ((data (mail-extract-address-components email)) + (name (car data)) + (net (cadr data)) + (record (bbdb-search-simple nil net))) + + (concat + + (condition-case nil + (propertize (bbdb-record-name record) + 'face + (or (cdr (assoc 'face + (bbdb-record-raw-notes record))) + 'ff/known-address-face)) + (error + (propertize (or (and data (concat "<" net ">")) + "*undefined*") + 'face 'ff/unknown-address-face) + )) + (if (string-match "," (mail-strip-quoted-names email)) " & al.") + ))) + ) - (concat + (ff/configure-faces '((ff/robot-address-face :foreground "green4") + (ff/personal-address-face :foreground "dark magenta" :weight 'bold) + (ff/important-address-face :foreground "red3" + :weight 'bold + ))) - (condition-case nil - (propertize (bbdb-record-name record) - 'face - (or (cdr (assoc 'face - (bbdb-record-raw-notes record))) - 'ff/known-address-face)) - (error - (propertize (or (and data (concat "<" net ">")) - "*undefined*") - 'face 'ff/unknown-address-face) - )) - (if (string-match "," (mail-strip-quoted-names email)) " & al.") - ))) ) - - (ff/configure-faces '((ff/robot-address-face :foreground "green4") - (ff/personal-address-face :foreground "dark magenta" :weight 'bold) - (ff/important-address-face :foreground "red3" - :weight 'bold - ))) - ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1409,6 +1414,41 @@ universal argument starts xfig even if the .fig does not exist" (load "tex-mode") (defun tex-font-lock-suscript (pos) ()) +;; Automagically add the frame numbers in comments in a beamer file + +(defun number-beamer-frames () + "Add the frame numbers as comments after each \begin{frame}" + (interactive) + + (save-excursion + (let ((total 0) + (n 1)) + + ;; First, clean-up existing numbering + (goto-char (point-min)) + (while (re-search-forward "^ *\\\\begin{frame}.*\\( %% frame [0-9]* / [0-9]*\\)$" nil t) + (kill-region (match-beginning 1) (match-end 1)) + ) + + ;; Then count the total number of frames + (goto-char (point-min)) + (while (re-search-forward "^ *\\\\begin{frame}" nil t) + (setq total (+ total 1)) + ) + + ;; Then, add the updated numbers + (goto-char (point-min)) + (while (re-search-forward "^ *\\\\begin{frame}" nil t) + (move-end-of-line 1) + (insert " %% frame " (prin1-to-string n) " / " (prin1-to-string total)) + (setq n (+ n 1)) + ) + ) + ) + + (message "Added frame numbers in comments.") + ) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Prevents many errors from beeping and makes the others play a nifty ;; sound @@ -1780,17 +1820,31 @@ and refilling all the paragraphs." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defun ff/start-slide () - (interactive) - (insert "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +(defun ff/start-slide (universal) + (interactive "P") + + (if universal + (progn + (insert "\\end{frame} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\\begin{frame}{") + (save-excursion (insert "}{} + +")) + ) + + (insert "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \\begin{frame}{") - (save-excursion (insert "}{} + (save-excursion (insert "}{} \\end{frame} ")) + ) ) (add-hook @@ -2591,6 +2645,7 @@ with a time tag, and save this file" (define-key ff/map [(control m)] 'woman) (define-key ff/map "b" 'bookmark-jump) (define-key ff/map [(control =)] 'calc) +(define-key ff/map "=" 'number-beamer-frames) (define-key ff/map [(control shift b)] (lambda () (interactive) (bookmark-set) @@ -2773,10 +2828,9 @@ With argument ARG, do this that many times." ;; Privacy ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Where to save the bookmarks and where is bbdb +;; Where to save the bookmarks (setq bookmark-default-file (concat ff/emacs-dir "/bmk") - bbdb-file "~/private/bbdb" custom-file (concat ff/emacs-dir "/custom")) ;; enotes.el is one of my own scripts, check my web page diff --git a/vm b/vm index 85a9bdc..a4f2b80 100644 --- a/vm +++ b/vm @@ -841,7 +841,9 @@ created." (ff/configure-faces '( - (vm-highlight-url :background "white" :foreground "#0000f0" :box nil) + ;; (vm-highlight-url :weight 'bold :foreground "#0000f0" :box nil) + (vm-highlight-url :underline nil :foreground "#0000f0" :box nil) + ;; (vm-highlight-url :background "white" :foreground "#0000f0" :box nil) (vm-highlighted-header :box nil) ;; :weight 'bold :background "white") (vm-attachment-button :background "#f0d0d0" :box nil)