Commit Graph

601 Commits

Author SHA1 Message Date
eight
2fd531e253 Rewrite linter system (#487)
* Add: implement new linter system

* Refactor: pull out editor worker

* Switch to new linter and worker

* Enable eslint cache

* Fix: undefined error

* Windows compatibility

* Fix: refresh linter if the editor.linter changes

* Add: stylelint

* Add: getStylelintRules, getCsslintRules

* Fix: logic to get correct linter

* WIP: linter-report

* Fix: toggle hidden state

* Add: matain the order of lint report for section editor

* Add: unhook event

* Add: gotoLintIssue

* Fix: shouldn't delete rule.init

* Add: linter-help-dialog

* Drop linterConfig

* Add: linter-config-dialog, cacheFn

* Add: use cacheFn

* Drop lint.js

* Add: refresh. Fix report order

* Fix: hide empty table

* Add: updateCount. Fix table caption

* Switch to new linter/worker

* Fix: remove unneeded comment

* Fix: cacheFn -> cacheFirstCall

* Fix: use cacheFirstCall

* Fix: cache metaIndex

* Fix: i < trs.length

* Fix: drop isEmpty

* Fix: expose some simple states to global

* Fix: return object code style

* Fix: use proxy to reflect API

* Fix: eslint-disable-line -> eslint-disable-next-line

* Fix: requestId -> id

* Fix: one-liner

* Fix: one-liner

* Fix: move dom event block to top

* Fix: pending -> pendingResponse

* Fix: onSuccess -> onUpdated

* Fix: optimize row removing when i === 0

* Fix: hook/unhook -> enableForEditor/disableForEditor

* Fix: linter.refresh -> linter.run

* Fix: some shadowing

* Fix: simplify getAnnotations

* Fix: cacheFirstCall -> memoize

* Fix: table.update -> table.updateCaption

* Fix: unneeded reassign

* Fix: callbacks -> listeners

* Fix: don't compose but extend

* Refactor: replace linter modules with linter-defaults and linter-engines

* Fix: implement linter fallbacks

* Fix: linter.onChange -> linter.onLintingUpdated

* Fix: cms -> tables

* Fix: parseMozFormat is not called correctly

* Move csslint-loader to background

* Fix: watch config changes

* Fix: switch to LINTER_DEFAULTS

* Fix: csslint-loader -> parserlib-loader
2018-10-01 09:03:17 -05:00
tophf
c49f4dd11e don't hook auxiliary CMs
fixes #491
2018-09-03 20:54:25 +03:00
tophf
681176ce31 use showHelp.close when it's defined
fixes #485
2018-08-29 15:39:18 +03:00
tophf
2ac9a9db29 fix headerOnScroll 2018-08-24 14:31:29 +03:00
tophf
c0c5f1dbcc avoid overwriting existing usercss on saving a new one 2018-08-18 23:17:20 +03:00
tophf
adc165723c actually run restoreWindowScrollPos in a microtask 2018-08-16 18:09:50 +03:00
tophf
92d6530c8f simplify listener registration
since the function reference is constant, only one listener will be registered
2018-08-07 20:11:11 +03:00
tophf
eff0a7030c display only style name in the editor tab title
"Edit Style" was redundant and made the title unreadable when many tabs were opened.
"Add Style" is still displayed for the new styles.
2018-08-07 19:59:16 +03:00
tophf
bfb35e77b8 strip more trailing spaces in a custom usercss template 2018-08-06 20:56:33 +03:00
tophf
2db52c9e2d code cosmetics 2018-08-06 15:11:27 +03:00
tophf
f6a90ad166 suppress stylelint warning for stylus-lang's @css block
fixes #459
2018-08-06 15:10:42 +03:00
tophf
5f623f2f0e fill an empty @name with the default placeholder
fixes #462
2018-08-06 13:35:33 +03:00
tophf
e27636b93d preserve linebreaks in live-preview error text
fixes #460
2018-08-06 13:13:15 +03:00
tophf
5da1e0fb9b set onbeforeunload only when dirty
https://developers.google.com/web/updates/2018/07/page-lifecycle-api#legacy-lifecycle-apis-to-avoid
2018-08-02 20:54:40 +03:00
tophf
d3c8812e51 listen on newly added section's CodeMirror too 2018-08-02 01:44:10 +03:00
tophf
9cebf91e28 don't call updatePreview twice for the same input event 2018-08-02 00:46:14 +03:00
tophf
68cc033942 trigger live preview also for changes in applies-to 2018-08-01 23:29:21 +03:00
tophf
0c58783a6c add buttons to restore, clone, move a section 2018-07-23 21:24:35 +03:00
tophf
0a3ffb0bc8 show an empty applies-to URL-prefix in manually added sections
because global sections are less frequently used.
2018-07-23 21:24:35 +03:00
tophf
47c4b8157a expose 'preserve_newlines' in beautifier; dehtmlize
fixes #435
2018-07-23 00:28:11 +03:00
tophf
7d1bf4119a show "close" button in beautifier dialog
fixes #436
2018-07-22 20:12:42 +03:00
tophf
4283cc53a7 use the global line wrapping option in moz-export popup 2018-07-22 20:08:13 +03:00
tophf
662b4f8e49 don't show "saved" note in linter config
* because we don't show it anywhere else
* disabling the save button is a sufficient indicator used by lots of apps
2018-07-22 19:58:40 +03:00
tophf
126d909ca7 use a typical OS order for #help-popup buttons
* horizontally centered in Windows
* right-aligned otherwise
2018-07-22 19:55:27 +03:00
tophf
87da06037f make showCodeMirrorPopup modal
closes #437
2018-07-22 19:37:49 +03:00
tophf
67f48d5e60 make a copy of the applies-to template
fixes #442
2018-07-22 16:36:50 +03:00
Rob Garrison
c61d34d053 Update libraries (#440) 2018-07-21 20:58:54 +03:00
tophf
6f64bd840c code cosmetics: strip trailing spaces 2018-07-17 11:24:13 +03:00
narcolepticinsomniac
70b8a1172f Responsive layout (#410) 2018-07-16 19:37:01 +03:00
tophf
e51c632db6 fixup 74ef2f6f: 'editors' is a const 2018-07-10 11:45:52 +03:00
tophf
26f673f30d move linter worker loaders to edit/ 2018-07-10 11:35:19 +03:00
tophf
796b2b132d FF execCommand bug workaround needs 'input' event dispatched
fixes #419
2018-07-06 12:37:35 +03:00
tophf
74ef2f6fcf editors isn't defined on some pages like install-usercss
fixes #411
2018-07-03 08:42:13 +03:00
tophf
3c13f13ae2 FF workaround for broken execCommand and getSelection
closes #407
2018-06-29 13:00:25 +03:00
tophf
79c93ce54a typo 2018-06-15 08:24:35 +03:00
tophf
468b2f6499 CodeMirror: recognize 'zoom' CSS property 2018-06-15 08:24:35 +03:00
tophf
2b268fc589 CSSLint/CodeMirror: background-position-x and -y
These have been used for a long time in the real world and will finally get standardized by the upcoming CSS Backgrounds and Borders Module L4.

fixes #397
2018-06-12 12:31:12 +03:00
tophf
44f3a79353 CSS Logical Properties and Values L1 - CodeMirror 2018-06-10 12:42:41 +03:00
tophf
f0c31f75b3 CSS Containment L1 (CR 2018-05-24)
https://www.w3.org/TR/css-contain-1/
2018-05-24 12:53:36 +03:00
tophf
0e81a4679d typo: FF doesn't have window.event 2018-05-17 01:33:18 +03:00
tophf
5c444b4b96 draw fold marks in CSS since some fonts may not have them 2018-05-06 13:11:19 +03:00
tophf
f5750c7ab6 properly start live-preview after first save 2018-05-04 22:27:14 +03:00
Frank Dana
d0115acdf2 Change target of CSSLint "full list of rules" link
The "See a full list of rules" link in the CSSLint settings popup currently points to https://github.com/CSSLint/csslint/wiki/Rules-by-ID which is... rather sparse.

Instead, link to https://github.com/CSSLint/csslint/wiki/Rules 

It contains all of the same rules / documentation-page links, but presents slightly more information to the user up front, without forcing them to click on everty rule for an explanation of what it is.
2018-05-04 14:23:04 +03:00
tophf
05dbcff7c3 insert spaces on <Tab> when editor.indentWithTabs is false 2018-05-01 23:13:53 +03:00
tophf
5ef347a4d9 LESS preprocessor
closes #373
2018-04-19 20:02:23 +03:00
tophf
0614aa2eee new editor option: selectByTokens
implements #361 except for toggling via Ctrl
2018-04-18 19:33:36 +03:00
tophf
5174e7481f stricter "var(" check and code cosmetics 2018-04-04 11:37:39 +03:00
tophf
1cc8ac7559 autocomplete for --css-variables inside var() 2018-04-03 21:39:09 +03:00
tophf
71b478fe98 use CM theme for applies-to buttons 2018-03-15 20:15:23 +03:00
tophf
dbba338229 report line:ch in live-preview errors for usercss 2018-03-11 16:47:27 +03:00
tophf
66704a78b3 actually use 'pre' font for code errors in messageBox.alert/confirm 2018-03-11 16:31:25 +03:00
tophf
32cd558dda parse a few nonstandard webkit CSS properties 2018-03-09 02:34:29 +03:00
tophf
f9789e327b show the new CM themes in the editor options 2018-03-03 23:36:29 +03:00
tophf
2c86f2f4b9 move commentSelection command to other editing commands 2018-03-03 23:36:29 +03:00
tophf
6e8ff5b9ef simplify toggleEditorFocus now that CM 5.35 handles Ctrl-Pause 2018-03-03 23:36:29 +03:00
tophf
77d44c233e preUpdateLinting hack isn't needed since CM 5.33 2018-03-03 23:36:28 +03:00
tophf
5acf815b79 report invalid selector in :not() as a warning
to prevent failures when updating usercss styles that have to override [currently] invalid :not() selectors used by the site

see #356
2018-03-03 17:28:29 +03:00
tophf
0ba26072f7 restore Chrome 49 compatibility: remove "u" flag in RegExp
since it wasn't used globally (e.g. vendor code) it made no real difference
2018-02-28 05:15:28 +03:00
tophf
4e4f0501d2 fixup: add the empty line correctly 2018-02-22 18:34:15 +03:00
tophf
4bb1a191cc replace the last @-moz-document if present in a usercss template
when creating a new style for the site via popup
see #352
2018-02-22 12:59:56 +03:00
tophf
c5ef92cf9c add the site section to a custom usercss template for new styles
fixes #352
2018-02-22 12:41:55 +03:00
tophf
e3d1c6588d prefill new style name with the domain/hostname
implements #344
2018-02-14 05:53:35 +03:00
tophf
7a479edc56 more consistent focus/scroll behavior of global search
* keep page scroll position on Esc/close
* focus the match on Enter
2018-02-02 09:04:25 +03:00
tophf
32f0f4bd7a preserve page scroll position after [de]beautification 2018-02-01 23:51:30 +03:00
tophf
02989edb05 eat unclosed comments 2018-01-30 18:59:28 +03:00
tophf
0f8bca03b8 fixup eaed0de4: don't enable livepreview for unsaved code 2018-01-15 19:16:48 +03:00
tophf
dc1cd890ee notify event subscribers when toggling the style via Alt-Enter 2018-01-14 17:40:09 +03:00
tophf
3c15521fc2 tweak autocomplete helper
* use the faster getStyleAtPos
* autocomplete !important on typing !
* don't autocomplete hex colors
2018-01-14 17:10:54 +03:00
tophf
eaed0de486 init autocomplete/blur/focus for usercss in a common hook 2018-01-14 15:57:29 +03:00
tophf
fb1ef71f25 don't save the style in toggleStyle; use data-hotkey-tooltip 2018-01-12 14:32:15 +03:00
tophf
9affcd13bc don't preview unsaved styles 2018-01-12 14:11:24 +03:00
tophf
989df35b05 live preview in editor
* refreshAllTabs was extracted
* ...and fixed to use each frame's url when getting the styles
2018-01-12 00:54:36 +03:00
tophf
022e588c97 allow errors in usercss when saving in editor and live-reloading 2018-01-07 16:36:30 +03:00
tophf
a6e2cf47ed don't update the tally when the dialog isn't shown 2018-01-07 12:52:31 +03:00
tophf
d2cba96e10 refactor CSSLint
* reduce linting delay
* parse mozformat in worker
* allow empty functions in 'filter:' property
  https://drafts.fxtf.org/filter-effects/#supported-filter-functions
* support comma-separated list in :lang()
* strip vendor prefix in isLiteral()
2018-01-07 12:31:23 +03:00
tophf
385dda9923 fixup 227dce01: new styles don't have usercssData 2018-01-06 09:50:48 +03:00
tophf
4a7c675d06 fix '.add-applies-to' click listener 2018-01-06 09:31:37 +03:00
tophf
227dce0177 don't disable Beautify (let the user decide); code cosmetics 2018-01-05 14:05:35 +03:00
tophf
bced23052c remove some unnecessary deepCopy calls 2018-01-05 14:05:35 +03:00
tophf
bf17c7de94 preserve section indentation in usercss template 2018-01-04 16:45:41 +03:00
tophf
3418ac9cb9 FF: support private/container tabs 2018-01-03 10:43:56 +03:00
tophf
27fe9fa9db search/replace in extra CodeMirror boxes e.g. lint config 2018-01-01 10:35:22 +03:00
tophf
b2100ea853 fixes for global search/replace
* Enter key in input fields:
  * [Find mode] closes the dialog and focuses the matched text
  * [Replace mode] performs a single replace action

* Undo button checks the new CM changeGeneration and disables itself
  if the changes were already undone

* doUndo focuses the visible undo button
2018-01-01 09:56:41 +03:00
tophf
a66c377d8a fix scrolling over linter issues in usercss mode 2017-12-28 07:01:43 +03:00
tophf
f2efff64fd FF weird bug workaround: delay initLint() by 100ms 2017-12-25 09:28:26 +03:00
tophf
5df76b04e2 disable #save button right after opening a style 2017-12-25 02:26:01 +03:00
tophf
306b21b75e show Ctrl-Pause hotkey in keymap info using a dummy command 2017-12-24 12:28:33 +03:00
tophf
57806bed45 don't set sessionStorage.justEditedStyleId to null 2017-12-24 02:37:26 +03:00
tophf
487bc77baa actually replace 'usercssTemplate' 2017-12-24 01:50:53 +03:00
tophf
9279390e8c handle double-click between number and % 2017-12-23 09:51:28 +03:00
tophf
8c96165fb4 refactor and improve selectTokenOnDoubleclick logic 2017-12-23 05:39:06 +03:00
tophf
a249167539 remove the no longer used defocusEditor command 2017-12-22 18:35:46 +03:00
tophf
d6c595d94e detect double-clicked token boundaries better 2017-12-22 16:55:56 +03:00
tophf
068f23b029 fixup: include -+, exclude whitespace at line start 2017-12-22 16:29:52 +03:00
tophf
bf6b4eda83 select entire CSS token on double click
* .class-name
* property-name
* #some-id
* #123
* -webkit-any
* !important
* 12.5
2017-12-22 16:23:20 +03:00
tophf
d0380f76c3 rewrite colorview to use CodeMirror::TextMarker
* solves all problems with glitching on selection etc.
* perceived performance is same due to lazy-processing
* colors unsupported in current browser are displayed internally as RGB
* the color text is highlighted in the editor when popup is invoked
2017-12-22 11:22:35 +03:00
tophf
2dfaa22c35 Ctrl-Pause defocuses/focuses the editor 2017-12-22 11:22:02 +03:00
tophf
7d8507743d add the missing CSS colors to codemirror parser 2017-12-20 00:42:51 +03:00
tophf
e50ff316ba toggle narrow width mode tooltips via html+css; code cosmetics 2017-12-19 02:48:47 +03:00
tophf
1348eeb4e3 code cosmetics 2017-12-18 16:48:33 +03:00
tophf
4ecb6e7bc2 optimistically show 1 in tally only for a code match 2017-12-18 11:28:11 +03:00
tophf
31fd551264 trivial speed-ups for the single editor case 2017-12-18 10:27:50 +03:00
tophf
d10e83d15c editor: rewrite global search/replace 2017-12-18 10:27:50 +03:00
tophf
fd047f8323 move getRealColors to colorpicker and reuse it 2017-12-18 10:27:50 +03:00
tophf
97e486e139 code cosmetics: silence a warning in edit.css 2017-12-18 10:27:50 +03:00
tophf
db2c4cd6fc use standard font size in keymap info dialog 2017-12-18 10:27:50 +03:00
tophf
1f45618954 group similar items in keymap option selector 2017-12-18 10:27:50 +03:00
tophf
70d935d1a0 Ctrl-R to invoke replace in pcDefault/sublime keymaps 2017-12-18 10:27:50 +03:00
tophf
b78110aa1c .CodeMirror-dialog: shorten yellow highlight bright phase 2017-12-18 10:27:50 +03:00
tophf
be20b5a8b4 match-highlighter: always use originalToken 2017-12-18 10:27:50 +03:00
tophf
8119dd4f62 match-highlighter: skip exact tokens highlighted by search 2017-12-18 10:27:50 +03:00
tophf
001db9a19f make editor fully clean on saving 2017-12-18 10:27:50 +03:00
tophf
9e11435923 make editor permanently dirty when a section is deleted 2017-12-18 10:27:50 +03:00
tophf
748b9afdb4 remember last used search text in editor 2017-12-14 11:35:32 +03:00
tophf
cc5a254e01 make multi-section search instantaneous 2017-12-14 11:20:22 +03:00
tophf
49a995afae fixup 1c68ac1a: init the find hook after the original one 2017-12-14 09:27:46 +03:00
tophf
6ee952f3d3 more things made focusable
* mozilla-format (i) icon
* showHelp() restores original focus
* showHelp's nested confirmation is debounced to enable focusing Yes/No
* RegExp tester tab URLs are focusable now
2017-12-13 07:38:36 +03:00
narcolepticinsomniac
a6c10fe49d
Adjust margins
Removed some redundant fixes. Remaining tweaks were mostly info icons. I also applied a hacky margin for checkbox/label options and `.aligned` select options on edit page. They were too close IMO.
2017-12-12 22:09:51 -05:00
tophf
fefe82fd54 remove what-input, use own implementation, rebase on master 2017-12-13 03:27:10 +03:00
Rob Garrison
2cdd264780 fixups
Manage: Disable tabindex in nested buttons
Manage: Fix homepage link alignment
Manage: Make entry actions keyboard navigatable
Manage: Add search help accessibility
Msgbox: Save and restore focus
Manage: Fix delete confirmation cancel
Manage: Make history button accessible
Manage: Make favicons dropdown accessible
Manage: Prevent focus on hidden textarea
Msgbox: Stop tabbing outside of msgbox
Usercss: Make nondefault reset accessible
Usercss: Make colorpicker accessible
Edit: Disable tabindex in nested buttons
Edit: Make info and config icons accessible
Options: Cleanup HTML
Options: Make advanced toggle accessible
Edit: Fix issues popup
Edit: Remove link underlines from icons
2017-12-12 21:40:31 +03:00
narcolepticinsomniac
e2842f69c3 Hide focus outlines without crippling a11y, plus active state change for buttons 2017-12-12 21:39:55 +03:00
tophf
3a82a66954 open editor a bit faster, fixup <select> bug and widget style 2017-12-11 09:12:56 +03:00
tophf
fb29638d00 defocus codemirror on Esc 2017-12-11 08:32:27 +03:00
tophf
60a5fb96be don't steal focus from the find input on page open 2017-12-11 08:32:11 +03:00
tophf
8679e55206 unregister listeners on closing showCodeMirrorPopup 2017-12-10 11:24:52 +03:00
tophf
db8c3585dd off-by-one in showKeyMapHelp: text after <mark> was lost 2017-12-09 20:43:47 +03:00
tophf
f11235aaf9 Revert 1e1ff736 "simplify theme preloader" 2017-12-09 19:05:44 +03:00
tophf
443e3a3c7c second lockPageUI runs after there's no codebox anymore 2017-12-09 19:05:00 +03:00
tophf
ab98d46baa show import errors in messageBox 2017-12-09 19:04:19 +03:00
tophf
5f1f9c4d86 unregister CM on closing showCodeMirrorPopup 2017-12-09 18:23:18 +03:00
tophf
5faff66fab fix cross-section cursor navigation via keyboard 2017-12-08 11:42:33 +03:00
tophf
1c68ac1a3a initialize editor page fully in First Meaningful Paint frame
* previously it wasn't the case when colorpicker option was enabled
* the cost of always loading colorview is ~1ms for >200ms here
2017-12-08 06:20:56 +03:00
narcolepticinsomniac
ce47e69b8a Custom UI elements (#291) 2017-12-08 06:18:47 +03:00
tophf
99cce55a8e ensure long words break before breaking the layout
supersedes 40075a0d
2017-12-07 23:21:27 +03:00
tophf
6a838e9d5e make sure all pre-create hooks finished 2017-12-07 20:26:41 +03:00
tophf
7a07ee9fd9 unbreak narrow editor layout 2017-12-07 05:31:42 +03:00
tophf
9c8e835a80 relay scrolling over #header to usercss code section 2017-12-07 04:36:46 +03:00
tophf
d4ffa04bb6 raise applies-to widget above .CodeMirror-activeline 2017-12-07 04:00:26 +03:00
tophf
ebef35c28c drop linter name from "see all rules" and make it a link 2017-12-07 01:21:05 +03:00
tophf
d998fb235a center editor config icons 2017-12-07 01:20:04 +03:00
tophf
8f9705c165 recognize USO vars ending with -rgb 2017-12-06 06:34:02 +03:00
tophf
44ce51e54f dim regexp-tester note and avoid extending the report width 2017-12-05 22:12:04 +03:00
tophf
61003b378c usercss editor: show all section regexps in tester 2017-12-05 21:52:24 +03:00
tophf
963930ea1d usercss editor: restore "Add" and "Regexp test", convert \ in regexps 2017-12-05 21:32:28 +03:00
tophf
bd0f460c56 usercss editor: use real theme color for inputs in widgets 2017-12-05 21:01:32 +03:00
tophf
edfca7bfed match-highlighter-helper: do nothing when disabled 2017-12-05 07:40:28 +03:00
tophf
3e34c77625 clear previous token/selection highlight from scrollbar 2017-12-05 05:40:33 +03:00
tophf
8e992299c6 clear previous search highlight from scrollbar in all sections 2017-12-05 05:40:27 +03:00
tophf
cb7f1de348 use hyphens when breaking words (works only in FF though) 2017-12-05 05:02:28 +03:00
tophf
40075a0d39 forcefully break long labels in aligned options 2017-12-05 04:39:29 +03:00