Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix syntax highlight for pgsql mode for backslash and escape constant #6081

Merged
merged 3 commits into from Dec 9, 2019

Conversation

adityatoshniwal
Copy link
Contributor

Fix syntax highlight for pgsql mode as PostgreSQL does not require backslash to be escaped.
Add support for escape constant as mentioned with ref to:
https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE

Below are the sample queries to test:
SELECT 'select c:\data\out'||oid||'.csv' from pg_class;
select E''', '123';

Attached are the screenshots of working example where the above queries works fine - pgAdmin4.
Screenshot 2019-12-06 at 12 54 36
Screenshot 2019-12-06 at 12 53 51

@marijnh
Copy link
Member

marijnh commented Dec 6, 2019

It looks like you are keeping mode state in a variable, if I understand the role of escapeConstSet correctly. That doesn't work—when the mode is resumed from some random point in the code, that state will still be leftover from the last time it ran, and things will break.

@adityatoshniwal
Copy link
Contributor Author

Urgh.. Right. Do you have any suggestions on how I can improve it ?

@marijnh
Copy link
Member

marijnh commented Dec 6, 2019

You could put it in the state object instead.

@adityatoshniwal
Copy link
Contributor Author

OK, thanks. I'll go through the code once again.

@adityatoshniwal
Copy link
Contributor Author

@marijnh I've updated the code. Kindly review.

mode/sql/sql.js Outdated
// charset casting: _utf8'str', N'str', n'str'
// ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html
// escape constant: E'str', e'str'
// ref: https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE
state.escapeConstSet = true;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two more questions:

  • Is it intentional that this is also being set for other types of string prefixes like n and _? It looks like it should only be relevant for e.

  • You don't actually need a new state field, since the state already has a tokenize callback that you could replace with a tokenizer function that can parse escaped strings. You could add another argument to tokenLiteral that determines backslash behavior, and set tokenize to a function that consumes the quote and then replaces itself with tokenLiteral(quote, ...) here.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two more questions:

  • Is it intentional that this is also being set for other types of string prefixes like n and _? It looks like it should only be relevant for e.
    Oh yes, you're right. Will fix this. :/
  • You don't actually need a new state field, since the state already has a tokenize callback that you could replace with a tokenizer function that can parse escaped strings. You could add another argument to tokenLiteral that determines backslash behavior, and set tokenize to a function that consumes the quote and then replaces itself with tokenLiteral(quote, ...) here.
    I didn't want to repeat the logic of tokenLiteral and wanted to reuse it. I'll try if can avoid the new state field.

Thanks for your time.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I didn't want to repeat the logic of tokenLiteral and wanted to reuse it.

That's what I mean—if you give it an extra argument, you can reuse it.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cool. Let me try it !! Thanks.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi,
I tried to do it without escapeConstSet var, but the problem is, it is before the string stream starts. So I have to tell the tokenLiteral function somehow that the previous char was a escape constant. I can do it in escape constant check, but then I lose the formatting for escape constatnt.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After seeing the e prefix, you can set state.tokenize to a tokenizer function that's specific to that situation, which starts tokenizing an escape-supporting string when it is called.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @marijnh,
This looks a lot better now. :)
Sorry for trouble.

constant support without the need of any extra state var
@marijnh marijnh merged commit 3e6aafd into codemirror:master Dec 9, 2019
marijnh added a commit that referenced this pull request Dec 9, 2019
@marijnh
Copy link
Member

marijnh commented Dec 9, 2019

Thanks for implementing this. I've slightly adjusted it further in attached patch, so that the code won't try to skip quotes at the start of continued string lines.

@adityatoshniwal
Copy link
Contributor Author

Thanks a lot :)

cone56 pushed a commit to cone56/CodeMirror that referenced this pull request Jan 6, 2020
fidelo-software pushed a commit to fidelo-software/CodeMirror that referenced this pull request Jan 21, 2020
* [lint demo] Changed script links to use unpkg

* [css] support double dash css variable (codemirror#5687)

* [vim bindings] Allow selecting text enclosed in angled brackets

* [python mode] Fix nested braces in FString expression

Closes codemirror#5691

* Fix use of let in mode

* Remove debug statement

* [sql mode] Add GETTOKEN, HEADLINE and LEXTYPES for postgresql

see https://www.postgresql.org/docs/10/sql-createtsparser.html

* [soy mode] Improve namespace highlighting

- highlighted the namespace itself as a variable. This is
  in line with how Java packages are highlighted.  I believe
  this is a close approximation.
- added 2 tests to verify new highlighting.

* [sql mode] Add LEXIZE and INIT keywords for postgresql

see https://www.postgresql.org/docs/11/sql-createtstemplate.html

* [soy mode] Classify param type as type

- changed classification of param-def-type to "type" instead of using "variable-3"
- updated tests to match this expectation

* [soy mode] Updated {call /} and .template token

- updated "templ-ref" to match namespaced templates e.g.
my.namespaced.component.element. The existing regex matches the first
word and nothing after the "."

- updated "templ-ref" to treat all "." templates as variable-2.
Local templates are the only ones capable of starting with a dot and
because a template earlier in the file can reference a local template
later in the file, there are no guarantees of it being in the variable
list. Treating all .templates as local is more consistent and
predictable for syntax highlighting.

* [soy mode] tokenize soy functions

- added tokenization for soy functions. Assigned to variable & callee
- added tests to verify it works within expressions

* [soy mode] tokenize property names in {param}

- added token "property" to `name` in `{param name: '' /}`
- adjusted nested-kind-test for this change.

* [yaml-lint addon] Allow linting of multi-document yaml stream

* [sql mode] Add PUBLICATION postgres keyword

see https://www.postgresql.org/docs/10/sql-createpublication.html

* [vim bindings] Fix/keymap/vim ctrl w idle

* Fix issue where bracket matching was unintentionally including <> by default

Closes codemirror/google-modes#233

* [python mode] Fix bug that could cause crashes with some format strings

Closes codemirror#5713

* [sql mode] Treat / as an operator char

See https://discuss.codemirror.net/t/division-operator-in-text-x-sql-mode/1941

* [sql mode] Don't override operatorChars in base sql mime type

* Remove debug statement

* [matchbrackets addon] More thoroughly disable matching of <> by default

Issue codemirror/google-modes#233

* [soy mode] added token for unknown type "?"

- added token "type" for ?
- added test for single type
- added test for ? as a template type parameter

* [soy mode] Boolean and number tokenization in expressions


- added tokenization for decimals
- added tokenization for hexidecimals
- added tokenization for true/false
- added test cases for those new atom tokens

* [soy mode] tokenize operators in expressions

- tokenize arithmetic and equality operators as "operator"
- added tests to validate this

* Fix issue in IE where the context menu hack might stay visible

Because JS seems to be frozen entirely while the context menu is
open, the next open might happen before the timeout was able to
fire. This forces the previous context menu kludge to be cleared
before starting a new one.

* Improve positioning of context menu hack

It sometimes went wrong due to the textarea wrapper being moved
when the cursor was placed under the mouse.

* [show-hint addon] Define a closeHint method

Issue codemirror#5682

* [sql mode] Add SUBSCRIPTION postgres keyword

See https://www.postgresql.org/docs/10/sql-createsubscription.html

* [panel demo] Prevent editor from losing focus when closing a panel

See https://discuss.codemirror.net/t/codemirror-panel-demo-cursor-disappears-on-closing-panel/1946

* Mark version 5.42.2

* Bump version number post-5.42.2

* [soy mode] added null literal and null propogation operator

- added null as atom
- added null propogator as operator
- changed [=] to = in operator regex
- added tests to validate new highlighting

* [soy mode] add support for scientific notation

- modified the decimal expression to support scientific notation
- added tests to verify new highlighting behavior

* [show-hint addon]: bind Ctrl-P/Ctrl-N to up/down on macOS

* [css mode] more consistent css function tokens

- created a css function regexp with a positive lookahead for (. There
are still a few cases with IE functions that have . and : in it that
this does not catch.
- folded url/domain/regexp into that css function regexp including the
special string tokenization that was in place already
- updated css, less, and scss tests to reflect this new tokenization

* [ruby mode] Support indented heredoc end token

Closes codemirror#5727
Closes codemirror#5728

* [ruby mode] Only allow indented heredoc end markers when a - was present

Issue codemirror#5728

* [javascript mode] Improve support for syntactic corner cases in TypeScript

Closes codemirror#5734

* [javascript] Don't expect function bodies in interface declarations

Issue codemirror#5734

* Add options for autocorrect, autocapitalize

* [sql mode] Fall make sure there are keywords and builtins defined when no config is provided

Closes codemirror#5740

* Make sure indent is always passed three arguments

Closes codemirror/google-modes#235

* [julia mode] Don't autoclose single quotes in Julia code

Closes codemirror#5742

* [jinja2 mode] Add MIME type

* [javascript mode] Improve TypeScript support

Add type conditionals, fix parenthesized types, support quoted property
names, fix handling of type parameters in type definitions, and handle
call signatures in interfaces and object types.

Closes codemirror#5737

* [javascript mode] Accept commas as separators in TypeScript interfaces

Issue codemirror#5734

* Mark version 5.43.0

* [real-world uses] Add Colon

* Bump version number post-5.43.0

* Fix middle-click paste on Firefox.

The current solution consists in focusing the
input when the scroll container capture a paste
event, which does not work on Firefox.

In order to fix this, creating a new paste event,
copying the clipboardData and dispatching it
on the textarea seems to do the trick.

This works on Firefox 64, with the
config set to true.

* [continuelist addon] Support nested modes

* [julia mode] Fix some indentation issues

* Prevent text-less paste from messing up the origin of the next text input

Closes codemirror#5764

* [javascript mode] Support TypeScript this parameter declarations

Closes codemirror#5769

* [javascript mode] Allow TS prefixed | or & operators

Closes codemirror#5771

* [javascript mode] Simplify parsing of for loop specs

Closes codemirror#5774

* [soy mode] Update @prop to @State

The name change was made in Soy recently.

* [soy mode] Add {element} as valid indenting tag.

* [lesser-dark and vibrant-ink themes] Improve contrast

* [nord theme] Add

* [vim bindings] Add proper emulation for forward-delete

In Vim's command mode, forward-delete (Delete on PC or fn-delete on Mac) should
behave the same as 'x': delete the character under the cursor. Due to a bug in
CodeMirror's emulation, this wasn't happening before.

This change adds the proper support, along with tests for forward-delete.

* Remove kludge in line height measuring

Which was introduced in 6ac8c13, for unclear reasons

Issue codemirror#5755

* Fix lint error

* Typo: s/npm build/npm run build/g

* [show-hint addon] Move variable into module scope

* Mark version 5.44.0

* Bump version number post-5.44.0

* [swift mode] Drop all-rights-reserved example code

* [julia mode] Fix failure to advance on mismatched closing brace

Closes codemirror#5797

* [vim bindings] Only scan for <> when matching angle brackets

To avoid treating <> as brackets when they aren't used as such

* Handle scanning for user provided brackets, e.g. "

* [panda-syntax theme] Use monospaced Source Code Pro instead of Source Sans Pro

https://adobe-fonts.github.io/source-sans-pro/ is a proportional font
family by Adobe (the "Source" in the name refers to being open source).
https://adobe-fonts.github.io/source-code-pro/ is a matching monospace
font family.

* [sublime keymap] Bind sortLines to F5 on macOS

* [sql mode] Update keywords and builtin symbols for x-pgsql

Added pgsql keywords which were missing.

* [closebrackets addon] More refined check for when to close a bracket

Improves the current behavior which auto closes every opening bracket.

- hardcodes a closeBefore list of characters that if the next character is in the list, opening a bracket should be auto-closed.
The list is : ")]}'\":;>"
Basically the closing characters in pairs  ; : and >.

- when opening a bracket, it will be auto-closed if:
1. there is no next character,
2. the next character is a white space character.
3. the next character is in the shouldClose list.

* [clike mode] Only match "_t" at the end of an identifier

* [yonce theme] Add

* [sql-hint addon] Add tests and fix codemirror#5817

* [xml-hint addon] Optionally match in middle

For example, "happy" to match "very-happy", "not-so-happy", "happy".

* Mark version 5.45.0

* Bump version number post-5.45.0

* Recursively compute innerMode in continuelist addon

When creating an overlay mode from e.g. `gfm`, which has `markdown` as an
`innerMode`, we need to recursively compute `innerMode` via
`CodeMirror.innerMode` to correctly determine `markdown` descendant mode.

* Cancel mouse selection before swapping document

To avoid the mouse handling code getting confused

* [xml-hint addon] Prevent extraneous quote

If typing attribute=" and by closetag it becomes attribute="" and user
presses Ctrl-Space to autocomplete and the completion is "x" then by
this fix instead of obnoxious attribute="x"" it becomes nice attribute="x".

* [closetag addon] Optionally prefer empty-element tags

When user types <atomic> substitute <atomic/> if so configured.

* [yonce theme] Update colors

* Do not consider key-127 (F16) to be Delete

As per codemirror#5829

* [html-lint addon] Adding compatibilty with HTMLHint 0.11.0

* Allow CSS styles to be passed for gutter backgrounds

Issue codemirror#5834

* [matchesonscrollbar addon] Fix possible discrepancy with search query

The scrollbar annotations may fail to match search query under
certain circumstances. This happens when the search cursor is
`multiline: false`.

The matchesonscrollbar addon does not have a way to indicate
`multiline: false`, the multiline status is heuristically
determined and because of this it may end up being opposite
of the status of the search cursor.

* Correctly use the string 'off' for autocapitalize and autocorrect

Rather than 'false', which is ignored

Issue codemirror#3403

* [swift mode] Properly handle empty strings

* [vb mode] Update vb.net keywords

* Mark version 5.46.0

* Bump version number post-5.46.0

* Add missing header to change log

* Fix a small typo in the CHANGELOG.md

* [real-world uses] Add RackTables

* [hint addon] Offset the hint to position it correctly when hintOptions.container is given

* [python mode] Parse ... as an operator

To avoid treating it like 3 separate dot tokens

Closes codemirror#5861

* [clojure mode] Treat commas as whitespace

Closes codemirror#5582

* [soy mode] Add a config object for tags and a tag context

* Added support for restoring previous local modes by using a stack for the states.

* The indentation was previously added to the first token of the inner mode.

* Add tag config object

* [vim] fix repeat for changes made with C-v I

* [vim] add support for ` text object

* [vim] do not reset desired column at eof

* [vim] cleanup old fatCursorMarks after C-v c Esc

* [vim] fix @@ to rerun last run macro (codemirror#5868)

`vimGlobalState.macroModeState.latestRegister` was only ever updated when defining a macro. This change updates it when running a macro too so that `@@` actually repeats the last macro as it does in vim

* [midnight theme] Fix class name for cm-matchhighlight

Issue codemirror#5866

* [ruby mode] Require dash or tilde at start of heredoc strings

Closes codemirror#5871

* Add EXLskills Live Coding Interviews as real-world use case

* [midnight theme] Drop custom matchhighlight styles

Issue codemirror#5866

* [vim] remove unnecessary uses of replace from vim test

* [vim] fix broken option tests

* [vim] fix fat cursor staying after O

* [vim] fix blockwise yank

* [ruby mode] Fix matching of closing brackets during indentation

Closes codemirror#5881

* [emacs] Add "redo" keybinding in Emacs keymap

Since "redo" is generally assigned to Ctrl+Y, we lose this binding
when using the Emacs keymap. The Emacs default for "redo" is a bit
complicated, but since we're using Ctrl-Z for "undo", it makes sense
to have Ctrl+Shift-Z for "redo".

* Mark version 5.47.0

* Bump version number post-5.47.0

* [mode metadata] Add "cs" as alias for C#

Other places like discord, github and gitlab supports this.

* [merge addon] Fix typo in hasMarker()

This was causing exceptions to be thrown when using custom
markers.

* Add U+FFFC as a default replaced special character

* Also add u+fff9-u+fffb as special characters

Browser don't display anything for them either

Issue codemirror#5900

* [clike mode] Remove 'float' as Java keyword

* [mode metadata[ Add meta entry for PostgreSQ

* Add selectLeft/selectRight marker options

* [groovy mode] Add comment metadata

Closes codemirror#5906

* [real-world uses] Add LiveUML

* [vim] throttle highlightSearchMatches

This should prevent it from falling behind trying to highlight previous queries while you're typing.

* [hint addon] Handle scrolling containers

* [javascript mode] Remove strange handling of 'in' in TypeScript mode

Closes codemirror#5909

* [javascript mode] Fix typescript [key in ...] syntax (again)

Issue codemirror#5737
Issue codemirror#5909

* [real-world uses] Added Coderba GWT wrapper

We implemented a wrapper to CodeMirror for GWT (base on JSINTEROP)

* [real-world uses] Fixed link to GWT wrapper extension

* Mark version 5.48.0

* Bump version number post-5.48.0

* [javascript mode] Fix computed property TS syntax for object types

Issue codemirror#5909

* [javascript mode] Support numeric separators

Note that the new regular expression is more permissive than
the spec proposal, e.g. 0_._1 or 1__2 are not valid numbers.

However, filtering out these cases would make the tokenizer
unnecessarily complex.

* [vim mode] match vim char escape substitution behavior

* [vim mode] codemirror#5753 Feature request: Support &/$0 in vim substitute replacements

* [search addon] Escape sequence only for \n, \r, \t and \\

When `\` is followed by any other character, it will not be
interpreted as an escape sequence, i.e. `\3` will be
interpreted as literal `\3`, not as `3`.

Fixes codemirror#5428

* [sparql mode] Non-ASCII variable names

This regex is ES3-compliant but it misses non-BMP characters specified in SPARQL standard.

Closes codemirror#5935

* [javascript mode] Handle string defaults in arrow function param lists

Closes codemirror#5934

* [javascript mode] Fix use of let

* [javascript mode] don't detect backtick-enclosed fatarrows

cf. codemirror#2993 and 27fe44c which fixed the analogous issue for single-quotes, double-quotes and regex literals.

* [javascript mode] fix tokenizing of underscore properties

The regexp for parsing numbers with numeric separators is too
broad. This way, we mistake properties starting with underscore
to be numbers.

* Mark version 5.48.2

* Bump version number post-5.48.2

* [clike mode] Style Dart class names as variable-2

* [real-world uses] remove unmaintained codev.it

The domain http://codev.it is Inaccessible,  the [latest twitter](https://twitter.com/codevit) was post on Sep 2015.
It's better to remove it.

* [soy mode] Add {select} and {plural}

* fix scrolling with rulers

* [foldgutter addon] Pass all options to the `foldCode` method

... to enable redefinition of the `widget` prop (codemirror#5955)

* [julia mode] Support undescore digit separator

Closes codemirror#5958

* [handlebars mode] add support for triple mustache tags

* [asterisk mode] Add block-comment support

* [asterisk mode] Add comment syntax metadata

* [asterisk mode] Fix bogus patch

* Make ".CodeMirror pre" selector more specific

* Fix bug in coordsChar when there's a collapsed range at start of line

Issue codemirror#5966

* significant speed optimisation when large amount of lines are folded

* Make sure the cantEdit flag is reset when setValue is called

Closes codemirror#5974

* Update PR to use .CodeMirror-line-like class

* Properly detect changes that should reset cantEdit flag

Issue codemirror#5974

* Fix forgotten import

* [yonce theme] Don't use rgb with four arguments

Closes codemirror#5951

* Mark version 5.48.4

* [soy mode] Fix setting kind on invalid tags

* [clike] support nested comments in kotlin mode

* [material theme] Update to the official version, add darker, palenight, ocean variants

* [moxer theme] Add

* Prevent removing textarea.form.submit handler with opts.leaveSubmitMethodAlone

* [octave mode] Don't mark period chars as invalid

Closes codemirror#5987

* [javascript mode] Add support for HTML-style comments

Closes codemirror#5988

* [clike] fix kotlin indent for first line in lambda with params

* [foldgutter and annotatescrollbar addon] Schedule update on changes instead of change

The setTimeout/clearTimeout overhead of re-scheduling on every change in a large operation can be significant. This cuts the time of a particularly large operation I was testing from 5s to 2.5s (replacing some text in ~5000 lines). The majority of the rest of the time coming from rescheduling of the highlight worker inside the startWorker call.

* [mode/meta] Add wl and wls file extensions

* [xml mode] Add an indirection to XML mode state inspection

Issue codemirror/google-modes#266

* Mark version 5.49.0

* Bump version number post-5.49.0

* [real world] add Tistory

Tistory is blog service in South Korea.
Tistory uses CodeMirror at post markdown/html editor and skin editor.

* [markdown demo] Include javascript mode

Closes codemirror#6011

* [markdown mode] Don't reset inline styles at start of continued list item

Closes codemirror#6012

* [foldgutter] reuse old markers if indicatorOpen/Folded is string

* [darcula theme] Improve contrast of search/matching highlighting

* Add alt attribute to codemirror logo images

* [pug mode] Remove superfluous function arguments

* [yaml-frontmatter mode] Allow pandoc-style closing with `...`

This allows to end yaml-frontmatters with either `---` or `...`, as
suggested [on the discussion board][1]. The old behaviour was to just
accept `---`.

[1]: https://discuss.codemirror.net/t/pandoc-markdown-style-yaml-frontmatter/2182

* [sublime bindings] Fix selectNextOccurrence to do nothing when all instances are selected

Closes codemirror#6024

* [continuecomment] skip some edge cases, respect indentWithTabs

* line comment:
  - if both cursor and line comment are at pos 0
  - if cursor is at EOL or in trailing space at EOL, but always continue if the next line is a line comment
* block comment:
  - if it's inside a line comment e.g. // /*

* Reduce setTimeout/clearTimeout calls from Delayed

This reduces the time the operation I mentioned in codemirror#5992 takes to ~450ms.

* Switch to +new Date

* Reduce chance of needlessly rescheduled Delayed calls

Issue codemirror#5993

* [clike mode] Add text/x-objectivec++ type (codemirror#6027)

Pull out some of the ObjC and C++ info into vars so they can easily be reused and add a text/x-obejctivec++ type that's effectively the union of the C++ and ObjC definitions.

* [mode/meta] Add Objective-C++

* [dart mode] Add "extension" and "on" keywords

This is for Dart 2.6 extension method syntax

* Mention null mode in docs for mode option

Closes codemirror#6034

* Mark version 5.49.2

* Bump version number post-5.49.2

* [closetag addon] Fix behavior when typing > after /

Closes codemirror#6038

* [sublime keymap] Pass local token type to scanForBracket when appropriate

Closes codemirror#6042

* [handlebars mode] Fix support for triple braces

Closes codemirror#6052

* Upgrade some dev dependencies

* Codemirror: Replaced PhantomJS Dependency with Puppeteer

Signed-off-by: ossdev <ossdev@puresoftware.com>

* Make puppeteer-based test runner work

Issue codemirror#6051

* [searchcursor addon] Properly match $ in reverse regexp search

Closes codemirror#6056

* [searchcursor addon] Fix behavior in overlapping reverse regexp searches

* [mode meta] Make findModeByExtension case insensitive

* [css mode] Add more pseudo-class names

Added new CSS Pseudo Selector from https://www.w3schools.com/cssref/css_selectors.asp

* [panel addon] Support dynamic size changes

Closes issue codemirror#5995

* [ayu-dark and ayu-mirage themes] Add

* Wire up shift-delete to fire a cut event on Gecko

Issue codemirror#6061

* [julia mode] Fix getting stuck on integers with leading zeroes

Closes codemirror#6064

* [continuecomment addon] Continue comments when a newline is inserted before them

Fix issue where lastIndexOff was accidentally passed a negative
start position, which causes it to search from the end of the string.

Closes codemirror#6065

* Adjust posFromMouse to handle arbitrary xRel field values

Closes codemirror#6067

* [vim bindings] Skip folded code when moving with j/k

* [elm mode] Sync with upstream implementation

Modifies this module to reflect changes made to this mode found in https://github.com/elm/elm-lang.org/blob/master/editor/cm/mode/elm.js

* [cypher mode] Added keywords for system commands

Includes multi database and privilege management commands

* Support functions as fold widget argument

So that the widgets can be dynamic with regards to their content.

Expand the fold demo with a JSON editor that shows the number of
elements in folded regions.

* [sql mode] Support  backslash and escape constants in pgsql

Add support for escape constant as mentioned here:
https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE

* [sql mode] Simplify patch 3e6aafd

Issue codemirror#6081

* Add a className option to addLineWidget

Issue codemirror#5952

* [javascript-hint addon] Properly iterate over local scopes

See https://discuss.codemirror.net/t/function-parameter-autocomplete/2240/1

* [sublime bindings] Make by-sub-word motion more conformant to Sublime

Closes codemirror#6091

* [sublime bindings] Fix sub-word motion at start of word

* Mark version 5.50.0

* [sublime bindings] Add shortcut Ctrl-K Ctrl-D: find_under_expand_skip

* [soy mode] Add support for default param value

* Fix indentation after a {literal{/literal} block.

* Fix: Broken line widget removal

Removal of line widgets is broken in 5.50.0 due to invalid classname check

* [nsis mode] Add commands up to NSIS v3.05

* Restore indentation when closing an array or generator.

* Mark version 5.50.2

* If valid and invalid files are drag n dropped, paste all valid files

* [rust mode] Fixed type names in demo code

* Fix broken link in manual

The external link to the ternjs.net demo page returns a 404 error; this PR corrects it.

* [elm mode] Remove tab character

* [show-hint addon] Scroll initially selected hint into view

See https://discuss.codemirror.net/t/show-selectedhint-in-very-long-list-of-hints/2255

* [real-world uses] Add Adnuntius

* Make sure clearHistory clears all linked histories

Closes codemirror#6108

* [vim] fix R key in visual mode

* [vim] fix behavior of ' and ` marks

* [vim] implement gi gI gJ

* Make sure contextmenu event is also forwarded when fired on the input field

Since Firefox, as of patch a21ea6f, seems to fire it on the
textarea.

Closes codemirror#6116

* When direction=rtl, fix home/end and arrow motion across line boundaries

Closes codemirror#6117

* Mark version 5.51.0

* Update CHANGELOG.md

* Fix confused markup in releases.html

* [javascript mode] Don't get confused by trailing commas in parentheses

Closes codemirror#6120

Co-authored-by: István Király <LaKing@D250.hu>
Co-authored-by: Joel Einbinder <joel.einbinder@gmail.com>
Co-authored-by: yoongu <yoongu.kim@gmail.com>
Co-authored-by: Marijn Haverbeke <marijnh@gmail.com>
Co-authored-by: Neil Anderson <neil.t.anderson+sqlmigrate@gmail.com>
Co-authored-by: Christopher Wallis <christopher.j.wallis@gmail.com>
Co-authored-by: Germain Chazot <g.chazot@gmail.com>
Co-authored-by: fraxx001 <alexander.fratzer@gmail.com>
Co-authored-by: FUJI Goro <gfuji@cpan.org>
Co-authored-by: Joe Walsh <joewalsh@users.noreply.github.com>
Co-authored-by: Michael Wadman <8885966+mwadman@users.noreply.github.com>
Co-authored-by: Chhekur <820121223505e@gmail.com>
Co-authored-by: Nicolas Chevobbe <nchevobbe@users.noreply.github.com>
Co-authored-by: Tom McLaughlin <pyro777@gmail.com>
Co-authored-by: Pablo Zubieta <8410335+pabloferz@users.noreply.github.com>
Co-authored-by: Joy Zhong <joyzhong@google.com>
Co-authored-by: Stryder Crown <stryder.c@gmail.com>
Co-authored-by: Kenan Christian Dimas <christian.dimas.94@gmail.com>
Co-authored-by: Robert Martin <rdmartin3@gmail.com>
Co-authored-by: Jan Keromnes <jan.keromnes@typefox.io>
Co-authored-by: Travis Heppe <heppe@google.com>
Co-authored-by: Torgeir Thoresen <torgeir.thoresen@gmail.com>
Co-authored-by: Beni Cherniavsky-Paskin <cben@redhat.com>
Co-authored-by: Kees de Kooter <kees@boplicity.nl>
Co-authored-by: Aditya Toshniwal <aditya.toshniwal14@gmail.com>
Co-authored-by: Hanzhao Deng <hanzhaodeng@gmail.com>
Co-authored-by: Vincent Woo <me@vincentwoo.com>
Co-authored-by: Thomas MacLean <thomasmaclean@google.com>
Co-authored-by: William Desportes <williamdes@wdes.fr>
Co-authored-by: Leo Baschy <srguiwiz@users.noreply.github.com>
Co-authored-by: Erik Demaine <edemaine@mit.edu>
Co-authored-by: Markus Olsson <j.markus.olsson@gmail.com>
Co-authored-by: Vadim ‮oknehcayD <yellowafterlife@ymail.com>
Co-authored-by: Luciano Santana <contato@lucianosantana.net>
Co-authored-by: Raymond Hill <gorhill@users.noreply.github.com>
Co-authored-by: Scott Feeney <scott@oceanbase.org>
Co-authored-by: clso <694743+clso@users.noreply.github.com>
Co-authored-by: Max Wu <jackymaxj@gmail.com>
Co-authored-by: Denis Ovsienko <denis@ovsienko.info>
Co-authored-by: Benjamin Amelot <bam@activeviam.com>
Co-authored-by: Axel Lewenhaupt <axel@x2d.org>
Co-authored-by: Harutyun Amirjanyan <amirjanyan@gmail.com>
Co-authored-by: Evan Minsk <evanminsk@google.com>
Co-authored-by: Sasha Varlamov <sasha@sashavarlamov.com>
Co-authored-by: Diego Fernández Giraldo <aiguo.fernandez@gmail.com>
Co-authored-by: Bruno Logerfo <bclogerfo@hotmail.com>
Co-authored-by: mtaran-google <mtaran@google.com>
Co-authored-by: Duncan Lilley <dklilley95@gmail.com>
Co-authored-by: Konrad Cwiakala <konrad.cwiakala@gmail.com>
Co-authored-by: Erik Welander <erik@welander.us>
Co-authored-by: stockiNail <stocki.nail@gmail.com>
Co-authored-by: Yang Guo <yangguo@chromium.org>
Co-authored-by: Ilya Kharlamov <502372+ilyakharlamov@users.noreply.github.com>
Co-authored-by: Sébastien Beyou <seb35@seb35.fr>
Co-authored-by: Bryan Gin-ge Chen <bryangingechen@gmail.com>
Co-authored-by: John Ryan <ryjohn@google.com>
Co-authored-by: Guang Li <1152164+g5li@users.noreply.github.com>
Co-authored-by: Jakub Vrána <jakub@vrana.cz>
Co-authored-by: Tyler Makaro <t-makaro@users.noreply.github.com>
Co-authored-by: edoroshenko <doroshenkoes@gmail.com>
Co-authored-by: Nils Knappmeier <npm@knappi.org>
Co-authored-by: Lonnie Abelbeck <lonnie@abelbeck.com>
Co-authored-by: Alexander Prendota <Prendota@mail.ru>
Co-authored-by: Mattia Astorino <astorino.mattia@gmail.com>
Co-authored-by: Mark Hamstra <hamstra.mark@gmail.com>
Co-authored-by: kb.chernenko <kb.chernenko@gmail.com>
Co-authored-by: Arnoud Buzing <arnoudbuzing@users.noreply.github.com>
Co-authored-by: Joo <joo@joostory.net>
Co-authored-by: tophf <tophf@gmx.com>
Co-authored-by: Oleksandr Yakovenko <alex.jakovenko@gmail.com>
Co-authored-by: oscar.lofwenhamn <44643697+oscarlofwenhamn@users.noreply.github.com>
Co-authored-by: seifferth <43514227+seifferth@users.noreply.github.com>
Co-authored-by: Ryan Pangrle <RPangrle@users.noreply.github.com>
Co-authored-by: ossdev07 <39188636+ossdev07@users.noreply.github.com>
Co-authored-by: johannes <jh@maschinensehen.de>
Co-authored-by: Hasan Delibaş <hasan.delibas94@gmail.com>
Co-authored-by: Nikolaj Kappler <Nikolaj-Kappler@web.de>
Co-authored-by: Igor Petruk <ipetruk@google.com>
Co-authored-by: leaf <node_github@163.com>
Co-authored-by: T. Brandon Ashley <tbash@users.noreply.github.com>
Co-authored-by: Olivia Ytterbrink <olivia@ytterbrink.com>
Co-authored-by: Opender Singh <opender94@gmail.com>
Co-authored-by: Hanno Fellmann <fellmann@users.noreply.github.com>
Co-authored-by: Jan T. Sott <jan@idleberg.com>
Co-authored-by: elpnt <39664774+elpnt@users.noreply.github.com>
Co-authored-by: James Cockshull <james.cockshull@gmail.com>
Co-authored-by: antosarho <tsarhanis@gmail.com>
Co-authored-by: David Rodrigues <david.proweb@gmail.com>
mrdrogdrog added a commit to hedgedoc/CodeMirror that referenced this pull request Oct 31, 2020
* Wire up shift-delete to fire a cut event on Gecko

Issue codemirror#6061

* [julia mode] Fix getting stuck on integers with leading zeroes

Closes codemirror#6064

* [continuecomment addon] Continue comments when a newline is inserted before them

Fix issue where lastIndexOff was accidentally passed a negative
start position, which causes it to search from the end of the string.

Closes codemirror#6065

* Adjust posFromMouse to handle arbitrary xRel field values

Closes codemirror#6067

* [vim bindings] Skip folded code when moving with j/k

* [elm mode] Sync with upstream implementation

Modifies this module to reflect changes made to this mode found in https://github.com/elm/elm-lang.org/blob/master/editor/cm/mode/elm.js

* [cypher mode] Added keywords for system commands

Includes multi database and privilege management commands

* Support functions as fold widget argument

So that the widgets can be dynamic with regards to their content.

Expand the fold demo with a JSON editor that shows the number of
elements in folded regions.

* [sql mode] Support  backslash and escape constants in pgsql

Add support for escape constant as mentioned here:
https://www.postgresql.org/docs/current/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-ESCAPE

* [sql mode] Simplify patch 3e6aafd

Issue codemirror#6081

* Add a className option to addLineWidget

Issue codemirror#5952

* [javascript-hint addon] Properly iterate over local scopes

See https://discuss.codemirror.net/t/function-parameter-autocomplete/2240/1

* [sublime bindings] Make by-sub-word motion more conformant to Sublime

Closes codemirror#6091

* [sublime bindings] Fix sub-word motion at start of word

* Mark version 5.50.0

* [sublime bindings] Add shortcut Ctrl-K Ctrl-D: find_under_expand_skip

* [soy mode] Add support for default param value

* Fix indentation after a {literal{/literal} block.

* Fix: Broken line widget removal

Removal of line widgets is broken in 5.50.0 due to invalid classname check

* [nsis mode] Add commands up to NSIS v3.05

* Restore indentation when closing an array or generator.

* Mark version 5.50.2

* If valid and invalid files are drag n dropped, paste all valid files

* [rust mode] Fixed type names in demo code

* Fix broken link in manual

The external link to the ternjs.net demo page returns a 404 error; this PR corrects it.

* [elm mode] Remove tab character

* [show-hint addon] Scroll initially selected hint into view

See https://discuss.codemirror.net/t/show-selectedhint-in-very-long-list-of-hints/2255

* [real-world uses] Add Adnuntius

* Make sure clearHistory clears all linked histories

Closes codemirror#6108

* [vim] fix R key in visual mode

* [vim] fix behavior of ' and ` marks

* [vim] implement gi gI gJ

* Make sure contextmenu event is also forwarded when fired on the input field

Since Firefox, as of patch a21ea6f, seems to fire it on the
textarea.

Closes codemirror#6116

* When direction=rtl, fix home/end and arrow motion across line boundaries

Closes codemirror#6117

* Mark version 5.51.0

* Update CHANGELOG.md

* Fix confused markup in releases.html

* [javascript mode] Don't get confused by trailing commas in parentheses

Closes codemirror#6120

* Fix bug in bidi algorithm

Arabic numerals were ordered incorrectly in an rtl context.

Issue codemirror#6117

* Make goLineStartSmart behave better in direction=rtl docs

* [dart mode] Add "yield" keyword

* [lint addon] Add theme class name to tooltips

* [stylus mode] Don't match #-rgb colors before a dash character

Closes codemirror#6132

* Fix missing clipPos calls in file drop code

Closes codemirror#6127

* [lint addon] Allow appending the tooltip to the wrapper element

The tooltip in the existing way append to the body.

When applied the codemirror context inside a shadow root (custom
element) this calls append the tooltip out of the root components.

Thus, the user has to monkey patch the appendchild method to override
the behavior.

This change would allow the tooltip to render in its own context with
the `selfContain` option.

* Fix previous patch to get option from the parsed option object

Issue codemirror#6135

* [soy mode] Remove templates property from state

* Fix driver from only running vim tests.

* Improve time complexity.

* Clip negative scroll-to coordinates

Closes codemirror#6139

* [Soy] Improve map, list, record and list comprehension highlighting 

* Add support for map, list and record types.

* Add support for list, record and map literals.

* Add support for list comprehension.

* Better variable matching in list comprehension.

* [tern addon] Allow appending the tooltip to the codemirror hint options container if exists

The current implementation of tern.js is appending the tooltip to the body.

When applied the codemirror context inside a shadow root, tooltips are falling out of the root component.
This change would append the tooltip to the container of codemirror hint options if it has else it will default to document.body

* Fixing blockquote end check

* [sTeX mode] Ensured that tag does not clash with object prototype properties

* [verilog] Support folding by indentation

* Update to add mllike mode in release

* Mark as version 5.49.4

* Mark version 5.52.0

* [protobuf mode] Enable brace folding

* [markdown mode] DIsallow single dash for a setext header

Closes codemirror#6129

* Fix lint warnings

* Fix failing the test when the linter finds an issue

Issue codemirror#6156

* [real world uses] Add clone-it.github.io

Using CodeMirror as HTML & CSS editors.

* Add plantuml language mode

* Mark as version 5.49.5

* [twig mode] Replace confusing/broken code in demo

* [javascript mode] Don't get confused by missing expression in statement conditions

Issue codemirror#4386

* Fix DOM selection update in contenteditable mode when another window has focus

Refine the check for whether the editor has focus to look at
document.activeElement instead of state.focused.

Issue codemirror#6167

* Make sure to set the DOM selection on ContentEditableInput.focus

Issue codemirror#6167

* add missing CSS properties

* [vim bindings] Disable autocorrect for prompt

* [zenburn theme] Improve specificity of background selector

Closes codemirror#6180

* Fix bug in viewport updating for content-sized editors

Closes codemirror#6181

* Mark version 5.52.2

* [powershell mode] Don't highlight backslashes as errors

* [dialog addon] Don't close dialogs when tab loses focus

* [vim keymap] Fix EOL handling in visual mode.

Vim's visual mode allows the cursor to be positioned over EOL.
This change fixes a bug where that EOL behavior only worked when
in visual block mode.

* [vim keymap] Don't mark fat cursor over EOL.

This fixes a bug where a mouse click to the right of a line
results in the cursor apparently over EOL, even though it is actually
positioned over line.length-1. Cursor position should display over
EOL only in visual or insert modes. Insert mode is handled by default
cursor behavior and visual mode is handled by the fake cursor, so
we should remove the special cursor EOL handling here and just clip
to show the cursor in the right place.

* [runmode-stanadlone addon] Update with changes from runmode.js

This PR updates the `runMode` function in runmode-standalone.js with 3 commits from [runmode.js](https://github.com/codemirror/CodeMirror/blob/master/addon/runmode/runmode.js):
- codemirror@7e35f03
- codemirror@53bc4b1
- codemirror@64113ec

The first commit from runmode.js allows the `callback` in runMode to be a function, as mentioned in https://codemirror.net/demo/runmode.html and https://discuss.codemirror.net/t/runmode-standalone-callback/2357. The last two commits fixes a copy-and-paste bug from IE.

* Add a screenReaderLabel option to set an aria-label on the editor

* Remove leftover argument

Issue codemirror#6197

* [merge addon] Compensate for editor top offset when aligning lines

Closes codemirror#6202

* [hint] Nicer scrolling with non-standard padding

The `scrollToActive` function used to have a `3px` offset hardcoded, which matches the default style (`padding: 2px; border-width: 1px;`). Custom values for these these style attributes would lead to a small visual bug.

* [show-hint addon] don't close hints on backspace prematurely

Currently, when a completion is triggered with part of the identifier already typed and backspace is hit, hints are immediately
closed (when cursor is moved before the original position that completion was triggered for).
After this change, they will be closed only when the entire identifier is erased (cursor is moved before the identifier start).

* Add functions to vimAPI documentation

* [julia mode] Fix infinite loop for mismatched brackets

Closes codemirror#6213

* docs: Fix simple typo, compatiblity -> compatibility

There is a small typo in addon/search/searchcursor.js, mode/python/python.js.

Should read `compatibility` rather than `compatiblity`.

* [show-hint] Scroll cursor into view after picking


**Fixes a minor visual bug:**
The picked hint might push the cursor out of the screen - this scrolls the cursor back into view. (Would normally happen after the next keypress.)

* [JavaScript-Hint] Add options.additionalContext property names as hints

... if not hinting within 'context'

* [sublime keymap] Add Ctrl-K Ctrl+1 fold all shortcut

* Make refresh always re-estimate line heights when wrapping is on

Closes codemirror#6228

* [emacs keymap] Allow fallthrough to the default keymap

Closes codemirror#6231

* [rust] Add some keywords

* doc update to clarify that negative lookbehind assertion for regex is
not supported

* [show-hint] Make linter happy

* [wast] Add new wast mode (for WebAssembly disassembly)

This adds support for WebAssembly text format, as used in the
browser DevTools (Firefox, Edge and Chrome DevTools all the like).

* Mark version 5.53.0

* [show-hint addon] Fix broken completion picking

Closes codemirror#6239

* Mark version 5.53.2

* Don't handle key events for the wrong target

Closes codemirror#6242

* Add SASS2CSS https://www.sass2css.online/

* [python mode] Somewhat improve handling of format specs in format strings

Issue codemirror#6244

* Disable scroll-on-focus in drag focus kludge

Since it causes jumps in the scroll position on Chrome.

Closes codemirror#6246

* [vim bindings] Remove a duplicate entry in defaultExCommandMap

* Disable scroll workaround in start-drag handler for Safari

Issue codemirror#6246

* [javascript mode] Add support for private properties

Issue codemirror#6249

* [javascript mode] Allow class fields in non-TS mode

Closes codemirror#6249

* Don't mess with the selection when refocusing a text field

Issue codemirror#6242

* [runmode standalone] Add support for globalThis

We use the standalone mode in DevTools in a worker, where `window`
does not exist. Instead, we can use `globalThis` which should be
the corresponding global scope in all scenarios. For older browsers
that do not support `globalThis`, we fallback to `window`.

Relevant DevTools change:
https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/2174418/1/front_end/third_party/codemirror/package/addon/runmode/runmode-standalone.js

* Also ignore clipboard events inside widgets in contenteditable input mode

Issue codemirror#6242

* [matchbrackets addon] Disable highlighting when the editor isn't focused

Closes codemirror#6252

* [javascript operator] Properly implement optional chaining operator

Closes codemirror#6255

* Increase size of scrollbar-hack gap

Issue codemirror#6258

* Add a sponsors section to the website

* [tcl mode] Add # as a lineComment

* [dart mode] Add `late` and `required` keywords, `Null` and `Never` types

* [mode/meta] Remove unwanted space in TiddlyWiki mode name

* [runmode addon] Add support for lookahead

Closes codemirror/google-modes#300

* [javascript mode] Fix a runaway regexp

Issue codemirror#6273

* Proper escaping of \s

See: https://lgtm.com/rules/1510624619946/

* [match-highlighter] Fix issue in highlighting non-alphanumeric tokens

Closes codemirror#6279

* [vim] Allow Ex-Commands with non-word names

* [soy mode] Fix bug with "map" in type name

Co-authored-by: Axel Lewenhaupt <lewenhaupt@lewenhaupt-macbookpro2.roam.corp.google.com>

* [gfm mode] add fencedCodeBlockDefaultMode option

* Mark version 5.54.0

* Don't render zero-width joiners as a special character

Since it'll often mess up emoji rendering

Issue codemirror#4488

* [real-world uses] Add Adaface PairPro

Adding Adaface PairPro (remote pair programming tool with code editor, compiler and video conference) for interviews.
Added in alphabetical order.

* [vim] Fix vim-mode-change event being signalled twice

* [gfm mode] Allow forward slash in fenced code language

* [loadmode addon] Support overriding script loading and filename computation

Issue codemirror#6295
Issue codemirror#6294

* Remove trailing whitespace

* [runmode-standalone addon] Fix interface mismatch in StringStream constructor

Closes codemirror/google-modes#300

* [javascript mode] Only allow HTML-style comments at the start of line

Closes codemirror#6305

* [javascript mode] Reduce start-of-line restriction to HTML close comment tokens

Issue codemirror#6305

* [pascal mode] Add highlighting for comments with curly brackets

See codemirror#5523

* [markdown mode] Change fencedCodeBlockDefaultMode to 'text/plain' instead of ''

* [julia mode] Tweak indent method

* Fix lint error

* [wast mode] update to match latest WebAssembly specification

Also shorten the regex for the keyword tokens a bit.

* [wast mode] Support atomics from the Wasm Threads proposal

This also adds more test coverage for not only the atomic memory
instructions, but also the regular memory instructions. It also
shortens the regex's for keyword and atom a bit.

* [sql-hint addon] Autocomplete suggestion on _ $ and # for ODBC

* [wast mode] Support WebAssembly tail-calls proposal

This also adds more test coverage for all other control instructions,
not just the new ones from the tail-calls proposal.

* [real-world uses] Add Innovay Web Tools

* [runmode addon] Reuse existing support code for standalone/node versions of runmode

* [runmode.node addon] Export countColumn again

* [runmode addon] Fix lint issues

* [closetag addon] Make whenClosing/whenOpening properly default to true

Closes codemirror#6322

* Mark version 5.55.0

* [wast mode] Rename atomic.notify and *.atomic.wait

Refs: WebAssembly/threads#149

* [wast mode] Support some Wasm SIMD instructions


These keywords can be found at
https://github.com/WebAssembly/simd/blob/master/proposals/simd/BinarySIMD.md.

* [wast mode] Add more SIMD instructions

This adds all comparison (eq, ne, lt, gt, le, ge), and v8x16.shuffle and
v8x16.swizzle.

Full list of instructions found at:
https://github.com/WebAssembly/simd/blob/master/proposals/simd/BinarySIMD.md

The ordering in the test file follows this the ordering in the binary
form. The regex ordering is more arbitrary due to grouping.

* [wast mode] Add more SIMD instructions

Some arithmetic instructions, had to shuffle the regex a bit so that we
will attempt to match i8x16.add_saturate_s first before i8x16.add.

Full list available at:
https://github.com/WebAssembly/simd/blob/master/proposals/simd/BinarySIMD.md

* [wast mode] More SIMD instructions

f32x4 and f64x2 arithmetic instructions.

Sorted test cases to match the order in
https://github.com/WebAssembly/simd/blob/master/proposals/simd/BinarySIMD.md
to make it easier to spot missing instructions.

* [wast mode] Complete SIMD instructions

This finished the set of SIMD instructions 178 of them in total, also
sorted tests by their ordering in
https://github.com/WebAssembly/simd/blob/master/proposals/simd/BinarySIMD.md.

* [sas mode] Add missing keywords

I've noticed these few are missing. All from PROC MIXED

* [vim bindings] Document events fired by vim mode

* Fix line-wise pasting on Chrome Windows

Closes codemirror#6337

* [hardwrap addon] introduce forceBreak

* [hardbreak addon] Adjust formatting

Issue codemirror#6338

* Add support for import expressions.

Committer: Axel Lewenhaupt <axel@x2d.org>

* [soy mode] Support template type


Co-authored-by: Axel Lewenhaupt <lewenhaupt@google.com>

* [soy mode] Add support for index in for loops

- Fix variable scrope issue with list comprehensions.

Co-authored-by: Axel Lewenhaupt <lewenhaupt@google.com>

* [sql-hint addon] Treat single quotes like double quotes when looking at tokens

See https://discuss.codemirror.net/t/codemirror-ignore-show-hints-if-the-class-is-cm-string/2513

* Stop linking to the github wiki

* [show-hint addon] Introduced option 'scrollMargin'

* Mark version 5.56.0

* [vim bindings] Support tag text objects in xml / htmlmixed mode

User can use `t` to operate on tag text objects. For example, given the
following html:

```
<div>
  <span>hello world!</span>
</div>
```

If the user's cursor (denoted by █) is inside "hello world!":

```
<div>
  <span>hello█world!</span>
</div>
```

And they enter `dit` (delete inner tag), then the text inside the
enclosing tag is deleted -- the following is the expected result:

```
<div>
  <span></span>
</div>
```

If they enter `dat` (delete around tag), then the surrounding tags are
deleted as well:

```
<div>
</div>
```

This logic depends on the following:

- mode/xml/xml.js
- addon/fold/xml-fold.js
- editor is in htmlmixedmode / xml mode

Caveats

This is _NOT_ a 100% accurate implementation of vim tag text objects.
For example, the following cases noop / are inconsistent with vim
behavior:

- Does not work inside comments:
  ```
  <!-- <div>broken</div> -->
  ```
- Does not work when tags have different cases:
  ```
  <div>broken</DIV>
  ```
- Does not work when inside a broken tag:
  ```
  <div><brok><en></div>
  ```

This addresses codemirror#3828.

* Fix plantuml mode title

* Add csv simple mode

* Update links and meta

* Fix MIME type

* [real-world uses] Add CodeMirror-Record (codemirror#6360)

* [real-world uses] Add Violentmonkey

* [css] add missing 1) property all, 2) media feature prefers-color-scheme

* [mode meta] Escape dot in mode's filename regex

* [comment addon] Keep selection in front of closing marker when block-commenting

... with fullLines==false when the end of the selection is directly on the closing
marker.

Closes codemirror#6375

* [julia mode] Make sure dedent tokens end in a word boundary

Closes codemirror#6376

* [css mode] Add missing standard property names per MDN

* [css] missing CSS property values -
for mask-image, mask-origin, touch-action just added

* Mark as version 5.49.6

* Document the scrollpastend addon

Closes codemirror#6381

* Add issue and pr templates that warn about common problems

* Add graphviz simple mode

* Mark as version 5.49.7

* Fix modeInfo might not be initialized first

* Mark as version 5.49.8

* chore: update package namespace

* [nsis mode] Add NSIS 3.06 commands

* Annotate scrollbar when matches are folded

* [annotatescrollbar addon] Simplify visual-line finding

Issue codemirror#6388

* [xml-hint addon] Allow attribute values function to return a Promise

* Check state.pending length

* Fix csv regex undefined matching group

Ref: codemirror#5374 (comment)

* Fix state.pending might be empty array

* Improve csv token colorization

* Add warnings for now

* Mark as version 5.49.9

* Recognise Cmd key in Firefox

* Fix keyName function for Cmd key

Corrects return value, expected "Mod" instead of "Cmd-Mod".

* Mark version 5.57.0

* [real-world uses] Add Intervue

* Upgrade markdown_math.js for 5.57.0

* Mark version 5.57.1

* chore: run build and release before publish instead of install

* chore: run build and release before publish instead of install

* Mark as version 5.57.2

* [ruby mode] Add keyword lists as a hintWords helper

* [javascript mode] Improve handling of &&, ||, and ?? operators

Closes codemirror#6394

* Don't default vim demo to contenteditable

That option was apparently left over from a debugging session

* [vim] Add black hole register

* Add desmos sponsor link

* Make backspace delete by codepoint

Closes codemirror#6408

* Fix bug causing a deleted editor to continue believing it had focus

Which kept the cursor blink and input poll intervals alive, leaking
memory.

Closes codemirror#6410

* Suppress focus outline for scrollbar elements

Issue codemirror#6412

* Add vim emulation support for `gn` and `gN`.

If we are given the following snippet of text:

```
A green green sky.
  _
```

We can search for the word "green" with `/green`, and then use `gn` to
select the next occurrence of "green" in visual mode.

```
A green green sky.
  -----
```

Alternatively, we can use `cgn` and then enter the word "blue" to change the
word "green" to "blue".

```
A blue green sky.
```

Then we can use the `.` operator to repeat the change:

```
A blue blue sky.
```

Addresses codemirror#3851.

* Fix drawing of marked text with only attributes

Closes codemirror#6414

* [lint addon] Use separate CSS classes for common lint styles

This changes lint.css to be less reliant on the predefined severities
(error and warning), in turn making it easier to define custom ones.
Now all that needs to be done in order to define a new severity, e.g.
`note`, is to add the following CSS:

```css
/* underline */
.CodeMirror-lint-mark-note {
  background-image: ...;
}

/* icon */
.CodeMirror-lint-marker-note, .CodeMirror-lint-message-note {
  background-image: ...;
}
```

Previously, it was necessary to copy many styles that were only
available under the `CodeMirror-lint-*-error` and
`CodeMirror-lint-*-warning` classes.

* [lint addon] Put error CSS after warning

By swapping the CSS rules, the error rules take priority in case there
are markers with both severities on the same token. That token is now
underlined red instead of yellow, making it consistent with how errors
take priority in the gutter.

* Set the readonly attribute on the hidden textarea when the editor is read-only

This prevents cut/paste from showing up in the context menu on Chrome
(but doesn't help on Firefox).

Closes codemirror#6418

* Update placeholder visibility during composition

Closes codemirror#6420:

* Mark version 5.58.0

* Fix use of ES6 in addon

* [placeholder addon] Fix composition handling

Issue codemirror#6422

* Mark version 5.58.1

* [julia mode] Fix infinite recursion

I couldn't figure out what the original code was intended to do, but
I've tried to fix the problem without changing it more than necessary.

Closes codemirror#6428

* Fixes codemirror#6331. Backticks are stripped from SQL query words before comparison

* [tern demo] Use unpkg, now that the URL structure of ternjs.net changed

* Remove link to gitter room

It never took off, and I very much prefer communicating through the forum
and bug tracker.

* Fixes codemirror#6402. Adds option to turn off highlighting of non-standard CSS properties

* Fix doc/releases.html copy-paste mistake

* Support disableAutoIncrementMarkdownListNumbers
 option

* Disable incrementRemainingMarkdownListNumbers

* Fix bullet not assigned

* Mark as version 5.57.3

* Fix horizontal scrolling-into-view with non-fixed gutters

Closes codemirror#6436

* [javascript mode] Fix potentially-exponential regexp

* [sparql mode] Improve parsing of IRI atoms

* Do not treat the opening '<' of an expanded IRI atom as an operator

The existing code would not highlight the IRI atom "<foo#bar>" in the following line as an atom.
FILTER( ?x = "42"^^<foo#bar> )
for example everything after the # would be highlighted as a comment. This is because the sequence "^^<" while all "operator characters", are not all SPARQL operators in this case: the "<" introduces the IRI atom. I special-case the "^^".

* Improve PN_LOCAL parsing to SPARQL 1.1

The following legal sequences of characters from SPARQL 1.1 are additionally parsed as being the right-hand-side of a prefixed IRI.
1) Colons
2) PERCENT escaping
3) PN_LOCAL_ESCAPE escaping

* [javascript mode] Don't indent in template strings

Closes codemirror#6442

* [stylus mode] Recognize "url-prefix" token properly

* Add WebAssembly to meta

* Mark version 5.58.2

Co-authored-by: Marijn Haverbeke <marijn@haverbeke.nl>
Co-authored-by: leaf <node_github@163.com>
Co-authored-by: T. Brandon Ashley <tbash@users.noreply.github.com>
Co-authored-by: Olivia Ytterbrink <olivia@ytterbrink.com>
Co-authored-by: Opender Singh <opender94@gmail.com>
Co-authored-by: Aditya Toshniwal <aditya.toshniwal@enterprisedb.com>
Co-authored-by: Axel Lewenhaupt <axel@x2d.org>
Co-authored-by: Axel Lewenhaupt <lewenhaupt@lewenhaupt-macbookpro2.roam.corp.google.com>
Co-authored-by: Hanno Fellmann <fellmann@users.noreply.github.com>
Co-authored-by: Jan T. Sott <jan@idleberg.com>
Co-authored-by: elpnt <39664774+elpnt@users.noreply.github.com>
Co-authored-by: James Cockshull <james.cockshull@gmail.com>
Co-authored-by: antosarho <tsarhanis@gmail.com>
Co-authored-by: nightwing <amirjanyan@gmail.com>
Co-authored-by: David Rodrigues <david.proweb@gmail.com>
Co-authored-by: kvncp <kevincpeterson@gmail.com>
Co-authored-by: Roman Janusz <romeqjanoosh@gmail.com>
Co-authored-by: Teja <tejasrivastav@gmail.com>
Co-authored-by: vamshi.revu <vamshi.revu@servicenow.com>
Co-authored-by: Jay Contonio <jay@conton.io>
Co-authored-by: rvalavicius <rytis.valavicius@gmail.com>
Co-authored-by: mtaran-google <mtaran@google.com>
Co-authored-by: Max Wu <jackymaxj@gmail.com>
Co-authored-by: Hein Htat <heinthuhtat@gmail.com>
Co-authored-by: Ilya Zverev <ilya@zverev.info>
Co-authored-by: Ilya Zverev <zverik@textual.ru>
Co-authored-by: clone-it <61330489+clone-it@users.noreply.github.com>
Co-authored-by: Yukai Huang <yukaihuangtw@gmail.com>
Co-authored-by: Patrick Kettner <patrickkettner@gmail.com>
Co-authored-by: Erik Welander <ewelander@google.com>
Co-authored-by: Matthew Casperson <matthewcasperson@gmail.com>
Co-authored-by: benhormann <benhormann@users.noreply.github.com>
Co-authored-by: Alex Churchill <al.churchill@gmail.com>
Co-authored-by: BrianHung <brianhung@berkeley.edu>
Co-authored-by: Aditya Toshniwal <aditya.toshniwal14@gmail.com>
Co-authored-by: Fons van der Plas <fonsvdplas@gmail.com>
Co-authored-by: ianhi <ianhuntisaak@gmail.com>
Co-authored-by: Tim Gates <tim.gates@iress.com>
Co-authored-by: cBiscuit87 <36653704+cBiscuit87@users.noreply.github.com>
Co-authored-by: Mélanie Chauvel <perso@hack-libre.org>
Co-authored-by: Roberto Vidal <vidal.roberto.j@gmail.com>
Co-authored-by: d8888 <smallt@gmail.com>
Co-authored-by: Benedikt Meurer <bmeurer@google.com>
Co-authored-by: Dinindu D. Wanniarachchi <12568779+DininduWanniarachchi@users.noreply.github.com>
Co-authored-by: John Chen <johnchen902@gmail.com>
Co-authored-by: Tim van der Lippe <TimvdLippe@users.noreply.github.com>
Co-authored-by: Peter László <ptrlaszlo@gmail.com>
Co-authored-by: Sam Rawlins <srawlins@google.com>
Co-authored-by: Boris K <kubiakboris@gmail.com>
Co-authored-by: Ajin Abraham <ajin25@gmail.com>
Co-authored-by: Jack Douglas <jack@douglastechnology.co.uk>
Co-authored-by: Siddhartha Gunti <siddhartha.gunti191@gmail.com>
Co-authored-by: ZeeshanNoor <zyshan.noor@gmail.com>
Co-authored-by: Ealton <longjdai@gmail.com>
Co-authored-by: Ng Zhi An <zhin@google.com>
Co-authored-by: Paul Schmidt <schmidtpaul@hotmail.de>
Co-authored-by: Kaushik Kulkarni <kaushikcfd@gmail.com>
Co-authored-by: Axel Lewenhaupt <lewenhaupt@google.com>
Co-authored-by: Bin Ni <nibin@quantil.com>
Co-authored-by: Howard <howard.jing@gmail.com>
Co-authored-by: Haoran Yu <haoran_yu@hotmail.com>
Co-authored-by: orionlee <orionlee@yahoo.com>
Co-authored-by: Lucas Buchala <lucasbuchala@gmail.com>
Co-authored-by: tokafew420 <tokafew420@gmail.com>
Co-authored-by: Leo Baschy <srguiwiz12@nrvnr.com>
Co-authored-by: Intervue <62877278+Intervue@users.noreply.github.com>
Co-authored-by: Howard Jing <howardjing@google.com>
Co-authored-by: Adrian Kunz <clashsoft@hotmail.com>
Co-authored-by: Nina Pypchenko <22447785+nina-py@users.noreply.github.com>
Co-authored-by: Mark Boyes <mark.boyes@oxfordsemantic.tech>
Co-authored-by: tophf <tophf@gmx.com>
Co-authored-by: David R. Myers <davidrmyersii@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants