Commit graph

143 commits

Author SHA1 Message Date
MusikAnimal 46b7208d13 Convert applicable ResourceLoader modules to use packageFiles
Move WikiEditor-specific code to ext.CodeMirror.WikiEditor, leaivng only
CodeMirror-specific things in ext.CodeMirror, including the logUsage
method which was duplicated in the VE plugin and now refactored.

Add .env to .gitignore so that selenium tests can be ran more easily

This patch leaves the other non-mediawiki modes still using the
'scripts' system instead of 'packageFiles'. These are not used in
MediaWiki directly but by some extensions (i.e. PhpTags) and using
packageFiles will break that integration.

Bug: T272035
Change-Id: I3bafef196c1f713443d7b8e9cb7dc2891b379f5d
2023-08-24 11:55:13 -04:00
Sam Wilson 7d48f2d8bb Use editRecovery.loadEnd JS hook to add change handler
Add core's change handler for CodeMirror changes as well, to
save in-progress edit data.

Depends-On: I32c13c1eeec55dc442b0a00ede9cb74422b0307e
Bug: T342882
Change-Id: I352470752130c7b9b2dfc55a066cecf785d40067
2023-07-31 10:44:08 +08:00
WMDE-Fisch 6744545c61 Skip user setting for unnamed users
Bug: T329771
Change-Id: I0066c2411bf12fedb1e29cde8306b107c3ab95ba
2023-05-20 15:36:29 +03:00
samtar 5061cc1228
ext.CodeMirror.js: Keep at 100% parent width
Force the CodeMirror area to stay at 100% parent width during a
resize event.

Bug: T305939
Change-Id: I99f5d0b0955521f522a549b2cf1f2205cb0e48c0
2022-08-04 12:54:40 +01:00
WMDE-Fisch 574ceba9bf Remove $wgCodeMirrorColorblindColors feature flag
Bug: T307188
Change-Id: I7a8f2b02cad160df838ebfb167b63296123b4a08
2022-06-13 13:20:24 +02:00
Adam Wight 9f34c4d220 Remove $wgCodeMirrorEnableBracketMatching feature flag
Bug: T307188
Change-Id: Ibb21dea29c87d8fac898506c19f329273348c190
2022-06-13 10:34:41 +02:00
Adam Wight ba48e3c474 Merge accessibility-mindful colors into base styles
Bug: T307188
Change-Id: I32831cc546bc8fca2ee73e3d6742f87838791d1b
2022-06-10 16:20:43 +02:00
Adam Wight 396d50cd5d Remove $wgCodeMirrorAccessibilityColors feature flag
Get rid of the flag, without making any substantial changes to the
code.  A follow-up commit will merge the CSS into base rules.

Bug: T307188
Change-Id: I601df5047d0db3cfb9559538487d3d39bb6c7cf4
2022-06-10 16:18:42 +02:00
jenkins-bot 0418e65cad Merge "Add colorblind-friendly scheme" 2022-04-08 13:52:34 +00:00
WMDE-Fisch c3cda7edd7 Add colorblind-friendly scheme
Including an user options to enable/disable the scheme. Defaults
to false. Feature is only availible together with the new more
accessibile color scheme as the CSS depends on each other.

Set behind a new temporary feature flag.

Bug: T305027
Change-Id: I46d240a30eda5a1526ada1fe9b724f7b4594b426
2022-04-08 14:12:43 +02:00
Sam Wilson fa8296c312 Use new event handler from WikiEditor for Realtime Preview
Fixes the issue with the change handler not working.

Bug: T303767
Depends-On: Iee4c885f92dd9ec985a3f9fd92a2fafc00f2e9ff
Change-Id: Idb97a67f940eee69e09679196d0de71e76ef3672
2022-04-06 13:22:17 +08:00
ElijahPepe 2451c7f944 Reload CodeMirror to fix a caret issue
A common issue, reported in VPI as Possible Thursday weirdness, with
source editor users using syntax highlighting is that the caret can
often be misplaced as to where the user selects. This PR adds code
to reload CM when loaded to adjust for this behavior.
Moved to after CM has finished initialising. Tested working.
Add another instance of codeMirror.refresh().

