emacs - make download wrap directory completing
[dotfiles.git] / emacs.d / config.org
index 710c43e..c33ddb5 100644 (file)
@@ -1471,6 +1471,29 @@ brew install the-silver-searcher
   (add-hook 'text-mode-hook 'table-recognize)
 #+END_SRC
 
+** url-download
+To download file in =elisp=, best is =url-copy-file=, here refer [[http://stackoverflow.com/questions/4448055/download-a-file-with-emacs-lisp][download-a-file-with-emacs-lisp]] using =url-retrieve-synchronously= wrapping
+as a http download client tool
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (defun sd/download-file (&optional url download-dir download-name)
+    (interactive)
+    (let ((url (or url
+                   (read-string "Enter download URL: ")))
+          (download-dir (read-directory-name "Save to (~/Downloads): " "~/Downloads" "~/Downloads" 'confirm' nil)))
+      (let ((download-buffer (url-retrieve-synchronously url)))
+        (save-excursion
+          (set-buffer download-buffer)
+          ;; we may have to trim the http response
+          (goto-char (point-min))
+          (re-search-forward "^$" nil 'move)
+          (forward-char)
+          (delete-region (point-min) (point))
+          (write-file (concat (or download-dir
+                                  "~/Downloads/")
+                              (or download-name
+                                  (car (last (split-string url "/" t))))))))))
+#+END_SRC
+
 * Dired
 ** Dired bindings
 =C-o= is defined as a global key for window operation, here unset it in dired mode
@@ -1510,7 +1533,8 @@ brew install the-silver-searcher
     (define-key dired-mode-map (kbd "TAB") 'diredp-next-subdir)
     (define-key dired-mode-map (kbd "K") 'diredp-prev-subdir)
     (define-key dired-mode-map (kbd "O") 'dired-display-file)
-    (define-key dired-mode-map (kbd "I") 'other-window)) 
+    (define-key dired-mode-map (kbd "I") 'other-window)
+    (define-key dired-mode-map (kbd "o") 'other-window)) 
 
   (use-package dired
     :config
@@ -1580,6 +1604,7 @@ Disalble =ido= when new a directory or file in =dired= mode
   ;; call the function which you want to disable ido
   (mk-disable-ido 'dired-create-directory)
   (mk-disable-ido 'sd/dired-new-file)
+  (mk-disable-ido 'dired-goto-file)
 #+END_SRC
 
 ** Dired open with
@@ -1681,7 +1706,8 @@ here on Mac, just use "open" commands to pen =.pdf=,  =.html= and image files
      ;; should map both (kbd "TAB") and [tab],https://github.com/company-mode/company-mode/issues/75
     (define-key company-active-map (kbd "TAB") #'company-complete-selection)
     (define-key company-active-map [tab] #'company-complete-selection)
-    (global-company-mode))
+    (global-company-mode)
+    (setq company-global-modes '(not org-mode)))
 
   (use-package company-statistics
     :ensure t
@@ -2054,6 +2080,42 @@ irony-company
     :ensure t)
 #+END_SRC
 
+** Scheme
+Install =guile=, =guile= is an implementation of =Scheme= programming language.
+#+BEGIN_SRC sh
+  brew install guile
+#+END_SRC
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (setq geiser-scheme-implementation 'guile)
+#+END_SRC
+
+#+BEGIN_SRC scheme
+  (define a "3")
+  a
+#+END_SRC
+
+#+RESULTS:
+: 3
+
+** Racket
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+  (use-package racket-mode
+    :ensure t
+    :config
+    (define-key racket-mode-map (kbd "s-r") 'racket-run)
+    (add-to-list 'racket-mode-hook (lambda () (lispy-mode 1))))
+
+  ;; set racket path
+  (setenv "PATH" (concat (getenv "PATH")
+                         ":" "/Applications/Racket v6.6/bin"))
+  (setenv "MANPATH" (concat (getenv "MANPATH")
+                            ":" "/Applications/Racket v6.6/man"))
+  (setq exec-path (append exec-path '("/Applications/Racket v6.6/bin")))
+
+  (add-to-list 'auto-mode-alist '("\\.rkt\\'" . racket-mode))
+#+END_SRC
+
 * Compile
 Set the environments vairables in compilation mode
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
@@ -2097,7 +2159,7 @@ Set the environments vairables in compilation mode
           (file-name-nondirectory (buffer-file-name)))
          ".hpp\"" \n \n
          "using namespace std;" \n \n
-         "int main ()"
+         "int main (int argc, char *argv[])"
          "\n{" \n 
          > _ \n
          "return 0;"
@@ -2116,7 +2178,7 @@ Set the environments vairables in compilation mode
          (file-name-sans-extension
           (file-name-nondirectory (buffer-file-name)))
          ".h\"" \n \n
-         "int main ()\n"
+         "int main (int argc, char *argv[])\n"
          "{" \n
          > _ \n
          "return 0;\n"
@@ -2819,6 +2881,11 @@ Search, replace and hightlight will in later paragraph
 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
   (global-set-key (kbd "M-i") #'counsel-imenu)
   ;; (global-set-key (kbd "M-i") #'imenu)
+
+  ;; define M-[ as C-M-a
+  ;; http://ergoemacs.org/emacs/emacs_key-translation-map.html
+  (define-key key-translation-map (kbd "M-[") (kbd "C-M-a"))
+  (define-key key-translation-map (kbd "M-]") (kbd "C-M-e"))
 #+END_SRC
 
 *** Go-to line