Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Unified Diff: third_party/WebKit/Source/devtools/front_end/text_editor/TextEditorAutocompleteController.js

Issue 2466123002: DevTools: reformat front-end code to match chromium style. (Closed)
Patch Set: all done Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/text_editor/TextEditorAutocompleteController.js
diff --git a/third_party/WebKit/Source/devtools/front_end/text_editor/TextEditorAutocompleteController.js b/third_party/WebKit/Source/devtools/front_end/text_editor/TextEditorAutocompleteController.js
index 93cffc07b797a932fbc515bcc1f61445df47d8b8..b5677b3f66e9044388873e6177bc8b6bf50a073e 100644
--- a/third_party/WebKit/Source/devtools/front_end/text_editor/TextEditorAutocompleteController.js
+++ b/third_party/WebKit/Source/devtools/front_end/text_editor/TextEditorAutocompleteController.js
@@ -1,16 +1,17 @@
// Copyright (c) 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-
/**
- * @constructor
* @implements {WebInspector.SuggestBoxDelegate}
- * @param {!WebInspector.CodeMirrorTextEditor} textEditor
- * @param {!CodeMirror} codeMirror
- * @param {!WebInspector.AutocompleteConfig} config
+ * @unrestricted
*/
-WebInspector.TextEditorAutocompleteController = function(textEditor, codeMirror, config)
-{
+WebInspector.TextEditorAutocompleteController = class {
+ /**
+ * @param {!WebInspector.CodeMirrorTextEditor} textEditor
+ * @param {!CodeMirror} codeMirror
+ * @param {!WebInspector.AutocompleteConfig} config
+ */
+ constructor(textEditor, codeMirror, config) {
this._textEditor = textEditor;
this._codeMirror = codeMirror;
this._config = config;
@@ -22,419 +23,403 @@ WebInspector.TextEditorAutocompleteController = function(textEditor, codeMirror,
this._blur = this._blur.bind(this);
this._beforeChange = this._beforeChange.bind(this);
this._mouseDown = this.clearAutocomplete.bind(this);
- this._codeMirror.on("changes", this._changes);
- this._lastHintText = "";
- this._hintElement = createElementWithClass("span", "auto-complete-text");
-};
-
-WebInspector.TextEditorAutocompleteController.HintBookmark = Symbol("hint");
-
-WebInspector.TextEditorAutocompleteController.prototype = {
- _initializeIfNeeded: function()
- {
- if (this._initialized)
- return;
- this._initialized = true;
- this._codeMirror.on("scroll", this._onScroll);
- this._codeMirror.on("cursorActivity", this._onCursorActivity);
- this._codeMirror.on("mousedown", this._mouseDown);
- this._codeMirror.on("blur", this._blur);
- if (this._config.isWordChar) {
- this._codeMirror.on("beforeChange", this._beforeChange);
- this._dictionary = new WebInspector.TextDictionary();
- this._addWordsFromText(this._codeMirror.getValue());
- }
- },
-
- dispose: function()
- {
- this._codeMirror.off("changes", this._changes);
- if (this._initialized) {
- this._codeMirror.off("scroll", this._onScroll);
- this._codeMirror.off("cursorActivity", this._onCursorActivity);
- this._codeMirror.off("mousedown", this._mouseDown);
- this._codeMirror.off("blur", this._blur);
- }
- if (this._dictionary) {
- this._codeMirror.off("beforeChange", this._beforeChange);
- this._dictionary.reset();
- }
- },
+ this._codeMirror.on('changes', this._changes);
+ this._lastHintText = '';
+ this._hintElement = createElementWithClass('span', 'auto-complete-text');
+ }
+
+ _initializeIfNeeded() {
+ if (this._initialized)
+ return;
+ this._initialized = true;
+ this._codeMirror.on('scroll', this._onScroll);
+ this._codeMirror.on('cursorActivity', this._onCursorActivity);
+ this._codeMirror.on('mousedown', this._mouseDown);
+ this._codeMirror.on('blur', this._blur);
+ if (this._config.isWordChar) {
+ this._codeMirror.on('beforeChange', this._beforeChange);
+ this._dictionary = new WebInspector.TextDictionary();
+ this._addWordsFromText(this._codeMirror.getValue());
+ }
+ }
+
+ dispose() {
+ this._codeMirror.off('changes', this._changes);
+ if (this._initialized) {
+ this._codeMirror.off('scroll', this._onScroll);
+ this._codeMirror.off('cursorActivity', this._onCursorActivity);
+ this._codeMirror.off('mousedown', this._mouseDown);
+ this._codeMirror.off('blur', this._blur);
+ }
+ if (this._dictionary) {
+ this._codeMirror.off('beforeChange', this._beforeChange);
+ this._dictionary.reset();
+ }
+ }
+
+ /**
+ * @param {!CodeMirror} codeMirror
+ * @param {!CodeMirror.BeforeChangeObject} changeObject
+ */
+ _beforeChange(codeMirror, changeObject) {
+ this._updatedLines = this._updatedLines || {};
+ for (var i = changeObject.from.line; i <= changeObject.to.line; ++i)
+ this._updatedLines[i] = this._codeMirror.getLine(i);
+ }
+
+ /**
+ * @param {string} text
+ */
+ _addWordsFromText(text) {
+ WebInspector.TextUtils.textToWords(
+ text, /** @type {function(string):boolean} */ (this._config.isWordChar), addWord.bind(this));
/**
- * @param {!CodeMirror} codeMirror
- * @param {!CodeMirror.BeforeChangeObject} changeObject
+ * @param {string} word
+ * @this {WebInspector.TextEditorAutocompleteController}
*/
- _beforeChange: function(codeMirror, changeObject)
- {
- this._updatedLines = this._updatedLines || {};
- for (var i = changeObject.from.line; i <= changeObject.to.line; ++i)
- this._updatedLines[i] = this._codeMirror.getLine(i);
- },
+ function addWord(word) {
+ if (word.length && (word[0] < '0' || word[0] > '9'))
+ this._dictionary.addWord(word);
+ }
+ }
+
+ /**
+ * @param {string} text
+ */
+ _removeWordsFromText(text) {
+ WebInspector.TextUtils.textToWords(
+ text, /** @type {function(string):boolean} */ (this._config.isWordChar),
+ (word) => this._dictionary.removeWord(word));
+ }
+
+ /**
+ * @param {number} lineNumber
+ * @param {number} columnNumber
+ * @return {?WebInspector.TextRange}
+ */
+ _substituteRange(lineNumber, columnNumber) {
+ var range =
+ this._config.substituteRangeCallback ? this._config.substituteRangeCallback(lineNumber, columnNumber) : null;
+ if (!range && this._config.isWordChar)
+ range = this._textEditor.wordRangeForCursorPosition(lineNumber, columnNumber, this._config.isWordChar);
+ return range;
+ }
+
+ /**
+ * @param {!WebInspector.TextRange} prefixRange
+ * @param {!WebInspector.TextRange} substituteRange
+ * @return {!Promise.<!WebInspector.SuggestBox.Suggestions>}
+ */
+ _wordsWithPrefix(prefixRange, substituteRange) {
+ var external =
+ this._config.suggestionsCallback ? this._config.suggestionsCallback(prefixRange, substituteRange) : null;
+ if (external)
+ return external;
+
+ if (!this._dictionary || prefixRange.startColumn === prefixRange.endColumn)
+ return Promise.resolve([]);
+
+ var completions = this._dictionary.wordsWithPrefix(this._textEditor.text(prefixRange));
+ var substituteWord = this._textEditor.text(substituteRange);
+ if (this._dictionary.wordCount(substituteWord) === 1)
+ completions = completions.filter((word) => word !== substituteWord);
+
+ completions.sort((a, b) => this._dictionary.wordCount(b) - this._dictionary.wordCount(a) || a.length - b.length);
+ return Promise.resolve(completions.map(item => ({title: item})));
+ }
+
+ /**
+ * @param {!CodeMirror} codeMirror
+ * @param {!Array.<!CodeMirror.ChangeObject>} changes
+ */
+ _changes(codeMirror, changes) {
+ if (!changes.length)
+ return;
+
+ if (this._dictionary && this._updatedLines) {
+ for (var lineNumber in this._updatedLines)
+ this._removeWordsFromText(this._updatedLines[lineNumber]);
+ delete this._updatedLines;
+
+ var linesToUpdate = {};
+ for (var changeIndex = 0; changeIndex < changes.length; ++changeIndex) {
+ var changeObject = changes[changeIndex];
+ var editInfo = WebInspector.CodeMirrorUtils.changeObjectToEditOperation(changeObject);
+ for (var i = editInfo.newRange.startLine; i <= editInfo.newRange.endLine; ++i)
+ linesToUpdate[i] = this._codeMirror.getLine(i);
+ }
+ for (var lineNumber in linesToUpdate)
+ this._addWordsFromText(linesToUpdate[lineNumber]);
+ }
+
+ var singleCharInput = false;
+ var singleCharDelete = false;
+ var cursor = this._codeMirror.getCursor('head');
+ for (var changeIndex = 0; changeIndex < changes.length; ++changeIndex) {
+ var changeObject = changes[changeIndex];
+ if (changeObject.origin === '+input' && changeObject.text.length === 1 && changeObject.text[0].length === 1 &&
+ changeObject.to.line === cursor.line && changeObject.to.ch + 1 === cursor.ch) {
+ singleCharInput = true;
+ break;
+ }
+ if (changeObject.origin === '+delete' && changeObject.removed.length === 1 &&
+ changeObject.removed[0].length === 1 && changeObject.to.line === cursor.line &&
+ changeObject.to.ch - 1 === cursor.ch) {
+ singleCharDelete = true;
+ break;
+ }
+ }
+ if (this._prefixRange) {
+ if (singleCharInput)
+ this._prefixRange.endColumn++;
+ else if (singleCharDelete)
+ this._prefixRange.endColumn--;
+ if (singleCharDelete || singleCharInput)
+ this._setHint(this._lastHintText);
+ }
+
+ if (singleCharInput || singleCharDelete)
+ setImmediate(this.autocomplete.bind(this));
+ else
+ this.clearAutocomplete();
+ }
+
+ _blur() {
+ this.clearAutocomplete();
+ }
+
+ /**
+ * @param {!WebInspector.TextRange} mainSelection
+ * @return {boolean}
+ */
+ _validateSelectionsContexts(mainSelection) {
+ var selections = this._codeMirror.listSelections();
+ if (selections.length <= 1)
+ return true;
+ var mainSelectionContext = this._textEditor.text(mainSelection);
+ for (var i = 0; i < selections.length; ++i) {
+ var wordRange = this._substituteRange(selections[i].head.line, selections[i].head.ch);
+ if (!wordRange)
+ return false;
+ var context = this._textEditor.text(wordRange);
+ if (context !== mainSelectionContext)
+ return false;
+ }
+ return true;
+ }
+
+ autocomplete() {
+ this._initializeIfNeeded();
+ if (this._codeMirror.somethingSelected()) {
+ this.clearAutocomplete();
+ return;
+ }
+
+ var cursor = this._codeMirror.getCursor('head');
+ var substituteRange = this._substituteRange(cursor.line, cursor.ch);
+ if (!substituteRange || !this._validateSelectionsContexts(substituteRange)) {
+ this.clearAutocomplete();
+ return;
+ }
+
+ var prefixRange = substituteRange.clone();
+ prefixRange.endColumn = cursor.ch;
+ var prefix = this._textEditor.text(prefixRange);
+ var hadSuggestBox = false;
+ if (this._suggestBox)
+ hadSuggestBox = true;
+
+ this._wordsWithPrefix(prefixRange, substituteRange).then(wordsAcquired.bind(this));
/**
- * @param {string} text
+ * @param {!WebInspector.SuggestBox.Suggestions} wordsWithPrefix
+ * @this {WebInspector.TextEditorAutocompleteController}
*/
- _addWordsFromText: function(text)
- {
- WebInspector.TextUtils.textToWords(text, /** @type {function(string):boolean} */ (this._config.isWordChar), addWord.bind(this));
-
- /**
- * @param {string} word
- * @this {WebInspector.TextEditorAutocompleteController}
- */
- function addWord(word)
- {
- if (word.length && (word[0] < "0" || word[0] > "9"))
- this._dictionary.addWord(word);
- }
- },
-
- /**
- * @param {string} text
- */
- _removeWordsFromText: function(text)
- {
- WebInspector.TextUtils.textToWords(text, /** @type {function(string):boolean} */ (this._config.isWordChar), (word) => this._dictionary.removeWord(word));
- },
-
- /**
- * @param {number} lineNumber
- * @param {number} columnNumber
- * @return {?WebInspector.TextRange}
- */
- _substituteRange: function(lineNumber, columnNumber)
- {
- var range = this._config.substituteRangeCallback ? this._config.substituteRangeCallback(lineNumber, columnNumber) : null;
- if (!range && this._config.isWordChar)
- range = this._textEditor.wordRangeForCursorPosition(lineNumber, columnNumber, this._config.isWordChar);
- return range;
- },
-
- /**
- * @param {!WebInspector.TextRange} prefixRange
- * @param {!WebInspector.TextRange} substituteRange
- * @return {!Promise.<!WebInspector.SuggestBox.Suggestions>}
- */
- _wordsWithPrefix: function(prefixRange, substituteRange)
- {
- var external = this._config.suggestionsCallback ? this._config.suggestionsCallback(prefixRange, substituteRange) : null;
- if (external)
- return external;
-
- if (!this._dictionary || prefixRange.startColumn === prefixRange.endColumn)
- return Promise.resolve([]);
-
- var completions = this._dictionary.wordsWithPrefix(this._textEditor.text(prefixRange));
- var substituteWord = this._textEditor.text(substituteRange);
- if (this._dictionary.wordCount(substituteWord) === 1)
- completions = completions.filter((word) => word !== substituteWord);
-
- completions.sort((a, b) => this._dictionary.wordCount(b) - this._dictionary.wordCount(a) || a.length - b.length);
- return Promise.resolve(completions.map(item => ({ title: item })));
- },
-
- /**
- * @param {!CodeMirror} codeMirror
- * @param {!Array.<!CodeMirror.ChangeObject>} changes
- */
- _changes: function(codeMirror, changes)
- {
- if (!changes.length)
- return;
-
- if (this._dictionary && this._updatedLines) {
- for (var lineNumber in this._updatedLines)
- this._removeWordsFromText(this._updatedLines[lineNumber]);
- delete this._updatedLines;
-
- var linesToUpdate = {};
- for (var changeIndex = 0; changeIndex < changes.length; ++changeIndex) {
- var changeObject = changes[changeIndex];
- var editInfo = WebInspector.CodeMirrorUtils.changeObjectToEditOperation(changeObject);
- for (var i = editInfo.newRange.startLine; i <= editInfo.newRange.endLine; ++i)
- linesToUpdate[i] = this._codeMirror.getLine(i);
- }
- for (var lineNumber in linesToUpdate)
- this._addWordsFromText(linesToUpdate[lineNumber]);
- }
-
- var singleCharInput = false;
- var singleCharDelete = false;
- var cursor = this._codeMirror.getCursor("head");
- for (var changeIndex = 0; changeIndex < changes.length; ++changeIndex) {
- var changeObject = changes[changeIndex];
- if (changeObject.origin === "+input"
- && changeObject.text.length === 1
- && changeObject.text[0].length === 1
- && changeObject.to.line === cursor.line
- && changeObject.to.ch + 1 === cursor.ch) {
- singleCharInput = true;
- break;
- }
- if (changeObject.origin === "+delete"
- && changeObject.removed.length === 1
- && changeObject.removed[0].length === 1
- && changeObject.to.line === cursor.line
- && changeObject.to.ch - 1 === cursor.ch) {
- singleCharDelete = true;
- break;
- }
- }
- if (this._prefixRange) {
- if (singleCharInput)
- this._prefixRange.endColumn++;
- else if (singleCharDelete)
- this._prefixRange.endColumn--;
- if (singleCharDelete || singleCharInput)
- this._setHint(this._lastHintText);
- }
-
- if (singleCharInput || singleCharDelete)
- setImmediate(this.autocomplete.bind(this));
- else
- this.clearAutocomplete();
- },
-
- _blur: function()
- {
+ function wordsAcquired(wordsWithPrefix) {
+ if (!wordsWithPrefix.length || (wordsWithPrefix.length === 1 && prefix === wordsWithPrefix[0].title) ||
+ (!this._suggestBox && hadSuggestBox)) {
+ this.clearAutocomplete();
+ this._onSuggestionsShownForTest([]);
+ return;
+ }
+ if (!this._suggestBox)
+ this._suggestBox = new WebInspector.SuggestBox(this, 20, this._config.captureEnter);
+
+ var oldPrefixRange = this._prefixRange;
+ this._prefixRange = prefixRange;
+ if (!oldPrefixRange || prefixRange.startLine !== oldPrefixRange.startLine ||
+ prefixRange.startColumn !== oldPrefixRange.startColumn)
+ this._updateAnchorBox();
+ this._suggestBox.updateSuggestions(this._anchorBox, wordsWithPrefix, 0, !this._isCursorAtEndOfLine(), prefix);
+ this._onSuggestionsShownForTest(wordsWithPrefix);
+ this._setHint(wordsWithPrefix[0].title);
+ }
+ }
+
+ /**
+ * @param {string} hint
+ */
+ _setHint(hint) {
+ if (!this._isCursorAtEndOfLine()) {
+ this._clearHint();
+ return;
+ }
+ var prefix = this._textEditor.text(this._prefixRange);
+ var suffix = hint.substring(prefix.length).split('\n')[0];
+ this._hintElement.textContent = suffix;
+ var cursor = this._codeMirror.getCursor('to');
+ if (this._hintMarker) {
+ var position = this._hintMarker.position();
+ if (!position || !position.equal(WebInspector.TextRange.createFromLocation(cursor.line, cursor.ch))) {
+ this._hintMarker.clear();
+ this._hintMarker = null;
+ }
+ }
+
+ if (!this._hintMarker)
+ this._hintMarker = this._textEditor.addBookmark(
+ cursor.line, cursor.ch, this._hintElement, WebInspector.TextEditorAutocompleteController.HintBookmark, true);
+ else if (this._lastHintText !== hint)
+ this._hintMarker.refresh();
+ this._lastHintText = hint;
+ }
+
+ _clearHint() {
+ this._lastHintText = '';
+ this._hintElement.textContent = '';
+ if (this._hintMarker)
+ this._hintMarker.refresh();
+ }
+
+ /**
+ * @param {!WebInspector.SuggestBox.Suggestions} suggestions
+ */
+ _onSuggestionsShownForTest(suggestions) {
+ }
+
+ _onSuggestionsHiddenForTest() {
+ }
+
+ clearAutocomplete() {
+ if (!this._suggestBox)
+ return;
+ this._suggestBox.hide();
+ this._suggestBox = null;
+ this._prefixRange = null;
+ this._anchorBox = null;
+ this._clearHint();
+ this._onSuggestionsHiddenForTest();
+ }
+
+ /**
+ * @param {!Event} event
+ * @return {boolean}
+ */
+ keyDown(event) {
+ if (!this._suggestBox)
+ return false;
+ switch (event.keyCode) {
+ case WebInspector.KeyboardShortcut.Keys.Tab.code:
+ this._suggestBox.acceptSuggestion();
this.clearAutocomplete();
- },
-
- /**
- * @param {!WebInspector.TextRange} mainSelection
- * @return {boolean}
- */
- _validateSelectionsContexts: function(mainSelection)
- {
- var selections = this._codeMirror.listSelections();
- if (selections.length <= 1)
- return true;
- var mainSelectionContext = this._textEditor.text(mainSelection);
- for (var i = 0; i < selections.length; ++i) {
- var wordRange = this._substituteRange(selections[i].head.line, selections[i].head.ch);
- if (!wordRange)
- return false;
- var context = this._textEditor.text(wordRange);
- if (context !== mainSelectionContext)
- return false;
- }
return true;
- },
-
- autocomplete: function()
- {
- this._initializeIfNeeded();
- if (this._codeMirror.somethingSelected()) {
- this.clearAutocomplete();
- return;
+ case WebInspector.KeyboardShortcut.Keys.End.code:
+ case WebInspector.KeyboardShortcut.Keys.Right.code:
+ if (this._isCursorAtEndOfLine()) {
+ this._suggestBox.acceptSuggestion();
+ this.clearAutocomplete();
+ return true;
+ } else {
+ this.clearAutocomplete();
+ return false;
}
-
- var cursor = this._codeMirror.getCursor("head");
- var substituteRange = this._substituteRange(cursor.line, cursor.ch);
- if (!substituteRange || !this._validateSelectionsContexts(substituteRange)) {
- this.clearAutocomplete();
- return;
- }
-
- var prefixRange = substituteRange.clone();
- prefixRange.endColumn = cursor.ch;
- var prefix = this._textEditor.text(prefixRange);
- var hadSuggestBox = false;
- if (this._suggestBox)
- hadSuggestBox = true;
-
- this._wordsWithPrefix(prefixRange, substituteRange).then(wordsAcquired.bind(this));
-
- /**
- * @param {!WebInspector.SuggestBox.Suggestions} wordsWithPrefix
- * @this {WebInspector.TextEditorAutocompleteController}
- */
- function wordsAcquired(wordsWithPrefix)
- {
- if (!wordsWithPrefix.length || (wordsWithPrefix.length === 1 && prefix === wordsWithPrefix[0].title) || (!this._suggestBox && hadSuggestBox)) {
- this.clearAutocomplete();
- this._onSuggestionsShownForTest([]);
- return;
- }
- if (!this._suggestBox)
- this._suggestBox = new WebInspector.SuggestBox(this, 20, this._config.captureEnter);
-
- var oldPrefixRange = this._prefixRange;
- this._prefixRange = prefixRange;
- if (!oldPrefixRange || prefixRange.startLine !== oldPrefixRange.startLine || prefixRange.startColumn !== oldPrefixRange.startColumn)
- this._updateAnchorBox();
- this._suggestBox.updateSuggestions(this._anchorBox, wordsWithPrefix, 0, !this._isCursorAtEndOfLine(), prefix);
- this._onSuggestionsShownForTest(wordsWithPrefix);
- this._setHint(wordsWithPrefix[0].title);
- }
- },
-
- /**
- * @param {string} hint
- */
- _setHint: function(hint)
- {
- if (!this._isCursorAtEndOfLine()) {
- this._clearHint();
- return;
- }
- var prefix = this._textEditor.text(this._prefixRange);
- var suffix = hint.substring(prefix.length).split("\n")[0];
- this._hintElement.textContent = suffix;
- var cursor = this._codeMirror.getCursor("to");
- if (this._hintMarker) {
- var position = this._hintMarker.position();
- if (!position || !position.equal(WebInspector.TextRange.createFromLocation(cursor.line, cursor.ch))) {
- this._hintMarker.clear();
- this._hintMarker = null;
- }
- }
-
- if (!this._hintMarker)
- this._hintMarker = this._textEditor.addBookmark(cursor.line, cursor.ch, this._hintElement, WebInspector.TextEditorAutocompleteController.HintBookmark, true);
- else if (this._lastHintText !== hint)
- this._hintMarker.refresh();
- this._lastHintText = hint;
- },
-
- _clearHint: function()
- {
- this._lastHintText = "";
- this._hintElement.textContent = "";
- if (this._hintMarker)
- this._hintMarker.refresh();
- },
-
- /**
- * @param {!WebInspector.SuggestBox.Suggestions} suggestions
- */
- _onSuggestionsShownForTest: function(suggestions) { },
-
- _onSuggestionsHiddenForTest: function() { },
-
- clearAutocomplete: function()
- {
- if (!this._suggestBox)
- return;
- this._suggestBox.hide();
- this._suggestBox = null;
- this._prefixRange = null;
- this._anchorBox = null;
- this._clearHint();
- this._onSuggestionsHiddenForTest();
- },
-
- /**
- * @param {!Event} event
- * @return {boolean}
- */
- keyDown: function(event)
- {
- if (!this._suggestBox)
- return false;
- switch (event.keyCode) {
- case WebInspector.KeyboardShortcut.Keys.Tab.code:
- this._suggestBox.acceptSuggestion();
- this.clearAutocomplete();
- return true;
- case WebInspector.KeyboardShortcut.Keys.End.code:
- case WebInspector.KeyboardShortcut.Keys.Right.code:
- if (this._isCursorAtEndOfLine()) {
- this._suggestBox.acceptSuggestion();
- this.clearAutocomplete();
- return true;
- } else {
- this.clearAutocomplete();
- return false;
- }
- case WebInspector.KeyboardShortcut.Keys.Left.code:
- case WebInspector.KeyboardShortcut.Keys.Home.code:
- this.clearAutocomplete();
- return false;
- case WebInspector.KeyboardShortcut.Keys.Esc.code:
- this.clearAutocomplete();
- return true;
- }
- return this._suggestBox.keyPressed(event);
- },
-
- /**
- * @return {boolean}
- */
- _isCursorAtEndOfLine: function()
- {
- var cursor = this._codeMirror.getCursor("to");
- return cursor.ch === this._codeMirror.getLine(cursor.line).length;
- },
-
- /**
- * @override
- * @param {string} suggestion
- * @param {boolean=} isIntermediateSuggestion
- */
- applySuggestion: function(suggestion, isIntermediateSuggestion)
- {
- this._currentSuggestion = suggestion;
- this._setHint(suggestion);
- },
-
- /**
- * @override
- */
- acceptSuggestion: function()
- {
- if (this._prefixRange.endColumn - this._prefixRange.startColumn === this._currentSuggestion.length)
- return;
-
- var selections = this._codeMirror.listSelections().slice();
- var prefixLength = this._prefixRange.endColumn - this._prefixRange.startColumn;
- for (var i = selections.length - 1; i >= 0; --i) {
- var start = selections[i].head;
- var end = new CodeMirror.Pos(start.line, start.ch - prefixLength);
- this._codeMirror.replaceRange(this._currentSuggestion, start, end, "+autocomplete");
- }
- },
-
- _onScroll: function()
- {
- if (!this._suggestBox)
- return;
- var cursor = this._codeMirror.getCursor();
- var scrollInfo = this._codeMirror.getScrollInfo();
- var topmostLineNumber = this._codeMirror.lineAtHeight(scrollInfo.top, "local");
- var bottomLine = this._codeMirror.lineAtHeight(scrollInfo.top + scrollInfo.clientHeight, "local");
- if (cursor.line < topmostLineNumber || cursor.line > bottomLine)
- this.clearAutocomplete();
- else {
- this._updateAnchorBox();
- this._suggestBox.setPosition(this._anchorBox);
- }
- },
-
- _onCursorActivity: function()
- {
- if (!this._suggestBox)
- return;
- var cursor = this._codeMirror.getCursor();
- var shouldCloseAutocomplete = !(cursor.line === this._prefixRange.startLine && this._prefixRange.startColumn <= cursor.ch && cursor.ch <= this._prefixRange.endColumn);
- // Try not to hide autocomplete when user types in.
- if (cursor.line === this._prefixRange.startLine && cursor.ch === this._prefixRange.endColumn + 1) {
- var line = this._codeMirror.getLine(cursor.line);
- shouldCloseAutocomplete = this._config.isWordChar ? !this._config.isWordChar(line.charAt(cursor.ch - 1)) : false;
- }
- if (shouldCloseAutocomplete)
- this.clearAutocomplete();
- this._onCursorActivityHandledForTest();
- },
-
- _onCursorActivityHandledForTest: function() { },
-
- _updateAnchorBox: function()
- {
- var line = this._prefixRange.startLine;
- var column = this._prefixRange.startColumn;
- var metrics = this._textEditor.cursorPositionToCoordinates(line, column);
- this._anchorBox = metrics ? new AnchorBox(metrics.x, metrics.y, 0, metrics.height) : null;
- },
+ case WebInspector.KeyboardShortcut.Keys.Left.code:
+ case WebInspector.KeyboardShortcut.Keys.Home.code:
+ this.clearAutocomplete();
+ return false;
+ case WebInspector.KeyboardShortcut.Keys.Esc.code:
+ this.clearAutocomplete();
+ return true;
+ }
+ return this._suggestBox.keyPressed(event);
+ }
+
+ /**
+ * @return {boolean}
+ */
+ _isCursorAtEndOfLine() {
+ var cursor = this._codeMirror.getCursor('to');
+ return cursor.ch === this._codeMirror.getLine(cursor.line).length;
+ }
+
+ /**
+ * @override
+ * @param {string} suggestion
+ * @param {boolean=} isIntermediateSuggestion
+ */
+ applySuggestion(suggestion, isIntermediateSuggestion) {
+ this._currentSuggestion = suggestion;
+ this._setHint(suggestion);
+ }
+
+ /**
+ * @override
+ */
+ acceptSuggestion() {
+ if (this._prefixRange.endColumn - this._prefixRange.startColumn === this._currentSuggestion.length)
+ return;
+
+ var selections = this._codeMirror.listSelections().slice();
+ var prefixLength = this._prefixRange.endColumn - this._prefixRange.startColumn;
+ for (var i = selections.length - 1; i >= 0; --i) {
+ var start = selections[i].head;
+ var end = new CodeMirror.Pos(start.line, start.ch - prefixLength);
+ this._codeMirror.replaceRange(this._currentSuggestion, start, end, '+autocomplete');
+ }
+ }
+
+ _onScroll() {
+ if (!this._suggestBox)
+ return;
+ var cursor = this._codeMirror.getCursor();
+ var scrollInfo = this._codeMirror.getScrollInfo();
+ var topmostLineNumber = this._codeMirror.lineAtHeight(scrollInfo.top, 'local');
+ var bottomLine = this._codeMirror.lineAtHeight(scrollInfo.top + scrollInfo.clientHeight, 'local');
+ if (cursor.line < topmostLineNumber || cursor.line > bottomLine)
+ this.clearAutocomplete();
+ else {
+ this._updateAnchorBox();
+ this._suggestBox.setPosition(this._anchorBox);
+ }
+ }
+
+ _onCursorActivity() {
+ if (!this._suggestBox)
+ return;
+ var cursor = this._codeMirror.getCursor();
+ var shouldCloseAutocomplete =
+ !(cursor.line === this._prefixRange.startLine && this._prefixRange.startColumn <= cursor.ch &&
+ cursor.ch <= this._prefixRange.endColumn);
+ // Try not to hide autocomplete when user types in.
+ if (cursor.line === this._prefixRange.startLine && cursor.ch === this._prefixRange.endColumn + 1) {
+ var line = this._codeMirror.getLine(cursor.line);
+ shouldCloseAutocomplete = this._config.isWordChar ? !this._config.isWordChar(line.charAt(cursor.ch - 1)) : false;
+ }
+ if (shouldCloseAutocomplete)
+ this.clearAutocomplete();
+ this._onCursorActivityHandledForTest();
+ }
+
+ _onCursorActivityHandledForTest() {
+ }
+
+ _updateAnchorBox() {
+ var line = this._prefixRange.startLine;
+ var column = this._prefixRange.startColumn;
+ var metrics = this._textEditor.cursorPositionToCoordinates(line, column);
+ this._anchorBox = metrics ? new AnchorBox(metrics.x, metrics.y, 0, metrics.height) : null;
+ }
};
+
+WebInspector.TextEditorAutocompleteController.HintBookmark = Symbol('hint');

Powered by Google App Engine
This is Rietveld 408576698