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."