summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qutebrowser/javascript/.eslintignore5
-rw-r--r--qutebrowser/javascript/.eslintrc.yaml7
-rw-r--r--qutebrowser/javascript/caret.js2
-rw-r--r--qutebrowser/javascript/eslint.config.js136
4 files changed, 144 insertions, 6 deletions
diff --git a/qutebrowser/javascript/.eslintignore b/qutebrowser/javascript/.eslintignore
deleted file mode 100644
index 65143f360..000000000
--- a/qutebrowser/javascript/.eslintignore
+++ /dev/null
@@ -1,5 +0,0 @@
-# Upstream Mozilla's code
-pac_utils.js
-# Actually a jinja template so eslint chokes on the {{}} syntax.
-greasemonkey_wrapper.js
-global_wrapper.js
diff --git a/qutebrowser/javascript/.eslintrc.yaml b/qutebrowser/javascript/.eslintrc.yaml
index 566304c27..d64c26951 100644
--- a/qutebrowser/javascript/.eslintrc.yaml
+++ b/qutebrowser/javascript/.eslintrc.yaml
@@ -17,6 +17,13 @@ env:
extends:
"eslint:all"
+#ignores:
+# # Upstream Mozilla's code
+# pac_utils.js
+# # Actually a jinja template so eslint chokes on the {{}} syntax.
+# greasemonkey_wrapper.js
+# global_wrapper.js
+
rules:
strict: ["error", "global"]
one-var: "off"
diff --git a/qutebrowser/javascript/caret.js b/qutebrowser/javascript/caret.js
index 4aeefcdb9..9b4249b53 100644
--- a/qutebrowser/javascript/caret.js
+++ b/qutebrowser/javascript/caret.js
@@ -1290,7 +1290,7 @@ window._qutebrowser.caret = (function() {
if (CaretBrowsing.isDebug) {
console.debug(`caret: ${text}`);
}
- }
+ };
CaretBrowsing.init = function() {
CaretBrowsing.isWindowFocused = document.hasFocus();
diff --git a/qutebrowser/javascript/eslint.config.js b/qutebrowser/javascript/eslint.config.js
new file mode 100644
index 000000000..49105013e
--- /dev/null
+++ b/qutebrowser/javascript/eslint.config.js
@@ -0,0 +1,136 @@
+// qutebrowser's way of using eslint is perhaps a bit untypical: We turn on *all*
+// the checks eslint has to offer, and then selectively disable/reconfigure the
+// ones which got in the way below.
+//
+// This makes eslint much stricter (which is good). However, it means you might
+// run into a case where you totally disagree with what it says, because some
+// check is not useful or desired for qutebrowser, but nobody did run into it
+// yet.
+//
+// In those cases, it's absolutely okay to modify this config as part of your PR.
+// See it as a way to fine-tune eslint rather than a rigid style guide.
+const js = require("@eslint/js"); // eslint-disable-line no-undef
+const globals = require("globals"); // eslint-disable-line no-undef
+module.exports = [ // eslint-disable-line no-undef
+ js.configs.all,
+ {
+ "languageOptions": {
+ globals: {
+ ...globals.browser,
+ },
+ },
+ "ignores": [
+ // Upstream Mozilla's code
+ "pac_utils.js",
+ // Actually a jinja template so eslint chokes on the {{}} syntax.
+ "greasemonkey_wrapper.js",
+ "global_wrapper.js",
+ ],
+ "rules": {
+ "strict": [
+ "error",
+ "global",
+ ],
+ "one-var": "off",
+ "padded-blocks": [
+ "error",
+ "never",
+ ],
+ "space-before-function-paren": [
+ "error",
+ "never",
+ ],
+ "no-underscore-dangle": "off",
+ "camelcase": "off",
+ "require-jsdoc": "off",
+ "func-style": [
+ "error",
+ "declaration",
+ ],
+ "init-declarations": "off",
+ "no-plusplus": "off",
+ "no-extra-parens": "off",
+ "id-length": [
+ "error",
+ {
+ "exceptions": [
+ "i",
+ "n",
+ "k",
+ "v",
+ "x",
+ "y",
+ ],
+ },
+ ],
+ "object-shorthand": "off",
+ "max-statements": [
+ "error",
+ {
+ "max": 40,
+ },
+ ],
+ "quotes": [
+ "error",
+ "double",
+ {
+ "avoidEscape": true,
+ },
+ ],
+ "object-property-newline": [
+ "error",
+ {
+ "allowMultiplePropertiesPerLine": true,
+ },
+ ],
+ "comma-dangle": [
+ "error",
+ "always-multiline",
+ ],
+ "no-magic-numbers": "off",
+ "no-undefined": "off",
+ "wrap-iife": [
+ "error",
+ "inside",
+ ],
+ "func-names": "off",
+ "sort-keys": "off",
+ "no-warning-comments": "off",
+ "max-len": [
+ "error",
+ {
+ "ignoreUrls": true,
+ "code": 88,
+ },
+ ],
+ "capitalized-comments": "off",
+ "prefer-destructuring": "off",
+ "line-comment-position": "off",
+ "no-inline-comments": "off",
+ "array-bracket-newline": "off",
+ "array-element-newline": "off",
+ "no-multi-spaces": [
+ "error",
+ {
+ "ignoreEOLComments": true,
+ },
+ ],
+ "function-paren-newline": "off",
+ "multiline-comment-style": "off",
+ "no-bitwise": "off",
+ "no-ternary": "off",
+ "max-lines": "off",
+ "multiline-ternary": [
+ "error",
+ "always-multiline",
+ ],
+ "max-lines-per-function": "off",
+ "require-unicode-regexp": "off",
+ "max-params": "off",
+ "prefer-named-capture-group": "off",
+ "function-call-argument-newline": "off",
+ "no-negated-condition": "off",
+ "no-console": "off",
+ },
+ },
+];