Bug: T305333
Change-Id: I9a81ffd41a3ba1321b7b5744ba096583cbb1d96c
2022-04-05 22:37:31 +01:00
Sam Wilson 1310fbf645 Support WikiEditor's realtime-preview feature
Add support for enabling, resizing, and disabling the new
realtime-preview feature.

Bug: T293347
Bug: T303767
Change-Id: I8c8c25fe56be55a61f4b8d1d2ef8cf74483aa241
2022-03-24 12:02:03 +08:00
bhsd b9abcbc12e Trigger focus/blur event handlers attached to textarea
When CodeMirror is focused/blurred, the same event will triggered on its corresponding textarea.

Bug: T197632
Change-Id: Ib71b6774a60dd434bdc8a27b9eab433dcc1c65f0
2022-02-19 12:23:17 -08:00
Thiemo Kreuz 963e636f83 Restore focus also when switching syntax highlighting on
The same already happens when switching it off, see line #249.

I noticed there is still a (random?) chance the selection gets lost
when switching back and forth between syntax highlighting on and off.
This is not what this patch is about.

Bug: T298488
Change-Id: I541f96be9e6fb2f9032df4b86657d01f0eac5679
2022-01-03 18:00:26 +01:00
Thiemo Kreuz bab5c5232d Disable line numbering in all Android browser versions
This patch also minifies existing code. Note that [] is true in
JavaScript, unlike in PHP.

Bug: T285660
Change-Id: Ic80903ebd1364505fd4aaf7f53b53324a235fd79
2021-09-03 11:37:03 +00:00
jenkins-bot 79284952de Merge "Fire a hook when the CodeMirror editor is switched" 2021-07-13 04:39:52 +00:00
Inductiveload a57d7b7c1c Fire a hook when the CodeMirror editor is switched
This allows gadgets to react to the changing editor (for example
to rebind event handlers on the new active editor) without having
to use something like an MutationObserver.

Bug: T284282
Change-Id: I83f0a3c29b01031ae370b7d1207457586f0d25d6
2021-06-16 02:29:55 +01:00
Ed Sanders 3be6ae4b12 Move var declarations inline
Change-Id: I5a390c5621cefce1b396831654d54a74d0a63e9f
2021-06-15 15:50:09 +01:00
Adam Wight ed2f9944ea Enable line numbering only on configured namespaces
Introduces a new config variable `CodeMirrorLineNumberingNamespaces`
that can restrict line numbering to only appear for specified
namespaces.  Setting to null enables everywhere.

This takes some liberties with the `lib` module, turning it into a
container for shared functionality.  This can be pursued in later
work, by cleaning up duplicated code in this repo.

FIXME: failed to deduplicate the code for now.

Bug: T267911
Change-Id: Ida2b33eef38edc57d29756ec472c6f2c83bd7b11
2021-04-12 12:05:14 +02:00
Thiemo Kreuz 7365cc9a96 Enable line numbering
Line numbering will be unconditionally enabled.

Bug: T267911
Change-Id: I9eb07dd433e352ed5cea5dc978d469ee2ea6f347
2021-04-08 09:53:23 +02:00
Andrew Kostka aaf67a9c0b Update color scheme to meet accessibility standards
These changes to the color scheme are hidden behind a feature
flag for the time being.

Bug: T271895
Change-Id: I0a4b03e0f3bc8239f31edbbd5ae55661607b76f6
2021-03-05 16:39:14 +01:00
jenkins-bot 05241f1259 Merge "Add accesskey to CodeMirror input field" 2021-03-02 09:26:32 +00:00
Jon Harald Søby e325bc2e13 Add accesskey to CodeMirror input field
Add the same accesskey that the normal <textarea> uses.

Bug: T259347
Change-Id: I67c3b9d374203a5dabc29cc8c61fa76e2b64cb5a
2021-02-25 14:06:51 +01:00
jenkins-bot 92524135c0 Merge "Revert "Lower maxHighlightLineLength limit to 5000"" 2021-02-10 16:35:47 +00:00
Thiemo Kreuz (WMDE) 0268f68170 Revert "Lower maxHighlightLineLength limit to 5000"
This does not have an effect any more with all the other
optimizations in place.

