Commit graph

137 commits

Author SHA1 Message Date
Ed Sanders 8d645a385c De-emphasise line numbers
Use the darker text color for hovered/selected lines.

Bug: T271956
Change-Id: Icc6dce48a2e5720807309a47f84d8c2a7552a4f6
2021-01-13 16:55:02 +00:00
Umherirrender ecbc374f7d build: Run stylelint also for less files
no-descending-specificity:
Expected selector ".mw-highlight.mw-content-ltr .linenos" to come before
selector ".mw-highlight a:hover .linenos"

Change-Id: Ib8bd3dcc83058c6935b6b6c472554e3c1fa01eda
2021-01-10 13:40:20 +01:00
Ed Sanders 583e3b3db8 Add support for line anchors on code pages
Bug: T29531
Change-Id: Ic09086c19d37bdff8bb7e68bbb0f676ef87896fe
2021-01-03 00:19:13 +00:00
Ed Sanders ef196f31ff Fix positioning of line numbers in VE
Change-Id: I349e80d8ad96e240ecb7afcb43dafdd72a76a308
2021-01-03 00:19:13 +00:00
Ed Sanders 0aec99f386 Extend highlight into line number gutter
Change-Id: I8947dc11dc671c44db084287ff1b3fe497eaa25b
2021-01-01 19:55:06 +00:00
Ed Sanders d3b4227ed4 Fix selector specificty for Minerva
Bug: T270989
Change-Id: I55d6735002247b228b7c2a7406d684496b0b7f00
2021-01-01 16:42:55 +00:00
Ed Sanders 98c644a639 Improve appearance of line numbers
* Render a solid gutter that can take 3-4 digit line numbers
* Position line numbers absolutely in the gutter
* Add padding to code so that it doesn't wrap into the gutter

Change-Id: I7abb87452ad61808dad32b41c1d2d86b8ababb28
2020-12-30 21:35:04 +00:00
Ed Sanders f2ef11144a Display line numbers as generated CSS content
This makes them unselectable in more browsers as the
user-select fix isn't supported everywhere (e.g. Safari).

Bug: T32773
Change-Id: I274632a1055e1f85679fbb29c81629104cc8b222
2020-12-30 19:43:03 +00:00
Ed Sanders 6e558b37db Add small gap between line numbers and code
Change-Id: Ie65128872f318a42677e52420338684ad8d814f8
2020-12-30 19:43:03 +00:00
Ed Sanders 9c0e82878e Fix classname lineno->linenos
Bug: T270296
Change-Id: Ia11c2f13161bfd5b8c1c7e898416373202736c76
2020-12-30 19:43:00 +00:00
Ed Sanders 62cd4384ba Convert pygments.wrapper.css to LESS
Change-Id: I3b221a146528cfc328666da40f99f3132d0ac700
2020-12-30 15:31:33 +00:00
Ori Livneh d2e9809554 Update pygments to 2.7.2
Changes:
  <https://github.com/pygments/pygments/blob/2.7.2/CHANGES#L15-L158>

The 2.7.2 release contains fixes to existing lexers, as well as the
following new lexers:

  arrow, bare, devicetree, dmesg, dts, execline, fstar, gd, gdscript,
  ipython, ipython2, ipython3, ipythonconsole, kmsg, llvm-mir,
  llvm-mir-body, miniscript, mosel, ms, peg, pointless, promql, psysh,
  raku, reason, reasonml, ride, sieve, singularity, tid, tnt, usd, usda,
  webidl, and yang

To verify the integrity of the pygmentize binary, you can run
'create_pygmentize_bundle' and verify that the same pygmentize file is
created.

Change-Id: I0be3c1c204237b4a8873063e282be7ab8655be9d
2020-11-23 22:16:20 +00:00
Derk-Jan Hartman 0c4e7b21ac Syntaxhighlight: avoid double background
Bug: T126010
Bug: T237190
Change-Id: Ia7adb168aa5fbd006a524e91bcb85cd6fbe5a1da
2020-02-09 20:18:50 +01:00
Ed Sanders c09c3ed190 Use language as node description
No point using body as that is already visible.

