Added vscode settings

This commit is contained in:
Kristofers Solo 2022-04-28 20:54:44 +03:00
parent 245c3ca779
commit 837a479d82
25004 changed files with 2499800 additions and 0 deletions

View File

@ -0,0 +1 @@
{"ms-vscode.references-view-0.0.86":true,"ms-vscode.js-debug-companion-1.0.16":true,"magicstack.magicpython-1.1.0":true,"yzhang.markdown-all-in-one-3.4.3":true}

View File

@ -0,0 +1,3 @@
# These are supported funding model platforms
github: aaron-bond

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Language="en-US" Id="better-comments" Version="3.0.0" Publisher="aaron-bond" />
<DisplayName>Better Comments</DisplayName>
<Description xml:space="preserve">Improve your code commenting by annotating with alert, informational, TODOs, and more!</Description>
<Tags></Tags>
<Categories>Formatters</Categories>
<GalleryFlags>Public</GalleryFlags>
<Properties>
<Property Id="Microsoft.VisualStudio.Code.Engine" Value="^1.65.0" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionDependencies" Value="" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionPack" Value="" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionKind" Value="ui,workspace" />
<Property Id="Microsoft.VisualStudio.Code.LocalizedLanguages" Value="" />
<Property Id="Microsoft.VisualStudio.Services.Links.Source" Value="https://github.com/aaron-bond/better-comments.git" />
<Property Id="Microsoft.VisualStudio.Services.Links.Getstarted" Value="https://github.com/aaron-bond/better-comments.git" />
<Property Id="Microsoft.VisualStudio.Services.Links.GitHub" Value="https://github.com/aaron-bond/better-comments.git" />
<Property Id="Microsoft.VisualStudio.Services.Links.Support" Value="https://github.com/aaron-bond/better-comments/issues" />
<Property Id="Microsoft.VisualStudio.Services.Links.Learn" Value="https://github.com/aaron-bond/better-comments/blob/master/README.md" />
<Property Id="Microsoft.VisualStudio.Services.Branding.Color" Value="#e3f4ff" />
<Property Id="Microsoft.VisualStudio.Services.Branding.Theme" Value="light" />
<Property Id="Microsoft.VisualStudio.Services.GitHubFlavoredMarkdown" Value="true" />
</Properties>
<License>extension/LICENSE.md</License>
<Icon>extension/icon.png</Icon>
</Metadata>
<Installation>
<InstallationTarget Id="Microsoft.VisualStudio.Code"/>
</Installation>
<Dependencies/>
<Assets>
<Asset Type="Microsoft.VisualStudio.Code.Manifest" Path="extension/package.json" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Content.Details" Path="extension/README.md" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Content.Changelog" Path="extension/CHANGELOG.md" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Content.License" Path="extension/LICENSE.md" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Icons.Default" Path="extension/icon.png" Addressable="true" />
</Assets>
</PackageManifest>

View File