This reverts commit 094f20902c.

Bug: T274369
Change-Id: I288039a35270093bd22b5a073e70f6b769088c13
2021-02-10 16:19:10 +00:00
Adam Wight 81bd2fe546 Clean-up: inline array merge
Change-Id: Ie976bf70f4117db09b53e6192f983930c7e6a458
2021-02-01 13:24:05 +01:00
Adam Wight 36212a7877 Log user edit count bucket
Bug: T269986
Change-Id: Iff3c983a59738312bc39bf65e2428526724fe139
2021-01-27 09:03:28 +00:00
Thiemo Kreuz 094f20902c Lower maxHighlightLineLength limit to 5000
While working on T270317, I realized the performance of the
matchbrackets addon is not as good as described in
T270237#6739993. The issue with my original benchmark was that
I did it with a single pair of brackets with thousands of
characters between. A paragraph with thousands of brackets
behaves much worse. So bad that I feels painful when moving
the cursor.

Lowering the limit to something in the middle (between the
original 1000 and my 10000) makes it behave much, much better
on my machine.

Bug: T270237
Bug: T270317
Change-Id: I31f850f4c7778d6b5ff1d0eb17fdaf0edf7ae019
2021-01-19 15:04:14 +01:00
Thiemo Kreuz 18a64328bb Disable non-matching highlighting via config flag
My upstream patch was accepted within 9 minutes:
https://github.com/codemirror/CodeMirror/pull/6565

Note: This backport includes another upstream commit that fixed
some typos.

Bug: T269096
Change-Id: Ib5b64214d7536bc952886f45290d537eab2f9bbb
2021-01-18 09:51:05 +00:00
Thiemo Kreuz a43acbeb6b Activate bracket matching for longer lines
The addon does have 3 settings:
- maxHighlightLineLength is for the current line where the
  cursor is. Bracket matching is simply not done when the
  current line is longer. The default is 1000, which is rather
  low.
- maxScanLineLength is for every other line that is scanned in
  the process. I don't understand why, but this limit is 10x
  higher.
- maxScanLines is the number of lines that can be scanned.

Simply raising the first to be 10000 as well fixes our issue.

Note that CodeMirror does have a limit of 10000 anyway. It's
called maxHighlightLength there. Lines that are longer get
syntax highlighting only for the first 10000 characters. The
rest of the line is black. Using the same limit in the addon
makes it's behavior consistent. Means: The user can see when
the syntax highlighting stops, and bracket matching stops
working the same time.

I benchmarked with both settings. It doesn't have a measurable
effect. Bracket matching is done in <1ms in both cases.

Bug: T270237
Change-Id: Ia56bf4c2fb023c9f117376242221d39f51196173
2021-01-14 11:28:02 +00:00
WMDE-Fisch de49f2c02a Enable bracket matching addon by defining the addons options
The addon does support some configuration options. These are passed
as properties of the `matchBrackets` CodeMirror option. Just passing
the boolean there hides that fact.

Bug: T270317
Bug: T270237
Change-Id: Iaa4b5ed8ef538e76cd1c96a09485e143112f1ae0
2021-01-12 11:55:22 +01:00
Ed Sanders b59f296849 Guard against WikiEditor being removed by the time the hook runs
Bug: T271457
Change-Id: I73d2934847361592bceec51108404bf45ed4a5d7
2021-01-07 21:06:25 +00:00
Ed Sanders 5bba5436a8 Use wikiEditor.toolbarReady hook instead of ready event
The hook avoids race conditions as it will run even if
CodeMirror loads after the toolbar.

Change-Id: Ida035fad473210add4a604b3c8d65d2d4edb49dc
2020-12-28 23:26:39 +00:00
Adam Wight d8f4982e79 Added bracket matching
* using CodeMirror addon matchBrackets
* highlights the matching bracket of a pair
* highlights brackets when cursor is inside a pair
* feature usable in source code editor

