emacs - add download function
[dotfiles.git] / emacs.d / config.org
index b9c0209..8bb6d51 100644 (file)
@@ -1471,6 +1471,28 @@ brew install the-silver-searcher
   (add-hook 'text-mode-hook 'table-recognize)
 #+END_SRC
 
+** url-download
+Refer [[http://stackoverflow.com/questions/4448055/download-a-file-with-emacs-lisp][download-a-file-with-emacs-lisp]]
+#+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 (or (read-string "Save to (~/Downloads): ") "~/Downloads")))
+      (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
@@ -2135,7 +2157,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;"
@@ -2154,7 +2176,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"