@ -0,0 +1,229 @@
# Change Log
## [3.0.0] (2022-??-??)
### Features
* Adding built in support for all languages ([e1373bf](https://github.com/aaron-bond/better-comments/commit/e1373bf)). Massive thanks to _edgardmessias_
### House Keeping
* Version bumped all dependencies
* Language support is now driven from configuration files. This means that if you have an extension which informs VSCode about a language, Better Comments will know about it too!
* Problems are likely to arise with this change, but it allows a lot more users to benefit from Better Comments without needing an explicit update for the extension adding support.
__With version 3.0.0 comes the addition of the support button on the Github page for [Better Comments](https://github.com/sponsors/aaron-bond)__
__If you feel my work on this extension has earned me a coffee, that's the place to do it!__
_**Thanks!**_
## [2.1.0] (2020-07-13)
### Features
* Adding Bold, Italic, and Underline ([e41ccc4](https://github.com/aaron-bond/better-comments/commit/e41ccc4)), closes [#50](https://github.com/aaron-bond/better-comments/issues/50). Massive thanks to _Fr33maan_
* Adding XML support
* Adding BrightScript support
### Bug Fixes
* Fixing Shaderlab support ([f96049f](https://github.com/aaron-bond/better-comments/commit/f96049f)), closes [#245](https://github.com/aaron-bond/better-comments/issues/245)
* Fixing SASS support ([7decffb](https://github.com/aaron-bond/better-comments/commit/7decffb)), closes [#123](https://github.com/aaron-bond/better-comments/issues/123), [#215](ttps://github.com/aaron-bond/better-comments/issues/215)
## [2.0.5] (2019-05-15)
### Features
* Adding Markdown support ([54e51fb](https://github.com/aaron-bond/better-comments/commit/54e51fb)), closes [#91](https://github.com/aaron-bond/better-comments/issues/91)
* Adding Apex support ([301644e](https://github.com/aaron-bond/better-comments/commit/301644e)), closes [#143](https://github.com/aaron-bond/better-comments/issues/143)
* Adding GenStat support ([a14e24c](https://github.com/aaron-bond/better-comments/commit/a14e24c)), closes [#149](https://github.com/aaron-bond/better-comments/issues/149)
* Adding ColdFusion support ([9e2a4be](https://github.com/aaron-bond/better-comments/commit/9e2a4be)), closes [#135](https://github.com/aaron-bond/better-comments/issues/135)
## [2.0.4] (2019-05-14)
### Bug Fixes
* Fixing Groovy support ([099bcc0](https://github.com/aaron-bond/better-comments/commit/099bcc0)), closes [#150](https://github.com/aaron-bond/better-comments/issues/150)
* Fixing multiline Lua support ([7ca3164](https://github.com/aaron-bond/better-comments/commit/7ca3164)), closes [#151](https://github.com/aaron-bond/better-comments/issues/151)
### Features
* Supporting remote development, closes [#147](https://github.com/aaron-bond/better-comments/issues/147). Thanks _mjbvz_
* Adding Elm support, merges [#146](https://github.com/aaron-bond/better-comments/pull/146). Thanks _ChristianPredebon_
## [2.0.3] (2018-11-04)
### Features
* Adding Stylus support ([a57ad30](https://github.com/aaron-bond/better-comments/commit/a57ad30)), merges [#112](https://github.com/aaron-bond/better-comments/issues/112). Thanks _vednoc_
* Adding ASCIIDoc support ([60a5f5f](https://github.com/aaron-bond/better-comments/commit/60a5f5f)), closes [#107](https://github.com/aaron-bond/better-comments/issues/107)
## [2.0.2] (2018-10-10)
### Bug Fixes
* Fixing single line CSS comments([469a93f](https://github.com/aaron-bond/better-comments/commit/469a93f)), closes [#109](https://github.com/aaron-bond/better-comments/issues/109)
* Fixing support for multiline Haskell comments ([498016a](https://github.com/aaron-bond/better-comments/commit/498016a)), closes [#102](https://github.com/aaron-bond/better-comments/issues/102)
### Features
* Adding D support ([c6a619c](https://github.com/aaron-bond/better-comments/commit/c6a619c)), closes [#99](https://github.com/aaron-bond/better-comments/issues/99)
## [2.0.1] (2018-09-26)
### Bug Fixes
* Fixing issue where JSDoc block comments weren't being detected properly ([7cb9126](https://github.com/aaron-bond/better-comments/commit/7cb9126)), closes [#101](https://github.com/aaron-bond/better-comments/issues/101)
## [2.0.0] (2018-09-20)
### Features
* Block comments for lots and lots of languages. Please raise a bug or feature request if I've missed any!
* Added support for HTML
* Added support for Twig
* Added support for Puppet
### House Keeping
* I decided a major version release was appropriate for this one as it's a pretty huge set of changes in terms of how the extension functions
* It's now possible to add block comment formatting for any new languages as required. Sorry it took so long!
## [1.3.0] (2018-09-13)
### Features
* Adding support for Bibtex/Biblatex ([d1f06b6](https://github.com/aaron-bond/better-comments/commit/d1f06b6)), thanks to _JavierReyes945_, merges [#96](https://github.com/aaron-bond/better-comments/pull/96)
* Adding support for Verilog HDL ([b368b17](https://github.com/aaron-bond/better-comments/commit/b368b17)), closes [#84](https://github.com/aaron-bond/better-comments/issues/84)
### Bug Fixes
* Fixing multiline comment support for SAS and Stata ([4b40bd9](https://github.com/aaron-bond/better-comments/commit/4b40bd9)), closes [#95](https://github.com/aaron-bond/better-comments/issues/95)
## [1.2.9] (2018-09-08)
### Features
* Adding support for PlantUML ([9a446a3](https://github.com/aaron-bond/better-comments/commit/9a446a3)), thanks to _JavierReyes945_, closes [#94](https://github.com/aaron-bond/better-comments/issues/94)
## [1.2.8] (2018-09-03)
### Features
* Added support for Tcl ([52e6d35](https://github.com/aaron-bond/better-comments/commit/52e6d35)), closes [#92](https://github.com/aaron-bond/better-comments/issues/92)
## [1.2.7] (2018-09-02)
### Features
* Adding support for Flax ([71f6326](https://github.com/aaron-bond/better-comments/commit/71f6326)), merges [#76](https://github.com/aaron-bond/better-comments/issues/76)
* Adding support for multiple languages, closes [#89](https://github.com/aaron-bond/better-comments/issues/89)
* Fortran (modern) ([8762226](https://github.com/aaron-bond/better-comments/commit/8762226))
* SAS ([145e8d3](https://github.com/aaron-bond/better-comments/commit/145e8d3))
* STATA ([eb0f367](https://github.com/aaron-bond/better-comments/commit/eb0f367))
### House Keeping
* Updating README to reflect actual styntax better ([71f9019](https://github.com/aaron-bond/better-comments/commit/71f9019)), merges [#77](https://github.com/aaron-bond/better-comments/issues/77)
* Messed up the incrementing of the version on this one with the gdscript merge so just pushing this as 1.2.7 for convenience
## [1.2.5] (2018-06-04)
### Features
* Adding support for COBOL ([7939ca2](https://github.com/aaron-bond/better-comments/commit/7939ca2)), merges [#34](https://github.com/aaron-bond/better-comments/issues/34)
### Bug Fixes
* Fixing plaintext highlight even when setting is false ([7939ca2](https://github.com/aaron-bond/better-comments/commit/7939ca2)), closes [#73](https://github.com/aaron-bond/better-comments/issues/73)
## [1.2.4] (2018-05-31)
### Features
* Adding new property for tags: **backgroundColor** ([3e7a188](https://github.com/aaron-bond/better-comments/commit/3e7a188)), closes [#66](https://github.com/aaron-bond/better-comments/issues/66)
- default: `transparent`
* Adding support for: PlainText ([27ff774](https://github.com/aaron-bond/better-comments/commit/27ff774)), closes [#39](https://github.com/aaron-bond/better-comments/issues/39)
- PlainText support must be turned on in the settings: `highlightPlainText`
* Adding support for: Vue.js ([2b14d2e](https://github.com/aaron-bond/better-comments/commit/2b14d2e)), closes [#71](https://github.com/aaron-bond/better-comments/issues/71)
* Adding support for: nim ([73a55f6](https://github.com/aaron-bond/better-comments/commit/73a55f6)), merges [#68](https://github.com/aaron-bond/better-comments/issues/68)
* Adding support for: HiveQL and Pig ([e1653ef](https://github.com/aaron-bond/better-comments/commit/e1653ef)), merges [#63](https://github.com/aaron-bond/better-comments/issues/63)
## [1.2.3] (2018-05-20)
### Features
* Adding support for: Dart ([7490b81](https://github.com/aaron-bond/better-comments/commit/7490b81)), closes [#65](https://github.com/aaron-bond/better-comments/issues/65)
* Adding support for: Matlab ([e35541b](https://github.com/aaron-bond/better-comments/commit/e35541b)), closes [#58](https://github.com/aaron-bond/better-comments/issues/58)
### Bug Fixes
* Fixing support for SCSS ([2b3919f](https://github.com/aaron-bond/better-comments/commit/2b3919f)), closes [#60](https://github.com/aaron-bond/better-comments/issues/60)
* Fixing Python to prevent first line of the file being detected as a comment,
([438e0a6](https://github.com/aaron-bond/better-comments/commit/438e0a6)), closes [#61](https://github.com/aaron-bond/better-comments/issues/61)
## [1.2.2] (2018-04-15)
### Features
* Adding support for: JSON with comments ([6f0b330](https://github.com/aaron-bond/better-comments/commit/6f0b330)), closes [#51](https://github.com/aaron-bond/better-comments/issues/51)
* Adding support for: AL ([de86410](https://github.com/aaron-bond/better-comments/commit/de86410)), closes [#54](https://github.com/aaron-bond/better-comments/issues/54)
* Adding support for: TypeScript React (.tsx) ([e884b37](https://github.com/aaron-bond/better-comments/commit/e884b37)), closes [#56](https://github.com/aaron-bond/better-comments/issues/56)
## [1.2.1] (2018-03-20)
### Features
* Adding support for: Terraform ([c5edd8d](https://github.com/aaron-bond/better-comments/commit/c5edd8d)), closes [#48](https://github.com/aaron-bond/better-comments/issues/48)
### Bug Fixes
* Fixing logic to run the decorations properly when switching back from an unsupported language ([756e0e0](https://github.com/aaron-bond/better-comments/commit/756e0e0)), closes [#47](https://github.com/aaron-bond/better-comments/issues/47)
* Fixing decoration of strikethrough on multiline comments to start in the correct location ([c4372e7](https://github.com/aaron-bond/better-comments/commit/c4372e7)), closes [#46](https://github.com/aaron-bond/better-comments/issues/46)
## [1.2.0] (2018-03-19)
### Features
* Adding support for: Clojure, Racket, Lisp ([88e0720](https://github.com/aaron-bond/better-comments/commit/88e0720)), merges [#40](https://github.com/aaron-bond/better-comments/pull/40)
* Adding support for: Yaml ([e9f40a0](https://github.com/aaron-bond/better-comments/commit/e9f40a0)), merges [#37](https://github.com/aaron-bond/better-comments/pull/37)
* Adding support for: Pascal ([655f61f](https://github.com/aaron-bond/better-comments/commit/655f61f)), closes [#41](https://github.com/aaron-bond/better-comments/pull/37)
### Bug Fixes
* Fixing crash when unsupported language is opened in the window ([e9f40a0](https://github.com/aaron-bond/better-comments/commit/e9f40a0)), closes [#35](https://github.com/aaron-bond/better-comments/issues/35)
## [1.1.9] (2018-02-11)
### Features
* Adding support for Julia ([1b24ce1](https://github.com/aaron-bond/better-comments/commit/1b24ce1))
## [1.1.8] (2018-01-23)
### Features
* Adding support for GraphQL ([bcfcefa](https://github.com/aaron-bond/better-comments/commit/bcfcefa)), closes [#28](https://github.com/aaron-bond/better-comments/issues/28)
### Bug Fixes
* Expanding non-JSDoc block comment detection ([dccd467](https://github.com/aaron-bond/better-comments/commit/dccd467)), closes [#20](https://github.com/aaron-bond/better-comments/issues/20)
## [1.1.7] (2018-01-07)
### Bug Fixes
* Fixing comment detection when tabs are used to start the comment ([2f08fb9](https://github.com/aaron-bond/better-comments/commit/2f08fb9)), closes [#25](https://github.com/aaron-bond/better-comments/issues/25), thanks to _bekorn_
## [1.1.6] (2018-01-15)
### Features
* Adding multiple new languages ([586f325](https://github.com/aaron-bond/better-comments/commit/586f325)), thanks to _Jooseppi12_
## [1.1.5] (2018-01-14)
#### Bug Fixes
* Fixing multiline comment detection with non-English characters ([deff42b](https://github.com/aaron-bond/better-comments/commit/deff42b)), closes [#24](https://github.com/aaron-bond/better-comments/issues/24)
## [1.1.4] (2018-01-04)
#### Features
* Adding activation event and new comment type for VB.NET ("vb") ([45199a9](https://github.com/aaron-bond/better-comments/commit/45199a9)), closes [#21](https://github.com/aaron-bond/better-comments/issues/21)
## [1.1.3] (2017-12-22)
#### Features
* Adding activation event for React ("javascriptreact") ([e54ae83](https://github.com/aaron-bond/better-comments/commit/e54ae83)), closes [#19](https://github.com/aaron-bond/better-comments/issues/19)
## [1.1.2] (2017-12-16)
#### Bug Fixes
* Fixed wrong delimiter for Lua ([4bb1e2f](https://github.com/aaron-bond/better-comments/commit/4bb1e2f)), closes [#17](https://github.com/aaron-bond/better-comments/issues/17)
## [1.1.1] (2017-12-12) : Accidental Increment
#### Bug Fixes
* Fixing issue with options configuration ([0a00618](https://github.com/aaron-bond/better-comments/commit/0a00618)), closes [#16](https://github.com/aaron-bond/better-comments/issues/16)
## [1.0.0] (2017-12-06)
#### Bug Fixes
* Fixing support for JSDoc style block comments ([69a36bf](https://github.com/aaron-bond/better-comments/commit/69a36bf)), closes [#13](https://github.com/aaron-bond/better-comments/issues/13)
#### Features
* Adding support for MANY languages ([0e7eab9](https://github.com/aaron-bond/better-comments/commit/0e7eab9d352780bfb303caf090e186c15bdcc77b)), closes [#8](https://github.com/aaron-bond/better-comments/issues/8), [#9](https://github.com/aaron-bond/better-comments/issues/9)
* Adding customisable comment annotation indicators, closes [#11](https://github.com/aaron-bond/better-comments/issues/11)
## [0.1.3] (2017-07-17)
#### Bug Fixes
* Fixing an issue where multi-line comments would not be detected if preceded by some indentation ([c36821b](https://github.com/aaron-bond/better-comments/commit/c36821b))
#### Features
* Adding language support for `Go`
Thanks to **pwebly** for both of these additions :)
## [0.1.2] (2017-07-14)
#### Bug Fixes
* Fixing issue with `TODO` and `:` in multiline comments ([5f4d049](https://github.com/aaron-bond/better-comments/commit/5f4d049)), closes [#5](https://github.com/aaron-bond/better-comments/issues/5)
## [0.1.1] (2017-07-12)
#### Features
* Adding language support for `C` (thanks to _TheWhoAreYouPerson_) ([6f3b852](https://github.com/aaron-bond/better-comments/commit/6f3b852))
* Adding support for multiline comments (special thanks to _kurozael_ for the suggestion and help implementing) ([cc82fca](https://github.com/aaron-bond/better-comments/commit/cc82fca))
- Also adding contribution point for this: **multilineComments**: set this to false to disable
## [0.1.0] (2017-06-15)
#### Features
* Adding new comment type contribution point: **highlightColor** ([07bd22f](https://github.com/aaron-bond/better-comments/commit/07bd22f))
#### Bug Fixes
* Fixing issue where comment format conflicts with linters expecting a space after initial `//` (special thanks to _TobiasBales_)
#### House Keeping
* Added TravisCI config to run unit tests on check in ([bd4b7b2](https://github.com/aaron-bond/better-comments/commit/bd4b7b2))
* Updated README and demo image to show new comment type ([0cbbccb](https://github.com/aaron-bond/better-comments/commit/0cbbccb))
## [0.0.3] (2017-06-09)
Initial release to VSCode marketplace

View File

@ -0,0 +1,8 @@
MIT License
Copyright (c) 2017 Aaron Bond
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,161 @@
# Better Comments
The Better Comments extension will help you create more human-friendly comments in your code.
With this extension, you will be able to categorise your annotations into:
* Alerts
* Queries
* TODOs
* Highlights
* Commented out code can also be styled to make it clear the code shouldn't be there
* Any other comment styles you'd like can be specified in the settings
![Annotated code](https://github.com/aaron-bond/better-comments/raw/HEAD/images/better-comments.PNG)
## Configuration
This extension can be configured in User Settings or Workspace settings.
`"better-comments.multilineComments": true`
This setting will control whether multiline comments are styled using the annotation tags.
When false, multiline comments will be presented without decoration.
`"better-comments.highlightPlainText": false`
This setting will control whether comments in a plain text file are styled using the annotation tags.
When true, the tags (defaults: `! * ? //`) will be detected if they're the first character on a line.
`better-comments.tags`
The tags are the characters or sequences used to mark a comment for decoration.
The default 5 can be modified to change the colors, and more can be added.
```json
"better-comments.tags": [
{
"tag": "!",
"color": "#FF2D00",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "?",
"color": "#3498DB",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "//",
"color": "#474747",
"strikethrough": true,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "todo",
"color": "#FF8C00",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "*",
"color": "#98C379",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
}
]
```
## Supported Languages
* Ada
* AL
* Apex
* AsciiDoc
* BrightScript
* C
* C#
* C++
* ColdFusion
* Clojure
* COBOL
* CoffeeScript
* CSS
* Dart
* Dockerfile
* Elixir
* Elm
* Erlang
* F#
* Fortran
* gdscript
* GenStat
* Go
* GraphQL
* Groovy
* Haskell
* Haxe
* HiveQL
* HTML
* Java
* JavaScript
* JavaScript React
* JSON with comments
* Julia
* Kotlin
* LaTex (inlc. Bibtex/Biblatex)
* Less
* Lisp
* Lua
* Makefile
* Markdown
* Nim
* MATLAB
* Objective-C
* Objective-C++
* Pascal
* Perl
* Perl 6
* PHP
* Pig
* PlantUML
* PL/SQL
* PowerShell
* Puppet
* Python
* R
* Racket
* Ruby
* Rust
* SAS
* Sass
* Scala
* SCSS
* ShaderLab
* ShellScript
* SQL
* STATA
* Stylus
* Svelte
* Swift
* Tcl
* Terraform
* Twig
* TypeScript
* TypeScript React
* Verilog
* Visual Basic
* Vue.js
* XML
* YAML

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -0,0 +1,23 @@
MIT License
Copyright (c) 2012-2018 Aseem Kishore, and [others].
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
[others]: https://github.com/json5/json5/contributors

View File

@ -0,0 +1,234 @@
# JSON5 JSON for Humans
[![Build Status](https://travis-ci.com/json5/json5.svg)][Build Status]
[![Coverage
Status](https://coveralls.io/repos/github/json5/json5/badge.svg)][Coverage
Status]
The JSON5 Data Interchange Format (JSON5) is a superset of [JSON] that aims to
alleviate some of the limitations of JSON by expanding its syntax to include
some productions from [ECMAScript 5.1].
This JavaScript library is the official reference implementation for JSON5
parsing and serialization libraries.
[Build Status]: https://travis-ci.com/json5/json5
[Coverage Status]: https://coveralls.io/github/json5/json5
[JSON]: https://tools.ietf.org/html/rfc7159
[ECMAScript 5.1]: https://www.ecma-international.org/ecma-262/5.1/
## Summary of Features
The following ECMAScript 5.1 features, which are not supported in JSON, have
been extended to JSON5.
### Objects
- Object keys may be an ECMAScript 5.1 _[IdentifierName]_.
- Objects may have a single trailing comma.
### Arrays
- Arrays may have a single trailing comma.
### Strings
- Strings may be single quoted.
- Strings may span multiple lines by escaping new line characters.
- Strings may include character escapes.
### Numbers
- Numbers may be hexadecimal.
- Numbers may have a leading or trailing decimal point.
- Numbers may be [IEEE 754] positive infinity, negative infinity, and NaN.
- Numbers may begin with an explicit plus sign.
### Comments
- Single and multi-line comments are allowed.
### White Space
- Additional white space characters are allowed.
[IdentifierName]: https://www.ecma-international.org/ecma-262/5.1/#sec-7.6
[IEEE 754]: http://ieeexplore.ieee.org/servlet/opac?punumber=4610933
## Short Example
```js
{
// comments
unquoted: 'and you can quote me on that',
singleQuotes: 'I can use "double quotes" here',
lineBreaks: "Look, Mom! \
No \\n's!",
hexadecimal: 0xdecaf,
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
positiveSign: +1,
trailingComma: 'in objects', andIn: ['arrays',],
"backwardsCompatible": "with JSON",
}
```
## Specification
For a detailed explanation of the JSON5 format, please read the [official
specification](https://json5.github.io/json5-spec/).
## Installation
### Node.js
```sh
npm install json5
```
```js
const JSON5 = require('json5')
```
### Browsers
```html
<script src="https://unpkg.com/json5@^2.0.0/dist/index.min.js"></script>
```
This will create a global `JSON5` variable.
## API
The JSON5 API is compatible with the [JSON API].
[JSON API]:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON
### JSON5.parse()
Parses a JSON5 string, constructing the JavaScript value or object described by
the string. An optional reviver function can be provided to perform a
transformation on the resulting object before it is returned.
#### Syntax
JSON5.parse(text[, reviver])
#### Parameters
- `text`: The string to parse as JSON5.
- `reviver`: If a function, this prescribes how the value originally produced by
parsing is transformed, before being returned.
#### Return value
The object corresponding to the given JSON5 text.
### JSON5.stringify()
Converts a JavaScript value to a JSON5 string, optionally replacing values if a
replacer function is specified, or optionally including only the specified
properties if a replacer array is specified.
#### Syntax
JSON5.stringify(value[, replacer[, space]])
JSON5.stringify(value[, options])
#### Parameters
- `value`: The value to convert to a JSON5 string.
- `replacer`: A function that alters the behavior of the stringification
process, or an array of String and Number objects that serve as a whitelist
for selecting/filtering the properties of the value object to be included in
the JSON5 string. If this value is null or not provided, all properties of the
object are included in the resulting JSON5 string.
- `space`: A String or Number object that's used to insert white space into the
output JSON5 string for readability purposes. If this is a Number, it
indicates the number of space characters to use as white space; this number is
capped at 10 (if it is greater, the value is just 10). Values less than 1
indicate that no space should be used. If this is a String, the string (or the
first 10 characters of the string, if it's longer than that) is used as white
space. If this parameter is not provided (or is null), no white space is used.
If white space is used, trailing commas will be used in objects and arrays.
- `options`: An object with the following properties:
- `replacer`: Same as the `replacer` parameter.
- `space`: Same as the `space` parameter.
- `quote`: A String representing the quote character to use when serializing
strings.
#### Return value
A JSON5 string representing the value.
### Node.js `require()` JSON5 files
When using Node.js, you can `require()` JSON5 files by adding the following
statement.
```js
require('json5/lib/register')
```
Then you can load a JSON5 file with a Node.js `require()` statement. For
example:
```js
const config = require('./config.json5')
```
## CLI
Since JSON is more widely used than JSON5, this package includes a CLI for
converting JSON5 to JSON and for validating the syntax of JSON5 documents.
### Installation
```sh
npm install --global json5
```
### Usage
```sh
json5 [options] <file>
```
If `<file>` is not provided, then STDIN is used.
#### Options:
- `-s`, `--space`: The number of spaces to indent or `t` for tabs
- `-o`, `--out-file [file]`: Output to the specified file, otherwise STDOUT
- `-v`, `--validate`: Validate JSON5 but do not output JSON
- `-V`, `--version`: Output the version number
- `-h`, `--help`: Output usage information
## Contributing
### Development
```sh
git clone https://github.com/json5/json5
cd json5
npm install
```
When contributing code, please write relevant tests and run `npm test` and `npm
run lint` before submitting pull requests. Please use an editor that supports
[EditorConfig](http://editorconfig.org/).
### Issues
To report bugs or request features regarding the JSON5 data format, please
submit an issue to the [official specification
repository](https://github.com/json5/json5-spec).
To report bugs or request features regarding the JavaScript implementation of
JSON5, please submit an issue to this repository.
## License
MIT. See [LICENSE.md](./LICENSE.md) for details.
## Credits
[Assem Kishore](https://github.com/aseemk) founded this project.
[Michael Bolin](http://bolinfest.com/) independently arrived at and published
some of these same ideas with awesome explanations and detail. Recommended
reading: [Suggested Improvements to JSON](http://bolinfest.com/essays/json.html)
[Douglas Crockford](http://www.crockford.com/) of course designed and built
JSON, but his state machine diagrams on the [JSON website](http://json.org/), as
cheesy as it may sound, gave us motivation and confidence that building a new
parser to implement these ideas was within reach! The original
implementation of JSON5 was also modeled directly off of Dougs open-source
[json_parse.js] parser. Were grateful for that clean and well-documented
code.
[json_parse.js]:
https://github.com/douglascrockford/JSON-js/blob/03157639c7a7cddd2e9f032537f346f1a87c0f6d/json_parse.js
[Max Nanasy](https://github.com/MaxNanasy) has been an early and prolific
supporter, contributing multiple patches and ideas.
[Andrew Eisenberg](https://github.com/aeisenberg) contributed the original
`stringify` method.
[Jordan Tucker](https://github.com/jordanbtucker) has aligned JSON5 more closely
with ES5, wrote the official JSON5 specification, completely rewrote the
codebase from the ground up, and is actively maintaining this project.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,152 @@
#!/usr/bin/env node
const fs = require('fs')
const path = require('path')
const pkg = require('../package.json')
const JSON5 = require('./')
const argv = parseArgs()
if (argv.version) {
version()
} else if (argv.help) {
usage()
} else {
const inFilename = argv.defaults[0]
let readStream
if (inFilename) {
readStream = fs.createReadStream(inFilename)
} else {
readStream = process.stdin
}
let json5 = ''
readStream.on('data', data => {
json5 += data
})
readStream.on('end', () => {
let space
if (argv.space === 't' || argv.space === 'tab') {
space = '\t'
} else {
space = Number(argv.space)
}
let value
try {
value = JSON5.parse(json5)
if (!argv.validate) {
const json = JSON.stringify(value, null, space)
let writeStream
// --convert is for backward compatibility with v0.5.1. If
// specified with <file> and not --out-file, then a file with
// the same name but with a .json extension will be written.
if (argv.convert && inFilename && !argv.outFile) {
const parsedFilename = path.parse(inFilename)
const outFilename = path.format(
Object.assign(
parsedFilename,
{base: path.basename(parsedFilename.base, parsedFilename.ext) + '.json'}
)
)
writeStream = fs.createWriteStream(outFilename)
} else if (argv.outFile) {
writeStream = fs.createWriteStream(argv.outFile)
} else {
writeStream = process.stdout
}
writeStream.write(json)
}
} catch (err) {
console.error(err.message)
process.exit(1)
}
})
}
function parseArgs () {
let convert
let space
let validate
let outFile
let version
let help
const defaults = []
const args = process.argv.slice(2)
for (let i = 0; i < args.length; i++) {
const arg = args[i]
switch (arg) {
case '--convert':
case '-c':
convert = true
break
case '--space':
case '-s':
space = args[++i]
break
case '--validate':
case '-v':
validate = true
break
case '--out-file':
case '-o':
outFile = args[++i]
break
case '--version':
case '-V':
version = true
break
case '--help':
case '-h':
help = true
break
default:
defaults.push(arg)
break
}
}
return {
convert,
space,
validate,
outFile,
version,
help,
defaults,
}
}
function version () {
console.log(pkg.version)
}
function usage () {
console.log(
`
Usage: json5 [options] <file>
If <file> is not provided, then STDIN is used.
Options:
-s, --space The number of spaces to indent or 't' for tabs
-o, --out-file [file] Output to the specified file, otherwise STDOUT
-v, --validate Validate JSON5 but do not output JSON
-V, --version Output the version number
-h, --help Output usage information`
)
}

View File

@ -0,0 +1,4 @@
import parse = require('./parse')
import stringify = require('./stringify')
export {parse, stringify}

View File

@ -0,0 +1,9 @@
const parse = require('./parse')
const stringify = require('./stringify')
const JSON5 = {
parse,
stringify,
}
module.exports = JSON5

View File

@ -0,0 +1,15 @@
/**
* Parses a JSON5 string, constructing the JavaScript value or object described
* by the string.
* @template T The type of the return value.
* @param text The string to parse as JSON5.
* @param reviver A function that prescribes how the value originally produced
* by parsing is transformed before being returned.
* @returns The JavaScript value converted from the JSON5 string.
*/
declare function parse<T = any>(
text: string,
reviver?: ((this: any, key: string, value: any) => any) | null,
): T
export = parse

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,13 @@
const fs = require('fs')
const JSON5 = require('./')
// eslint-disable-next-line node/no-deprecated-api
require.extensions['.json5'] = function (module, filename) {
const content = fs.readFileSync(filename, 'utf8')
try {
module.exports = JSON5.parse(content)
} catch (err) {
err.message = filename + ': ' + err.message
throw err
}
}

View File

@ -0,0 +1,4 @@
// This file is for backward compatibility with v0.5.1.
require('./register')
console.warn("'json5/require' is deprecated. Please use 'json5/register' instead.")

View File

@ -0,0 +1,89 @@
declare type StringifyOptions = {
/**
* A function that alters the behavior of the stringification process, or an
* array of String and Number objects that serve as a allowlist for
* selecting/filtering the properties of the value object to be included in
* the JSON5 string. If this value is null or not provided, all properties
* of the object are included in the resulting JSON5 string.
*/
replacer?:
| ((this: any, key: string, value: any) => any)
| (string | number)[]
| null
/**
* A String or Number object that's used to insert white space into the
* output JSON5 string for readability purposes. If this is a Number, it
* indicates the number of space characters to use as white space; this
* number is capped at 10 (if it is greater, the value is just 10). Values
* less than 1 indicate that no space should be used. If this is a String,
* the string (or the first 10 characters of the string, if it's longer than
* that) is used as white space. If this parameter is not provided (or is
* null), no white space is used. If white space is used, trailing commas
* will be used in objects and arrays.
*/
space?: string | number | null
/**
* A String representing the quote character to use when serializing
* strings.
*/
quote?: string | null
}
/**
* Converts a JavaScript value to a JSON5 string.
* @param value The value to convert to a JSON5 string.
* @param replacer A function that alters the behavior of the stringification
* process. If this value is null or not provided, all properties of the object
* are included in the resulting JSON5 string.
* @param space A String or Number object that's used to insert white space into
* the output JSON5 string for readability purposes. If this is a Number, it
* indicates the number of space characters to use as white space; this number
* is capped at 10 (if it is greater, the value is just 10). Values less than 1
* indicate that no space should be used. If this is a String, the string (or
* the first 10 characters of the string, if it's longer than that) is used as
* white space. If this parameter is not provided (or is null), no white space
* is used. If white space is used, trailing commas will be used in objects and
* arrays.
* @returns The JSON5 string converted from the JavaScript value.
*/
declare function stringify(
value: any,
replacer?: ((this: any, key: string, value: any) => any) | null,
space?: string | number | null,
): string
/**
* Converts a JavaScript value to a JSON5 string.
* @param value The value to convert to a JSON5 string.
* @param replacer An array of String and Number objects that serve as a
* allowlist for selecting/filtering the properties of the value object to be
* included in the JSON5 string. If this value is null or not provided, all
* properties of the object are included in the resulting JSON5 string.
* @param space A String or Number object that's used to insert white space into
* the output JSON5 string for readability purposes. If this is a Number, it
* indicates the number of space characters to use as white space; this number
* is capped at 10 (if it is greater, the value is just 10). Values less than 1
* indicate that no space should be used. If this is a String, the string (or
* the first 10 characters of the string, if it's longer than that) is used as
* white space. If this parameter is not provided (or is null), no white space
* is used. If white space is used, trailing commas will be used in objects and
* arrays.
* @returns The JSON5 string converted from the JavaScript value.
*/
declare function stringify(
value: any,
replacer: (string | number)[],
space?: string | number | null,
): string
/**
* Converts a JavaScript value to a JSON5 string.
* @param value The value to convert to a JSON5 string.
* @param options An object specifying options.
* @returns The JSON5 string converted from the JavaScript value.
*/
declare function stringify(value: any, options: StringifyOptions): string
export = stringify

View File

@ -0,0 +1,261 @@
const util = require('./util')
module.exports = function stringify (value, replacer, space) {
const stack = []
let indent = ''
let propertyList
let replacerFunc
let gap = ''
let quote
if (
replacer != null &&
typeof replacer === 'object' &&
!Array.isArray(replacer)
) {
space = replacer.space
quote = replacer.quote
replacer = replacer.replacer
}
if (typeof replacer === 'function') {
replacerFunc = replacer
} else if (Array.isArray(replacer)) {
propertyList = []
for (const v of replacer) {
let item
if (typeof v === 'string') {
item = v
} else if (
typeof v === 'number' ||
v instanceof String ||
v instanceof Number
) {
item = String(v)
}
if (item !== undefined && propertyList.indexOf(item) < 0) {
propertyList.push(item)
}
}
}
if (space instanceof Number) {
space = Number(space)
} else if (space instanceof String) {
space = String(space)
}
if (typeof space === 'number') {
if (space > 0) {
space = Math.min(10, Math.floor(space))
gap = ' '.substr(0, space)
}
} else if (typeof space === 'string') {
gap = space.substr(0, 10)
}
return serializeProperty('', {'': value})
function serializeProperty (key, holder) {
let value = holder[key]
if (value != null) {
if (typeof value.toJSON5 === 'function') {
value = value.toJSON5(key)
} else if (typeof value.toJSON === 'function') {
value = value.toJSON(key)
}
}
if (replacerFunc) {
value = replacerFunc.call(holder, key, value)
}
if (value instanceof Number) {
value = Number(value)
} else if (value instanceof String) {
value = String(value)
} else if (value instanceof Boolean) {
value = value.valueOf()
}
switch (value) {
case null: return 'null'
case true: return 'true'
case false: return 'false'
}
if (typeof value === 'string') {
return quoteString(value, false)
}
if (typeof value === 'number') {
return String(value)
}
if (typeof value === 'object') {
return Array.isArray(value) ? serializeArray(value) : serializeObject(value)
}
return undefined
}
function quoteString (value) {
const quotes = {
"'": 0.1,
'"': 0.2,
}
const replacements = {
"'": "\\'",
'"': '\\"',
'\\': '\\\\',
'\b': '\\b',
'\f': '\\f',
'\n': '\\n',
'\r': '\\r',
'\t': '\\t',
'\v': '\\v',
'\0': '\\0',
'\u2028': '\\u2028',
'\u2029': '\\u2029',
}
let product = ''
for (let i = 0; i < value.length; i++) {
const c = value[i]
switch (c) {
case "'":
case '"':
quotes[c]++
product += c
continue
case '\0':
if (util.isDigit(value[i + 1])) {
product += '\\x00'
continue
}
}
if (replacements[c]) {
product += replacements[c]
continue
}
if (c < ' ') {
let hexString = c.charCodeAt(0).toString(16)
product += '\\x' + ('00' + hexString).substring(hexString.length)
continue
}
product += c
}
const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b)
product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar])
return quoteChar + product + quoteChar
}
function serializeObject (value) {
if (stack.indexOf(value) >= 0) {
throw TypeError('Converting circular structure to JSON5')
}
stack.push(value)
let stepback = indent
indent = indent + gap
let keys = propertyList || Object.keys(value)
let partial = []
for (const key of keys) {
const propertyString = serializeProperty(key, value)
if (propertyString !== undefined) {
let member = serializeKey(key) + ':'
if (gap !== '') {
member += ' '
}
member += propertyString
partial.push(member)
}
}
let final
if (partial.length === 0) {
final = '{}'
} else {
let properties
if (gap === '') {
properties = partial.join(',')
final = '{' + properties + '}'
} else {
let separator = ',\n' + indent
properties = partial.join(separator)
final = '{\n' + indent + properties + ',\n' + stepback + '}'
}
}
stack.pop()
indent = stepback
return final
}
function serializeKey (key) {
if (key.length === 0) {
return quoteString(key, true)
}
const firstChar = String.fromCodePoint(key.codePointAt(0))
if (!util.isIdStartChar(firstChar)) {
return quoteString(key, true)
}
for (let i = firstChar.length; i < key.length; i++) {
if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {
return quoteString(key, true)
}
}
return key
}
function serializeArray (value) {
if (stack.indexOf(value) >= 0) {
throw TypeError('Converting circular structure to JSON5')
}
stack.push(value)
let stepback = indent
indent = indent + gap
let partial = []
for (let i = 0; i < value.length; i++) {
const propertyString = serializeProperty(String(i), value)
partial.push((propertyString !== undefined) ? propertyString : 'null')
}
let final
if (partial.length === 0) {
final = '[]'
} else {
if (gap === '') {
let properties = partial.join(',')
final = '[' + properties + ']'
} else {
let separator = ',\n' + indent
let properties = partial.join(separator)
final = '[\n' + indent + properties + ',\n' + stepback + ']'
}
}
stack.pop()
indent = stepback
return final
}
}

View File

@ -0,0 +1,3 @@
export declare const Space_Separator: RegExp
export declare const ID_Start: RegExp
export declare const ID_Continue: RegExp

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,5 @@
export declare function isSpaceSeparator(c?: string): boolean
export declare function isIdStartChar(c?: string): boolean
export declare function isIdContinueChar(c?: string): boolean
export declare function isDigit(c?: string): boolean
export declare function isHexDigit(c?: string): boolean

View File

@ -0,0 +1,35 @@
const unicode = require('../lib/unicode')
module.exports = {
isSpaceSeparator (c) {
return typeof c === 'string' && unicode.Space_Separator.test(c)
},
isIdStartChar (c) {
return typeof c === 'string' && (
(c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c === '$') || (c === '_') ||
unicode.ID_Start.test(c)
)
},
isIdContinueChar (c) {
return typeof c === 'string' && (
(c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c >= '0' && c <= '9') ||
(c === '$') || (c === '_') ||
(c === '\u200C') || (c === '\u200D') ||
unicode.ID_Continue.test(c)
)
},
isDigit (c) {
return typeof c === 'string' && /[0-9]/.test(c)
},
isHexDigit (c) {
return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)
},
}

View File

@ -0,0 +1,109 @@
{
"_from": "json5@^2.2.1",
"_id": "json5@2.2.1",
"_inBundle": false,
"_integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==",
"_location": "/json5",
"_phantomChildren": {},
"_requested": {
"type": "range",
"registry": true,
"raw": "json5@^2.2.1",
"name": "json5",
"escapedName": "json5",
"rawSpec": "^2.2.1",
"saveSpec": null,
"fetchSpec": "^2.2.1"
},
"_requiredBy": [
"#DEV:/",
"/@types/json5"
],
"_resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz",
"_shasum": "655d50ed1e6f95ad1a3caababd2b0efda10b395c",
"_spec": "json5@^2.2.1",
"_where": "C:\\Git\\better-comments",
"author": {
"name": "Aseem Kishore",
"email": "aseem.kishore@gmail.com"
},
"bin": {
"json5": "lib/cli.js"
},
"browser": "dist/index.js",
"bugs": {
"url": "https://github.com/json5/json5/issues"
},
"bundleDependencies": false,
"contributors": [
{
"name": "Max Nanasy",
"email": "max.nanasy@gmail.com"
},
{
"name": "Andrew Eisenberg",
"email": "andrew@eisenberg.as"
},
{
"name": "Jordan Tucker",
"email": "jordanbtucker@gmail.com"
}
],
"deprecated": false,
"description": "JSON for humans.",
"devDependencies": {
"core-js": "^2.6.5",
"eslint": "^5.15.3",
"eslint-config-standard": "^12.0.0",
"eslint-plugin-import": "^2.16.0",
"eslint-plugin-node": "^8.0.1",
"eslint-plugin-promise": "^4.0.1",
"eslint-plugin-standard": "^4.0.0",
"regenerate": "^1.4.0",
"rollup": "^0.64.1",
"rollup-plugin-buble": "^0.19.6",
"rollup-plugin-commonjs": "^9.2.1",
"rollup-plugin-node-resolve": "^3.4.0",
"rollup-plugin-terser": "^1.0.1",
"sinon": "^6.3.5",
"tap": "^12.6.0",
"unicode-10.0.0": "^0.7.5"
},
"engines": {
"node": ">=6"
},
"files": [
"lib/",
"dist/"
],
"homepage": "http://json5.org/",
"keywords": [
"json",
"json5",
"es5",
"es2015",
"ecmascript"
],
"license": "MIT",
"main": "lib/index.js",
"module": "dist/index.mjs",
"name": "json5",
"repository": {
"type": "git",
"url": "git+https://github.com/json5/json5.git"
},
"scripts": {
"build": "rollup -c",
"build-package": "node build/package.js",
"build-unicode": "node build/unicode.js",
"coverage": "tap --coverage-report html test",
"lint": "eslint --fix .",
"prepublishOnly": "npm run production",
"preversion": "npm run production",
"production": "npm run lint && npm test && npm run build",
"test": "tap -Rspec --100 test",
"version": "npm run build-package && git add package.json5"
},
"types": "lib/index.d.ts",
"version": "2.2.1"
}

View File

@ -0,0 +1,65 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Configuration = void 0;
const path = require("path");
const vscode = require("vscode");
const fs = require("fs");
const json5 = require("json5");
class Configuration {
/**
* Creates a new instance of the Parser class
*/
constructor() {
this.commentConfig = new Map();
this.languageConfigFiles = new Map();
this.UpdateLanguagesDefinitions();
}
/**
* Generate a map of configuration files by language as defined by extensions
* External extensions can override default configurations os VSCode
*/
UpdateLanguagesDefinitions() {
this.commentConfig.clear();
for (let extension of vscode.extensions.all) {
let packageJSON = extension.packageJSON;
if (packageJSON.contributes && packageJSON.contributes.languages) {
for (let language of packageJSON.contributes.languages) {
if (language.configuration) {
let configPath = path.join(extension.extensionPath, language.configuration);
this.languageConfigFiles.set(language.id, configPath);
}
}
}
}
}
/**
* Gets the configuration information for the specified language
* @param languageCode
* @returns
*/
GetCommentConfiguration(languageCode) {
// * check if the language config has already been loaded
if (this.commentConfig.has(languageCode)) {
return this.commentConfig.get(languageCode);
}
// * if no config exists for this language, back out and leave the language unsupported
if (!this.languageConfigFiles.has(languageCode)) {
return undefined;
}
try {
// Get the filepath from the map
let filePath = this.languageConfigFiles.get(languageCode);
let content = fs.readFileSync(filePath, { encoding: 'utf8' });
// use json5, because the config can contains comments
let config = json5.parse(content);
this.commentConfig.set(languageCode, config.comments);
return config.comments;
}
catch (error) {
this.commentConfig.set(languageCode, undefined);
return undefined;
}
}
}
exports.Configuration = Configuration;
//# sourceMappingURL=configuration.js.map

View File

@ -0,0 +1,72 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.deactivate = exports.activate = void 0;
const vscode = require("vscode");
const configuration_1 = require("./configuration");
const parser_1 = require("./parser");
// this method is called when vs code is activated
function activate(context) {
let activeEditor;
let configuration = new configuration_1.Configuration();
let parser = new parser_1.Parser(configuration);
// Called to handle events below
let updateDecorations = function () {
// if no active window is open, return
if (!activeEditor)
return;
// if lanugage isn't supported, return
if (!parser.supportedLanguage)
return;
// Finds the single line comments using the language comment delimiter
parser.FindSingleLineComments(activeEditor);
// Finds the multi line comments using the language comment delimiter
parser.FindBlockComments(activeEditor);
// Finds the jsdoc comments
parser.FindJSDocComments(activeEditor);
// Apply the styles set in the package.json
parser.ApplyDecorations(activeEditor);
};
// Get the active editor for the first time and initialise the regex
if (vscode.window.activeTextEditor) {
activeEditor = vscode.window.activeTextEditor;
// Set the regex patterns for the specified language's comments
parser.SetRegex(activeEditor.document.languageId);
// Trigger first update of decorators
triggerUpdateDecorations();
}
// * Handle extensions being added or removed
vscode.extensions.onDidChange(() => {
configuration.UpdateLanguagesDefinitions();
}, null, context.subscriptions);
// * Handle active file changed
vscode.window.onDidChangeActiveTextEditor(editor => {
if (editor) {
activeEditor = editor;
// Set regex for updated language
parser.SetRegex(editor.document.languageId);
// Trigger update to set decorations for newly active file
triggerUpdateDecorations();
}
}, null, context.subscriptions);
// * Handle file contents changed
vscode.workspace.onDidChangeTextDocument(event => {
// Trigger updates if the text was changed in the same document
if (activeEditor && event.document === activeEditor.document) {
triggerUpdateDecorations();
}
}, null, context.subscriptions);
// * IMPORTANT:
// * To avoid calling update too often,
// * set a timer for 100ms to wait before updating decorations
var timeout;
function triggerUpdateDecorations() {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(updateDecorations, 100);
}
}
exports.activate = activate;
function deactivate() { }
exports.deactivate = deactivate;
//# sourceMappingURL=extension.js.map

View File

@ -0,0 +1,290 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Parser = void 0;
const vscode = require("vscode");
class Parser {
/**
* Creates a new instance of the Parser class
* @param configuration
*/
constructor(config) {
this.tags = [];
this.expression = "";
this.delimiter = "";
this.blockCommentStart = "";
this.blockCommentEnd = "";
this.highlightSingleLineComments = true;
this.highlightMultilineComments = false;
this.highlightJSDoc = false;
// * this will allow plaintext files to show comment highlighting if switched on
this.isPlainText = false;
// * this is used to prevent the first line of the file (specifically python) from coloring like other comments
this.ignoreFirstLine = false;
// * this is used to trigger the events when a supported language code is found
this.supportedLanguage = true;
// Read from the package.json
this.contributions = vscode.workspace.getConfiguration('better-comments');
this.configuration = config;
this.setTags();
}
/**
* Sets the regex to be used by the matcher based on the config specified in the package.json
* @param languageCode The short code of the current language
* https://code.visualstudio.com/docs/languages/identifiers
*/
SetRegex(languageCode) {
this.setDelimiter(languageCode);
// if the language isn't supported, we don't need to go any further
if (!this.supportedLanguage) {
return;
}
let characters = [];
for (let commentTag of this.tags) {
characters.push(commentTag.escapedTag);
}
if (this.isPlainText && this.contributions.highlightPlainText) {
// start by tying the regex to the first character in a line
this.expression = "(^)+([ \\t]*[ \\t]*)";
}
else {
// start by finding the delimiter (//, --, #, ') with optional spaces or tabs
this.expression = "(" + this.delimiter + ")+( |\t)*";
}
// Apply all configurable comment start tags
this.expression += "(";
this.expression += characters.join("|");
this.expression += ")+(.*)";
}
/**
* Finds all single line comments delimited by a given delimiter and matching tags specified in package.json
* @param activeEditor The active text editor containing the code document
*/
FindSingleLineComments(activeEditor) {
// If highlight single line comments is off, single line comments are not supported for this language
if (!this.highlightSingleLineComments)
return;
let text = activeEditor.document.getText();
// if it's plain text, we have to do mutliline regex to catch the start of the line with ^
let regexFlags = (this.isPlainText) ? "igm" : "ig";
let regEx = new RegExp(this.expression, regexFlags);
let match;
while (match = regEx.exec(text)) {
let startPos = activeEditor.document.positionAt(match.index);
let endPos = activeEditor.document.positionAt(match.index + match[0].length);
let range = { range: new vscode.Range(startPos, endPos) };
// Required to ignore the first line of .py files (#61)
if (this.ignoreFirstLine && startPos.line === 0 && startPos.character === 0) {
continue;
}
// Find which custom delimiter was used in order to add it to the collection
let matchTag = this.tags.find(item => item.tag.toLowerCase() === match[3].toLowerCase());
if (matchTag) {
matchTag.ranges.push(range);
}
}
}
/**
* Finds block comments as indicated by start and end delimiter
* @param activeEditor The active text editor containing the code document
*/
FindBlockComments(activeEditor) {
// If highlight multiline is off in package.json or doesn't apply to his language, return
if (!this.highlightMultilineComments)
return;
let text = activeEditor.document.getText();
// Build up regex matcher for custom delimiter tags
let characters = [];
for (let commentTag of this.tags) {
characters.push(commentTag.escapedTag);
}
// Combine custom delimiters and the rest of the comment block matcher
let commentMatchString = "(^)+([ \\t]*[ \\t]*)(";
commentMatchString += characters.join("|");
commentMatchString += ")([ ]*|[:])+([^*/][^\\r\\n]*)";
// Use start and end delimiters to find block comments
let regexString = "(^|[ \\t])(";
regexString += this.blockCommentStart;
regexString += "[\\s])+([\\s\\S]*?)(";
regexString += this.blockCommentEnd;
regexString += ")";
let regEx = new RegExp(regexString, "gm");
let commentRegEx = new RegExp(commentMatchString, "igm");
// Find the multiline comment block
let match;
while (match = regEx.exec(text)) {
let commentBlock = match[0];
// Find the line
let line;
while (line = commentRegEx.exec(commentBlock)) {
let startPos = activeEditor.document.positionAt(match.index + line.index + line[2].length);
let endPos = activeEditor.document.positionAt(match.index + line.index + line[0].length);
let range = { range: new vscode.Range(startPos, endPos) };
// Find which custom delimiter was used in order to add it to the collection
let matchString = line[3];
let matchTag = this.tags.find(item => item.tag.toLowerCase() === matchString.toLowerCase());
if (matchTag) {
matchTag.ranges.push(range);
}
}
}
}
/**
* Finds all multiline comments starting with "*"
* @param activeEditor The active text editor containing the code document
*/
FindJSDocComments(activeEditor) {
// If highlight multiline is off in package.json or doesn't apply to his language, return
if (!this.highlightMultilineComments && !this.highlightJSDoc)
return;
let text = activeEditor.document.getText();
// Build up regex matcher for custom delimiter tags
let characters = [];
for (let commentTag of this.tags) {
characters.push(commentTag.escapedTag);
}
// Combine custom delimiters and the rest of the comment block matcher
let commentMatchString = "(^)+([ \\t]*\\*[ \\t]*)("; // Highlight after leading *
let regEx = /(^|[ \t])(\/\*\*)+([\s\S]*?)(\*\/)/gm; // Find rows of comments matching pattern /** */
commentMatchString += characters.join("|");
commentMatchString += ")([ ]*|[:])+([^*/][^\\r\\n]*)";
let commentRegEx = new RegExp(commentMatchString, "igm");
// Find the multiline comment block
let match;
while (match = regEx.exec(text)) {
let commentBlock = match[0];
// Find the line
let line;
while (line = commentRegEx.exec(commentBlock)) {
let startPos = activeEditor.document.positionAt(match.index + line.index + line[2].length);
let endPos = activeEditor.document.positionAt(match.index + line.index + line[0].length);
let range = { range: new vscode.Range(startPos, endPos) };
// Find which custom delimiter was used in order to add it to the collection
let matchString = line[3];
let matchTag = this.tags.find(item => item.tag.toLowerCase() === matchString.toLowerCase());
if (matchTag) {
matchTag.ranges.push(range);
}
}
}
}
/**
* Apply decorations after finding all relevant comments
* @param activeEditor The active text editor containing the code document
*/
ApplyDecorations(activeEditor) {
for (let tag of this.tags) {
activeEditor.setDecorations(tag.decoration, tag.ranges);
// clear the ranges for the next pass
tag.ranges.length = 0;
}
}
//#region Private Methods
/**
* Sets the comment delimiter [//, #, --, '] of a given language
* @param languageCode The short code of the current language
* https://code.visualstudio.com/docs/languages/identifiers
*/
setDelimiter(languageCode) {
this.supportedLanguage = false;
this.ignoreFirstLine = false;
this.isPlainText = false;
const config = this.configuration.GetCommentConfiguration(languageCode);
if (config) {
let blockCommentStart = config.blockComment ? config.blockComment[0] : null;
let blockCommentEnd = config.blockComment ? config.blockComment[1] : null;
this.setCommentFormat(config.lineComment || blockCommentStart, blockCommentStart, blockCommentEnd);
this.supportedLanguage = true;
}
switch (languageCode) {
case "apex":
case "javascript":
case "javascriptreact":
case "typescript":
case "typescriptreact":
this.highlightJSDoc = true;
break;
case "elixir":
case "python":
case "tcl":
this.ignoreFirstLine = true;
break;
case "plaintext":
this.isPlainText = true;
// If highlight plaintext is enabled, this is a supported language
this.supportedLanguage = this.contributions.highlightPlainText;
break;
}
}
/**
* Sets the highlighting tags up for use by the parser
*/
setTags() {
let items = this.contributions.tags;
for (let item of items) {
let options = { color: item.color, backgroundColor: item.backgroundColor };
// ? the textDecoration is initialised to empty so we can concat a preceeding space on it
options.textDecoration = "";
if (item.strikethrough) {
options.textDecoration += "line-through";
}
if (item.underline) {
options.textDecoration += " underline";
}
if (item.bold) {
options.fontWeight = "bold";
}
if (item.italic) {
options.fontStyle = "italic";
}
let escapedSequence = item.tag.replace(/([()[{*+.$^\\|?])/g, '\\$1');
this.tags.push({
tag: item.tag,
escapedTag: escapedSequence.replace(/\//gi, "\\/"),
ranges: [],
decoration: vscode.window.createTextEditorDecorationType(options)
});
}
}
/**
* Escapes a given string for use in a regular expression
* @param input The input string to be escaped
* @returns {string} The escaped string
*/
escapeRegExp(input) {
return input.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
/**
* Set up the comment format for single and multiline highlighting
* @param singleLine The single line comment delimiter. If NULL, single line is not supported
* @param start The start delimiter for block comments
* @param end The end delimiter for block comments
*/
setCommentFormat(singleLine, start = null, end = null) {
this.delimiter = "";
this.blockCommentStart = "";
this.blockCommentEnd = "";
// If no single line comment delimiter is passed, single line comments are not supported
if (singleLine) {
if (typeof singleLine === 'string') {
this.delimiter = this.escapeRegExp(singleLine).replace(/\//ig, "\\/");
}
else if (singleLine.length > 0) {
// * if multiple delimiters are passed, the language has more than one single line comment format
var delimiters = singleLine
.map(s => this.escapeRegExp(s))
.join("|");
this.delimiter = delimiters;
}
}
else {
this.highlightSingleLineComments = false;
}
if (start && end) {
this.blockCommentStart = this.escapeRegExp(start);
this.blockCommentEnd = this.escapeRegExp(end);
this.highlightMultilineComments = this.contributions.multilineComments;
}
}
}
exports.Parser = Parser;
//# sourceMappingURL=parser.js.map

View File

@ -0,0 +1,131 @@
{
"name": "better-comments",
"displayName": "Better Comments",
"icon": "icon.png",
"description": "Improve your code commenting by annotating with alert, informational, TODOs, and more!",
"version": "3.0.0",
"publisher": "aaron-bond",
"author": {
"name": "Aaron Bond"
},
"homepage": "https://github.com/aaron-bond/better-comments/blob/master/README.md",
"license": "SEE LICENSE IN LICENSE.md",
"repository": {
"type": "git",
"url": "https://github.com/aaron-bond/better-comments"
},
"bugs": "https://github.com/aaron-bond/better-comments/issues",
"categories": [
"Formatters"
],
"engines": {
"vscode": "^1.65.0"
},
"extensionKind": [
"ui",
"workspace"
],
"activationEvents": [
"onStartupFinished"
],
"galleryBanner": {
"color": "#e3f4ff",
"theme": "light"
},
"main": "./out/extension",
"scripts": {
"vscode:prepublish": "npm run compile",
"compile": "tsc -p ./",
"watch": "tsc -watch -p ./",
"lint": "tslint -c tslint.json 'src/**/*.ts'"
},
"contributes": {
"configuration": {
"title": "Better Comments configuration",
"properties": {
"better-comments.multilineComments": {
"type": "boolean",
"description": "Whether the multiline comment highlighter should be active",
"default": true
},
"better-comments.highlightPlainText": {
"type": "boolean",
"description": "Whether the plaintext comment highlighter should be active",
"default": false
},
"better-comments.tags": {
"type": "array",
"description": "Tags which are used to color the comments. Changes require a restart of VS Code to take effect",
"default": [
{
"tag": "!",
"color": "#FF2D00",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "?",
"color": "#3498DB",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "//",
"color": "#474747",
"strikethrough": true,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "todo",
"color": "#FF8C00",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
},
{
"tag": "*",
"color": "#98C379",
"strikethrough": false,
"underline": false,
"backgroundColor": "transparent",
"bold": false,
"italic": false
}
]
}
}
}
},
"dependencies": {
"json5": "^2.2.1"
},
"devDependencies": {
"@types/json5": "^2.2.0",
"@types/vscode": "^1.65.0",
"@types/node": "^17.0.23",
"typescript": "^4.6.3",
"vsce": "^2.7.0",
"tslint": "^6.1.3"
},
"__metadata": {
"id": "7a0110bb-231a-4598-aa1b-0769ea46d28b",
"publisherId": "02145bab-b083-4d1e-b8ec-08d7abdd68da",
"publisherDisplayName": "Aaron Bond",
"targetPlatform": "undefined",
"updated": true,
"isPreReleaseVersion": false,
"preRelease": false,
"installedTimestamp": 1649320099217
}
}

View File

@ -0,0 +1,18 @@
{
"rules": {
"no-string-throw": true,
"no-unused-expression": true,
"no-duplicate-variable": true,
"curly": [
true,
"ignore-same-line"
],
"class-name": true,
"semicolon": [
true,
"always"
],
"triple-equals": true
},
"defaultSeverity": "warning"
}

View File

@ -0,0 +1,13 @@
// A launch configuration that compiles the extension and then opens it inside a new window
{
"version": "0.1.0",
"configurations": [
{
"name": "Launch Extension",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": ["--extensionDevelopmentPath=${workspaceRoot}" ]
}
]
}

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Language="en-US" Id="html-snippets" Version="0.2.1" Publisher="abusaidm"/>
<DisplayName>HTML Snippets</DisplayName>
<Description xml:space="preserve">Full HTML tags including HTML5 Snippets</Description>
<Tags>snippet</Tags>
<Categories>Snippets</Categories>
<GalleryFlags>Public</GalleryFlags>
<Badges></Badges>
<Properties>
<Property Id="Microsoft.VisualStudio.Code.Engine" Value="^1.9.1" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionDependencies" Value="" />
<Property Id="Microsoft.VisualStudio.Services.Branding.Color" Value="#1E81C1" />
<Property Id="Microsoft.VisualStudio.Services.Branding.Theme" Value="light" />
<Property Id="Microsoft.VisualStudio.Services.GitHubFlavoredMarkdown" Value="true" />
</Properties>
<License>extension/LICENSE.txt</License>
<Icon>extension/images/icon.png</Icon>
</Metadata>
<Installation>
<InstallationTarget Id="Microsoft.VisualStudio.Code"/>
</Installation>
<Dependencies/>
<Assets>
<Asset Type="Microsoft.VisualStudio.Code.Manifest" Path="extension/package.json" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Content.Details" Path="extension/README.md" Addressable="true" /><Asset Type="Microsoft.VisualStudio.Services.Content.License" Path="extension/LICENSE.txt" Addressable="true" /><Asset Type="Microsoft.VisualStudio.Services.Icons.Default" Path="extension/images/icon.png" Addressable="true" />
</Assets>
</PackageManifest>

View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2017 Mohamed Abusaid
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -0,0 +1,86 @@
# README
## Visual Studio Code HTML Snippets
## DISABLING THIS EXTENSION AS IT CURRENTLY CONFLICTS WTH EXISTING VS CODE HTML EXTENSION
This extension adds rich language support for the HTML Markup to VS Code, including:
- Full HTML5 Tags
- Colorization
- Snippets
- [partially implemented] Quick Info
- description mentions if tag deprecated
### Update 5
- Disabling this extension as its functionality has been absorbed by VS Code main html extension.
### Update 4
- Removed all languages, only HTML Remains.
- Added FAQ in end of page.
### Update 3
- added php, js, and jsreact as languages where the snippets work by default.
### Update 2
- fixed a bug with line cursor on vscode 1.5.1
### Update 1
- removed deprecated tags [acronym, applet, basefont, center, dir, font, frame, frameset, noframes, strike, tt]
- fixed LI tag issue, you couldn't add new line in the tags
### Todo
- [on-going]Improve syntax layout.
- [on-going]Add support for Tab to end of line.
- [on-going]Populate Tags with properties.
# Using
Type part of a snippet, press enter, and the snippet unfolds.
Snippets named as the tag without braces
div --> <div></div>
doc --> <!DOCTYPE html>
a --> <a href=""></a>
![alt text](https://i.imgur.com/VOhBvHb.gif "Snippets Preview")
# Installation
1. Install Visual Studio Code 0.10.1 or higher
2. Launch Code
3. From the command palette `Ctrl-Shift-P` (Windows, Linux) or `Cmd-Shift-P` (OSX)
4. Select Install Extension
5. Type `HTML-Snippets`
6. Choose the extension
7. Reload Visual Studio Code
# FAQ
## How to enable the snippets on a file other than html?
<s>Add the following code to the project settings.json or global settings.json :
```
"files.associations": {
// extension name : html
"*.ejs": "html",
"*.js": "html"
}
```
the above code will allow html snippet to work on .ejs and .js files, amend to fit your needs.</s>
Please Read this answer.
[Make extension work in languages other than HTML](https://github.com/abusaidm/html-snippets/issues/27#issuecomment-282512411)
## How can I report an issue?
The easiest way is to start a git issue, I will attempt to answer ASAP else I hope someone else will answer.
# Contact
If you find any issue or have a suggestion please tweet me on @m_abusaid
>**I am unable to respond to comments on the store page, please use appropriate channels github/twitter to reach me. Thank you**
## License
MIT License, refer to license file.
# Source
[Github](https://github.com/abusaidm/html-snippets)
** Enjoy!**

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

View File

@ -0,0 +1,33 @@
{
"name": "html-snippets",
"displayName": "HTML Snippets",
"description": "Full HTML tags including HTML5 Snippets",
"version": "0.2.1",
"publisher": "abusaidm",
"icon": "images/icon.png",
"engines": {
"vscode": "^1.9.1"
},
"galleryBanner": {
"color": "#1E81C1",
"theme": "light"
},
"categories": [
"Snippets"
],
"contributes": {
"snippets": [
{
"language": "html",
"path": "./snippets/snippets.json"
}
]
},
"__metadata": {
"id": "be992f3f-9f22-4b66-a1d2-ecad04c28a28",
"publisherId": "7fe357ee-5480-4a7d-a4e9-009d9438c2a3",
"publisherDisplayName": "Mohamed Abusaid",
"isPreReleaseVersion": false,
"installedTimestamp": 1641229758765
}
}

View File

@ -0,0 +1,844 @@
// {
// "doctype": {
// "prefix": "doctype",
// "body": [
// "<!DOCTYPE>",
// "$1"
// ],
// "description": "HTML - Defines the document type",
// "scope": "text.html"
// },
// "a": {
// "prefix": "a",
// "body": "<a href=\"$1\">$2</a>$3",
// "description": "HTML - Defines a hyperlink",
// "scope": "text.html"
// },
// "abbr": {
// "prefix": "abbr",
// "body": "<abbr title=\"$1\">$2</abbr>$3",
// "description": "HTML - Defines an abbreviation",
// "scope": "text.html"
// },
// "address": {
// "prefix": "address",
// "body": [
// "<address>",
// "$1",
// "</address>"
// ],
// "description": "HTML - Defines an address element",
// "scope": "text.html"
// },
// "area": {
// "prefix": "area",
// "body": "<area shape=\"$1\" coords=\"$2\" href=\"$3\" alt=\"$4\">$5",
// "description": "HTML - Defines an area inside an image map",
// "scope": "text.html"
// },
// "article": {
// "prefix": "article",
// "body": [
// "<article>",
// "\t$1",
// "</article>"
// ],
// "description": "HTML - Defines an article",
// "scope": "text.html"
// },
// "aside": {
// "prefix": "aside",
// "body": [
// "<aside>",
// "\t$1",
// "</aside>$2"
// ],
// "description": "HTML - Defines content aside from the page content",
// "scope": "text.html"
// },
// "audio": {
// "prefix": "audio",
// "body": [
// "<audio controls>",
// "\t$1",
// "</audio>"
// ],
// "description": "HTML - Defines sounds content",
// "scope": "text.html"
// },
// "b": {
// "prefix": "b",
// "body": "<b>$1</b>$2",
// "description": "HTML - Defines bold text",
// "scope": "text.html"
// },
// "base": {
// "prefix": "base",
// "body": "<base href=\"$1\" target=\"$2\">$3",
// "description": "HTML - Defines a base URL for all the links in a page",
// "scope": "text.html"
// },
// "bdi": {
// "prefix": "bdi",
// "body": "<bdi>$1</bdi>$2",
// "description": "HTML - Used to isolate text that is of unknown directionality",
// "scope": "text.html"
// },
// "bdo": {
// "prefix": "bdo",
// "body": [
// "<bdo dir=\"$1\">",
// "$2",
// "</bdo>"],
// "description": "HTML - Defines the direction of text display",
// "scope": "text.html"
// },
// "big": {
// "prefix": "big",
// "body": "<big>$1</big>$2",
// "description": "HTML - Used to make text bigger",
// "scope": "text.html"
// },
// "blockquote": {
// "prefix": "blockquote",
// "body": [
// "<blockquote cite=\"$2\">",
// "\t$1",
// "</blockquote>"
// ],
// "description": "HTML - Defines a long quotation",
// "scope": "text.html"
// },
// "body": {
// "prefix": "body",
// "body": [
// "<body>",
// "\t$1",
// "</body>"],
// "description": "HTML - Defines the body element",
// "scope": "text.html"
// },
// "br": {
// "prefix": "br",
// "body": "<br>",
// "description": "HTML - Inserts a single line break",
// "scope": "text.html"
// },
// "button": {
// "prefix": "button",
// "body": "<button type=\"$1\">$2</button>$3",
// "description": "HTML - Defines a push button",
// "scope": "text.html"
// },
// "canvas": {
// "prefix": "canvas",
// "body": "<canvas id=\"$1\">$2</canvas>$3",
// "description": "HTML - Defines graphics",
// "scope": "text.html"
// },
// "caption": {
// "prefix": "caption",
// "body": "<caption>$1</caption>$2",
// "description": "HTML - Defines a table caption",
// "scope": "text.html"
// },
// "cite": {
// "prefix": "cite",
// "body": "<cite>$1</cite>$2",
// "description": "HTML - Defines a citation",
// "scope": "text.html"
// },
// "code": {
// "prefix": "code",
// "body": "<code>$1</code>$2",
// "description": "HTML - Defines computer code text",
// "scope": "text.html"
// },
// "col": {
// "prefix": "col",
// "body": "<col>$2",
// "description": "HTML - Defines attributes for table columns",
// "scope": "text.html"
// },
// "colgroup": {
// "prefix": "colgroup",
// "body": [
// "<colgroup>",
// "\t$1",
// "</colgroup>"],
// "description": "HTML - Defines group of table columns",
// "scope": "text.html"
// },
// "command": {
// "prefix": "command",
// "body": "<command>$1</command>$2",
// "description": "HTML - Defines a command button [not supported]",
// "scope": "text.html"
// },
// "datalist": {
// "prefix": "datalist",
// "body": [
// "<datalist>",
// "\t$1",
// "</datalist>"
// ],
// "description": "HTML - Defines a dropdown list",
// "scope": "text.html"
// },
// "dd": {
// "prefix": "dd",
// "body": "<dd>$1</dd>$2",
// "description": "HTML - Defines a definition description",
// "scope": "text.html"
// },
// "del": {
// "prefix": "del",
// "body": "<del>$1</del>$2",
// "description": "HTML - Defines deleted text",
// "scope": "text.html"
// },
// "details": {
// "prefix": "details",
// "body": [
// "<details>",
// "\t$1",
// "</details>"
// ],
// "description": "HTML - Defines details of an element",
// "scope": "text.html"
// },
// "dialog": {
// "prefix": "dialog",
// "body": "<dialog>$1</dialog>$2",
// "description": "HTML - Defines a dialog (conversation)",
// "scope": "text.html"
// },
// "dfn": {
// "prefix": "dfn",
// "body": "<dfn>$1</dfn>$2",
// "description": "HTML - Defines a definition term",
// "scope": "text.html"
// },
// "div": {
// "prefix": "div",
// "body": [
// "<div>",
// "\t$1",
// "</div>"
// ],
// "description": "HTML - Defines a section in a document",
// "scope": "text.html"
// },
// "dl": {
// "prefix": "dl",
// "body": [
// "<dl>",
// "\t$1",
// "</dl>"
// ],
// "description": "HTML - Defines a definition list",
// "scope": "text.html"
// },
// "dt": {
// "prefix": "dt",
// "body": "<dt>$1</dt>$2",
// "description": "HTML - Defines a definition term",
// "scope": "text.html"
// },
// "em": {
// "prefix": "em",
// "body": "<em>$1</em>$2",
// "description": "HTML - Defines emphasized text",
// "scope": "text.html"
// },
// "embed": {
// "prefix": "embed",
// "body": "<embed src=\"$1\">$2",
// "description": "HTML - Defines external interactive content ot plugin",
// "scope": "text.html"
// },
// "fieldset": {
// "prefix": "fieldset",
// "body": [
// "<fieldset>",
// "\t$1",
// "</fieldset>"],
// "description": "HTML - Defines a fieldset",
// "scope": "text.html"
// },
// "figcaption": {
// "prefix": "figcaption",
// "body": "<figcaption>$1</figcaption>$2",
// "description": "HTML - Defines a caption for a figure",
// "scope": "text.html"
// },
// "figure": {
// "prefix": "figure",
// "body": [
// "<figure>",
// "\t$1",
// "</figure>"
// ],
// "description": "HTML - Defines a group of media content, and their caption",
// "scope": "text.html"
// },
// "footer": {
// "prefix": "footer",
// "body": [
// "<footer>",
// "\t$1",
// "</footer>"
// ],
// "description": "HTML - Defines a footer for a section or page",
// "scope": "text.html"
// },
// "form": {
// "prefix": "form",
// "body": [
// "<form>",
// "\t$1",
// "</form>"
// ],
// "description": "HTML - Defines a form",
// "scope": "text.html"
// },
// "h1": {
// "prefix": "h1",
// "body": "<h1>$1</h1>$2",
// "description": "HTML - Defines header 1",
// "scope": "text.html"
// },
// "h2": {
// "prefix": "h2",
// "body": "<h2>$1</h2>$2",
// "description": "HTML - Defines header 2",
// "scope": "text.html"
// },
// "h3": {
// "prefix": "h3",
// "body": "<h3>$1</h3>$2",
// "description": "HTML - Defines header 3",
// "scope": "text.html"
// },
// "h4": {
// "prefix": "h4",
// "body": "<h4>$1</h4>$2",
// "description": "HTML - Defines header 4",
// "scope": "text.html"
// },
// "h5": {
// "prefix": "h5",
// "body": "<h5>$1</h5>$2",
// "description": "HTML - Defines header 5",
// "scope": "text.html"
// },
// "h6": {
// "prefix": "h6",
// "body": "<h6>$1</h6>$2",
// "description": "HTML - Defines header 6",
// "scope": "text.html"
// },
// "head": {
// "prefix": "head",
// "body": [
// "<head>",
// "\t$1",
// "</head>"
// ],
// "description": "HTML - Defines information about the document",
// "scope": "text.html"
// },
// "header": {
// "prefix": "header",
// "body": [
// "<header>",
// "\t$1",
// "</header>"
// ],
// "description": "HTML - Defines a header for a section of page",
// "scope": "text.html"
// },
// "hgroup": {
// "prefix": "hgroup",
// "body": [
// "<hgroup>",
// "\t$1",
// "</hgroup>"
// ],
// "description": "HTML - Defines information about a section in a document",
// "scope": "text.html"
// },
// "hr": {
// "prefix": "hr",
// "body": "<hr>",
// "description": "HTML - Defines a horizontal rule",
// "scope": "text.html"
// },
// "html": {
// "prefix": "html",
// "body": [
// "<html>",
// "\t$1",
// "</html>"
// ],
// "description": "HTML - Defines an html document",
// "scope": "text.html"
// },
// "html5": {
// "prefix": "html5",
// "body": [
// "<!DOCTYPE html>",
// "<html lang=\"$1en\">",
// "\t<head>",
// "\t\t<title>$2</title>",
// "\t\t<meta charset=\"UTF-8\">",
// "\t\t<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">",
// "\t\t<link href=\"$3css/style.css\" rel=\"stylesheet\">",
// "\t</head>",
// "\t<body>",
// "\t$4",
// "\t</body>",
// "</html>"
// ],
// "description": "HTML - Defines a template for a html5 document",
// "scope": "text.html"
// },
// "i": {
// "prefix": "i",
// "body": "<i>$1</i>$2",
// "description": "HTML - Defines italic text",
// "scope": "text.html"
// },
// "iframe": {
// "prefix": "iframe",
// "body": "<iframe src=\"$1\">$2</iframe>$3",
// "description": "HTML - Defines an inline sub window",
// "scope": "text.html"
// },
// "img": {
// "prefix": "img",
// "body": "<img src=\"$1\" alt=\"$2\">$3",
// "description": "HTML - Defines an image",
// "scope": "text.html"
// },
// "input": {
// "prefix": "input",
// "body": "<input type=\"$1\" name=\"$2\" value=\"$3\">$4",
// "description": "HTML - Defines an input field",
// "scope": "text.html"
// },
// "ins": {
// "prefix": "ins",
// "body": "<ins>$1</ins>$2",
// "description": "HTML - Defines inserted text",
// "scope": "text.html"
// },
// "keygen": {
// "prefix": "keygen",
// "body": "<keygen name=\"$1\">$2",
// "description": "HTML - Defines a generated key in a form",
// "scope": "text.html"
// },
// "kbd": {
// "prefix": "kbd",
// "body": "<kbd>$1</kbd>$2",
// "description": "HTML - Defines keyboard text",
// "scope": "text.html"
// },
// "label": {
// "prefix": "label",
// "body": "<label for=\"$1\">$2</label>$3",
// "description": "HTML - Defines an inline window",
// "scope": "text.html"
// },
// "legend": {
// "prefix": "legend",
// "body": "<legend>$1</legend>$2",
// "description": "HTML - Defines a title in a fieldset",
// "scope": "text.html"
// },
// "li": {
// "prefix": "li",
// "body": "<li>$1</li>$2",
// "description": "HTML - Defines a list item",
// "scope": "text.html"
// },
// "link": {
// "prefix": "link",
// "body": "<link rel=\"$1\" type=\"$2\" href=\"$3\">$4",
// "description": "HTML - Defines a resource reference",
// "scope": "text.html"
// },
// "main": {
// "prefix": "main",
// "body": [
// "<main>",
// "\t$1",
// "</main>"
// ],
// "description": "HTML - Defines an image map",
// "scope": "text.html"
// },
// "map": {
// "prefix": "map",
// "body": [
// "<map name=\"$1\">",
// "\t$2",
// "</map>"],
// "description": "HTML - Defines an image map",
// "scope": "text.html"
// },
// "mark": {
// "prefix": "mark",
// "body": "<mark>$1</mark>$2",
// "description": "HTML - Defines marked text",
// "scope": "text.html"
// },
// "menu": {
// "prefix": "menu",
// "body": [
// "<menu>",
// "\t$1",
// "</menu>"
// ],
// "description": "HTML - Defines a menu list",
// "scope": "text.html"
// },
// "menuitem": {
// "prefix": "menuitem",
// "body": "<menuitem>$1</menuitem>$2",
// "description": "HTML - Defines a menu item [firefox only]",
// "scope": "text.html"
// },
// "meta": {
// "prefix": "meta",
// "body": "<meta name=\"$1\" content=\"$2\">$3",
// "description": "HTML - Defines meta information",
// "scope": "text.html"
// },
// "meter": {
// "prefix": "meter",
// "body": "<meter value=\"$1\">$2</meter>$3",
// "description": "HTML - Defines measurement within a predefined range",
// "scope": "text.html"
// },
// "nav": {
// "prefix": "nav",
// "body": [
// "<nav>",
// "\t$1",
// "</nav>"
// ],
// "description": "HTML - Defines navigation links",
// "scope": "text.html"
// },
// "noscript": {
// "prefix": "noscript",
// "body": [
// "<noscript>",
// "$1",
// "</noscript>"
// ],
// "description": "HTML - Defines a noscript section",
// "scope": "text.html"
// },
// "object": {
// "prefix": "object",
// "body": "<object width=\"$1\" height=\"$2\" data=\"$3\">$4</object>$5",
// "description": "HTML - Defines an embedded object",
// "scope": "text.html"
// },
// "ol": {
// "prefix": "ol",
// "body": [
// "<ol>",
// "\t$1",
// "</ol>"
// ],
// "description": "HTML - Defines an ordered list",
// "scope": "text.html"
// },
// "optgroup": {
// "prefix": "optgroup",
// "body": [
// "<optgroup>",
// "\t$1",
// "</optgroup>"
// ],
// "description": "HTML - Defines an option group",
// "scope": "text.html"
// },
// "option": {
// "prefix": "option",
// "body": "<option value=\"$1\">$2</option>$3",
// "description": "HTML - Defines an option in a drop-down list",
// "scope": "text.html"
// },
// "output": {
// "prefix": "output",
// "body": "<output name=\"$1\" for=\"$2\">$3</output>$4",
// "description": "HTML - Defines some types of output",
// "scope": "text.html"
// },
// "p": {
// "prefix": "p",
// "body": "<p>$1</p>$2",
// "description": "HTML - Defines a paragraph",
// "scope": "text.html"
// },
// "param": {
// "prefix": "param",
// "body": "<param name=\"$1\" value=\"$2\">$3",
// "description": "HTML - Defines a parameter for an object",
// "scope": "text.html"
// },
// "pre": {
// "prefix": "pre",
// "body": [
// "<pre>$1</pre>"
// ],
// "description": "HTML - Defines preformatted text",
// "scope": "text.html"
// },
// "progress": {
// "prefix": "progress",
// "body": "<progress value=\"$1\" max=\"$2\">$3</progress>$4",
// "description": "HTML - Defines progress of a task of any kind",
// "scope": "text.html"
// },
// "q": {
// "prefix": "q",
// "body": "<q>$1</q>$2",
// "description": "HTML - Defines a short quotation",
// "scope": "text.html"
// },
// "rp": {
// "prefix": "rp",
// "body": "<rp>$1</rp>$2",
// "description": "HTML - Used in ruby annotations to define what to show browsers that do not support the ruby element",
// "scope": "text.html"
// },
// "rt": {
// "prefix": "rt",
// "body": "<rt>$1</rt>$2",
// "description": "HTML - Defines explanation to ruby annotations",
// "scope": "text.html"
// },
// "ruby": {
// "prefix": "ruby",
// "body": [
// "<ruby>",
// "$1",
// "</ruby>"
// ],
// "description": "HTML - Defines ruby annotations",
// "scope": "text.html"
// },
// "s": {
// "prefix": "s",
// "body": "<s>$1</s>$2",
// "description": "HTML - Used to define strikethrough text",
// "scope": "text.html"
// },
// "samp": {
// "prefix": "samp",
// "body": "<samp>$1</samp>$2",
// "description": "HTML - Defines sample computer code",
// "scope": "text.html"
// },
// "script": {
// "prefix": "script",
// "body": [
// "<script>",
// "\t$1",
// "</script>"
// ],
// "description": "HTML - Defines a script",
// "scope": "text.html"
// },
// "section": {
// "prefix": "section",
// "body": [
// "<section>",
// "\t$1",
// "</section>"
// ],
// "description": "HTML - Defines a section",
// "scope": "text.html"
// },
// "select": {
// "prefix": "select",
// "body": [
// "<select>",
// "\t$1",
// "</select>"
// ],
// "description": "HTML - Defines a selectable list",
// "scope": "text.html"
// },
// "small": {
// "prefix": "small",
// "body": "<small>$1</small>$2",
// "description": "HTML - Defines small text",
// "scope": "text.html"
// },
// "source": {
// "prefix": "source",
// "body": "<source src=\"$1\" type=\"$2\">$3",
// "description": "HTML - Defines media resource",
// "scope": "text.html"
// },
// "span": {
// "prefix": "span",
// "body": "<span>$1</span>$2",
// "description": "HTML - Defines a section in a document",
// "scope": "text.html"
// },
// "strong": {
// "prefix": "strong",
// "body": "<strong>$1</strong>$2",
// "description": "HTML - Defines strong text",
// "scope": "text.html"
// },
// "style": {
// "prefix": "style",
// "body": [
// "<style>",
// "$1",
// "</style>"
// ],
// "description": "HTML - Defines a style definition",
// "scope": "text.html"
// },
// "sub": {
// "prefix": "sub",
// "body": "<sub>$1</sub>$2",
// "description": "HTML - Defines sub-scripted text",
// "scope": "text.html"
// },
// "sup": {
// "prefix": "sup",
// "body": "<sup>$1</sup>$2",
// "description": "HTML - Defines super-scripted text",
// "scope": "text.html"
// },
// "summary": {
// "prefix": "summary",
// "body": "<summary>$1</summary>$2",
// "description": "HTML - Defines a visible heading for the detail element [limited support]",
// "scope": "text.html"
// },
// "table": {
// "prefix": "table",
// "body": [
// "<table>",
// "\t$1",
// "</table>"
// ],
// "description": "HTML - Defines a table",
// "scope": "text.html"
// },
// "tbody": {
// "prefix": "tbody",
// "body": [
// "<tbody>",
// "\t$1",
// "</tbody>"
// ],
// "description": "HTML - Defines a table body",
// "scope": "text.html"
// },
// "td": {
// "prefix": "td",
// "body": "<td>$1</td>$2",
// "description": "HTML - Defines a table cell",
// "scope": "text.html"
// },
// "textarea": {
// "prefix": "textarea",
// "body": "<textarea rows=\"$1\" cols=\"$2\">$3</textarea>$4",
// "description": "HTML - Defines a text area",
// "scope": "text.html"
// },
// "tfoot": {
// "prefix": "tfoot",
// "body": [
// "<tfoot>",
// "\t$1",
// "</tfoot>"
// ],
// "description": "HTML - Defines a table footer",
// "scope": "text.html"
// },
// "thead": {
// "prefix": "thead",
// "body": [
// "<thead>",
// "$1",
// "</thead>"
// ],
// "description": "HTML - Defines a table head",
// "scope": "text.html"
// },
// "th": {
// "prefix": "th",
// "body": "<th>$1</th>$2",
// "description": "HTML - Defines a table header",
// "scope": "text.html"
// },
// "time": {
// "prefix": "time",
// "body": "<time datetime=\"$1\">$2</time>$3",
// "description": "HTML - Defines a date/time",
// "scope": "text.html"
// },
// "title": {
// "prefix": "title",
// "body": "<title>$1</title>$2",
// "description": "HTML - Defines the document title",
// "scope": "text.html"
// },
// "tr": {
// "prefix": "tr",
// "body": "<tr>$1</tr>$2",
// "description": "HTML - Defines a table row",
// "scope": "text.html"
// },
// "track": {
// "prefix": "track",
// "body": "<track src=\"$1\" kind=\"$2\" srclang=\"$3\" label=\"$4\">$5",
// "description": "HTML - Defines a table row",
// "scope": "text.html"
// },
// "u": {
// "prefix": "u",
// "body": "<u>$1</u>$2",
// "description": "HTML - Used to define underlined text",
// "scope": "text.html"
// },
// "ul": {
// "prefix": "ul",
// "body": [
// "<ul>",
// "\t$1",
// "</ul>"
// ],
// "description": "HTML - Defines an unordered list",
// "scope": "text.html"
// },
// "var": {
// "prefix": "var",
// "body": "<var>$1</var>$2",
// "description": "HTML - Defines a variable",
// "scope": "text.html"
// },
// "video": {
// "prefix": "video",
// "body": [
// "<video width=\"$1\" height=\"$2\" controls>",
// "\t$3",
// "</video>"],
// "description": "HTML - Defines a video",
// "scope": "text.html"
// }
// }

View File

@ -0,0 +1,20 @@
# Welcome to your VS Code Extension
## What's in the folder
* This folder contains all of the files necessary for your extension
* `package.json` - this is the manifest file that defines the location of the snippet file
and specifies the language of the snippets
* `snippets/snippets.json` - the file containing all snippets
## Get up and running straight away
* press `F5` to open a new window with your extension loaded
* create a new file with a file name suffix matching your language
* verify that your snippets are proposed on intellisense
## Make changes
* you can relaunch the extension from the debug toolbar after making changes to the files listed above
* you can also reload (`Ctrl+R` or `Cmd+R` on Mac) the VS Code window with your extension to load your changes
## Install your extension
* To start using your extension with Visual Studio Code copy it into the <user home>/.vscode/extensions folder and restart Code.
* To share your extension with the world, read on https://code.visualstudio.com/docs about publishing an extension.

View File

@ -0,0 +1,44 @@
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Language="en-US" Id="project-manager" Version="12.5.0" Publisher="alefragnani" />
<DisplayName>Project Manager</DisplayName>
<Description xml:space="preserve">Easily switch between projects</Description>
<Tags>git,project,folder,workspace,switch,manage,mercurial,svn,multi-root ready,keybindings</Tags>
<Categories>Other</Categories>
<GalleryFlags>Public</GalleryFlags>
<Badges></Badges>
<Properties>
<Property Id="Microsoft.VisualStudio.Code.Engine" Value="^1.61.0" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionDependencies" Value="" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionPack" Value="" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionKind" Value="ui,workspace" />
<Property Id="Microsoft.VisualStudio.Code.LocalizedLanguages" Value="" />
<Property Id="Microsoft.VisualStudio.Services.Links.Source" Value="https://github.com/alefragnani/vscode-project-manager.git" />
<Property Id="Microsoft.VisualStudio.Services.Links.Getstarted" Value="https://github.com/alefragnani/vscode-project-manager.git" />
<Property Id="Microsoft.VisualStudio.Services.Links.GitHub" Value="https://github.com/alefragnani/vscode-project-manager.git" />
<Property Id="Microsoft.VisualStudio.Services.Links.Support" Value="https://github.com/alefragnani/vscode-project-manager/issues" />
<Property Id="Microsoft.VisualStudio.Services.Links.Learn" Value="https://github.com/alefragnani/vscode-project-manager/blob/master/README.md" />
<Property Id="Microsoft.VisualStudio.Services.GitHubFlavoredMarkdown" Value="true" />
</Properties>
<License>extension/LICENSE.md</License>
<Icon>extension/images/icon.png</Icon>
</Metadata>
<Installation>
<InstallationTarget Id="Microsoft.VisualStudio.Code"/>
</Installation>
<Dependencies/>
<Assets>
<Asset Type="Microsoft.VisualStudio.Code.Manifest" Path="extension/package.json" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Content.Details" Path="extension/README.md" Addressable="true" /><Asset Type="Microsoft.VisualStudio.Services.Content.Changelog" Path="extension/CHANGELOG.md" Addressable="true" /><Asset Type="Microsoft.VisualStudio.Services.Content.License" Path="extension/LICENSE.md" Addressable="true" /><Asset Type="Microsoft.VisualStudio.Services.Icons.Default" Path="extension/images/icon.png" Addressable="true" />
</Assets>
</PackageManifest>

View File

@ -0,0 +1,502 @@
## [12.5.0] - 2022-02-08
### Added
- New setting to support symlinks on `baseFolder` setting (issue [#583](https://github.com/alefragnani/vscode-project-manager/issues/583))
- Support new MacOS File Menu API (issue [#555](https://github.com/alefragnani/vscode-project-manager/issues/555))
- Support new `createStatusBarItem` API (issue [#521](https://github.com/alefragnani/vscode-project-manager/issues/521))
### Changed
- Remove `watchFile` interval (issue [#575](https://github.com/alefragnani/vscode-project-manager/issues/575))
### Internal
- Duckly becomes a Sponsor
## [12.4.0] - 2021-09-08
### Added
- `View as` option to Favorites View (issue [#534](https://github.com/alefragnani/vscode-project-manager/issues/534))
- `Sort by` option to Favorites View (issue [#484](https://github.com/alefragnani/vscode-project-manager/issues/484))
- Setting to display the parent folder on duplicate (same-name) projects (issue [#306](https://github.com/alefragnani/vscode-project-manager/issues/306))
### Changed
- Side Bar tooltips now in Markdown (issue [#540](https://github.com/alefragnani/vscode-project-manager/issues/540))
- Side Bar following `sortList` setting (issue [#366](https://github.com/alefragnani/vscode-project-manager/issues/366))
### Fixed
- Typos in README (Thanks to @kant [PR [#532](https://github.com/alefragnani/vscode-project-manager/issues/532)](https://github.com/alefragnani/vscode-project-manager/pull/532))
## [12.3.0] - 2021-07-11
### Added
- Organize your projects with **Tags** (issue [#50](https://github.com/alefragnani/vscode-project-manager/issues/50))
- Documentation about how to use the extension on Remote Development (issue [#477](https://github.com/alefragnani/vscode-project-manager/issues/477))
- Use specific icons for each kind of remote project (issue [#483](https://github.com/alefragnani/vscode-project-manager/issues/483))
## [12.2.0] - 2021-06-10
### Added
- Support **Virtual Workspaces** (issue [#500](https://github.com/alefragnani/vscode-project-manager/issues/500))
- Support **Workspace Trust** (issue [#499](https://github.com/alefragnani/vscode-project-manager/issues/499))
- Support `.code-workspace` projects ocated on remotes (issue [#486](https://github.com/alefragnani/vscode-project-manager/issues/486))
### Fixed
- Favorite projects missing icons for Folders when using None or Seti Icon Theme (issue [#496](https://github.com/alefragnani/vscode-project-manager/issues/496))
### Internal
- Security Alert: lodash (dependabot [PR [#503](https://github.com/alefragnani/vscode-project-manager/issues/503)](https://github.com/alefragnani/vscode-project-manager/pull/503))
- Security Alert: ssri (dependabot [PR [#495](https://github.com/alefragnani/vscode-project-manager/issues/495)](https://github.com/alefragnani/vscode-project-manager/pull/495))
## [12.1.0] - 2021-04-02
### Added
- Save GitHub Codespaces projects always as "remote project" (issue [#479](https://github.com/alefragnani/vscode-project-manager/issues/479))
### Changed
- Do not show welcome message if installed by Settings Sync (issue [#459](https://github.com/alefragnani/vscode-project-manager/issues/459))
### Fixed
- Mercurial projects not found (issue [#438](https://github.com/alefragnani/vscode-project-manager/issues/438))
### Internal
- Update whats-new submodule API (issue [#456](https://github.com/alefragnani/vscode-project-manager/issues/456))
- Add badges to Readme (issue [#359](https://github.com/alefragnani/vscode-project-manager/issues/359))
- Security Alert: y18n (dependabot [PR [#482](https://github.com/alefragnani/vscode-project-manager/issues/482)](https://github.com/alefragnani/vscode-project-manager/pull/482))
- Security Alert: elliptic (dependabot [PR [#472](https://github.com/alefragnani/vscode-project-manager/issues/472)](https://github.com/alefragnani/vscode-project-manager/pull/472))
## [12.0.1] - 2020-11-23
### Fixed
- Conflict with non-unique command (issue [#441](https://github.com/alefragnani/vscode-project-manager/issues/441))
## [12.0.0] - 2020-11-19
### Added
- `Open Settings` command to the Side Bar (issue [#434](https://github.com/alefragnani/vscode-project-manager/issues/434))
- Concatenates the "Number of Projects" on each Panel in the Side Bar (issue [#267](https://github.com/alefragnani/vscode-project-manager/issues/267))
- `Reveal in Finder/Explorer` command in the Side Bar's context menu (issue [#322](https://github.com/alefragnani/vscode-project-manager/issues/322))
- Setting to decide if auto-detected projects should ignore projects found inside other projects (issue [#189](https://github.com/alefragnani/vscode-project-manager/issues/189))
### Internal
- Use `vscode-ext-help-and-feedback` package (issue [#432](https://github.com/alefragnani/vscode-project-manager/issues/432))
## [11.3.1] - 2020-10-16
### Internal
- Update CodeStream sponsorship details
## [11.3.0] - 2020-09-06
### Added
- Support `$home` and `~` (tilde) symbol on `projectLocation` setting (issue [#384](https://github.com/alefragnani/vscode-project-manager/issues/384))
- Support `~` (tilde) symbol on any path related setting (issue [#414](https://github.com/alefragnani/vscode-project-manager/issues/414))
- Support `glob` patterns in `ignoredFolders` settings (issue [#278](https://github.com/alefragnani/vscode-project-manager/issues/278))
- Localization - Czech (Thanks to @Amereyeu [PR [#412](https://github.com/alefragnani/vscode-project-manager/issues/412)](https://github.com/alefragnani/vscode-project-manager/pull/412))
## [11.2.0] - 2020-08-19
### Added
- Support string array in Settings UI (issue [#410](https://github.com/alefragnani/vscode-project-manager/issues/410))
- Use new remote codicon (issue [#396](https://github.com/alefragnani/vscode-project-manager/issues/396))
### Fixed
- Weird icon behaviour when no ThemeIcon is selected (issue [#392](https://github.com/alefragnani/vscode-project-manager/issues/392))
- maxDepthRecursion worried about extra trailing path separator (issue [#404](https://github.com/alefragnani/vscode-project-manager/issues/404))
- Localization - Simplified Chinese (Thanks to @loniceras [PR [#403](https://github.com/alefragnani/vscode-project-manager/issues/403)](https://github.com/alefragnani/vscode-project-manager/pull/403))
- Typo in What's New (Thanks to @geauxtigers [PR [#390](https://github.com/alefragnani/vscode-project-manager/issues/390)](https://github.com/alefragnani/vscode-project-manager/pull/390))
## [11.1.0] - 2020-06-19
### Changed
- Internal commands can't be customisable (issue [#388](https://github.com/alefragnani/vscode-project-manager/issues/388))
### Fixed
- Status bar not working on remotes (issue [#379](https://github.com/alefragnani/vscode-project-manager/issues/379))
- `Command Palette` showing ”Path does not exists” for remote projects (issue [#380](https://github.com/alefragnani/vscode-project-manager/issues/380))
- `Open Folder` command in Welcome view not working on Windows (issue [#387](https://github.com/alefragnani/vscode-project-manager/issues/387))
### Internal
- Migrate from TSLint to ESLint (issue [#360](https://github.com/alefragnani/vscode-project-manager/issues/360))
- Use `vscode-ext-codicons` package (issue [#386](https://github.com/alefragnani/vscode-project-manager/issues/386))
## [11.0.1] - 2020-05-19
### Fixed
- Path does not exists for SSH remote project (issue [#375](https://github.com/alefragnani/vscode-project-manager/issues/375))
- `Open` command in Side Bar's context menu does not work (issue [#376](https://github.com/alefragnani/vscode-project-manager/issues/376))
- Path does not exists for Docker remote project on Windows (issue [#377](https://github.com/alefragnani/vscode-project-manager/issues/377))
## [11.0.0] - 2020-05-14
### Added
- Support open **Remote Projects** from your local installation (issue [#345](https://github.com/alefragnani/vscode-project-manager/issues/345))
- **Side Bar** welcome message (issue [#353](https://github.com/alefragnani/vscode-project-manager/issues/353))
### Internal
- Remove `vscode` module dependency (issue [#369](https://github.com/alefragnani/vscode-project-manager/issues/369))
## [10.12.0] - 2020-04-25
### Added
- Setting to decide if the `Open in New Window` command should open in the current window, if empty (issue [#188](https://github.com/alefragnani/vscode-project-manager/issues/188))
### Fixed
- Typo in README (Thanks to @1st [PR [#348](https://github.com/alefragnani/vscode-project-manager/issues/348)](https://github.com/alefragnani/vscode-project-manager/pull/348))
- Typo in README (issue [#337](https://github.com/alefragnani/vscode-project-manager/issues/337))
## Internal
- Support VS Code package split (issue [#361](https://github.com/alefragnani/vscode-project-manager/issues/361))
- Support Extension View Context Menu (issue [#327](https://github.com/alefragnani/vscode-project-manager/issues/327))
## [10.11.0] - 2020-03-06
### Added
- Increase **Remote Development** support (issues [#323](https://github.com/alefragnani/vscode-project-manager/issues/323) and (Thanks to @egamma [PR [#331](https://github.com/alefragnani/vscode-project-manager/issues/331)](https://github.com/alefragnani/vscode-project-manager/pull/331))
- `Add Project to Workspace` command in Command Palette (issues [#283](https://github.com/alefragnani/vscode-project-manager/issues/283)
## Internal
- Support **ThemeIcon** (issues [#326](https://github.com/alefragnani/vscode-project-manager/issues/326)
## [10.10.0] - 2020-01-25
### Added
- Support **Remote Development** (issues [#284](https://github.com/alefragnani/vscode-project-manager/issues/284) and [#318](https://github.com/alefragnani/vscode-project-manager/issues/318))
## [10.9.1] - 2019-11-21
### Changed
- Update CodeStream Ad and URL
## [10.9.0] - 2019-11-18
### Added
- Localization support - Simplified Chinese (Thanks to @L1cardo [PR [#300](https://github.com/alefragnani/vscode-project-manager/issues/300)](https://github.com/alefragnani/vscode-project-manager/pull/300))
- `Open in New Window` hover command in Side Bar
## [10.8.0] - 2019-09-25
### Added
- Support to save **Workspaces** as projects
## [10.7.0] - 2019-08-25
### Added
- New Side Bar icon matching new VS Code icon style
## [10.6.0] - 2019-07-28
### Added
- Support for _auto-detected_ projects only scenario
- Localization support - Portuguese (Brazil)
- `Save Button` button in Side Bar
## [10.5.2] - 2019-05-28
### Fixed
- Security Alert: tar
## [10.5.1] - 2019-04-05
### Fixed
- Deprecate `projectManager.treeview.visible` setting. (issue [#265](https://github.com/alefragnani/vscode-project-manager/issues/265))
## [10.5.0] - 2019-04-02
### Added
- Faster startup (Side Bar) (issue [#264](https://github.com/alefragnani/vscode-project-manager/issues/264))
## [10.4.0] - 2019-03-14
### Added
- `GlobalStoragePath` Support (Thanks to @Chuxel [PR [#250](https://github.com/alefragnani/vscode-project-manager/issues/250)](https://github.com/alefragnani/vscode-project-manager/pull/250))
- Localization support - Russian (Thanks to @Inter-Net-Pro [PR [#222](https://github.com/alefragnani/vscode-project-manager/issues/222)](https://github.com/alefragnani/vscode-project-manager/pull/222))
### Fixed
- What's New page broken in VS Code 1.32 due to CSS API changes
## [10.3.2] - 2019-02-01
### Fixed
- Error in _clean install_ (issue [Bookmarks [#178](https://github.com/alefragnani/vscode-project-manager/issues/178)](https://github.com/alefragnani/vscode-bookmarks/issues/178))
## [10.3.1] - 2019-01-31
### Fixed
- Update CodeStream logo
## [10.3.0] - 2019-01-17
### Changed
- The **Side Bar** is now visible by default, even with no projects (issue [#227](https://github.com/alefragnani/vscode-project-manager/issues/227))
### Fixed
- The projects in the **Side Bar** should not be sorted case-sensitive (issue [#243](https://github.com/alefragnani/vscode-project-manager/issues/243))
## [10.2.0] - 2019-01-06
### Added
- Support **Portable Mode** (thanks to @hcwhan [PR 204](https://github.com/alefragnani/vscode-project-manager/pull/204) and @TanShun [PR 242](https://github.com/alefragnani/vscode-project-manager/pull/242))
- `Disable Project` command in Side Bar (thanks to @tekerson [PR 226](https://github.com/alefragnani/vscode-project-manager/pull/226))
## [10.1.0] - 2018-12-17
### Added
- `Add to Favorites` command in Side Bar (thanks to @ckaczor [PR 229](https://github.com/alefragnani/vscode-project-manager/pull/229))
- `Refresh Project` commands in Side Bar for every kind of auto-detected project (thanks to @ckaczor [PR 231](https://github.com/alefragnani/vscode-project-manager/pull/231))
## [10.0.0] - 2018-11-28
### Added
- What's New
## [9.1.0] - 2018-11-06
### Added
- CodeStream becomes a Sponsor
## [9.0.1] - 2018-09-25
### Fixed
- Avoid installation in unsupported VSCode version (issue [#198](https://github.com/alefragnani/vscode-project-manager/issues/198))
## [9.0.0] - 2018-09-19
### Added
- Support _any folder_ as project (issue [#137](https://github.com/alefragnani/vscode-project-manager/issues/137))
- Use the new NotificationUI for refresh progress (issue [#174](https://github.com/alefragnani/vscode-project-manager/issues/174))
- Add instructions for install the extension and modifying its settings (issue [#176](https://github.com/alefragnani/vscode-project-manager/issues/176))
## [8.1.0] - 2018-09-15
### Added
- Patreon button
## [8.0.0] - 2018-07-04
### Added
- Project Manager Side Bar (issue [#183](https://github.com/alefragnani/vscode-project-manager/issues/183))
- New Command in TreeView `Add to Workspace` (issue [#161](https://github.com/alefragnani/vscode-project-manager/issues/161))
- New Version Numbering based on `semver`
### Fixed
- `Save Project` command raises error when no folder is open (issue [#191](https://github.com/alefragnani/vscode-project-manager/issues/191))
## [0.25.2 - 7.2.2] - 2018-04-23
### Fixed
- Support _OSS_ releases, using the correct _User folder_ to store the projects (kudos to @Kurolox [PR 179](https://github.com/alefragnani/vscode-project-manager/pull/179))
## [0.25.0 - 7.2.0] - 2018-03-18
### New
- Support _Mercurial_ projects, similar to VSCode, Git and SVN (kudos to @lavir [PR 168](https://github.com/alefragnani/vscode-project-manager/pull/168))
### Changed
- The _sort by name_ option is now case-insensitive (kudos to @lavir [PR 169](https://github.com/alefragnani/vscode-project-manager/pull/169))
### Fixed
- Readme typo (thanks to @gavinr [PR 171](https://github.com/alefragnani/vscode-project-manager/pull/171))
## [0.24.1 - 7.1.1] - 2018-03-06
### Fixed
- `Refresh Projects` and Automatic Detection of Projects not working correctly (issues [#157](https://github.com/alefragnani/vscode-project-manager/issues/157), [#164](https://github.com/alefragnani/vscode-project-manager/issues/164), [#167](https://github.com/alefragnani/vscode-project-manager/issues/167) and [#172](https://github.com/alefragnani/vscode-project-manager/issues/172))
## [0.24.0 - 7.1.0] - 2018-02-03
### Added
- Setting to filter projects through full path (Thanks to @R3oLoN [PR [#166](https://github.com/alefragnani/vscode-project-manager/issues/166)](https://github.com/alefragnani/vscode-project-manager/pull/166))
## [0.23.1 - 7.0.1] - 2017-12-14
### Fixed
- Paths are now OS independent (issue [#152](https://github.com/alefragnani/vscode-project-manager/issues/152))
- Detect changes on any `git`, `vscode` or `svn` config (Thanks to @jcw- [PR [#150](https://github.com/alefragnani/vscode-project-manager/issues/150)](https://github.com/alefragnani/vscode-project-manager/pull/150))
## [0.23.0 - 7.0.0] - 2017-11-02
### Added
- Multi-root support (issue [#149](https://github.com/alefragnani/vscode-project-manager/issues/149))
## [0.22.0 - 6.0.0] - 2017-10-27
### Added
- Setting to display the Treeview (issue [#143](https://github.com/alefragnani/vscode-project-manager/issues/143))
- Setting to remove current project from list (Thanks to @rockingskier [PR [#146](https://github.com/alefragnani/vscode-project-manager/issues/146)](https://github.com/alefragnani/vscode-project-manager/pull/146))
### Changed
- Add `.haxelib` to `git.ignoredFolders` (Thanks to @Gamma11 [PR [#140](https://github.com/alefragnani/vscode-project-manager/issues/140)](https://github.com/alefragnani/vscode-project-manager/pull/140))
## [0.21.1 - 5.0.1] - 2017-09-08
### Fixed
- Error opening _Favorite_ projects in Treeview (issue [#141](https://github.com/alefragnani/vscode-project-manager/issues/141))
## [0.21.0 - 5.0.0] - 2017-09-07
### Added
- Projects Treeview (issue [#103](https://github.com/alefragnani/vscode-project-manager/issues/103))
## [0.20.0 - 4.5.0] - 2017-08-26
### Added
- Status Bar now also displays for auto-detected projects (VSCode, Git and SVN) (issue [#116](https://github.com/alefragnani/vscode-project-manager/issues/116))
- Support keyboard navigation (Vim like) in the project list (issue [#136](https://github.com/alefragnani/vscode-project-manager/issues/136))
## [0.19.0 - 4.4.0] - 2017-08-03
### Added
- Support _git-worktree_ projects (issue [#134](https://github.com/alefragnani/vscode-project-manager/issues/134))
## [0.18.1 - 4.3.1] - 2017-06-18
### Fixed
- Status Bar sometimes not showing in MacOS (issue [#127](https://github.com/alefragnani/vscode-project-manager/issues/127))
## [0.18.0 - 4.3.0] - 2017-05-25
### Added
- Setting to decide if it would open projects in New Window when clicking in Status Bar
- Setting to disable checking for invalid paths before listing projects
### Changed
- Source code moved to `src` folder
## [0.17.0 - 4.2.0] - 2017-05-20
### Added
- Support grouping projects by type in `List Projects...` commands.
### Changed
- The `projectManager.openInNewWindow` setting was removed, since you already have `List Projects to Open in New Window` command.
## [0.16.0 - 4.1.0] - 2017-05-04
### Added
- Support cross platform path definitions also in VSCode, Git and SVN Projects (issue [#88](https://github.com/alefragnani/vscode-project-manager/issues/88))
## [0.15.1 - 4.1.1] - 2017-04-27
### Added
- Avoid _unnecessary_ cache delete when no `baseFolder` setting is changed in `User Settings` (issue [#111](https://github.com/alefragnani/vscode-project-manager/issues/111))
## [0.15.0 - 4.1.0] - 2017-04-18
### Added
- Projects now detect _configuration changes_ to update Git/VSCode/SVN caches (issue [#110](https://github.com/alefragnani/vscode-project-manager/issues/110))
## [0.14.0 - 4.0.0] - 2017-04-12
### Added
- Projects now detect _external changes_ to update cache (Thanks to @likun7981 [PR [#107](https://github.com/alefragnani/vscode-project-manager/issues/107)](https://github.com/alefragnani/vscode-project-manager/pull/107))
## [0.13.5 - 3.8.5] - 2017-03-18
### Fixed
- Duplicate projects being listed (Thanks to @mlewand [PR [#101](https://github.com/alefragnani/vscode-project-manager/issues/101)](https://github.com/alefragnani/vscode-project-manager/pull/101))
## [0.13.4 - 3.8.4] - 2017-05-08
### Fixed
- `Delete Project` wasn't working (Thanks to @mlewand [PR [#100](https://github.com/alefragnani/vscode-project-manager/issues/100)](https://github.com/alefragnani/vscode-project-manager/pull/100))
## [0.13.3 - 3.8.3] - 2017-05-05
### Fixed
- Extension loading delay (Thanks to @Gama11 [PR [#97](https://github.com/alefragnani/vscode-project-manager/issues/97)](https://github.com/alefragnani/vscode-project-manager/pull/97))
## [0.13.2 - 3.8.2] - 2017-02-01
### Fixed
- Status Bar not working for newly saved projects in macOS and Linux (issue [#84](https://github.com/alefragnani/vscode-project-manager/issues/84))
## [0.13.1 - 3.8.1] - 2017-01-28
### Fixed
- Invalid `projects.json` file causing erros (issue [#82](https://github.com/alefragnani/vscode-project-manager/issues/82))
- Projects not displaying when no projects saved (Thanks to @samuelsuarez [PR [#81](https://github.com/alefragnani/vscode-project-manager/issues/81)](https://github.com/alefragnani/vscode-project-manager/pull/81))
- Typo in message (Thanks to @Gama11 [PR [#83](https://github.com/alefragnani/vscode-project-manager/issues/83)](https://github.com/alefragnani/vscode-project-manager/pull/83))
### Changed
- Enabled **TSLint**
## [0.13.0 - 3.8.0] - 2017-01-15
### Added
- Also list _Git_ and _SVN_ projects
- Setting to support Git and SVN projects (`baseFolders`, `maxDepthRecursion` and `ignoredFolders`)
- Setting to cache VSCode, Git and SVN projects
### Added
- New Command `Refresh Projects`
### Changed
- `projects.json` file has been refactored to support upcoming features
## [0.12.2 - 3.7.2] - 2016-11-06
### Fixed
- Saving a project with a new name was duplicating the Status Bar (issue [#69](https://github.com/alefragnani/vscode-project-manager/issues/69))
## [0.12.1 - 3.7.1] - 2016-11-05
### Fixed
- The `path` should not be relevant while filtering projects (issue [#67](https://github.com/alefragnani/vscode-project-manager/issues/67))
## [0.12.0 - 3.7.0] - 2016-10-26
### Added
- Display the _Project Name_ in the Status Bar (kudos to @BonDoQ)
- Setting to display the _Project Name_ in the Status Bar
- Improved message when there is project saved yet (issue [#57](https://github.com/alefragnani/vscode-project-manager/issues/57))
## [0.11.0 - 3.6.0] - 2016-10-19
### Added
- Also list _VS Code_ projects
- Setting to support VS Code projects (`baseFolders`, `maxDepthRecursion` and `ignoredFolders`)
## [0.10.0 - 3.5.0] - 2016-09-20
### Added
- New Command `List Projects to Open in New Window`
- Comment for `sortList` setting now shows available options (issue [#52](https://github.com/alefragnani/vscode-project-manager/issues/52))
### Changed
- Renamed Command `List Projects to Open`
## [0.9.2 - 3.4.2] - 2016-09-09
### Fixed
- Interim fix for project's name suggestion not working (also in _Stable_ release) (issue [#51](https://github.com/alefragnani/vscode-project-manager/issues/51))
## [0.9.1 - 3.4.1] - 2016-09-04
### Fixed
- Saving projects with no name (_Insider_ release) (issue [#42](https://github.com/alefragnani/vscode-project-manager/issues/42))
## [0.9.0 - 3.4.0] - 2016-09-01
### Added
- Added another **Sort** option (`Recent`)
## [0.8.3 - 3.3.1] - 2016-08-03
### Fixed
- Linux support broken (issue [#39](https://github.com/alefragnani/vscode-project-manager/issues/39))
## [0.8.2 - 3.3.0] - 2016-07-29
### Added
- The extension now supports **VSCode Insiders** version and has its own `projects.json` file. Use the **new setting** if you want to have **Stable** and **Insider** versions sharing the project list.
- Setting to indicate an alternative location where the `projects.json` file is located
### Fixed
- Not working on machines with _only_ **VSCode Insider** version installed (issue [#22](https://github.com/alefragnani/vscode-project-manager/issues/22))
## [0.8.1 - 3.2.1] - 2016-07-27
### Fixed
- Sort by _Saved_ not available (issue [#37](https://github.com/alefragnani/vscode-project-manager/issues/37))
## [0.8.0 - 3.2.0] - 2016-07-14
### Added
- Support `$home` variable in project paths (kudos to @efidiles)
## [0.7.1 - 3.1.1] - 2016-05-30
### Fixed
- List Projects command failed when no folder is open (issue [#32](https://github.com/alefragnani/vscode-project-manager/issues/32))
## [0.7.0 - 3.1.0] - 2016-05-17
### Added
- Don't show the current folder/project in the project list (issue [#28](https://github.com/alefragnani/vscode-project-manager/issues/28))
- Indicate _invalid paths_ in the project list (issue [#30](https://github.com/alefragnani/vscode-project-manager/issues/30))
## [0.6.0 - 3.0.0] - 2016-04-26
### Added
- Use new native API for opening folders _(requires VSCode 1.1.0 or higher)_
### Changed
- The `projectManager.codePath` and `projectManager.useAlternativeMacOSXPath` where removed because are not necessary anymore.
### Fixed
- Click or enter in project list does not work (Linux / Mac) (issue [#27](https://github.com/alefragnani/vscode-project-manager/issues/27))
## [0.5.5 - 2.0.5] - 2016-04-03
### Fixed
- Saving projects not working in Linux (issue [#16](https://github.com/alefragnani/vscode-project-manager/issues/16)
- Readme updated to better explain how to install and configure the extension
## [0.5.4 - 2.0.4] - 2016-03-14
### Fixed
- Updated instructions for Mac OS X after Code February Release (issue [#14](https://github.com/alefragnani/vscode-project-manager/issues/14) - Thanks to @satokaz, @janmarek and @csholmq)
## [0.5.3 - 2.0.3] - 2016-03-09
### Fixed
- Save Project was using the whole path (issue [#12](https://github.com/alefragnani/vscode-project-manager/issues/12))
## [0.5.2 - 2.0.2] - 2016-02-24
### Fixed
- Project switch not working for network folders (UNC Notation) (issue [#10](https://github.com/alefragnani/vscode-project-manager/issues/10))
## [0.5.1 - 2.0.1] - 2016-02-11
### Fixed
- Interim fix for project switching not working in Mac OS X (issue [#7](https://github.com/alefragnani/vscode-project-manager/issues/7) - Thanks to @satokaz)
## [0.5.0 - 2.0.0] - 2016-02-10
### Added
- The `projects.json` file is now formatted (Thanks to @cuth [PR [#6](https://github.com/alefragnani/vscode-project-manager/issues/6)](https://github.com/alefragnani/vscode-project-manager/pull/6))
### Fixed
- The `List Projects` keybinding was not working property (issue [#8](https://github.com/alefragnani/vscode-project-manager/issues/8))
## [0.4.0 - 1.3.0] - 2016-01-20
### Added
- New Command `Edit Projects`
## [0.3.1 - 1.2.1] - 2016-01-18
### Fixed
- Project switch not working properly (issue [#5](https://github.com/alefragnani/vscode-project-manager/issues/5))
## [0.3.0 - 1.2.0] - 2016-01-18
### Added
- Setting to Indicate Code path
- Setting to Open a New Window when you choose a project, or just switch the current
### Fixed
- Spaces in Project Path (issue [#3](https://github.com/alefragnani/vscode-project-manager/issues/3))
## [0.2.0 - 1.1.0] - 2016-01-16
### Added
* License updated
## [0.1.1 - 1.0.0] - 2016-01--6
* Initial release

View File

@ -0,0 +1,22 @@
The MIT License (MIT)
Copyright (c) 2015 Alessandro Fragnani
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,335 @@
[![](https://vsmarketplacebadge.apphb.com/version-short/alefragnani.project-manager.svg)](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager)
[![](https://vsmarketplacebadge.apphb.com/downloads-short/alefragnani.project-manager.svg)](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager)
[![](https://vsmarketplacebadge.apphb.com/rating-short/alefragnani.project-manager.svg)](https://marketplace.visualstudio.com/items?itemName=alefragnani.project-manager)
<p align="center">
<br />
<a title="Learn more about Project Manager" href="http://github.com/alefragnani/vscode-project-manager"><img src="https://raw.githubusercontent.com/alefragnani/vscode-project-manager/master/images/vscode-project-manager-logo-readme.png" alt="Project Manager Logo" width="70%" /></a>
</p>
# What's new in Project Manager 12.5
* Organize your projects with **Tags**
* Adds **Virtual Workspaces** support
* Adds **Workspace Trust** support
* Improved **Side Bar** usability
* Full **Remote Development** support
* Adds **Symlink** support
# Support
**Project Manager** is an extension created for **Visual Studio Code**. If you find it useful, please consider supporting it.
<table align="center" width="60%" border="0">
<tr>
<td>
<a title="Paypal" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=EP57F3B6FXKTU&lc=US&item_name=Alessandro%20Fragnani&item_number=vscode%20extensions&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted"><img src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif"/></a>
</td>
<td>
<a title="Paypal" href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=EP57F3B6FXKTU&lc=BR&item_name=Alessandro%20Fragnani&item_number=vscode%20extensions&currency_code=BRL&bn=PP%2dDonationsBF%3abtn_donate_SM%2egif%3aNonHosted"><img src="https://www.paypalobjects.com/pt_BR/i/btn/btn_donate_SM.gif"/></a>
</td>
<td>
<a title="Patreon" href="https://www.patreon.com/alefragnani"><img src="https://raw.githubusercontent.com/alefragnani/oss-resources/master/images/button-become-a-patron-rounded-small.png"/></a>
</td>
</tr>
</table>
## Sponsors
<a title="Learn more about CodeStream" href="https://sponsorlink.codestream.com/?utm_source=vscmarket&utm_campaign=projectmanager&utm_medium=banner"><img src="https://alt-images.codestream.com/codestream_logo_projectmanager.png" width="35%"/></a></br>
Eliminate context switching and costly distractions. Create and merge PRs and perform code reviews from inside your IDE while using jump-to-definition, your keybindings, and other IDE favorites.<br> <a title="Learn more about CodeStream" href="https://sponsorlink.codestream.com/?utm_source=vscmarket&utm_campaign=projectmanager&utm_medium=banner">Learn more</a>
<br>
<a title="Try it out for free" href="https://bit.ly/3usnjZj"><img src="https://storage.googleapis.com/gitduck/img/duckly-sponsor-vsc-opt.png" width="25%"/></a></br>
Easy pair programming with any IDE. Duckly enables you to talk, share your code in real-time, server and terminal with people using different IDEs.<br> <a title="Try it out for free" href="https://bit.ly/3usnjZj">Try it out for free</a>
<br>
<br>
# Project Manager
It helps you to easily access your **projects**, no matter where they are located. _Don't miss those important projects anymore_.
You can define your own **Projects** (also called **Favorites**), or choose for auto-detect **Git**, **Mercurial** or **SVN** repositories, **VSCode** folders, or **any** other folder.
Here are some of the features that **Project Manager** provides:
* Save any folder or workspace as a **Project**
* Auto-detect **Git**, **Mercurial** or **SVN** repositories
* Organize your projects using **Tags**
* Open projects in the same or new window
* Identify _deleted/renamed_ projects
* A **Status Bar** which identifies the current project
* A dedicated **Side Bar**
# Features
## Available Commands
* `Project Manager: Save Project` Save the current folder/workspace as a new project
* `Project Manager: Edit Project` Edit your projects manually (`projects.json`)
* `Project Manager: List Projects to Open` List all saved/detected projects and pick one
* `Project Manager: List Projects to Open in New Window` List all saved/detected projects and pick one to be opened in New Window
* `Project Manager: Filter Projects by Tag` Filter the Favorite projects by selected tags
## Manage your projects
### Save Project
You can save the current folder/workspace as a **Project** at any time. You just need to type its name.
![Save](https://github.com/alefragnani/vscode-project-manager/raw/HEAD/images/project-manager-save.png)
> It suggests a name to you _automatically_ :)
### Edit Projects
For easier customization of your project list, you can edit the `projects.json` file, directly inside **Code**. Just execute `Project Manager: Edit Projects` and the `projects.json` file is opened. Simple as this:
```json
[
{
"name": "Pascal MI",
"rootPath": "c:\\PascalProjects\\pascal-menu-insight",
"tags": [],
"enabled": true
},
{
"name": "Bookmarks",
"rootPath": "$home\\Documents\\GitHub\\vscode-bookmarks",
"tags": [
"Personal",
"VS Code"
],
"enabled": true
},
{
"name": "Numbered Bookmarks",
"rootPath": "~\\Documents\\GitHub\\vscode-numbered-bookmarks",
"tags": [
"Personal",
"VS Code"
],
"enabled": false
}
]
```
> You can use `~` or `$home` while defining any path. It will be replaced by your HOME folder.
> Be sure that the JSON file is well-formed. Otherwise, **Project Manager** will not be able to open it, and an error message like this should appear. In this case, you should use the `Open File` button to fix it.
![Corrupted](https://github.com/alefragnani/vscode-project-manager/raw/HEAD/images/project-manager-edit-corrupted-projectsJson.png)
## Access
### List Projects to Open
Shows your projects and select one to open.
### List Projects to Open in New Window
Just like **List Projects** but always opening in **New Window**.
## Keyboard Focused Users
If you are a keyboard focused user and uses _Vim like_ keyboard navigation, you can navigate thru the project list with your own keybindings.
Just use the `when` clause `"inProjectManagerList"`, like:
```json
{
"key": "ctrl+j",
"command": "workbench.action.quickOpenSelectNext",
"when": "inProjectManagerList"
}
```
## Working with Remotes
The extension support [Remote Development](https://code.visualstudio.com/docs/remote/remote-overview) scenarios, and you may choose how to use it, depending on your needs
### I access Remotes, but most of my work is Local
This is the _regular_ scenario, and that's why you don't need to do anything special for the extension to work. It works out of the box.
When installed locally, you can save any Container, SSH, WSL or Codespaces projects as Favorites. Each one will have its own icon to be properly identified, and when you select them, VS Code will open the remote automatically.
_It just works_
### But what if I do most of my work on Remotes
If you normally connect to remotes (like SSH/WSL) and would like to save Favorite projects on that remote, or to be able to auto-detect repos located on that remote, you must activate/install the extension to work on remotes.
You just have to add the lines below on your `User Settings`.
```json
"remote.extensionKind": {
"alefragnani.project-manager": [
"workspace"
]
},
```
> More details on [VS Code documentation](https://code.visualstudio.com/docs/remote/containers#_advanced-forcing-an-extension-to-run-locally-or-remotely)
## Available Settings
You can choose how your projects are sorted
* `Saved`: The order that you saved the projects
* `Name`: The name that you typed for the project
* `Path`: The full path of the project
* `Recent`: The recently used projects
```json
"projectManager.sortList": "Name"
```
![List](https://github.com/alefragnani/vscode-project-manager/raw/HEAD/images/project-manager-list-sort-by-name.png)
* Choose if the project list must be grouped by its _kind_ (**Favorites**, **Git**, **Mercurial**, **SVN** and **VS Code**).
```json
"projectManager.groupList": true
```
* Should the current project be removed from the list? (`false` by default)
```json
"projectManager.removeCurrentProjectFromList": true
```
* Should identify _invalid paths_ on project list? (`true` by default)
```json
"projectManager.checkInvalidPathsBeforeListing": false
```
* Should support symlinks on `baseFolders`? (`false` by default)
```json
"projectManager.supportSymlinksOnBaseFolders": true
```
* Should show the parent folder info when projects with same name are detected? (`false` by default)
```json
"projectManager.showParentFolderInfoOnDuplicates": true
```
* Filter Projects Through Full Path (`false` by default)
```json
"projectManager.filterOnFullPath": true
```
* Custom projects file (`projects.json`) location
If you intend to _share_ projects between **Stable** and **Insider** installations, or if you store your settings in different locations (cloud services), you can indicate an _alternative_ location for the `projects.json` file.
```json
"projectManager.projectsLocation": "C\\Users\\myUser\\AppData\\Roaming\\Code\\User"
```
> You can use `~` or `$home` while defining the path. It will be replaced by your HOME folder.
* Automatic Detection of Projects (**Git** ![git](https://github.com/alefragnani/vscode-project-manager/raw/HEAD/images/ico_git_branch.png), **Mercurial** ![git](https://github.com/alefragnani/vscode-project-manager/raw/HEAD/images/ico_git_branch.png), **SVN** ![svn](https://github.com/alefragnani/vscode-project-manager/raw/HEAD/images/ico_svn.png) and **VSCode** ![vscode](https://github.com/alefragnani/vscode-project-manager/raw/HEAD/images/ico_file_code.png))
```json
"projectManager.git.baseFolders": [
"c:\\Projects\\code",
"d:\\MoreProjects\\code-testing",
"$home\\personal-coding"
]
```
> Define the folders which contains the projects
```json
"projectManager.git.ignoredFolders": [
"node_modules",
"out",
"typings",
"test"
"fork*"
],
```
> Define which folders should be ignored (inside the BaseFolders).
> It supports `glob` patterns
```json
"projectManager.git.maxDepthRecursion": 4
```
> Define how deeps it should search for projects
* Should ignore projects found inside other projects? (`false` by default)
```json
"projectManager.ignoreProjectsWithinProjects": true
```
* Cache automatically detected projects (`true` by default)
```json
"projectManager.cacheProjectsBetweenSessions": false
```
* Display the Project Name in Status Bar (`true` by default)
```json
"projectManager.showProjectNameInStatusBar": true
```
* Open projects in _New Window_ when clicking in status bar (`false` by default)
```json
"projectManager.openInNewWindowWhenClickingInStatusBar": true
```
* Indicates if the `New Window` command should open the project in current window, when empty (`always` by default)
* `always`: Whenever you call the Open in New Window command, it will open in the current window, if empty
* `onlyUsingCommandPalette`: Only open in the current window if you use the Command Palette
* `onlyUsingSideBar`: Only open in the current window if you use the Side Bar
* `never`: Works as today. The Open in New Window command will always open in New Window
```json
"projectManager.openInCurrenWindowIfEmpty": "always"
```
* Indicates the list of tags you can use to organize your projects _(`Personal` and `Work` by default)_
```json
"projectManager.tags": [
"Personal",
"Work",
"VS Code",
"Learning"
]
```
## Side Bar
The **Project Manager** extension has its own **Side Bar**, with a variety of commands to improve you productivity.
![Side Bar](https://github.com/alefragnani/vscode-project-manager/raw/HEAD/images/vscode-project-manager-side-bar.png)
### Project Tags - View and Filter
Starting in v12.3, you can now organize your Projects with **Tags**.
You can define your custom tags (via `projectManager.tags` setting), define multiple **tags** for each project, and filter the projects baded on their **tags**.
![Side Bar](https://github.com/alefragnani/vscode-project-manager/raw/HEAD/images/vscode-project-manager-side-bar-tags.gif)
## Installation and Configuration
You should follow the official documentation to:
- [Install the extension](https://code.visualstudio.com/docs/editor/extension-gallery)
- [Modify its settings](https://code.visualstudio.com/docs/getstarted/settings)
# License
[MIT](https://github.com/alefragnani/vscode-project-manager/blob/HEAD/LICENSE.md) &copy; Alessandro Fragnani

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg height="24px" version="1.1" viewBox="0 0 32 32" width="28px" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:xlink="http://www.w3.org/1999/xlink"><title/><desc/><defs/><g fill="none" fill-rule="evenodd" id="Page-1" stroke="none" stroke-width="1"><g fill="#C5C5C5"><path d="M3.33066907e-16,15 L3.33066907e-16,8.991155 C3.33066907e-16,7.88967395 0.896666251,7 2.00276013,7 L13,7 L15,11 L26.9941413,11 C28.1029399,11 29,11.8932319 29,12.9950893 L29,15 L0,15 L3.33066907e-16,15 Z M0,16 L0,27.008845 C0,28.1085295 0.899712682,29 1.99328744,29 L27.0067126,29 C28.1075748,29 29,28.1073772 29,27.0049107 L29,16 L0,16 L0,16 Z M3,6 L3,4.991155 C3,3.88967395 3.89666625,3 5.00276013,3 L16,3 L18,7 L29.9941413,7 C31.1029399,7 32,7.8932319 32,8.99508929 L32,23.0049107 C32,24.1073772 31.1075748,25 30.0067126,25 L30,25 L30,13.0001262 C30,11.3432023 28.6576211,10 26.9966488,10 L16,10 L14,6 L3,6 L3,6 L3,6 Z" id="folders"/></g></g></svg>

After

Width:  |  Height:  |  Size: 998 B

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg height="24px" version="1.1" viewBox="0 0 32 32" width="28px" xmlns="http://www.w3.org/2000/svg" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns" xmlns:xlink="http://www.w3.org/1999/xlink"><title/><desc/><defs/><g fill="none" fill-rule="evenodd" id="Page-1" stroke="none" stroke-width="1"><g fill="#656565"><path d="M3.33066907e-16,15 L3.33066907e-16,8.991155 C3.33066907e-16,7.88967395 0.896666251,7 2.00276013,7 L13,7 L15,11 L26.9941413,11 C28.1029399,11 29,11.8932319 29,12.9950893 L29,15 L0,15 L3.33066907e-16,15 Z M0,16 L0,27.008845 C0,28.1085295 0.899712682,29 1.99328744,29 L27.0067126,29 C28.1075748,29 29,28.1073772 29,27.0049107 L29,16 L0,16 L0,16 Z M3,6 L3,4.991155 C3,3.88967395 3.89666625,3 5.00276013,3 L16,3 L18,7 L29.9941413,7 C31.1029399,7 32,7.8932319 32,8.99508929 L32,23.0049107 C32,24.1073772 31.1075748,25 30.0067126,25 L30,25 L30,13.0001262 C30,11.3432023 28.6576211,10 26.9966488,10 L16,10 L14,6 L3,6 L3,6 L3,6 Z" id="folders"/></g></g></svg>

After

Width:  |  Height:  |  Size: 998 B

View File

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.5 3H7.70996L6.85999 2.15002L6.51001 2H1.51001L1.01001 2.5V6.5V13.5L1.51001 14H14.51L15.01 13.5V9V3.5L14.5 3ZM13.99 11.49V13H1.98999V11.49V7.48999V7H6.47998L6.82996 6.84998L7.68994 5.98999H14V7.48999L13.99 11.49ZM13.99 5H7.48999L7.14001 5.15002L6.28003 6.01001H2V3.01001H6.29004L7.14001 3.85999L7.5 4.01001H14L13.99 5Z" fill="#C5C5C5"/>
</svg>

After

Width:  |  Height:  |  Size: 452 B

View File

@ -0,0 +1,3 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.5 3H7.70996L6.85999 2.15002L6.51001 2H1.51001L1.01001 2.5V6.5V13.5L1.51001 14H14.51L15.01 13.5V9V3.5L14.5 3ZM13.99 11.49V13H1.98999V11.49V7.48999V7H6.47998L6.82996 6.84998L7.68994 5.98999H14V7.48999L13.99 11.49ZM13.99 5H7.48999L7.14001 5.15002L6.28003 6.01001H2V3.01001H6.29004L7.14001 3.85999L7.5 4.01001H14L13.99 5Z" fill="#424242"/>
</svg>

After

Width:  |  Height:  |  Size: 452 B

View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="#C5C5C5"><path d="M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm3.163 21.783h-.093a.513.513 0 0 1-.382-.14.513.513 0 0 1-.14-.372v-1.406c.006-.467.01-.94.01-1.416a3.693 3.693 0 0 0-.151-1.028 1.832 1.832 0 0 0-.542-.875 8.014 8.014 0 0 0 2.038-.471 4.051 4.051 0 0 0 1.466-.964c.407-.427.71-.943.885-1.506a6.77 6.77 0 0 0 .3-2.13 4.138 4.138 0 0 0-.26-1.476 3.892 3.892 0 0 0-.795-1.284 2.81 2.81 0 0 0 .162-.582c.033-.2.05-.402.05-.604 0-.26-.03-.52-.09-.773a5.309 5.309 0 0 0-.221-.763.293.293 0 0 0-.111-.02h-.11c-.23.002-.456.04-.674.111a5.34 5.34 0 0 0-.703.26 6.503 6.503 0 0 0-.661.343c-.215.127-.405.249-.573.362a9.578 9.578 0 0 0-5.143 0 13.507 13.507 0 0 0-.572-.362 6.022 6.022 0 0 0-.672-.342 4.516 4.516 0 0 0-.705-.261 2.203 2.203 0 0 0-.662-.111h-.11a.29.29 0 0 0-.11.02 5.844 5.844 0 0 0-.23.763c-.054.254-.08.513-.081.773 0 .202.017.404.051.604.033.199.086.394.16.582A3.888 3.888 0 0 0 5.702 10a4.142 4.142 0 0 0-.263 1.476 6.871 6.871 0 0 0 .292 2.12c.181.563.483 1.08.884 1.516.415.422.915.75 1.466.964.653.25 1.337.41 2.033.476a1.828 1.828 0 0 0-.452.633 2.99 2.99 0 0 0-.2.744 2.754 2.754 0 0 1-1.175.27 1.788 1.788 0 0 1-1.065-.3 2.904 2.904 0 0 1-.752-.824 3.1 3.1 0 0 0-.292-.382 2.693 2.693 0 0 0-.372-.343 1.841 1.841 0 0 0-.432-.24 1.2 1.2 0 0 0-.481-.101c-.04.001-.08.005-.12.01a.649.649 0 0 0-.162.02.408.408 0 0 0-.13.06.116.116 0 0 0-.06.1.33.33 0 0 0 .14.242c.093.074.17.131.232.171l.03.021c.133.103.261.214.382.333.112.098.213.209.3.33.09.119.168.246.231.381.073.134.15.288.231.463.188.474.522.875.954 1.145.453.243.961.364 1.476.351.174 0 .349-.01.522-.03.172-.028.343-.057.515-.091v1.743a.5.5 0 0 1-.533.521h-.062a10.286 10.286 0 1 1 6.324 0v.005z"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1 @@
<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" fill="#424242"><path d="M12 0a12 12 0 1 0 0 24 12 12 0 0 0 0-24zm3.163 21.783h-.093a.513.513 0 0 1-.382-.14.513.513 0 0 1-.14-.372v-1.406c.006-.467.01-.94.01-1.416a3.693 3.693 0 0 0-.151-1.028 1.832 1.832 0 0 0-.542-.875 8.014 8.014 0 0 0 2.038-.471 4.051 4.051 0 0 0 1.466-.964c.407-.427.71-.943.885-1.506a6.77 6.77 0 0 0 .3-2.13 4.138 4.138 0 0 0-.26-1.476 3.892 3.892 0 0 0-.795-1.284 2.81 2.81 0 0 0 .162-.582c.033-.2.05-.402.05-.604 0-.26-.03-.52-.09-.773a5.309 5.309 0 0 0-.221-.763.293.293 0 0 0-.111-.02h-.11c-.23.002-.456.04-.674.111a5.34 5.34 0 0 0-.703.26 6.503 6.503 0 0 0-.661.343c-.215.127-.405.249-.573.362a9.578 9.578 0 0 0-5.143 0 13.507 13.507 0 0 0-.572-.362 6.022 6.022 0 0 0-.672-.342 4.516 4.516 0 0 0-.705-.261 2.203 2.203 0 0 0-.662-.111h-.11a.29.29 0 0 0-.11.02 5.844 5.844 0 0 0-.23.763c-.054.254-.08.513-.081.773 0 .202.017.404.051.604.033.199.086.394.16.582A3.888 3.888 0 0 0 5.702 10a4.142 4.142 0 0 0-.263 1.476 6.871 6.871 0 0 0 .292 2.12c.181.563.483 1.08.884 1.516.415.422.915.75 1.466.964.653.25 1.337.41 2.033.476a1.828 1.828 0 0 0-.452.633 2.99 2.99 0 0 0-.2.744 2.754 2.754 0 0 1-1.175.27 1.788 1.788 0 0 1-1.065-.3 2.904 2.904 0 0 1-.752-.824 3.1 3.1 0 0 0-.292-.382 2.693 2.693 0 0 0-.372-.343 1.841 1.841 0 0 0-.432-.24 1.2 1.2 0 0 0-.481-.101c-.04.001-.08.005-.12.01a.649.649 0 0 0-.162.02.408.408 0 0 0-.13.06.116.116 0 0 0-.06.1.33.33 0 0 0 .14.242c.093.074.17.131.232.171l.03.021c.133.103.261.214.382.333.112.098.213.209.3.33.09.119.168.246.231.381.073.134.15.288.231.463.188.474.522.875.954 1.145.453.243.961.364 1.476.351.174 0 .349-.01.522-.03.172-.028.343-.057.515-.091v1.743a.5.5 0 0 1-.533.521h-.062a10.286 10.286 0 1 1 6.324 0v.005z"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,6 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2H14.5L15 2.5V8.00305C14.6892 7.76964 14.3534 7.57413 14 7.41955V3H2V12H7C7 12.326 7.03187 12.6527 7.09608 12.9755C7.24266 13.7124 7.55277 14.4037 8 15H4V14H7V13H1.5L1 12.5V2.5L1.5 2Z" fill="#C5C5C5"/>
<path d="M12 8C11.2089 8 10.4355 8.23455 9.77769 8.67407C9.11989 9.1136 8.60717 9.73833 8.30442 10.4692C8.00167 11.2001 7.92254 12.0045 8.07688 12.7804C8.23122 13.5563 8.6122 14.269 9.17161 14.8284C9.73102 15.3878 10.4437 15.7688 11.2196 15.9231C11.9955 16.0774 12.7998 15.9983 13.5307 15.6956C14.2616 15.3928 14.8864 14.8801 15.3259 14.2223C15.7654 13.5645 16 12.7911 16 12C16 10.9391 15.5785 9.92178 14.8283 9.17163C14.0782 8.42149 13.0608 8 12 8ZM12 15C11.4066 15 10.8266 14.824 10.3332 14.4944C9.83988 14.1647 9.45543 13.6962 9.22837 13.1481C9.00131 12.5999 8.94184 11.9966 9.0576 11.4147C9.17335 10.8327 9.45908 10.2982 9.87864 9.87866C10.2982 9.4591 10.8327 9.17337 11.4147 9.05762C11.9966 8.94186 12.5999 9.00133 13.148 9.22839C13.6962 9.45546 14.1647 9.8399 14.4944 10.3333C14.824 10.8266 15 11.4067 15 12C15 12.7956 14.6839 13.5587 14.1213 14.1213C13.5587 14.6839 12.7956 15 12 15Z" fill="#C5C5C5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.3785 11L14 12.7307L13.7477 13L12 11.1347L12 10.8653L13.7477 9L14 9.26931L12.3785 11Z" fill="#C5C5C5"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.6288 13L10 11.2638L10.2475 11L12 12.8681L12 13.1319L10.2475 15L10 14.7362L11.6288 13Z" fill="#C5C5C5"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,6 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M1.5 2H14.5L15 2.5V8.00305C14.6892 7.76964 14.3534 7.57413 14 7.41955V3H2V12H7C7 12.326 7.03187 12.6527 7.09608 12.9755C7.24266 13.7124 7.55277 14.4037 8 15H4V14H7V13H1.5L1 12.5V2.5L1.5 2Z" fill="#424242"/>
<path d="M12 8C11.2089 8 10.4355 8.23455 9.77769 8.67407C9.11989 9.1136 8.60717 9.73833 8.30442 10.4692C8.00167 11.2001 7.92254 12.0045 8.07688 12.7804C8.23122 13.5563 8.6122 14.269 9.17161 14.8284C9.73102 15.3878 10.4437 15.7688 11.2196 15.9231C11.9955 16.0774 12.7998 15.9983 13.5307 15.6956C14.2616 15.3928 14.8864 14.8801 15.3259 14.2223C15.7654 13.5645 16 12.7911 16 12C16 10.9391 15.5785 9.92178 14.8283 9.17163C14.0782 8.42149 13.0608 8 12 8ZM12 15C11.4066 15 10.8266 14.824 10.3332 14.4944C9.83988 14.1647 9.45543 13.6962 9.22837 13.1481C9.00131 12.5999 8.94184 11.9966 9.0576 11.4147C9.17335 10.8327 9.45908 10.2982 9.87864 9.87866C10.2982 9.4591 10.8327 9.17337 11.4147 9.05762C11.9966 8.94186 12.5999 9.00133 13.148 9.22839C13.6962 9.45546 14.1647 9.8399 14.4944 10.3333C14.824 10.8266 15 11.4067 15 12C15 12.7956 14.6839 13.5587 14.1213 14.1213C13.5587 14.6839 12.7956 15 12 15Z" fill="#424242"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.3785 11L14 12.7307L13.7477 13L12 11.1347L12 10.8653L13.7477 9L14 9.26931L12.3785 11Z" fill="#424242"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.6288 13L10 11.2638L10.2475 11L12 12.8681L12 13.1319L10.2475 15L10 14.7362L11.6288 13Z" fill="#424242"/>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.70996 3H14.5L15.01 3.5V9V13.5L14.51 14H8.74284C8.99647 13.6929 9.21739 13.3578 9.40029 13H13.99V11.49L14 7.48999V5.98999H7.68994L7.67296 6.00697C7.39684 5.81162 7.10191 5.64108 6.79144 5.4986L7.14001 5.15002L7.48999 5H13.99L14 4.01001H7.5L7.14001 3.85999L6.29004 3.01001H2V5.59971C1.6461 5.78062 1.31438 5.99874 1.01001 6.24892V2.5L1.51001 2H6.51001L6.85999 2.15002L7.70996 3Z" fill="#C5C5C5"/>
<path d="M6 10.5C6 11.3284 5.32843 12 4.5 12C3.67157 12 3 11.3284 3 10.5C3 9.67157 3.67157 9 4.5 9C5.32843 9 6 9.67157 6 10.5Z" fill="#C4C4C4"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 10.5C8 12.433 6.433 14 4.5 14C2.567 14 1 12.433 1 10.5C1 8.567 2.567 7 4.5 7C6.433 7 8 8.567 8 10.5ZM4.5 13C5.88071 13 7 11.8807 7 10.5C7 9.11929 5.88071 8 4.5 8C3.11929 8 2 9.11929 2 10.5C2 11.8807 3.11929 13 4.5 13Z" fill="#C4C4C4"/>
</svg>

After

Width:  |  Height:  |  Size: 983 B

View File

@ -0,0 +1,5 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M7.70996 3H14.5L15.01 3.5V9V13.5L14.51 14H8.74284C8.99647 13.6929 9.21739 13.3578 9.40029 13H13.99V11.49L14 7.48999V5.98999H7.68994L7.67296 6.00697C7.39684 5.81162 7.10191 5.64108 6.79144 5.4986L7.14001 5.15002L7.48999 5H13.99L14 4.01001H7.5L7.14001 3.85999L6.29004 3.01001H2V5.59971C1.6461 5.78062 1.31438 5.99874 1.01001 6.24892V2.5L1.51001 2H6.51001L6.85999 2.15002L7.70996 3Z" fill="#424242"/>
<path d="M6 10.5C6 11.3284 5.32843 12 4.5 12C3.67157 12 3 11.3284 3 10.5C3 9.67157 3.67157 9 4.5 9C5.32843 9 6 9.67157 6 10.5Z" fill="#424242"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 10.5C8 12.433 6.433 14 4.5 14C2.567 14 1 12.433 1 10.5C1 8.567 2.567 7 4.5 7C6.433 7 8 8.567 8 10.5ZM4.5 13C5.88071 13 7 11.8807 7 10.5C7 9.11929 5.88071 8 4.5 8C3.11929 8 2 9.11929 2 10.5C2 11.8807 3.11929 13 4.5 13Z" fill="#424242"/>
</svg>

After

Width:  |  Height:  |  Size: 983 B

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg height="1792" viewBox="0 0 1792 1792" width="1792" xmlns="http://www.w3.org/2000/svg"><g fill="#C5C5C5"><path d="M672 1472q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm0-1152q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm640 128q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm96 0q0 52-26 96.5t-70 69.5q-2 287-226 414-68 38-203 81-128 40-169.5 71t-41.5 100v26q44 25 70 69.5t26 96.5q0 80-56 136t-136 56-136-56-56-136q0-52 26-96.5t70-69.5v-820q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136q0 52-26 96.5t-70 69.5v497q54-26 154-57 55-17 87.5-29.5t70.5-31 59-39.5 40.5-51 28-69.5 8.5-91.5q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136z"/></g></svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg height="1792" viewBox="0 0 1792 1792" width="1792" xmlns="http://www.w3.org/2000/svg"><g fill="#656565"><path d="M672 1472q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm0-1152q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm640 128q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm96 0q0 52-26 96.5t-70 69.5q-2 287-226 414-68 38-203 81-128 40-169.5 71t-41.5 100v26q44 25 70 69.5t26 96.5q0 80-56 136t-136 56-136-56-56-136q0-52 26-96.5t70-69.5v-820q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136q0 52-26 96.5t-70 69.5v497q54-26 154-57 55-17 87.5-29.5t70.5-31 59-39.5 40.5-51 28-69.5 8.5-91.5q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136z"/></g></svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg height="1792" viewBox="0 0 1792 1792" width="1792" xmlns="http://www.w3.org/2000/svg"><g fill="#C5C5C5"><path d="M672 1472q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm0-1152q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm640 128q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm96 0q0 52-26 96.5t-70 69.5q-2 287-226 414-68 38-203 81-128 40-169.5 71t-41.5 100v26q44 25 70 69.5t26 96.5q0 80-56 136t-136 56-136-56-56-136q0-52 26-96.5t70-69.5v-820q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136q0 52-26 96.5t-70 69.5v497q54-26 154-57 55-17 87.5-29.5t70.5-31 59-39.5 40.5-51 28-69.5 8.5-91.5q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136z"/></g></svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg height="1792" viewBox="0 0 1792 1792" width="1792" xmlns="http://www.w3.org/2000/svg"><g fill="#656565"><path d="M672 1472q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm0-1152q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm640 128q0-40-28-68t-68-28-68 28-28 68 28 68 68 28 68-28 28-68zm96 0q0 52-26 96.5t-70 69.5q-2 287-226 414-68 38-203 81-128 40-169.5 71t-41.5 100v26q44 25 70 69.5t26 96.5q0 80-56 136t-136 56-136-56-56-136q0-52 26-96.5t70-69.5v-820q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136q0 52-26 96.5t-70 69.5v497q54-26 154-57 55-17 87.5-29.5t70.5-31 59-39.5 40.5-51 28-69.5 8.5-91.5q-44-25-70-69.5t-26-96.5q0-80 56-136t136-56 136 56 56 136z"/></g></svg>

After

Width:  |  Height:  |  Size: 719 B

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg height="512px" id="Layer_1" style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" width="512px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="#C5C5C5"><path d="M302.7,64L143,288h95.8l-29.5,160L369,224h-95.8L302.7,64L302.7,64z"/></g></svg>

After

Width:  |  Height:  |  Size: 452 B

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg height="512px" id="Layer_1" style="enable-background:new 0 0 512 512;" version="1.1" viewBox="0 0 512 512" width="512px" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g fill="#656565"><path d="M302.7,64L143,288h95.8l-29.5,160L369,224h-95.8L302.7,64L302.7,64z"/></g></svg>

After

Width:  |  Height:  |  Size: 452 B

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg height="850" viewBox="0 0 768 1024" width="768" xmlns="http://www.w3.org/2000/svg"><g fill="#C5C5C5"><path d="M288 384L128 544l160 160 64-64-96-96 96-96L288 384zM416 448l96 96-96 96 64 64 160-160L480 384 416 448zM576 64H0v896h768V256L576 64zM704 896H64V128h448l192 192V896z"/></g></svg>

After

Width:  |  Height:  |  Size: 313 B

View File

@ -0,0 +1 @@
<?xml version="1.0" ?><svg height="850" viewBox="0 0 768 1024" width="768" xmlns="http://www.w3.org/2000/svg"><g fill="#656565"><path d="M288 384L128 544l160 160 64-64-96-96 96-96L288 384zM416 448l96 96-96 96 64 64 160-160L480 384 416 448zM576 64H0v896h768V256L576 64zM704 896H64V128h448l192 192V896z"/></g></svg>

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 226 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="0 0 32 32" width="32pt" height="32pt"><defs><clipPath id="_clipPath_uzYoviOc84ymUDXhuYlSwzftTOHnTy1R"><rect width="32" height="32"/></clipPath></defs><g clip-path="url(#_clipPath_uzYoviOc84ymUDXhuYlSwzftTOHnTy1R)"><g><path d=" M 1.938 14.25 L 1.938 8.617 C 1.938 8.114 2.354 7.687 2.867 7.687 L 12.625 7.687 L 14.462 11.437 L 26.31 11.437 C 26.825 11.437 27.25 11.858 27.25 12.376 L 27.25 14.25 L 1.938 14.25 L 1.938 14.25 Z M 1.938 15.187 L 1.938 25.508 C 1.938 26.021 2.356 26.437 2.868 26.437 L 26.319 26.437 C 26.833 26.437 27.25 26.021 27.25 25.499 L 27.25 15.187 L 1.938 15.187 L 1.938 15.187 Z M 3.812 5.812 L 3.812 4.867 C 3.812 3.834 4.653 3 5.69 3 L 16 3 L 17.875 6.75 L 29.12 6.75 C 30.159 6.75 31 7.587 31 8.62 L 31 21.755 C 31 22.788 30.163 23.625 29.131 23.625 L 29.125 23.625 L 29.125 22.687 L 29.132 22.687 C 29.646 22.687 30.062 22.271 30.062 21.749 L 30.062 8.626 C 30.062 8.108 29.637 7.687 29.122 7.687 L 17.275 7.687 L 15.438 3.937 L 5.68 3.937 C 5.166 3.937 4.75 4.364 4.75 4.867 L 4.75 5.812 L 3.812 5.812 L 3.812 5.812 L 3.812 5.812 Z M 15.062 10.5 L 13.187 6.75 L 2.878 6.75 C 1.841 6.75 1 7.584 1 8.617 L 1 25.508 C 1 26.539 1.843 27.375 2.869 27.375 L 26.319 27.375 C 27.351 27.375 28.187 26.538 28.187 25.505 L 28.187 12.37 C 28.187 11.337 27.347 10.5 26.307 10.5 L 15.062 10.5 L 15.062 10.5 Z " fill-rule="evenodd" fill="rgb(0,0,0)" vector-effect="non-scaling-stroke" stroke-width="1" stroke="rgb(255,255,255)" stroke-linejoin="miter" stroke-linecap="butt" stroke-miterlimit="4"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -0,0 +1,889 @@
{
"name": "project-manager",
"displayName": "Project Manager",
"description": "Easily switch between projects",
"version": "12.5.0",
"publisher": "alefragnani",
"engines": {
"vscode": "^1.61.0"
},
"categories": [
"Other"
],
"keywords": [
"git",
"project",
"folder",
"workspace",
"switch",
"manage",
"mercurial",
"svn",
"multi-root ready"
],
"extensionKind": [
"ui",
"workspace"
],
"capabilities": {
"virtualWorkspaces": true,
"untrustedWorkspaces": {
"supported": true
}
},
"icon": "images/icon.png",
"license": "SEE LICENSE IN LICENSE.md",
"homepage": "https://github.com/alefragnani/vscode-project-manager/blob/master/README.md",
"repository": {
"type": "git",
"url": "https://github.com/alefragnani/vscode-project-manager.git"
},
"bugs": {
"url": "https://github.com/alefragnani/vscode-project-manager/issues"
},
"activationEvents": [
"*",
"onCommand:projectManager.saveProject",
"onCommand:projectManager.addToWorkspace#sideBar",
"onCommand:projectManager.addToWorkspace",
"onCommand:projectManager.listProjects",
"onCommand:projectManager.listProjectsNewWindow",
"onCommand:projectManager.editProjects",
"onCommand:projectManager.refreshProjects",
"onCommand:projectManager.refreshVSCodeProjects",
"onCommand:projectManager.refreshGitProjects",
"onCommand:projectManager.refreshSVNProjects",
"onCommand:projectManager.refreshAnyProjects",
"onCommand:projectManager.refreshMercurialProjects",
"onView:projectsExplorer"
],
"main": "./dist/extension",
"contributes": {
"viewsContainers": {
"activitybar": [
{
"id": "project-manager",
"title": "%projectManager.activitybar.title%",
"icon": "images/project-manager-side-bar.svg"
}
]
},
"views": {
"project-manager": [
{
"id": "projectsExplorerFavorites",
"name": "Favorites"
},
{
"id": "projectsExplorerGit",
"name": "Git",
"when": "projectManager.canShowTreeViewGit"
},
{
"id": "projectsExplorerSVN",
"name": "SVN",
"when": "projectManager.canShowTreeViewSVN"
},
{
"id": "projectsExplorerAny",
"name": "Any",
"when": "projectManager.canShowTreeViewAny"
},
{
"id": "projectsExplorerMercurial",
"name": "Mercurial",
"when": "projectManager.canShowTreeViewMercurial"
},
{
"id": "projectsExplorerVSCode",
"name": "VSCode",
"when": "projectManager.canShowTreeViewVSCode"
},
{
"id": "projectManagerHelpAndFeedback",
"name": "Help and Feedback",
"visibility": "collapsed"
}
]
},
"viewsWelcome": [
{
"view": "projectsExplorerFavorites",
"contents": "No projects saved yet.\nIn order to save projects, you have to open a folder or workspace first.\n[Open Folder](command:_projectManager.openFolderWelcome)\n[Open Workspace from File](command:workbench.action.openWorkspace)\nTo learn more about how to use Project Manager in VS Code [read the docs](http://github.com/alefragnani/vscode-project-manager/#project-manager).",
"when": "workbenchState == empty"
},
{
"view": "projectsExplorerFavorites",
"contents": "No projects saved yet.\nIn order to save the current folder/workspace as a project, execute the command:\n[Project Manager: Save Project](command:projectManager.saveProject)\nTo learn more about how to use Project Manager in VS Code [read the docs](http://github.com/alefragnani/vscode-project-manager/#project-manager).",
"when": "workbenchState != empty"
},
{
"view": "projectsExplorerGit",
"contents": "No projects detected.\nIn order to detect Git projects, you have to configure the `baseFolders` where the Git projects are.\n[Open Settings](command:workbench.action.openSettings?%5B%22projectManager.git.baseFolders%22%5D)\n[I don't need Git projects](command:projectManager.hideGitWelcome)\nIt also supports detection of SVN or Mercurial repositories, VS Code or any other folder.\nTo learn more about how to use Project Manager in VS Code [read the docs](https://github.com/alefragnani/vscode-project-manager/#available-settings)."
}
],
"commands": [
{
"command": "projectManager.saveProject",
"title": "%projectManager.commands.saveProject.title%",
"icon": "$(save)"
},
{
"command": "projectManager.listProjects",
"title": "%projectManager.commands.listProjects.title%"
},
{
"command": "projectManager.listProjectsNewWindow",
"title": "%projectManager.commands.listProjectsNewWindow.title%"
},
{
"command": "projectManager.editProjects",
"title": "%projectManager.commands.editProjects.title%",
"icon": "$(edit)"
},
{
"command": "_projectManager.viewAsTags#sideBarFavorites",
"title": "%projectManager.commands.viewAsTags#sideBarFavorites.title%",
"icon": "$(list-tree)",
"enablement": "projectManager.viewAsList"
},
{
"command": "_projectManager.viewAsList#sideBarFavorites",
"title": "%projectManager.commands.viewAsList#sideBarFavorites.title%",
"icon": "$(list-flat)",
"enablement": "!projectManager.viewAsList"
},
{
"command": "_projectManager.sortBySaved#sideBarFavorites",
"title": "%projectManager.commands.sortBySaved#sideBarFavorites.title%",
"enablement": "projectManager.sortBy != Saved"
},
{
"command": "_projectManager.sortByName#sideBarFavorites",
"title": "%projectManager.commands.sortByName#sideBarFavorites.title%",
"enablement": "projectManager.sortBy != Name"
},
{
"command": "_projectManager.sortByPath#sideBarFavorites",
"title": "%projectManager.commands.sortByPath#sideBarFavorites.title%",
"enablement": "projectManager.sortBy != Path"
},
{
"command": "_projectManager.sortByRecent#sideBarFavorites",
"title": "%projectManager.commands.sortByRecent#sideBarFavorites.title%",
"enablement": "projectManager.sortBy != Recent"
},
{
"command": "projectManager.filterProjectsByTag",
"title": "%projectManager.commands.filterProjectsByTag.title%"
},
{
"command": "projectManager.filterProjectsByTag#sideBar",
"title": "%projectManager.commands.filterProjectsByTag#sideBar.title%",
"icon": "$(tag)"
},
{
"command": "projectManager.refreshProjects",
"title": "%projectManager.commands.refreshProjects.title%"
},
{
"command": "projectManager.refreshVSCodeProjects",
"title": "%projectManager.commands.refreshVSCodeProjects.title%",
"icon": "$(refresh)"
},
{
"command": "projectManager.refreshGitProjects",
"title": "%projectManager.commands.refreshGitProjects.title%",
"icon": "$(refresh)"
},
{
"command": "projectManager.refreshSVNProjects",
"title": "%projectManager.commands.refreshSVNProjects.title%",
"icon": "$(refresh)"
},
{
"command": "projectManager.refreshAnyProjects",
"title": "%projectManager.commands.refreshAnyProjects.title%",
"icon": "$(refresh)"
},
{
"command": "projectManager.refreshMercurialProjects",
"title": "%projectManager.commands.refreshMercurialProjects.title%",
"icon": "$(refresh)"
},
{
"command": "projectManager.openSettings#sideBarFavorites",
"title": "%projectManager.commands.openSettings#sideBarFavorites.title%"
},
{
"command": "projectManager.openSettings#sideBarVSCode",
"title": "%projectManager.commands.openSettings#sideBarVSCode.title%"
},
{
"command": "projectManager.openSettings#sideBarGit",
"title": "%projectManager.commands.openSettings#sideBarGit.title%"
},
{
"command": "projectManager.openSettings#sideBarSVN",
"title": "%projectManager.commands.openSettings#sideBarSVN.title%"
},
{
"command": "projectManager.openSettings#sideBarAny",
"title": "%projectManager.commands.openSettings#sideBarAny.title%"
},
{
"command": "projectManager.openSettings#sideBarMercurial",
"title": "%projectManager.commands.openSettings#sideBarMercurial.title%"
},
{
"command": "_projectManager.open",
"title": "%projectManager.commands.open.title%"
},
{
"command": "_projectManager.openInNewWindow",
"title": "%projectManager.commands.openInNewWindow.title%",
"icon": "$(link-external)"
},
{
"command": "projectManager.addToWorkspace#sideBar",
"title": "%projectManager.commands.addToWorkspace#sideBar.title%"
},
{
"command": "_projectManager.revealInFinder#sideBar",
"title": "%projectManager.commands.revealInFinder#sideBar.title%"
},
{
"command": "_projectManager.revealInExplorer#sideBar",
"title": "%projectManager.commands.revealInExplorer#sideBar.title%"
},
{
"command": "projectManager.addToWorkspace",
"title": "%projectManager.commands.addToWorkspace.title%"
},
{
"command": "_projectManager.deleteProject",
"title": "%projectManager.commands.deleteProject.title%"
},
{
"command": "_projectManager.renameProject",
"title": "%projectManager.commands.renameProject.title%"
},
{
"command": "_projectManager.editTags",
"title": "%projectManager.commands.editTags.title%"
},
{
"command": "projectManager.whatsNew",
"title": "%projectManager.commands.whatsNew.title%"
},
{
"command": "_projectManager.whatsNewContextMenu",
"title": "%projectManager.commands.whatsNewContextMenu.title%"
},
{
"command": "projectManager.addToFavorites",
"title": "%projectManager.commands.addToFavorites.title%"
},
{
"command": "_projectManager.toggleProjectEnabled",
"title": "%projectManager.commands.toggleProjectEnabled.title%"
},
{
"command": "projectManager.hideGitWelcome",
"title": "%projectManager.commands.hideGitWelcome.title%"
},
{
"command": "projectManager.showGitWelcome",
"title": "%projectManager.commands.showGitWelcome.title%"
},
{
"command": "_projectManager.openFolderWelcome",
"title": "%projectManager.commands.openFolderWelcome.title%"
},
{
"command": "projectManager.supportProjectManager",
"title": "%projectManager.commands.supportProjectManager.title%"
}
],
"menus": {
"commandPalette": [
{
"command": "_projectManager.open",
"when": "false"
},
{
"command": "_projectManager.openInNewWindow",
"when": "false"
},
{
"command": "projectManager.addToWorkspace#sideBar",
"when": "false"
},
{
"command": "_projectManager.revealInFinder#sideBar",
"when": "false"
},
{
"command": "_projectManager.revealInExplorer#sideBar",
"when": "false"
},
{
"command": "_projectManager.deleteProject",
"when": "false"
},
{
"command": "_projectManager.renameProject",
"when": "false"
},
{
"command": "_projectManager.editTags",
"when": "false"
},
{
"command": "_projectManager.viewAsTags#sideBarFavorites",
"when": "false"
},
{
"command": "_projectManager.viewAsList#sideBarFavorites",
"when": "false"
},
{
"command": "_projectManager.sortBySaved#sideBarFavorites",
"when": "false"
},
{
"command": "_projectManager.sortByName#sideBarFavorites",
"when": "false"
},
{
"command": "_projectManager.sortByPath#sideBarFavorites",
"when": "false"
},
{
"command": "_projectManager.sortByRecent#sideBarFavorites",
"when": "false"
},
{
"command": "projectManager.filterProjectsByTag#sideBar",
"when": "false"
},
{
"command": "projectManager.openSettings#sideBarFavorites",
"when": "false"
},
{
"command": "projectManager.openSettings#sideBarVSCode",
"when": "false"
},
{
"command": "projectManager.openSettings#sideBarSVN",
"when": "false"
},
{
"command": "projectManager.openSettings#sideBarGit",
"when": "false"
},
{
"command": "projectManager.openSettings#sideBarAny",
"when": "false"
},
{
"command": "projectManager.openSettings#sideBarMercurial",
"when": "false"
},
{
"command": "_projectManager.whatsNewContextMenu",
"when": "false"
},
{
"command": "projectManager.hideGitWelcome",
"when": "false"
},
{
"command": "projectManager.showGitWelcome",
"when": "false"
},
{
"command": "_projectManager.openFolderWelcome",
"when": "false"
}
],
"view/title": [
{
"command": "projectManager.saveProject",
"when": "view == projectsExplorerFavorites",
"group": "navigation@10"
},
{
"command": "projectManager.editProjects",
"when": "view == projectsExplorerFavorites",
"group": "navigation@11"
},
{
"command": "_projectManager.viewAsTags#sideBarFavorites",
"when": "view == projectsExplorerFavorites && projectManager.viewAsList",
"group": "navigation@12"
},
{
"command": "_projectManager.viewAsList#sideBarFavorites",
"when": "view == projectsExplorerFavorites && !projectManager.viewAsList",
"group": "navigation@13"
},
{
"command": "projectManager.filterProjectsByTag#sideBar",
"when": "view == projectsExplorerFavorites",
"group": "navigation@14"
},
{
"submenu": "projectManager.sideBar.favorites.title",
"when": "view == projectsExplorerFavorites",
"group": "1_projectManager"
},
{
"command": "projectManager.openSettings#sideBarFavorites",
"when": "view == projectsExplorerFavorites",
"group": "2_projectManager"
},
{
"command": "projectManager.showGitWelcome",
"when": "view == projectsExplorerFavorites && projectManager.hiddenGitWelcome",
"group": "2_projectManager"
},
{
"command": "projectManager.refreshVSCodeProjects",
"when": "view == projectsExplorerVSCode",
"group": "navigation"
},
{
"command": "projectManager.openSettings#sideBarVSCode",
"when": "view == projectsExplorerVSCode",
"group": "2_projectManager"
},
{
"command": "projectManager.refreshGitProjects",
"when": "view == projectsExplorerGit",
"group": "navigation"
},
{
"command": "projectManager.openSettings#sideBarGit",
"when": "view == projectsExplorerGit",
"group": "2_projectManager"
},
{
"command": "projectManager.refreshSVNProjects",
"when": "view == projectsExplorerSVN",
"group": "navigation"
},
{
"command": "projectManager.openSettings#sideBarSVN",
"when": "view == projectsExplorerSVN",
"group": "2_projectManager"
},
{
"command": "projectManager.refreshAnyProjects",
"when": "view == projectsExplorerAny",
"group": "navigation"
},
{
"command": "projectManager.openSettings#sideBarAny",
"when": "view == projectsExplorerAny",
"group": "2_projectManager"
},
{
"command": "projectManager.refreshMercurialProjects",
"when": "view == projectsExplorerMercurial",
"group": "navigation"
},
{
"command": "projectManager.openSettings#sideBarMercurial",
"when": "view == projectsExplorerMercurial",
"group": "2_projectManager"
}
],
"view/item/context": [
{
"command": "_projectManager.openInNewWindow",
"when": "view =~ /projectsExplorer(Favorites|VSCode|Git|SVN|Any|Mercurial)/ && viewItem == ProjectNodeKind",
"group": "inline"
},
{
"command": "_projectManager.open",
"when": "view =~ /projectsExplorer(Favorites|VSCode|Git|SVN|Any|Mercurial)/ && viewItem == ProjectNodeKind",
"group": "navigation"
},
{
"command": "_projectManager.openInNewWindow",
"when": "view =~ /projectsExplorer(Favorites|VSCode|Git|SVN|Any|Mercurial)/ && viewItem == ProjectNodeKind",
"group": "navigation"
},
{
"command": "_projectManager.revealInFinder#sideBar",
"when": "view =~ /projectsExplorer(Favorites|VSCode|Git|SVN|Any|Mercurial)/ && viewItem == ProjectNodeKind && !isWindows",
"group": "navigation@2"
},
{
"command": "_projectManager.revealInExplorer#sideBar",
"when": "view =~ /projectsExplorer(Favorites|VSCode|Git|SVN|Any|Mercurial)/ && viewItem == ProjectNodeKind && isWindows",
"group": "navigation@2"
},
{
"command": "_projectManager.deleteProject",
"when": "view == projectsExplorerFavorites && viewItem == ProjectNodeKind",
"group": "favorites"
},
{
"command": "_projectManager.renameProject",
"when": "view == projectsExplorerFavorites && viewItem == ProjectNodeKind",
"group": "favorites"
},
{
"command": "_projectManager.editTags",
"when": "view == projectsExplorerFavorites && viewItem == ProjectNodeKind",
"group": "favorites"
},
{
"command": "_projectManager.toggleProjectEnabled",
"when": "view == projectsExplorerFavorites && viewItem == ProjectNodeKind",
"group": "favorites"
},
{
"command": "projectManager.addToWorkspace#sideBar",
"when": "view =~ /projectsExplorer(Favorites|VSCode|Git|SVN|Any|Mercurial)/ && viewItem == ProjectNodeKind",
"group": "workspace"
},
{
"command": "projectManager.addToFavorites",
"when": "view =~ /projectsExplorer(VSCode|Git|SVN|Any|Mercurial)/ && viewItem == ProjectNodeKind",
"group": "workspace"
}
],
"extension/context": [
{
"command": "_projectManager.whatsNewContextMenu",
"group": "projectManager",
"when": "extension == alefragnani.project-manager && extensionStatus == installed"
}
],
"projectManager.sideBar.favorites.title": [
{
"command": "_projectManager.viewAsList#sideBarFavorites",
"group": "1_projectManager#sideBarFavorites"
},
{
"command": "_projectManager.viewAsTags#sideBarFavorites",
"group": "1_projectManager#sideBarFavorites"
},
{
"command": "_projectManager.sortBySaved#sideBarFavorites",
"group": "2_projectManager#sideBarFavorites"
},
{
"command": "_projectManager.sortByName#sideBarFavorites",
"group": "2_projectManager#sideBarFavorites"
},
{
"command": "_projectManager.sortByPath#sideBarFavorites",
"group": "2_projectManager#sideBarFavorites"
},
{
"command": "_projectManager.sortByRecent#sideBarFavorites",
"group": "2_projectManager#sideBarFavorites"
}
]
},
"submenus": [
{
"id": "projectManager.sideBar.favorites.title",
"label": "%projectManager.submenus.viewAndSort#sideBarFavorites.title%"
}
],
"configuration": {
"type": "object",
"title": "%projectManager.configuration.title%",
"properties": {
"projectManager.showProjectNameInStatusBar": {
"type": "boolean",
"default": true,
"description": "%projectManager.configuration.showProjectNameInStatusBar.description%"
},
"projectManager.openInNewWindowWhenClickingInStatusBar": {
"type": "boolean",
"default": false,
"description": "%projectManager.configuration.openInNewWindowWhenClickingInStatusBar.description%"
},
"projectManager.removeCurrentProjectFromList": {
"type": "boolean",
"default": true,
"description": "%projectManager.configuration.removeCurrentProjectFromList.description%"
},
"projectManager.sortList": {
"type": "string",
"default": "Name",
"description": "%projectManager.configuration.sortList.description%",
"enum": [
"Saved",
"Name",
"Path",
"Recent"
],
"scope": "application"
},
"projectManager.groupList": {
"type": "boolean",
"default": false,
"description": "%projectManager.configuration.groupList.description%"
},
"projectManager.projectsLocation": {
"type": "string",
"default": "",
"description": "%projectManager.configuration.projectsLocation.description%"
},
"projectManager.vscode.baseFolders": {
"type": "array",
"default": [],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.vscode.baseFolders.description%"
},
"projectManager.vscode.ignoredFolders": {
"type": "array",
"default": [
"node_modules",
"out",
"typings",
"test"
],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.vscode.ignoredFolders.description%"
},
"projectManager.vscode.maxDepthRecursion": {
"type": "integer",
"default": 4,
"description": "%projectManager.configuration.vscode.maxDepthRecursion.description%"
},
"projectManager.git.baseFolders": {
"type": "array",
"default": [],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.git.baseFolders.description%"
},
"projectManager.git.ignoredFolders": {
"type": "array",
"default": [
"node_modules",
"out",
"typings",
"test",
".haxelib"
],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.git.ignoredFolders.description%"
},
"projectManager.git.maxDepthRecursion": {
"type": "integer",
"default": 4,
"description": "%projectManager.configuration.git.maxDepthRecursion.description%"
},
"projectManager.hg.baseFolders": {
"type": "array",
"default": [],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.hg.baseFolders.description%"
},
"projectManager.hg.ignoredFolders": {
"type": "array",
"default": [
"node_modules",
"out",
"typings",
"test",
".haxelib"
],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.hg.ignoredFolders.description%"
},
"projectManager.hg.maxDepthRecursion": {
"type": "integer",
"default": 4,
"description": "%projectManager.configuration.hg.maxDepthRecursion.description%"
},
"projectManager.svn.baseFolders": {
"type": "array",
"default": [],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.svn.baseFolders.description%"
},
"projectManager.svn.ignoredFolders": {
"type": "array",
"default": [
"node_modules",
"out",
"typings",
"test"
],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.svn.ignoredFolders.description%"
},
"projectManager.svn.maxDepthRecursion": {
"type": "integer",
"default": 4,
"description": "%projectManager.configuration.svn.maxDepthRecursion.description%"
},
"projectManager.any.baseFolders": {
"type": "array",
"default": [],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.any.baseFolders.description%"
},
"projectManager.any.ignoredFolders": {
"type": "array",
"default": [
"node_modules",
"out",
"typings",
"test"
],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.any.ignoredFolders.description%"
},
"projectManager.any.maxDepthRecursion": {
"type": "integer",
"default": 4,
"description": "%projectManager.configuration.any.maxDepthRecursion.description%"
},
"projectManager.cacheProjectsBetweenSessions": {
"type": "boolean",
"default": true,
"description": "%projectManager.configuration.cacheProjectsBetweenSessions.description%"
},
"projectManager.ignoreProjectsWithinProjects": {
"type": "boolean",
"default": false,
"description": "%projectManager.configuration.ignoreProjectsWithinProjects.description%"
},
"projectManager.checkInvalidPathsBeforeListing": {
"type": "boolean",
"default": true,
"description": "%projectManager.configuration.checkInvalidPathsBeforeListing.description%"
},
"projectManager.supportSymlinksOnBaseFolders": {
"type": "boolean",
"default": false,
"description": "%projectManager.configuration.supportSymlinksOnBaseFolders.description%"
},
"projectManager.showParentFolderInfoOnDuplicates": {
"type": "boolean",
"default": false,
"description": "%projectManager.configuration.showParentFolderInfoOnDuplicates.description%"
},
"projectManager.filterOnFullPath": {
"type": "boolean",
"default": false,
"description": "%projectManager.configuration.filterOnFullPath.description%"
},
"projectManager.openInCurrenWindowIfEmpty": {
"type": "string",
"default": "always",
"enum": [
"always",
"onlyUsingCommandPalette",
"onlyUsingSideBar",
"never"
],
"enumDescriptions": [
"Whenever you call the Open in New Window command, it will open in the current window, if empty",
"Only open in the current window if you use the Command Palette",
"Only open in the current window if you use the Side Bar",
"Works as today. The Open in New Window command will always open in New Window"
],
"description": "%projectManager.configuration.openInCurrenWindowIfEmpty.description%"
},
"projectManager.tags": {
"type": "array",
"default": [
"Personal",
"Work"
],
"items": {
"type": "string"
},
"description": "%projectManager.configuration.tags.description%"
}
}
},
"keybindings": [
{
"command": "projectManager.listProjects",
"key": "shift+alt+p",
"mac": "cmd+alt+p"
}
]
},
"eslintConfig": {
"extends": [
"vscode-ext"
]
},
"scripts": {
"build": "webpack --mode development",
"watch": "webpack --watch --mode development",
"vscode:prepublish": "webpack --mode production",
"webpack": "webpack --mode development",
"webpack-dev": "webpack --mode development --watch",
"compile": "tsc -p ./",
"lint": "eslint -c package.json --ext .ts src vscode-project-manager-core vscode-whats-new",
"pretest": "npm run compile && npm run lint",
"test-compile": "tsc -p ./ && npm run webpack",
"just-test": "node ./out/src/test/runTest.js",
"test": "npm run test-compile && npm run just-test"
},
"devDependencies": {
"@types/node": "^14.17.27",
"@types/vscode": "^1.61.0",
"@types/mocha": "^9.0.0",
"@types/glob": "^7.1.4",
"@vscode/test-electron": "^1.6.2",
"@typescript-eslint/eslint-plugin": "^5.1.0",
"@typescript-eslint/parser": "^5.1.0",
"eslint": "^8.1.0",
"eslint-config-vscode-ext": "^1.1.0",
"terser-webpack-plugin": "^5.2.4",
"ts-loader": "^9.2.5",
"typescript": "^4.4.4",
"webpack": "^5.52.1",
"webpack-cli": "^4.8.0",
"mocha": "^9.1.3"
},
"dependencies": {
"minimatch": "^3.0.4",
"vscode-ext-codicons": "^1.4.0",
"vscode-ext-help-and-feedback-view": "^1.0.1",
"walker": "^1.0.7"
},
"__metadata": {
"id": "1b747f06-3789-4ebd-ac99-f1fe430c3347",
"publisherId": "3fbdef65-bdf5-4723-aeaf-9e12a50546ef",
"publisherDisplayName": "Alessandro Fragnani",
"isPreReleaseVersion": false,
"installedTimestamp": 1645004964670
}
}

View File

@ -0,0 +1,74 @@
{
"projectManager.activitybar.title": "Projektový manažer",
"projectManager.commands.saveProject.title": "Projektový manažer: uložit projekt",
"projectManager.commands.listProjects.title": "Projektový manažer: seznam projektů k otevření",
"projectManager.commands.listProjectsNewWindow.title": "Projektový manažer: seznam projektů k otevření v novém okně",
"projectManager.commands.editProjects.title": "Projektový manažer: editovat projekty",
"projectManager.commands.refreshProjects.title": "Projektový manažer: aktualizovat projekty",
"projectManager.commands.refreshVSCodeProjects.title": "Projektový manažer: aktualizovat VSCode projekty",
"projectManager.commands.refreshGitProjects.title": "Projektový manažer: aktualizovat Git projekty",
"projectManager.commands.refreshSVNProjects.title": "Projektový manažer: aktualizovat SVN projekty",
"projectManager.commands.refreshAnyProjects.title": "Projektový manažer: aktualizovat všechny projekty",
"projectManager.commands.refreshMercurialProjects.title": "Projektový manažer: aktualizovat Mercurial projekty",
"projectManager.commands.openSettings#sideBarFavorites.title": "Otevřete Nastavení",
"projectManager.commands.openSettings#sideBarVSCode.title": "Otevřete Nastavení",
"projectManager.commands.openSettings#sideBarGit.title": "Otevřete Nastavení",
"projectManager.commands.openSettings#sideBarSVN.title": "Otevřete Nastavení",
"projectManager.commands.openSettings#sideBarAny.title": "Otevřete Nastavení",
"projectManager.commands.openSettings#sideBarMercurial.title": "Otevřete Nastavení",
"projectManager.commands.open.title": "Otevřít",
"projectManager.commands.openInNewWindow.title": "Otevřít v novém okně",
"projectManager.commands.revealInFinder#sideBar.title": "Odhalit ve vyhledávači",
"projectManager.commands.revealInExplorer#sideBar.title": "Odhalit v Průzkumníkovi",
"projectManager.commands.addToWorkspace#sideBar.title": "Přidat do pracovního prostoru",
"projectManager.commands.addToWorkspace.title": "Projektový manažer: přidat projekt do pracovního prostoru",
"projectManager.commands.deleteProject.title": "Smazat projekt",
"projectManager.commands.renameProject.title": "Přejmenovat projekt",
"projectManager.commands.editTags.title": "Upravit značky",
"projectManager.commands.viewAsTags#sideBarFavorites.title": "Zobrazit jako značky",
"projectManager.commands.viewAsList#sideBarFavorites.title": "Zobrazit jako seznam",
"projectManager.submenus.viewAndSort#sideBarFavorites.title": "Zobrazit a třídit",
"projectManager.commands.sortBySaved#sideBarFavorites.title": "Seřadit podle Uloženo",
"projectManager.commands.sortByName#sideBarFavorites.title": "Seřaď dle jména",
"projectManager.commands.sortByPath#sideBarFavorites.title": "Seřadit podle cesty",
"projectManager.commands.sortByRecent#sideBarFavorites.title": "Seřadit podle Nedávné",
"projectManager.commands.filterProjectsByTag#sideBar.title": "Filtrovat projekty podle značek",
"projectManager.commands.filterProjectsByTag.title": "Projektový manažer: Filtrovat projekty podle značek",
"projectManager.commands.addToFavorites.title": "Přídat k oblíbeným",
"projectManager.commands.toggleProjectEnabled.title": "Zakázat projekt",
"projectManager.commands.hideGitWelcome.title": "Skrýt uvítací panel Git",
"projectManager.commands.showGitWelcome.title": "Zobrazit uvítací panel Git",
"projectManager.commands.openFolderWelcome.title": "Otevřít složku",
"projectManager.commands.supportProjectManager.title": "Projektový manažer: Podpora projektového manažera",
"projectManager.commands.whatsNew.title": "Projektový manažer: Co je nového",
"projectManager.commands.whatsNewContextMenu.title": "Co je nového",
"projectManager.configuration.title": "Projektový manažer",
"projectManager.configuration.showProjectNameInStatusBar.description": "Měl by se ve stavovém řádku zobrazit název projektu?",
"projectManager.configuration.openInNewWindowWhenClickingInStatusBar.description": "Měl by být projekt otevřen pomocí nového okna, když kliknete na stavový řádek?",
"projectManager.configuration.removeCurrentProjectFromList.description": "Měl by se současný projekt skrýt v seznamu dostupných projektů?",
"projectManager.configuration.sortList.description": "Seznam projektů seřazených podle ... (Uloženo, Jméno, Cesta nebo Poslední)",
"projectManager.configuration.groupList.description": "Seznam projektů seskupených podle ... (Oblíbené, VSCode, Git, Mercurial a SVN)",
"projectManager.configuration.projectsLocation.description": "Označuje alternativní umístění, kde je uložen soubor `projects.json`",
"projectManager.configuration.vscode.baseFolders.description": "Označuje výchozí složky pro hledání projektů VSCode",
"projectManager.configuration.vscode.ignoredFolders.description": "Označuje složky, které mají být ignorovány, například \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.vscode.maxDepthRecursion.description": "Označuje maximální hloubku rekurze složek při hledání projektů. Jakákoli hodnota pod 1 znamená, že neexistuje žádný limit",
"projectManager.configuration.git.baseFolders.description": "Označuje výchozí složky pro vyhledávání projektů Git",
"projectManager.configuration.git.ignoredFolders.description": "Označuje složky, které mají být ignorovány, například \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.git.maxDepthRecursion.description": "Označuje maximální hloubku rekurze složek při hledání projektů. Jakákoli hodnota pod 1 znamená, že neexistuje žádný limit",
"projectManager.configuration.hg.baseFolders.description": "Označuje výchozí složky pro vyhledávání projektů Mercurial",
"projectManager.configuration.hg.ignoredFolders.description": "Označuje složky, které mají být ignorovány, například \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.hg.maxDepthRecursion.description": "Označuje maximální hloubku rekurze složek při hledání projektů. Jakákoli hodnota pod 1 znamená, že neexistuje žádný limit",
"projectManager.configuration.svn.baseFolders.description": "Označuje výchozí složky pro vyhledávání projektů SVN",
"projectManager.configuration.svn.ignoredFolders.description": "Označuje složky, které mají být ignorovány, například \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.svn.maxDepthRecursion.description": "Označuje maximální hloubku rekurze složek při hledání projektů. Jakákoli hodnota pod 1 znamená, že neexistuje žádný limit",
"projectManager.configuration.any.baseFolders.description": "Označuje výchozí složky k hledání jakýchkoli projektů",
"projectManager.configuration.any.ignoredFolders.description": "Označuje složky, které mají být ignorovány, například \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.any.maxDepthRecursion.description": "Označuje maximální hloubku rekurze složek při hledání projektů. Jakákoli hodnota pod 1 znamená, že neexistuje žádný limit",
"projectManager.configuration.cacheProjectsBetweenSessions.description": "Uložit do paměti nalezené VSCode, Git and SVN projekty?",
"projectManager.configuration.ignoreProjectsWithinProjects.description": "Měli byste ignorovat projekty nalezené v jiných projektech?",
"projectManager.configuration.checkInvalidPathsBeforeListing.description": "Před výpisem zkontrolovat neplatné cesty a zobrazit zprávu pod názvem projektu?",
"projectManager.configuration.supportSymlinksOnBaseFolders.description": "Měly by podporovat symbolické odkazy na `baseFolders`?",
"projectManager.configuration.filterOnFullPath.description": "Filtrovat projekty celou cestou?",
"projectManager.configuration.openInCurrenWindowIfEmpty.description": "Označuje, zda příkaz \"Nové okno\" otevře projekt v aktuálním okně, je-li prázdný.",
"projectManager.configuration.tags.description": "Označuje seznam značek, které můžete použít k uspořádání projektů"
}

View File

@ -0,0 +1,75 @@
{
"projectManager.activitybar.title": "Project Manager",
"projectManager.commands.saveProject.title": "Project Manager: Save Project",
"projectManager.commands.listProjects.title": "Project Manager: List Projects to Open",
"projectManager.commands.listProjectsNewWindow.title": "Project Manager: List Projects to Open in New Window",
"projectManager.commands.editProjects.title": "Project Manager: Edit Projects",
"projectManager.commands.refreshProjects.title": "Project Manager: Refresh Projects",
"projectManager.commands.refreshVSCodeProjects.title": "Project Manager: Refresh VSCode Projects",
"projectManager.commands.refreshGitProjects.title": "Project Manager: Refresh Git Projects",
"projectManager.commands.refreshSVNProjects.title": "Project Manager: Refresh SVN Projects",
"projectManager.commands.refreshAnyProjects.title": "Project Manager: Refresh Any Projects",
"projectManager.commands.refreshMercurialProjects.title": "Project Manager: Refresh Mercurial Projects",
"projectManager.commands.openSettings#sideBarFavorites.title": "Open Settings",
"projectManager.commands.openSettings#sideBarVSCode.title": "Open Settings",
"projectManager.commands.openSettings#sideBarGit.title": "Open Settings",
"projectManager.commands.openSettings#sideBarSVN.title": "Open Settings",
"projectManager.commands.openSettings#sideBarAny.title": "Open Settings",
"projectManager.commands.openSettings#sideBarMercurial.title": "Open Settings",
"projectManager.commands.open.title": "Open",
"projectManager.commands.openInNewWindow.title": "Open in New Window",
"projectManager.commands.revealInFinder#sideBar.title": "Reveal in Finder",
"projectManager.commands.revealInExplorer#sideBar.title": "Reveal in Explorer",
"projectManager.commands.addToWorkspace#sideBar.title": "Add to Workspace",
"projectManager.commands.addToWorkspace.title": "Project Manager: Add Project to Workspace",
"projectManager.commands.deleteProject.title": "Delete Project",
"projectManager.commands.renameProject.title": "Rename Project",
"projectManager.commands.editTags.title": "Edit Tags",
"projectManager.commands.viewAsTags#sideBarFavorites.title": "View as Tags",
"projectManager.commands.viewAsList#sideBarFavorites.title": "View as List",
"projectManager.submenus.viewAndSort#sideBarFavorites.title": "View & Sort",
"projectManager.commands.sortBySaved#sideBarFavorites.title": "Sort by Saved",
"projectManager.commands.sortByName#sideBarFavorites.title": "Sort by Name",
"projectManager.commands.sortByPath#sideBarFavorites.title": "Sort by Path",
"projectManager.commands.sortByRecent#sideBarFavorites.title": "Sort by Recent",
"projectManager.commands.filterProjectsByTag#sideBar.title": "Filter Projects by Tag",
"projectManager.commands.filterProjectsByTag.title": "Project Manager: Filter Projects by Tag",
"projectManager.commands.addToFavorites.title": "Add to Favorites",
"projectManager.commands.toggleProjectEnabled.title": "Disable Project",
"projectManager.commands.hideGitWelcome.title": "Hide Git Welcome Panel",
"projectManager.commands.showGitWelcome.title": "Show Git Welcome Panel",
"projectManager.commands.openFolderWelcome.title": "Open Folder",
"projectManager.commands.supportProjectManager.title": "Project Manager: Support Project Manager",
"projectManager.commands.whatsNew.title": "Project Manager: What's New",
"projectManager.commands.whatsNewContextMenu.title": "What's New",
"projectManager.configuration.title": "Project Manager",
"projectManager.configuration.showProjectNameInStatusBar.description": "Should display the project name in the Status Bar?",
"projectManager.configuration.openInNewWindowWhenClickingInStatusBar.description": "Should the project be opened using a New Window when you click the Status Bar?",
"projectManager.configuration.removeCurrentProjectFromList.description": "Should the current project be hidden in the list of available projects?",
"projectManager.configuration.sortList.description": "List the projects sorted by...(Saved, Name, Path or Recent)",
"projectManager.configuration.groupList.description": "List the projects grouped by...(Favorites, VSCode, Git, Mercurial and SVN)",
"projectManager.configuration.projectsLocation.description": "Indicates an alternative location where the `projects.json` file is stored",
"projectManager.configuration.vscode.baseFolders.description": "Indicates the base folders to search for VSCode projects",
"projectManager.configuration.vscode.ignoredFolders.description": "Indicates folders to be ignored, like \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.vscode.maxDepthRecursion.description": "Indicates the maximum depth of folder recursion to search for projects. Any value below 1 means there is no limit",
"projectManager.configuration.git.baseFolders.description": "Indicates the base folders to search for Git projects",
"projectManager.configuration.git.ignoredFolders.description": "Indicates folders to be ignored, like \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.git.maxDepthRecursion.description": "Indicates the maximum depth of folder recursion to search for projects. Any value below 1 means there is no limit",
"projectManager.configuration.hg.baseFolders.description": "Indicates the base folders to search for Mercurial projects",
"projectManager.configuration.hg.ignoredFolders.description": "Indicates folders to be ignored, like \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.hg.maxDepthRecursion.description": "Indicates the maximum depth of folder recursion to search for projects. Any value below 1 means there is no limit",
"projectManager.configuration.svn.baseFolders.description": "Indicates the base folders to search for SVN projects",
"projectManager.configuration.svn.ignoredFolders.description": "Indicates folders to be ignored, like \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.svn.maxDepthRecursion.description": "Indicates the maximum depth of folder recursion to search for projects. Any value below 1 means there is no limit",
"projectManager.configuration.any.baseFolders.description": "Indicates the base folders to search for any folder projects",
"projectManager.configuration.any.ignoredFolders.description": "Indicates folders to be ignored, like \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.any.maxDepthRecursion.description": "Indicates the maximum depth of folder recursion to search for projects. Any value below 1 means there is no limit",
"projectManager.configuration.cacheProjectsBetweenSessions.description": "Should cache the VSCode, Git and SVN projects found?",
"projectManager.configuration.ignoreProjectsWithinProjects.description": "Should ignore projects found inside other projects?",
"projectManager.configuration.checkInvalidPathsBeforeListing.description": "Should check for invalid paths before listing, showing a message below the project name?",
"projectManager.configuration.supportSymlinksOnBaseFolders.description": "Should support symlinks on `baseFolders`?",
"projectManager.configuration.showParentFolderInfoOnDuplicates.description": "Should show the parent folder info when projects with same name are detected?",
"projectManager.configuration.filterOnFullPath.description": "Should filter projects through full path?",
"projectManager.configuration.openInCurrenWindowIfEmpty.description": "Indicates if the New Window command open the project in current window, when empty.",
"projectManager.configuration.tags.description": "Indicates the list of tags you can use to organize your projects"
}

View File

@ -0,0 +1,74 @@
{
"projectManager.activitybar.title": "Project Manager",
"projectManager.commands.saveProject.title": "Project Manager: Salvar Projeto",
"projectManager.commands.listProjects.title": "Project Manager: Listar Projetos para Abrir",
"projectManager.commands.listProjectsNewWindow.title": "Project Manager: Listar Projetos para Abrir em uma Nova Janela",
"projectManager.commands.editProjects.title": "Project Manager: Editar Projetos",
"projectManager.commands.refreshProjects.title": "Project Manager: Atualizar Projetos",
"projectManager.commands.refreshVSCodeProjects.title": "Project Manager: Atualizar Projetos VSCode",
"projectManager.commands.refreshGitProjects.title": "Project Manager: Atualizar Projetos Git",
"projectManager.commands.refreshSVNProjects.title": "Project Manager: Atualizar Projetos SVN",
"projectManager.commands.refreshAnyProjects.title": "Project Manager: Atualizar Projetos Any",
"projectManager.commands.refreshMercurialProjects.title": "Project Manager: Atualizar Projetos Mercurial",
"projectManager.commands.openSettings#sideBarFavorites.title": "Abrir Configurações",
"projectManager.commands.openSettings#sideBarVSCode.title": "Abrir Configurações",
"projectManager.commands.openSettings#sideBarGit.title": "Abrir Configurações",
"projectManager.commands.openSettings#sideBarSVN.title": "Abrir Configurações",
"projectManager.commands.openSettings#sideBarAny.title": "Abrir Configurações",
"projectManager.commands.openSettings#sideBarMercurial.title": "Abrir Configurações",
"projectManager.commands.open.title": "Abrir",
"projectManager.commands.openInNewWindow.title": "Abrir em uma Nova Janela",
"projectManager.commands.revealInFinder#sideBar.title": "Revelar no Finder",
"projectManager.commands.revealInExplorer#sideBar.title": "Revelar no Explorer",
"projectManager.commands.addToWorkspace#sideBar.title": "Adicionar ao Espaço de Trabalho",
"projectManager.commands.addToWorkspace.title": "Project Manager: Adicionar Projeto ao Espaço de Trabalho",
"projectManager.commands.deleteProject.title": "Excluir Projeto",
"projectManager.commands.renameProject.title": "Renomear Projeto",
"projectManager.commands.editTags.title": "Editar Etiquetas",
"projectManager.commands.viewAsTags#sideBarFavorites.title": "Exibir como Etiquetas",
"projectManager.commands.viewAsList#sideBarFavorites.title": "Exibir como Lista",
"projectManager.submenus.viewAndSort#sideBarFavorites.title": "Exibir & Ordenação",
"projectManager.commands.sortBySaved#sideBarFavorites.title": "Ordenado por Salvo",
"projectManager.commands.sortByName#sideBarFavorites.title": "Ordenado por Nome",
"projectManager.commands.sortByPath#sideBarFavorites.title": "Ordenado por Caminho",
"projectManager.commands.sortByRecent#sideBarFavorites.title": "Ordenado por Recente",
"projectManager.commands.filterProjectsByTag#sideBar.title": "Filtrar Projetos por Etiqueta",
"projectManager.commands.filterProjectsByTag.title": "Project Manager: Filtrar Projetos por Etiqueta",
"projectManager.commands.addToFavorites.title": "Adicionar aos Favoritos",
"projectManager.commands.toggleProjectEnabled.title": "Desabilitar Projeto",
"projectManager.commands.hideGitWelcome.title": "Esconder Painel de Boas Vindas Git",
"projectManager.commands.showGitWelcome.title": "Exibir Painel de Boas Vindas Git",
"projectManager.commands.openFolderWelcome.title": "Abrir Pasta",
"projectManager.commands.supportProjectManager.title": "Project Manager: Suporte Project Manager",
"projectManager.commands.whatsNew.title": "Project Manager: Novidades",
"projectManager.commands.whatsNewContextMenu.title": "Novidades",
"projectManager.configuration.title": "Project Manager",
"projectManager.configuration.showProjectNameInStatusBar.description": "Controla se deve exibir o nome do projeto na barra de status",
"projectManager.configuration.openInNewWindowWhenClickingInStatusBar.description": "Controla se o projeto deve ser aberto em uma Nova Janela quando clicar na barra de status",
"projectManager.configuration.removeCurrentProjectFromList.description": "Controla se o projeto corrente deve ser suprimido da lista de projetos disponíveis",
"projectManager.configuration.sortList.description": "Lista de projetos ordenada por ...(Salvos, Nome, Caminho ou Recente)",
"projectManager.configuration.groupList.description": "Lista os projetos agrupados por ...(Favoritos, VSCode, Git, Mercurial e SVN)",
"projectManager.configuration.projectsLocation.description": "Indica uma localização alternativa onde o arquivo `projects.json` é armazenado",
"projectManager.configuration.vscode.baseFolders.description": "Indica as pastas base na procura por projetos VSCode",
"projectManager.configuration.vscode.ignoredFolders.description": "Indica pastas a serem ignoradas, como \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.vscode.maxDepthRecursion.description": "Indica a profundidade máxima de pastas recursivas na procura por projetos. Qualquer valor abaixo de 1 significa sem limites",
"projectManager.configuration.git.baseFolders.description": "Indica as pastas base na procura por projetos Git",
"projectManager.configuration.git.ignoredFolders.description": "Indica pastas a serem ignoradas, como \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.git.maxDepthRecursion.description": "Indica a profundidade máxima de pastas recursivas na procura por projetos. Qualquer valor abaixo de 1 significa sem limites",
"projectManager.configuration.hg.baseFolders.description": "Indica as pastas base na procura por projetos Mercurial",
"projectManager.configuration.hg.ignoredFolders.description": "Indica pastas a serem ignoradas, como \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.hg.maxDepthRecursion.description": "Indica a profundidade máxima de pastas recursivas na procura por projetos. Qualquer valor abaixo de 1 significa sem limites",
"projectManager.configuration.svn.baseFolders.description": "Indica as pastas base na procura por projetos SVN",
"projectManager.configuration.svn.ignoredFolders.description": "Indica pastas a serem ignoradas, como \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.svn.maxDepthRecursion.description": "Indica a profundidade máxima de pastas recursivas na procura por projetos. Qualquer valor abaixo de 1 significa sem limites",
"projectManager.configuration.any.baseFolders.description": "Indica as pastas base na procura por projetos Any (qualquer pasta)",
"projectManager.configuration.any.ignoredFolders.description": "Indica pastas a serem ignoradas, como \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.any.maxDepthRecursion.description": "Indica a profundidade máxima de pastas recursivas na procura por projetos. Qualquer valor abaixo de 1 significa sem limites",
"projectManager.configuration.cacheProjectsBetweenSessions.description": "Controla se deve armazenar em cache os projetos VSCode, Git e SVN encontrados",
"projectManager.configuration.ignoreProjectsWithinProjects.description": "Controla se deve ignorar projetos localizados dentro de outros projetos",
"projectManager.configuration.checkInvalidPathsBeforeListing.description": "Controla se deve verificar por pastas inválidas antes de listá-las, apresentando uma mensagem abaixo do nome do projeto",
"projectManager.configuration.supportSymlinksOnBaseFolders.description": "Controla se deve suportar links simbólicos em `baseFolders`?",
"projectManager.configuration.filterOnFullPath.description": "Controla se deve filtrar projetos pelo caminho completo",
"projectManager.configuration.openInCurrenWindowIfEmpty.description": "Indica se o comando Nova Janela abre o projeto na janela corrente, quando vazia",
"projectManager.configuration.tags.description": "Indica a lista de etiquetas que você pode usar para organizar seus projetos"
}

View File

@ -0,0 +1,74 @@
{
"projectManager.activitybar.title": "Менеджер проектов",
"projectManager.commands.saveProject.title": "Менеджер проектов: Сохранить проект",
"projectManager.commands.listProjects.title": "Менеджер проектов: Список проектов для открытия",
"projectManager.commands.listProjectsNewWindow.title": "Менеджер проектов: Список проектов для открытия в новом окне",
"projectManager.commands.editProjects.title": "Менеджер проектов: Редактировать проекты",
"projectManager.commands.refreshProjects.title": "Менеджер проектов: Обновить проекты",
"projectManager.commands.refreshVSCodeProjects.title": "Менеджер проектов: Обновить проекты VSCode",
"projectManager.commands.refreshGitProjects.title": "Менеджер проектов: Обновить проекты Git",
"projectManager.commands.refreshSVNProjects.title": "Менеджер проектов: Обновить проекты SVN",
"projectManager.commands.refreshAnyProjects.title": "Менеджер проектов: обновить любые проекты",
"projectManager.commands.refreshMercurialProjects.title": "Менеджер проектов: Обновить проекты Mercurial",
"projectManager.commands.openSettings#sideBarFavorites.title": "Открыть настройки",
"projectManager.commands.openSettings#sideBarVSCode.title": "Открыть настройки",
"projectManager.commands.openSettings#sideBarGit.title": "Открыть настройки",
"projectManager.commands.openSettings#sideBarSVN.title": "Открыть настройки",
"projectManager.commands.openSettings#sideBarAny.title": "Открыть настройки",
"projectManager.commands.openSettings#sideBarMercurial.title": "Открыть настройки",
"projectManager.commands.open.title": "Открыть",
"projectManager.commands.openInNewWindow.title": "Открыть в новом окне",
"projectManager.commands.revealInFinder#sideBar.title": "Показать в Finder",
"projectManager.commands.revealInExplorer#sideBar.title": "Показать в Explorer",
"projectManager.commands.addToWorkspace#sideBar.title": "Добавить в рабочую область",
"projectManager.commands.addToWorkspace.title": "Менеджер проектов: Добавить проект в рабочую область",
"projectManager.commands.deleteProject.title": "Удалить проект",
"projectManager.commands.renameProject.title": "Переименовать проект",
"projectManager.commands.editTags.title": "Отредактировать тэги",
"projectManager.commands.viewAsTags#sideBarFavorites.title": "Просмотреть как теги",
"projectManager.commands.viewAsList#sideBarFavorites.title": "Просмотреть как список",
"projectManager.submenus.viewAndSort#sideBarFavorites.title": "Просмотр и сортировка",
"projectManager.commands.sortBySaved#sideBarFavorites.title": "Сортировать по сохраненным",
"projectManager.commands.sortByName#sideBarFavorites.title": "Сортировать по имени",
"projectManager.commands.sortByPath#sideBarFavorites.title": "Сортировать по пути",
"projectManager.commands.sortByRecent#sideBarFavorites.title": "Сортировать по недавнему",
"projectManager.commands.filterProjectsByTag#sideBar.title": "Фильтровать проекты по тегу",
"projectManager.commands.filterProjectsByTag.title": "Менеджер проектов: Фильтровать проекты по тегу",
"projectManager.commands.addToFavorites.title": "Добавить в избранное",
"projectManager.commands.toggleProjectEnabled.title": "Отключить проект",
"projectManager.commands.hideGitWelcome.title": "Скрыть панель приветствия Git",
"projectManager.commands.showGitWelcome.title": "Показать панель приветствия Git",
"projectManager.commands.openFolderWelcome.title": "Открыть папку",
"projectManager.commands.supportProjectManager.title": "Менеджер проекта: Менеджер проекта поддержки",
"projectManager.commands.whatsNew.title": "Менеджер проектов: Что нового",
"projectManager.commands.whatsNewContextMenu.title": "Что нового",
"projectManager.configuration.title": "Менеджер проектов",
"projectManager.configuration.showProjectNameInStatusBar.description": "Должно ли отображаться название проекта в строке состояния?",
"projectManager.configuration.openInNewWindowWhenClickingInStatusBar.description": "Следует ли открывать проект в новом окне при клике в строке состояния?",
"projectManager.configuration.removeCurrentProjectFromList.description": "Должен ли текущий проект быть скрыт в списке доступных проектов?",
"projectManager.configuration.sortList.description": "Сортировка списка проектов по...(Saved, Name, Path или Recent)",
"projectManager.configuration.groupList.description": "Группировать списки проектов по...(Favorites, VSCode, Git, Mercurial и SVN)",
"projectManager.configuration.projectsLocation.description": "Укажите альтернативное расположение для хранения файла `projects.json`",
"projectManager.configuration.vscode.baseFolders.description": "Укажите базовые папки для поиска проектов VSCode",
"projectManager.configuration.vscode.ignoredFolders.description": "Укажите папки которые следует игнорировать, например \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.vscode.maxDepthRecursion.description": "Укажите максимальную глубину вложенности папок для поиска проектов. Любое значение ниже 1 означает отсутствие ограничений",
"projectManager.configuration.git.baseFolders.description": "Укажите базовые папки для поиска Git-проектов",
"projectManager.configuration.git.ignoredFolders.description": "Укажите папки которые следует игнорировать, например \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.git.maxDepthRecursion.description": "Укажите максимальную глубину вложенности папок для поиска Git-проектов. Любое значение ниже 1 означает отсутствие ограничений",
"projectManager.configuration.hg.baseFolders.description": "Укажите базовые папки для поиска Mercurial-проектов",
"projectManager.configuration.hg.ignoredFolders.description": "Укажите папки которые следует игнорировать, например \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.hg.maxDepthRecursion.description": "Укажите максимальную глубину вложенности папок для поиска проектов. Любое значение ниже 1 означает отсутствие ограничений",
"projectManager.configuration.svn.baseFolders.description": "Укажите базовые папки для поиска SVN-проектов",
"projectManager.configuration.svn.ignoredFolders.description": "Укажите папки которые следует игнорировать, например \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.svn.maxDepthRecursion.description": "Укажите максимальную глубину вложенности папок для поиска проектов. Любое значение ниже 1 означает отсутствие ограничений",
"projectManager.configuration.any.baseFolders.description": "Укажите базовые папки для поиска папок любых проектов",
"projectManager.configuration.any.ignoredFolders.description": "Укажите папки которые следует игнорировать, например \"node_modules\", \"out\", \"typings\", \"test\"",
"projectManager.configuration.any.maxDepthRecursion.description": "Укажите максимальную глубину вложенности папок для поиска проектов. Любое значение ниже 1 означает отсутствие ограничений",
"projectManager.configuration.cacheProjectsBetweenSessions.description": "Нужно ли кэшировать VSCode, Git и SVN найденные проекты?",
"projectManager.configuration.ignoreProjectsWithinProjects.description": "Следует игнорировать проекты, найденные внутри других проектов?",
"projectManager.configuration.checkInvalidPathsBeforeListing.description": "Следует ли проверять наличие недопустимых путей перед выводом списка, показывая сообщение под именем проекта?",
"projectManager.configuration.supportSymlinksOnBaseFolders.description": "Должны ли поддерживаться символические ссылки на `baseFolders`?",
"projectManager.configuration.filterOnFullPath.description": "Следует ли фильтровать проекты по полному пути?",
"projectManager.configuration.openInCurrenWindowIfEmpty.description": "Указывает, открывает ли команда «Новое окно» проект в текущем пустом окне.",
"projectManager.configuration.tags.description": "Указывает список тегов, которые вы можете использовать для организации ваших проектов."
}

View File

@ -0,0 +1,74 @@
{
"projectManager.activitybar.title": "项目管理器",
"projectManager.commands.saveProject.title": "项目管理器: 保存项目",
"projectManager.commands.listProjects.title": "项目管理器: 列出项目以打开",
"projectManager.commands.listProjectsNewWindow.title": "项目管理器: 列出项目并在新窗口中打开",
"projectManager.commands.editProjects.title": "项目管理器: 编辑项目",
"projectManager.commands.refreshProjects.title": "项目管理器: 刷新项目",
"projectManager.commands.refreshVSCodeProjects.title": "项目管理器: 刷新 VSCode 项目",
"projectManager.commands.refreshGitProjects.title": "项目管理器: 刷新 Git 项目",
"projectManager.commands.refreshSVNProjects.title": "项目管理器: 刷新 SVN 项目",
"projectManager.commands.refreshAnyProjects.title": "项目管理器: 刷新 Any 项目",
"projectManager.commands.refreshMercurialProjects.title": "项目管理器: 刷新 Mercurial 项目",
"projectManager.commands.openSettings#sideBarFavorites.title": "打开设置",
"projectManager.commands.openSettings#sideBarVSCode.title": "打开设置",
"projectManager.commands.openSettings#sideBarGit.title": "打开设置",
"projectManager.commands.openSettings#sideBarSVN.title": "打开设置",
"projectManager.commands.openSettings#sideBarAny.title": "打开设置",
"projectManager.commands.openSettings#sideBarMercurial.title": "打开设置",
"projectManager.commands.open.title": "打开",
"projectManager.commands.openInNewWindow.title": "在新窗口中打开",
"projectManager.commands.revealInFinder#sideBar.title": "在Finder中显示",
"projectManager.commands.revealInExplorer#sideBar.title": "在资源管理器中显示",
"projectManager.commands.addToWorkspace#sideBar.title": "添加到工作区",
"projectManager.commands.addToWorkspace.title": "项目管理器: 将项目添加到工作区",
"projectManager.commands.deleteProject.title": "删除项目",
"projectManager.commands.renameProject.title": "重命名项目",
"projectManager.commands.editTags.title": "编辑标签",
"projectManager.commands.viewAsTags#sideBarFavorites.title": "作为标签查看",
"projectManager.commands.viewAsList#sideBarFavorites.title": "以列表形式查看",
"projectManager.submenus.viewAndSort#sideBarFavorites.title": "查看和排序",
"projectManager.commands.sortBySaved#sideBarFavorites.title": "按已保存排序",
"projectManager.commands.sortByName#sideBarFavorites.title": "按名称分类",
"projectManager.commands.sortByPath#sideBarFavorites.title": "按路径排序",
"projectManager.commands.sortByRecent#sideBarFavorites.title": "按最近排序",
"projectManager.commands.filterProjectsByTag#sideBar.title": "按标签过滤项目",
"projectManager.commands.filterProjectsByTag.title": "项目管理器: 按标签过滤项目",
"projectManager.commands.addToFavorites.title": "添加到收藏夹",
"projectManager.commands.toggleProjectEnabled.title": "禁用项目",
"projectManager.commands.hideGitWelcome.title": "隐藏 Git 欢迎面板",
"projectManager.commands.showGitWelcome.title": "显示 Git 欢迎面板",
"projectManager.commands.openFolderWelcome.title": "打开文件夹",
"projectManager.commands.supportProjectManager.title": "项目经理:支持项目经理",
"projectManager.commands.whatsNew.title": "项目管理器: 更新日志",
"projectManager.commands.whatsNewContextMenu.title": "更新日志",
"projectManager.configuration.title": "项目管理器",
"projectManager.configuration.showProjectNameInStatusBar.description": "是否应在状态栏中显示项目名称?",
"projectManager.configuration.openInNewWindowWhenClickingInStatusBar.description": "单击状态栏时是否应该使用新窗口打开项目?",
"projectManager.configuration.removeCurrentProjectFromList.description": "当前项目是否应该隐藏在可用项目列表中?",
"projectManager.configuration.sortList.description": "按 ... 分类列出项目(已保存、名称、路径或最近)。",
"projectManager.configuration.groupList.description": "按 ... 分组列出项目收藏夹、VSCode、Git、Mercurial 和 SVN。",
"projectManager.configuration.projectsLocation.description": "指定存储 `projects.json` 文件的备用位置。",
"projectManager.configuration.vscode.baseFolders.description": "指定要搜索 VSCode 项目的基本文件夹。",
"projectManager.configuration.vscode.ignoredFolders.description": "指定要忽略的文件夹,例如 \"node_modules\"、\"out\"、\"typings\"、\"test\"。",
"projectManager.configuration.vscode.maxDepthRecursion.description": "指定搜索项目的文件夹递归的最大深度。小于 1 的任何值表示没有限制。",
"projectManager.configuration.git.baseFolders.description": "指示要搜索 Git 项目的基本文件夹。",
"projectManager.configuration.git.ignoredFolders.description": "指定要忽略的文件夹,例如 \"node_modules\"、\"out\"、\"typings\"、\"test\"。",
"projectManager.configuration.git.maxDepthRecursion.description": "指定搜索项目的文件夹递归的最大深度。小于 1 的任何值表示没有限制。",
"projectManager.configuration.hg.baseFolders.description": "指定要搜索 Mercurial 项目的基本文件夹。",
"projectManager.configuration.hg.ignoredFolders.description": "指定要忽略的文件夹,例如 \"node_modules\"、\"out\"、\"typings\"、\"test\"。",
"projectManager.configuration.hg.maxDepthRecursion.description": "指定搜索项目的文件夹递归的最大深度。小于 1 的任何值表示没有限制。",
"projectManager.configuration.svn.baseFolders.description": "指定要搜索 SVN 项目的基本文件夹。",
"projectManager.configuration.svn.ignoredFolders.description": "指定要忽略的文件夹,例如 \"node_modules\"、\"out\"、\"typings\"、\"test\"。",
"projectManager.configuration.svn.maxDepthRecursion.description": "指定搜索项目的文件夹递归的最大深度。小于 1 的任何值表示没有限制。",
"projectManager.configuration.any.baseFolders.description": "指定要搜索任意 VSCode 项目的基本文件夹。",
"projectManager.configuration.any.ignoredFolders.description": "指定要忽略的文件夹,例如 \"node_modules\"、\"out\"、\"typings\"、\"test\"。",
"projectManager.configuration.any.maxDepthRecursion.description": "指定搜索项目的文件夹递归的最大深度。小于 1 的任何值表示没有限制。",
"projectManager.configuration.cacheProjectsBetweenSessions.description": "是否应该缓存找到的 VSCode、Git 和 SVN 项目?",
"projectManager.configuration.ignoreProjectsWithinProjects.description": "应该忽略其他项目中找到的项目吗?",
"projectManager.configuration.checkInvalidPathsBeforeListing.description": "列出之前是否应该检查无效路径,并在项目名称下方显示一条消息?",
"projectManager.configuration.supportSymlinksOnBaseFolders.description": "应该支持“baseFolders”上的符号链接吗",
"projectManager.configuration.filterOnFullPath.description": "是否应该通过完整路径过滤项目?",
"projectManager.configuration.openInCurrenWindowIfEmpty.description": "当本窗口为空时,执行在新窗口中打开项目的命令后是否应该打开新窗口?",
"projectManager.configuration.tags.description": "表示可用于组织项目的标签列表"
}

View File

@ -0,0 +1,22 @@
The MIT License (MIT)
Copyright (c) 2018 Alessandro Fragnani
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -0,0 +1,123 @@
# What's New submodule
This submodule is used to display a **What's New** page on my VS Code extensions. It has a simple (but yet effective) UI, optimized to display all the information in a single page.
![whats-new-bookmarks](images/whats-new-bookmarks.png)
## Usage
```ts
// provide the data
import { ChangeLogItem,
ChangeLogKind,
ContentProvider,
SocialMediaProvider,
SponsorProvider,
Header,
Image
} from "../../vscode-whats-new/src/ContentProvider";
export class BookmarksContentProvider implements ContentProvider {
provideHeader(logoUrl: string): Header {
return <Header>{logo: <Image> {src: logoUrl, height: 50, width: 50},
message: `<b>Bookmarks</b> helps you to navigate in your code, <b>moving</b>
between important positions easily and quickly. No more need
to <i>search for code</i>. It also supports a set of <b>selection</b>
commands, which allows you to select bookmarked lines and regions between
lines.`};
}
provideChangeLog(): ChangeLogItem[] {
let changeLog: ChangeLogItem[] = [];
changeLog.push({ kind: ChangeLogKind.VERSION, detail: { releaseNumber: "12.1.0", releaseDate: "December 2020" } });
changeLog.push({
kind: ChangeLogKind.NEW,
detail: {
message: "Support submenu for editor commands",
id: 351,
kind: IssueKind.Issue
}
});
changeLog.push({
kind: ChangeLogKind.CHANGED,
detail: {
message: "Setting <b>bookmarks.navigateThroughAllFiles</b> is now <b>true</b> by default",
id: 102,
kind: IssueKind.Issue
}
});
changeLog.push({
kind: ChangeLogKind.INTERNAL,
detail: {
message: "Remove unnecessary files from extension package",
id: 355,
kind: IssueKind.Issue
}
});
}
}
export class BookmarksSocialMediaProvider implements SocialMediaProvider {
public provideSocialMedias() {
return [{
title: "Follow me on Twitter",
link: "https://www.twitter.com/alefragnani"
}];
}
}
export class BookmarksSponsorProvider implements SponsorProvider {
public provideSponsors(): Sponsor[] {
const sponsors: Sponsor[] = [];
const sponsorCodeStream: Sponsor = <Sponsor>{
title: "Learn more about Codestream",
link: "https://sponsorlink.codestream.com/?utm_source=vscmarket&utm_campaign=bookmarks&utm_medium=banner",
image: {
light: "https://alt-images.codestream.com/codestream_logo_bookmarks.png",
dark: "https://alt-images.codestream.com/codestream_logo_bookmarks.png"
},
width: 52,
message: `<p>Eliminate context switching and costly distractions.
Create and merge PRs and perform code reviews from inside your
IDE while using jump-to-definition, your keybindings, and other IDE favorites.</p>`,
extra:
`<a title="Learn more about CodeStream" href="https://sponsorlink.codestream.com/?utm_source=vscmarket&utm_campaign=bookmarks&utm_medium=banner">
Learn more</a>`
};
sponsors.push(sponsorCodeStream);
return sponsors;
}
}
// register the providers
const provider = new BookmarksContentProvider();
const viewer = new WhatsNewManager(context)
.registerContentProvider("alefragnani", "bookmarks", provider)
.registerSocialMediaProvider(new BookmarksSocialMediaProvider())
.registerSponsorProvider(new BookmarksSponsorProvider());
// show the page (if necessary)
viewer.showPageInActivation();
// register the additional command (not really necessary, unless you want a command registered in your extension)
context.subscriptions.push(vscode.commands.registerCommand("bookmarks.whatsNew", () => viewer.showPage()));
```
## Features
### Detects version updates
It follows [SEMVER - Semantic Versioning](https://www.semver.org) to detect **Major**, **Minor** and **Patch** versions. The **What's New** page will only be displayed when a **Major** or **Minor** update occurs. **Patches** are updated silently.
### Template Based
I don't have to deal with HTML or CSS on my extensions anymore. I just have to _provide_ the relevant information and the HTML page is automatically generated/updated.
## Inspiration
The idea came from the [GitLens extension](https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens) by @eamodio (big thanks to Eric Amodio :claps:). Based on pieces of its welcome page, I created this template based engine, to be able to use in any of my extensions, with minimum effort.
# License
[MIT](LICENSE.md) &copy; Alessandro Fragnani

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 KiB

View File

@ -0,0 +1,623 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Eric Amodio & Alessandro Fragnani. All rights reserved.
* Licensed under the MIT License. See License.md in the project root for license information.
*
* Original Author: Eric Amodio @ GitLens
* Modifications by: Alessandro Fragnani
*--------------------------------------------------------------------------------------------*/
html {
height: 100%; }
body {
background-color: var(--vscode-editor-background);
color: var(--vscode-editor-foreground);
font-family: var(--vscode-font-family);
height: 100%;
opacity: 0.85;
line-height: 1.4; }
a {
border: 0;
color: var(--vscode-textLink-foreground);
font-weight: 400;
outline: none;
text-decoration: none; }
a:not([href]):not([tabindex]):focus, a:not([href]):not([tabindex]):hover {
color: inherit;
text-decoration: none; }
.vscode-light a:focus {
outline-color: var(--vscode-textLink-foreground); }
.vscode-dark a:focus {
outline-color: var(--vscode-textLink-foreground); }
b {
font-weight: 600; }
h1 {
border: none;
font-size: 2.77em;
font-weight: 400;
margin: 0;
padding: 0;
white-space: nowrap; }
h2 {
font-size: 1.5em;
font-weight: 200;
line-height: normal;
/* margin: 1em 0 0.3em 0; */
white-space: nowrap; }
h3 {
font-size: 1.17em;
font-weight: 200;
line-height: normal;
margin: 1em 0 0.3em 0;
white-space: nowrap; }
header {
align-items: center;
display: flex;
flex-wrap: wrap;
justify-content: center;
margin-bottom: 1em; }
input, select, button {
font-family: var(--vscode-font-family);
font-size: inherit;
margin: 0; }
input {
background: none;
border: none;
cursor: pointer;
margin: 0;
padding: 0 10px; }
input:focus {
background: rgba(0, 0, 0, 0.1);
border-radius: 5px;
outline: none; }
input[disabled] {
color: var(--vscode-input-foreground);
cursor: default; }
label {
cursor: pointer; }
section {
display: flex;
flex-wrap: wrap;
margin-bottom: 1em;
/* padding: 1rem; */
}
.vscode-light section {
background-color: var(--vscode-editor-background); }
.vscode-dark section {
background-color: var(--vscode-editor-background); }
ul {
font-size: 1em;
list-style: none;
margin: 0;
padding: 0; }
.button {
background: none;
border: none;
border-radius: 3px;
cursor: pointer;
display: inline-block;
font-size: 0.8em;
letter-spacing: 0.25em;
margin: 1em 0.5em;
padding: 1em 1.75em;
text-decoration: none;
text-transform: uppercase;
user-select: none;
white-space: nowrap; }
.button:focus {
outline: none; }
.button--big {
font-size: 1.25em; }
.button--flat {
border: 1px solid rgba(255, 255, 255, 0.6);
color: white !important;
transition: background-color 250ms, border-color 250ms, color 250ms; }
.button--flat:hover {
background-color: white;
color: black !important; }
.preload .button--flat {
transition-duration: 0s !important; }
.button--flat-inverse {
background-color: white;
border: 1px solid white;
color: black !important;
font-weight: 600;
transition: background-color 250ms, border-color 250ms, color 250ms; }
.button--flat-inverse:hover {
background: rgba(0, 0, 0, 0.2);
border-color: rgba(255, 255, 255, 0.6);
color: white !important; }
.preload .button--flat-inverse {
transition-duration: 0s !important; }
.button--flat-primary {
background-color: var(--vscode-button-background);
border: 1px solid var(--vscode-button-background);
color: white !important;
font-weight: 600;
transition: background-color 250ms, border-color 250ms, color 250ms; }
.button--flat-primary:hover {
background-color: white;
border-color: white;
color: black !important; }
.preload .button--flat-primary {
transition-duration: 0s !important; }
.button-group {
display: flex;
flex-wrap: wrap; }
.button-group .button {
white-space: nowrap; }
.button-group--support-alefragnani {
justify-content: center;
margin: 1.5em 0 1em 0; }
.button-group--support-alefragnani .button {
margin-left: 1.5em;
margin-right: 1.5em;
white-space: nowrap; }
.button-group--support-alefragnani-sidebar {
font-size: 11px; }
.button-group--support-alefragnani-sidebar .button {
font-weight: 400;
margin: 0.75em 0; }
.changelog {
/* border-radius: 5em;*/
margin: 0 2em 1em 0; }
.vscode-light .changelog {
background-color: var(--vscode-editor-background);
/* box-shadow: inset 0 0 6px 0px rgba(0, 0, 0, 0.05); */
}
.vscode-dark .changelog {
background-color: var(--vscode-editor-background);
/* box-shadow: inset 0 0 6px 0px rgba(255, 255, 255, 0.075); */
}
.changelog__badge {
background-color: var(--vscode-activityBarBadge-background);
border-radius: 3px;
box-shadow: 0 0 2px 0px rgba(0, 0, 0, 0.5);
color: #e6e6e6;
display: inline-block;
font-size: 11px;
font-weight: 600;
margin-right: 1.25em;
padding: 2px 5px;
text-align: center;
text-transform: uppercase;
vertical-align: text-top;
width: 65px; }
.changelog__badge--added {
background-color: var(--vscode-gitDecoration-untrackedResourceForeground); }
.changelog__badge--changed {
background-color: var(--vscode-gitDecoration-modifiedResourceForeground);
}
.changelog__badge--fixed {
background-color: var(--vscode-gitDecoration-conflictingResourceForeground); }
.changelog__badge--internal {
background-color: var(--vscode-gitDecoration-modifiedResourceForeground); }
.changelog__badge--version {
background-color: var(--vscode-activityBarBadge-background);
height: 24px;
vertical-align: middle;
font-size: 15px; }
.uppercase {
text-transform: uppercase;
}
.changelog__version__borders {
border-color: rgba(125, 125, 125, .15);
border-spacing: 50px;
border-width: thin;
padding-top: 10px;
padding-bottom: 10px;
}
.changelog__version__borders__top {
border-top-style: solid;
}
.changelog__date {
font-size: 0.8em;
font-weight: 600;
font-variant: small-caps;
opacity: 0.9;
margin-left: -7px;
vertical-align: middle; }
.changelog__details {
align-items: center;
display: flex;
justify-content: center;
position: relative; }
.changelog__details:before {
border-left: 1px solid rgba(122, 122, 122, 0.15);
content: " ";
height: calc(100% + 7px);
left: 37px;
position: absolute;
top: 1px; }
.changelog__image {
margin: 1em 0;
max-width: 65%; }
.changelog__list {
flex: 100% 0 1;
font-size: 1.2em;
font-weight: 200;
line-height: 1.7;
list-style-type: none;
margin: 1em; }
.changelog__list li {
margin-bottom: 0.5em; }
.changelog__list-item--version {
margin: 2em 0 0.5em 0; }
.changelog__scroller {
flex: 100% 0 0;
/* margin: 1.5em 0 0 0; */
max-height: 400px;
overflow-y: auto; }
/* .vscode-dark .changelog__scroller {
border-bottom: 1px solid rgba(255, 255, 255, 0.04); }
.vscode-light .changelog__scroller {
border-bottom: 1px solid rgba(0, 0, 0, 0.05); } */
.changelog__title {
flex: 100% 0 0;
text-align: center; }
.changelog__version {
background-color: yellow; /* var(--vscode-activityBarBadge-background);*/
/* border-bottom: 2px solid #0bb892; */
border-radius: 3px;
/* color: var(--vscode-activityBarBadge-foreground); */
margin: 0 0.25em;
padding: 2px 10px;
text-align: center;
color: black;
border-color: blue;
border-width: 2px;
font-weight: 600;
vertical-align: bottom; }
.command {
font-weight: 600;
padding: 1px 3px; }
.container {
align-items: center;
display: flex;
justify-content: center;
min-height: 100%;
min-width: 100%; }
.content {
margin-top: 1em;
max-width: 1200px;
min-width: 450px;
width: 90%; }
.cta__container {
display: flex;
flex-wrap: wrap;
justify-content: center;
/*margin-bottom: 3em;*/ }
.cta__container p {
margin-top: -1em;
opacity: 0.4; }
.cta__secondary {
margin: 0 1em; }
.section-list {
font-weight: 200;
list-style: disc;
margin: 0 0 2em 2em; }
.section-list li {
margin-bottom: 0.5em; }
.header__blurb {
color: var(--vscode-editor-foreground);
/* flex: 55% 2 1; */
font-size: 1.2em;
font-weight: 200;
margin: 1em 0 1em 1em;
min-width: 345px; }
@media all and (max-width: 880px) {
.header__blurb {
margin: 0 1em; } }
.header__link {
color: var(--vscode-input-foreground);
outline: none;
text-align: center; }
.header__link:hover, .header__link:active, .header__link:focus {
color: var(--vscode-input-foreground);
outline: none; }
.header__logo {
display: flex;
flex-wrap: nowrap; }
.header__subtitle {
color: var(--vscode-input-foreground);
display: block;
font-size: 2em;
font-weight: 100;
margin-top: -0.2em;
white-space: nowrap; }
.icon {
background-color: var(--vscode-input-background);
display: inline-block;
height: 24px;
margin-bottom: -9px;
width: 19px; }
.icon__info {
-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 125"><path fill="none" d="M0 0h100v100H0z"/><path d="M50 21a29 29 0 1 0 29 29 29 29 0 0 0-29-29zm0 55a26 26 0 1 1 26-26 26 26 0 0 1-26 26z"/><path d="M48 45l-1 1v18l1 1h4l1-1V46l-1-1zm0-10l-1 1v4l1 1h4l1-1v-4l-1-1z"/></svg>');
-webkit-mask-repeat: no-repeat;
mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 125"><path fill="none" d="M0 0h100v100H0z"/><path d="M50 21a29 29 0 1 0 29 29 29 29 0 0 0-29-29zm0 55a26 26 0 1 1 26-26 26 26 0 0 1-26 26z"/><path d="M48 45l-1 1v18l1 1h4l1-1V46l-1-1zm0-10l-1 1v4l1 1h4l1-1v-4l-1-1z"/></svg>');
mask-repeat: no-repeat; }
.icon--lg {
height: 36px;
margin-bottom: -16px;
width: 30px; }
.image__logo {
margin: 9px 1em 0 0;
max-height: 64px;
max-width: 64px; }
.image__preview {
border-radius: 8px;
box-shadow: 0px 0px 1px 0px rgba(0, 0, 0, 0.8), 0px 0px 12px 1px rgba(0, 0, 0, 0.5); }
.image__preview--overlay {
left: 0;
position: absolute;
top: 0; }
.list-button {
border: none;
color: var(--vscode-button-foreground);
cursor: pointer;
font-size: 1em;
height: 5em;
margin: 5px 1px;
max-width: 475px;
padding: 12px 10px;
text-align: left;
width: calc(100% - 2px); }
.vscode-light .list-button {
background-color: var(--vscode-editor-background); }
.vscode-dark .list-button {
background-color: var(--vscode-editor-background); }
.vscode-light .list-button:hover, .vscode-light .list-button:focus {
background-color: var(--vscode-editor-background); }
.vscode-dark .list-button:hover, .vscode-dark .list-button:focus {
background-color: var(--vscode-editor-background); }
.list-button:focus {
outline: 0; }
.vscode-light .list-button:focus {
border: 1px solid var(--vscode-editor-background); }
.vscode-dark .list-button:focus {
border: 1px solid var(--vscode-editor-background); }
.list-button__title {
font-size: 1em;
font-weight: 400;
margin: 0;
margin-bottom: .25em;
overflow: hidden;
text-overflow: ellipsis; }
.list-button__detail {
color: var(--vscode-button-foreground);
display: inline-block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
width: 100%; }
.page-header {
margin: 1em 0 2em 0;
position: relative; }
.page-header__title {
font-size: 3em;
margin: 0; }
.page-header__subtitle {
color: var(--vscode-input-foreground);
margin: 0; }
.section__preview {
flex: 30% 1 1;
margin-left: 2em;
min-width: 400px;
position: relative; }
.section__settings {
display: flex;
flex: 100% 1 0;
flex-wrap: wrap;
margin-right: 1em; }
.section__header {
align-items: baseline;
cursor: pointer;
display: flex;
flex: 100% 0 0;
flex-wrap: wrap;
margin-bottom: 2em;
position: relative; }
.section__header:after {
background-color: var(--vscode-editor-background);
content: '';
height: 40px;
-webkit-mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 125"><path d="M50 62a3 3 0 0 1-2-1L26 44a3 3 0 0 1 3-5l21 16 21-16a3 3 0 1 1 3 5L52 61a3 3 0 0 1-2 1z"/></svg>');
-webkit-mask-repeat: no-repeat;
-webkit-mask-size: 32px 40px;
mask-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 125"><path d="M50 62a3 3 0 0 1-2-1L26 44a3 3 0 0 1 3-5l21 16 21-16a3 3 0 1 1 3 5L52 61a3 3 0 0 1-2 1z"/></svg>');
mask-repeat: no-repeat;
mask-size: 32px 40px;
position: absolute;
right: 0;
top: 0;
transition: transform 500ms cubic-bezier(0, 1.5, 1, 1);
width: 32px; }
.section__header.collapsed {
margin-bottom: 0; }
.section__header.collapsed:after {
transform: rotateX(180deg); }
.section__header.collapsed + .section__settings {
display: none; }
.section__title {
flex: 100% 1 0;
margin: 0; }
.section-group__content {
flex: auto 1 1;
min-width: 0;
max-width: 60%; }
.section-group__sidebar {
align-self: flex-start;
margin: 0 0 0 3em;
position: sticky;
top: 0; }
.section-group__sidebar li {
white-space: nowrap; }
@media all and (max-width: 860px) {
.section-group__sidebar--settings {
display: none; } }
.section-group__sidebar--welcome {
margin-right: 3em; }
@media all and (max-width: 560px) {
.section-group__sidebar--welcome {
display: none; } }
.section-group-section p {
font-size: 1.1em;
font-weight: 200;
margin: 1em 0.25em; }
.section-group-section__cols {
display: flex;
flex-wrap: wrap; }
.section-group-section__col {
flex: 45% 1 1;
margin: 0 4px;
min-width: 300px; }
.section-groups {
display: flex;
justify-content: space-around;
margin-bottom: 50%;
margin-top: -1em; }
.settings-group {
flex: 2 1;
margin-bottom: 1em;
min-width: 300px; }
.settings-group__hint--more {
display: block;
margin-left: 34px;
margin-top: 0.5em; }
.settings-group__setting {
align-items: baseline;
display: flex;
flex: 100% 1 1;
flex-wrap: wrap;
margin-bottom: 0.75em; }
.settings-group__setting input[type="checkbox"] {
flex: 16px 0 0;
height: 16px;
margin: 0 0.75em 0 0;
position: relative;
top: 3px;
width: 16px; }
.settings-group__setting label {
flex: auto 0 1;
margin-bottom: 0.75em; }
.settings-group__setting[disabled] label {
color: var(--vscode-input-placeholderForeground);
cursor: default; }
.setting__hint--indent-2 {
margin-left: 5em; }
.setting__hint--indent-4 {
margin-left: 7em; }
.sidebar-group {
margin-top: 0; }
.bold {
font-weight: 600; }
.center {
text-align: center; }
.hidden {
display: none !important; }
.mb-2 {
margin-bottom: 2em !important; }
.ml-1 {
margin-left: 1em; }
.ml-2 {
margin-left: 2em; }
.ml-4 {
margin-left: 4em; }
.non-interactive {
cursor: default !important; }
.nowrap {
flex-wrap: nowrap !important; }
.vscode-dark .light {
display: none;
}
.vscode-light .dark {
display: none;
}

View File

@ -0,0 +1,77 @@
<!--
/*---------------------------------------------------------------------------------------------
* Copyright (c) Eric Amodio & Alessandro Fragnani. All rights reserved.
* Licensed under the MIT License. See License.md in the project root for license information.
*
* Original Author: Eric Amodio @ GitLens
* Modifications by: Alessandro Fragnani
*--------------------------------------------------------------------------------------------*/
-->
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<link href="${cssUrl}" rel="stylesheet"></head>
<body class="preload">
<div class="container">
<div class="content">
<header>
<a style="text-align: center;" title="Learn more about ${extensionDisplayName}" href="${repositoryUrl}">
<img src="${headerLogo}" width="${headerWidth}%" height="${headerHeight}%"/>
</a>
<p class="header__blurb">
${headerMessage}
</p>
</header>
<div class="section-groups">
<div class="section-group__content">
<section id="whats-new" class="changelog">
<h2 class="changelog__title">What's New in <b>${extensionDisplayName} ${extensionVersion}</b></h2>
<div class="changelog__scroller">
<ul class="changelog__list">
${changeLog}
</ul>
</div>
</section>
<h2>Need Help?</h2>
<ul>
<li>
<a href="${repositoryHomepage}">Homepage</a>
</li>
<li>
<a href="${repositoryIssues}">Questions &amp; Issues</a>
</li>
</ul>
</div>
<div class="section-group__sidebar section-group__sidebar--welcome">
<div class="sidebar-group">
<h2>Show Your Support</h2>
<p>
While <b>${extensionDisplayName}</b> is offered for free,
if you find it useful, please consider supporting it.
</p>
${supportChannels}
<ul>
<li><a title="Write a review" href="https://marketplace.visualstudio.com/items?itemName=${publisher}.${extensionName}#review-details">Write a Review</a></li>
<li><a title="Star or fork me on GitHub" href="${repositoryUrl}">Star or Fork me on GitHub</a></li>
${socialMedias}
</ul>
${sponsors}
</div>
<div class="sidebar-group">
</div>
</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -0,0 +1,12 @@
# These are supported funding model platforms
github: [batisteo]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: batisteo
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View File

@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
<Metadata>
<Identity Language="en-US" Id="vscode-django" Version="1.10.0" Publisher="batisteo" />
<DisplayName>Django</DisplayName>
<Description xml:space="preserve">Beautiful syntax and scoped snippets for perfectionists with deadlines</Description>
<Tags>python,django,web,snippet,django-html,Django HTML,django-txt,Django txt,__web_extension</Tags>
<Categories>Programming Languages,Snippets</Categories>
<GalleryFlags>Public</GalleryFlags>
<Properties>
<Property Id="Microsoft.VisualStudio.Code.Engine" Value="^1.49.0" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionDependencies" Value="" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionPack" Value="" />
<Property Id="Microsoft.VisualStudio.Code.ExtensionKind" Value="workspace,web" />
<Property Id="Microsoft.VisualStudio.Code.LocalizedLanguages" Value="" />
<Property Id="Microsoft.VisualStudio.Services.Links.Source" Value="https://github.com/vscode-django/vscode-django.git" />
<Property Id="Microsoft.VisualStudio.Services.Links.Getstarted" Value="https://github.com/vscode-django/vscode-django.git" />
<Property Id="Microsoft.VisualStudio.Services.Links.GitHub" Value="https://github.com/vscode-django/vscode-django.git" />
<Property Id="Microsoft.VisualStudio.Services.Links.Support" Value="https://github.com/vscode-django/vscode-django/issues" />
<Property Id="Microsoft.VisualStudio.Services.Links.Learn" Value="https://github.com/vscode-django/vscode-django" />
<Property Id="Microsoft.VisualStudio.Services.Branding.Color" Value="#0c4b33" />
<Property Id="Microsoft.VisualStudio.Services.Branding.Theme" Value="dark" />
<Property Id="Microsoft.VisualStudio.Services.GitHubFlavoredMarkdown" Value="true" />
</Properties>
<License>extension/LICENSE.txt</License>
<Icon>extension/images/vscode-django-icon.png</Icon>
</Metadata>
<Installation>
<InstallationTarget Id="Microsoft.VisualStudio.Code"/>
</Installation>
<Dependencies/>
<Assets>
<Asset Type="Microsoft.VisualStudio.Code.Manifest" Path="extension/package.json" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Content.Details" Path="extension/README.md" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Content.Changelog" Path="extension/CHANGELOG.md" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Content.License" Path="extension/LICENSE.txt" Addressable="true" />
<Asset Type="Microsoft.VisualStudio.Services.Icons.Default" Path="extension/images/vscode-django-icon.png" Addressable="true" />
</Assets>
</PackageManifest>

View File

@ -0,0 +1,7 @@
# Change Log
All notable changes to the "django" extension will be documented in this file.
Check [Keep a Changelog](http://keepachangelog.com/) for recommendations on how to structure this file.
## [Unreleased]
- Initial release

View File

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2021 vscode-django contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.

View File

@ -0,0 +1,118 @@
# Django extension for Visual Studio Code
> Beautiful syntax and scoped snippets for perfectionists with deadlines
![Syntax with Gruvbox](https://github.com/vscode-django/vscode-django/raw/HEAD/images/vscode-django-syntax-gruvbox.png)
## Features
### Go to definition in templates
Ctrl-click or press F12 on the template path in a `include` or `extends` tag
to jump to this template
### Snippets
- Support for selected text (when inserting snippet from the menu)
- Support for copied text
- No unnecessary new lines
### Improved syntax
- Adds the filetype `django-html`
- Adds the filetype `django-txt` for email templates.
- Better syntax with more operators and default keywords:
- Known default tags and filters
- Known templatetags namespace from contrib in the {% load %} tag
- Known keywords in tags, like: `as`, `asvar`, `with`, `trimmed`
- Syntax highlighting everywhere in your HTML document:
- In the HTML tag itself"
- In the id, class or any attribute
- In inline CSS or Javascript code
## Tricks
### Gettext and internationalization
Dealing with `django.po` files?
Consider installing the [Gettext extension](https://marketplace.visualstudio.com/items?itemName=mrorz.language-gettext) by MrOrz.
### Emmet
Add the following item to the **Emmet: Include Languages** settings:
| Item | Value |
| ------------- | ------ |
| `django-html` | `html` |
## Sponsors
<p>
<a title="Try Duckly for free" href="https://bit.ly/3JdaN3M">
<img src="https://storage.googleapis.com/gitduck/img/duckly-sponsor-vsc-opt.png" height="50">
</a><br>
Easy pair programming with any IDE. Duckly enables you to talk, share your code
in real-time, server and terminal with people using different IDEs.
<a href="https://bit.ly/3JdaN3M">Try it out for free</a>
</p>
<p>
<a title="Try CodeStream" href="https://sponsorlink.codestream.com/?utm_source=vscmarket&amp;utm_campaign=batisteo_django&amp;utm_medium=banner">
<img src="https://alt-images.codestream.com/codestream_logo_batisteo_django.png" height="50">
</a><br>
Manage GitHub PRs & GitLab MRs and conduct code reviews in your IDE with
full source-tree context. Comment on any line, not just the diffs.
Use jump-to-definition, your favorite keybindings, and code intelligence
with more of your workflow.
<a title="Try CodeStream" href="https://sponsorlink.codestream.com/?utm_source=vscmarket&amp;utm_campaign=batisteo_django&amp;utm_medium=banner">Learn More</a>
</p>
[![Paypal](https://img.shields.io/static/v1?label=Paypal&message=€66&logo=Paypal&color=009cde&link=https://www.paypal.com/paypalme/batisteo/5)](https://www.paypal.com/paypalme/batisteo/5)
[![Github Sponsor](https://img.shields.io/static/v1?label=Sponsor&message=6%C2%A0%E2%9D%A4&logo=GitHub&color=ea4aaa&link=https://github.com/sponsor/batisteo)](https://github.com/sponsor/batisteo)
## Contributing
### Issues
Something odd? New feature request?
Please [create an issue on Github](https://github.com/vscode-django/vscode-django/issues/new).
### Setup
```bash
git clone https://github.com/vscode-django/vscode-django
cd vscode-django
npm install
code .
```
Its better to have [TSlint](https://marketplace.visualstudio.com/items?itemName=eg2.tslint) installed.
### Launching the extension debugger
Make sure you have this snippet in `.vscode/launch.json`:
```javascript
{
"version": "0.2.0",
"configurations": [
{
"name": "Extension",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceFolder}"
]
}
]
}
```
Press <kbd>F5</kbd> or click on Debug then Start (▶️) to launch the extension host window.
Hack around
Press <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>F5</kbd> or 🔄 to reload.

View File

@ -0,0 +1,47 @@
[[snippets]]
prefix = "class_modeladmin"
body = """
@admin.register($1)
class $1Admin(admin.ModelAdmin):
$0
"""
detail = "class ModelAdmin(admin.ModelAdmin)"
description = """```python
@admin.register(Model)
class ModelAdmin(admin.ModelAdmin):
```
"""
[[snippets]]
prefix = "class_stackedinline"
body = """
class ${1}Inline(admin.StackedInline):
model = $1
${2|extra,min_num,max_num,can_delete,show_change_link,verbose_name,verbose_name_plural,fk_name,template,formset|}
"""
description = "Stacked Inline"
[[snippets]]
prefix = "class_tabularinline"
body = """
class $1Inline(admin.TabularInline):
model = $1
${2|extra,min_num,max_num,can_delete,show_change_link,verbose_name,verbose_name_plural,fk_name,template,formset|}
"""
description = "Tabular Inline"
[[snippets]]
prefix = "class_simplelistfilter"
body = """
class $1Filter(admin.SimpleListFilter):
title = _("${2:$1}")
parameter_name = "$3"
def lookups(self, request, model_admin):
return ($0)
def queryset(self, request, queryset):
return queryset.filter($3=self.value())
"""
description = "Admin SimpleList Filter"

View File

@ -0,0 +1,18 @@
[[snippets]]
prefix = "import_admin"
body = "from django.contrib import admin"
detail = "from * import admin"
description = """```python
from django.contrib import admin
```
"""
[[snippets]]
prefix = "import_adminsite"
body = "from django.contrib.admin import AdminSite"
detail = "from * import AdminSite"
description = """```python
from django.contrib import AdminSite
```
"""

View File

@ -0,0 +1,47 @@
[[snippets]]
prefix = "admin_param"
body = "${1|list_display,list_display_links,list_filter,list_select_related,list_per_page,list_max_show_all,list_editable,search_fields,date_hierarchy,save_as,save_as_continue,save_on_top,paginator,preserve_filters,inlines,add_form_template,change_form_template,change_list_template,delete_confirmation_template,delete_selected_confirmation_template,object_history_template,popup_response_template,actions,action_form,actions_on_top,actions_on_bottom,actions_selection_counter,checks_class|} = "
detail = "ModelAdmin parameters"
description = """```python
list_display = ("",)
search_fields = ("",)
date_hierarchy = ("",)
```
"""
[[snippets]]
prefix = "inline_param"
body = "${1|extra,min_num,max_num,can_delete,show_change_link,verbose_name,verbose_name_plural,fk_name,template,formset|} = "
detail = "Inline parameters"
description = """```python
extra = 1
min_num = 3
max_num = 20
```
"""
[[snippets]]
prefix = "fieldsets"
body = """
fieldsets = (
(None, {
"fields": (
$1
),
}),
)
"""
detail = "fieldsets = ((None, {}))"
description = """```python
fieldsets = (
(None, {
"fields": (
$1
),
}),
)
```
"""

View File

@ -0,0 +1,21 @@
[[snippets]]
prefix = "Form"
body = """
class $1Form(forms.Form):
$0
"""
detail = "class Form(forms.Form)"
description = ""
[[snippets]]
prefix = "ModelForm"
body = """
class $1Form(forms.ModelForm):
$0
class Meta:
model = $1
fields = ("$2",$3)
"""
detail = "class $1Form(forms.ModelForm)"
description = ""

View File

@ -0,0 +1,50 @@
[[snippets]]
prefix = "simplearray_field"
body = "SimpleArrayField()"
description = "postgres.forms.SimpleArrayField()"
[[snippets]]
prefix = "splitarray_field"
body = "SplitArrayField()"
description = "postgres.forms.SplitArrayField()"
[[snippets]]
prefix = "hstore_field"
body = "HStoreField()"
description = "postgres.forms.HStoreField()"
[[snippets]]
prefix = "json_field"
body = "JSONField()"
description = "postgres.forms.JSONField()"
[[snippets]]
prefix = "intrange_field"
body = "IntegerRangeField()"
description = "postgres.forms.IntegerRangeField()"
[[snippets]]
prefix = "floatrange_field"
body = "FloatRangeField()"
description = "postgres.forms.FloatRangeField()"
[[snippets]]
prefix = "datetimerange_field"
body = "DateTimeRangeField()"
description = "postgres.forms.DateTimeRangeField()"
[[snippets]]
prefix = "daterange_field"
body = "DateRangeField()"
description = "postgres.forms.DateRangeField()"
[[snippets]]
prefix = "range_widget"
body = "RangeWidget(${1:base_widget=})"
detail = "postgres.forms.RangeWidget()"
description = """```python
class RangeWidget(base_widget, attrs=None)
```
"""

View File

@ -0,0 +1,150 @@
[[snippets]]
prefix = "bool_field"
body = "forms.BooleanField($1, required=${2:False})"
detail = "forms.BooleanField()"
[[snippets]]
prefix = "char_field"
body = "forms.CharField($1,${2: max_length=$4,} required=${5:False})"
detail = "forms.CharField()"
[[snippets]]
prefix = "choice_field"
body = "forms.ChoiceField($1, choices=[${2:CHOICES}], required=${4:False})"
detail = "forms.ChoiceField()"
[[snippets]]
prefix = "combo_field"
body = "forms.ComboField($1)"
detail = "forms.ComboField()"
[[snippets]]
prefix = "date_field"
body = "forms.DateField($1, required=${2:False})"
detail = "forms.DateField()"
[[snippets]]
prefix = "datetime_field"
body = "forms.DateTimeField($1, required=${2:False})"
detail = "forms.DateTimeField()"
[[snippets]]
prefix = "decimal_field"
body = "forms.DecimalField($1, required=${2:False})"
detail = "forms.DecimalField()"
[[snippets]]
prefix = "duration_field"
body = "forms.DurationField($1, required=${2:False})"
detail = "forms.DurationField()"
[[snippets]]
prefix = "email_field"
body = "forms.EmailField($1, required=${2:False})"
detail = "forms.EmailField()"
[[snippets]]
prefix = "file_field"
body = "forms.FileField($1,${2: max_length=$4,} required=${5:False})"
detail = "forms.FileField()"
[[snippets]]
prefix = "filepath_field"
body = "forms.FilePathField($1, path=${2:/absolute_path/}, required=${4:False})"
detail = "forms.FilePathField()"
[[snippets]]
prefix = "float_field"
body = "forms.FloatField($1, required=${2:False})"
detail = "forms.FloatField()"
[[snippets]]
prefix = "ip_field"
body = "forms.GenericIPAddressField($1)"
detail = "forms.GenericIPAddressField()"
[[snippets]]
prefix = "img_field"
body = "forms.ImageField($1, required=${2:False})"
detail = "forms.ImageField()"
[[snippets]]
prefix = "int_field"
body = "forms.IntegerField($1, required=${2:False})"
detail = "forms.IntegerField()"
[[snippets]]
prefix = "json_field"
body = "forms.JSONField($1)"
detail = "forms.JSONField()"
[[snippets]]
prefix = "mochoice_field"
body = "forms.ModelChoiceField($1)"
detail = "forms.ModelChoiceField()"
[[snippets]]
prefix = "momuchoice_field"
body = "forms.ModelMultipleChoiceField($1)"
detail = "forms.ModelMultipleChoiceField()"
[[snippets]]
prefix = "muval_field"
body = "forms.MultiValueField($1)"
detail = "forms.MultiValueField()"
[[snippets]]
prefix = "muchoice_field"
body = "forms.MultipleChoiceField($1, choices=[${2:CHOICES}], required=${4:False})"
detail = "forms.MultipleChoiceField()"
[[snippets]]
prefix = "typedmuchoice_field"
body = "forms.TypedMultipleChoiceField($1, choices=[${2:CHOICES}], coerce=${4:TYPE}, required=${5:False})"
detail = "forms.TypedMultipleChoiceField()"
[[snippets]]
prefix = "nullbool_field"
body = "forms.NullBooleanField($1, required=${2:False})"
detail = "forms.NullBooleanField()"
[[snippets]]
prefix = "regex_field"
body = "forms.RegexField($1, regex=${2:REGEX}, required=${4:False})"
detail = "forms.RegexField()"
[[snippets]]
prefix = "slug_field"
body = "forms.SlugField($1, allow_unicode=${2:False}, required=${4:False})"
detail = "forms.SlugField()"
[[snippets]]
prefix = "sdatetime_field"
body = "forms.SplitDateTimeField($1)"
detail = "forms.SplitDateTimeField()"
[[snippets]]
prefix = "time_field"
body = "forms.TimeField($1, required=${2:False})"
detail = "forms.TimeField()"
[[snippets]]
prefix = "tchoice_field"
body = "forms.TypedChoiceField($1, required=${2:False})"
detail = "forms.TypedChoiceField()"
[[snippets]]
prefix = "tmuchoice_field"
body = "forms.TypedMultipleChoiceField($1)"
detail = "forms.TypedMultipleChoiceField()"
[[snippets]]
prefix = "url_field"
body = "forms.URLField($1, required=${2:False})"
detail = "forms.URLField()"
[[snippets]]
prefix = "uuid_field"
body = "forms.UUIDField($1, required=${2:False})"
detail = "forms.UUIDField()"

View File

@ -0,0 +1,17 @@
[[snippets]]
prefix = "from_forms_import"
body = "from .forms import $1"
detail = "from .forms import ModelForm"
description = "Relative import of app form"
[[snippets]]
prefix = "import_forms"
body = "from django import forms"
detail = "from django import forms"
description = "Imports the Django models module"
[[snippets]]
prefix = "import_postgres_fields"
body = "from django.contrib.postgres.forms import ${1|SimpleArrayField,SplitArrayField,HStoreField,JSONField,IntegerRangeField,FloatRangeField,DateTimeRangeField,DateRangeField|}"
description = "PostgreSQL specific forms fields"

View File

@ -0,0 +1,22 @@
[[snippets]]
prefix = "clean_data"
body = """
clean_${1:field}(self):
${2:data} = self.cleaned_data["${1:field}"]
$0
return ${2:data}
"""
detail = ""
description = ""
[[snippets]]
prefix = "clean_data_get"
body = """
clean_${1:field}(self):
${2:data} = self.cleaned_data.get("${1:field}")
$0
return ${2:data}
"""
detail = ""
description = ""

View File

@ -0,0 +1,41 @@
[[snippets]]
prefix = "Model"
detail = "class Model(models.Model)"
body = """
class $1(models.Model):
$0
class Meta:
verbose_name = _("${1/(.+)/${1:/downcase}/}")
verbose_name_plural = _("${1/(.+)/${1:/downcase}/}${2:s}")
def __str__(self):
return self.${3:name}
def get_absolute_url(self):
return reverse("${1/(.+)/${1:/downcase}/}${4:_detail}", kwargs={"${5|pk,slug|}": self.$5})
"""
[[snippets]]
prefix = "modelmixin"
detail = "class Mixin(models.Model)"
body = """
class $1Mixin(models.Model):
$0
class Meta:
abstract = True
"""
description = ""
[[snippets]]
prefix = "queryset"
detail = "class QuerySet(models.QuerySet)"
body = """
class $1QuerySet(models.QuerySet):
pass
"""
description = ""

Some files were not shown because too many files have changed in this diff Show More