emacs - python template
[dotfiles.git] / emacs.d / config.org
index d4b257b..df7137a 100644 (file)
@@ -25,9 +25,7 @@ Set system PATH and emacs exec path
 Set the emacs load path
 
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
-  (add-to-list 'load-path "~/.emacs.d/elisp")
-
+  ;; (add-to-list 'load-path "~/.emacs.d/elisp")
 #+END_SRC
 
 ** Package Initialization
@@ -53,7 +51,7 @@ Disable scroll bar, tool-bar and menu-bar
   (tool-bar-mode 0)
   (menu-bar-mode 1)
 
-  (setq debug-on-error t)
+  ;; (setq debug-on-error t)
   (setq inhibit-startup-message t)
 
   (defalias 'yes-or-no-p 'y-or-n-p)
@@ -93,6 +91,14 @@ Set default window size
           (height . 50)))
 #+END_SRC
 
+Stop auto save
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (setq auto-save-default nil)
+
+  ;; restore last session
+  ;; (desktop-save-mode t)
+#+END_SRC
+
 * Package Management Tools
 
 ** Use-package
@@ -512,16 +518,13 @@ set height in mode line
 #+END_SRC
 
 ** IDO-vertically
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (use-package ido-vertical-mode
     :ensure t
     :init
     (setq ido-vertical-define-keys 'C-n-C-p-up-and-down)
     :config
     (ido-vertical-mode 1))
-
 #+END_SRC
 
 ** SMEX
@@ -554,17 +557,18 @@ Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for
 #+END_SRC
 
 ** Ido-exit-target
-
 [[https://github.com/waymondo/ido-exit-target][ido-exit-target]] let you open file/buffer on =other-windows= when call =ido-switch-buffer=
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (use-package ido-exit-target
     :ensure t
     :init
-    (define-key ido-common-completion-map (kbd "C-j") #'ido-exit-target-split-window-right)
-    (define-key ido-common-completion-map (kbd "C-l") #'ido-exit-target-split-window-below))
-
+    (mapcar (lambda (map)
+              (define-key map (kbd "C-j") #'ido-exit-target-split-window-right)
+              (define-key map (kbd "C-k") #'ido-exit-target-split-window-below))
+            (list ido-buffer-completion-map
+                  ;; ido-common-completion-map
+                  ido-file-completion-map
+                  ido-file-dir-completion-map)))
 #+END_SRC
 
 * Normal Text Operation
@@ -1297,6 +1301,9 @@ and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (use-package magit
     :ensure t
+    :init
+    ;; don't ask me to confirm the unsaved change 
+    (setq magit-save-repository-buffers nil)
     :commands magit-status magit-blame
     :config
     (dolist (map (list magit-status-mode-map
@@ -1494,6 +1501,8 @@ Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-ex
     ("'" mode-line-other-buffer "last buffer" :exit t)
     ("C-'" mode-line-other-buffer "last buffer" :exit t)
     ("m" man "man" :exit t)
+    ("d" dired-jump "dired" :exit t)
+    ("b" ibuffer "ibuffer" :exit t)
     ("q" nil "quit")
     ("f" nil "quit"))
 
@@ -1724,14 +1733,6 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f
 
 #+END_SRC
 
-** dired
-=C-o= is defined as a global key for window operation, here unset it in dired mode
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-  (add-hook 'dired-mode-hook (lambda ()
-                               (local-unset-key (kbd "C-o"))
-                               (local-set-key (kbd "o") 'dired-display-file)))
-#+END_SRC
-
 ** Info plus
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (el-get-bundle info+
@@ -1771,6 +1772,63 @@ Color for Man-mode
   ;;                         (setenv "GROFF_NO_SRG")))
 #+END_SRC
 
+** TODO swiper to occur
+
+** TODO UTF8
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  ;; (set-language-environment "UTF-8")
+  ;; (set-default-coding-systems 'utf-8)
+#+END_SRC
+
+** Demo It
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  ;; (el-get-bundle howardabrams/demo-it)
+
+  (use-package org-tree-slide
+    :ensure t)
+
+  ;; (use-package yasnippet
+  ;;   :ensure t)
+#+END_SRC
+
+** Presentation
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package org-tree-slide
+    :ensure
+    :config
+    ;; (define-key org-mode-map "\C-ccp" 'org-tree-slide-mode)
+    (define-key org-tree-slide-mode-map (kbd "<ESC>") 'org-tree-slide-content)
+    (define-key org-tree-slide-mode-map (kbd "<SPACE>") 'org-tree-slide-move-next-tree)
+    (define-key org-tree-slide-mode-map [escape] 'org-tree-slide-move-previous-tree))
+#+END_SRC
+
+* dired
+=C-o= is defined as a global key for window operation, here unset it in dired mode
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package dired
+    :config
+    (require 'dired-x)
+    (setq dired-omit-mode t)
+    (setq dired-omit-files (concat dired-omit-files "\\|^\\..+$"))
+    (add-hook 'dired-mode-hook (lambda ()
+                                 (define-key dired-mode-map (kbd "C-o") nil)
+                                 (define-key dired-mode-map (kbd "H") 'dired-omit-mode)
+                                 (define-key dired-mode-map (kbd "DEL") (lambda () (interactive) (find-alternate-file "..")))
+                                 (dired-omit-mode))))
+#+END_SRC
+
+Dired+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package dired+
+    :ensure t
+    :init
+    (setq diredp-hide-details-initially-flag nil)
+    :config
+    (define-key dired-mode-map (kbd "j") 'diredp-next-line)
+    (define-key dired-mode-map (kbd "k") 'diredp-previous-line)
+    (define-key dired-mode-map (kbd "g") 'dired-goto-file))
+#+END_SRC
+
 * Programming
 
 ** Languages
@@ -1871,27 +1929,26 @@ to call =compilation=  interactively.
 #+END_SRC
 
 ** Compile
-
 Set the environments vairables in compilation mode
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (use-package compile
     :commands compile
     :config
     (setq compilation-environment (cons "LC_ALL=C" compilation-environment)))
 
+  ;; super-r to compile
+  (with-eval-after-load "compile"
+    (define-key compilation-mode-map (kbd "C-o") nil)
+    (define-key compilation-mode-map (kbd "n") 'compilation-next-error)
+    (define-key compilation-mode-map (kbd "p") 'compilation-previous-error)
+    (define-key compilation-mode-map (kbd "r") #'recompile))
 #+END_SRC
 
 ** Auto-Insert
-
-Enable auto-insert mode
-
+*** Enable auto-insert mode
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (auto-insert-mode t)
   (setq auto-insert-query nil)
-
 #+END_SRC
 
 *** C++ Auto Insert
@@ -1940,20 +1997,99 @@ Enable auto-insert mode
 #+END_SRC
 
 *** Perl Auto Insert
-
 Refer [[https://www.emacswiki.org/emacs/AutoInsertMode][AutoInsertMode]] Wiki
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (eval-after-load 'autoinsert
     '(define-auto-insert '("\\.pl\\'" . "Perl skeleton")
        '(
-         "Description: "
+         "Empty"
          "#!/usr/bin/perl -w" \n
          \n
-         "use strict;" \n \n
+         "use strict;" >  \n \n
+         > _
+         )))
+#+END_SRC
+
+*** Python template
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (eval-after-load 'autoinsert
+    '(define-auto-insert '("\\.\\(py\\)\\'" . "Python skeleton")
+       '(
+         "Empty"
+         "#import os,sys" \n
+         \n \n
          )))
+#+END_SRC
 
+*** Elisp 
+Emacs lisp auto-insert, based on the default module in =autoinsert.el=, but replace =completing-read= as 
+=completing-read-ido-ubiquitous= to fix the edge case of that =ido= cannot handle.
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (eval-after-load 'autoinsert
+    '(define-auto-insert '("\\.el\\'" . "my Emacs Lisp header")
+       '(
+         "Short description: "
+         ";;; " (file-name-nondirectory (buffer-file-name)) " --- " str
+         (make-string (max 2 (- 80 (current-column) 27)) ?\s)
+         "-*- lexical-binding: t; -*-" '(setq lexical-binding t)
+         "\n
+  ;; Copyright (C) " (format-time-string "%Y") "  "
+         (getenv "ORGANIZATION") | (progn user-full-name) "
+
+  ;; Author: " (user-full-name)
+         '(if (search-backward "&" (line-beginning-position) t)
+              (replace-match (capitalize (user-login-name)) t t))
+         '(end-of-line 1) " <" (progn user-mail-address) ">
+  ;; Keywords: "
+         '(require 'finder)
+         ;;'(setq v1 (apply 'vector (mapcar 'car finder-known-keywords)))
+         '(setq v1 (mapcar (lambda (x) (list (symbol-name (car x))))
+                           finder-known-keywords)
+                v2 (mapconcat (lambda (x) (format "%12s:  %s" (car x) (cdr x)))
+                              finder-known-keywords
+                              "\n"))
+         ((let ((minibuffer-help-form v2))
+            (completing-read-ido-ubiquitous "Keyword, C-h: " v1 nil t))
+          str ", ") & -2 "
+
+  \;; This program is free software; you can redistribute it and/or modify
+  \;; it under the terms of the GNU General Public License as published by
+  \;; the Free Software Foundation, either version 3 of the License, or
+  \;; (at your option) any later version.
+
+  \;; This program is distributed in the hope that it will be useful,
+  \;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+  \;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  \;; GNU General Public License for more details.
+
+  \;; You should have received a copy of the GNU General Public License
+  \;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+  \;;; Commentary:
+
+  \;; " _ "
+
+  \;;; Code:
+
+
+  \(provide '"
+         (file-name-base)
+         ")
+  \;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n")))
+#+END_SRC
+
+*** Org file template
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (eval-after-load 'autoinsert
+    '(define-auto-insert '("\\.\\(org\\)\\'" . "Org-mode skeleton")
+       '(
+         "title: "
+         "#+TITLE: " str (make-string 30 ?\s) > \n
+         "#+AUTHOR: Peng Li\n"
+         "#+EMAIL: seudut@gmail.com\n"
+         "#+DATE: " (shell-command-to-string "echo -n $(date +%Y-%m-%d)") > \n
+         > \n
+         > _)))
 #+END_SRC
 
 ** Completion
@@ -2134,3 +2270,6 @@ See [[https://www.emacswiki.org/emacs/GnusWindowLayout][GnusWindowLayout]]
 - passion
 - vision
 - mission
+* TODO Convert ASCII to key
+map =function-key-map= [[http://academic.evergreen.edu/projects/biophysics/technotes/program/ascii_ctrl.htm][ascii_ctrl]]
+new file =C-x C-f C-f=