Change-Id: I3425ae4712ccc820ba736ee605524abbc35aecc4
2019-07-31 16:41:15 +01:00
Ed Sanders 6f1c7c88e5 VE: Add read-only support
Change-Id: Ib39d6247385affed7ef46316903db97795407f32
2019-04-16 12:13:18 +01:00
Ed Sanders 8d1c397b63 Update eslint-config-wikimedia to 0.9.0
Change-Id: Ifded26af687dd409b01554df68e83c32a6844317
2018-11-27 21:59:16 +00:00
Ed Sanders c546bf5348 Replace jQuery.map with Array.map
Change-Id: I4bc7e347fe12038bdcadd62a023b6e0041d105c0
2018-10-31 12:51:24 +00:00
Ed Sanders b485d4c6fa Remove unused window.static.icon
Change-Id: I0d79af60052554a5a6c3f79139688d14e5351ab4
2018-10-31 12:51:02 +00:00
Ed Sanders e25603a1b6 Follow-up I3daca6fb: Fix exception thrown when inserting new code block
Change-Id: Ie5f93ace8a81c5053dbadb99dd447b37d2d07316
2018-10-31 12:45:50 +00:00
Bjornskjald ad372167bc Make VE language checking case-insensitive
Bug: T125231
Change-Id: I3daca6fbfce1c2fe4bd901b8912089aa820fb022
2018-10-24 18:01:46 +00:00
Thalia dbd6afcfab Update syntax highlight dialog actions consistently
Require that the node is modified and the language input is
valid before enabling the "done" action. Otherwise disable it.

Bug: T206481
Change-Id: Ie9d2907358ea585ba72628887c46af69f942772f
2018-10-09 12:19:38 +01:00
Thalia 118dcdb405 Separate node classes into individual files
Bug: T205231
Change-Id: Id175f839f0ac8714c44407c52145d4140cd8e343
2018-09-24 18:48:22 +01:00
Ed Sanders af1a91ade9 Use OOUI 'markup' icon instead of VE's deprecated 'alienextension'
Change-Id: Iad1882c20c17792c1339cf9922b9c4c43bf6122b
2018-03-20 19:00:41 +00:00
Ed Sanders b5eb22bf04 Document monospace hack
Change-Id: Ia27dccdb9dc2de6ca66e08c54c62eb91302a381c
2018-01-11 14:45:39 +01:00
Eddie Greiner-Petter 3abd668325 Add new (unprefixed) CSS modifier user-select
The CSS already has this modifier prefixed with -webkit-, -ms- and
-moz-, some browsers now support this without any prefix (according to
caniuse.com: Chrome 54+, Opera 41+).

Change-Id: Icd67250c26bec61be0fb101f1db077ee13ccf6b7
2017-11-07 19:36:32 +01:00
David Lynch 17c5301995 ce.MWSyntaxHighlightNode: Always generate node contents
Don't bother checking supported languages before generating the node contents.
We always want the preview, as that's what will display on the rendered page
even if the language is invalid.

Bug: T164120
Change-Id: I8344449bbf9c9cce131d745ea5f4e54b96fe57b1
2017-07-17 11:37:05 -05:00
Ed Sanders 7239e4439c Remove redundant multiline option
MWAceEditorWidget is now multiline by inheritance

Bug: T170275
Change-Id: Ie9d8f200b95497bbe91396ea92e29b0d317f010a
2017-07-12 16:28:34 +01:00
Bartosz Dziewoński 8a186b5822 ve.ui.MWSyntaxHighlightWindow: Set $overlay for the ComboBoxInputWidget
* Allows the dropdown menu to extend outside of the dialog.
* Avoid z-index conflicts with Ace scrollbars (T170027).

