Commit graph

30 commits

Author SHA1 Message Date
jenkins-bot ea8cffe3f2 Merge "Fix performance bottleneck in mediawiki syntax highlighter" 2021-01-14 11:22:33 +00:00
jenkins-bot 68ab91b64d Merge "Fix minor code style issues in matchbrackets addon" 2021-01-14 10:50:06 +00:00
Thiemo Kreuz 88984d2965 Fix minor code style issues in matchbrackets addon
Less ambiguous variable names. Less duplication. The minor
issues have been introduced in T270317.

Bug: T270317
Change-Id: I366396a61b76e19293ce8d14c2f346b97498fe40
2021-01-14 11:13:24 +01:00
Thiemo Kreuz f1cf1a534c Fix performance bottleneck in mediawiki syntax highlighter
I continued profiling the matchbrackets addon for T270237 and run into
performance issues that turned out to be unrelated to the addon. The
flame graph highlighted a "match" function. Note this is not the
String.match() from JavaScript, but something in the CodeMirror lib:

StringStream.prototype.match = function (pattern) {
  var match = this.string.match(pattern);
  if (match && match.index > 0) {
    return null;
  }
  return match;
}

(Note: I simplified this code so we can focus on the bug.)

When the pattern is a regular expression, it's executed via
JavaScript's String.match(). The function then checks if there was a
match and if it's at the start of the string. If not, it's not a
match and doesn't return one.

In other words: Even if there is a match somewhere in the string, the
function acts as if there was no match.

When we change all patterns to be anchored via ^, they don't scan the
entire string any more but return much ealier when there is no match
at the start of the string. We are effectively replacing nested loops
(hidden in the patterns) with single calls.

This bug exists since 2014.

The disabled line in the matchbrackets addon is just dead code. I
don't remove it to document the fact that we disabled it.

Bug: T270237
Bug: T270317
Change-Id: Icbb1122e6a3b26c0606726ff405e108931d185be
2021-01-13 16:58:57 +01:00
Thiemo Kreuz b0f9c23790 Update all syntax highlighters to latest version
We forgot to update these as well when we updated the lib.

Bug: T258999
Change-Id: I4dba51d82758975e46b75739c02ef2aa6cab5386
2021-01-13 09:41:29 +01:00
Thiemo Kreuz 0bb63f22d5 Make bracket matching respect all limits
This patch also removes all remaining FIXMEs. This code is not
a bottleneck. There is nothing to do.

Bug: T270317
Change-Id: Ie034440c98d8064a22811a1b569237dddb7b7436
2021-01-08 13:29:39 +01:00
Thiemo Kreuz 111243bc19 Update matchbrackets addon to most recent version
We "forgot" to update this addon when we did the update in
I6f0f030 (T258999).

Bug: T258999
Bug: T270317
Change-Id: Iab29e9e36f34b76551ddac497e40dc76669ba7c7
2021-01-08 11:39:28 +01:00
Thiemo Kreuz e6ca95499a Add documentation for matchbrackets costomizations
Bug: T270317
Change-Id: Ifb09c9122e4002215dc47b6e4546adddb7608dbf
2021-01-08 11:33:22 +01: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
Thiemo Kreuz 4a3c2dcad5 Update CodeMirror to 5.58.3
I had to make some CSS selectors more specific, because the
library changed

 .CodeMirror pre

to

 .CodeMirror pre.CodeMirror-line,
 .CodeMirror pre.CodeMirror-line-like

This is only relevant for entire lines (implemented as <pre>
elements). Most of the custom CSS is for characters, not lines.

In my tests in the Wikitext editor as well as VisualEditor I
could not spot any difference between the old and new version.

Bug: T258999
Change-Id: I6f0f030f972838727f3ef220feb105264f122798
2020-12-07 20:20:49 +00:00
AronDemian d70bd9d1ae Unify monospace font stack. Avoid potential sizing bug caused by weird browser behavior with font-family: monospace;
Problem: browsers implicitly and unexpectedly set the font-size to something around 13px with `font-family: monospace;`, but not with `font-family: monospace,monospace;`.
See:  http://code.iamkate.com/html-and-css/fixing-browsers-broken-monospace-font-handling/

Bug: T176636
Change-Id: Ied24a0cde7db4a6092d2cd7a6207d0a361424c3f
Related: T245568
Related: T245476
2020-02-28 04:44:07 +00:00
Ed Sanders 9c59f7ede5 Remove unused mode files
We currently only provide modules for
* wikitext
* css
* javascript
* xml
* htmlmixed
* clike
* php

