diff --git a/README.md b/README.md
index eb32485..9d068cd 100644
--- a/README.md
+++ b/README.md
@@ -218,6 +218,7 @@ Keybinding | Description
-------------------|------------------------------------------------------------
C-c o | Open the currently visited file with an external program.
C-c g | Search in Google for the thing under point (or an interactive query).
+C-c G | Search in GitHub for the thing under point (or an interactive query).
C-c y | Search in YouTube for the thing under point (or an interactive query).
C-S-RET or M-o | Insert an empty line above the current line and indent it properly
S-RET or M-O | Insert an empty line and indent it properly (as in most IDEs).
diff --git a/core/prelude-core.el b/core/prelude-core.el
index 32fb125..02fe3d4 100644
--- a/core/prelude-core.el
+++ b/core/prelude-core.el
@@ -43,11 +43,11 @@ With a prefix ARG always prompt for command to use."
(when buffer-file-name
(start-process "prelude-open-with-process"
"*prelude-open-with-output*"
- (cond
- ((and (not arg) (eq system-type 'darwin)) "open")
- ((and (not arg) (member system-type '(gnu gnu/linux gnu/kfreebsd))) "xdg-open")
- (t (read-shell-command "Open current file with: ")))
- (shell-quote-argument buffer-file-name))))
+ (cond
+ ((and (not arg) (eq system-type 'darwin)) "open")
+ ((and (not arg) (member system-type '(gnu gnu/linux gnu/kfreebsd))) "xdg-open")
+ (t (read-shell-command "Open current file with: ")))
+ (shell-quote-argument buffer-file-name))))
(defun prelude-buffer-mode (buffer-or-name)
"Retrieve the `major-mode' of BUFFER-OR-NAME."
@@ -61,25 +61,31 @@ With a prefix ARG always prompt for command to use."
(ansi-term (getenv "SHELL")))
"*ansi-term*"))
+(defun prelude-search (query-url prompt)
+ "Open the search url constructed with the QUERY-URL.
+PROMPT sets the `read-string prompt."
+ (browse-url
+ (concat query-url
+ (url-hexify-string
+ (if mark-active
+ (buffer-substring (region-beginning) (region-end))
+ (read-string prompt))))))
+
(defun prelude-google ()
"Googles a query or region if any."
(interactive)
- (browse-url
- (concat
- "http://www.google.com/search?ie=utf-8&oe=utf-8&q="
- (url-hexify-string (if mark-active
- (buffer-substring (region-beginning) (region-end))
- (read-string "Google: "))))))
+ (prelude-search "http://www.google.com/search?q=" "Google: "))
(defun prelude-youtube ()
"Search YouTube with a query or region if any."
(interactive)
- (browse-url
- (concat
- "http://www.youtube.com/results?search_query="
- (url-hexify-string (if mark-active
- (buffer-substring (region-beginning) (region-end))
- (read-string "Search YouTube: "))))))
+ (prelude-search "http://www.youtube.com/results?search_query="
+ "Search YouTube: "))
+
+(defun prelude-github ()
+ "Search GitHub with a query or region if any."
+ (interactive)
+ (prelude-search "https://github.com/search?q=" "Search GitHub: "))
(defun prelude-indent-rigidly-and-copy-to-clipboard (begin end arg)
"Indent region between BEGIN and END by ARG columns and copy to clipboard."
@@ -416,6 +422,8 @@ Doesn't mess with special buffers."
"Press quickly to jump to a visible line."
"Press to navigate a project in Helm."
"Press to search in Google."
+ "Press to search in GitHub."
+ "Press to search in YouTube."
"Press to rename the current buffer and file it's visiting."
"Press to open a terminal in Emacs."
"Press to kill all the buffers, but the active one."
@@ -490,7 +498,7 @@ Doesn't mess with special buffers."
(error "No integer here"))
;; Skip backward over optional sign
(when (looking-back "[+-]")
- (backward-char 1))))
+ (backward-char 1))))
(put 'integer 'beginning-op 'thing-at-point-goto-beginning-of-integer)
(defun thing-at-point-bounds-of-integer-at-point ()
diff --git a/core/prelude-mode.el b/core/prelude-mode.el
index 6275f93..886b502 100644
--- a/core/prelude-mode.el
+++ b/core/prelude-mode.el
@@ -37,6 +37,7 @@
(let ((map (make-sparse-keymap)))
(define-key map (kbd "C-c o") 'prelude-open-with)
(define-key map (kbd "C-c g") 'prelude-google)
+ (define-key map (kbd "C-c G") 'prelude-github)
(define-key map (kbd "C-c y") 'prelude-youtube)
;; mimic popular IDEs binding, note that it doesn't work in a terminal session
(define-key map [(shift return)] 'prelude-smart-open-line)
@@ -118,7 +119,7 @@
["View URL" prelude-view-url]))
"Search Files (Grep)...")
- (easy-menu-add-item nil '("Tools") '("--") "Search Files (Grep)..."))
+ (easy-menu-add-item nil '("Tools") '("--") "Search Files (Grep)..."))
(defun prelude-mode-remove-menu ()
"Remove `prelude-mode' menu entry."