Bug: T170027
Change-Id: I52d2d06b56391f30be07c71a86d71d9ab50f0a8c
2017-07-11 00:15:38 +02:00
Ed Sanders 28b480ca0a Pass dataElement type to parent's toDataElement
Ensures the rendering is cached with the correct hash.

Bug: T151130
Depends-On: I80e2f2587cff8e9d9fe6ded5d8581263268deaa8
Change-Id: I64466cc342f7ab7f9d4539f935688d167853a662
2017-05-19 16:06:44 +02:00
Ed Sanders f53d8c2e6e VE: Support editing start line parameter
Change-Id: I869ac413f4d7581026353e2d54f9d22c6b6290f5
2017-05-15 09:49:42 +01:00
Derk-Jan Hartman 9638ee20c3 Avoid background when the content is narrow
All our highlight content is inside a <pre> block. When this block is
more narrow that the page (due to being pushed aside by floating
context for instance), then the background of this parent element will
extend beyond the contents.

An alternative could be setting overflow:hidden; and then setting
margin:0 on the included <pre> element (which has UA default margins)

Bug: T126010
Change-Id: Id3c9544ea8fa379c7c640afa692d6184ad9c550f
2017-04-27 18:38:55 +02:00
Kunal Mehta db681d158b Update pygments to 2.2
Notable changes:

* Added new token types and lexing for magic methods and variables in
  Python and PHP.
* Added a new token type for heredoc (and similar) string delimiters and
  lexing for them in C++, Perl, PHP, Postgresql and Ruby lexers.
* Improved the CSS lexer.
* Added Varnish config lexer

Full changelog is found at:
<bc45808f83/CHANGES>

Bug: T156573
Change-Id: I4dc1782f19881ba1294308e1cdea1b2e063f438a
2017-04-27 15:10:16 +02:00
Ed Sanders d150ddea1c build: Replace jshint/jscs with eslint
Change-Id: I503a57bed2ee6bb648697d6245af0b0286b5f3ec
2016-11-19 13:56:05 +00:00
Ed Sanders 37711ca15c VE: Fix combobox API and other issues
* Combobox is now an input widget so doesn't need .input
* Replace isValid with getValidity.
* Remove 'Show line numbers' from inline mode, as it has
  no effect.
* Remove no-longer required z-index hack.

Bug: T150555
Change-Id: I3c4ac3cb6b174348cc3582469a86fb1a23ca7c51
2016-11-15 17:22:54 +00:00
James D. Forrester cfbc206cb2 MWSyntaxHighlightWindow: It's ComboBoxInputWidget now
Change-Id: Id18b096103c82eea996c27be5b33b05615e74757
2016-11-09 11:39:12 -08:00
Derk-Jan Hartman 50075eaa66 Convert SyntaxHighlight names to Ace names
Provide a translation from Syntaxhighlight compatible Pygments and
GeSHi language names to CodeEditor compatible Ace lexer names

Now when you select php4, the CodeEditor will use the Ace lexer php,
instead of falling back to text mode.

Bug: T148515
Change-Id: Ibc209f97318614f764457726f8d55f4e15276d79
2016-10-31 14:13:36 +01:00
jenkins-bot 65de308fdc Merge "VE: Ensure ext.pygments module gets loaded when a user adds a syntax highlight node" 2016-09-20 22:53:50 +00:00
Alex Monk 37ff7c6709 VE: Ensure ext.pygments module gets loaded when a user adds a syntax highlight node
Otherwise it won't get styled unless VE was loaded on a read page with one existing.