Change-Id: If47827f61043bd2c474ec160af56f651b3cf3af0
2018-02-28 12:24:30 +00:00
Ed Sanders 48e37ce2fc Remove themes, keymaps and addons
We don't support these

Change-Id: Ib237e5b885b8a7ac9fdba36efb1c666c8cbb2619
2018-02-28 12:24:13 +00:00
Ed Sanders 2614d071ad Update CodeMirror to 5.35.0
Change-Id: I4da7497600189b6c87c9fcb829f7876c98bf4929
2018-02-28 12:14:29 +00:00
Pavel Astakhov 249d757470 Update CodeMirror library to 5.30.0
Bug: T176685
Change-Id: I551b3b335be9b9ec05625482a14c32cc994f8df1
2017-09-26 09:28:20 +06:00
Pavel Astakhov 3ce3e5554b Change the sas.js file mode to 0644
Change-Id: I759d135386f98e9eb32ce6fef932f73b4c05fb20
2017-09-12 11:14:10 +06:00
Pavel Astakhov 0ea00f2b0e Update CodeMirror library version to 5.29.0
Bug: T174731
Change-Id: I048270eea67945d959559f68468a39976d777410
2017-09-05 09:39:06 +06:00
Brad Jorsch a676e88ced Remove execute mode from non-executable
Change-Id: I9b75cd46e6179bd9166c5f3f8ccb09b61313e663
2017-08-24 11:56:59 -04:00
Ed Sanders 75ca882e38 Update CodeMirror to 5.25.0
Change-Id: I47680ba98e1ab39360608aa7a923e7fee7db615e
2017-03-21 15:05:52 +00:00
Pavel Astakhov faf7246cd4 Update CodeMirror library to version 5.16.0
Change-Id: Iae9df045d0e897e03b3edcb935188731e019811f
2016-07-19 17:05:52 +06:00
Pavel Astakhov 7854e7c06b Update the CodeMirror library to 5.9 (v 3.4.0)
Change-Id: Ia36b0573809d632c0521477cea72268b5524efae
2015-12-14 11:28:57 +06:00
Paladox d51ef3cc2a Update the CodeMirror library to 5.8
Url:

- https://github.com/codemirror/CodeMirror/tree/5.8.0

Change-Id: I1634b34f47386dbb55951b7679bac3a197b17484
2015-11-22 19:15:54 +00:00
Pavel Astakhov a3aee2406a Update the CodeMirror library to 5.4 (v 3.1.5)
Change-Id: Ic15062a6d07087771a1773657fff01f176c2de12
2015-07-07 11:50:59 +06:00
Pavel Astakhov 533dc431b6 update CodeMirror library to version 5.0.0 (v 3.1.1)
Change-Id: Ifcd1bdcd45c7b6fbb10927d1c6821f8804527ef6
2015-03-16 17:35:50 +00:00
Pavel Astakhov ae450a5c3c refactor and extend usability (v 3.0.0)
* add on/off button to toolbar
* add highlighting table, hr ----, sign ~~~
* update codemirror lib to 4.7
* fix font size

Change-Id: Idd5775d6c80a18406aee7b8ab51691f26038764c
2014-10-23 12:09:10 +06:00
Pavel Astakhov 8f270c34a9 refactor css style, move it to own definition (v 2.1.0)
*add highlighting list and indenting
*add tags: <noinclude>, <includeonly>, <onlyinclude>
*modify highlighting template variable

Change-Id: If6ae7d127766c32bc7e3c10b226a74ec97a0848f
2014-09-09 20:45:04 +06:00
Pavel Astakhov fd51de0222 add addon active line and set size as textarea (v 1.7.1)
Change-Id: Iecbce4695e2a31447741d1d64dd8b575fd8c3865
2014-08-27 15:33:10 +06:00
Pavel Astakhov 025027e26d fix highlighting templates and parser functions recussive (v 1.4.0)
* increase font

Change-Id: Ife58eb1d27c7549517c954fb152f3eb37fa6decd
2014-08-25 11:03:59 +06:00
Pavel Astakhov 67a828cf3e fix highlighting space behind page name in Templates (v 1.0.1)
* fix code mirror options
* fix code mirror font
* fix code mirror border

Change-Id: I7b8063cd8c5e6450b9cea0f76ed27a8ffb9ae990
2014-08-21 11:54:15 +06:00
Pavel Astakhov c8bd7736f9 Initial commit (v 1.0.0)
* add the highlighting of templates and parser functions

Change-Id: I6f5a0aa701b1b4e58510bf17a25eb1a0e1b5f14a
2014-08-20 23:03:46 +06:00