From 823806516332ebe37c312e4171033df0d140a6ac Mon Sep 17 00:00:00 2001 From: Swagatam Mitra Date: Mon, 3 Jul 2017 11:33:44 +0530 Subject: [PATCH] Merge master into release for 1.10 release (#13503) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add a tab with default extensions to extension manager * implement getDefaultExtensionPath function * enable and disable default extensions through a preference * use the preference when attempting to load an extension * do not allow disabling/enabling of themes * better way to handle themes * Upgraded version to 1.10 * Now search history is stored in preferences and user can go through the search history using key up and key down in search bar * ALF Automation (#13179) * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Fixed a minor issue * Addresses issue where style and script tags (and their contents) did not appear as collapsible in html mixed mode. * Add no-unsafe-negation rule and upgrade grunt-eslint to 19.0.0 * Added a check of Untitled doc in _getNormalizedFilename and _getDenormalizedFilename * ALF Automation (#13204) * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Replaced .border-radius with border-radius css in brackets_patterns_override.less This fixes #13227 * Addressed review comments and also added tests * Add jsx language ID to supported languages for JavaScript code hints * Style code (cleanup) * Add media queries to display search and filter below tabs * Change padding to be consistent with other elements' padding * Reset margin of filter dropdown and add top and bottom padding to div container * Prevent media queries from overlapping * Wrap search elements in a container & add responsiveness using flex * Use flex-item mixin * Move custom search bar width to media query * Add GitHub Brackets OAuth token to romove CLA pull request limit * Adding rest filter expression * Updated webplatform links in css.json from https://docs.webplatform.org/wiki/ to http://www.webplatform.org/docs/ (#13266) * Addresses #13264 where setting `saveFoldStates` preference to false caused the code folding extension to stop working. * CSS code hints in 'style' attribute value context * Append auth token only when available in travis environment (#13272) * Append auth token only when available in travis environment * Remove unused var * #7276 Live Preview highlight customization (#12949) * Live Preview visual customization (colors of highlight can be customized via user preferences) * PR improvements Remove trailing spaces, use Object.assign instead of manually iterating over remoteHighlight properties and remove quotes from object properties in default configuration of remoteHighlight * Allow to animate transform property via transition * Remove old vendor prefixes from transitionValues in RemoteFunctions.js * updateConfig RemoteFunctions.js method Enable injecting new config into remoteFunction when user changed preferences, without the need to restart the live preview session. * Show margin and paddings in live preview. * Do not show element if it has width or height equal to 0. A little bit of clean up * PR improvements calculateSize is renamed to sum. (better naming conventions are welcome). sum now takes an array as argument. It returns sum of parsed array elements, suffixed with „px”. * Redraw via requestAnimationFrame if element has transition / animation on it. * PR improvements. Set experimental to false by default, if no config specified (caused the test to crash). Minor code quality improvements, removed duplicated variables. * Fix ESLINT errors. * drawMarginRect and drawPaddingRect functions now calculate the require size of highlight elements instead of manaul calculations on each element. The code is shorter and more readable. Also, it’ll be easier to move drawing functions into separate file if necessary. * Temporary workaround for transform issue. * Formatting improvements * Fix font family name preference (#13279) * Update grunt-contrib-watch to 1.0.0 and clean a bit the task (#13215) * Scrapped QuickDocs data for css and html from MDN to css.json and html.json (#13268) * Scrapped summary and values of css properties from MDN to css.json * Migrated mozilla's extension of MDNDocs to Brackets with some minor changes * Removed redundant file * Fixed faling tests, modified a test to test HTML docs * Renamed all WebPlatformDocs strings to MDNDocs * Addressed review comments * Removed the usage of array for supported languages * Pre-release build for 1.10 (#13283) * Fix #13274 - make Brackets margin/padding highlight work like Chrome devtools one * Migrated missing Quick Docs Tests from PR #10036 (#13285) * Add inputStyle preference (#13216) * Add indentBlockComment preference. Support indent block comments on line comment command * Whitespace removal * AtRules, Pseudo elements and Pseudo selector code hints * Revert "Fix #13274 - make Brackets margin/padding remoteHighlight work like Chrome one" * Fix highlighting elements with border and transform-origin property. * Adress review comments and restructure using different extensions * Added Search History UI similar to Quick Open * Minor Change * Fixed some issues * Check for useTabChar and correct a comment. Add some tests * Handle multiline attribute value and add UNIT test for element styles * Search bar is visible after pressing arrow up and down keys * Added JSDocs and updated tests * Zero results are not highlighted red now * Added dropdown icon to toggle search History * fix the extension-manager-min-width variable * Handle SCSS mode seperately * Use a single preference * Add test for block comments * Correct a test * Check also if it is a line comment command * Addresses #13282 which caused performance issues when navigating between large folded files. A check is now performed to ensure we do not attempt to restore line folds for editors whose folds have already been initialised. * removed unused variable * Removed filtering in search dropdown * Return 0 from _firstNotWs * Changed url to access Japanese translated page (#13321) * Update Codemirror to version 5.25.2 * Addressed review comments * Removed Lint error * add: flow-root as value for display (#13334) * Changed Global.js to enable Native Menus for Linux * Adding unit tests for the newly added extensions * Fix for eslint errors * Extract pseudo context validation as a function * Enabled tests for Native Menus in Linux * Editor command handlers test (#13337) * EditorCommandHandlers-test: use testToggleLine everywhere * EditorCommandHandlers-test: use testToggleBlock everywhere * Now initial query is also added to searchHistory queue * Update CSS Code Hints Properties Add properties – `all` – `caret-color` – `hanging-punctuation` – `scroll-behavior` – `tab-size` – `user-select`. Add values: – `clone` and `slice` for `box-decoration-break` – `contents` for `display` Remove deprecated `padding-box` from `box-sizing`. * Update CSS Code Hints pseudo-selectors Add pseudo-classes – `:default` – `:dir()` – `:focus-within` – `:indeterminate` – `:matches()` – `:placeholder-shown`. Add pseudo-element `::placeholder`. Fix alphabetical order, space around `:`. * Update more Add – `grid-template` – `isolation` – `mix-blend-mode` Add `subgrid` for `display` Reorder `background-blend-mode` * Added test * Fix :matches(), add :fullscreen * Added check for length of dependencies also in npm-installer.js * Translated English to Japanese Comments (#13327) * Change parseInt to parseFloat everywhere where calculating box-model visualization to prevent glitches (#13353) * Fixed Project Manager failing tests * Brackets 1.10 Pre-release 2 * Fix box model regression (transform) (#13357) * Various additions and changes to Swedish interface strings (#13404) * Mixed changes and additions to Swedish interface strings * One addition and one fix * More additions and changes * Correct one word in sv/strings.js * Externalize Live preview hightlight settings string * ALF Automation (#13293) * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Fix root strings (#13435) * ALF Automation (#13434) * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Change in UUID fetching for first launches (#13419) * Fixing Mac compilation errors * Removing console message * Fixing linter errors in this file. * Add option for first highlight index in Quick Open and Search History (#13444) * Fixed #13437 * minor change * Passed first highlight index as paramater to QuickSearchField * Added jsdocs * Changed WebPlatform License to MDN License and respective strings * Use the correct border color in multifile Replace in Files bar with dark theme * Updated by ALF automation. (#13454) * In writeJSON (grunt), use CRLF on Windows (#13458) * Fixes translation error in Simplified Chinese Fixes adobe/brackets/issues/13416 * Enable no-redeclare to eslint (#13452) * Added strings for translation for 1.10 Release * minor change * Add navigation strings. * Updated some strings * ALF Automation (#13471) * Updated by ALF automation. * Updated by ALF automation. * Added some more translations * Saurabh95/encoding support (#13412) * Now encoding is passed as parameter on file read and it is used by writefile in order to preserve encoding * UI wiring * Code Cleanup * Fixed failing tests * Added warning Dialog while changing encoding * Added some Linux specific changes * Fixed some linting errors * Reverted last commit * Minor changes * Now selected encoding is stored in state * Fixed lint error * Added some more encodings * Added some more encodings * Fixed lint errors * Removed duplicate encodings * Fixed failing tests * Used externalized strings * Addressed review comments * Added supported encodings file * Addressed review comments * Addressed review comments * More Robust UUID Handling (#13476) * More efficient UUID Handling: We need to backing up existing uuid so that we can accurately get the new user count, as the uuid is changed now and will effect the existing users as well. Also added robust checking for shell API availability before calling the shell API and if not present handling olderUUID in a different way. * Addressed review comments. * Now BOM is preserved for UTF-8 files (#13477) * Now BOM is preserved for UTF-8 files * Added error strings for failure in encode/decode and utf-16 * Removed utf-16 from encodings list * Addressed review comments * fix JP translation in comment tags (#13363) * New File and New Folder execute in project root if there's no selection (#12752) * New File and New Folder execute in project root if there's no selection * Add ProjectManager.getSelectedFileTreeItem * Add function to get file tree context instead * Polish translation update for brackets 1.10 (#13398) * Polish translation update for brackets 1.10 * Corrected some strings in pl translation * Added basic translation for core preferences section * Transform some polish strings in core preferences section * German translation (#13436) * zh-cn (#13473) * Update urls.js * Create Getting Started * Delete Getting Started * Create index.html * Create main.css * Add files via upload quick-edit.png * Problems panel: add an icon per problem to tell which type it is (#13430) * Sequential navigation in edit history (#13418) * First commit - sequential navigation in edit history * Fix lint errors * Handle undefined history entries * Added comments and some additional edge case handling * Update code review comments * Put a max navigation frame capture limit and control overflow once reached. Fix all bugs found in unit testing. * Fix indentation issues * Change spaces to tabs for indentation * Fix mixed tabs and spaces * Convert spaces to tab * resolve mixed tabs and spaces * Initialize variables * Handle external file changes and discard stale frames * Additional checks to validate the navigation frames * Address review comments * pre release build 3 * Fixed JS lint error (#13489) * Fix NavigationProvider throwing errors when doc.file is missing. Fixes #13491 (#13492) Signed-off-by: petetnt * ALF Automation (#13474) * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Updated by ALF automation. * Adding extra check to handle null mrof list entries (#13495) * After changing encoding of a dirty file if user cancels the popup then encoding of file should not be changed (#13497) * After changing encoding of a dirty file if user cancels the popup then encoding of file should not be changed * Removed popup for dirty file encoding change * Now doc is reloaded if the path of the file being saved is same --- .eslintrc.js | 2 + Gruntfile.js | 19 +- build.json | 6 +- npm-shrinkwrap.json | 428 +- package.json | 10 +- samples/ja/Getting Started/index.html | 14 +- samples/zh-cn/Getting Started/index.html | 193 + samples/zh-cn/Getting Started/main.css | 60 + .../screenshots/quick-edit.png | Bin 0 -> 271776 bytes src/LiveDevelopment/Agents/RemoteAgent.js | 2 +- src/LiveDevelopment/Agents/RemoteFunctions.js | 238 +- src/LiveDevelopment/main.js | 35 + src/config.json | 8 +- src/document/Document.js | 19 + src/document/DocumentCommandHandlers.js | 34 +- src/document/DocumentManager.js | 15 +- src/editor/Editor.js | 35 +- src/editor/EditorCommandHandlers.js | 79 +- src/editor/EditorStatusBar.js | 147 +- src/extensibility/ExtensionManagerDialog.js | 1 + src/extensibility/ExtensionManagerView.js | 8 +- .../ExtensionManagerViewModel.js | 66 + src/extensibility/Package.js | 56 +- src/extensibility/node/npm-installer.js | 2 +- .../CSSAtRuleCodeHints/AtRulesDef.json | 10 + .../default/CSSAtRuleCodeHints/main.js | 118 + .../default/CSSAtRuleCodeHints/unittests.js | 236 + .../default/CSSCodeHints/CSSProperties.json | 17 +- src/extensions/default/CSSCodeHints/main.js | 2 +- .../default/CSSCodeHints/unittests.js | 101 + .../PseudoSelectors.json | 52 + .../default/CSSPseudoSelectorHints/main.js | 181 + .../CSSPseudoSelectorHints/unittests.js | 219 + .../CodeFolding/foldhelpers/foldcode.js | 2 +- .../CodeFolding/foldhelpers/foldgutter.js | 6 +- src/extensions/default/CodeFolding/main.js | 14 +- .../CodeFolding/unittest-files/test.html | 16 +- .../default/CodeFolding/unittests.js | 18 +- .../default/HealthData/HealthDataManager.js | 92 +- .../default/JavaScriptCodeHints/HintUtils.js | 3 +- .../default/LESSSupport/unittests.js | 6 + .../InlineDocsViewer.html | 2 +- .../InlineDocsViewer.js | 17 +- .../{WebPlatformDocs => MDNDocs}/LICENSE | 0 .../MDNDocs.less} | 10 + src/extensions/default/MDNDocs/README.md | 3 + src/extensions/default/MDNDocs/css.json | 8322 +++++++++++++++++ src/extensions/default/MDNDocs/html.json | 550 ++ src/extensions/default/MDNDocs/logo.svg | 186 + .../{WebPlatformDocs => MDNDocs}/main.js | 102 +- .../unittest-files/test1.css | 0 .../default/MDNDocs/unittest-files/test1.html | 17 + .../{WebPlatformDocs => MDNDocs}/unittests.js | 58 +- .../NavigationProvider.js | 553 ++ .../NavigationAndHistory/keyboard.json | 10 + .../default/NavigationAndHistory/main.js | 20 +- .../default/WebPlatformDocs/README.md | 5 - .../default/WebPlatformDocs/css.json | 1 - .../default/WebPlatformDocs/logo.svg | 70 - .../WebPlatformDocs/unittest-files/test1.html | 12 - src/file/FileUtils.js | 8 +- src/filesystem/File.js | 29 +- src/filesystem/FileSystemError.js | 5 +- .../impls/appshell/AppshellFileSystem.js | 15 +- src/htmlContent/about-dialog.html | 2 +- src/htmlContent/extension-manager-dialog.html | 22 +- .../extension-manager-view-item.html | 2 +- src/htmlContent/findreplace-bar.html | 2 +- src/htmlContent/problems-panel-table.html | 5 +- src/language/CSSUtils.js | 57 +- src/language/HTMLUtils.js | 19 +- src/nls/bg/strings.js | 4 +- src/nls/bg/urls.js | 2 +- src/nls/cs/strings.js | 4 +- src/nls/cs/urls.js | 2 +- src/nls/da/strings.js | 4 +- src/nls/de/strings.js | 33 +- src/nls/de/urls.js | 2 +- src/nls/el/strings.js | 4 +- src/nls/el/urls.js | 2 +- src/nls/es/strings.js | 4 +- src/nls/es/urls.js | 2 +- src/nls/fa-ir/strings.js | 4 +- src/nls/fa-ir/urls.js | 2 +- src/nls/fi/strings.js | 4 +- src/nls/fi/urls.js | 2 +- src/nls/fr/strings.js | 35 +- src/nls/fr/urls.js | 2 +- src/nls/gl/strings.js | 4 +- src/nls/hr/strings.js | 4 +- src/nls/hr/urls.js | 2 +- src/nls/hu/strings.js | 4 +- src/nls/id/strings.js | 4 +- src/nls/id/urls.js | 2 +- src/nls/it/strings.js | 4 +- src/nls/it/urls.js | 2 +- src/nls/ja/strings.js | 19 +- src/nls/ja/urls.js | 2 +- src/nls/ko/strings.js | 4 +- src/nls/ko/urls.js | 2 +- src/nls/lv/strings.js | 4 +- src/nls/nb/strings.js | 4 +- src/nls/nb/urls.js | 2 +- src/nls/nl/strings.js | 4 +- src/nls/nl/urls.js | 2 +- src/nls/pl/strings.js | 245 +- src/nls/pl/urls.js | 2 +- src/nls/pt-br/strings.js | 4 +- src/nls/ro/strings.js | 4 +- src/nls/root/strings.js | 19 +- src/nls/root/urls.js | 2 +- src/nls/ru/strings.js | 4 +- src/nls/ru/urls.js | 2 +- src/nls/sk/strings.js | 4 +- src/nls/sr/strings.js | 4 +- src/nls/sv/strings.js | 86 +- src/nls/sv/urls.js | 2 +- src/nls/tr/urls.js | 2 +- src/nls/uk/strings.js | 4 +- src/nls/zh-cn/strings.js | 8 +- src/nls/zh-cn/urls.js | 3 +- src/nls/zh-tw/strings.js | 4 +- src/nls/zh-tw/urls.js | 2 +- src/npm-shrinkwrap.json | 6 +- src/package.json | 2 +- src/project/ProjectManager.js | 14 +- src/search/FindBar.js | 89 + src/search/QuickOpen.js | 1 + src/search/QuickSearchField.js | 62 +- src/styles/brackets.less | 47 +- src/styles/brackets_patterns_override.less | 100 +- src/styles/brackets_variables.less | 25 +- src/styles/images/dropdown-icon.svg | 17 + src/supported-encodings.json | 45 + src/utils/ExtensionLoader.js | 14 +- src/utils/ExtensionUtils.js | 29 +- src/utils/Global.js | 2 +- src/view/ViewCommandHandlers.js | 2 +- src/widgets/StatusBar.html | 1 + tasks/build.js | 16 +- tasks/lib/common.js | 12 +- tasks/npm-install.js | 1 - test/spec/EditorCommandHandlers-test.js | 682 +- test/spec/FileSystem-test.js | 3 +- test/spec/FindInFiles-test.js | 81 + test/spec/MockFileSystemImpl.js | 2 +- test/spec/NativeMenu-test.js | 4 +- test/spec/ProjectManager-test.js | 2 +- test/spec/QuickSearchField-test.js | 3 +- 149 files changed, 13438 insertions(+), 1080 deletions(-) create mode 100644 samples/zh-cn/Getting Started/index.html create mode 100644 samples/zh-cn/Getting Started/main.css create mode 100644 samples/zh-cn/Getting Started/screenshots/quick-edit.png create mode 100644 src/extensions/default/CSSAtRuleCodeHints/AtRulesDef.json create mode 100644 src/extensions/default/CSSAtRuleCodeHints/main.js create mode 100644 src/extensions/default/CSSAtRuleCodeHints/unittests.js create mode 100644 src/extensions/default/CSSPseudoSelectorHints/PseudoSelectors.json create mode 100644 src/extensions/default/CSSPseudoSelectorHints/main.js create mode 100644 src/extensions/default/CSSPseudoSelectorHints/unittests.js create mode 100644 src/extensions/default/LESSSupport/unittests.js rename src/extensions/default/{WebPlatformDocs => MDNDocs}/InlineDocsViewer.html (78%) rename src/extensions/default/{WebPlatformDocs => MDNDocs}/InlineDocsViewer.js (93%) rename src/extensions/default/{WebPlatformDocs => MDNDocs}/LICENSE (100%) rename src/extensions/default/{WebPlatformDocs/WebPlatformDocs.less => MDNDocs/MDNDocs.less} (97%) create mode 100644 src/extensions/default/MDNDocs/README.md create mode 100644 src/extensions/default/MDNDocs/css.json create mode 100644 src/extensions/default/MDNDocs/html.json create mode 100644 src/extensions/default/MDNDocs/logo.svg rename src/extensions/default/{WebPlatformDocs => MDNDocs}/main.js (54%) rename src/extensions/default/{WebPlatformDocs => MDNDocs}/unittest-files/test1.css (100%) create mode 100644 src/extensions/default/MDNDocs/unittest-files/test1.html rename src/extensions/default/{WebPlatformDocs => MDNDocs}/unittests.js (75%) create mode 100644 src/extensions/default/NavigationAndHistory/NavigationProvider.js delete mode 100644 src/extensions/default/WebPlatformDocs/README.md delete mode 100644 src/extensions/default/WebPlatformDocs/css.json delete mode 100644 src/extensions/default/WebPlatformDocs/logo.svg delete mode 100644 src/extensions/default/WebPlatformDocs/unittest-files/test1.html create mode 100644 src/styles/images/dropdown-icon.svg create mode 100644 src/supported-encodings.json diff --git a/.eslintrc.js b/.eslintrc.js index 3663e2f317d..40331166ab1 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -7,6 +7,7 @@ module.exports = { "no-empty": 1, "no-invalid-regexp": 2, "no-regex-spaces": 2, + "no-unsafe-negation": 1, "valid-jsdoc": 0, "valid-typeof": 2, // http://eslint.org/docs/rules/#best-practices @@ -23,6 +24,7 @@ module.exports = { "no-new-wrappers": 2, "no-new": 2, "no-proto": 2, + "no-redeclare": 1, "no-script-url": 2, "wrap-iife": [2, "outside"], // http://eslint.org/docs/rules/#strict-mode diff --git a/Gruntfile.js b/Gruntfile.js index a6b638113b6..7b08d8738a1 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -268,21 +268,20 @@ module.exports = function (grunt) { ] }, watch: { - all : { - files: ['**/*', '!**/node_modules/**'], - tasks: ['eslint'] - }, - grunt : { - files: ['<%= meta.grunt %>', 'tasks/**/*'], + grunt: { + files: ['<%= meta.grunt %>'], tasks: ['eslint:grunt'] }, - src : { - files: ['<%= meta.src %>', 'src/**/*'], + src: { + files: ['<%= meta.src %>'], tasks: ['eslint:src'] }, - test : { - files: ['<%= meta.test %>', 'test/**/*'], + test: { + files: ['<%= meta.test %>'], tasks: ['eslint:test'] + }, + options: { + spawn: false } }, /* FIXME (jasonsanjose): how to handle extension tests */ diff --git a/build.json b/build.json index b2d5d0eda9a..908032018f5 100644 --- a/build.json +++ b/build.json @@ -1,6 +1,6 @@ { - "version": "release-1.9-prerelease-2", - "title" : "Brackets 1.9 Stable Pre-release for community testing", - "description" : "This is a Brackets 1.9 pre-release build.", + "version": "release-1.10-prerelease-3", + "title" : "Brackets 1.10 Pre-release for community testing", + "description" : "This is a Brackets 1.10 3rd pre-release build. This release removes the utf-8 encoding limitation, adds native menus for Linux, provides backward/forward navigation in edit history, Search History with UI, enable/disable default exetensions from extension manager, pseudo selector and AtRules hints in CSS, CSS hints in style attribute value for HTML documents.", "prerelease": true } diff --git a/npm-shrinkwrap.json b/npm-shrinkwrap.json index a96f2cea66a..e5df87e2b5a 100644 --- a/npm-shrinkwrap.json +++ b/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "Brackets", - "version": "1.9.0-0", + "version": "1.10.0-0", "dependencies": { "abbrev": { "version": "1.1.0", @@ -190,6 +190,12 @@ "from": "aws4@>=1.2.1 <2.0.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz" }, + "babel-code-frame": { + "version": "6.22.0", + "from": "babel-code-frame@>=6.16.0 <7.0.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "dev": true + }, "balanced-match": { "version": "0.4.2", "from": "balanced-match@>=0.4.1 <0.5.0", @@ -249,6 +255,26 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", "dev": true }, + "body-parser": { + "version": "1.14.2", + "from": "body-parser@>=1.14.0 <1.15.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.14.2.tgz", + "dev": true, + "dependencies": { + "iconv-lite": { + "version": "0.4.13", + "from": "iconv-lite@0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "dev": true + }, + "qs": { + "version": "5.2.0", + "from": "qs@5.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.2.0.tgz", + "dev": true + } + } + }, "boom": { "version": "2.10.1", "from": "boom@>=2.0.0 <3.0.0", @@ -340,6 +366,12 @@ "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", "dev": true }, + "bytes": { + "version": "2.2.0", + "from": "bytes@2.2.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz", + "dev": true + }, "caller-path": { "version": "0.1.0", "from": "caller-path@>=0.1.0 <0.2.0", @@ -505,6 +537,12 @@ "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", "dev": true }, + "content-type": { + "version": "1.0.2", + "from": "content-type@>=1.0.1 <1.1.0", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.2.tgz", + "dev": true + }, "core-util-is": { "version": "1.0.2", "from": "core-util-is@>=1.0.0 <1.1.0", @@ -577,10 +615,18 @@ "dev": true }, "debug": { - "version": "0.7.4", - "from": "debug@>=0.7.0 <0.8.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz", - "dev": true + "version": "2.2.0", + "from": "debug@>=2.2.0 <2.3.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz", + "dev": true, + "dependencies": { + "ms": { + "version": "0.7.1", + "from": "ms@0.7.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz", + "dev": true + } + } }, "decamelize": { "version": "1.2.0", @@ -622,6 +668,12 @@ "from": "delayed-stream@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" }, + "depd": { + "version": "1.1.0", + "from": "depd@>=1.1.0 <1.2.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.0.tgz", + "dev": true + }, "des.js": { "version": "1.0.0", "from": "des.js@>=1.0.0 <2.0.0", @@ -635,9 +687,9 @@ "dev": true }, "doctrine": { - "version": "1.5.0", - "from": "doctrine@>=1.2.2 <2.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "version": "2.0.0", + "from": "doctrine@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz", "dev": true }, "domain-browser": { @@ -652,6 +704,12 @@ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", "optional": true }, + "ee-first": { + "version": "1.1.1", + "from": "ee-first@1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "dev": true + }, "elliptic": { "version": "6.4.0", "from": "elliptic@>=6.0.0 <7.0.0", @@ -695,16 +753,68 @@ "dev": true }, "es6-map": { - "version": "0.1.4", + "version": "0.1.5", "from": "es6-map@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz", - "dev": true + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "dev": true, + "dependencies": { + "d": { + "version": "1.0.0", + "from": "d@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "dev": true + }, + "es5-ext": { + "version": "0.10.15", + "from": "es5-ext@>=0.10.14 <0.11.0", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz", + "dev": true + }, + "es6-iterator": { + "version": "2.0.1", + "from": "es6-iterator@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "dev": true + }, + "es6-symbol": { + "version": "3.1.1", + "from": "es6-symbol@>=3.1.1 <3.2.0", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "dev": true + } + } }, "es6-set": { - "version": "0.1.4", - "from": "es6-set@>=0.1.3 <0.2.0", - "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz", - "dev": true + "version": "0.1.5", + "from": "es6-set@>=0.1.5 <0.2.0", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "dev": true, + "dependencies": { + "d": { + "version": "1.0.0", + "from": "d@1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "dev": true + }, + "es5-ext": { + "version": "0.10.15", + "from": "es5-ext@~0.10.14", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz", + "dev": true + }, + "es6-iterator": { + "version": "2.0.1", + "from": "es6-iterator@~2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "dev": true + }, + "es6-symbol": { + "version": "3.1.1", + "from": "es6-symbol@3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "dev": true + } + } }, "es6-symbol": { "version": "3.1.0", @@ -713,10 +823,36 @@ "dev": true }, "es6-weak-map": { - "version": "2.0.1", + "version": "2.0.2", "from": "es6-weak-map@>=2.0.1 <3.0.0", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.1.tgz", - "dev": true + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz", + "dev": true, + "dependencies": { + "d": { + "version": "1.0.0", + "from": "d@1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "dev": true + }, + "es5-ext": { + "version": "0.10.15", + "from": "es5-ext@^0.10.14", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz", + "dev": true + }, + "es6-iterator": { + "version": "2.0.1", + "from": "es6-iterator@^2.0.1", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz", + "dev": true + }, + "es6-symbol": { + "version": "3.1.1", + "from": "es6-symbol@^3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "dev": true + } + } }, "escape-string-regexp": { "version": "1.0.5", @@ -730,9 +866,9 @@ "dev": true }, "eslint": { - "version": "2.13.1", - "from": "eslint@>=2.0.0 <3.0.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-2.13.1.tgz", + "version": "3.18.0", + "from": "eslint@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-3.18.0.tgz", "dev": true, "dependencies": { "argparse": { @@ -758,6 +894,12 @@ "from": "js-yaml@>=3.5.1 <4.0.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.2.tgz", "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "from": "strip-bom@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "dev": true } } }, @@ -773,6 +915,12 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", "dev": true }, + "esquery": { + "version": "1.0.0", + "from": "esquery@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz", + "dev": true + }, "esrecurse": { "version": "4.1.0", "from": "esrecurse@>=4.1.0 <5.0.0", @@ -800,10 +948,24 @@ "dev": true }, "event-emitter": { - "version": "0.3.4", - "from": "event-emitter@>=0.3.4 <0.4.0", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz", - "dev": true + "version": "0.3.5", + "from": "event-emitter@>=0.3.5 <0.4.0", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "dev": true, + "dependencies": { + "d": { + "version": "1.0.0", + "from": "d@1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz", + "dev": true + }, + "es5-ext": { + "version": "0.10.15", + "from": "es5-ext@~0.10.14", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz", + "dev": true + } + } }, "eventemitter2": { "version": "0.4.14", @@ -867,9 +1029,9 @@ "dev": true }, "faye-websocket": { - "version": "0.4.4", - "from": "faye-websocket@>=0.4.3 <0.5.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.4.4.tgz", + "version": "0.10.0", + "from": "faye-websocket@>=0.10.0 <0.11.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", "dev": true }, "figures": { @@ -879,9 +1041,9 @@ "dev": true }, "file-entry-cache": { - "version": "1.3.1", - "from": "file-entry-cache@>=1.1.1 <2.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", + "version": "2.0.0", + "from": "file-entry-cache@>=2.0.0 <3.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-2.0.0.tgz", "dev": true }, "filename-regex": { @@ -1073,6 +1235,20 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", "dev": true }, + "globule": { + "version": "1.1.0", + "from": "globule@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.1.0.tgz", + "dev": true, + "dependencies": { + "lodash": { + "version": "4.16.6", + "from": "lodash@>=4.16.4 <4.17.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.16.6.tgz", + "dev": true + } + } + }, "graceful-fs": { "version": "4.1.11", "from": "graceful-fs@>=4.1.2 <5.0.0", @@ -1229,15 +1405,35 @@ "dev": true }, "grunt-contrib-watch": { - "version": "0.4.3", - "from": "grunt-contrib-watch@0.4.3", - "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-0.4.3.tgz", - "dev": true + "version": "1.0.0", + "from": "grunt-contrib-watch@1.0.0", + "resolved": "https://registry.npmjs.org/grunt-contrib-watch/-/grunt-contrib-watch-1.0.0.tgz", + "dev": true, + "dependencies": { + "async": { + "version": "1.5.2", + "from": "async@>=1.5.0 <2.0.0", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "dev": true + }, + "gaze": { + "version": "1.1.2", + "from": "gaze@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.2.tgz", + "dev": true + }, + "lodash": { + "version": "3.10.1", + "from": "lodash@>=3.10.1 <4.0.0", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "dev": true + } + } }, "grunt-eslint": { - "version": "18.1.0", - "from": "grunt-eslint@18.1.0", - "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-18.1.0.tgz", + "version": "19.0.0", + "from": "grunt-eslint@19.0.0", + "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-19.0.0.tgz", "dev": true }, "grunt-jasmine-node": { @@ -1400,6 +1596,12 @@ "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-0.5.6.tgz", "dev": true }, + "http-errors": { + "version": "1.3.1", + "from": "http-errors@>=1.3.1 <1.4.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz", + "dev": true + }, "http-signature": { "version": "1.1.1", "from": "http-signature@>=1.1.0 <1.2.0", @@ -1438,9 +1640,9 @@ "dev": true }, "ignore": { - "version": "3.2.4", - "from": "ignore@>=3.1.2 <4.0.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.2.4.tgz", + "version": "3.2.6", + "from": "ignore@>=3.2.0 <4.0.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.2.6.tgz", "dev": true }, "image-size": { @@ -1675,6 +1877,12 @@ "resolved": "https://registry.npmjs.org/jodid25519/-/jodid25519-1.0.2.tgz", "optional": true }, + "js-tokens": { + "version": "3.0.1", + "from": "js-tokens@>=3.0.0 <4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "dev": true + }, "js-yaml": { "version": "2.0.5", "from": "js-yaml@>=2.0.5 <2.1.0", @@ -1790,6 +1998,12 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "dev": true }, + "livereload-js": { + "version": "2.2.2", + "from": "livereload-js@>=2.2.0 <3.0.0", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-2.2.2.tgz", + "dev": true + }, "load-grunt-tasks": { "version": "3.5.0", "from": "load-grunt-tasks@3.5.0", @@ -1831,6 +2045,12 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", "dev": true }, + "media-typer": { + "version": "0.3.0", + "from": "media-typer@0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "dev": true + }, "memory-fs": { "version": "0.4.1", "from": "memory-fs@>=0.4.1 <0.5.0", @@ -1922,6 +2142,12 @@ "from": "nan@>=1.0.0 <1.1.0", "resolved": "https://registry.npmjs.org/nan/-/nan-1.0.0.tgz" }, + "natural-compare": { + "version": "1.4.0", + "from": "natural-compare@>=1.4.0 <2.0.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "dev": true + }, "node-libs-browser": { "version": "2.0.0", "from": "node-libs-browser@>=2.0.0 <3.0.0", @@ -1933,20 +2159,6 @@ "from": "nopt@>=3.0.1 <4.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz" }, - "noptify": { - "version": "0.0.3", - "from": "noptify@latest", - "resolved": "https://registry.npmjs.org/noptify/-/noptify-0.0.3.tgz", - "dev": true, - "dependencies": { - "nopt": { - "version": "2.0.0", - "from": "nopt@>=2.0.0 <2.1.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-2.0.0.tgz", - "dev": true - } - } - }, "normalize-package-data": { "version": "2.3.6", "from": "normalize-package-data@>=2.3.2 <3.0.0", @@ -3488,6 +3700,12 @@ "from": "object.omit@>=2.0.0 <3.0.0", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz" }, + "on-finished": { + "version": "2.3.0", + "from": "on-finished@>=2.3.0 <2.4.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "dev": true + }, "once": { "version": "1.4.0", "from": "once@>=1.3.0 <2.0.0", @@ -3588,6 +3806,12 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", "dev": true }, + "parseurl": { + "version": "1.3.1", + "from": "parseurl@>=1.3.0 <1.4.0", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.1.tgz", + "dev": true + }, "path-browserify": { "version": "0.0.0", "from": "path-browserify@0.0.0", @@ -3611,6 +3835,12 @@ "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "dev": true }, + "path-parse": { + "version": "1.0.5", + "from": "path-parse@>=1.0.5 <2.0.0", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "dev": true + }, "path-type": { "version": "1.1.0", "from": "path-type@>=1.0.0 <2.0.0", @@ -3888,6 +4118,26 @@ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.0.3.tgz", "dev": true }, + "raw-body": { + "version": "2.1.7", + "from": "raw-body@>=2.1.5 <2.2.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.1.7.tgz", + "dev": true, + "dependencies": { + "bytes": { + "version": "2.4.0", + "from": "bytes@2.4.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.4.0.tgz", + "dev": true + }, + "iconv-lite": { + "version": "0.4.13", + "from": "iconv-lite@0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "dev": true + } + } + }, "read-pkg": { "version": "1.1.0", "from": "read-pkg@>=1.0.0 <2.0.0", @@ -3916,6 +4166,20 @@ "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", "dev": true }, + "rechoir": { + "version": "0.6.2", + "from": "rechoir@>=0.6.2 <0.7.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "dev": true, + "dependencies": { + "resolve": { + "version": "1.3.2", + "from": "resolve@>=1.1.6 <2.0.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.2.tgz", + "dev": true + } + } + }, "regex-cache": { "version": "0.4.3", "from": "regex-cache@>=0.4.2 <0.5.0", @@ -4068,9 +4332,9 @@ "dev": true }, "shelljs": { - "version": "0.6.1", - "from": "shelljs@>=0.6.0 <0.7.0", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", + "version": "0.7.7", + "from": "shelljs@>=0.7.5 <0.8.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", "dev": true }, "sigmund": { @@ -4138,6 +4402,12 @@ } } }, + "statuses": { + "version": "1.3.1", + "from": "statuses@>=1.0.0 <2.0.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "dev": true + }, "stream-browserify": { "version": "2.0.1", "from": "stream-browserify@>=2.0.1 <3.0.0", @@ -4178,9 +4448,9 @@ "dev": true }, "strip-json-comments": { - "version": "1.0.4", - "from": "strip-json-comments@>=1.0.1 <1.1.0", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "version": "2.0.1", + "from": "strip-json-comments@>=2.0.1 <2.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "dev": true }, "supports-color": { @@ -4250,15 +4520,15 @@ "dev": true }, "tiny-lr": { - "version": "0.0.4", - "from": "tiny-lr@0.0.4", - "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.0.4.tgz", + "version": "0.2.1", + "from": "tiny-lr@>=0.2.1 <0.3.0", + "resolved": "https://registry.npmjs.org/tiny-lr/-/tiny-lr-0.2.1.tgz", "dev": true, "dependencies": { "qs": { - "version": "0.5.6", - "from": "qs@>=0.5.2 <0.6.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-0.5.6.tgz", + "version": "5.1.0", + "from": "qs@>=5.1.0 <5.2.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-5.1.0.tgz", "dev": true } } @@ -4325,6 +4595,12 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "dev": true }, + "type-is": { + "version": "1.6.14", + "from": "type-is@>=1.6.10 <1.7.0", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.14.tgz", + "dev": true + }, "typedarray": { "version": "0.0.6", "from": "typedarray@>=0.0.6 <0.0.7", @@ -4369,6 +4645,12 @@ "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz", "dev": true }, + "unpipe": { + "version": "1.0.0", + "from": "unpipe@1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "dev": true + }, "url": { "version": "0.11.0", "from": "url@>=0.11.0 <0.12.0", @@ -4476,6 +4758,18 @@ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz", "dev": true }, + "websocket-driver": { + "version": "0.6.5", + "from": "websocket-driver@>=0.5.1", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", + "dev": true + }, + "websocket-extensions": { + "version": "0.1.1", + "from": "websocket-extensions@>=0.1.1", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz", + "dev": true + }, "which": { "version": "1.0.9", "from": "which@>=1.0.5 <1.1.0", diff --git a/package.json b/package.json index 35de9fe30e1..3a1a5b4746f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "Brackets", - "version": "1.9.0-0", - "apiVersion": "1.9.0", + "version": "1.10.0-0", + "apiVersion": "1.10.0", "homepage": "http://brackets.io", "issues": { "url": "http://github.com/adobe/brackets/issues" @@ -35,8 +35,8 @@ "grunt-cli": "0.1.9", "phantomjs": "1.9.18", "grunt-lib-phantomjs": "0.3.0", - "grunt-eslint": "18.1.0", - "grunt-contrib-watch": "0.4.3", + "grunt-eslint": "19.0.0", + "grunt-contrib-watch": "1.0.0", "grunt-contrib-jasmine": "0.4.2", "grunt-template-jasmine-requirejs": "0.1.0", "grunt-contrib-cssmin": "0.6.0", @@ -68,4 +68,4 @@ "url": "https://github.com/adobe/brackets/blob/master/LICENSE" } ] -} +} \ No newline at end of file diff --git a/samples/ja/Getting Started/index.html b/samples/ja/Getting Started/index.html index 3b1f31734ee..bf6f491fef1 100644 --- a/samples/ja/Getting Started/index.html +++ b/samples/ja/Getting Started/index.html @@ -14,7 +14,7 @@

BRACKETS をはじめる前に

まずはこのガイドからスタート

@@ -22,7 +22,7 @@

まずはこのガイドからスタート

Brackets は、新しいタイプのエディターです。 @@ -30,7 +30,7 @@

まずはこのガイドからスタート

Brackets のプロジェクト

@@ -45,7 +45,7 @@

Brackets のプロジェクト

CSS と JavaScript のクイック編集

@@ -71,7 +71,7 @@

CSS と JavaScript のクイック編集

HTML および CSS の編集結果をブラウザーでライブプレビュー

@@ -114,7 +114,7 @@

拡張機能でさらに補強

Brackets プロジェクトに参加

@@ -155,4 +155,4 @@

Brackets プロジェクトに参加

[:::::::::::::: ::::::::::::::] [[[[[[[[[[[[[[[ ]]]]]]]]]]]]]]] ---> \ No newline at end of file +--> diff --git a/samples/zh-cn/Getting Started/index.html b/samples/zh-cn/Getting Started/index.html new file mode 100644 index 00000000000..85e7ed810d8 --- /dev/null +++ b/samples/zh-cn/Getting Started/index.html @@ -0,0 +1,193 @@ + + + + + + + BRACKETS 入门 + + + + + +

BRACKETS 入门

+

让我为你好好介绍!

+ + + +

+ 欢迎使用 Brackets,这是个很懂网页设计的现代化开放原始码程式编辑器。 + 轻巧又不失威力,整合多项视觉化的编辑功能,在需要时提供您适当的协助。 +

+ + +

+ Brackets 与众不同。 + Brackets 提供「快速编辑」、「即时预览」等别的编辑器没有的独家功能。 + 而且 Brackets 是用 JavaScript, HTML 及 CSS 写出来的。这代表大多数使用 Brackets 的人都有能力修改及扩充它。 + 事实上,Brackets 本身就是我们用 Brackets 一天天打造出来的。 + 如果您想学会如何使用这些功能,请继续看下去。 +

+ + + +

Brackets 中的「专案」

+

+ 只要开启包含您程式码的资料夹,就能使用 Brackets 来编辑。 + Brackets 会将目前开启的资料夹视为一个「专案」,「程式提示」、「即时预览」及「快速编辑」等功能都只会参考到专案裡的档案。 +

+ + + 要是您已经准备好关掉这个范例专案,开始编辑自已的程式,可以使用左边侧栏的下拉式选单切换资料夹。 + 现在应该是选到「Getting Started」,也就是您看的这份文件所在的资料夹。 + 按一下下拉式选单,点选「开启资料夹…」选项,就能开启您自已的资料夹。 + + 之后您也可以透过同样的下拉式选单切回开启过的资料夹,包含这个范例专案。 + + + +

CSS 及 JavaScript 快速编辑

+

+ 别再因为不断切换档案而一直分神失焦了。编辑 HTML 时,按下 Cmd/Ctrl + E + 快速键就地开启编辑器,秀出所有相关的 CSS 规则。 + 调好 CSS 样式后按 ESC 马上就能回到 HTML 继续编辑。 + 此外,也可以放手让那些 CSS 规则一直开在 HTML 编辑器裡。 + 只要在快速编辑器的范围外按下 ESC 键,就能关掉所有快速编辑器。 + 快速编辑也能找到定义在 LESS 及 SCSS 档案中的规则,就算是巢状规则也没问题。 +

+ + + 想亲身体验吗? 把游标移到上面的 标籤中,按下 Cmd/Ctrl + E。 + 您应该就会看到 CSS 快速编辑器出现在上方,显示出所有套用到的 CSS 规则。 + 快速编辑功能也支援 class 及 id 属性。搭配 LESS 或 SCSS 档嘛会通喔。 + + 您也可以透过这个方式新增规则。在上方随便一个 标籤上点一下,按 Cmd/Ctrl + E。 + 可以看到它上面并没有任何 CSS 规则,但您可以按一下「新增规则」按钮,就会新增 规则。 + + + + 使用 CSS 快速编辑的画面撷图 + + +

+ 您也能使用相同的快速键编辑其他东西,例如 JavaScript 函式、CSS 色彩、CSS 动画计时函式等,持续增加中。 +

+

+ 目前还不能在快速编辑器中巢状开启其他快速编辑器,只有游标在主编辑器时才能开快速编辑功能。 +

+ + +

在浏览器裡即时预览 HTML 及 CSS 变更

+

+ 有一种舞叫做「存档再重新载入探戈」,我们跳了好多年,您听过吗? + 就是在编辑器裡改一改东西,储存好,马上再切过去浏览器,按「重新整理」后才能真正的看到结果,超鸟的! + 用 Brackets,您永远不必再这麽「跳」。 +

+

+ Brackets 会跟您本机的浏览器即时连线,在您修改的同时将 HTML 及 CSS 内容更新过去! + 说不定活在 21 世纪的您已经用浏览器提供的开发者工具做过类似的事了。 + 但是用 Brackets,您不用再手动把总算是会动的程式複製贴回编辑器。 + 您的程式虽然是跑在浏览器上,但是所有的血与肉都还是在编辑器裡啊! +

+ +

即时突显 HTML 元素及 CSS 规则

+

+ Brackets 让您更容易看到 HTML 及 CSS 的修改会对页面造成什麽影响。 + 当游标停在 CSS 规则上时,Brackets 会在浏览器裡将所有会受影响的元素突显出来。 + 编辑 HTML 档案时,Brackets 也会在浏览器中突显对应的 HTML 元素。 +

+ + + 如果您安装了 Google Chrome,马上就可以试看看。 + 按一下 Brackets 视窗右上角的闪电图示,或是按 Cmd/Ctrl + Alt + P。 + 当即时预览功能在 HTML 档案上启用后,所有连结到的 CSS 档案也都可以马上编辑马上生效。 + Brackets 与您的浏览器建立连线时,图示会由灰转金。 + + 就是现在,把游标移到上面的 标籤。注意看 Chrome 在图片上显示的蓝色框。 + 接下来,按 Cmd/Ctrl + E 开启相关的 CSS 规则定义。 + 试著将框线 (border) 值由 10px 改成 20px,或将背景色 (background-color) 由透明 "transparent" 改成 "hotpink"。 + 如果您把 Brackets 跟浏览器并排放好,就能看到所有异动都直接反应在浏览器上了。酷吧?! + + +

+ 目前 Brackets 只能即时预览 HTML 及 CSS。不过,储存修改过的 JavaScript 档案时也会自动重新载入页面。 + 我们正在努力让即时预览功能支援 JavaScript。 + 此外,即时预览现在只能在 Google Chrome 上执行,我们希望将来能支援所有主流的浏览器。 +

+ +

快速检视

+

+ 为了那些记不得色彩十六进位值或是 RGB 值的人,Brackets 能快速又简单的让您看见色彩的真相。 + 不管在 CSS 或 HTML 中,只要将滑鼠游标移到任何色彩值或是渐变色上,Brackets 就会自动显示预览。 + 对图片也同样有用,在 Brackets 裡将滑鼠游标移到图片连结上,就会自动显示预览缩图。 +

+ + + 自已试试快速检视,只要将游标移到这份文件最上方的 标籤上,按下 Cmd/Ctrl + E + 开启 CSS 快速编辑器,将滑鼠游标移到 CSS 上的任何一个色彩值上就能看到。 + 想要预览渐变色,您也可以在 标籤上开启 CSS 快速编辑器,移到随便一个背景图片 (background-image) 值就能看到。 + 要试图片预览,则是将游标移到前几段提到的画面撷图上就能看到。 + + +

还不够吗? 安装扩充功能吧!

+

+ 除了 Brackets 内建的这些好物外,我们那深具规模,且日益状大的开发者社群已经写出了数百个扩充功能。 + 如果您觉得 Brackets 少了什麽,说不定早就有人写好扩充功能了。 + 点一下 档案 > 扩充功能管理员...,再点一下「可使用」页籤,就能浏览或搜寻扩充功能清单。 + 一旦找到想要的扩充功能,按一下后面的「安装」按钮就可以了。 +

+ + +

一起参与

+

+ Brackets 专案是开放原始码的。世界各地的网页开发者贡献一己之力,只为打造出更好的程式编辑器。 + 也有不少人正在开发扩充功能,让 Brackets 更强大。 + 告诉我们您的想法,分享您的构想,或是直接为本专案做点事吧。 +

+ + + + + diff --git a/samples/zh-cn/Getting Started/main.css b/samples/zh-cn/Getting Started/main.css new file mode 100644 index 00000000000..225fc8967f1 --- /dev/null +++ b/samples/zh-cn/Getting Started/main.css @@ -0,0 +1,60 @@ +html { + background: #e6e9e9; + background-image: linear-gradient(270deg, rgb(230, 233, 233) 0%, rgb(216, 221, 221) 100%); + -webkit-font-smoothing: antialiased; +} + +body { + background: #fff; + box-shadow: 0 0 2px rgba(0, 0, 0, 0.06); + color: #545454; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 16px; + line-height: 1.5; + margin: 0 auto; + max-width: 800px; + padding: 2em 2em 4em; +} + +h1, h2, h3, h4, h5, h6 { + color: #222; + font-weight: 700; + line-height: 1.3; +} + +h2 { + margin-top: 1.3em; +} + +a { + color: #0083e8; +} + +b, strong { + font-weight: 700; +} + +samp { + display: none; +} + +img { + animation: colorize 2s cubic-bezier(0, 0, .78, .36) 1; + background: transparent; + border: 10px solid rgba(0, 0, 0, 0.12); + border-radius: 4px; + display: block; + margin: 1.3em auto; + max-width: 95%; +} + +@keyframes colorize { + 0% { + -webkit-filter: grayscale(100%); + filter: grayscale(100%); + } + 100% { + -webkit-filter: grayscale(0%); + filter: grayscale(0%); + } +} diff --git a/samples/zh-cn/Getting Started/screenshots/quick-edit.png b/samples/zh-cn/Getting Started/screenshots/quick-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..82a984b52555bf277843ae418fdeab6ba9bc0d16 GIT binary patch literal 271776 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≠ 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 literal 0 HcmV?d00001 diff --git a/src/LiveDevelopment/Agents/RemoteAgent.js b/src/LiveDevelopment/Agents/RemoteAgent.js index 6bb71e7c839..7c084ed9bab 100644 --- a/src/LiveDevelopment/Agents/RemoteAgent.js +++ b/src/LiveDevelopment/Agents/RemoteAgent.js @@ -131,7 +131,7 @@ define(function RemoteAgent(require, exports, module) { _stopKeepAliveInterval(); // inject RemoteFunctions - var command = "window._LD=" + RemoteFunctions + "(" + LiveDevelopment.config.experimental + "," + PreferencesManager.get("livedev.wsPort") + ");"; + var command = "window._LD=" + RemoteFunctions + "(" + JSON.stringify(LiveDevelopment.config) + "," + PreferencesManager.get("livedev.wsPort") + ");"; Inspector.Runtime.evaluate(command, function onEvaluate(response) { if (response.error || response.wasThrown) { diff --git a/src/LiveDevelopment/Agents/RemoteFunctions.js b/src/LiveDevelopment/Agents/RemoteFunctions.js index e5119c1981e..cb11e072c26 100644 --- a/src/LiveDevelopment/Agents/RemoteFunctions.js +++ b/src/LiveDevelopment/Agents/RemoteFunctions.js @@ -30,10 +30,29 @@ * modules should define a single function that returns an object of all * exported functions. */ -function RemoteFunctions(experimental, remoteWSPort) { +function RemoteFunctions(config, remoteWSPort) { "use strict"; + var experimental; + if (!config) { + experimental = false; + } else { + experimental = config.experimental; + } var lastKeepAliveTime = Date.now(); + var req, timeout; + var animateHighlight = function (time) { + if(req) { + window.cancelAnimationFrame(req); + window.clearTimeout(timeout); + } + req = window.requestAnimationFrame(redrawHighlights); + + timeout = setTimeout(function () { + window.cancelAnimationFrame(req); + req = null; + }, time * 1000); + }; /** * @type {DOMEditHandler} @@ -250,56 +269,209 @@ function RemoteFunctions(experimental, remoteWSPort) { } return false; }, - _makeHighlightDiv: function (element, doAnimation) { var elementBounds = element.getBoundingClientRect(), highlight = window.document.createElement("div"), - styles = window.getComputedStyle(element); + elementStyling = window.getComputedStyle(element), + transitionDuration = parseFloat(elementStyling.getPropertyValue('transition-duration')), + animationDuration = parseFloat(elementStyling.getPropertyValue('animation-duration')); + + if (transitionDuration) { + animateHighlight(transitionDuration); + } + + if (animationDuration) { + animateHighlight(animationDuration); + } // Don't highlight elements with 0 width & height if (elementBounds.width === 0 && elementBounds.height === 0) { return; } + + var realElBorder = { + right: elementStyling.getPropertyValue('border-right-width'), + left: elementStyling.getPropertyValue('border-left-width'), + top: elementStyling.getPropertyValue('border-top-width'), + bottom: elementStyling.getPropertyValue('border-bottom-width') + }; + + var borderBox = elementStyling.boxSizing === 'border-box'; + + var innerWidth = parseFloat(elementStyling.width), + innerHeight = parseFloat(elementStyling.height), + outerHeight = innerHeight, + outerWidth = innerWidth; + + if (!borderBox) { + innerWidth += parseFloat(elementStyling.paddingLeft) + parseFloat(elementStyling.paddingRight); + innerHeight += parseFloat(elementStyling.paddingTop) + parseFloat(elementStyling.paddingBottom); + outerWidth = innerWidth + parseFloat(realElBorder.right) + + parseFloat(realElBorder.left), + outerHeight = innerHeight + parseFloat(realElBorder.bottom) + parseFloat(realElBorder.top); + } + + + var visualisations = { + horizontal: "left, right", + vertical: "top, bottom" + }; + + var drawPaddingRect = function(side) { + var elStyling = {}; + + if (visualisations.horizontal.indexOf(side) >= 0) { + elStyling['width'] = elementStyling.getPropertyValue('padding-' + side); + elStyling['height'] = innerHeight + "px"; + elStyling['top'] = 0; + + if (borderBox) { + elStyling['height'] = innerHeight - parseFloat(realElBorder.top) - parseFloat(realElBorder.bottom) + "px"; + } + + } else { + elStyling['height'] = elementStyling.getPropertyValue('padding-' + side); + elStyling['width'] = innerWidth + "px"; + elStyling['left'] = 0; + + if (borderBox) { + elStyling['width'] = innerWidth - parseFloat(realElBorder.left) - parseFloat(realElBorder.right) + "px"; + } + } + + elStyling[side] = 0; + elStyling['position'] = 'absolute'; + + return elStyling; + }; + + var drawMarginRect = function(side) { + var elStyling = {}; + + var margin = []; + margin['right'] = parseFloat(elementStyling.getPropertyValue('margin-right')); + margin['top'] = parseFloat(elementStyling.getPropertyValue('margin-top')); + margin['bottom'] = parseFloat(elementStyling.getPropertyValue('margin-bottom')); + margin['left'] = parseFloat(elementStyling.getPropertyValue('margin-left')); + + if(visualisations['horizontal'].indexOf(side) >= 0) { + + elStyling['width'] = elementStyling.getPropertyValue('margin-' + side); + elStyling['height'] = outerHeight + margin['top'] + margin['bottom'] + "px"; + elStyling['top'] = "-" + (margin['top'] + parseFloat(realElBorder.top)) + "px"; + } else { + elStyling['height'] = elementStyling.getPropertyValue('margin-' + side); + elStyling['width'] = outerWidth + "px"; + elStyling['left'] = "-" + realElBorder.left; + } + elStyling[side] = "-" + (margin[side] + parseFloat(realElBorder[side])) + "px"; + elStyling['position'] = 'absolute'; + + return elStyling; + }; + + var setVisibility = function (el) { + if ( + !config.remoteHighlight.showPaddingMargin || + parseInt(el.height, 10) <= 0 || + parseInt(el.width, 10) <= 0 + ) { + el.display = 'none'; + } else { + el.display = 'block'; + } + }; + + var mainBoxStyles = config.remoteHighlight.stylesToSet; + + var paddingVisualisations = [ + drawPaddingRect('top'), + drawPaddingRect('right'), + drawPaddingRect('bottom'), + drawPaddingRect('left') + ]; + + var marginVisualisations = [ + drawMarginRect('top'), + drawMarginRect('right'), + drawMarginRect('bottom'), + drawMarginRect('left') + ]; + + var setupVisualisations = function (arr, config) { + var i; + for (i = 0; i < arr.length; i++) { + setVisibility(arr[i]); + + // Applies to every visualisationElement (padding or margin div) + arr[i]["transform"] = "none"; + var el = window.document.createElement("div"), + styles = Object.assign( + {}, + config, + arr[i] + ); + + _setStyleValues(styles, el.style); + + highlight.appendChild(el); + } + }; + + setupVisualisations( + marginVisualisations, + config.remoteHighlight.marginStyling + ); + setupVisualisations( + paddingVisualisations, + config.remoteHighlight.paddingStyling + ); + highlight.className = HIGHLIGHT_CLASSNAME; var offset = _screenOffset(element); + + var el = element, + offsetLeft = 0, + offsetTop = 0; + + // Probably the easiest way to get elements position without including transform + do { + offsetLeft += el.offsetLeft; + offsetTop += el.offsetTop; + el = el.offsetParent; + } while(el); var stylesToSet = { - "left": offset.left + "px", - "top": offset.top + "px", - "width": elementBounds.width + "px", - "height": elementBounds.height + "px", + "left": offsetLeft + "px", + "top": offsetTop + "px", + "width": innerWidth + "px", + "height": innerHeight + "px", "z-index": 2000000, "margin": 0, "padding": 0, "position": "absolute", "pointer-events": "none", - "border-top-left-radius": styles.borderTopLeftRadius, - "border-top-right-radius": styles.borderTopRightRadius, - "border-bottom-left-radius": styles.borderBottomLeftRadius, - "border-bottom-right-radius": styles.borderBottomRightRadius, - "border-style": "solid", - "border-width": "1px", - "border-color": "#00a2ff", "box-shadow": "0 0 1px #fff", - "box-sizing": "border-box" + "box-sizing": elementStyling.getPropertyValue('box-sizing'), + "border-right": elementStyling.getPropertyValue('border-right'), + "border-left": elementStyling.getPropertyValue('border-left'), + "border-top": elementStyling.getPropertyValue('border-top'), + "border-bottom": elementStyling.getPropertyValue('border-bottom'), + "transform": elementStyling.getPropertyValue('transform'), + "transform-origin": elementStyling.getPropertyValue('transform-origin'), + "border-color": config.remoteHighlight.borderColor }; + + var mergedStyles = Object.assign({}, stylesToSet, config.remoteHighlight.stylesToSet); - var animateStartValues = { - "background-color": "rgba(0, 162, 255, 0.5)", - "opacity": 0 - }; + var animateStartValues = config.remoteHighlight.animateStartValue; - var animateEndValues = { - "background-color": "rgba(0, 162, 255, 0)", - "opacity": 1 - }; + var animateEndValues = config.remoteHighlight.animateEndValue; var transitionValues = { - "-webkit-transition-property": "opacity, background-color", - "-webkit-transition-duration": "300ms, 2.3s", - "transition-property": "opacity, background-color", + "transition-property": "opacity, background-color, transform", "transition-duration": "300ms, 2.3s" }; @@ -311,7 +483,7 @@ function RemoteFunctions(experimental, remoteWSPort) { } } - _setStyleValues(stylesToSet, highlight.style); + _setStyleValues(mergedStyles, highlight.style); _setStyleValues( doAnimation ? animateStartValues : animateEndValues, highlight.style @@ -842,6 +1014,11 @@ function RemoteFunctions(experimental, remoteWSPort) { function getSimpleDOM() { return JSON.stringify(_domElementToJSON(window.document.documentElement)); } + + function updateConfig(newConfig) { + config = JSON.parse(newConfig); + return JSON.stringify(config); + } // init _editHandler = new DOMEditHandler(window.document); @@ -871,10 +1048,10 @@ function RemoteFunctions(experimental, remoteWSPort) { _ws.onopen = function () { window.document.addEventListener("click", onDocumentClick); }; - + _ws.onmessage = function (evt) { }; - + _ws.onclose = function () { // websocket is closed window.document.removeEventListener("click", onDocumentClick); @@ -894,6 +1071,7 @@ function RemoteFunctions(experimental, remoteWSPort) { "highlightRule" : highlightRule, "redrawHighlights" : redrawHighlights, "applyDOMEdits" : applyDOMEdits, - "getSimpleDOM" : getSimpleDOM + "getSimpleDOM" : getSimpleDOM, + "updateConfig" : updateConfig }; } diff --git a/src/LiveDevelopment/main.js b/src/LiveDevelopment/main.js index e7aabc6cdf1..eab5252a7f2 100644 --- a/src/LiveDevelopment/main.js +++ b/src/LiveDevelopment/main.js @@ -79,6 +79,31 @@ define(function main(require, exports, module) { description: Strings.DESCRIPTION_LIVE_DEV_MULTIBROWSER }); + // "livedev.remoteHighlight" preference + var PREF_REMOTEHIGHLIGHT = "remoteHighlight"; + var remoteHighlightPref = prefs.definePreference(PREF_REMOTEHIGHLIGHT, "object", { + animateStartValue: { + "background-color": "rgba(0, 162, 255, 0.5)", + "opacity": 0 + }, + animateEndValue: { + "background-color": "rgba(0, 162, 255, 0)", + "opacity": 0.6 + }, + "paddingStyling": { + "border-width": "1px", + "border-style": "dashed", + "border-color": "rgba(0, 162, 255, 0.5)" + }, + "marginStyling": { + "background-color": "rgba(21, 165, 255, 0.58)" + }, + "borderColor": "rgba(21, 165, 255, 0.85)", + "showPaddingMargin": true + }, { + description: Strings.DESCRIPTION_LIVE_DEV_HIGHLIGHT_SETTINGS + }); + /** Toggles or sets the preference **/ function _togglePref(key, value) { var val, @@ -302,6 +327,7 @@ define(function main(require, exports, module) { /** Initialize LiveDevelopment */ AppInit.appReady(function () { params.parse(); + config.remoteHighlight = prefs.get(PREF_REMOTEHIGHLIGHT); Inspector.init(config); LiveDevelopment.init(config); @@ -353,6 +379,15 @@ define(function main(require, exports, module) { _setImplementation(prefs.get(PREF_MULTIBROWSER)); } }); + + remoteHighlightPref + .on("change", function () { + config.remoteHighlight = prefs.get(PREF_REMOTEHIGHLIGHT); + + if (LiveDevImpl && LiveDevImpl.status >= LiveDevImpl.STATUS_ACTIVE) { + LiveDevImpl.agents.remote.call("updateConfig",JSON.stringify(config)); + } + }); }); diff --git a/src/config.json b/src/config.json index 55a2c5db84c..54615dc75af 100644 --- a/src/config.json +++ b/src/config.json @@ -23,8 +23,8 @@ "healthDataServerURL": "https://healthdev.brackets.io/healthDataLog" }, "name": "Brackets", - "version": "1.9.0-0", - "apiVersion": "1.9.0", + "version": "1.10.0-0", + "apiVersion": "1.10.0", "homepage": "http://brackets.io", "issues": { "url": "http://github.com/adobe/brackets/issues" @@ -58,8 +58,8 @@ "grunt-cli": "0.1.9", "phantomjs": "1.9.18", "grunt-lib-phantomjs": "0.3.0", - "grunt-eslint": "18.1.0", - "grunt-contrib-watch": "0.4.3", + "grunt-eslint": "19.0.0", + "grunt-contrib-watch": "1.0.0", "grunt-contrib-jasmine": "0.4.2", "grunt-template-jasmine-requirejs": "0.1.0", "grunt-contrib-cssmin": "0.6.0", diff --git a/src/document/Document.js b/src/document/Document.js index a2ae75f52dc..fce97e4cf1a 100644 --- a/src/document/Document.js +++ b/src/document/Document.js @@ -758,6 +758,25 @@ define(function (require, exports, module) { return this.file instanceof InMemoryFile; }; + /** + * Reloads the document from FileSystem + * @return {promise} - to check if reload was successful or not + */ + Document.prototype.reload = function () { + var $deferred = $.Deferred(); + var self = this; + FileUtils.readAsText(this.file) + .done(function (text, readTimestamp) { + self.refreshText(text, readTimestamp); + $deferred.resolve(); + }) + .fail(function (error) { + console.log("Error reloading contents of " + self.file.fullPath, error); + $deferred.reject(); + }); + return $deferred.promise(); + }; + // We dispatch events from the module level, and the instance level. Instance events are wired up // in the Document constructor. EventDispatcher.makeEventDispatcher(exports); diff --git a/src/document/DocumentCommandHandlers.js b/src/document/DocumentCommandHandlers.js index a0c2794a1be..92cc93a3726 100644 --- a/src/document/DocumentCommandHandlers.js +++ b/src/document/DocumentCommandHandlers.js @@ -322,6 +322,22 @@ define(function (require, exports, module) { }); var file = FileSystem.getFileForPath(fullPath); + if (options && options.encoding) { + file._encoding = options.encoding; + } else { + var projectRoot = ProjectManager.getProjectRoot(), + context = { + location : { + scope: "user", + layer: "project", + layerID: projectRoot.fullPath + } + }; + var encoding = PreferencesManager.getViewState("encoding", context); + if (encoding[fullPath]) { + file._encoding = encoding[fullPath]; + } + } MainViewManager._open(paneId, file, options) .done(function () { result.resolve(file); @@ -626,10 +642,8 @@ define(function (require, exports, module) { // If a file is currently selected in the tree, put it next to it. // If a directory is currently selected in the tree, put it in it. // If an Untitled document is selected or nothing is selected in the tree, put it at the root of the project. - // (Note: 'selected' may be an item that's selected in the workingset and not the tree; but in that case - // ProjectManager.createNewItem() ignores the baseDir we give it and falls back to the project root on its own) var baseDirEntry, - selected = ProjectManager.getSelectedItem(); + selected = ProjectManager.getFileTreeContext(); if ((!selected) || (selected instanceof InMemoryFile)) { selected = ProjectManager.getProjectRoot(); } @@ -902,7 +916,21 @@ define(function (require, exports, module) { doc.isSaving = true; // mark that we're saving the document // First, write document's current text to new file + if (doc.file._encoding && doc.file._encoding !== "UTF-8") { + var projectRoot = ProjectManager.getProjectRoot(), + context = { + location : { + scope: "user", + layer: "project", + layerID: projectRoot.fullPath + } + }; + var encoding = PreferencesManager.getViewState("encoding", context); + encoding[path] = doc.file._encoding; + PreferencesManager.setViewState("encoding", encoding, context); + } newFile = FileSystem.getFileForPath(path); + newFile._encoding = doc.file._encoding; // Save as warns you when you're about to overwrite a file, so we // explicitly allow "blind" writes to the filesystem in this case, diff --git a/src/document/DocumentManager.js b/src/document/DocumentManager.js index b6b1bead62d..1f6ce37a54a 100644 --- a/src/document/DocumentManager.js +++ b/src/document/DocumentManager.js @@ -93,6 +93,7 @@ define(function (require, exports, module) { Commands = require("command/Commands"), PerfUtils = require("utils/PerfUtils"), LanguageManager = require("language/LanguageManager"), + ProjectManager = require("project/ProjectManager"), Strings = require("strings"); @@ -419,7 +420,7 @@ define(function (require, exports, module) { if (doc) { result.resolve(doc.getText(), doc.diskTimestamp, checkLineEndings ? doc._lineEndings : null); } else { - file.read(function (err, contents, stat) { + file.read(function (err, contents, encoding, stat) { if (err) { result.reject(err); } else { @@ -498,6 +499,18 @@ define(function (require, exports, module) { // via notifyFileDeleted FileSyncManager.syncOpenDocuments(Strings.FILE_DELETED_TITLE); + var projectRoot = ProjectManager.getProjectRoot(), + context = { + location : { + scope: "user", + layer: "project", + layerID: projectRoot.fullPath + } + }; + var encoding = PreferencesManager.getViewState("encoding", context); + delete encoding[fullPath]; + PreferencesManager.setViewState("encoding", encoding, context); + if (!getOpenDocumentForPath(fullPath) && !MainViewManager.findInAllWorkingSets(fullPath).length) { // For images not open in the workingset, diff --git a/src/editor/Editor.js b/src/editor/Editor.js index 0596833d3dc..2060fc4d838 100644 --- a/src/editor/Editor.js +++ b/src/editor/Editor.js @@ -75,11 +75,13 @@ define(function (require, exports, module) { TextRange = require("document/TextRange").TextRange, TokenUtils = require("utils/TokenUtils"), ValidationUtils = require("utils/ValidationUtils"), + HTMLUtils = require("language/HTMLUtils"), ViewUtils = require("utils/ViewUtils"), MainViewManager = require("view/MainViewManager"), _ = require("thirdparty/lodash"); /** Editor preferences */ + var CLOSE_BRACKETS = "closeBrackets", CLOSE_TAGS = "closeTags", DRAG_DROP = "dragDropText", @@ -96,7 +98,9 @@ define(function (require, exports, module) { UPPERCASE_COLORS = "uppercaseColors", USE_TAB_CHAR = "useTabChar", WORD_WRAP = "wordWrap", - INDENT_LINE_COMMENT = "indentLineComment"; + INDENT_LINE_COMMENT = "indentLineComment", + INPUT_STYLE = "inputStyle"; + /** * A list of gutter name and priorities currently registered for editors. @@ -137,6 +141,7 @@ define(function (require, exports, module) { cmOptions[TAB_SIZE] = "tabSize"; cmOptions[USE_TAB_CHAR] = "indentWithTabs"; cmOptions[WORD_WRAP] = "lineWrapping"; + cmOptions[INPUT_STYLE] = "inputStyle"; PreferencesManager.definePreference(CLOSE_BRACKETS, "boolean", true, { description: Strings.DESCRIPTION_CLOSE_BRACKETS @@ -223,10 +228,12 @@ define(function (require, exports, module) { PreferencesManager.definePreference(WORD_WRAP, "boolean", true, { description: Strings.DESCRIPTION_WORD_WRAP }); - PreferencesManager.definePreference(INDENT_LINE_COMMENT, "boolean", false, { description: Strings.DESCRIPTION_INDENT_LINE_COMMENT }); + PreferencesManager.definePreference(INPUT_STYLE, "string", "textarea", { + description: Strings.DESCRIPTION_INPUT_STYLE + }); var editorOptions = Object.keys(cmOptions); @@ -413,7 +420,7 @@ define(function (require, exports, module) { highlightSelectionMatches : currentOptions[HIGHLIGHT_MATCHES], indentUnit : currentOptions[USE_TAB_CHAR] ? currentOptions[TAB_SIZE] : currentOptions[SPACE_UNITS], indentWithTabs : currentOptions[USE_TAB_CHAR], - inputStyle : "textarea", // the "contenteditable" mode used on mobiles could cause issues + inputStyle : currentOptions[INPUT_STYLE], lineNumbers : currentOptions[SHOW_LINE_NUMBERS], lineWiseCopyCut : currentOptions[LINEWISE_COPY_CUT], lineWrapping : currentOptions[WORD_WRAP], @@ -1010,6 +1017,9 @@ define(function (require, exports, module) { this._codeMirror.on("cursorActivity", function (instance) { self.trigger("cursorActivity", self); }); + this._codeMirror.on("beforeSelectionChange", function (instance, selectionObj) { + self.trigger("beforeSelectionChange", selectionObj); + }); this._codeMirror.on("scroll", function (instance) { // If this editor is visible, close all dropdowns on scroll. // (We don't want to do this if we're just scrolling in a non-visible editor @@ -2203,6 +2213,19 @@ define(function (require, exports, module) { isMixed = (outerMode.name !== startMode.name); if (isMixed) { + // This is the magic code to let the code view know that we are in 'css' context + // if the CodeMirror outermode is 'htmlmixed' and we are in 'style' attributes + // value context. This has to be done as CodeMirror doesn't yet think this as 'css' + // This magic is executed only when user is having a cursor and not selection + // We will enable selection handling one we figure a way out to handle mixed scope selection + if (outerMode.name === 'htmlmixed' && primarySel.start.line === primarySel.end.line && primarySel.start.ch === primarySel.end.ch) { + var tagInfo = HTMLUtils.getTagInfo(this, primarySel.start, true), + tokenType = tagInfo.position.tokenType; + + if (tokenType === HTMLUtils.ATTR_VALUE && tagInfo.attr.name.toLowerCase() === 'style') { + return 'css'; + } + } // Shortcut the first check to avoid getModeAt(), which can be expensive if (primarySel.start.line !== primarySel.end.line || primarySel.start.ch !== primarySel.end.ch) { var endMode = TokenUtils.getModeAt(this._codeMirror, primarySel.end); @@ -2682,8 +2705,8 @@ define(function (require, exports, module) { }; /** - * Sets lineCommentIndent option. - * + * Sets indentLineComment option. + * Affects any editors that share the same preference location. * @param {boolean} value * @param {string=} fullPath Path to file to get preference for * @return {boolean} true if value was valid @@ -2694,7 +2717,7 @@ define(function (require, exports, module) { }; /** - * Returns true if word wrap is enabled for the specified or current file + * Returns true if indentLineComment is enabled for the specified or current file * @param {string=} fullPath Path to file to get preference for * @return {boolean} */ diff --git a/src/editor/EditorCommandHandlers.js b/src/editor/EditorCommandHandlers.js index 3a0dcf7c457..69307e250f7 100644 --- a/src/editor/EditorCommandHandlers.js +++ b/src/editor/EditorCommandHandlers.js @@ -297,6 +297,22 @@ define(function (require, exports, module) { return false; } + /** + * Return the column of the first non whitespace char in the given line. + * + * @private + * @param {!Document} doc + * @param {number} lineNum + * @returns {number} the column index or null + */ + function _firstNotWs(doc, lineNum) { + var text = doc.getLine(lineNum); + if (text === null || text === undefined) { + return 0; + } + + return text.search(/\S|$/); + } /** * Generates an edit that adds or removes block-comment tokens to the selection, preserving selection @@ -320,12 +336,13 @@ define(function (require, exports, module) { * The selection to block comment/uncomment. * @param {?Array.<{!{start:{line:number, ch:number}, end:{line:number, ch:number}, reversed:boolean, primary:boolean}}>} selectionsToTrack * An array of selections that should be tracked through this edit. + * @param {String} command The command callee. It cans be "line" or "block". * @return {{edit: {text: string, start:{line: number, ch: number}, end:?{line: number, ch: number}}|Array.<{text: string, start:{line: number, ch: number}, end:?{line: number, ch: number}}>, * selection: {start:{line:number, ch:number}, end:{line:number, ch:number}, primary:boolean, reversed: boolean, isBeforeEdit: boolean}>}| * Array.<{start:{line:number, ch:number}, end:{line:number, ch:number}, primary:boolean, reversed: boolean, isBeforeEdit: boolean}>}} * An edit description suitable for including in the edits array passed to `Document.doMultipleEdits()`. */ - function _getBlockCommentPrefixSuffixEdit(editor, prefix, suffix, linePrefixes, sel, selectionsToTrack) { + function _getBlockCommentPrefixSuffixEdit(editor, prefix, suffix, linePrefixes, sel, selectionsToTrack, command) { var doc = editor.document, ctx = TokenUtils.getInitialContext(editor._codeMirror, {line: sel.start.line, ch: sel.start.ch}), selEndIndex = editor.indexFromPos(sel.end), @@ -345,6 +362,12 @@ define(function (require, exports, module) { var searchCtx, atSuffix, suffixEnd, initialPos, endLine; + var indentLineComment = Editor.getIndentLineComment(); + + function isIndentLineCommand() { + return indentLineComment && command === "line"; + } + if (!selectionsToTrack) { // Track the original selection. selectionsToTrack = [_.cloneDeep(sel)]; @@ -467,12 +490,31 @@ define(function (require, exports, module) { // Comment out - add the suffix to the start and the prefix to the end. if (canComment) { var completeLineSel = sel.start.ch === 0 && sel.end.ch === 0 && sel.start.line < sel.end.line; + var startCh = _firstNotWs(doc, sel.start.line); if (completeLineSel) { - editGroup.push({text: suffix + "\n", start: sel.end}); - editGroup.push({text: prefix + "\n", start: sel.start}); + if (isIndentLineCommand()) { + var endCh = _firstNotWs(doc, sel.end.line - 1); + var useTabChar = Editor.getUseTabChar(editor.document.file.fullPath); + var indentChar = useTabChar ? "\t" : " "; + editGroup.push({ + text: _.repeat(indentChar, endCh) + suffix + "\n", + start: {line: sel.end.line, ch: 0} + }); + editGroup.push({ + text: prefix + "\n" + _.repeat(indentChar, startCh), + start: {line: sel.start.line, ch: startCh} + }); + } else { + editGroup.push({text: suffix + "\n", start: sel.end}); + editGroup.push({text: prefix + "\n", start: sel.start}); + } } else { editGroup.push({text: suffix, start: sel.end}); - editGroup.push({text: prefix, start: sel.start}); + if (isIndentLineCommand()) { + editGroup.push({text: prefix, start: { line: sel.start.line, ch: startCh }}); + } else { + editGroup.push({text: prefix, start: sel.start}); + } } // Correct the tracked selections. We can't just use the default selection fixup, @@ -497,7 +539,7 @@ define(function (require, exports, module) { if (completeLineSel) { // Just move the line down. pos.line++; - } else if (pos.line === sel.start.line) { + } else if (pos.line === sel.start.line && !(isIndentLineCommand() && pos.ch < startCh)) { pos.ch += prefix.length; } } @@ -513,16 +555,21 @@ define(function (require, exports, module) { // If both are found we assume that a complete line selection comment added new lines, so we remove them. var line = doc.getLine(prefixPos.line).trim(), prefixAtStart = prefixPos.ch === 0 && prefix.length === line.length, - suffixAtStart = false; + prefixIndented = indentLineComment && prefix.length === line.length, + suffixAtStart = false, + suffixIndented = false; if (suffixPos) { line = doc.getLine(suffixPos.line).trim(); suffixAtStart = suffixPos.ch === 0 && suffix.length === line.length; + suffixIndented = indentLineComment && suffix.length === line.length; } // Remove the suffix if there is one if (suffixPos) { - if (prefixAtStart && suffixAtStart) { + if (suffixIndented) { + editGroup.push({text: "", start: {line: suffixPos.line, ch: 0}, end: {line: suffixPos.line + 1, ch: 0}}); + } else if (prefixAtStart && suffixAtStart) { editGroup.push({text: "", start: suffixPos, end: {line: suffixPos.line + 1, ch: 0}}); } else { editGroup.push({text: "", start: suffixPos, end: {line: suffixPos.line, ch: suffixPos.ch + suffix.length}}); @@ -530,7 +577,9 @@ define(function (require, exports, module) { } // Remove the prefix - if (prefixAtStart && suffixAtStart) { + if (prefixIndented) { + editGroup.push({text: "", start: {line: prefixPos.line, ch: 0}, end: {line: prefixPos.line + 1, ch: 0}}); + } else if (prefixAtStart && suffixAtStart) { editGroup.push({text: "", start: prefixPos, end: {line: prefixPos.line + 1, ch: 0}}); } else { editGroup.push({text: "", start: prefixPos, end: {line: prefixPos.line, ch: prefixPos.ch + prefix.length}}); @@ -566,12 +615,13 @@ define(function (require, exports, module) { * lineSel A line selection as returned from `Editor.convertToLineSelections()`. `selectionForEdit` is the selection to perform * the line comment operation on, and `selectionsToTrack` are a set of selections associated with this line that need to be * tracked through the edit. + * @param {String} command The command callee. It cans be "line" or "block". * @return {{edit: {text: string, start:{line: number, ch: number}, end:?{line: number, ch: number}}|Array.<{text: string, start:{line: number, ch: number}, end:?{line: number, ch: number}}>, * selection: {start:{line:number, ch:number}, end:{line:number, ch:number}, primary:boolean, reversed: boolean, isBeforeEdit: boolean}>}| * Array.<{start:{line:number, ch:number}, end:{line:number, ch:number}, primary:boolean, reversed: boolean, isBeforeEdit: boolean}>}} * An edit description suitable for including in the edits array passed to `Document.doMultipleEdits()`. */ - function _getLineCommentPrefixSuffixEdit(editor, prefix, suffix, lineSel) { + function _getLineCommentPrefixSuffixEdit(editor, prefix, suffix, lineSel, command) { var sel = lineSel.selectionForEdit; // For one-line selections, we shrink the selection to exclude the trailing newline. @@ -581,7 +631,7 @@ define(function (require, exports, module) { // Now just run the standard block comment code, but make sure to track any associated selections // that were subsumed into this line selection. - return _getBlockCommentPrefixSuffixEdit(editor, prefix, suffix, [], sel, lineSel.selectionsToTrack); + return _getBlockCommentPrefixSuffixEdit(editor, prefix, suffix, [], sel, lineSel.selectionsToTrack, command); } /** @@ -591,12 +641,13 @@ define(function (require, exports, module) { * @param {!Editor} editor The editor to edit within. * @param {Array.<{start:{line:number, ch:number}, end:{line:number, ch:number}, primary:boolean, reversed: boolean, isBeforeEdit: boolean}>} * selections The selections we want to line-comment. + * @param {String} command The command callee. It cans be "line" or "block". * @return {Array.<{edit: {text: string, start:{line: number, ch: number}, end:?{line: number, ch: number}}|Array.<{text: string, start:{line: number, ch: number}, end:?{line: number, ch: number}}>, * selection: {start:{line:number, ch:number}, end:{line:number, ch:number}, primary:boolean, reversed: boolean, isBeforeEdit: boolean}>}| * Array.<{start:{line:number, ch:number}, end:{line:number, ch:number}, primary:boolean, reversed: boolean, isBeforeEdit: boolean}>}>} * An array of edit descriptions suitable for including in the edits array passed to `Document.doMultipleEdits()`. */ - function _getLineCommentEdits(editor, selections) { + function _getLineCommentEdits(editor, selections, command) { // We need to expand line selections in order to coalesce cursors on the same line, but we // don't want to merge adjacent line selections. var lineSelections = editor.convertToLineSelections(selections, { mergeAdjacent: false }), @@ -611,7 +662,7 @@ define(function (require, exports, module) { if (language.hasLineCommentSyntax()) { edit = _getLineCommentPrefixEdit(editor, language.getLineCommentPrefixes(), language.getBlockCommentPrefix(), language.getBlockCommentSuffix(), lineSel); } else if (language.hasBlockCommentSyntax()) { - edit = _getLineCommentPrefixSuffixEdit(editor, language.getBlockCommentPrefix(), language.getBlockCommentSuffix(), lineSel); + edit = _getLineCommentPrefixSuffixEdit(editor, language.getBlockCommentPrefix(), language.getBlockCommentSuffix(), lineSel, command); } } if (!edit) { @@ -633,7 +684,7 @@ define(function (require, exports, module) { return; } - editor.setSelections(editor.document.doMultipleEdits(_getLineCommentEdits(editor, editor.getSelections()))); + editor.setSelections(editor.document.doMultipleEdits(_getLineCommentEdits(editor, editor.getSelections(), "line"))); } /** @@ -674,7 +725,7 @@ define(function (require, exports, module) { // Handle any line-comment edits. It's okay if these are out-of-order with the other edits, since // they shouldn't overlap, and `doMultipleEdits()` will take care of sorting the edits so the // selections can be tracked appropriately. - edits.push.apply(edits, _getLineCommentEdits(editor, lineCommentSels)); + edits.push.apply(edits, _getLineCommentEdits(editor, lineCommentSels, "block")); editor.setSelections(editor.document.doMultipleEdits(edits)); } diff --git a/src/editor/EditorStatusBar.js b/src/editor/EditorStatusBar.js index 593a91e05c9..7d8531a5886 100644 --- a/src/editor/EditorStatusBar.js +++ b/src/editor/EditorStatusBar.js @@ -40,10 +40,24 @@ define(function (require, exports, module) { PreferencesManager = require("preferences/PreferencesManager"), StatusBar = require("widgets/StatusBar"), Strings = require("strings"), + FileUtils = require("file/FileUtils"), + InMemoryFile = require("document/InMemoryFile"), + Dialogs = require("widgets/Dialogs"), + DefaultDialogs = require("widgets/DefaultDialogs"), + ProjectManager = require("project/ProjectManager"), + Async = require("utils/Async"), + FileSystem = require("filesystem/FileSystem"), + CommandManager = require("command/CommandManager"), + Commands = require("command/Commands"), + DocumentManager = require("document/DocumentManager"), StringUtils = require("utils/StringUtils"); + + var SupportedEncodingsText = require("text!supported-encodings.json"), + SupportedEncodings = JSON.parse(SupportedEncodingsText); /* StatusBar indicators */ var languageSelect, // this is a DropdownButton instance + encodingSelect, // this is a DropdownButton instance $cursorInfo, $fileInfo, $indentType, @@ -74,12 +88,24 @@ define(function (require, exports, module) { var doc = editor.document, lang = doc.getLanguage(); - // Ensure width isn't left locked by a previous click of the dropdown (which may not have resulted in a "change" event at the time) - languageSelect.$button.css("width", "auto"); // Show the current language as button title languageSelect.$button.text(lang.getName()); } + /** + * Update encoding + * @param {Editor} editor Current editor + */ + function _updateEncodingInfo(editor) { + var doc = editor.document; + + // Show the current encoding as button title + if (!doc.file._encoding) { + doc.file._encoding = "UTF-8"; + } + encodingSelect.$button.text(doc.file._encoding); + } + /** * Update file information * @param {Editor} editor Current editor @@ -277,6 +303,7 @@ define(function (require, exports, module) { _updateCursorInfo(null, current); _updateLanguageInfo(current); + _updateEncodingInfo(current); _updateFileInfo(current); _initOverwriteMode(current); _updateIndentType(fullPath); @@ -305,6 +332,40 @@ define(function (require, exports, module) { languageSelect.items.unshift(LANGUAGE_SET_AS_DEFAULT); } + /** + * Change the encoding and reload the current document. + * If passed then save the preferred encoding in state. + */ + function _changeEncodingAndReloadDoc(document) { + var promise = document.reload(); + promise.done(function (text, readTimestamp) { + encodingSelect.$button.text(document.file._encoding); + // Store the preferred encoding in the state + var projectRoot = ProjectManager.getProjectRoot(), + context = { + location : { + scope: "user", + layer: "project", + layerID: projectRoot.fullPath + } + }; + var encoding = PreferencesManager.getViewState("encoding", context); + encoding[document.file.fullPath] = document.file._encoding; + PreferencesManager.setViewState("encoding", encoding, context); + }); + promise.fail(function (error) { + console.log("Error reloading contents of " + document.file.fullPath, error); + }); + } + + + /** + * Populate the encodingSelect DropdownButton's menu with all registered encodings + */ + function _populateEncodingDropdown() { + encodingSelect.items = SupportedEncodings; + } + /** * Initialize */ @@ -343,6 +404,27 @@ define(function (require, exports, module) { $("#status-language").append(languageSelect.$button); languageSelect.$button.attr("title", Strings.STATUSBAR_LANG_TOOLTIP); + + encodingSelect = new DropdownButton("", [], function (item, index) { + var document = EditorManager.getActiveEditor().document; + var html = _.escape(item); + + // Show indicators for currently selected & default languages for the current file + if (item === "UTF-8") { + html += " " + Strings.STATUSBAR_DEFAULT_LANG + ""; + } + if (item === document.file._encoding) { + html = "" + html; + } + return html; + }); + + encodingSelect.dropdownExtraClasses = "dropdown-status-bar"; + encodingSelect.$button.addClass("btn-status-bar"); + $("#status-encoding").append(encodingSelect.$button); + encodingSelect.$button.attr("title", Strings.STATUSBAR_ENCODING_TOOLTIP); + + // indentation event handlers $indentType.on("click", _toggleIndentType); $indentWidthLabel @@ -389,16 +471,77 @@ define(function (require, exports, module) { } }); + // Encoding select change handler + encodingSelect.on("select", function (e, encoding) { + var document = EditorManager.getActiveEditor().document, + originalPath = document.file.fullPath, + originalEncoding = document.file._encoding; + + document.file._encoding = encoding; + if (!(document.file instanceof InMemoryFile) && document.isDirty) { + CommandManager.execute(Commands.FILE_SAVE_AS, {doc: document}).done(function () { + var doc = DocumentManager.getCurrentDocument(); + if (originalPath === doc.file.fullPath) { + _changeEncodingAndReloadDoc(doc); + } else { + document.file._encoding = originalEncoding; + } + }); + } else if (document.file instanceof InMemoryFile) { + encodingSelect.$button.text(encoding); + } else if (!document.isDirty) { + _changeEncodingAndReloadDoc(document); + } + }); + $statusOverwrite.on("click", _updateEditorOverwriteMode); } // Initialize: status bar focused listener EditorManager.on("activeEditorChange", _onActiveEditorChange); + function _checkFileExistance(filePath, index, encoding) { + var deferred = new $.Deferred(), + fileEntry = FileSystem.getFileForPath(filePath); + + fileEntry.exists(function (err, exists) { + if (!err && exists) { + deferred.resolve(); + } else { + delete encoding[filePath]; + deferred.reject(); + } + }); + + return deferred.promise(); + } + + ProjectManager.on("projectOpen", function () { + var projectRoot = ProjectManager.getProjectRoot(), + context = { + location : { + scope: "user", + layer: "project", + layerID: projectRoot.fullPath + } + }; + var encoding = PreferencesManager.getViewState("encoding", context); + if (!encoding) { + PreferencesManager.setViewState("encoding", {}, context); + } + Async.doSequentially(Object.keys(encoding), function (filePath, index) { + return _checkFileExistance(filePath, index, encoding); + }, false) + .always(function () { + PreferencesManager.setViewState("encoding", encoding, context); + }); + }); + AppInit.htmlReady(_init); AppInit.appReady(function () { // Populate language switcher with all languages after startup; update it later if this set changes _populateLanguageDropdown(); + _populateEncodingDropdown(); LanguageManager.on("languageAdded languageModified", _populateLanguageDropdown); _onActiveEditorChange(null, EditorManager.getActiveEditor(), null); StatusBar.show(); diff --git a/src/extensibility/ExtensionManagerDialog.js b/src/extensibility/ExtensionManagerDialog.js index 64d4b712ec0..308810900b4 100644 --- a/src/extensibility/ExtensionManagerDialog.js +++ b/src/extensibility/ExtensionManagerDialog.js @@ -321,6 +321,7 @@ define(function (require, exports, module) { } models.push(new ExtensionManagerViewModel.InstalledViewModel()); + models.push(new ExtensionManagerViewModel.DefaultViewModel()); function updateSearchDisabled() { var model = models[_activeTabIndex], diff --git a/src/extensibility/ExtensionManagerView.js b/src/extensibility/ExtensionManagerView.js index 2a981ff6c68..e6b25659b34 100644 --- a/src/extensibility/ExtensionManagerView.js +++ b/src/extensibility/ExtensionManagerView.js @@ -336,10 +336,10 @@ define(function (require, exports, module) { context.removalAllowed = this.model.source === "installed" && !context.failedToStart && !hasPendingAction; - context.disablingAllowed = this.model.source === "installed" && - !context.disabled && !hasPendingAction; - context.enablingAllowed = this.model.source === "installed" && - context.disabled && !hasPendingAction; + var isDefaultOrInstalled = this.model.source === "default" || this.model.source === "installed"; + var isDefaultAndTheme = this.model.source === "default" && context.metadata.theme; + context.disablingAllowed = isDefaultOrInstalled && !isDefaultAndTheme && !context.disabled && !hasPendingAction; + context.enablingAllowed = isDefaultOrInstalled && !isDefaultAndTheme && context.disabled && !hasPendingAction; // Copy over helper functions that we share with the registry app. ["lastVersionDate", "authorInfo"].forEach(function (helper) { diff --git a/src/extensibility/ExtensionManagerViewModel.js b/src/extensibility/ExtensionManagerViewModel.js index cb86d1327ee..73577e8fa90 100644 --- a/src/extensibility/ExtensionManagerViewModel.js +++ b/src/extensibility/ExtensionManagerViewModel.js @@ -80,6 +80,12 @@ define(function (require, exports, module) { */ ExtensionManagerViewModel.prototype.SOURCE_INSTALLED = "installed"; + /** + * @type {string} + * Constant indicating that this model/view should initialize from the list of default bundled extensions. + */ + ExtensionManagerViewModel.prototype.SOURCE_DEFAULT = "default"; + /** * @type {Object} * The current set of extensions managed by this model. Same as ExtensionManager.extensions. @@ -509,6 +515,65 @@ define(function (require, exports, module) { return entry; }; + /** + * Model for displaying default extensions that come bundled with Brackets + */ + function DefaultViewModel() { + ExtensionManagerViewModel.call(this); + } + + // Inheritance setup + DefaultViewModel.prototype = Object.create(ExtensionManagerViewModel.prototype); + DefaultViewModel.prototype.constructor = DefaultViewModel; + + /** + * Add SOURCE_DEFAULT to DefaultViewModel + */ + DefaultViewModel.prototype.source = ExtensionManagerViewModel.prototype.SOURCE_DEFAULT; + + /** + * Initializes the model from the set of default extensions, sorted alphabetically by id + * @return {$.Promise} a promise that's resolved when we're done initializing. + */ + DefaultViewModel.prototype._initializeFromSource = function () { + var self = this; + this.extensions = ExtensionManager.extensions; + this.sortedFullSet = Object.keys(this.extensions) + .filter(function (key) { + return self.extensions[key].installInfo && + self.extensions[key].installInfo.locationType === ExtensionManager.LOCATION_DEFAULT; + }); + this._sortFullSet(); + this._setInitialFilter(); + return new $.Deferred().resolve().promise(); + }; + + /** + * @private + * Re-sorts the current full set + */ + DefaultViewModel.prototype._sortFullSet = function () { + var self = this; + this.sortedFullSet = this.sortedFullSet.sort(function (key1, key2) { + var metadata1 = self.extensions[key1].installInfo.metadata, + metadata2 = self.extensions[key2].installInfo.metadata, + id1 = (metadata1.title || metadata1.name).toLocaleLowerCase(), + id2 = (metadata2.title || metadata2.name).toLocaleLowerCase(); + return id1.localeCompare(id2); + }); + }; + + /** + * @private + * Finds the default extension metadata by id. If there is no default extension matching the given id, + * this returns `null`. + * @param {string} id of the theme extension + * @return {Object?} extension metadata or null if there's no matching extension + */ + DefaultViewModel.prototype._getEntry = function (id) { + return this.extensions[id] ? this.extensions[id].installInfo : null; + }; + /** * The model for the ExtensionManagerView that is responsible for handling registry-based theme extensions. * This extends ExtensionManagerViewModel. @@ -573,4 +638,5 @@ define(function (require, exports, module) { exports.RegistryViewModel = RegistryViewModel; exports.ThemesViewModel = ThemesViewModel; exports.InstalledViewModel = InstalledViewModel; + exports.DefaultViewModel = DefaultViewModel; }); \ No newline at end of file diff --git a/src/extensibility/Package.js b/src/extensibility/Package.js index 721ef3a2d05..d49647748a1 100644 --- a/src/extensibility/Package.js +++ b/src/extensibility/Package.js @@ -43,6 +43,11 @@ define(function (require, exports, module) { description: Strings.DESCRIPTION_PROXY }); + var PREF_EXTENSIONS_DEFAULT_DISABLED = "extensions.default.disabled"; + PreferencesManager.definePreference(PREF_EXTENSIONS_DEFAULT_DISABLED, "array", [], { + description: Strings.DESCRIPTION_DISABLED_DEFAULT_EXTENSIONS + }); + var Errors = { ERROR_LOADING: "ERROR_LOADING", MALFORMED_URL: "MALFORMED_URL", @@ -436,6 +441,23 @@ define(function (require, exports, module) { }); } + /** + * This function manages the PREF_EXTENSIONS_DEFAULT_DISABLED preference + * holding an array of default extension paths that should not be loaded + * on Brackets startup + */ + function toggleDefaultExtension(path, enabled) { + var arr = PreferencesManager.get(PREF_EXTENSIONS_DEFAULT_DISABLED); + if (!Array.isArray(arr)) { arr = []; } + var io = arr.indexOf(path); + if (enabled === true && io !== -1) { + arr.splice(io, 1); + } else if (enabled === false && io === -1) { + arr.push(path); + } + PreferencesManager.set(PREF_EXTENSIONS_DEFAULT_DISABLED, arr); + } + /** * Disables the extension at the given path. * @@ -446,12 +468,19 @@ define(function (require, exports, module) { function disable(path) { var result = new $.Deferred(), file = FileSystem.getFileForPath(path + "/.disabled"); + + var defaultExtensionPath = ExtensionLoader.getDefaultExtensionPath(); + if (file.fullPath.indexOf(defaultExtensionPath) === 0) { + toggleDefaultExtension(path, false); + result.resolve(); + return result.promise(); + } + file.write("", function (err) { if (err) { - result.reject(err); - } else { - result.resolve(); + return result.reject(err); } + result.resolve(); }); return result.promise(); } @@ -466,14 +495,25 @@ define(function (require, exports, module) { function enable(path) { var result = new $.Deferred(), file = FileSystem.getFileForPath(path + "/.disabled"); - file.unlink(function (err) { - if (err) { - result.reject(err); - return; - } + + function afterEnable() { ExtensionLoader.loadExtension(FileUtils.getBaseName(path), { baseUrl: path }, "main") .done(result.resolve) .fail(result.reject); + } + + var defaultExtensionPath = ExtensionLoader.getDefaultExtensionPath(); + if (file.fullPath.indexOf(defaultExtensionPath) === 0) { + toggleDefaultExtension(path, true); + afterEnable(); + return result.promise(); + } + + file.unlink(function (err) { + if (err) { + return result.reject(err); + } + afterEnable(); }); return result.promise(); } diff --git a/src/extensibility/node/npm-installer.js b/src/extensibility/node/npm-installer.js index a5271d87446..46d25cfbeb6 100644 --- a/src/extensibility/node/npm-installer.js +++ b/src/extensibility/node/npm-installer.js @@ -114,7 +114,7 @@ function performNpmInstallIfRequired(npmOptions, validationResult, callback) { packageJson = null; } - if (!packageJson || !packageJson.dependencies) { + if (!packageJson || !packageJson.dependencies || !Object.keys(packageJson.dependencies).length) { return finish(); } diff --git a/src/extensions/default/CSSAtRuleCodeHints/AtRulesDef.json b/src/extensions/default/CSSAtRuleCodeHints/AtRulesDef.json new file mode 100644 index 00000000000..671a926c897 --- /dev/null +++ b/src/extensions/default/CSSAtRuleCodeHints/AtRulesDef.json @@ -0,0 +1,10 @@ +{ + "@charset": "Defines the character set used by the style sheet.", + "@import": "Tells the CSS engine to include an external style sheet.", + "@namespace": "Tells the CSS engine that all its content must be considered prefixed with an XML namespace.", + "@media": "A conditional group rule which will apply its content if the device meets the criteria of the condition defined using a media query.", + "@supports": "A conditional group rule which will apply its content if the browser meets the criteria of the given condition.", + "@page": "Describes the aspect of layout changes which will be applied when printing the document.", + "@font-face": "Describes the aspect of an external font to be downloaded.", + "@keyframes": "Describes the aspect of intermediate steps in a CSS animation sequence." +} diff --git a/src/extensions/default/CSSAtRuleCodeHints/main.js b/src/extensions/default/CSSAtRuleCodeHints/main.js new file mode 100644 index 00000000000..a352a493a02 --- /dev/null +++ b/src/extensions/default/CSSAtRuleCodeHints/main.js @@ -0,0 +1,118 @@ +/* + * Copyright (c) 2017 - present Adobe Systems Incorporated. All rights reserved. + * + * 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. + * + */ + +define(function (require, exports, module) { + "use strict"; + + // Load dependent modules + var AppInit = brackets.getModule("utils/AppInit"), + CodeHintManager = brackets.getModule("editor/CodeHintManager"), + AtRulesText = require("text!AtRulesDef.json"), + AtRules = JSON.parse(AtRulesText); + + + /** + * @constructor + */ + function AtRuleHints() { + } + + // As we are only going to provide @rules name hints + // we should claim that we don't have hints for anything else + AtRuleHints.prototype.hasHints = function (editor, implicitChar) { + var pos = editor.getCursorPos(), + token = editor._codeMirror.getTokenAt(pos), + cmState; + + this.editor = editor; + + if (token.state.base && token.state.base.localState) { + cmState = token.state.base.localState; + } else { + cmState = token.state; + } + + // Check if we are at '@' rule 'def' context + if ((token.type === "def" && cmState.context.type === "at") + || (token.type === "variable-2" && (cmState.context.type === "top" || cmState.context.type === "block"))) { + this.filter = token.string; + return true; + } else { + this.filter = null; + return false; + } + }; + + AtRuleHints.prototype.getHints = function (implicitChar) { + var pos = this.editor.getCursorPos(), + token = this.editor._codeMirror.getTokenAt(pos); + + this.filter = token.string; + this.token = token; + + if (!this.filter) { + return null; + } + + // Filter the property list based on the token string + var result = Object.keys(AtRules).filter(function (key) { + if (key.indexOf(token.string) === 0) { + return key; + } + }).sort(); + + return { + hints: result, + match: this.filter, + selectInitial: true, + defaultDescriptionWidth: true, + handleWideResults: false + }; + }; + + + /** + * Inserts a given @ hint into the current editor context. + * + * @param {string} completion + * The hint to be inserted into the editor context. + * + * @return {boolean} + * Indicates whether the manager should follow hint insertion with an + * additional explicit hint request. + */ + AtRuleHints.prototype.insertHint = function (completion) { + var cursor = this.editor.getCursorPos(); + this.editor.document.replaceRange(completion, {line: cursor.line, ch: this.token.start}, {line: cursor.line, ch: this.token.end}); + return false; + }; + + AppInit.appReady(function () { + // Register code hint providers + var restrictedBlockHints = new AtRuleHints(); + CodeHintManager.registerHintProvider(restrictedBlockHints, ["css", "less", "scss"], 0); + + // For unit testing + exports.restrictedBlockHints = restrictedBlockHints; + }); +}); diff --git a/src/extensions/default/CSSAtRuleCodeHints/unittests.js b/src/extensions/default/CSSAtRuleCodeHints/unittests.js new file mode 100644 index 00000000000..3044c706ce7 --- /dev/null +++ b/src/extensions/default/CSSAtRuleCodeHints/unittests.js @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2017 - present Adobe Systems Incorporated. All rights reserved. + * + * 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. + * + */ + +/*global describe, it, xit, expect, beforeEach, afterEach */ + +define(function (require, exports, module) { + "use strict"; + + var SpecRunnerUtils = brackets.getModule("spec/SpecRunnerUtils"), + CSSAtRuleCodeHints = require("main"); + + describe("CSS '@' rules Code Hinting", function () { + + var defaultContent = "@ { \n" + + "} \n" + + " \n" + + "@m "; + + + var testDocument, testEditor; + + /* + * Create a mockup editor with the given content and language id. + * + * @param {string} content - content for test window + * @param {string} languageId + */ + function setupTest(content, languageId) { + var mock = SpecRunnerUtils.createMockEditor(content, languageId); + testDocument = mock.doc; + testEditor = mock.editor; + } + + function tearDownTest() { + SpecRunnerUtils.destroyMockEditor(testDocument); + testEditor = null; + testDocument = null; + } + + // Ask provider for hints at current cursor position; expect it to return some + function expectHints(provider, implicitChar, returnWholeObj) { + expect(provider.hasHints(testEditor, implicitChar)).toBe(true); + var hintsObj = provider.getHints(); + expect(hintsObj).toBeTruthy(); + // return just the array of hints if returnWholeObj is falsy + return returnWholeObj ? hintsObj : hintsObj.hints; + } + + // Ask provider for hints at current cursor position; expect it NOT to return any + function expectNoHints(provider, implicitChar) { + expect(provider.hasHints(testEditor, implicitChar)).toBe(false); + } + + // compares lists to ensure they are the same + function verifyListsAreIdentical(hintList, values) { + var i; + expect(hintList.length).toBe(values.length); + for (i = 0; i < values.length; i++) { + expect(hintList[i]).toBe(values[i]); + } + } + + + function selectHint(provider, expectedHint, implicitChar) { + var hintList = expectHints(provider, implicitChar); + expect(hintList.indexOf(expectedHint)).not.toBe(-1); + return provider.insertHint(expectedHint); + } + + // Helper function for testing cursor position + function fixPos(pos) { + if (!("sticky" in pos)) { + pos.sticky = null; + } + return pos; + } + function expectCursorAt(pos) { + var selection = testEditor.getSelection(); + expect(fixPos(selection.start)).toEqual(fixPos(selection.end)); + expect(fixPos(selection.start)).toEqual(fixPos(pos)); + } + + function verifyFirstEntry(hintList, expectedFirstHint) { + expect(hintList[0]).toBe(expectedFirstHint); + } + + // Helper function to + // a) ensure the hintList and the list with the available values have the same size + // b) ensure that all possible values are mentioned in the hintList + function verifyAllValues(hintList, values) { + expect(hintList.length).toBe(values.length); + expect(hintList.sort().toString()).toBe(values.sort().toString()); + } + + + var modesToTest = ['css', 'scss', 'less'], + modeCounter; + + + var selectMode = function () { + return modesToTest[modeCounter]; + }; + + describe("'@' rules in styles mode (selection of correct restricted block based on input)", function () { + + beforeEach(function () { + // create Editor instance (containing a CodeMirror instance) + var mock = SpecRunnerUtils.createMockEditor(defaultContent, selectMode()); + testEditor = mock.editor; + testDocument = mock.doc; + }); + + afterEach(function () { + SpecRunnerUtils.destroyMockEditor(testDocument); + testEditor = null; + testDocument = null; + }); + + var testAllHints = function () { + testEditor.setCursorPos({ line: 0, ch: 1 }); // after @ + var hintList = expectHints(CSSAtRuleCodeHints.restrictedBlockHints); + verifyFirstEntry(hintList, "@charset"); // filtered on "empty string" + verifyListsAreIdentical(hintList, ["@charset", + "@font-face", + "@import", + "@keyframes", + "@media", + "@namespace", + "@page", + "@supports"]); + }, + testFilteredHints = function () { + testEditor.setCursorPos({ line: 3, ch: 2 }); // after @m + var hintList = expectHints(CSSAtRuleCodeHints.restrictedBlockHints); + verifyFirstEntry(hintList, "@media"); // filtered on "@m" + verifyListsAreIdentical(hintList, ["@media"]); + }, + testNoHintsOnSpace = function () { + testEditor.setCursorPos({ line: 3, ch: 3 }); // after { + expect(CSSAtRuleCodeHints.restrictedBlockHints.hasHints(testEditor, '')).toBe(false); + }, + testNoHints = function () { + testEditor.setCursorPos({ line: 0, ch: 0 }); // after { + expect(CSSAtRuleCodeHints.restrictedBlockHints.hasHints(testEditor, 'c')).toBe(false); + }; + + for (modeCounter in modesToTest) { + it("should list all rule hints right after @", testAllHints); + it("should list filtered rule hints right after @m", testFilteredHints); + it("should not list rule hints on space", testNoHintsOnSpace); + it("should not list rule hints if the cursor is before @", testNoHints); + } + }); + + describe("'@' rules in LESS mode (selection of correct restricted block based on input)", function () { + defaultContent = "@ { \n" + + "} \n" + + " \n" + + "@m \n" + + "@green: green;\n" + + ".div { \n" + + "color: @" + + "} \n"; + + beforeEach(function () { + // create Editor instance (containing a CodeMirror instance) + var mock = SpecRunnerUtils.createMockEditor(defaultContent, "less"); + testEditor = mock.editor; + testDocument = mock.doc; + }); + + afterEach(function () { + SpecRunnerUtils.destroyMockEditor(testDocument); + testEditor = null; + testDocument = null; + }); + + it("should not list rule hints in less variable evaluation scope", function () { + testEditor.setCursorPos({ line: 3, ch: 3 }); // after { + expect(CSSAtRuleCodeHints.restrictedBlockHints.hasHints(testEditor, '')).toBe(false); + }); + + }); + + describe("'@' rule hint insertion", function () { + beforeEach(function () { + // create Editor instance (containing a CodeMirror instance) + var mock = SpecRunnerUtils.createMockEditor(defaultContent, "css"); + testEditor = mock.editor; + testDocument = mock.doc; + }); + + afterEach(function () { + SpecRunnerUtils.destroyMockEditor(testDocument); + testEditor = null; + testDocument = null; + }); + + it("should insert @rule selected", function () { + testEditor.setCursorPos({ line: 0, ch: 1 }); // cursor after '@' + selectHint(CSSAtRuleCodeHints.restrictedBlockHints, "@charset"); + expect(testDocument.getLine(0)).toBe("@charset { "); + expectCursorAt({ line: 0, ch: 8 }); + }); + + it("should insert filtered selection by replacing the existing rule", function () { + testEditor.setCursorPos({ line: 3, ch: 2 }); // cursor after '@m' + selectHint(CSSAtRuleCodeHints.restrictedBlockHints, "@media"); + expect(testDocument.getLine(3)).toBe("@media "); + expectCursorAt({ line: 3, ch: 6 }); + }); + }); + + }); +}); + diff --git a/src/extensions/default/CSSCodeHints/CSSProperties.json b/src/extensions/default/CSSCodeHints/CSSProperties.json index 4b22076b357..7b80dbca158 100644 --- a/src/extensions/default/CSSCodeHints/CSSProperties.json +++ b/src/extensions/default/CSSCodeHints/CSSProperties.json @@ -2,6 +2,7 @@ "align-content": {"values": ["center", "flex-end", "flex-start", "space-around", "space-between", "stretch"]}, "align-items": {"values": ["baseline", "center", "flex-end", "flex-start", "stretch"]}, "align-self": {"values": ["auto", "baseline", "center", "flex-end", "flex-start", "stretch"]}, + "all": {"values": []}, "animation": {"values": []}, "animation-delay": {"values": []}, "animation-direction": {"values": ["alternate", "alternate-reverse", "normal", "reverse"]}, @@ -14,7 +15,7 @@ "backface-visibility": {"values": ["hidden", "visible"]}, "background": {"values": []}, "background-attachment": {"values": ["fixed", "local", "scroll", "inherit"]}, - "background-blend-mode": {"values": ["color", "color-burn", "color-dodge", "darken", "difference", "exclusion", "hard-light", "hue", "lighten", "luminosity", "normal", "multiply", "overlay", "saturation", "screen", "soft-light"]}, + "background-blend-mode": {"values": ["color", "color-burn", "color-dodge", "darken", "difference", "exclusion", "hard-light", "hue", "lighten", "luminosity", "multiply", "normal", "overlay", "saturation", "screen", "soft-light"]}, "background-clip": {"values": ["border-box", "content-box", "padding-box", "inherit"]}, "background-color": {"values": ["inherit"], "type": "color"}, "background-image": {"values": ["image()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()", "url()"]}, @@ -55,14 +56,15 @@ "border-top-style": {"values": ["dashed", "dotted", "double", "groove", "hidden", "inset", "none", "outset", "ridge", "solid", "inherit"]}, "border-top-width": {"values": ["medium", "thin", "thick", "inherit"]}, "border-width": {"values": ["medium", "thin", "thick", "inherit"]}, - "box-decoration-break": {"values": []}, + "box-decoration-break": {"values": ["clone", "slice"]}, "box-shadow": {"values": []}, - "box-sizing": {"values": ["border-box", "content-box", "padding-box", "inherit"]}, + "box-sizing": {"values": ["border-box", "content-box", "inherit"]}, "bottom": {"values": ["auto", "inherit"]}, "break-after": {"values": ["always", "auto", "avoid", "avoid-column", "avoid-page", "avoid-region", "column", "left", "page", "region", "right"]}, "break-before": {"values": ["always", "auto", "avoid", "avoid-column", "avoid-page", "avoid-region", "column", "left", "page", "region", "right"]}, "break-inside": {"values": ["auto", "avoid", "avoid-column", "avoid-page", "avoid-region"]}, "caption-side": {"values": ["bottom", "top", "inherit"]}, + "caret-color": {"values": ["auto"], "type": "color"}, "clear": {"values": ["both", "left", "none", "right", "inherit"]}, "clip": {"values": ["auto", "inherit"]}, "color": {"values": ["inherit"], "type": "color"}, @@ -81,7 +83,7 @@ "counter-reset": {"values": ["none", "inherit"]}, "cursor": {"values": ["alias", "all-scroll", "auto", "cell", "col-resize", "context-menu", "copy", "crosshair", "default", "e-resize", "ew-resize", "grab", "grabbing", "help", "inherit", "move", "n-resize", "ne-resize", "nesw-resize", "no-drop", "none", "not-allowed", "ns-resize", "nw-resize", "nwse-resize", "pointer", "progress", "row-resize", "s-resize", "se-resize", "sw-resize", "text", "vertical-text", "w-resize", "wait", "zoom-in", "zoom-out"]}, "direction": {"values": ["ltr", "rtl", "inherit"]}, - "display": {"values": ["block", "flex", "grid", "inline", "inline-block", "inline-flex", "inline-grid", "inline-table", "list-item", "none", "run-in", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row", "table-row-group", "inherit"]}, + "display": {"values": ["block", "contents", "flex", "flow-root", "grid", "inline", "inline-block", "inline-flex", "inline-grid", "inline-table", "list-item", "none", "run-in", "subgrid", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row", "table-row-group", "inherit"]}, "empty-cells": {"values": ["hide", "show", "inherit"]}, "filter": {"values": ["blur()", "brightness()", "contrast()", "custom()", "drop-shadow()", "grayscale()", "hue-rotate()", "invert()", "none", "opacity()", "sepia()", "saturate()", "url()"]}, "flex": {"values": ["auto", "initial", "none"]}, @@ -127,13 +129,16 @@ "grid-row-end": {"values": []}, "grid-row-start": {"values": []}, "grid-row-gap": {"values": []}, + "grid-template": {"values": ["none"]}, "grid-template-areas": {"values": []}, "grid-template-columns": {"values": ["auto"]}, "grid-template-rows": {"values": ["auto"]}, + "hanging-punctuation": {"values": ["allow-end", "first", "force-end", "last", "none"]}, "height": {"values": ["auto", "inherit"]}, "hyphens": {"values": ["auto", "manual", "none"]}, "image-orientation": {"values": []}, "image-resolution": {"values": ["from-image", "snap"]}, + "isolation": {"values": ["auto", "isolate"]}, "justify-content": {"values": ["center", "flex-end", "flex-start", "space-around", "space-between"]}, "left": {"values": ["auto", "inherit"]}, "letter-spacing": {"values": ["normal", "inherit"]}, @@ -151,6 +156,7 @@ "max-width": {"values": ["none", "inherit"]}, "min-height": {"values": ["inherit"]}, "min-width": {"values": ["inherit"]}, + "mix-blend-mode": {"values": ["color", "color-burn", "color-dodge", "darken", "difference", "exclusion", "hard-light", "hue", "lighten", "luminosity", "multiply", "normal", "overlay", "saturation", "screen", "soft-light"]}, "object-fit": {"values": ["contain", "cover", "fill", "none", "scale-down"]}, "object-position": {"values": ["left", "center", "right", "bottom", "top"]}, "opacity": {"values": ["inherit"]}, @@ -183,11 +189,13 @@ "region-fragment": {"values": ["auto", "break"]}, "resize": {"values": ["both", "horizontal", "none", "vertical", "inherit"]}, "right": {"values": ["auto", "inherit"]}, + "scroll-behavior": {"values": ["auto", "smooth"]}, "src": {"values": [ "url()"]}, "shape-image-threshold": {"values": []}, "shape-inside": {"values": ["auto", "circle()", "ellipse()", "inherit", "outside-shape", "polygon()", "rectangle()"]}, "shape-margin": {"values": []}, "shape-outside": {"values": ["none", "inherit", "circle()", "ellipse()", "polygon()", "inset()", "margin-box", "border-box", "padding-box", "content-box", "url()", "image()", "linear-gradient()", "radial-gradient()", "repeating-linear-gradient()", "repeating-radial-gradient()"]}, + "tab-size": {"values": []}, "table-layout": {"values": ["auto", "fixed", "inherit"]}, "text-align": {"values": ["center", "left", "justify", "right", "inherit"]}, "text-align-last": {"values": ["center", "left", "justify", "right", "inherit"]}, @@ -217,6 +225,7 @@ "transition-timing-function": {"values": ["cubic-bezier()", "ease", "ease-in", "ease-in-out", "ease-out", "linear", "step-end", "step-start", "steps()"]}, "unicode-bidi": {"values": ["bidi-override", "embed", "normal", "inherit"]}, "unicode-range": {"values": []}, + "user-select": {"values": ["all", "auto", "contain", "none", "text"]}, "vertical-align": {"values": ["baseline", "bottom", "middle", "sub", "super", "text-bottom", "text-top", "top", "inherit"]}, "visibility": {"values": ["collapse", "hidden", "visible", "inherit"]}, "white-space": {"values": ["normal", "nowrap", "pre", "pre-line", "pre-wrap", "inherit"]}, diff --git a/src/extensions/default/CSSCodeHints/main.js b/src/extensions/default/CSSCodeHints/main.js index 4006d837b2f..8bce6d23ecf 100644 --- a/src/extensions/default/CSSCodeHints/main.js +++ b/src/extensions/default/CSSCodeHints/main.js @@ -468,7 +468,7 @@ define(function (require, exports, module) { AppInit.appReady(function () { var cssPropHints = new CssPropHints(); - CodeHintManager.registerHintProvider(cssPropHints, ["css", "scss", "less"], 0); + CodeHintManager.registerHintProvider(cssPropHints, ["css", "scss", "less"], 1); ExtensionUtils.loadStyleSheet(module, "styles/brackets-css-hints.css"); diff --git a/src/extensions/default/CSSCodeHints/unittests.js b/src/extensions/default/CSSCodeHints/unittests.js index 24dc3a945e4..98dcaeba25a 100644 --- a/src/extensions/default/CSSCodeHints/unittests.js +++ b/src/extensions/default/CSSCodeHints/unittests.js @@ -51,6 +51,21 @@ define(function (require, exports, module) { " bordborder: \n" + " color\n" + "} \n"; + + var defaultHTMLContent = " \n" + + " \n" + + " \n" + + " \n" + + "
\n" + // line 10 + "
\n" + + " \n" + + " \n"; var testDocument, testEditor; @@ -437,6 +452,92 @@ define(function (require, exports, module) { }); }); + + describe("CSS Hint provider in style attribute value context for html mode", function () { + + beforeEach(function () { + // create Editor instance (containing a CodeMirror instance) + var mock = SpecRunnerUtils.createMockEditor(defaultHTMLContent, "html"); + testEditor = mock.editor; + testDocument = mock.doc; + }); + + afterEach(function () { + SpecRunnerUtils.destroyMockEditor(testDocument); + testEditor = null; + testDocument = null; + }); + + it("should list all prop-name hints right after the open quote for style value context", function () { + testEditor.setCursorPos({ line: 4, ch: 12 }); // after "='" + var hintList = expectHints(CSSCodeHints.cssPropHintProvider); + verifyAttrHints(hintList, "align-content"); // filtered on "empty string" + }); + + it("should list all prop-name hints in new line for style value context", function () { + testEditor.setCursorPos({ line: 5, ch: 0 }); + + var hintList = expectHints(CSSCodeHints.cssPropHintProvider); + verifyAttrHints(hintList, "align-content"); // filtered on "empty string" + }); + + it("should list all prop-name hints starting with 'b' in new line for style value context", function () { + testEditor.setCursorPos({ line: 6, ch: 2 }); + + var hintList = expectHints(CSSCodeHints.cssPropHintProvider); + verifyAttrHints(hintList, "backface-visibility"); // filtered on "b" + }); + + it("should list all prop-name hints starting with 'bord' for style value context", function () { + // insert semicolon after previous rule to avoid incorrect tokenizing + testDocument.replaceRange(";", { line: 6, ch: 2 }); + + testEditor.setCursorPos({ line: 7, ch: 5 }); + var hintList = expectHints(CSSCodeHints.cssPropHintProvider); + verifyAttrHints(hintList, "border"); // filtered on "bord" + }); + + it("should list all prop-name hints starting with 'border-' for style value context", function () { + // insert semicolon after previous rule to avoid incorrect tokenizing + testDocument.replaceRange(";", { line: 7, ch: 5 }); + + testEditor.setCursorPos({ line: 8, ch: 8 }); + var hintList = expectHints(CSSCodeHints.cssPropHintProvider); + verifyAttrHints(hintList, "border-bottom"); // filtered on "border-" + }); + + it("should list only prop-name hint border-color for style value context", function () { + // insert semicolon after previous rule to avoid incorrect tokenizing + testDocument.replaceRange(";", { line: 8, ch: 8 }); + + testEditor.setCursorPos({ line: 9, ch: 12 }); + var hintList = expectHints(CSSCodeHints.cssPropHintProvider); + verifyAttrHints(hintList, "border-color"); // filtered on "border-color" + verifyListsAreIdentical(hintList, ["border-color", + "border-left-color", + "border-top-color", + "border-bottom-color", + "border-right-color"]); + }); + + it("should list prop-name hints at end of property-value finished by ; for style value context", function () { + testEditor.setCursorPos({ line: 10, ch: 19 }); // after ; + var hintList = expectHints(CSSCodeHints.cssPropHintProvider); + verifyAttrHints(hintList, "align-content"); // filtered on "empty string" + }); + + it("should NOT list prop-name hints right before style value context", function () { + testEditor.setCursorPos({ line: 4, ch: 11 }); // after = + expectNoHints(CSSCodeHints.cssPropHintProvider); + }); + + it("should NOT list prop-name hints after style value context", function () { + testEditor.setCursorPos({ line: 10, ch: 20 }); // after "'" + expectNoHints(CSSCodeHints.cssPropHintProvider); + }); + + }); + describe("CSS hint provider in other filecontext (e.g. javascript)", function () { var defaultContent = "function foobar (args) { \n " + diff --git a/src/extensions/default/CSSPseudoSelectorHints/PseudoSelectors.json b/src/extensions/default/CSSPseudoSelectorHints/PseudoSelectors.json new file mode 100644 index 00000000000..e6a4ed7ce40 --- /dev/null +++ b/src/extensions/default/CSSPseudoSelectorHints/PseudoSelectors.json @@ -0,0 +1,52 @@ +{ + "selectors": + { + "active": {"desc": "Selects the active link"}, + "checked": {"desc": "Selects every checked element"}, + "default": {"desc": "Selects every UI element that is the default among a group of similar elements"}, + "dir(direction)": {"desc": "Selects every element whose text direction is 'direction'", "text": "dir()"}, + "disabled": {"desc": "Selects every disabled element"}, + "empty": {"desc": "Selects every element that has no children/text (including text nodes)"}, + "enabled": {"desc": "Selects every enabled element"}, + "first-child": {"desc": "Selects every element that is the first child of its parent"}, + "first-of-type": {"desc": "Selects every element that is the first element identified by 'type' of its parent"}, + "focus": {"desc": "Selects the input element which has focus"}, + "focus-within": {"desc": "Selects every element which or whose descendant has focus"}, + "fullscreen": {"desc": "Selects the element being in full-screen mode"}, + "hover": {"desc": "Selects elements on mouse over"}, + "in-range": {"desc": "Selects input elements with a value within a specified range"}, + "indeterminate": {"desc": "Selects every indeterminate checkbox or radio button"}, + "invalid": {"desc": "Selects all input elements with an invalid value"}, + "lang(language)": {"desc": "Selects every element with a lang attribute equal to 'language'", "text": "lang()"}, + "last-child": {"desc": "Selects every element that is the last child of its parent"}, + "last-of-type": {"desc": "Selects every element that is the last element of its parent"}, + "link": {"desc": "Selects all unvisited links"}, + "matches(selectors)": {"desc": "Selects every element that is matched by one or more selectors in the 'selectors' list", "text": "matches()"}, + "not(selector)": {"desc": "Selects every element that is not an element identified by 'selector'", "text": "not()"}, + "nth-child(n)": {"desc": "Selects every element that is the second child of its parent", "text": "nth-child()"}, + "nth-last-child(n)": {"desc": "Selects every element that is the second child of its parent, counting from the last child", "text": "nth-last-child()"}, + "nth-last-of-type(n)": {"desc": "Selects every element that is the nth element of its parent, counting from the last child", "text": "nth-last-of-type()"}, + "nth-of-type(n)": {"desc": "Selects every element that is the nth element of its parent", "text": "nth-of-type(n)"}, + "only-child": {"desc": "Selects every element that is the only child of its parent"}, + "only-of-type": {"desc": "Selects every element that is the only element of this type of its parent"}, + "optional": {"desc": "Selects input elements with no 'required' attribute"}, + "out-of-range": {"desc": "Selects input elements with a value outside a specified range"}, + "placeholder-shown": {"desc": "Selects all and