emacs - mode-line add time in right
[dotfiles.git] / emacs.d / config.org
index df7137a..5d8f12d 100644 (file)
@@ -406,13 +406,33 @@ Install powerline mode [[https://github.com/milkypostman/powerline][powerline]]
 #+END_SRC
 
 Revised powerline-center-theme
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (defun sd/powerline-simpler-vc (s)
     (if s
         (replace-regexp-in-string "Git[:-]" "" s)
       s))
 
+  (defface sd/powerline-active1 '((t (:background "yellow" :foreground "black" :inherit mode-line)))
+    "My Powerline face 1 based on powerline-active1."
+    :group 'powerline)
+
+  (defface sd/buffer-modified-active1 '((t (:background "red" :foreground "black" :inherit mode-line)))
+    "My Powerline face 1 based on powerline-active1."
+    :group 'powerline)
+
+  (defface sd/mode-line-buffer-id
+    '((t (:background "yellow" :foreground "black" :inherit mode-line-buffer-id)))
+    "My powerline mode-line face, based on mode-line-buffer-id"
+    :group 'powerline)
+
+  ;; Don't show buffer modified for scratch and eshell mode
+  (defun sd/buffer-show-modified ()
+    "Dot not show modified indicator for buffers"
+    (interactive)
+    (unless (or (string-match "*scratch*" (buffer-name))
+                (equal major-mode 'eshell-mode))
+      t))
+
   (defun sd/powerline-center-theme_revised ()
     "Setup a mode-line with major and minor modes centered."
     (interactive)
@@ -420,8 +440,12 @@ Revised powerline-center-theme
                   '("%e"
                     (:eval
                      (let* ((active (powerline-selected-window-active))
-                            (mode-line-buffer-id (if active 'mode-line-buffer-id 'mode-line-buffer-id-inactive))
+                            (mode-line-buffer-id (if active 'sd/mode-line-buffer-id 'mode-line-buffer-id-inactive))
                             (mode-line (if active 'mode-line 'mode-line-inactive))
+                            (my-face1 (if active 'sd/powerline-active1 'powerline-inactive1))
+                            (my-face-buffer-modified (if (and (sd/buffer-show-modified) (buffer-modified-p)) 
+                                                         'sd/buffer-modified-active1
+                                                       my-face1))
                             (face1 (if active 'powerline-active1 'powerline-inactive1))
                             (face2 (if active 'powerline-active2 'powerline-inactive2))
                             (separator-left (intern (format "powerline-%s-%s"
@@ -430,23 +454,24 @@ Revised powerline-center-theme
                             (separator-right (intern (format "powerline-%s-%s"
                                                              (powerline-current-separator)
                                                              (cdr powerline-default-separator-dir))))
-                            (lhs (list (powerline-raw "%*" mode-line 'l)
+                            (lhs (list (powerline-raw "%* " my-face-buffer-modified 'l)
                                        ;; (powerline-buffer-size mode-line 'l)
                                        (powerline-buffer-id mode-line-buffer-id 'l)
-                                       (powerline-raw " ")
-                                       (funcall separator-left mode-line face1)
+                                       (powerline-raw " " my-face1)
+                                       (funcall separator-left my-face1 face1)
                                        (powerline-narrow face1 'l)
                                        ;; (powerline-vc face1)
-                                       (sd/powerline-simpler-vc (powerline-vc face1))
-                                       ))
+                                       (sd/powerline-simpler-vc (powerline-vc face1))))
                             (rhs (list (powerline-raw global-mode-string face1 'r)
                                        (powerline-raw "%4l" face1 'r)
-                                       (powerline-raw ":" face1)
+                                       (powerline-raw ":" face1)     
                                        (powerline-raw "%3c" face1 'r)
-                                       (funcall separator-right face1 mode-line)
-                                       (powerline-raw " ")
-                                       (powerline-raw "%6p" mode-line 'r)
-                                       (powerline-hud face2 face1)))
+                                       (funcall separator-right face1 my-face1)
+                                       ;; (powerline-raw " " my-face1)
+                                       (powerline-raw (format-time-string " %I:%M %p %m-%d %a ") my-face1 'r)
+                                       ;; (powerline-raw "%6p" my-face1 'r)
+                                       ;; (powerline-hud my-face1 face1 )
+                                       ))
                             (center (list (powerline-raw " " face1)
                                           (funcall separator-left face1 face2)
                                           (when (and (boundp 'erc-track-minor-mode) erc-track-minor-mode)
@@ -467,21 +492,17 @@ Revised powerline-center-theme
 #+END_SRC
 
 Fix the issue in mode line when showing triangle 
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (setq ns-use-srgb-colorspace nil)
 #+END_SRC
 
 set height in mode line
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (custom-set-variables
    '(powerline-height 14)
-   '(powerline-text-scale-factor 0.8))
-  ;; 100/140
+   '(powerline-text-scale-factor (/ (float 100) 140)))
+  ;; 100/140;0.8
   (set-face-attribute 'mode-line nil :height 100)
-
 #+END_SRC
 
 * IDO & SMEX
@@ -600,10 +621,10 @@ Stolen from [[https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-spell
   ;;   ;; Turn off RUN-TOGETHER option when spell check text-mode
   ;;   (setq-local ispell-extra-args (flyspell-detect-ispell-args)))
   ;; (add-hook 'text-mode-hook 'text-mode-hook-setup)
-  (add-hook 'text-mode-hook 'flyspell-mode)
+  ;; (add-hook 'text-mode-hook 'flyspell-mode)
 
   ;; enable flyspell check on comments and strings in progmamming modes
-  (add-hook 'prog-mode-hook 'flyspell-prog-mode)
+  ;; (add-hook 'prog-mode-hook 'flyspell-prog-mode)
 
   ;; I don't use the default mappings
   (with-eval-after-load 'flyspell
@@ -903,6 +924,7 @@ use the prefix =M-s= for searching in buffers
                     ;; ("\M-w" . save-buffer)
                     ("e" . revert-buffer)
                     ("s" . isearch-forward-regexp)
+                    ("\M-s" . isearch-forward-regexp)
                     ("r" . isearch-backward-regexp)
                     ("." . isearch-forward-symbol-at-point)
                     ("o" . occur)
@@ -969,7 +991,9 @@ Always indents header, and hide header leading starts so that no need type =#+ST
      (scheme . t)
      (sh . t)
      (sqlite . t)
-     (js . t)))
+     (js . t)
+     (gnuplot . t)
+     (ditaa . t)))
 
   ;; use current window for org source buffer editting
   (setq org-src-window-setup 'current-window )
@@ -1733,6 +1757,23 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f
 
 #+END_SRC
 
+** View only for some directory
+When see function by =C-h f=, and visit the source code, I would like the buffer is read only. See [[http://emacs.stackexchange.com/questions/3676/how-to-enter-view-only-mode-when-browsing-emacs-source-code-from-help/3681#3681][here]]
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (dir-locals-set-class-variables
+   'emacs
+   '((nil . ((buffer-read-only . t)
+             (show-trailing-whitespace . nil)
+             (tab-width . 8)
+             (eval . (whitespace-mode -1))))))
+
+  ;; (dir-locals-set-directory-class (expand-file-name "/usr/local/share/emacs") 'emacs)
+  (dir-locals-set-directory-class "/usr/local/Cellar/emacs" 'emacs)
+  ;; (dir-locals-set-directory-class "~/.emacs.d/elpa" 'emacs)
+  (dir-locals-set-directory-class "~/dotfiles/emacs.d/elpa" 'emacs)
+  (dir-locals-set-directory-class "~/dotfiles/emacs.d/el-get" 'emacs)
+#+END_SRC
+
 ** Info plus
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (el-get-bundle info+
@@ -1766,11 +1807,6 @@ Play Go in Emacs, gnugo xpm refert [[https://github.com/okanotor/dotemacs/blob/f
 
 ** TODO Man mode
 Color for Man-mode
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-  ;; (add-hook 'Man-mode-hook (lambda ()
-  ;;                         (interactive)
-  ;;                         (setenv "GROFF_NO_SRG")))
-#+END_SRC
 
 ** TODO swiper to occur
 
@@ -1829,14 +1865,25 @@ Dired+
     (define-key dired-mode-map (kbd "g") 'dired-goto-file))
 #+END_SRC
 
-* Programming
-
-** Languages
+* Completion
+company mode and company-statistics
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package company
+    :ensure t
+    :diminish company-mode
+    :init (setq company-idle-delay 0.1)
+    :config
+    (global-company-mode))
 
-*** Emacs Lisp
+  (use-package company-statistics
+    :ensure t
+    :config
+    (company-statistics-mode))
+#+END_SRC
 
+* Programming Language
+** Emacs Lisp
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (use-package color-identifiers-mode
     :ensure t
     :init
@@ -1845,14 +1892,10 @@ Dired+
     :diminish color-identifiers-mode)
 
   (global-prettify-symbols-mode t)
-
 #+END_SRC
 
-**** Lispy Mode
-
 In Lisp Mode, =M-o= is defined, but I use this for global hydra window. So here disable this key
 bindings in =lispy-mode-map= after loaded. see [[http://stackoverflow.com/questions/298048/how-to-handle-conflicting-keybindings][here]]
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (use-package lispy
     :ensure t
@@ -1864,15 +1907,14 @@ bindings in =lispy-mode-map= after loaded. see [[http://stackoverflow.com/questi
     (add-hook 'emacs-lisp-mode-hook (lambda () (lispy-mode 1))))
 #+END_SRC
 
-*** Perl
-
+** Perl
+*** CPerl mode
 [[https://www.emacswiki.org/emacs/CPerlMode][CPerl mode]] has more features than =PerlMode= for perl programming. Alias this to =CPerlMode=
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (defalias 'perl-mode 'cperl-mode)
 
-  ;(setq cperl-hairy t) ;; Turns on most of the CPerlMode options
+  ;; (setq cperl-hairy t)
+  ;; Turns on most of the CPerlMode options
   (setq cperl-auto-newline t)
   (setq cperl-highlight-variables-indiscriminately t)
   ;(setq cperl-indent-level 4)
@@ -1886,21 +1928,42 @@ bindings in =lispy-mode-map= after loaded. see [[http://stackoverflow.com/questi
             '(lambda ()
                (cperl-set-style "C++")))
 
-  ;(require 'template)
-  ;(template-initialize)
-  ;(require 'perlnow)
+  (defalias 'perldoc 'cperl-perldoc)
+#+END_SRC
 
+*** Perl template
+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")
+       '(
+         "Empty"
+         "#!/usr/bin/perl -w" \n
+         \n
+         "use strict;" >  \n \n
+         > _
+         )))
 #+END_SRC
 
-- auto insert
-- run script 
+*** Perl Keywords
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (font-lock-add-keywords 'cperl-mode
+                          '(("\\(say\\)" . cperl-nonoverridable-face)
+                            ("\\([0-9.]\\)*" . font-lock-constant-face)
+                            ("\".*\\(\\\n\\).*\"" . font-lock-constant-face)
+                            ("\n" . font-lock-constant-face)
+                            ("\\(^#!.*\\)$" .  cperl-nonoverridable-face)))
+
+    ;; (font-lock-add-keywords 'Man-mode
+    ;;                         '(("\\(NAME\\)" . font-lock-function-name-face)))
 
+#+END_SRC
+
+*** Run Perl
 Change the compile-command to set the default command run when call =compile=
 Mapping =s-r= (on Mac, it's =Command + R= to run the script. Here =current-prefix-arg= is set
 to call =compilation=  interactively.
-
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (defun my-perl-hook ()
     (progn
       (setq-local compilation-read-command nil)
@@ -1909,32 +1972,30 @@ to call =compilation=  interactively.
                    (if buffer-file-name
                        (shell-quote-argument buffer-file-name))))
       (local-set-key (kbd "s-r")
-                       (lambda ()
-                         (interactive)
-  ;                       (setq current-prefix-arg '(4)) ; C-u
-                         (call-interactively 'compile)))))
+                     (lambda ()
+                       (interactive)
+                                          ;                       (setq current-prefix-arg '(4)) ; C-u
+                       (call-interactively 'compile)))))
 
   (add-hook 'cperl-mode-hook 'my-perl-hook)
-
-
 #+END_SRC
 
-*** C & C++
-
+** C & C++
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (setq c-default-style "stroustrup"
         c-basic-offset 4)
-
 #+END_SRC
 
-** Compile
+* 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)))
+    (setq compilation-environment (cons "LC_ALL=C" compilation-environment))
+    (setq compilation-auto-jump-to-first-error t)
+    (setq compilation-auto-jump-to-next t)
+    (setq compilation-scroll-output 'first-error))
 
   ;; super-r to compile
   (with-eval-after-load "compile"
@@ -1944,17 +2005,15 @@ Set the environments vairables in compilation mode
     (define-key compilation-mode-map (kbd "r") #'recompile))
 #+END_SRC
 
-** Auto-Insert
-*** Enable auto-insert mode
+* Auto-Insert
+** 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
-
+** C++ Auto Insert
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
   (eval-after-load 'autoinsert
     '(define-auto-insert '("\\.cpp\\'" . "C++ skeleton")
        '(
@@ -1993,24 +2052,9 @@ Set the environments vairables in compilation mode
          "return 1;\n"
          "}" > \n
          )))
-       
-#+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")
-       '(
-         "Empty"
-         "#!/usr/bin/perl -w" \n
-         \n
-         "use strict;" >  \n \n
-         > _
-         )))
 #+END_SRC
 
-*** Python template
+** Python template
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (eval-after-load 'autoinsert
     '(define-auto-insert '("\\.\\(py\\)\\'" . "Python skeleton")
@@ -2021,7 +2065,7 @@ Refer [[https://www.emacswiki.org/emacs/AutoInsertMode][AutoInsertMode]] Wiki
          )))
 #+END_SRC
 
-*** Elisp 
+** 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
@@ -2078,7 +2122,7 @@ Emacs lisp auto-insert, based on the default module in =autoinsert.el=, but repl
   \;;; " (file-name-nondirectory (buffer-file-name)) " ends here\n")))
 #+END_SRC
 
-*** Org file template
+** Org file template
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (eval-after-load 'autoinsert
     '(define-auto-insert '("\\.\\(org\\)\\'" . "Org-mode skeleton")
@@ -2092,32 +2136,6 @@ Emacs lisp auto-insert, based on the default module in =autoinsert.el=, but repl
          > _)))
 #+END_SRC
 
-** Completion
-
-company mode
-
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
-  (use-package company
-    :ensure t
-    :diminish company-mode
-    :init (setq company-idle-delay 0.1)
-    :config
-    (global-company-mode))
-
-#+END_SRC
-
-[[https://github.com/company-mode/company-statistics][company-statistics]]
-
-#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-
-  (use-package company-statistics
-    :ensure t
-    :config
-    (company-statistics-mode))
-
-#+END_SRC
-
 * Markdown mode
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (use-package markdown-mode
@@ -2261,6 +2279,44 @@ See [[https://www.emacswiki.org/emacs/GnusWindowLayout][GnusWindowLayout]]
   ;;                               (gnus-group-select-group "INBOX")))
 #+END_SRC
 
+* Gnu Plot
+To fix some issue that =toolbar-make-button-list= is void, see the [[https://github.com/bruceravel/gnuplot-mode/issues/31][issue]], here I set some variable as =nil=
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package gnuplot
+    :ensure
+    :init
+    (setq gnuplot-help-xpm nil)
+    (setq gnuplot-line-xpm nil)
+    (setq gnuplot-region-xpm nil)
+    (setq gnuplot-buffer-xpm nil)
+    (setq gnuplot-doc-xpm nil))
+#+END_SRC
+
+Use =gnuplot= on =Org-mode= file, see [[http://orgmode.org/worg/org-contrib/babel/languages/ob-doc-gnuplot.html][ob-doc-gnuplot]]
+#+BEGIN_SRC gnuplot :exports code :file ./temp/file.png
+  reset
+
+  set title "Putting it All Together"
+
+  set xlabel "X"
+  set xrange [-8:8]
+  set xtics -8,2,8
+
+
+  set ylabel "Y"
+  set yrange [-20:70]
+  set ytics -20,10,70
+
+  f(x) = x**2
+  g(x) = x**3
+  h(x) = 10*sqrt(abs(x))
+
+  plot f(x) w lp lw 1, g(x) w p lw 2, h(x) w l lw 3
+#+END_SRC
+
+#+RESULTS:
+[[file:./temp/file.png]]
+
 * Blog
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
 
@@ -2271,5 +2327,19 @@ See [[https://www.emacswiki.org/emacs/GnusWindowLayout][GnusWindowLayout]]
 - vision
 - mission
 * TODO Convert ASCII to key
-map =function-key-map= [[http://academic.evergreen.edu/projects/biophysics/technotes/program/ascii_ctrl.htm][ascii_ctrl]]
+** 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=
+
+** write color syntax for =Man-mode=
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (font-lock-add-keywords 'perl-mode '(("\\(|\\w+?\\(,\\w+?\\)?|\\)" 1 'py-builtins-face)))
+#+END_SRC
+
+* TODO set fly-spell binding
+
+* TODO imenu bindings
+
+* TODO modified indicator 
+* TODO highlight selected ido candicate
+* TODO show time in right of mode-line