зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1254070 - inspector: trigger autocomplete if nextchar is not a word character;r=gl
For the style attribute CSS autocompletion, suggestions will now be provided when the character after the caret is a non-word character. As opposed to the current behavior where suggestions would only be displayed if the next character was the end of the input or a space. This allows to show suggestions when the user's caret is next to ";" or '"', which can frequently happen when editing style attributes. MozReview-Commit-ID: Bvz6koikbqR --HG-- extra : rebase_source : fc4978fdd14bcaf99d3286e7750c005e8d11d96a extra : amend_source : 33cbbee2523bbc89fa2d5d09297666fc3256045f
This commit is contained in:
Родитель
a11cd38818
Коммит
9e8018a6ae
|
@ -64,6 +64,7 @@ skip-if = e10s # scratchpad.xul is not loading in e10s window
|
|||
subsuite = clipboard
|
||||
[browser_markup_css_completion_style_attribute_01.js]
|
||||
[browser_markup_css_completion_style_attribute_02.js]
|
||||
[browser_markup_css_completion_style_attribute_03.js]
|
||||
[browser_markup_dragdrop_autoscroll.js]
|
||||
[browser_markup_dragdrop_distance.js]
|
||||
[browser_markup_dragdrop_draggable.js]
|
||||
|
|
|
@ -70,7 +70,6 @@ const TEST_DATA = [
|
|||
];
|
||||
|
||||
add_task(function* () {
|
||||
info("Opening the inspector on the test URL");
|
||||
let {inspector} = yield openInspectorForURL(TEST_URL);
|
||||
|
||||
yield runStyleAttributeAutocompleteTests(inspector, TEST_DATA);
|
||||
|
|
|
@ -98,7 +98,6 @@ const TEST_DATA_INNER = [
|
|||
];
|
||||
|
||||
add_task(function* () {
|
||||
info("Opening the inspector on the test URL");
|
||||
let {inspector} = yield openInspectorForURL(TEST_URL);
|
||||
|
||||
yield runStyleAttributeAutocompleteTests(inspector, TEST_DATA_DOUBLE);
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
/* vim: set ts=2 et sw=2 tw=80: */
|
||||
/* Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/ */
|
||||
/* import-globals-from helper_style_attr_test_runner.js */
|
||||
|
||||
"use strict";
|
||||
|
||||
// Test CSS autocompletion of the style attribute can be triggered when the
|
||||
// caret is before a non-word character.
|
||||
|
||||
loadHelperScript("helper_style_attr_test_runner.js");
|
||||
|
||||
const TEST_URL = URL_ROOT + "doc_markup_edit.html";
|
||||
|
||||
// test data format :
|
||||
// [
|
||||
// what key to press,
|
||||
// expected input box value after keypress,
|
||||
// expected input.selectionStart,
|
||||
// expected input.selectionEnd,
|
||||
// is popup expected to be open ?
|
||||
// ]
|
||||
const TEST_DATA = [
|
||||
["s", "s", 1, 1, false],
|
||||
["t", "st", 2, 2, false],
|
||||
["y", "sty", 3, 3, false],
|
||||
["l", "styl", 4, 4, false],
|
||||
["e", "style", 5, 5, false],
|
||||
["=", "style=", 6, 6, false],
|
||||
["\"", "style=\"", 7, 7, false],
|
||||
["\"", "style=\"\"", 8, 8, false],
|
||||
["VK_LEFT", "style=\"\"", 7, 7, false],
|
||||
["c", "style=\"color\"", 8, 12, true],
|
||||
["o", "style=\"color\"", 9, 12, true],
|
||||
["VK_RIGHT", "style=\"color\"", 12, 12, false],
|
||||
[":", "style=\"color:aliceblue\"", 13, 22, true],
|
||||
["b", "style=\"color:beige\"", 14, 18, true],
|
||||
["VK_RIGHT", "style=\"color:beige\"", 18, 18, false],
|
||||
[";", "style=\"color:beige;\"", 19, 19, false],
|
||||
[";", "style=\"color:beige;;\"", 20, 20, false],
|
||||
["VK_LEFT", "style=\"color:beige;;\"", 19, 19, false],
|
||||
["p", "style=\"color:beige;padding;\"", 20, 26, true],
|
||||
["VK_RIGHT", "style=\"color:beige;padding;\"", 26, 26, false],
|
||||
[":", "style=\"color:beige;padding:calc;\"", 27, 31, true],
|
||||
["0", "style=\"color:beige;padding:0;\"", 28, 28, false],
|
||||
["VK_RETURN", "style=\"color:beige;padding:0;\"",
|
||||
-1, -1, false]
|
||||
];
|
||||
|
||||
add_task(function* () {
|
||||
let {inspector} = yield openInspectorForURL(TEST_URL);
|
||||
|
||||
yield runStyleAttributeAutocompleteTests(inspector, TEST_DATA);
|
||||
});
|
|
@ -1297,15 +1297,19 @@ InplaceEditor.prototype = {
|
|||
if (query == null) {
|
||||
return;
|
||||
}
|
||||
// If nothing is selected and there is a non-space character after the
|
||||
// cursor, do not autocomplete.
|
||||
// If nothing is selected and there is a word (\w) character after the cursor, do
|
||||
// not autocomplete.
|
||||
if (input.selectionStart == input.selectionEnd &&
|
||||
input.selectionStart < input.value.length &&
|
||||
input.value.slice(input.selectionStart)[0] != " ") {
|
||||
input.selectionStart < input.value.length) {
|
||||
let nextChar = input.value.slice(input.selectionStart)[0];
|
||||
// Check if the next character is a valid word character, no suggestion should be
|
||||
// provided when preceeding a word.
|
||||
if (/[\w-]/.test(nextChar)) {
|
||||
// This emit is mainly to make the test flow simpler.
|
||||
this.emit("after-suggest", "nothing to autocomplete");
|
||||
return;
|
||||
}
|
||||
}
|
||||
let list = [];
|
||||
if (this.contentType == CONTENT_TYPES.CSS_PROPERTY) {
|
||||
list = this._getCSSPropertyList();
|
||||
|
|
Загрузка…
Ссылка в новой задаче