diff options
| author | Teddy Wing | 2018-11-07 16:16:33 +0100 |
|---|---|---|
| committer | Teddy Wing | 2018-11-07 16:16:33 +0100 |
| commit | 1674cb5f1672d28e1279cc16aecffc598d4a4122 (patch) | |
| tree | 413a6f722c309b89c7cd53330b7ff8bc478a907b | |
| download | github-search-pronto-1674cb5f1672d28e1279cc16aecffc598d4a4122.tar.bz2 | |
Add github-search-pronto.user.js
User script that triggers a search within a repository immediately upon
pressing enter.
This used to be the normal functionality, but ever since GitHub added
the search drop-down to enable a choice of search scopes, they don't let
you press enter to search until the drop-down list has populated. That
typically takes a second or two, which means you have to press enter
again after a second in order to actually search for something. So
stupid.
Here we search right away unless the search drop-down is visible and has
been populated.
| -rw-r--r-- | github-search-pronto.user.js | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/github-search-pronto.user.js b/github-search-pronto.user.js new file mode 100644 index 0000000..cf71b1c --- /dev/null +++ b/github-search-pronto.user.js @@ -0,0 +1,61 @@ +// ==UserScript== +// @name GitHub Search Pronto +// @description Search immediately inside a repository without having to wait for the drop-down +// @namespace com.teddywing +// @match https://github.com/* +// ==/UserScript== + +// Copyright (c) 2018 Teddy Wing +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <https://www.gnu.org/licenses/>. + + +var search_field = document.querySelector('.js-site-search-field'); + +if (!search_field) { + return; +} + +search_field.addEventListener('keydown', function(e) { + var search_drop_down = document.querySelector('.js-jump-to-suggestions-results-container'); + var loading_spinner = search_drop_down.querySelector('[alt="Octocat Spinner Icon"]'); + + if (e.key === 'Enter' && + ( + !is_visible(search_drop_down) || + ( + is_visible(search_drop_down) && + is_visible(loading_spinner) + ) + ) + ) { + var query = search_field.value; + + // Get "https://github.com/owner/repo" + var repo_url = window.location.href.split('/').slice(0, 5).join('/') + + window.location.assign( + repo_url + + '/search?q=' + + query + + '&unscoped_q=' + + query + ); + } +}); + + +function is_visible(node) { + return node && node.offsetParent !== null +} |
