;; Contact <francois@fleuret.org> 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
;; Xft.antialias: true
;; Xft.rgba: rgb
-;; (set-default-font "Inconsolata 15")
+(set-frame-font "Inconsolata 15")
;; (package-initialize)
-(set-default-font "Bitstream vera sans mono-12")
+;;(set-face-attribute 'default nil :height 130)
+
+;;(set-default-font "Inconsolata 13")
+;; (set-default-font "Bitstream vera sans mono 12")
;; (set-default-font "Liberation Mono-13")
;; (set-default-font "DejaVu sans mono 15")
;; (set-default-font "Droid sans mono 13")
;; 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
;; use colorization for all modes
(global-font-lock-mode t)
+;; (load "auctex")
+
(setq font-lock-maximum-decoration 3
;;'((latex-mode . 2) (t . 2))
)
(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)))
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
epa-file-cache-passphrase-for-symmetric-encryption t
;; And I like ascii files
epa-armor t
+ ;; This goes with in your ~/.gnupg/gpg-agent.conf:
+ ;; allow-emacs-pinentry
+ ;; allow-loopback-pinentry
+ epa-pinentry-mode 'loopback
;; tramp-default-method "ssh"
tramp-default-method "scp"
;; 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
;; What modes for what file extentions
(add-to-list 'auto-mode-alist '("\\.h\\'" . c++-mode))
-(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
+;;(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
(require 'org-table)
;; (add-hook 'lua-mode-hook 'flyspell-prog-mode)
(add-hook 'log-edit-mode-hook 'flyspell-mode)
+;; (add-hook 'markdown-mode-hook 'flyspell-mode)
+;; (add-hook 'markdown-mode-hook 'auto-fill-mode)
+
;; I am a power-user
(put 'narrow-to-region 'disabled nil)
(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")
;; (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)
(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")
(define-key global-map [(control c) (control q)] 'ff/delete-trailing-whitespaces-and-indent)
+(define-key global-map [(control x) (control o)] 'other-window)
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Playing sounds
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun ff/alsa-sound (file)
"Plays a sound with ALSA."
(interactive)
- (process-kill-without-query (start-process-shell-command "aplay"
+ (process-query-on-exit-flag (start-process-shell-command "aplay"
nil
"aplay" "-q" file)))
;; then uncommenting would be very counter-intuitive).
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defun ff/comment-and-go-down (arg)
- "Comments and goes down ARG lines."
- (interactive "p")
- (condition-case nil
- (comment-region (point-at-bol) (point-at-eol)) (error nil))
- (next-line 1)
- (if (> arg 1) (ff/comment-and-go-down (1- arg))))
+;; (defun ff/comment-and-go-down (arg)
+;; "Comments and goes down ARG lines."
+;; (interactive "p")
+;; (condition-case nil
+;; (comment-region (point-at-bol) (point-at-eol)) (error nil))
+;; (next-line 1)
+;; (if (> arg 1) (ff/comment-and-go-down (1- arg))))
+;;
+;; (defun ff/uncomment-and-go-up (arg)
+;; "Uncomments and goes up ARG lines."
+;; (interactive "p")
+;; (condition-case nil
+;; (uncomment-region (point-at-bol) (point-at-eol)) (error nil))
+;; (next-line -1)
+;; (if (> arg 1) (ff/uncomment-and-go-up (1- arg))))
+;;
+;; (define-key global-map [(shift down)] 'ff/comment-and-go-down)
+;; (define-key global-map [(shift up)] 'ff/uncomment-and-go-up)
-(defun ff/uncomment-and-go-up (arg)
- "Uncomments and goes up ARG lines."
- (interactive "p")
- (condition-case nil
- (uncomment-region (point-at-bol) (point-at-eol)) (error nil))
- (next-line -1)
- (if (> arg 1) (ff/uncomment-and-go-up (1- arg))))
+(define-key global-map [(shift down)] 'comment-line)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun ff/show-compilation-buffer-split-window ()
+ "Split the window vertically and show the compilation buffer in the newly created right one"
+ (interactive)
-(define-key global-map [(shift down)] 'ff/comment-and-go-down)
-(define-key global-map [(shift up)] 'ff/uncomment-and-go-up)
+ (let ((b (get-buffer "*compilation*")))
+ (if b (display-buffer b)
+ (error "Cannot find a compilation buffer"))
+ )
+)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Counting various entities in text
;; Dealing with the laptop battery
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defcustom ff/battery-dirs '("/sys/class/power_supply/BAT0"
- "/sys/class/power_supply/BAT1")
+(defcustom ff/battery-dirs '("/sys/class/power_supply/BAT0")
"*Where to gather the battery information")
(defcustom ff/temperature-files '("/sys/class/thermal/thermal_zone0/temp"
- "/sys/class/thermal/thermal_zone1/temp")
+ "/sys/class/thermal/thermal_zone1/temp"
+ "/sys/class/thermal/thermal_zone2/temp"
+ "/sys/class/thermal/thermal_zone3/temp"
+ "/sys/class/thermal/thermal_zone4/temp"
+ "/sys/class/thermal/thermal_zone5/temp")
"*Where to gather the thermal information")
(defun ff/file-first-line (file)
)
)
- ;; (`unknown "✱")
- (`unknown "F")
+ (`unknown (propertize "☼" 'face 'ff/battery-info-face))
+ ;; (`unknown "☼")
+ ;; (`unknown "F")
(_ "?"))
(error nil))
)
(defun ff/system-info () (interactive)
- (let ((buf (get-buffer-create "*system info*"))
- (map (make-sparse-keymap)))
-
- (define-key map "q" 'kill-this-buffer)
- (display-buffer buf)
- (set-buffer buf)
- (setq show-trailing-whitespace nil)
- (erase-buffer)
-
- (let ((highlight nil))
-
- (mapc (lambda (x)
- (insert
- (if (setq highlight (not highlight))
- (propertize
- (with-temp-buffer (apply 'call-process x)
- (buffer-string))
- 'face '(:background "#d0d0ff"))
- (with-temp-buffer (apply 'call-process x)
- (buffer-string))
- ))
- )
+ (let* ((buf (get-buffer-create "*system info*"))
+ (win (get-buffer-window buf))
+ (map (make-sparse-keymap)))
+
+ (if win
+ (progn
+ (delete-window win)
+ (kill-buffer buf))
+
+ (define-key map "q" 'kill-this-buffer)
+ (display-buffer buf)
+ (set-buffer buf)
+ (setq show-trailing-whitespace nil)
+ (erase-buffer)
+
+ (let ((highlight nil))
+
+ (mapc (lambda (x)
+ (insert
+ (if (setq highlight (not highlight))
+ (propertize
+ (with-temp-buffer (apply 'call-process x)
+ (buffer-string))
+ 'face '(:background "#d0d0ff"))
+ (with-temp-buffer (apply 'call-process x)
+ (buffer-string))
+ ))
+ )
- '(
- ("hostname" nil t nil "-f")
- ("acpi" nil t)
- ("df" nil t nil "-h")
- ;; ("mount" nil t)
- ("ifconfig" nil t)
- ("ssh-add" nil t nil "-l")
- )))
+ '(
+ ("hostname" nil t nil "-f")
+ ("acpi" nil t)
+ ("df" nil t nil "-h")
+ ;; ("mount" nil t)
+ ("ifconfig" nil t)
+ ("ssh-add" nil t nil "-l")
+ )))
- (goto-char (point-min))
- (while (re-search-forward "^$" nil t) (backward-delete-char 1))
+ (goto-char (point-min))
+ (while (re-search-forward "^$" nil t) (backward-delete-char 1))
- (fit-window-to-buffer (get-buffer-window buf))
- (use-local-map map)
- (set-buffer-modified-p nil)
- ))
+ (fit-window-to-buffer (get-buffer-window buf))
+ (use-local-map map)
+ (set-buffer-modified-p nil)
+ )
+ )
+ )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Display time
,@(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)))
" "
)
;; Show the time, mail and stuff
-(display-time)
+;; (display-time)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Moving through buffers
(term-set-escape-char ?\C-x)
;; I like the shell buffer and windows to be deleted when the
- ;; shell process terminates. It's a bit of a mess to acheive this.
+ ;; shell process terminates. It's a bit of a mess to achieve this.
(let ((process (get-buffer-process (current-buffer))))
- (process-kill-without-query process)
+ (process-query-on-exit-flag process)
(set-process-sentinel process
;; 'ff/kill-associated-buffer-and-delete-windows
'ff/kill-associated-buffer
(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
(ff/goto-function-definition t)))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; The big stuff (bbdb, mailcrypt, etc.)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Failsafe version if we can't load bbdb
-(defun ff/explicit-name (email) email)
+;; (setq python-indent-offset 4)
-(load "vc-git")
+;; (define-key python-mode-map [(shift right)] 'python-indent-shift-right)
+;; (define-key python-mode-map [(shift left)] 'python-indent-shift-left)
+;; (define-key python-mode-map [(shift right)] 'indent-rigidly-right-to-tab-stop)
+;; (define-key python-mode-map [(shift left)] 'indent-rigidly-left-to-tab-stop)
-(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.
-
-If no bbdb record is found, the name is propertized with the face
-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)))
-
- (concat
+(load "vc-git")
- (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.")
- )))
- )
+(defun ff/git-pull-push (universal) (interactive "P")
+ (message "black *.py ...")
+ (shell-command "black *.py" nil)
+ (when universal (shell-command "git commit -a -m \"Update.\"" nil))
+ (message "git pull / push ...")
+ (shell-command "git pull && git push" nil)
+ ;;(async-shell-command "git remote get-url origin && git pull && git push" nil)
+ (message "All good captain")
+ )
- (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
- )))
+(defun ff/git-pull () (interactive)
+ (message "git pull ...")
+ (shell-command "git pull" nil)
+ )
- )
+(define-key global-map [(control x) (v) (p)] 'ff/git-pull-push)
+(define-key global-map [(control x) (v) (P)] 'ff/git-pull)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; An encrypted file to put secure stuff (passwords, ...)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(when (ff/load-or-alert "mailcrypt")
- (mc-setversion "gpg")
- ;; Keep the passphrase for 10min
- (setq mc-passwd-timeout 600
- ff/secure-note-file "~/private/secure-notes.gpg")
- )
+(setq ff/secure-note-file "~/private/secure-notes.gpg")
+
+;; (when (ff/load-or-alert "mailcrypt")
+ ;; (mc-setversion "gpg")
+ ;; ;; Keep the passphrase for 10min
+ ;; (setq mc-passwd-timeout 600
+ ;; ff/secure-note-file "~/private/secure-notes.gpg")
+ ;; )
(defface ff/secure-date
'((t (:background "white" :weight bold)))
'(("fig" . "xfig")
("jpg" . "gimp" )
("png" . "gimp") ("pgm" . "gimp") ("ppm" . "gimp")
- ("jpg" . "xv"))
+ ("svg" . "inkscape"))
universal)
(if (not (and (buffer-file-name) (string-match "\\(.*\\)\.tex$"
(append '("xdvi-for-latex" nil "xdvi")
ff/xdvi-for-latex-options
(list dvi-name))))
- (process-kill-without-query xdvi-process))))
+ (process-query-on-exit-flag xdvi-process))))
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; 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)
-(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))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Tex mode
+
+;; (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.
(load "tex-mode")
(defun tex-font-lock-suscript (pos) ())
+;; Automagically add the frame numbers in comments in a beamer file
+
+(defun ff/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
;; (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
(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
(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[round]{natbib}
+\\usepackage{tikz}
+\\usetikzlibrary{arrows,arrows.meta,calc}
+\\usetikzlibrary{patterns,backgrounds}
+\\usetikzlibrary{positioning,fit}
+\\usetikzlibrary{shapes.geometric,shapes.multipart}
+\\usetikzlibrary{patterns.meta,decorations.pathreplacing,calligraphy}
+\\usetikzlibrary{tikzmark}
+\\usetikzlibrary{decorations.pathmorphing}
\\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}
(goto-char (point-max))
(insert "
+\\bibliographystyle{abbrvnat}
+
+\\bibliography{dlc}
+
+\\checknbdrafts
+
\\end{document}
"))
(latex-mode))
require 'torch'
require 'nn'
-require 'nnx'
-require 'optim'
require 'image'
-require 'pl'
-require 'paths'
-require 'ffmpeg'
+require 'optim'
")
(lua-mode)
)
+(defun ff/start-python ()
+ "Adds all the stuff to start a new python file"
+ (interactive)
+ (goto-char (point-min))
+ (insert "#!/usr/bin/env python
+
+import math
+
+import torch, torchvision
+
+from torch import nn
+from torch.nn import functional as F
+
+")
+ (python-mode)
+ )
+
(defun ff/start-html ()
"Adds all that stuff to start a new HTML file."
(interactive "P")
(let ((line (if arg "cerr" "cout")))
(goto-char (point-at-bol))
- ;; Regexp syntax sucks moose balls, honnest. To match '[', just
- ;; put it as the first char in the [...] ... This leads to some
- ;; obvious things like the following
+ ;; To match '[', put it as the first char in the [...]
(while (re-search-forward "\\([][a-zA-Z0-9_.:\(\)]+\\)" (point-at-eol) t)
(setq line
(concat line " << \" "
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defun ff/start-slide ()
- (interactive)
- (insert "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+(defun ff/start-slide (universal)
+ (interactive "P")
-\\begin{frame}{")
+ (if universal
+ (progn
+ (insert "\\end{frame}
- (save-excursion (insert "}{}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\begin{frame}[fragile]{")
+ (save-excursion (insert "}{}
+
+"))
+ )
+
+ (insert "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\begin{frame}[fragile]{")
+
+ (save-excursion (insert "}{}
\\end{frame}
"))
+ )
)
(add-hook
(ff/start-lua)
)
+ (when (string-match "\\.py$" filename)
+ (python-mode)
+ (ff/start-python)
+ )
+
(when (string-match "\\.html$" filename)
(html-mode)
(ff/start-html)
(setq compilation-read-command t
compile-command "make -j -k"
- compile-history '("make clean" "make DEBUG=yes -j -k" "make -j -k")
+ ;; compile-history '("make clean" "make DEBUG=yes -j -k" "make -j -k")
)
(defun ff/universal-compile (universal) (interactive "P")
(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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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)
;; buffer, and to edit the .fig or bitmap image used to generate the
;; .eps at point
-(define-key global-map [f4] 'ff/run-viewer)
+(defun ff/speech-whisper () (interactive)
+ (shell-command
+ (concat "speech-whisper.sh " (if current-input-method "fr" "en"))
+ (current-buffer)
+ )
+)
+
+(define-key global-map [f4] 'ff/speech-whisper)
;; Closes the current \begin{}
only one in the frame. If the buffer has to be kept, go to the
next one. With universal argument, kill all killable buffers."
(interactive "P")
- (if universal
- (let ((nb-killed 0))
- (mapc (lambda (x)
- (unless (string-match ff/kill-this-buffer-and-delete-window-exceptions
- (buffer-name x))
- (kill-buffer x)
- (setq nb-killed (1+ nb-killed))
- ))
- (buffer-list))
- (message "Killed %d buffer%s" nb-killed (if (> nb-killed 1) "s" "")))
- (if (string-match ff/kill-this-buffer-and-delete-window-exceptions (buffer-name))
- (ff/next-buffer)
- (kill-this-buffer)))
- (unless (one-window-p t) (delete-window))
+ (unless (minibuffer-window-active-p (selected-window))
+ (if universal
+ (let ((nb-killed 0))
+ (mapc (lambda (x)
+ (unless (string-match ff/kill-this-buffer-and-delete-window-exceptions
+ (buffer-name x))
+ (kill-buffer x)
+ (setq nb-killed (1+ nb-killed))
+ ))
+ (buffer-list))
+ (message "Killed %d buffer%s" nb-killed (if (> nb-killed 1) "s" "")))
+ (if (string-match ff/kill-this-buffer-and-delete-window-exceptions (buffer-name))
+ (ff/next-buffer)
+ (let ((kill-buffer-query-functions nil))
+ (kill-this-buffer))
+ ))
+ (unless (one-window-p t) (delete-window))
+ )
)
(define-key global-map [(control backspace)] 'ff/kill-this-buffer-and-delete-window)
'(
ff/file-not-remote-but-symlink
"enotes$" "secure-notes$" "media-playlists$"
- "bbdb$"
+ ;; "bbdb$"
"svn-commit.tmp$" ".git/COMMIT_EDITMSG$"
"\.bbl$" "\.aux$" "\.toc$"
))
(define-key global-map [(meta \\)] 'media)
- (setq media/expert t
+ (setq media/mplayer/executable "mpv"
+ media/expert t
media/add-current-song-to-interrupted-when-killing t
media/duration-to-history 30
media/history-size 1000
;; The fridge!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defun ff/move-region-to-fridge () (interactive)
+(defun ff/move-region-to-fridge (&optional universal) (interactive "P")
"Cut the current region, paste it in a file called ./fridge
with a time tag, and save this file"
(unless (use-region-p) (error "No region selected"))
(let ((bn (file-name-nondirectory (buffer-file-name))))
- (kill-region (region-beginning) (region-end))
+ (if universal
+ (copy-region-as-kill (region-beginning) (region-end))
+ (kill-region (region-beginning) (region-end))
+ )
(with-current-buffer (find-file-noselect "fridge")
(goto-char (point-max))
(insert "\n")
(setq ff/map (make-sparse-keymap))
(define-key global-map [(control \`)] ff/map)
+;; (defun ff/start-stop-macro-recording () (interactive)
+ ;; (if (or defining-kbd-macro executing-kbd-macro)
+ ;; (kmacro-end-macro)
+ ;; (kmacro-start-macro))
+ ;; )
+
+;; (define-key global-map [(shift return)] 'ff/start-stop-macro-recording)
+
(unless window-system
;; (define-key global-map [(control @)] ff/map)
(define-key global-map [(meta O) \`] ff/map)
(error "No file attached to this buffer")))
(defun ff/insert-date (&optional universal) (interactive "P")
- ;; (insert (format-time-string "\n * %Y %b %d %H:%M:%S\n\n" (current-time)))
- ;; (insert (format-time-string "%Y %b %d %H:%M:%S" (current-time)))
- ;; (insert (format-time-string "%d.%m.%y" (current-time)))
- (if universal
- (insert (format-time-string "%d.%m.%Y %H:%M:%S" (current-time)))
- (insert (format-time-string "%d.%m.%Y" (current-time))))
+ (insert (format-time-string "\n * %H:%M:%S %A %B %d, %Y\n\n" (current-time)))
+ ;; ;; (insert (format-time-string "%Y %b %d %H:%M:%S" (current-time)))
+ ;; ;; (insert (format-time-string "%d.%m.%y" (current-time)))
+ ;; (if universal
+ ;; (insert (format-time-string "%d.%m.%Y %H:%M:%S" (current-time)))
+ ;; (insert (format-time-string "%d.%m.%Y" (current-time))))
)
-(define-key ff/map [(control g)] 'ff/git-status)
-(define-key ff/map [(control w)] 'server-edit)
+(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)
(define-key ff/map "d" 'ff/insert-date)
(define-key ff/map [(control a)] 'auto-fill-mode)
(define-key ff/map [(control i)] 'ff/system-info)
(define-key ff/map "w" 'ff/word-occurences)
-(define-key ff/map [(control c)] 'calendar)
+;; (define-key ff/map [(control c)] 'calendar)
+(define-key ff/map [(control c)] 'ff/show-compilation-buffer-split-window)
;; (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 "c" 'ff/count-char)
(define-key ff/map [(control p)] 'ff/print-to-file)
(define-key ff/map "P" 'ff/print-to-printer)
-(define-key ff/map [(control b)] 'bbdb)
+;; (define-key ff/map [(control b)] 'bbdb)
(define-key ff/map "m" 'ff/selector-mail-from-bbdb)
(define-key ff/map [(control m)] 'woman)
(define-key ff/map "b" 'bookmark-jump)
(define-key ff/map [(control =)] 'calc)
+(define-key ff/map "=" 'ff/number-beamer-frames)
(define-key ff/map [(control shift b)]
(lambda () (interactive)
(bookmark-set)
;; 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
-(when (ff/load-or-alert "enotes" t)
- (setq enotes/file "~/private/enotes"
- enotes/show-help nil
- enotes/full-display nil
- enotes/default-time-fields "9:30")
-
- (enotes/init)
- ;; (add-hook 'enotes/alarm-hook
- ;; (lambda () (ff/play-sound-async "~/local/sounds/three_notes2.wav")))
+;; ** ;; (when (ff/load-or-alert "enotes" t)
+;; ** ;; (setq enotes/file "~/private/enotes"
+;; ** ;; enotes/show-help nil
+;; ** ;; enotes/full-display nil
+;; ** ;; enotes/default-time-fields "9:30")
+;; ** ;;
+;; ** ;; (enotes/init)
+;; ** ;; )
+
+(when (ff/load-or-alert "goto-last-change.el")
+ (define-key global-map [(control -)] 'goto-last-change)
)
-;; (when (ff/load-or-alert "goto-last-change.el")
-;; (define-key global-map [(control x) (control a)] 'goto-last-change))
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; My private stuff (email adresses, mail filters, etc.)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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
+
+;; (add-hook 'server-switch-hook 'ff/raise-frame-and-give-focus)
-;; Raises the window when the server is invoked
+(defun ff/black-current-file () (interactive)
+ (save-buffer)
+ (shell-command (concat "black " (buffer-file-name)))
+ (revert-buffer nil t)
+)
-(add-hook 'server-switch-hook 'ff/raise-frame-and-give-focus)
+(define-key ff/map [(control b)] 'ff/black-current-file)