;; 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 "Bitstream vera sans mono-12")
+(set-frame-font "Inconsolata 15")
+
+;; (package-initialize)
+
+;;(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 "Inconsolata 15")
-;;(set-default-font "DejaVu sans mono 11")
-;;(set-default-font "Droid sans mono 13")
-;;(set-default-font "Opensans 10")
+;; (set-default-font "DejaVu sans mono 15")
+;; (set-default-font "Droid sans mono 13")
+;; (set-default-font "Opensans 10")
(when (fboundp 'horizontal-scroll-bar-mode)
(horizontal-scroll-bar-mode -1))
;; 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))
+
(require 'org-table)
(add-to-list 'auto-mode-alist '("\\.txt\\'" . (lambda()
(flyspell-mode))))
(add-hook 'c++-mode-hook 'flyspell-prog-mode)
+;; (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)
;; "tool" bar? Are you kidding?
(when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
-;; ;; If my own letter icon is here, use it and change its color
-;; (when (file-exists-p "~/local/share/emacs/letter.xbm")
-;; (setq-default display-time-mail-icon
-;; (find-image
-;; '((:type xbm
-;; :file "~/local/share/emacs/letter.xbm"
-;; :ascent center)))))
-
;; My funky setting of face colors. Basically, we switch to a sober
;; look and darken a bit the colors which need to (because of the
;; darker background)
;; Not the same in xterm (which is gray in my case) and in
;; X-window
-(unless window-system
- ;; (xterm-mouse-mode 1)
- (ff/configure-faces
- '((italic :underline nil)
- (info-title-2 :foreground "green")
- (font-lock-comment-delimiter-face :foreground "green")
- (font-lock-comment-face :foreground "green")
- (cperl-array-face :background "gray90" :foreground "blue" :weight 'bold)
- (cperl-hash-face :background "gray90" :foreground "purple" :weight 'bold)
- (diff-added :background "gray90" :foreground "green4" :weight 'bold)
- (diff-removed :background "gray90" :foreground "red2" :weight 'bold)
- (diff-changed :background "gray90" :foreground "blue" :weight 'bold)
- (diff-file-header-face :background "white" :foreground "black"
- :weight 'bold)
- (diff-header-face :background "white" :foreground "black")
- (diff-hunk-header-face :background "white" :foreground "black")
- (diff-indicator-removed :foreground "red" :weight 'bold)
- (diff-removed :foreground "red" :weight 'bold)
- (diff-indicator-added :foreground "blue" :weight 'bold)
- (diff-added :foreground "blue" :weight 'bold)
- (font-lock-string-face :foreground "green")
- (font-lock-variable-name-face :foreground "blue")
- (font-lock-constant-face :foreground "blue")
- (font-lock-preprocessor-face :foreground "green")
- (font-lock-function-name-face :foreground "cyan")
- (flyspell-incorrect :foreground "red2")
- (flyspell-duplicate :foreground "OrangeRed2")
- (hl-line :background "white")
- (sh-heredoc :foreground "black" :background "#fff0f0")
- (sh-heredoc-face :foreground "black" :background "#fff0f0")
- (font-lock-keyword-face :foreground "blue")
- (highlight :background "darkseagreen3")
- (isearch :background "orange" :foreground "black")
- (isearch-lazy-highlight-face' :background "yellow" :foreground "black")
- ;; (display-time-mail-face :background "white")
- (show-paren-match-face :background "gold" :foreground "black")
- (show-paren-mismatch-face :background "red" :foreground "black")
- (trailing-whitespace :background "white")
- (mode-line :background "cornflowerblue" :foreground "black" :box nil
- :inverse-video nil)
- (header-line :background "cornflowerblue" :foreground "black" :box nil
- :inverse-video nil)
- (mode-line-inactive :background "gray60" :foreground "black" :box nil
- :inverse-video nil)
- (region :background "white" :foreground "black")
- (ff/date-info-face :foreground "white" :weight 'bold)
- (ff/mail-alarm-face :foreground "red" :weight 'bold)
- (selector/selection :background "yellow")
- (gui-button-face :background "green" :foreground "white")
- (enotes/information-face :foreground "cyan")
-
- (file-name-shadow :foreground "black")
- (shadow :foreground "black")
- (warning :foreground "black" :background "red")
- ))
- )
-
-;; (list-colors-display (mapcar 'car color-name-rgb-alist))
-
-;; (ff/configure-faces '((default :background "black" :foreground "gray80")))
-;; (ff/configure-faces '((default :background "gray80" :foreground "black")))
-
(when window-system
- ;; (setq
- ;; display-time-use-mail-icon t)
(ff/configure-faces
'(
;; (escape-glyph :foreground "#c0c0c0" :weight 'bold)
-
(escape-glyph :foreground "green3" :weight 'bold)
(default :background "gray90" :foreground "black")
(cperl-array-face :background "gray90" :foreground "blue" :weight 'bold)
(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")
:inverse-video nil)
;; (fringe :background "black" :foreground "gray90")
(fringe :background "gray80")
- (ff/date-info-face :foreground "white" :weight 'bold)
- (ff/mail-alarm-face :foreground "white" :background "red2")
+ (ff/date-info-face :foreground "white")
+ (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)
(gui-button-face :background "green" :foreground "black")
))
)
+(unless window-system
+ ;; (xterm-mouse-mode 1)
+ (ff/configure-faces
+ '((italic :underline nil)
+ (info-title-2 :foreground "green")
+ (font-lock-comment-delimiter-face :foreground "green")
+ (font-lock-comment-face :foreground "green")
+ (cperl-array-face :background "gray90" :foreground "blue" :weight 'bold)
+ (cperl-hash-face :background "gray90" :foreground "purple" :weight 'bold)
+ (diff-added :background "gray90" :foreground "green4" :weight 'bold)
+ (diff-removed :background "gray90" :foreground "red2" :weight 'bold)
+ (diff-changed :background "gray90" :foreground "blue" :weight 'bold)
+ (diff-file-header-face :background "white" :foreground "black"
+ :weight 'bold)
+ (diff-header-face :background "white" :foreground "black")
+ (diff-hunk-header-face :background "white" :foreground "black")
+ (diff-indicator-removed :foreground "red" :weight 'bold)
+ (diff-removed :foreground "red" :weight 'bold)
+ (diff-indicator-added :foreground "blue" :weight 'bold)
+ (diff-added :foreground "blue" :weight 'bold)
+ (font-lock-string-face :foreground "green")
+ (font-lock-variable-name-face :foreground "blue")
+ (font-lock-constant-face :foreground "blue")
+ (font-lock-preprocessor-face :foreground "green")
+ (font-lock-function-name-face :foreground "cyan")
+ (flyspell-incorrect :foreground "red2")
+ (flyspell-duplicate :foreground "OrangeRed2")
+ (hl-line :background "white")
+ (sh-heredoc :foreground "black" :background "#fff0f0")
+ (sh-heredoc-face :foreground "black" :background "#fff0f0")
+ (font-lock-keyword-face :foreground "blue")
+ (highlight :background "white")
+ (isearch :background "orange" :foreground "black")
+ (isearch-lazy-highlight-face' :background "yellow" :foreground "black")
+ ;; (display-time-mail-face :background "white")
+ (show-paren-match-face :background "gold" :foreground "black")
+ (show-paren-mismatch-face :background "red" :foreground "black")
+ (trailing-whitespace :background "white")
+ (mode-line :background "cornflowerblue" :foreground "black" :box nil
+ :inverse-video nil)
+ (header-line :background "cornflowerblue" :foreground "black" :box nil
+ :inverse-video nil)
+ (mode-line-inactive :background "gray60" :foreground "black" :box nil
+ :inverse-video nil)
+ (region :background "white" :foreground "black")
+ (ff/date-info-face :foreground "white" :weight 'bold)
+ (ff/battery-info-face :foreground "black")
+ (ff/battery-info-alarm-face :foreground "red")
+ ;; (ff/mail-alarm-face :foreground "red" :weight 'bold)
+ (selector/selection :background "yellow")
+ (gui-button-face :background "green" :foreground "white")
+ (enotes/information-face :foreground "cyan")
+
+ (file-name-shadow :foreground "black")
+ (shadow :foreground "black")
+ (warning :foreground "black" :background "red")
+ ))
+ )
+
;; When we are root, put the modeline in red
(when (string= (user-real-login-name) "root")
(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/esd-sound (file)
-;; "Plays a sound with the Enlighted sound daemon."
-;; (interactive)
-;; (process-kill-without-query (start-process-shell-command "esdplay"
-;; nil
-;; "esdplay" file)))
-
(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)
(defun ff/sum-values-from-files (list-files prefix)
(apply '+
(mapcar
- (lambda (f) (string-to-number (ff/file-first-line (format "%s/%s" f prefix))))
+ (lambda (f)
+ (condition-case nil
+ (string-to-number (ff/file-first-line (format "%s/%s" f prefix)))
+ (error 0))
+ )
list-files)))
(defun ff/battery-percent ()
(error -1))
)
-(defun ff/temp-and-battery-info-string () (interactive)
+(defun ff/temp-info-string () (interactive)
(condition-case nil
- (concat
-
- ;; The temperature
-
- (let ((temp (/
- (apply 'max (mapcar
- (lambda (f) (string-to-number (ff/file-first-line f)))
- ff/temperature-files))
- 1000)))
-
- (if (> temp 50)
- (let ((s (format "%dC " temp)))
- (if (> temp 70)
- (propertize s 'face 'font-lock-warning-face)
- s)
- )
- )
- )
+ ;; The temperature
+
+ (let ((temp (/
+ (apply 'max (mapcar
+ (lambda (f) (string-to-number (ff/file-first-line f)))
+ ff/temperature-files))
+ 1000)))
+
+ (if (> temp 50)
+ (let ((s (format "%dC " temp)))
+ (if (> temp 70)
+ (propertize s 'face 'font-lock-warning-face)
+ s)
+ )
+ )
+ )
- ;; The battery
+ (error nil))
+ )
- (pcase (ff/battery-state ff/battery-dirs)
- (`charging (format "c%d%%" (ff/battery-percent)))
- (`discharging (format "d%d%%" (ff/battery-percent)))
- (code "f"))
+(defun ff/battery-info-string () (interactive)
+ (condition-case nil
+ (pcase (ff/battery-state ff/battery-dirs)
+ ;; (`charging (format "c%d%%" (ff/battery-percent)))
+ ;; (`discharging (format "d%d%%" (ff/battery-percent)))
+ ;; (`unknown "f")
+
+ (`charging
+ (let ((p (ff/battery-percent)))
+ (if (> p 10)
+ (propertize (format "↑%d%%" p) 'face 'ff/battery-info-face)
+ (propertize (format "↑%d%%" p) 'face 'ff/battery-info-alarm-face))
+ )
+ )
- )
+ (`discharging
+ (let ((p (ff/battery-percent)))
+ (if (> p 10)
+ (propertize (format "↓%d%%" p) 'face 'ff/battery-info-face)
+ (propertize (format "↓%d%%" p) 'face 'ff/battery-info-alarm-face))
+ )
+ )
+ (`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 "#c0c0ff"))
- (with-temp-buffer (apply 'call-process x)
- (buffer-string))
- ))
- )
-
- '(
- ("hostname" nil t nil "-v")
- ("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))
-
- (fit-window-to-buffer (get-buffer-window buf))
- (use-local-map map)
- (set-buffer-modified-p nil)
- ))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Make a sound when there is new mail
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-;; I do not like sounds anymore
+ (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))
+ ))
+ )
-;; (setq ff/already-boinged-for-mail nil)
+ '(
+ ("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")
+ )))
-;; (defun ff/boing-if-new-mail ()
-;; (if mail (when (not ff/already-boinged-for-mail)
-;; ;; (ff/play-sound-async "~/local/sounds/boing1.wav")
-;; ;; (ff/show-unspooled-mails)
-;; (setq ff/already-boinged-for-mail t))
-;; (setq ff/already-boinged-for-mail nil))
-;; )
+ (goto-char (point-min))
+ (while (re-search-forward "^$" nil t) (backward-delete-char 1))
-;; (add-hook 'display-time-hook 'ff/boing-if-new-mail)
+ (fit-window-to-buffer (get-buffer-window buf))
+ (use-local-map map)
+ (set-buffer-modified-p nil)
+ )
+ )
+ )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Display time
(setq
- display-time-interval 15 ;; Check every 15s
+ display-time-interval 10 ;; Check every 10s
display-time-string-forms `(
- ;; (if mail
- ;; (concat " "
- ;; (propertize " mail "
- ;; 'face 'ff/mail-alarm-face)
- ;; " ")
- ;; )
+ load
- ,(if (ff/temp-and-battery-info-string)
- '(concat (ff/temp-and-battery-info-string) " "))
+ " "
- (propertize (concat 24-hours ":" minutes
- " "
- dayname " "
- monthname " "
- day)
- 'face 'ff/date-info-face)
+ ,@(when (ff/temp-info-string)
+ '((ff/temp-info-string)))
- load
+ ,@(when (ff/battery-info-string)
+ '((ff/battery-info-string)))
+
+ ;; '((propertize
+ ;; (ff/battery-info-string)
+ ;; 'face 'ff/battery-info-face)))
+
+ " "
+
+ (propertize
+ (concat ;;" ˌ"
+ 24-hours ":" minutes
+ " "
+ ;; dayname " "
+ monthname " " day
+ ;;"ˌ"
+ )
+ 'face 'ff/date-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)
-
-(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
-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.
+;; (setq python-indent-offset 4)
-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."
+;; (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)
- (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)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; 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.
(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))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(defun ff/start-lua ()
+ "Adds all the stuff to start a new lua file"
+ (interactive)
+ (goto-char (point-min))
+ (insert "#!/usr/bin/env luajit
+
+require 'torch'
+require 'nn'
+require 'image'
+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)
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<title></title>
-<style>
+<style type=\"text/css\">
p {
color:#009900;
}
(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")
+
+ (if universal
+ (progn
+ (insert "\\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\\begin{frame}{")
+\\begin{frame}[fragile]{")
+ (save-excursion (insert "}{}
- (save-excursion (insert "}{}
+"))
+ )
+
+ (insert "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\begin{frame}[fragile]{")
+
+ (save-excursion (insert "}{}
\\end{frame}
"))
+ )
)
(add-hook
(ff/add-copyrights))
)
+ (when (string-match "\\.lua$" filename)
+ (lua-mode)
+ (ff/start-lua)
+ )
+
+ (when (string-match "\\.py$" filename)
+ (python-mode)
+ (ff/start-python)
+ )
+
(when (string-match "\\.html$" filename)
(html-mode)
(ff/start-html)
(define-key global-map [f8] 'ff-find-other-file)
(define-key global-map [(shift f8)] (lambda () (interactive) (ff-find-other-file t)))
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Antiword, htmlize and boxquote
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-
-(autoload 'no-word "no-word")
-(add-to-list 'auto-mode-alist '("\\.doc\\'" . no-word))
-;; (add-to-list 'auto-mode-alist '("\\.DOC\\'" . no-word))
-
-(autoload 'htmlize-buffer "htmlize" nil t)
-
-(setq boxquote-top-and-tail "------------------")
-(autoload 'boxquote-region "boxquote" nil t)
-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; The compilation hacks
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(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 () (interactive)
+(defun ff/universal-compile (universal) (interactive "P")
(funcall (or (cdr (assoc major-mode
'(
(latex-mode . tex-file)
(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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(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.2f" value)))))))
+ (insert (format "%0.1e" value)))))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Keymaping
;; 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{}
;; (define-key global-map [(control shift next)] 'previous-multiframe-window)
;; I have two screens sometime!
+;; (define-key global-map [(meta next)] 'other-frame)
+;; (define-key global-map [(meta prior)] (lambda () (interactive) (other-frame -1)))
-(define-key global-map [(meta next)] 'other-frame)
-(define-key global-map [(meta prior)] (lambda () (interactive) (other-frame -1)))
-
-(define-key global-map [(shift home)] 'delete-other-windows-vertically)
+;; (load "winner")
+(winner-mode 1)
+;; (define-key global-map [(shift backspace)] 'winner-undo)
+;; (define-key global-map [(shift home)] 'delete-other-windows-vertically)
;; (define-key global-map [(control +)] 'enlarge-window)
;; (define-key global-map [(control -)] 'shrink-window)
-
;; Goes to next/previous buffer
-
-(define-key global-map [(control prior)] 'ff/next-buffer)
-(define-key global-map [(control next)] 'ff/prev-buffer)
+;; (define-key global-map [(control prior)] 'ff/next-buffer)
+;; (define-key global-map [(control next)] 'ff/prev-buffer)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; If M-. on a symbol, show where it is defined in another window
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$"
))
- recentf-max-saved-items 1000
+ recentf-max-saved-items 10000
recentf-save-file (concat ff/emacs-dir "/recentf")
)
(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
media/playlist-file (concat ff/emacs-dir "/media-playlists")
+ media/continue-mode-hint (if window-system "⤸" "*")
media/mplayer/args '(
"-framedrop"
"-zoom"
)
media/mplayer/timing-request-period 1.0
)
+
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; 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)
(define-key esc-map "`" ff/map)
+(defun ff/kill-downto-signature () (interactive)
+ (let ((s (point)))
+ (when (re-search-forward "^-- $")
+ (kill-region s (match-beginning 0))
+ (goto-char s))))
+
(defun ff/git-status (&optional dir) (interactive)
(if (buffer-file-name)
(git-status (file-name-directory (buffer-file-name)))
(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)
(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 [(control k)] 'ff/kill-downto-signature)
(define-key ff/map [?\C-0] 'ff/delete-annoying-windows)
(define-key ff/map "1" 'delete-other-windows)
;; 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)