Update.
[elisp.git] / emacs.el
index 2271f58..037615f 100644 (file)
--- a/emacs.el
+++ b/emacs.el
@@ -598,6 +598,8 @@ load-warning buffer in case of failure."
 
 (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
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1184,17 +1186,39 @@ goback argument, go back where we were."
                                     (ff/goto-function-definition t)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; The big stuff (bbdb, mailcrypt, etc.)
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; (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-pull-push () (interactive)
+       (message "git pull / push ...")
+       (shell-command "git pull && git push" nil)
+       )
+
+(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)
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; The big stuff (bbdb, mailcrypt, etc.)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (setq bbdb-file "~/private/bbdb")
 
-(if (file-exists-p bbdb-file)
+(when (file-exists-p bbdb-file)
 
-    ;; Failsafe version if we can't load bbdb
-    (defun ff/explicit-name (email) email)
+  ;; Failsafe version if we can't load bbdb
+  (defun ff/explicit-name (email) email)
 
   (when (ff/load-or-alert "bbdb")
 
@@ -1416,7 +1440,7 @@ universal argument starts xfig even if the .fig does not exist"
 
 ;; Automagically add the frame numbers in comments in a beamer file
 
-(defun number-beamer-frames ()
+(defun ff/number-beamer-frames ()
   "Add the frame numbers as comments after each \begin{frame}"
   (interactive)
 
@@ -1740,17 +1764,34 @@ int main(int argc, char **argv) {
 
 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-for-pytorch
+
+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."
@@ -1793,9 +1834,7 @@ the function is invoked with a universal arg"
   (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 " << \" "
@@ -1964,6 +2003,11 @@ a file in /tmp"
              (ff/start-lua)
              )
 
+           (when (string-match "\\.py$" filename)
+             (python-mode)
+             (ff/start-python)
+             )
+
            (when (string-match "\\.html$" filename)
              (html-mode)
              (ff/start-html)
@@ -2074,7 +2118,7 @@ a file in /tmp"
 
 (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")
@@ -2559,12 +2603,15 @@ proposes to visit them."
 ;; 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")
@@ -2588,6 +2635,14 @@ with a time tag, and save this file"
 (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)
@@ -2645,7 +2700,7 @@ with a time tag, and save this file"
 (define-key ff/map [(control m)] 'woman)
 (define-key ff/map "b" 'bookmark-jump)
 (define-key ff/map [(control =)] 'calc)
-(define-key ff/map "=" 'number-beamer-frames)
+(define-key ff/map "=" 'ff/number-beamer-frames)
 (define-key ff/map [(control shift b)]
   (lambda () (interactive)
     (bookmark-set)