diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 4b1ee918..b594d71f 100644 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -319,6 +319,14 @@ "message": "(Stylish does not work on pages like this.)", "description": "Note in the toolbar pop-up when on a URL Stylish can't affect" }, + "undo": { + "message": "Undo", + "description": "Button label" + }, + "undoGlobal": { + "message": "Undo (global)", + "description": "CSS-beautify global Undo button label" + }, "updateCheckFailBadResponseCode": { "message": "Update failed - server responded with code $code$.", "description": "Text that displays when an update check failed because the response code indicates an error", diff --git a/edit.html b/edit.html index d7ae3780..c387fe53 100644 --- a/edit.html +++ b/edit.html @@ -330,6 +330,12 @@ .beautify-options div[newline="true"] + div span[indent] { padding-left: 2rem; } + .beautify-options:after { + clear: both; + display: block; + content: " "; + height: 1rem; + } .beautify-options span { font-weight: bold; } @@ -447,7 +453,7 @@
-
+
diff --git a/edit.js b/edit.js index 52cdd3bc..974714dc 100644 --- a/edit.js +++ b/edit.js @@ -828,6 +828,7 @@ function gotoLintIssue(event) { } function beautify(event) { + var undoCount = 1; if (exports.css_beautify) { // thanks to csslint's definition of 'exports' doBeautify(); } else { @@ -860,7 +861,15 @@ function beautify(event) { optionHtml("border: none;", "newline_between_properties", true) + optionHtml("display: block;", "newline_before_close_brace", true) + optionHtml("}", "newline_between_rules") + - ""); + "" + + "
"); + + var undoButton = document.querySelector("#help-popup button[role='undo']"); + undoButton.textContent = t(scope.length == 1 ? "undo" : "undoGlobal"); + undoButton.addEventListener("click", function() { + scope.forEach(CodeMirror.commands.undo); + undoButton.disabled = --undoCount == 0; + }); document.querySelector(".beautify-options").addEventListener("change", function(event) { var value = event.target.selectedIndex > 0; @@ -868,6 +877,8 @@ function beautify(event) { prefs.setPref("editor.beautify", options); event.target.parentNode.setAttribute("newline", value.toString()); doBeautify(); + undoCount++; + undoButton.disabled = false; }); function optionHtml(label, optionName, indent) {