Bug: T60388
Change-Id: I32c02eda1e7dca077340c2bf3c15aadad7e3b61a
2016-09-20 22:24:40 +00:00
David Lynch 87736b516e Enable live autocomplete
Bug: T138458
Change-Id: I8440957ebc04267807c55aa4b8b347ede1240021
2016-09-19 11:26:31 -05:00
Chad Horohoe 3a017611da Add missing LICENSE and AUTHORS files
Bug: T138157
Change-Id: I9b1430c983f0ca6fea0bb0354796cffcff0030bb
2016-06-27 11:43:24 -07:00
Ed Sanders d679469840 Introduce stylelint
Change-Id: Iea4d20abb8aa9d656639c8e128df0e963291cace
2016-05-19 17:44:00 +01:00
jenkins-bot 09577225fb Merge "Prevent selecting line numbers in syntaxhighlight" 2016-04-12 16:10:27 +00:00
jenkins-bot 7bb06997dc Merge "VE: Preserve context when calling parent static method" 2016-04-12 15:09:27 +00:00
Ed Sanders f285f9e8c5 VE: Rename parent tool
InspectorTool is a deprecated alias.

Change-Id: If96a623cf260b01dad53e888ff111728b529ceec
2016-04-12 15:05:03 +01:00
Derk-Jan Hartman ccce9fdf53 Prevent selecting line numbers in syntaxhighlight
This works most of the time in modern browsers.

Bug: T131227
Change-Id: Iaad1568f55556c8dd0f465b555ce868498d71828
2016-04-11 14:25:40 +02:00
Ed Sanders 635ef9c4c0 VE: Preserve context when calling parent static method
Change-Id: I32e9c13d549f8f13ca50cf8d244f0dfbc3f3bb8d
2016-04-01 12:59:32 +03:00
Ed Sanders fbdf65a344 VE: Fix primary command on SH nodes
This fixes the double-click/press-enter to edit functionality.

Change-Id: I275c505d8a3abb7d7e3686ffacf52e54235241e7
2016-02-07 23:31:16 +00:00
Ori Livneh 5d99d54626 Update pygments bundle to 2.1
Changelog:
https://bitbucket.org/birkenfeld/pygments-main/raw/7614bf7/CHANGES

Lots of new lexers: Emacs Lisp, Arduino, Modula-2 with multi-dialect support,
Fortran fixed format, Archetype Definition language, Terraform, Jcl,
Easytrieve, ParaSail, Boogie, Turtle, Fish Shell, Roboconf, Test Anything
Protocol, Shen, Component Pascal, SuperCollider, Shell consoles (Tcsh,
PowerShell, MSDOS), Elm and J, Crmsh, Praat, CSound, Ezhil, Thrift, QVT
Operational, Hexdump, and CAmkES Configuration.

Bug: T125581
Change-Id: Ie881af3d1dff23f08ccc9cbcf5f94a084fa561e1
2016-02-02 15:17:25 -08:00
Florian 3203eaf554 Fix inheritance of ve.ui.MWSyntaxHighlightDialogTool
From the description of the commit message[1] for WindowTool (which replaces
DialogTool) and FragmentWindowTool, the
ve.ui.MWSyntaxHighlightDialogTool should be a FragmentWindowTool,
and not a WindowTool/DialogTool.

In fact, the bug is caused by the missing isCompatibleWith method
in WindowTool.

[1] I3a0e761f0d6e942d503ec

Follow up: I676af9c50b09ef007926240eb2327d1a0fdd80f5

Bug: T121596
Change-Id: I0fa440d845c1dea34b623de0a36fb57cebf60f78
2015-12-19 01:27:14 +00:00
jenkins-bot 6267ec8450 Merge "VE: Register sequence with CommandHelp" 2015-11-05 15:36:41 +00:00
Ed Sanders f24eb8bfba VE: Register sequence with CommandHelp
Depends on I65e2bfc2 in VE-MW

Change-Id: I6054caa97c4f7e5fcd632912534deac977af6016
2015-11-05 10:14:14 +00:00
Ed Sanders 8a39d4f9dc VE: Clear Ace's undo manager after setting initial value
Depends on Ia331acc41 in ve-mw.

