X-Git-Url: https://fleuret.org/cgi-bin/gitweb/gitweb.cgi?p=elisp.git;a=blobdiff_plain;f=emacs.el;h=5d30a6e40930bb702d8c9f3a73d2831bbe16bb14;hp=e9c9969d750214ca79e862b6e98ec40c0e029a6f;hb=HEAD;hpb=44ee31af3c67a477c92d749c462e5ebb92d8397f diff --git a/emacs.el b/emacs.el index e9c9969..96874b0 100644 --- a/emacs.el +++ b/emacs.el @@ -18,6 +18,11 @@ ;; Contact for comments & bug reports ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; (defadvice display-warning (before ff/blah (type message &optional level buffer-name) activate) + ;; (message "--- BLAH %s ---" message) + ;; (backtrace) +;; ) + ;; It's better to set the preferences in the .Xresources so that the ;; window is not first displayed with the wrong options @@ -31,7 +36,7 @@ ;; Xft.antialias: true ;; Xft.rgba: rgb -(set-default-font "Inconsolata 14") +;;(set-frame-font "Inconsolata 14") ;; (package-initialize) @@ -58,8 +63,8 @@ ;; Where I keep my own scripts -(add-to-list 'load-path "~/sources/gpl/elisp") -(add-to-list 'load-path "~/sources/elisp") +(add-to-list 'load-path "~/src/gpl/elisp") +(add-to-list 'load-path "~/src/elisp") (add-to-list 'load-path "~/local/elisp") ;; No, I do not like menus @@ -88,6 +93,8 @@ ;; use colorization for all modes (global-font-lock-mode t) +;; (load "auctex") + (setq font-lock-maximum-decoration 3 ;;'((latex-mode . 2) (t . 2)) ) @@ -123,11 +130,16 @@ uses `load-path' to find it." (ff/compile-when-needed (concat name ".el")) (mapc (lambda (dir) (let* ((src (concat dir "/" name))) + ;; (message "Compiling " scr) ;;*********** (when (file-newer-than-file-p src (concat src "c")) - (if (let ((byte-compile-verbose nil)) - (condition-case nil - (byte-compile-file src) - (error nil))) + (if + ;; (let ((byte-compile-verbose nil)) + ;; (condition-case nil + ;; (byte-compile-file src) + ;; (error nil))) + + (byte-compile-file src) + (message (format "Compiled %s" src )) (message (format "Failed compilation of %s" src)))))) load-path))) @@ -184,7 +196,7 @@ load-warning buffer in case of failure." next-error-highlight t ;; blink the screen instead of beeping - ;; visible-bell t + visible-bell t ;; take the CR when killing a line kill-whole-line t @@ -253,9 +265,11 @@ load-warning buffer in case of failure." ;; vertically, even when the said window is very wide split-height-threshold 0 split-width-threshold nil - ) +(custom-set-variables + '(query-replace-from-to-separator nil)) + ;; The backups (setq @@ -441,7 +455,7 @@ load-warning buffer in case of failure." (sh-heredoc :foreground "black" :background "#fff0f0") (sh-heredoc-face :foreground "black" :background "#fff0f0") (header-line :background "gray65") - (highlight :background "turquoise") + (highlight :background "white") (message-cited-text-face :foreground "firebrick") (isearch :background "yellow" :foreground "black") (isearch-lazy-highlight-face' :background "yellow3" :foreground "black") @@ -461,7 +475,7 @@ load-warning buffer in case of failure." ;; (fringe :background "black" :foreground "gray90") (fringe :background "gray80") (ff/date-info-face :foreground "white") - (ff/battery-info-face :foreground "black") + (ff/battery-info-face :foreground "blue") (ff/battery-info-alarm-face :foreground "red") ;; (ff/mail-alarm-face :foreground "white" :background "red2") ;; (alarm-vc-face :foreground "black" :background "yellow" :weight 'normal) @@ -500,7 +514,7 @@ load-warning buffer in case of failure." (sh-heredoc :foreground "black" :background "#fff0f0") (sh-heredoc-face :foreground "black" :background "#fff0f0") (font-lock-keyword-face :foreground "blue") - (highlight :background "darkseagreen3") + (highlight :background "white") (isearch :background "orange" :foreground "black") (isearch-lazy-highlight-face' :background "yellow" :foreground "black") ;; (display-time-mail-face :background "white") @@ -653,7 +667,11 @@ load-warning buffer in case of failure." (defun ff/show-compilation-buffer-split-window () "Split the window vertically and show the compilation buffer in the newly created right one" (interactive) - (show-buffer (split-window-right) "*compilation*") + + (let ((b (get-buffer "*compilation*"))) + (if b (show-buffer (split-window-right) b) + (error "Cannot find a compilation buffer")) + ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -920,8 +938,9 @@ printer." ) ) - ;; (`unknown "✱") - (`unknown "F") + (`unknown (propertize "☼" 'face 'ff/battery-info-face)) + ;; (`unknown "☼") + ;; (`unknown "F") (_ "?")) (error nil)) ) @@ -1154,9 +1173,9 @@ of commands in `ff/default-bash-commands' is used for auto-completion" (when (ff/load-or-alert "alarm-vc" t) (setq alarm-vc-mode-exceptions "^VM")) -(when (ff/load-or-alert "git") - (setq git-show-unknown nil) - ) +;; (when (ff/load-or-alert "git") + ;; (setq git-show-unknown nil) + ;; ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Makes .sh and others files executable automagically @@ -1223,9 +1242,9 @@ goback argument, go back where we were." (load "vc-git") (defun ff/git-pull-push (universal) (interactive "P") - (when universal (shell-command "git commit -a -m \"Update\"" nil)) + (when universal (shell-command "git commit -a -m \"Update.\"" nil)) (message "git pull / push ...") - (async-shell-command "git pull && git push" nil) + (async-shell-command "git remote get-url origin && git pull && git push" nil) ) (defun ff/git-pull () (interactive) @@ -1247,7 +1266,7 @@ goback argument, go back where we were." ;; Failsafe version if we can't load bbdb (defun ff/explicit-name (email) email) - (when (ff/load-or-alert "bbdb") + (when (with-no-warnings (ff/load-or-alert "bbdb")) (setq ;; Stop asking (if not t or nil, will not ask) @@ -1430,7 +1449,7 @@ universal argument starts xfig even if the .fig does not exist" '(("fig" . "xfig") ("jpg" . "gimp" ) ("png" . "gimp") ("pgm" . "gimp") ("ppm" . "gimp") - ("jpg" . "xv")) + ("svg" . "inkscape")) universal) (if (not (and (buffer-file-name) (string-match "\\(.*\\)\.tex$" @@ -1448,18 +1467,27 @@ universal argument starts xfig even if the .fig does not exist" )) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;; Tex mode -;; When working on a tex file with other people, I can just change -;; ff/tex-command in the -*- part of the file so that I don't mess up -;; other's people configuration. +(defun ff/save-window-configuration (universal) (interactive "P") + (if universal + (progn + (setq ff/window-configuration (current-window-configuration)) + (message "Window configuration stored") + ) + (set-window-configuration ff/window-configuration)) + ) + +(define-key global-map [(control =)] 'ff/save-window-configuration) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Tex mode -(defadvice tex-file (around ff/set-my-own-tex-command () activate) - (let ((tex-command - (or (and (boundp 'ff/tex-command) - ff/tex-command) - tex-command))) - ad-do-it)) +;; (defadvice tex-file (around ff/set-my-own-tex-command () activate) + ;; (let ((ff/window-configuration-before-compilation (current-window-configuration))) + ;; ad-do-it + ;; (set-window-configuration ff/window-configuration-before-compilation) + ;; ) + ;; ) ;; This is a bit hardcore, but really I can't bear the superscripts in ;; my emacs window and could not find another way to deactivate them. @@ -1527,7 +1555,7 @@ universal argument starts xfig even if the .fig does not exist" ;; (ff/play-sound-async "~/local/sounds/short_la.wav") )) -(setq ring-bell-function 'ff/ring-bell) +;; (setq ring-bell-function 'ff/ring-bell) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Past the content of the url currently in the kill-ring with @@ -1544,8 +1572,15 @@ universal argument starts xfig even if the .fig does not exist" (call-process "w3m" nil t nil "-dump" url)) ) -(define-key global-map [(shift mouse-2)] - (lambda () (interactive) (ff/insert-url (current-kill 0)))) +;; (define-key global-map [(shift mouse-2)] + ;; (lambda () (interactive) (ff/insert-url (current-kill 0)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Trying to deal with cut-paste + +(setq x-select-enable-clipboard t) +(setq interprogram-paste-function 'x-cut-buffer-or-selection-value) +(define-key global-map [(shift mouse-2)] 'clipboard-yank) ;; lookup-dict is one of my own scripts, check my web page @@ -1575,31 +1610,27 @@ universal argument starts xfig even if the .fig does not exist" (goto-char (point-min)) (insert "%% -*- mode: latex; mode: reftex; mode: flyspell; coding: utf-8; tex-command: \"pdflatex.sh\" -*- -\\documentclass[12pt,a4paper,twoside]{article} +\\documentclass[11pt,a4paper,twoside]{article} \\usepackage[a4paper,top=2.5cm,bottom=2cm,left=2.5cm,right=2.5cm]{geometry} \\usepackage[utf8]{inputenc} -\\usepackage{amsmath} -\\usepackage{amssymb} +\\usepackage{amsmath,amssymb,dsfont} \\usepackage[pdftex]{graphicx} -\\usepackage{microtype} \\usepackage[colorlinks=true,linkcolor=blue,urlcolor=blue,citecolor=blue]{hyperref} +\\usepackage{tikz} +\\usepackage[round]{natbib} +\\usepackage{cmbright} +%\\usepackage{showframe} \\setlength{\\parindent}{0cm} \\setlength{\\parskip}{12pt} -\\renewcommand{\\baselinestretch}{1.3} +%\\renewcommand{\\baselinestretch}{1.3} %\\setlength{\\tabcolsep}{0pt} %\\renewcommand{\\arraystretch}{1.0} \\def\\argmax{\\operatornamewithlimits{argmax}} \\def\\argmin{\\operatornamewithlimits{argmin}} +\\def\\expect{\\mathds{E}} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Open sans font -%%\\usepackage[default]{opensans} -%%\\usepackage{cmbright} -%%\\renewcommand{\\familydefault}{fos} -%%\\renewcommand{\\seriesdefault}{l} -%%\\renewcommand{\\bfdefault}{sb} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% The \\todo command \\newcounter{nbdrafts} @@ -1620,6 +1651,12 @@ universal argument starts xfig even if the .fig does not exist" (goto-char (point-max)) (insert " +\\bibliographystyle{abbrvnat} + +\\bibliography{dlc} + +\\checknbdrafts + \\end{document} ")) (latex-mode)) @@ -1895,7 +1932,7 @@ and refilling all the paragraphs." %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\\begin{frame}{") +\\begin{frame}[fragile]{") (save-excursion (insert "}{} ")) @@ -1903,7 +1940,7 @@ and refilling all the paragraphs." (insert "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\\begin{frame}{") +\\begin{frame}[fragile]{") (save-excursion (insert "}{} @@ -2162,6 +2199,17 @@ a file in /tmp" (define-key global-map [(shift f1)] 'compile) (define-key global-map [f2] 'next-error) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Horrible hack +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun dont-delay-compile-warnings (fun type &rest args) + (if (eq type 'bytecomp) + (let ((after-init-time t)) + (apply fun type args)) + (apply fun type args))) +(advice-add 'display-warning :around #'dont-delay-compile-warnings) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Related to mail ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -2296,6 +2344,8 @@ This may be a useful alternative binding for \\[delete-other-windows] ;; Compiles the latex file in the current buffer + + (setq tex-start-commands "\\input") (define-key global-map [f3] 'tex-file) (define-key global-map [(shift f3)] 'tex-bibtex-file) @@ -2697,7 +2747,8 @@ with a time tag, and save this file" ;; (insert (format-time-string "%d.%m.%Y" (current-time)))) ) -(define-key ff/map [(control g)] 'ff/git-status) +(define-key ff/map [(control g)] 'magit) +;;(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) @@ -2942,15 +2993,15 @@ With argument ARG, do this that many times." ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Runs in server mode, so that emacsclient works -(server-start) +;; ;;(server-start) -(defun ff/raise-frame-and-give-focus () - (when window-system - (raise-frame) - (x-focus-frame (selected-frame)) - (set-mouse-pixel-position (selected-frame) 4 4) - )) +;; (defun ff/raise-frame-and-give-focus () + ;; (when window-system + ;; (raise-frame) + ;; (x-focus-frame (selected-frame)) + ;; (set-mouse-pixel-position (selected-frame) 4 4) + ;; )) -;; Raises the window when the server is invoked +;; ;; Raises the window when the server is invoked -(add-hook 'server-switch-hook 'ff/raise-frame-and-give-focus) +;; (add-hook 'server-switch-hook 'ff/raise-frame-and-give-focus)