X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?a=blobdiff_plain;f=emacs.el;h=364adec4c4eaac379f1181cf74bf484789c9a4fd;hb=16f950b489d03a23e80080626bcadfafe24b3f98;hp=8d4c2f0993bcc51a2c9decdc54ed734d35ab047a;hpb=331cbade24e846632e1e8d40af0813b3158a76ff;p=elisp.git diff --git a/emacs.el b/emacs.el index 8d4c2f0..364adec 100644 --- a/emacs.el +++ b/emacs.el @@ -1,4 +1,4 @@ -;; -*-Emacs-Lisp-*- +;; -*- mode: Emacs-Lisp; mode: rainbow; -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; This program is free software; you can redistribute it and/or ;; @@ -18,6 +18,15 @@ ;; 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 @@ -409,7 +418,7 @@ load-warning buffer in case of failure." (ff/configure-faces '( - (escape-glyph :foreground "gray70" :weight 'bold) + (escape-glyph :foreground "#c0c0c0" :weight 'bold) (default :background "gray90" :foreground "black") (cperl-array-face :background "gray90" :foreground "blue" :weight 'bold) (cperl-hash-face :background "gray90" :foreground "purple" :weight 'bold) @@ -425,7 +434,8 @@ load-warning buffer in case of failure." (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-comment-face :foreground "") + ;; (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") (header-line :background "gray65") @@ -650,10 +660,10 @@ occurrences " (setq ps-print-color-p nil ;; ps-paper-type 'letter ps-paper-type 'a4 - ps-top-margin (* 1.75 56.692) - ps-left-margin 56.692 - ps-bottom-margin 56.692 - ps-right-margin 56.692 + ;; ps-top-margin (* 1.75 56.692) + ;; ps-left-margin 56.692 + ;; ps-bottom-margin 56.692 + ;; ps-right-margin 56.692 ;; Simple header. Remove that silly frame shadow. ps-print-header nil @@ -672,6 +682,26 @@ occurrences " ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; http://blog.tuxicity.se/elisp/emacs/2010/03/26/rename-file-and-buffer-in-emacs.htm + +(defun rename-file-and-buffer () + "Renames current buffer and file it is visiting." + (interactive) + (let ((name (buffer-name)) + (filename (buffer-file-name))) + (if (not (and filename (file-exists-p filename))) + (message "Buffer '%s' is not visiting a file!" name) + (let ((new-name (read-file-name "New name: " filename))) + (cond ((get-buffer new-name) + (message "A buffer named '%s' already exists!" new-name)) + (t + (rename-file name new-name 1) + (rename-buffer new-name) + (set-visited-file-name new-name) + (set-buffer-modified-p nil))))))) + +(global-set-key (kbd "C-c r") 'rename-file-and-buffer) + (defun ff/non-existing-filename (dir prefix suffix) "Returns a filename of the form DIR/PREFIX[.n].SUFFIX whose file does not exist" @@ -1129,7 +1159,7 @@ goback argument, go back where we were." "The face to display known mail identities.") (defface ff/unknown-address-face - '((t (:foreground "red3"))) + '((t (:foreground "red4"))) "The face to display unknown mail identities.") (defun ff/explicit-name (email) @@ -1158,7 +1188,7 @@ ff/known-address-face is used." (bbdb-record-raw-notes record))) 'ff/known-address-face)) (error - (propertize (or (and data (concat "<" email ">")) + (propertize (or (and data (concat "<" net ">")) "*undefined*") 'face 'ff/unknown-address-face) )) @@ -1274,12 +1304,15 @@ universal argument starts xfig even if the .fig does not exist" (or (re-search-forward "{\\([^{}]*.\\)eps}" (point-at-eol) t) (re-search-forward "{\\([^{}]*.\\)pdf}" (point-at-eol) t) (re-search-forward "{\\([^{}]*.\\)pdf_t}" (point-at-eol) t) + (re-search-forward "{\\([^{}]*.\\)png}" (point-at-eol) t) + (re-search-forward "{\\([^{}]*.\\)jpg}" (point-at-eol) t) ))) (and (<= (match-beginning 1) (point)) (>= (match-end 1) (- (point) 2)))) (ff/run-eps-edition (match-string-no-properties 1) '(("fig" . "xfig") + ("jpg" . "gimp" ) ("png" . "gimp") ("pgm" . "gimp") ("ppm" . "gimp") ("jpg" . "xv")) universal) @@ -1401,15 +1434,26 @@ universal argument starts xfig even if the .fig does not exist" %% \\usepackage{hyperref} %% \\usepackage{harvard} +\\setlength{\\parindent}{0cm} +\\setlength{\\parskip}{12pt} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% Sans serif fonts %% \\usepackage[T1]{fontenc} %% \\usepackage[scaled]{helvet} %% \\usepackage[cm]{sfmath} %% \\renewcommand{\\ttdefault}{pcr} %% \\renewcommand*\\familydefault{\\sfdefault} - -\\setlength{\\parindent}{0cm} -\\setlength{\\parskip}{12pt} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 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} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% \\renewcommand{\\baselinestretch}{1.3} @@ -1462,6 +1506,14 @@ universal argument starts xfig even if the .fig does not exist" ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun ff/remove-ip-header () (interactive) + (save-excursion + (goto-char (point-min)) + (when (and (re-search-forward "START_IP_HEADER" nil t) + (re-search-forward "END_IP_HEADER" nil t)) + (message "yep")) + )) + (defun ff/add-gpl () "Adds the GPL statements at the beginning of current buffer." (interactive) @@ -1522,6 +1574,24 @@ END_IP_HEADER ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +(defun ff/start-c () + "Adds the header to start a C program." + (interactive) + ;; (beginning-of-buffer) + (insert + " +#include +#include + +int main(int argc, char **argv) { + exit(EXIT_SUCCESS); +} +") + (previous-line 2) + ) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + (defun ff/start-c++ () "Adds the header to start a C++ program." (interactive) @@ -1637,12 +1707,16 @@ and refilling all the paragraphs." ")) ) -(add-hook 'latex-mode-hook (lambda () - (define-key latex-mode-map - [(meta S)] 'ff/start-slide) - (define-key latex-mode-map - [(control c) (control a)] 'align-current) - )) +(add-hook + 'latex-mode-hook + (lambda () + (define-key latex-mode-map [(meta S)] 'ff/start-slide) + (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) + )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -1762,6 +1836,11 @@ a file in /tmp" (previous-line 1) ) + (when (string-match "\\.c$" filename) + (c-mode) + (ff/add-copyrights) + (ff/start-c)) + (when (string-match "\\.cc$" filename) (c++-mode) (ff/add-copyrights) @@ -2001,13 +2080,11 @@ This may be a useful alternative binding for \\[delete-other-windows] ;; Closes the current \begin{} -(add-hook 'latex-mode-hook (lambda () (define-key latex-mode-map [(control end)] 'tex-close-latex-block))) - (when (ff/load-or-alert "longlines") (setq longlines-show-hard-newlines t longlines-auto-wrap t - longline-show-effect #(" -- |\n" 0 2 (face escape-glyph)) + ;; longlines-show-effect #("|\n" 0 2 (face escape-glyph)) ) ;; (defun ff/auto-longlines () @@ -2022,11 +2099,6 @@ This may be a useful alternative binding for \\[delete-other-windows] ) -(add-hook 'latex-mode-hook - (lambda () - (define-key latex-mode-map [(control tab)] - 'ispell-complete-word))) - ;; Meta-/ remaped (completion) (define-key global-map [(shift right)] 'dabbrev-expand) @@ -2324,6 +2396,20 @@ proposes to visit them." (flyspell-mode) (when flyspell-mode (flyspell-buffer))) +(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) + ) + ) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; My own keymap ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2340,6 +2426,7 @@ proposes to visit them." (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 [(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) @@ -2351,6 +2438,7 @@ proposes to visit them." (define-key ff/map [(control c)] 'calendar) ;; (define-key ff/map [(control c)] (lambda () (interactive) (save-excursion (calendar)))) (define-key ff/map [(control l)] 'goto-line) +(define-key ff/map "l" 'longlines-mode) (define-key ff/map [(control o)] 'selector/quick-pick-recent) (define-key ff/map "s" 'selector/quick-move-in-buffer) (define-key ff/map "S" 'selector/search-sentence) @@ -2367,6 +2455,7 @@ proposes to visit them." (lambda () (interactive) (bookmark-set) (bookmark-save))) +(define-key ff/map "f" 'ff/move-region-to-fridge) (define-key ff/map [(control f)] 'ff/flyspell-mode) (define-key ff/map [?\C-0] 'ff/delete-annoying-windows)