Change-Id: Idf8cd4983d7ce8cd570f5672521b04a988bbc324
2015-10-30 16:27:43 +00:00
Ed Sanders b73e6ab425 Follow-up Ib709ffd72: Add vendor prefixes
As per http://caniuse.com/#feat=css3-tabsize

Bug: T115284
Change-Id: I1a9984f37fa943b9fa4ffa403e4ba37986fa9986
2015-10-28 10:49:02 +00:00
jenkins-bot cfdacaf12a Merge "VE: Add '<syntax' and '<source' sequences" 2015-10-22 15:47:16 +00:00
jenkins-bot f53f47b8b1 Merge "Use Ace editor widget for code input" 2015-10-22 15:47:13 +00:00
jenkins-bot 89c96e67a6 Merge "Use dialog for editing block level syntax highlights" 2015-10-22 15:47:10 +00:00
jenkins-bot efe8a78991 Merge "VE: Remove unnecessary validation check" 2015-10-22 15:39:36 +00:00
jenkins-bot 465788c2de Merge "VE: Focus, but don't open, language input on open" 2015-10-22 15:39:25 +00:00
jenkins-bot f7dd0d5536 Merge "VE: Update renamed CSS class to restore fixed width font" 2015-10-22 15:39:08 +00:00
Ed Sanders e127b3162b VE: Add '<syntax' and '<source' sequences
Change-Id: Ie087fd665f527ea13254576ee07ebd029a1803ea
2015-10-22 11:56:48 +01:00
Ed Sanders 826c2cba40 Use Ace editor widget for code input
Depends on Ie483f6eba2 in ve-mw.

Bug: T49742
Change-Id: Ifaff6a5345fef92aba57b4fc00181f5b32cf7365
2015-10-21 17:32:15 +01:00
Ed Sanders 3a42016be0 Set tab size to 4
Bug: T115284
Change-Id: Ib709ffd72bad20db6282a4f32175d8062f4d2e25
2015-10-20 15:26:25 +01:00
Ed Sanders 0f10206cf2 Use dialog for editing block level syntax highlights
Maintain the inspector for inline snippets (which are editable
but still not creatable).

Bug: T112617
Bug: T57934
Change-Id: I76e36590363d36c0d3db4ec28ce81c4860d9b467
2015-10-20 15:16:11 +01:00
Ed Sanders 10b6dee5a2 VE: Remove unnecessary validation check
Change-Id: I7cc68eaead398ed97baf620142386f8e0bab4fb9
2015-10-20 15:16:11 +01:00
Ed Sanders 30a98dcbcd VE: Focus, but don't open, language input on open
Bug: T112798
Bug: T114202
Change-Id: Id70e8baea3687d5cd57ff3f45b5f332098451b7d
2015-10-20 15:16:05 +01:00
Ed Sanders 115fc92bfc VE: Update renamed CSS class to restore fixed width font
Change-Id: I029cfdfc5eabb8358b7c3b0274f4e759134a3af5
2015-10-19 13:51:03 +02:00
Ed Sanders c0482fe738 build: Update JSCS from 1.8.0 to 2.1.0 and make pass
Change-Id: I3b26c3cba814dcc8691f9f1ac04eb7dcc996f185
2015-09-18 16:01:40 +00:00
Ed Sanders 359c060eb7 Rename modules/VisualEditor to modules/ve-syntaxhighlight
Per new naming convention.

Change-Id: I0db6f70c2d7671eb9c25a6ff7eecf46eafb696d2
2015-09-18 12:14:39 +01:00
Alex Monk de31d8d7f1 VisualEditor integration: Fix handling of (None) language
Change-Id: I6a5ca5db218d8497eed5dfb61b5a5acb4bb0c122
2015-09-16 20:23:54 +01:00
Ed Sanders 8212ef5609 Split nodes into block/inline
Bug: T103963
Change-Id: Ib0390d6432fe97810988be3aca59ba38c0d55b64
2015-09-16 17:23:48 +01:00
Alex Monk 910ea5a6c9 VE integration: Fix regression in Ic84c5afb
Calling clearItems().addItems like this was super slow and broke autoEllipsis.

