Add support for previous/next REs to directly filter links text - dotfiles - leot's dotfiles
(HTM) hg clone https://bitbucket.org/iamleot/dotfiles
(DIR) Log
(DIR) Files
(DIR) Refs
---
(DIR) changeset 9944b09997ec8dcde9c7419b3bdc2f73e44f07cd
(DIR) parent a580ea2df9dcb22c050563dbfe77c92e96146f3e
(HTM) Author: Leonardo Taccari <iamleot@gmail.com>
Date: Sun, 9 Jun 2019 14:42:38
Add support for previous/next REs to directly filter links text
Diffstat:
surf/script/default.js | 59 +++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 51 insertions(+), 8 deletions(-)
---
diff -r a580ea2df9dc -r 9944b09997ec surf/script/default.js
--- a/surf/script/default.js Sun Jun 09 13:49:20 2019 +0200
+++ b/surf/script/default.js Sun Jun 09 14:42:38 2019 +0200
@@ -21,6 +21,15 @@
* Add `p' and `n' accesskey-s (previous/next via `Mod1 + p'/`Mod1 + n')
*/
(function() {
+ has_prev = false;
+ has_next = false;
+
+ if (document.querySelector('*[accesskey="p"]')) {
+ has_prev = true;
+ }
+ if (document.querySelector('*[accesskey="n"]')) {
+ has_next = true;
+ }
previous_selectors = [
'a[rel="prev"]',
@@ -28,23 +37,57 @@
'a[aria-label="Previous page"]', // google.com
];
+ previous_res = [
+ /<</,
+ ];
+
next_selectors = [
'a[rel="next"]',
'a[aria-label="Pagina successiva"]', // google.it
'a[aria-label="Next page"]', // google.com
];
- for (p of previous_selectors) {
- if (e = document.querySelector(p)) {
- e.accessKey = "p";
- break;
+ next_res = [
+ />>/,
+ ];
+
+ if (!has_prev) {
+ for (p of previous_selectors) {
+ if (e = document.querySelector(p)) {
+ e.accessKey = "p";
+ has_prev = true;
+ break;
+ }
}
}
- for (n of next_selectors) {
- if (e = document.querySelector(n)) {
- e.accessKey = "n";
- break;
+ if (!has_next) {
+ for (n of next_selectors) {
+ if (e = document.querySelector(n)) {
+ e.accessKey = "n";
+ has_next = true;
+ break;
+ }
+ }
+ }
+
+ for (i = document.links.length - 1; !has_prev && i >= 0; i--) {
+ for (p of previous_res) {
+ if (document.links[i].text.match(p)) {
+ document.links[i].accessKey = "p";
+ has_prev = true;
+ break;
+ }
+ }
+ }
+
+ for (i = document.links.length - 1; !has_next && i >= 0; i--) {
+ for (n of next_res) {
+ if (document.links[i].text.match(n)) {
+ document.links[i].accessKey = "n";
+ has_next = true;
+ break;
+ }
}
}