diff --git a/docs/API-Reference/JSUtils/ScopeManager.md b/docs/API-Reference/JSUtils/ScopeManager.md
index c584ac50d9..94d67ef0ba 100644
--- a/docs/API-Reference/JSUtils/ScopeManager.md
+++ b/docs/API-Reference/JSUtils/ScopeManager.md
@@ -200,7 +200,7 @@ Marks the file as being dirty.
| Param | Type | Description |
| --- | --- | --- |
-| changeList | Object | {from: {line:number, ch: number}, to: {line:number, ch:number}} |
+| changeList | Object | An object representing the change range with `from` and `to` properties, each containing `line` and `ch` numbers. |
diff --git a/docs/API-Reference/command/KeyBindingManager.md b/docs/API-Reference/command/KeyBindingManager.md
index 496a644bd5..7361d07062 100644
--- a/docs/API-Reference/command/KeyBindingManager.md
+++ b/docs/API-Reference/command/KeyBindingManager.md
@@ -68,9 +68,10 @@ Remove a key binding from _keymap
-## getKeymap([defaults]) ⇒ Object.<string, {commandID: string, key: string, displayKey: string}>
+## getKeymap([defaults]) ⇒ Object
Returns a copy of the current key map. If the optional 'defaults' parameter is true,
then a copy of the default key map is returned.
+In the default keymap each key is associated with an object containing `commandID`, `key`, and `displayKey`.
**Kind**: global function
@@ -80,27 +81,27 @@ then a copy of the default key map is returned.
-## addBinding(command, keyBindings, platform, options) ⇒ Object \| Array.<{key: string, displayKey:String}>
+## addBinding(command, keyBindings, platform, options) ⇒ Object
Add one or more key bindings to a particular Command.
+Returns record(s) for valid key binding(s).
**Kind**: global function
-**Returns**: Object \| Array.<{key: string, displayKey:String}> - Returns record(s) for valid key binding(s)
| Param | Type | Description |
| --- | --- | --- |
| command | string \| Command | A command ID or command object |
-| keyBindings | Object \| Array.<{key: string, displayKey: string, platform: string}> | A single key binding or an array of keybindings. Example: "Shift-Cmd-F". Mac and Win key equivalents are automatically mapped to each other. Use displayKey property to display a different string (e.g. "CMD+" instead of "CMD="). |
+| keyBindings | Object | A single key binding or an array of keybindings. In an array of keybinding `platform` property is also available. Example: "Shift-Cmd-F". Mac and Win key equivalents are automatically mapped to each other. Use displayKey property to display a different string (e.g. "CMD+" instead of "CMD="). |
| platform | string | The target OS of the keyBindings either "mac", "win" or "linux". If undefined, all platforms not explicitly defined will use the key binding. NOTE: If platform is not specified, Ctrl will be replaced by Cmd for "mac" platform |
| options | object | |
| options.isMenuShortcut | boolean | this allows alt-key shortcuts to be registered. |
-## getKeyBindings(command) ⇒ Array.<{{key: string, displayKey: string}}>
+## getKeyBindings(command) ⇒ Array.<Object>
Retrieve key bindings currently associated with a command
**Kind**: global function
-**Returns**: Array.<{{key: string, displayKey: string}}> - An array of associated key bindings.
+**Returns**: Array.<Object> - The object has two properties `key` and `displayKey`
| Param | Type | Description |
| --- | --- | --- |
@@ -179,7 +180,7 @@ under use preset dropdown. For EG. distribute a `netbeans editor` shortcuts pack
| --- | --- | --- |
| packID | string | A unique ID for the pack. Use `extensionID.name` format to avoid collisions. |
| packName | string | A name for the pack. |
-| keyMap | Object | a keymap of the format {`Ctrl-Alt-L`: `file.liveFilePreview`} depending on the platform. The extension should decide the correct keymap based on the platform before calling this function. |
+| keyMap | Object | a keymap of the format `{'Ctrl-Alt-L': 'file.liveFilePreview'}` depending on the platform. The extension should decide the correct keymap based on the platform before calling this function. |
diff --git a/docs/API-Reference/features/PriorityBasedRegistration.md b/docs/API-Reference/features/PriorityBasedRegistration.md
new file mode 100644
index 0000000000..f2845035b9
--- /dev/null
+++ b/docs/API-Reference/features/PriorityBasedRegistration.md
@@ -0,0 +1,5 @@
+### Import :
+```js
+const PriorityBasedRegistration = brackets.getModule("features/PriorityBasedRegistration")
+```
+
diff --git a/docs/API-Reference/filesystem/FileSystemError.md b/docs/API-Reference/filesystem/FileSystemError.md
new file mode 100644
index 0000000000..ced64af40f
--- /dev/null
+++ b/docs/API-Reference/filesystem/FileSystemError.md
@@ -0,0 +1,35 @@
+### Import :
+```js
+const FileSystemError = brackets.getModule("filesystem/FileSystemError")
+```
+
+
+
+## FileSystemError
+FileSystemError describes the errors that can occur when using the FileSystem, File,
+and Directory modules.
+
+Error values are strings. Any "falsy" value: null, undefined or "" means "no error".
+
+Enumerated File System Errors
+
+```js
+ UNKNOWN: "Unknown",
+ INVALID_PARAMS: "InvalidParams",
+ NOT_FOUND: "NotFound",
+ NOT_READABLE: "NotReadable",
+ UNSUPPORTED_ENCODING: "UnsupportedEncoding",
+ NOT_SUPPORTED: "NotSupported",
+ NOT_WRITABLE: "NotWritable",
+ OUT_OF_SPACE: "OutOfSpace",
+ TOO_MANY_ENTRIES: "TooManyEntries",
+ ALREADY_EXISTS: "AlreadyExists",
+ CONTENTS_MODIFIED: "ContentsModified",
+ ROOT_NOT_WATCHED: "RootNotBeingWatched",
+ EXCEEDS_MAX_FILE_SIZE: "ExceedsMaxFileSize",
+ NETWORK_DRIVE_NOT_SUPPORTED: "NetworkDriveNotSupported",
+ ENCODE_FILE_FAILED: "EncodeFileFailed",
+ DECODE_FILE_FAILED: "DecodeFileFailed",
+ UNSUPPORTED_UTF16_ENCODING: "UnsupportedUTF16Encoding"
+ ```
+
diff --git a/docs/API-Reference/filesystem/FileSystemStats.md b/docs/API-Reference/filesystem/FileSystemStats.md
new file mode 100644
index 0000000000..d7944f0654
--- /dev/null
+++ b/docs/API-Reference/filesystem/FileSystemStats.md
@@ -0,0 +1,50 @@
+### Import :
+```js
+const FileSystemStats = brackets.getModule("filesystem/FileSystemStats")
+```
+
+
+
+## FileSystemStats
+**Kind**: global class
+
+
+### new FileSystemStats(options)
+The FileSystemStats represents a particular FileSystemEntry's stats.
+
+
+| Param | Type |
+| --- | --- |
+| options | Object |
+
+
+
+## isFile : boolean
+Whether or not this is a stats object for a file
+
+**Kind**: global variable
+
+
+## isDirectory : boolean
+Whether or not this is a stats object for a directory
+
+**Kind**: global variable
+
+
+## mtime : Date
+Modification time for a file
+
+**Kind**: global variable
+
+
+## size : Number
+Size in bytes of a file
+
+**Kind**: global variable
+
+
+## realPath : string
+The canonical path of this file or directory ONLY if it is a symbolic link,
+and null otherwise.
+
+**Kind**: global variable
diff --git a/docs/API-Reference/filesystem/RemoteFile.md b/docs/API-Reference/filesystem/RemoteFile.md
new file mode 100644
index 0000000000..3f8349225a
--- /dev/null
+++ b/docs/API-Reference/filesystem/RemoteFile.md
@@ -0,0 +1,122 @@
+### Import :
+```js
+const RemoteFile = brackets.getModule("filesystem/RemoteFile")
+```
+
+
+
+## RemoteFile
+**Kind**: global class
+
+* [RemoteFile](#RemoteFile)
+ * [new RemoteFile(fullPath, fileSystem)](#new_RemoteFile_new)
+ * [.toString()](#RemoteFile+toString)
+ * [.stat(callback)](#RemoteFile+stat)
+ * [.read([options], callback)](#RemoteFile+read)
+ * [.write(data, [options], [callback])](#RemoteFile+write)
+ * [.exists(callback)](#RemoteFile+exists)
+ * [.unlink(callback)](#RemoteFile+unlink)
+ * [.rename(callback)](#RemoteFile+rename)
+ * [.moveToTrash(callback)](#RemoteFile+moveToTrash)
+
+
+
+### new RemoteFile(fullPath, fileSystem)
+Model for a RemoteFile.
+
+This class should *not* be instantiated directly. Use FileSystem.getFileForPath
+
+See the FileSystem class for more details.
+
+
+| Param | Type | Description |
+| --- | --- | --- |
+| fullPath | string | The full path for this File. |
+| fileSystem | FileSystem | The file system associated with this File. |
+
+
+
+### remoteFile.toString()
+Helpful toString for debugging and equality check purposes
+
+**Kind**: instance method of [RemoteFile](#RemoteFile)
+
+
+### remoteFile.stat(callback)
+Returns the stats for the remote entry.
+
+**Kind**: instance method of [RemoteFile](#RemoteFile)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| callback | function | Callback with a FileSystemError string or FileSystemStats object. |
+
+
+
+### remoteFile.read([options], callback)
+Reads a remote file.
+
+**Kind**: instance method of [RemoteFile](#RemoteFile)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| [options] | Object | Currently unused. |
+| callback | function | Callback that is passed the FileSystemError string or the file's contents and its stats. |
+
+
+
+### remoteFile.write(data, [options], [callback])
+Write a file.
+
+**Kind**: instance method of [RemoteFile](#RemoteFile)
+
+| Param | Type | Description |
+| --- | --- | --- |
+| data | string | Data to write. |
+| [options] | object | Currently unused. |
+| [callback] | function | Callback that is passed the FileSystemError string or the file's new stats. |
+
+
+
+### remoteFile.exists(callback)
+Check if the remote file exists or not
+
+**Kind**: instance method of [RemoteFile](#RemoteFile)
+
+| Param | Type |
+| --- | --- |
+| callback | function |
+
+
+
+### remoteFile.unlink(callback)
+Unlink the remote file
+
+**Kind**: instance method of [RemoteFile](#RemoteFile)
+
+| Param | Type |
+| --- | --- |
+| callback | function |
+
+
+
+### remoteFile.rename(callback)
+Rename the remote file
+
+**Kind**: instance method of [RemoteFile](#RemoteFile)
+
+| Param | Type |
+| --- | --- |
+| callback | function |
+
+
+
+### remoteFile.moveToTrash(callback)
+Move the remote file to trash
+
+**Kind**: instance method of [RemoteFile](#RemoteFile)
+
+| Param | Type |
+| --- | --- |
+| callback | function |
+
diff --git a/docs/API-Reference/filesystem/WatchedRoot.md b/docs/API-Reference/filesystem/WatchedRoot.md
new file mode 100644
index 0000000000..527b92b4b7
--- /dev/null
+++ b/docs/API-Reference/filesystem/WatchedRoot.md
@@ -0,0 +1,75 @@
+### Import :
+```js
+const WatchedRoot = brackets.getModule("filesystem/WatchedRoot")
+```
+
+
+
+## WatchedRoot
+**Kind**: global class
+
+* [WatchedRoot](#WatchedRoot)
+ * [new WatchedRoot(entry, filter, filterGitIgnore)](#new_WatchedRoot_new)
+ * _instance_
+ * [.entry](#WatchedRoot+entry) : File \| Directory
+ * [.filter](#WatchedRoot+filter) : function
+ * [.filterGitIgnore](#WatchedRoot+filterGitIgnore) : string \| Array.<string>
+ * [.status](#WatchedRoot+status) : number
+ * _static_
+ * [.INACTIVE](#WatchedRoot.INACTIVE) : number
+ * [.STARTING](#WatchedRoot.STARTING) : number
+ * [.ACTIVE](#WatchedRoot.ACTIVE) : number
+
+
+
+### new WatchedRoot(entry, filter, filterGitIgnore)
+Represents file or directory structure watched by the FileSystem. If the
+entry is a directory, all children (that pass the supplied filter function)
+are also watched. A WatchedRoot object begins and ends its life in the
+INACTIVE state. While in the process of starting up watchers, the WatchedRoot
+is in the STARTING state. When watchers are ready, the WatchedRoot enters
+the ACTIVE state.
+
+See the FileSystem class for more details.
+
+
+| Param | Type |
+| --- | --- |
+| entry | File \| Directory |
+| filter | function |
+| filterGitIgnore | string \| Array.<string> |
+
+
+
+### watchedRoot.entry : File \| Directory
+**Kind**: instance property of [WatchedRoot](#WatchedRoot)
+
+
+### watchedRoot.filter : function
+**Kind**: instance property of [WatchedRoot](#WatchedRoot)
+
+
+### watchedRoot.filterGitIgnore : string \| Array.<string>
+**Kind**: instance property of [WatchedRoot](#WatchedRoot)
+
+
+### watchedRoot.status : number
+**Kind**: instance property of [WatchedRoot](#WatchedRoot)
+
+
+### WatchedRoot.INACTIVE : number
+WatchedRoot inactive
+
+**Kind**: static constant of [WatchedRoot](#WatchedRoot)
+
+
+### WatchedRoot.STARTING : number
+WatchedRoot starting
+
+**Kind**: static constant of [WatchedRoot](#WatchedRoot)
+
+
+### WatchedRoot.ACTIVE : number
+WatchedRoot active
+
+**Kind**: static constant of [WatchedRoot](#WatchedRoot)
diff --git a/docs/API-Reference/widgets/Dialogs.md b/docs/API-Reference/widgets/Dialogs.md
index d6666941f4..65509100a5 100644
--- a/docs/API-Reference/widgets/Dialogs.md
+++ b/docs/API-Reference/widgets/Dialogs.md
@@ -72,7 +72,7 @@ The template can either be a string or a jQuery object representing a DOM node t
-## showModalDialog(dlgClass, [title], [message], [buttons], [autoDismiss]) ⇒ [Dialog](#new_Dialog_new)
+## showModalDialog(dlgClass, [title], [message], buttons, [autoDismiss]) ⇒ [Dialog](#new_Dialog_new)
Creates a new general purpose modal dialog using the default template and the template variables given
as parameters as described.
@@ -83,7 +83,7 @@ as parameters as described.
| dlgClass | string | A class name identifier for the dialog. Typically one of DefaultDialogs.* |
| [title] | string | The title of the dialog. Can contain HTML markup. Defaults to "". |
| [message] | string | The message to display in the dialog. Can contain HTML markup. Defaults to "". |
-| [buttons] | Array.<{className: string, id: string, text: string, tooltip:string}> | An array of buttons where each button has a class, id tooltip, and text property. The id is used in "data-button-id". Defaults to a single Ok button. Typically className is one of DIALOG_BTN_CLASS_*, id is one of DIALOG_BTN_* |
+| buttons | Array.<Object> | An array of buttons where each button has a class, id tooltip, and text property. The id is used in "data-button-id". Defaults to a single Ok button. Typically className is one of DIALOG_BTN_CLASS_*, id is one of DIALOG_BTN_* |
| [autoDismiss] | boolean | Whether to automatically dismiss the dialog when one of the buttons is clicked. Default true. If false, you'll need to manually handle button clicks and the Esc key, and dismiss the dialog yourself when ready by calling `close()` on the returned dialog. |
@@ -144,7 +144,7 @@ be called with the special buttonId DIALOG_CANCELED (note: callback is run async
## addLinkTooltips(elementOrDialog)
-Ensures that all tags with a URL have a tooltip showing the same URL
+Ensures that all anchor tags with a URL have a tooltip showing the same URL
**Kind**: global function
diff --git a/src/JSUtils/ScopeManager.js b/src/JSUtils/ScopeManager.js
index 572ba0e434..b74267e946 100644
--- a/src/JSUtils/ScopeManager.js
+++ b/src/JSUtils/ScopeManager.js
@@ -1511,8 +1511,7 @@ define(function (require, exports, module) {
/**
* Called each time the file associated with the active editor changes.
* Marks the file as being dirty.
- *
- * @param {{line:number, ch: number}} changeList {from: {line:number, ch: number}, to: {line:number, ch:number}}
+ * @param {{line:number, ch: number}} changeList - An object representing the change range with `from` and `to` properties, each containing `line` and `ch` numbers.
*/
function handleFileChange(changeList) {
isDocumentDirty = true;
diff --git a/src/command/KeyBindingManager.js b/src/command/KeyBindingManager.js
index a68841cf43..a80c2b23a9 100644
--- a/src/command/KeyBindingManager.js
+++ b/src/command/KeyBindingManager.js
@@ -889,9 +889,10 @@ define(function (require, exports, module) {
/**
* Returns a copy of the current key map. If the optional 'defaults' parameter is true,
* then a copy of the default key map is returned.
+ * In the default keymap each key is associated with an object containing `commandID`, `key`, and `displayKey`.
*
* @param {boolean=} defaults true if the caller wants a copy of the default key map. Otherwise, the current active key map is returned.
- * @return {!Object.}
+ * @return {Object}
*/
function getKeymap(defaults) {
return $.extend({}, defaults ? _defaultKeyMap : _keyMap);
@@ -979,10 +980,12 @@ define(function (require, exports, module) {
/**
* Add one or more key bindings to a particular Command.
+ * Returns record(s) for valid key binding(s).
*
* @param {!string | Command} command - A command ID or command object
- * @param {?({key: string, displayKey: string}|Array.<{key: string, displayKey: string, platform: string}>)} keyBindings
- * A single key binding or an array of keybindings. Example:
+ * @param {{key: string, displayKey:string, platform: string}} keyBindings
+ * A single key binding or an array of keybindings.
+ * In an array of keybinding `platform` property is also available. Example:
* "Shift-Cmd-F". Mac and Win key equivalents are automatically
* mapped to each other. Use displayKey property to display a different
* string (e.g. "CMD+" instead of "CMD=").
@@ -992,8 +995,7 @@ define(function (require, exports, module) {
* NOTE: If platform is not specified, Ctrl will be replaced by Cmd for "mac" platform
* @param {object?} options
* @param {boolean?} options.isMenuShortcut this allows alt-key shortcuts to be registered.
- * @return {{key: string, displayKey:String}|Array.<{key: string, displayKey:String}>}
- * Returns record(s) for valid key binding(s)
+ * @return {{key: string, displayKey:string}}
*/
function addBinding(command, keyBindings, platform, options={}) {
let commandID = "",
@@ -1044,7 +1046,7 @@ define(function (require, exports, module) {
* Retrieve key bindings currently associated with a command
*
* @param {!string | Command} command - A command ID or command object
- * @return {!Array.<{{key: string, displayKey: string}}>} An array of associated key bindings.
+ * @return {Array.