Bug: T103756
Change-Id: I398ae5b0fda00a559d742660fa930710174117b2
2015-08-28 19:04:15 +00:00
Alex Monk 0a59b4ccb1 VE integration: Provide a combobox for language input
Bug: T103756
Change-Id: Ic84c5afb1cf83cce6fa521a99f5fee242bc610b1
2015-08-27 03:24:07 +01:00
Bartosz Dziewoński 6b1a4a6d8c Restore 'direction: ltr;' for .mw-highlight
Follow-up to 043969f84e.

It is not needed for current HTML generated by the extension tag,
but is required for compatibility with cached renders generated
between 6484894497 and
043969f84e.

Bug: T105499
Change-Id: Ie15d9c7fb673528b2ab5e40e6beddc580fb6d368
2015-07-11 13:50:41 +02:00
Ed Sanders d38d9c1994 Add VisualEditor support for 'line' attribute
The line attribute sets line='1', as both Parsoid and VE
expect proper XML attributes.

Change-Id: I10b5717fcc4b8e84a3030425a4a6a9a865272830
2015-07-06 22:09:23 +01:00
Bartosz Dziewoński 48bf989cad Highlight background of whole lines, not just text in them
Bug: T103964
Change-Id: Ia1036f00e05634fe6b7e3b65af2a34fc91a540e5
2015-07-05 23:39:38 +00:00
Bartosz Dziewoński 043969f84e Refactor final output formatting
* Use 'nowiki' strip marker to prevent list processing (also known as
  doBlockLevels()). This resolves various issues related to using
  <syntaxhighlight/> blocks in lists and lists suddenly appearing
  inside <syntaxhighlight/> blocks. Fixes T17333, T25674, T104067.

* To prevent <p/>-wrapping resulting from the above, add our own
  wrapper <div/> around the output.

* Since we already have our own wrapper, remove Pygments' one and
  extend it with custom attributes. This resolves some regressions
  from the GeSHi migration. Fixes most of T103964.

Bug: T17333
Bug: T25674
Bug: T103964
Bug: T104067
Change-Id: I3afd1224a18549c62cd4a95fd046affa6d1d3b3f
2015-07-05 22:03:24 +00:00
Ori Livneh 927f40e98a Hide the red border around syntax errors
MZMcBride noticed the red border around '國' in
https://en.wikipedia.org/wiki/Swift_(programming_language)#Example_code

That particular case happens to be a Pygments bug, because multibyte characters
are valid variable names in Swift. But even in cases of legitimate syntax
errors, I don't think we want to show the red border. This behavior may be
useful in code editors, but it is not useful in a wiki environment, especially
given the longstanding habit of using an existing, mostly-compatible lexer to
highlight a language for which no specific lexer exists.

To fix this, override the style in pygments.wrapper.css, and swap the order in
which the two CSS files are concatenated, so that in general we have the
ability to override Pygments-generated CSS.

Change-Id: I304fdaf3a462445d316e0f7fecc983fa87afc629
2015-06-25 17:24:15 -07:00
Bartosz Dziewoński 892b52a30d Avoid displaying double borders for inline code snippets
Before we started using the 'code' tag for inline code snippets,
<code><syntaxhighlight enclose=none ...>...</syntaxhighlight></code>
was a common pattern. Continue supporting it in existing content.

Follow-up to 04293baad9. My IRC comments
about this were seemingly forgotten, and the code I added in
5b7522a5fc to handle this problem
unceremoniously removed.

Bug: T85794
Change-Id: I8e52089fed41e78fb60ddd5b7c12075056265dd9
2015-06-25 13:38:37 +02:00
Bartosz Dziewoński ca778d0a99 Revert "Remove obsolete mw-highlighter styles"
The 'direction' rules must not be applied to regular preformatted
text in MediaWiki core, only to syntax-highlighted programming
language code.

