From eaf0932df93df8fbcbb134372e24e453a026dc6c Mon Sep 17 00:00:00 2001 From: Francois Fleuret Date: Thu, 25 Aug 2011 21:59:21 +0200 Subject: [PATCH] Updated for the T420s. --- emacs.el | 292 +++++++++++++++++++++++++------------------------------ 1 file changed, 135 insertions(+), 157 deletions(-) diff --git a/emacs.el b/emacs.el index 7dc64bb..a2278be 100644 --- a/emacs.el +++ b/emacs.el @@ -18,15 +18,6 @@ ;; Contact for comments & bug reports ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Ugly hack because 23.2 is not installed properly in my Debian - -(when (and (>= emacs-major-version 23) - (>= emacs-minor-version 2)) - (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 @@ -208,6 +199,8 @@ load-warning buffer in case of failure." ;; And I like ascii files epa-armor t + tramp-default-method "ssh" + ;; I have no problem with files having their own local variables enable-local-eval t @@ -232,6 +225,15 @@ load-warning buffer in case of failure." backup-by-copying-when-linked t ) +(setq + user-emacs-directory "~/misc/emacs.d/") + +(setq + abbrev-file-name (concat user-emacs-directory "abbrev_defs") + server-auth-dir (concat user-emacs-directory "server/") + custom-theme-directory user-emacs-directory + ) + ;; Stop this crazy blinking cursor (blink-cursor-mode 0) @@ -448,7 +450,7 @@ load-warning buffer in case of failure." (message-cited-text-face :foreground "firebrick") (isearch :background "yellow" :foreground "black") (isearch-lazy-highlight-face' :background "yellow3" :foreground "black") - (region :background "light sky blue" :foreground "black") + (region :background "#b8b8e0" :foreground "black") ;; (region :background "plum" :foreground "black") (show-paren-match-face :background "gold" :foreground "black") (show-paren-mismatch-face :background "red" :foreground "black") @@ -580,8 +582,8 @@ load-warning buffer in case of failure." "Prints the number of characters 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)))) + (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")))) @@ -760,103 +762,53 @@ printer." ;; Dealing with the laptop battery ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(defcustom ff/battery-file "/proc/acpi/battery/BAT0" +(defcustom ff/battery-dir "/sys/class/power_supply/BAT0" "*Where to gather the battery information") -(defcustom ff/thermal-file "/proc/acpi/thermal_zone/THM1/" +(defcustom ff/temperature-file "/sys/class/thermal/thermal_zone0/temp" "*Where to gather the thermal information") -(defun ff/battery-info (path) - - (let ((state nil) - (full nil) - (charge nil) - (rate nil)) - - (with-temp-buffer - (insert-file-contents-literally (concat path "/state")) - (while (re-search-forward "^\\([a-z ]*\\): *\\(.*\\)$" nil t) - (let ((field (match-string 1)) - (value (match-string 2))) - - (cond ((string= field "charging state") - (cond ((string= value "charged") (setq state 'charged)) - ((string= value "charging") (setq state 'charging)) - ((string= value "discharging")(setq state 'discharging)) - (t (setq state 'unknown)))) - - ((string= field "remaining capacity") - (setq charge (string-to-number value))) - - ((string= field "present rate") - (setq rate (string-to-number value))))))) +(defun ff/file-first-line (file) + (with-temp-buffer + (insert-file-contents-literally file) + (buffer-substring (point-at-bol) (point-at-eol)))) - (with-temp-buffer - (insert-file-contents-literally (concat path "/info")) - (while (re-search-forward "^\\([a-z ]*\\): *\\(.*\\)$" nil t) - (let ((field (match-string 1)) - (value (match-string 2))) - - (cond ((string= field "last full capacity") - (setq full (string-to-number value))))))) - - (list state full charge rate))) - -(defun ff/thermal-info (path) - (let ((temperature nil)) - (with-temp-buffer - (insert-file-contents-literally (concat path "/temperature")) - (while (re-search-forward "^\\([a-z ]*\\): *\\(.*\\)$" nil t) - (let ((field (match-string 1)) - (value (match-string 2))) - - (cond ((string= field "temperature") - (setq temperature (string-to-number value))))))) - - (list temperature))) +(defun ff/battery-percent () + (/ (* 100 (string-to-number (ff/file-first-line (concat ff/battery-dir "/charge_now")))) + (string-to-number (ff/file-first-line (concat ff/battery-dir "/charge_full"))))) (defun ff/laptop-info-string () (interactive) (condition-case nil - (let ((info (ff/battery-info ff/battery-file)) - (temperature (car (ff/thermal-info ff/thermal-file)))) - - (concat + (concat - ;; The temperature - - (if (> temperature 50) + ;; The temperature + (let ((temp (/ (string-to-number (ff/file-first-line ff/temperature-file)) 1000))) + (if (> temp 50) (concat - (let ((s (format "%dC" temperature))) - (if (> temperature 65) (propertize s 'face - 'font-lock-warning-face) + (let ((s (format "%dC" temp))) + (if (> temp 65) (propertize s 'face + 'font-lock-warning-face) s)) - "/" ) ) + ) - ;; The battery - - (cond + " " - ((eq (nth 0 info) 'charged) "L") + ;; The battery - ((eq (nth 0 info) 'discharging) - (let* ((time (/ (* (nth 2 info) 60) (nth 3 info))) - (s (format "B%d:%02d" (/ time 60) (mod time 60)))) - (if (< time 15) - ;; Les than 15 minutes, let's write the remaining - ;; time in red - (propertize s 'face 'font-lock-warning-face) - s))) + (let ((battery-status (ff/file-first-line (concat ff/battery-dir "/status")))) - ((eq (nth 0 info) 'charging) - (format "L%2d%%" (/ (* 100 (nth 2 info)) (nth 1 info)))) + (cond + ((string= battery-status "Full") "L") + ((string= battery-status "Charging") (format "L%d%%" (ff/battery-percent))) + ((string= battery-status "Discharging") (format "B%d%%" (ff/battery-percent))) + (t "?"))) - (t (format "???")) + ) - ))) - - (error nil))) + (error nil)) + ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -991,6 +943,11 @@ printer." (load "term") +(defun ff/kill-associated-buffer (process str) (interactive) + (let ((buffer (process-buffer process))) + (kill-buffer buffer)) + (message "Process finished (%s)" (replace-regexp-in-string "\n$" "" str))) + (defun ff/kill-associated-buffer-and-delete-windows (process str) (interactive) (let ((buffer (process-buffer process))) (delete-windows-on buffer) @@ -1037,9 +994,12 @@ In line mode: M-p previous line, M-n next line.") (let ((process (get-buffer-process (current-buffer)))) (process-kill-without-query process) (set-process-sentinel process - 'ff/kill-associated-buffer-and-delete-windows)) + ;; 'ff/kill-associated-buffer-and-delete-windows + 'ff/kill-associated-buffer + )) - (switch-to-buffer-other-window (concat "*" bn "*")) + ;; (switch-to-buffer-other-window (concat "*" bn "*")) + (switch-to-buffer (concat "*" bn "*")) )) (defcustom ff/default-bash-commands '("ssh") @@ -1087,17 +1047,17 @@ 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))) +;; (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 - 'executable-make-buffer-file-executable-if-script-p) + 'executable-make-buffer-file-executable-if-script-p) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Cool stuff to navigate in emacs-lisp sources @@ -1431,17 +1391,21 @@ 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{epsfig} -\\usepackage{a4} +\\usepackage[a4paper,top=2.5cm,bottom=2cm,left=1.5cm,right=1.5cm]{geometry} +\\usepackage[utf8]{inputenc} \\usepackage{amsmath} \\usepackage{amssymb} -\\usepackage[utf8]{inputenc} +\\usepackage{hyperref} + +%% \\usepackage[pdftex]{graphicx} %% \\usepackage{eurosym} -%% \\usepackage{hyperref} -%% \\usepackage{harvard} -\\setlength{\\parindent}{0cm} -\\setlength{\\parskip}{12pt} +\\hypersetup{ + colorlinks=true, + linkcolor=blue, + urlcolor=blue, + citecolor=blue +} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Sans serif fonts @@ -1451,17 +1415,13 @@ universal argument starts xfig even if the .fig does not exist" %% \\renewcommand{\\ttdefault}{pcr} %% \\renewcommand*\\familydefault{\\sfdefault} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Draft layout -%% \\setlength{\\parindent}{1cm} -%% \\renewcommand{\\baselinestretch}{2.0} -%% \\setlength{\\oddsidemargin}{-0.6cm} -%% \\setlength{\\evensidemargin}{0cm} -%% \\setlength{\\textwidth}{17.5cm} -%% \\setlength{\\textheight}{23cm} -%% \\setlength{\\topmargin}{-1.5cm} +%% \\def\\argmax{\\operatornamewithlimits{argmax}} +%% \\def\\argmin{\\operatornamewithlimits{argmin}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - +%% \\setlength{\\parindent}{0cm} +%% \\setlength{\\parskip}{12pt} %% \\renewcommand{\\baselinestretch}{1.3} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \\begin{document} @@ -1479,25 +1439,12 @@ universal argument starts xfig even if the .fig does not exist" (defun ff/add-copyrights () "Adds two lines for the (C) at the beginning of current buffer." (interactive) - (let ((comment-style 'plain) - (gpl - (concat - - "\nSTART_IP_HEADER\n" - (when (boundp 'user-full-name) - (concat "\nWritten by " user-full-name "\n")) - - (when (boundp 'user-mail-address) - (concat "Contact <" user-mail-address "> for comments & bug reports\n")) - - "\nEND_IP_HEADER\n" - - ))) + (let ((comment-style 'plain)) (goto-char (point-min)) - ;; If this is a script, put the gpl after the first line + ;; If this is a script, put the copyrights after the first line (when (re-search-forward "^#!" nil t) (beginning-of-line) @@ -1505,7 +1452,20 @@ universal argument starts xfig even if the .fig does not exist" (let ((start (point)) (comment-style 'box)) - (insert gpl) + (insert + (concat + + "\nSTART_IP_HEADER\n" + + (when (boundp 'user-full-name) + (concat "\nWritten by " user-full-name "\n")) + + (when (boundp 'user-mail-address) + (concat "Contact <" user-mail-address "> for comments & bug reports\n")) + + "\nEND_IP_HEADER\n" + )) + (comment-region start (point))) )) @@ -1720,6 +1680,19 @@ 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) )) @@ -2030,7 +2003,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.0f" value))))))) + (insert (format "%0.2f" value))))))) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Keymaping @@ -2448,10 +2421,15 @@ with a time tag, and save this file" (git-status (file-name-directory (buffer-file-name))) (error "No file attached to this buffer"))) +(defun ff/insert-date () (interactive) + (insert (format-time-string "\n * %Y %b %d %H:%M:%S\n\n" (current-time))) + ) + (define-key ff/map [(control g)] 'ff/git-status) (define-key ff/map [(control w)] 'server-edit) (define-key ff/map [(control d)] 'ff/elisp-debug-on) -(define-key ff/map "d" 'diary) +;; (define-key ff/map "d" 'diary) +(define-key ff/map "d" 'ff/insert-date) (define-key ff/map [(control \`)] 'ff/bash-new-buffer) (define-key ff/map [(control n)] 'enotes/show-all-notes) (define-key ff/map [(control s)] 'ff/secure-note-add) @@ -2503,30 +2481,30 @@ with a time tag, and save this file" ;; so that it works in xterm (yes), let's use xclip. This is a bit ;; ugly. - (defun ff/yank-with-xclip (&optional arg) - "Paste the content of the X clipboard with the xclip -command. Without ARG converts some of the '\\uxxxx' characters." - (interactive "P") - (with-temp-buffer - (shell-command "xclip -o" t) - (unless arg - (mapc (lambda (x) (replace-string (concat "\\u" (car x)) (cdr x) nil (point-min) (point-max))) - '(("fffd" . "??") - ("2013" . "-") - ("2014" . "--") - ("2018" . "`") - ("2019" . "'") - ("201c" . "``") - ("201d" . "''") - ("2022" . "*") - ("2026" . "...") - ("20ac" . "EUR") - ))) - (kill-ring-save (point-min) (point-max))) - - (yank)) - - (define-key global-map [(meta y)] 'ff/yank-with-xclip) + ;; (defun ff/yank-with-xclip (&optional arg) + ;; "Paste the content of the X clipboard with the xclip +;; command. Without ARG converts some of the '\\uxxxx' characters." + ;; (interactive "P") + ;; (with-temp-buffer + ;; (shell-command "xclip -o" t) + ;; (unless arg + ;; (mapc (lambda (x) (replace-string (concat "\\u" (car x)) (cdr x) nil (point-min) (point-max))) + ;; '(("fffd" . "??") + ;; ("2013" . "-") + ;; ("2014" . "--") + ;; ("2018" . "`") + ;; ("2019" . "'") + ;; ("201c" . "``") + ;; ("201d" . "''") + ;; ("2022" . "*") + ;; ("2026" . "...") + ;; ("20ac" . "EUR") + ;; ))) + ;; (kill-ring-save (point-min) (point-max))) + + ;; (yank)) + + ;; (define-key global-map [(meta y)] 'ff/yank-with-xclip) ;; (set-terminal-coding-system 'iso-latin-1) ;; (set-terminal-coding-system 'utf-8) -- 2.39.5