Files
vscode/extensions/json-language-features/server
Benjamin Pasero 06df95754d bring titlebarplus up to date
* Merge NPM Scripts: Added configuration option to change default click action #49282

* fix #50560

* Fix getmac test (#48804)

* Cleaning up some typos in vscode.d.ts and vscode.proposed.d.ts (#50533)

* yarn.lock changes

* grid - log serialized state if restoring failed

* Fixes #50382: Align .mtku with .detected-link

* debug issues back to isidorn

* Hide interactive playground commands from command palette (fixes #49706)

* grid - drop outline as focus indication and rely on dimmed state

* grid - allow to close empty group when closing all editors of a group

* grid - get preferredSize from grid

* Fixes #43003: Cannot specify a global problemMatcher in tasks.json

* cleanup integrated terminal support for debugging

* grid - action wording tweaks

* #45663 Use core translations asset

* grid - allow to close dirty diff editor if master is still opened in same group

* Support to run npm install from a package node

* grid - log previous UI state upon error

* grid - stronger border top color

otherwise when a tab is showing in a vertical split, the border collides with the sash border

* remove todo

* do not append logLevel

#47774

* Implement Go To Next/Previous Breakpoint editor actions

* Include enabledOnly in debug model interface

* remove from schema

#47774

* #45663 fix compilations

* change openBreakpointSource to use IBreakpoint

* return passed context if resourceOrContext is not useful

* fix off by one issue

* Simplify implementation

* return context if it has a groupId

* polish

* Fixes Microsoft/monaco-editor#891: Focus editor when returning from context menu

* go to next / previosu breakpoint minor polish

* Add Endgame for 1.24

* fix index computing for editor close case

* Fix #49145

- Enable/Disable viewlets by views when context
- Move viewlet enablement/disablement to views service
- Fix - adopt if a viewlet extension is disabled/removed

* Avoid command palette entry (#49340)

* [handlebars] code-folding algorithm is less useful than Indentation-based one. Fixes #48457

* use upper lang id

* Fixes #49378

* #49145 Store placeholder states for all viewlets

* Add `logicalLine` argument to `mutlicursor.insertBelow` and `mutlicursor.insertAbove`

* Removed duplicate loop

* eliminate code duplication; use resolveWorkspaceFolder()

* #45663 Get all asset types

* [css] update service

* [html] update services

* grid - fix compile

* add User-Id to marketplace build requests

* Improve rendererType description

Fixes #50617

* fix #50672

* Fixes #49173

* fix #50321

* fix #50670

* Install option not needed when we have Install and Restart Fixes #50669

* Fixes #50616, Showing/hiding details in Issue Reporter resets scroll position

* Fix #50642, fix #50673

* Issue reporter and process explorer windows should close when the parent window closes, fixes #50716

* Issue Reporter should clear the error state when selecting an extension, fixes #50702

* Extracting methods

* Make sure we update the webview's state on setState

* Avoid prompting for same file type in the same session #50537

* Use language name instead of locale in the prompt #50738

* Use correct failed error code for webview resource load error

* Mark unused parameter

* Restore restart

* Try serializing webviews even if they have not called setState

Fixes #50752

* Change parameter name to match interface name

Fixes #50745

* Fix non-serializable webviews being revived if they called setState

* Include recommended extensions in telemetry events to determine success

* Fix #49777 - Emmet balance In after balance out should go back to initial selection and not first child (#49996)

* Update Emmet - balance.ts

* Cover all cases

* Update prompt msg Fixes #50738

* Fix #50632

* search-rg has no icon

* EH search - replace search.enableSearchProviders with a search-rg specific setting

* fix #50742

* fix #50691

* part of #50760

* smoke: uncomment debug suite

* smoketest: use yarn

* grid - allow to close empty groups via middle click (#50733)

* careful with path comparisons on windows

related to #50760

* smoke: run yarn verbose

* fix #50710

* Improve description (#43208)

* fix #50722

* Fix #50663

* Fix #47586

* fixes #50609

* fixes #50026

* 💄

* fix  #50773

* improve perf of findId and getElementById, #50575

* don't show outline when there are more then 7500 symbols, #50575

* fix typos

* polish for #50667

* fix #50700

* grid keep sizing after branch node demotion

fixes #50564

* grid - for now remove editorGroup.activeEmptyBackground

* fix #50726

* grid: resize views when branch is demoted

fixes #50675

* fix #50727

* fix #50734

* remove preview rant from search.location

* splitview: dont propagate white-sapce property

fixes #50720

* fix #50774

* Fixes #50296

* fix  #50207

* Fixes #24670: Add API to determine if the task service supports parallel task execution.

* fix #50741

* Fixes  #49400: Cannot read property 'then' of undefined

* Fix #50717

* Fix #48901

* polish debug.toolBarLocation

fixes #50786

* Fix #50717

* missing compilation

* Fix #48225

* fix #50711

* Fix errors installing extension from Welcome page (fixes #50753)

* fixes #50794

* fixes #50787

* continuous build: use vsts npm feed

* Fix for #50792: empty pre post scripts not rendered properly

* Fix #50728

* continuous build: use vsts feed

* Fix for #50792 npm exclude doesn´t work for folder names

* Move previewOptions, #50788

* build: remove npm auth

* better fix for #50710

* Revert "Merge pull request #49790 from usernamehw/raw_settings"

This reverts commit f92a162b41, reversing
changes made to fc710af792.

* Remove unused variable

* Fix regression in C# TextMate grammar related to lambda parameters

This tweak fixes a regression recently introduced in the C# TextMate grammar around
implicitly-typed lambda parameters.

* https://github.com/dotnet/csharp-tmLanguage/issues/119
* https://github.com/dotnet/csharp-tmLanguage/issues/120

* Fix parameter not being escaped

Fixes #49057

* wip: grid.getNeighborViews

* Make sure we use normalized path for compare

Fixes #50760

(the path should already have been normalized at this point so I don't think there is any user impact)

* Clean up importModuleSpecifier wording

Fixes #50817

* Remove duplicate strings and small cleanup

* Spelling fix Ouoting -> Quoting

* Restore default settings editor keybinding

* Dont trigger emmet for # in selectors Fixes #49269

* Hide settings editor feedback button in stable

* Use better colors for markdown code blocks

* Moving webview api back to proposed for more polishing

#49022

* Shorten showUnused setting name

Fixes #50648

* fix #50678

* Don't include imports in js/ts document symbol results

Fixes #50829

* smoketest: remove verbose from yarn

* smoketest: clear state from failing search tests

* minor rename

* Fix markdown preview not setting context properly on first creation

Fixes #50558

* smoketest: update to package-lock.json

fixes #50857

* smoketest: bring back search tests

* #48901 Expand by default only in custom viewlets

* fixes #50812

* open editors: clear focus when group without editors is active

fixes #50563

* Fix MaxNumber incrementFileName bug

* Fixes #48758: Do not import standalone editor modules

* fixes #50864

* Use `MAX_SAFE_SMALL_INTEGER`

* Fixes #50858: Task api is still marked as proposed

* fixes #50737

* fix #50867

* Fix: showQuickPick keeps showing infinite progress (fixes #50863)

* Clarify for translation (fixes #50634)

* fixes #50870

* fix #50479

* grid - todo@grid => todo@ben

* grid - adopt new getNeighborViews() method

* grid - add workbench.action.closeEditorsAndGroup

* open editors: close group action

fixes #50625

* open editors: use actionRunner for contexts

fixes #50621

* [css][html] update service

* grid: getNeighborViews

* grid - adopt wrapping

* Some menu action clients (ActionBar) handle alternative actions on their own so the alternative actions should be ignored

fixes #50581

* fillInActionBarActions and fillInContextMenuActions for clarity

* Remove inconsistent use of active in terminal API

Related #48434

* Try using fixAllDescription for js/ts quick fixes

Fixes #42549

* Fixes #50828, code-insiders --status triggered exception in main process

* Pick up ts 2.9.1 final

* Fix for #50868 and #50884

* Still gray out vars even if user has disabled suggestions

Fixes #50890

* grid: fix neighbor npe issue

* grid: more getNeighborViews tests

* grid: use boundaries for neighbor finding

* grid: getNeighborViews perf

* grid: add todo

* 2018-05-31. Merged in translations from Transifex.

* Update GDPR annotation

* update message

* Add specific `refactor.move` scope for js/ts move to new file action

* Use localized language name when available

* Add proper contribution schema for ts server pluguins

#50682

* Fix extra word

* Fix #50909 - add link to new settings editor from old one

* Left-align settings editor preview prompt

* grid - fix issues with touchbar updating

* grid - use viewColumnToEditorGroup in more places

* grid - close all groups should preserve first group

* Reapply fix for #50790

* grid - assign some default keybindings for focus group

* Fixes #50763: All running Visual Studio code instances shutdown all at once

* grid - 💄

* fixes #50926

* show alternative actions when alt is pressed, not only on mouse over

* open editors: click on groups should activate them

* update description (for #50677)

* Fix #50835

* grid - tweak some groups access order

* one more time, fix #50321

* beware of keybinding command null arguments

fixes #50821

* grid - prevent multiple confirmation dialogs for the same editor to show up (for  #50539)

* smoketest: go-to-definition is flaky

fixes #50944
fixes #49107

* Fixes #50943: TSC version 2.9.x in watch mode prints different end compile message

* grid - fix bad === for editors

* 💄 grid, cleanup getViews()

* Update distro commit and third party notices

* Use localizedLanguageName instead of languageNameLocalized which doesnt exist

* Remove now unneeded any

* Make sure unused diags are still updated when suggestions are disabled

Fixes #50890

* Fix unused var

* Update version

* Update issue templates, #49380

* Fix #50893 - escape regex chars when copy search string from editor

* Fix #50985 - don't take editor text when toggling search details
2018-06-04 10:44:46 -07:00
..
2018-06-04 10:44:46 -07:00
2018-06-04 10:44:46 -07:00
2018-03-21 16:27:27 +01:00
2018-06-04 10:44:46 -07:00

VSCode JSON Language Server

NPM Version NPM Downloads NPM Version

The JSON Language server provides language-specific smarts for editing, validating and understanding JSON documents. It runs as a separate executable and implements the language server protocol to be connected by any code editor or IDE.

Capabilities

Server capabilities

The JSON language server supports requests on documents of language id json and jsonc.

  • json documents are parsed and validated following the JSON specification.
  • jsonc documents additionally accept single line (//) and multi-line comments (/* ... */) and accepts trailing commas. JSONC is a VSCode specific file format, intended for VSCode configuration files, without any aspirations to define a new common file format.

The server implements the following capabilities of the language server protocol:

  • Code completion for JSON properties and values based on the document's JSON schema or based on existing properties and values used at other places in the document. JSON schemas are configured through the server configuration options.
  • Hover for values based on descriptions in the document's JSON schema.
  • Document Symbols for quick navigation to properties in the document.
  • Document Colors for showing color decorators on values representing colors and Color Presentation for color presentation information to support color pickers. The location of colors is defined by the document's JSON schema. All values marked with "format": "color-hex" (VSCode specific, non-standard JSON Schema extension) are considered color values. The supported color formats are #rgb[a] and #rrggbb[aa].
  • Code Formatting supporting ranges and formatting the whole document.
  • Diagnostics (Validation) are pushed for all open documents
    • syntax errors
    • structural validation based on the document's JSON schema.

In order to load JSON schemas, the JSON server uses NodeJS http and fs modules. For all other features, the JSON server only relies on the documents and settings provided by the client through the LSP.

Client requirements:

The JSON language server expects the client to only send requests and notifications for documents of language id json and jsonc.

The JSON language server has the following dependencies on the client's capabilities:

  • Code completion requires that the client capability has snippetSupport. If not supported by the client, the server will not offer the completion capability.
  • Formatting support requires the client to support dynamicRegistration for rangeFormatting. If not supported by the client, the server will not offer the format capability.

Configuration

Settings

Clients may send a workspace/didChangeConfiguration notification to notify the server of settings changes. The server supports the following settings:

  • http

    • proxy: The URL of the proxy server to use when fetching schema. When undefined or empty, no proxy is used.
    • proxyStrictSSL: Whether the proxy server certificate should be verified against the list of supplied CAs.
  • json

    • format
      • enable: Whether the server should register the formatting support. This option is only applicable if the client supports dynamicRegistration for rangeFormatting
      • schema: Configures association of file names to schema URL or schemas and/or associations of schema URL to schema content.
        • fileMatch: an array or file names or paths (separated by /). * can be used as a wildcard.
        • url: The URL of the schema, optional when also a schema is provided.
        • schema: The schema content.
	{
        "http": {
            "proxy": "",
            "proxyStrictSSL": true
        },
        "json": {
            "format": {
                "enable": true
            },
            "schemas": [
                {
                    "fileMatch": [
                        "foo.json",
                        "*.superfoo.json"
                    ],
                    "url": "http://json.schemastore.org/foo",
                    "schema": {
                    	"type": "array"
                    }
                }
            ]
        }
    }

Schema configuration and custom schema content delivery

JSON schemas are essential for code assist, hovers, color decorators to work and are required for structural validation.

To find the schema for a given JSON document, the server uses the following mechanisms:

  • JSON documents can define the schema URL using a $schema property
  • The settings define a schema association based on the documents URL. Settings can either associate a schema URL to a file or path pattern, and they can directly provide a schema.
  • Additionally, schema associations can also be provided by a custom 'schemaAssociations' configuration call.

Schemas are identified by URLs. To load the content of a schema, the JSON language server tries to load from that URL or path. The following URL schemas are supported:

  • http, https: Loaded using NodeJS's HTTP support. Proxies can be configured through the settings.
  • file: Loaded using NodeJS's fs support.
  • vscode: Loaded by an LSP call to the client.

Schema associations notification

In addition to the settings, schemas associations can also be provided through a notification from the client to the server. This notification is a JSON language server specific, non-standardized, extension to the LSP.

Notification:

  • method: 'json/schemaAssociations'
  • params: ISchemaAssociations defined as follows
interface ISchemaAssociations {
	[pattern: string]: string[];
}
  • keys: a file names or file path (separated by /). * can be used as a wildcard.
  • values: An array of schema URLs

Schema content request

The schema content for schema URLs that start with vscode:// will be requested from the client through an LSP request. This request is a JSON language server specific, non-standardized, extension to the LSP.

Request:

  • method: 'vscode/content'
  • params: string - The schema URL to request. The server will only ask for URLs that start with vscode://
  • response: string - The content of the schema with the given URL

Schema content change notification

When the client is aware that a schema content has changed, it will notify the server through a notification. This notification is a JSON language server specific, non-standardized, extension to the LSP. The server will, as a response, clear the schema content from the cache and reload the schema content when required again.

Notification:

  • method: 'json/schemaContent'
  • params: string the URL of the schema that has changed.

Try

The JSON language server is shipped with Visual Studio Code as part of the built-in VSCode extension json-language-features. The server is started when the first JSON file is opened. The VSCode JSON documentation for detailed information on the user experience and has more information on how to configure the language support.

Integrate

If you plan to integrate the JSON language server into an editor and IDE, check out this page if there's already an LSP client integration available.

You can also launch the language server as a command and connect to it. For that, install the json-language-server npm module:

npm install -g json-language-server

Start the language server with the json-language-server command. Use a command line argument to specify the prefered communication channel:

json-language-server --node-ipc
json-language-server --stdio
json-language-server --socket=<port>

To connect to the server from NodeJS, see Remy Suen's great write-up on how to communicate with the server through the available communication channels.

Participate

The source code of the JSON language server can be found VSCode repository at extensions/json-language-features/server. File issues and pull requests in the VSCode GitHub Issues. See the document How to Contribute on how to build and run from source.

Most of the functionality of the server is located in libraries:

Help on any of these projects is very welcome.

Please see also our Code of Conduct.

License

Copyright (c) Microsoft Corporation. All rights reserved.

Licensed under the MIT License.