(Not reverting the part that removes 'monospace' rule, *that* is
superfluous.)

This reverts commit f834b719b9.

Bug: T103780
Change-Id: Ie7e9123ab3456aa6fff0485431fe81cd5eb31fa2
2015-06-25 13:05:19 +02:00
Timo Tijhof f834b719b9 Remove obsolete mw-highlighter styles
The styles in MediaWiki core for <pre> already cover this. And
for skins that want different styles, SyntaxHighlight should not
have been overriding it.

Bug: T103780
Change-Id: Ib863288a9a4530b183cf5fdb692489363d82a50f
2015-06-25 05:43:24 +01:00
Timo Tijhof 1a90245838 ext.geshi.visualEditor: Store languages in the module instead of mw.config
Also fixed typo language -> langauge.

Change-Id: Ic4bfeb275c479df17e5dd41d5173d9807f6bc1a0
2015-06-25 00:35:20 +00:00
Ed Sanders b403b58682 Add VisualEditor support
Most functionality is provided by MWExtensionNode & MWLiveExtensionInspector.

Bug: T45126
Bug: T60388
Bug: T69515
Change-Id: If502a8bd2199b6ceb824e02fdfd13c81c39b53b4
2015-06-24 22:43:42 +01:00
jenkins-bot ef3e89cc7c Merge "Use <code> instead of <span> for inline code snippets" 2015-06-24 18:11:32 +00:00
Bartosz Dziewoński 8593fef342 Add 'direction: ltr;' to .mw-highlight
I'm not entirely sure that this will always behave correctly on RTL
wikis, but currently we never behave correctly on RTL wikis.

Bug: T85794
Change-Id: I8af2b18884ec619d581f9ceed737c5628b647086
2015-06-23 22:02:35 +00:00
Ori Livneh 04293baad9 Use <code> instead of <span> for inline code snippets
Change-Id: Ibc07169fc3b91509aa2d98b8ae910c901d2f1703
2015-06-23 08:38:56 -07:00
Bartosz Dziewoński 5b7522a5fc Unbreak <syntaxhighlight enclose="none">
It was always "none" and not "span", this must've been an accidental change.

Also add a CSS tweak to better render the common pattern of
<code><syntaxhighlight enclose="none">...</syntaxhighlight></code>.

Bug: T85794
Change-Id: I3ed1b7f3c954374b49fc9a97881ea5236415cb6f
2015-06-23 15:21:29 +00:00
Ori Livneh 6484894497 Highlight using Pygments rather than Geshi
GeSHi is unmaintained, lacks support for many popular modern languages, and
suffers from deep architectural flaws, chief among them the inconsistent
tokenization of different languages, each of which requires a custom
stylesheet.

Pygments is a well-maintained alternative. It is, by my count, the most popular
syntax highlighting library around. It is BSD-licensed, actively maintained,
and is widely used in PHP projects.

To keep this easy to review, this change does not include update for l10n
files, and it does not delete the geshi/ directory. I will do those in a
separate patch.

The chief change between this and the previous implementation is that errors
result in the code block not being highlighted, as opposed to not being printed
at all, having been replaced by an angry red error message. I think that is the
right user experience. If you go to StackOverflow or GitHub and try to mark up
your code block as being written in some language that their highlighter
doesn't know about, you don't get an error message -- the code simply doesn't
get highlighted.

Because we don't recursively load dependencies for extensions, to test this,
you will need to create a composer.local.json in $IP and add:

    {
        "extra": {
            "merge-plugin": {
                "include": [
                    "extensions/SyntaxHighlight_GeSHi/composer.json"
                ]
            }
        }
    }

Then run `composer update`.

Bug: T85794
Change-Id: I07446ec9893fae3d1e394f435d3d95cf8be6bc33
2015-06-22 23:37:15 +01:00