Bug: T261857
Change-Id: Ib01d9919a47bb29684b54501644b01936b57972a
2020-12-15 13:09:06 +00:00
Andrew Kostka 7d01567c4f Record usage statistics for syntax highlighting
Bug: T260138
Change-Id: Ic9b95d6331bf85704822a69483880faaaa578a0e
2020-11-25 15:18:01 +01:00
Ed Sanders 9f566d6046 Fix 'setSelection' in textSelection API
focus needs to come after setSelection

Change-Id: Ib073ddad445e05c4bc042b9c382a7d74369e29e1
2020-07-12 15:10:58 +00:00
Fomafix 6075e4cb83 Enable spellchecking on Firefox
The spellchecking was disabled for Firefox on non-Mac systems because
Firefox had a bug and inserts characters (like B) into the content when
enter an access key combination (like Shift+Alt+B).

Firefox 65 fixed the problem by changing the default for
dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content
from false to true.

The old behavior can activated in about:config by setting
dom.keyboardevent.keypress.dispatch_non_printable_keys_only_system_group_in_content = false

This change reverts 29f6b48eeb.

Bug: T177509
Change-Id: I23773b2ea2a154269a5b3064cd8d9e9132051c38
2020-02-29 22:54:43 +01:00
Derk-Jan Hartman 006d4ba9d8 Add comment to make usage of jquery.ui module discoverable
Change-Id: I79a54686024b22e2851bd396bb51101ca84626fa
2020-02-25 22:44:34 +00:00
Fomafix b17c8b7557 Move check for 'usebetatoolbar' from JS to PHP
This change avoids useless loading of the module 'ext.CodeMirror'.

Change-Id: I2637487b72c028d272748f2891239401412f77b5
2020-02-23 20:50:17 +00:00
jenkins-bot fc4d4b0c36 Merge "Do not load module 'ext.CodeMirror' when CodeEditor is active" 2019-03-20 21:31:03 +00:00
Fomafix f0757cb0dc Do not load module 'ext.CodeMirror' when CodeEditor is active
Change-Id: I8fd0de727f2ebb1bf9f23981438d6cafa962ad17
2019-03-20 21:01:35 +00:00
Derk-Jan Hartman 758523b65f Conditionally load CodeMirror lib
Also remove two unneeded dependencies

Bug: T209824
Change-Id: I5b528bde346780ca5ae5d615c4ca0d617a6cd615
2019-03-14 23:31:18 +00:00
Ed Sanders 37b49bfdc4 build: Update eslint-config-wikimedia to 0.11.0
Change-Id: I7ca5276791d9add0709387422016d7193e8d9945
2019-03-06 12:10:29 +00:00
Fomafix 9c04302f23 Use 'wikiEditor-toolbar-doneInitialSections' as trigger
Also refactor out single use functions and call enableCodeMirror
from within addCodeMirrorToWikiEditor.

Change-Id: I77d37ae401483e187fe0bc355d7173b57fbe454b
2019-03-06 12:09:28 +00:00
Fomafix 4181729151 Wait for DOM ready before querying DOM
This avoids a race condition on loading.

Change-Id: I31c01f9c2b2025b4a46d5afc6ada5044f750eff7
2019-02-25 21:55:31 +01:00
Ed Sanders 7604581cc1 Remove obsolete aliases from closures
Bug: T208951
Change-Id: I64c2966b7c41d6b2b1911e2fb52e4c7364bf7964
2018-11-12 13:19:41 +00:00
James D. Forrester 8ac2d11b1b Drop support for MediaWiki core's removed "2006 wikitext editor"
Change-Id: Ib8d104ddf104cfeeee1fc7a055293a03fe8e2d3d
2018-10-25 14:06:59 -07:00
Derk-Jan Hartman d5124e2920 Make use of new WikiEditor 2010 toggle tool
Bug: T198781
Depends-On: I8b7fd41571a48fa4f6560790d94bb966972e740f
Change-Id: Id275142c0d50ca6a133129eebeee8cfc5c1ca99a
2018-07-25 01:12:28 +02:00
Derk-Jan Hartman 4ebe54a588 Focus before setting the cursor/selection
Bug: T197263
Change-Id: If5efed656746e3e40fcda118e487cdcb00e0114a
2018-06-26 21:55:09 +00:00