;; Xft.antialias: true
;; Xft.rgba: rgb
-(set-default-font "Inconsolata 15")
+;; (set-default-font "Inconsolata 15")
-;; (set-default-font "Bitstream vera sans mono-12")
+;; (package-initialize)
+
+(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")
(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)
;; I am a power-user
(fringe :background "gray80")
(ff/date-info-face :foreground "white")
(ff/battery-info-face :foreground "black")
+ (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")
(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")
(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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (`charging (format "c%d%%" (ff/battery-percent)))
;; (`discharging (format "d%d%%" (ff/battery-percent)))
;; (`unknown "f")
- (`charging (format "↑%d%%" (ff/battery-percent)))
- (`discharging (format "↓%d%%" (ff/battery-percent)))
- (`unknown "✱")
+
+ (`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 "✱")
+ (`unknown "F")
(_ "?"))
(error nil))
)
" "
- ,@(when (ff/battery-info-string)
+ ,@(when (ff/temp-info-string)
'((ff/temp-info-string)))
,@(when (ff/battery-info-string)
- '((propertize
- (ff/battery-info-string)
- 'face 'ff/battery-info-face)))
+ '((ff/battery-info-string)))
+
+ ;; '((propertize
+ ;; (ff/battery-info-string)
+ ;; 'face 'ff/battery-info-face)))
" "
(define-key global-map [(meta G)] (lambda () (interactive)
(ff/goto-function-definition t)))
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; (setq python-indent-offset 4)
+
+;; (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)
+
+(load "vc-git")
+
+(defun ff/git-push () (interactive)
+ (shell-command "git pull && git push" nil)
+ )
+
+(defun ff/git-pull () (interactive)
+ (shell-command "git pull" nil)
+ )
+
+(define-key global-map [(control x) (v) (p)] 'ff/git-push)
+(define-key global-map [(control x) (v) (P)] 'ff/git-pull)
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; The big stuff (bbdb, mailcrypt, etc.)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; Failsafe version if we can't load bbdb
-(defun ff/explicit-name (email) email)
+(setq bbdb-file "~/private/bbdb")
-(load "vc-git")
+(when (file-exists-p bbdb-file)
-(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
- )
+ ;; Failsafe version if we can't load bbdb
+ (defun ff/explicit-name (email) email)
+
+ (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/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.")
+ (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
+ (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.
'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)))
+ (and email
+ (let* ((data (mail-extract-address-components email))
+ (name (car data))
+ (net (cadr data))
+ (record (bbdb-search-simple nil net)))
+
+ (concat
+
+ (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.")
+ )))
+ )
- (concat
+ (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
+ )))
- (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.")
- )))
)
-
- (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
- )))
-
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(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 torch
+import math
+
+from torch import nn
+from torch.nn import functional as fn
+
+from torch import Tensor
+from torch.autograd import Variable
+from torch.nn.parameter import Parameter
+from torch.nn import Module
+
+")
+ (python-mode)
+ )
+
+
(defun ff/start-html ()
"Adds all that stuff to start a new HTML file."
(interactive)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-(defun ff/start-slide ()
- (interactive)
- (insert "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+(defun ff/start-slide (universal)
+ (interactive "P")
+
+ (if universal
+ (progn
+ (insert "\\end{frame}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\\begin{frame}{")
+ (save-excursion (insert "}{}
- (save-excursion (insert "}{}
+"))
+ )
+
+ (insert "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\\begin{frame}{")
+
+ (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)
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)
(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
"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")
)
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
)
+
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(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)))
(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