Skip to content

Commit 1472b49

Browse files
committed
chore: editor ruler line length will be used for prettier default line length
1 parent 8da6754 commit 1472b49

6 files changed

Lines changed: 67 additions & 5 deletions

File tree

src-node/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/editor/EditorOptionHandlers.js

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ define(function (require, exports, module) {
3939
CLOSE_BRACKETS = "closeBrackets",
4040
AUTO_HIDE_SEARCH = "autoHideSearch";
4141

42+
let currentMaxLineLength = 120;
43+
4244
const PREFERENCES_EDITOR_RULERS = "editor.rulers",
4345
PREFERENCES_EDITOR_RULER_COLORS = "editor.rulerColors",
4446
PREFERENCES_EDITOR_RULERS_ENABLED = "editor.rulersEnabled";
@@ -165,11 +167,21 @@ define(function (require, exports, module) {
165167
_createRulers(newActiveEditor);
166168
});
167169
PreferencesManager.on("change", PREFERENCES_EDITOR_RULERS_ENABLED, _resetRulers);
168-
PreferencesManager.on("change", PREFERENCES_EDITOR_RULERS, _resetRulers);
170+
PreferencesManager.on("change", PREFERENCES_EDITOR_RULERS, ()=>{
171+
const rulerColumns = PreferencesManager.get(PREFERENCES_EDITOR_RULERS) || [];
172+
currentMaxLineLength = rulerColumns.length ? Math.max(...rulerColumns) : 120;
173+
_resetRulers();
174+
});
169175
PreferencesManager.on("change", PREFERENCES_EDITOR_RULER_COLORS, _resetRulers);
170176
ThemeManager.on(ThemeManager.EVENT_THEME_CHANGE, _handleThemeChange);
171177
_resetRulers();
172178
}
173179

180+
function getMaxLineLength() {
181+
return currentMaxLineLength;
182+
}
183+
174184
AppInit.appReady(_init);
185+
186+
exports.getMaxLineLength = getMaxLineLength;
175187
});

src/extensions/default/Phoenix-prettier/main.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,11 @@ define(function (require, exports, module) {
5353
BeautificationManager = brackets.getModule("features/BeautificationManager"),
5454
PreferencesManager = brackets.getModule("preferences/PreferencesManager"),
5555
Editor = brackets.getModule("editor/Editor").Editor,
56+
EditorOptionHandlers = brackets.getModule("editor/EditorOptionHandlers"),
5657
ExtensionsWorker = brackets.getModule("worker/ExtensionsWorker");
5758

5859
const prefs = PreferencesManager.getExtensionPrefs("beautify");
5960
prefs.definePreference("options", "object", {
60-
printWidth: 120,
6161
semi: true,
6262
trailingComma: "none",
6363
singleQuote: false,
@@ -226,14 +226,16 @@ define(function (require, exports, module) {
226226
return;
227227
}
228228

229-
let options = prefs.get("options");
229+
let options = _clone(prefs.get("options"));
230230
let indentWithTabs = Editor.getUseTabChar(filepath);
231+
const printWidth = options.printWidth || EditorOptionHandlers.getMaxLineLength();
231232
options._usePlugin = parsersForLanguage[languageId];
232233
Object.assign(options, {
233234
parser: parsersForLanguage[languageId],
234235
tabWidth: indentWithTabs ? Editor.getTabSize() : Editor.getSpaceUnits(),
235236
useTabs: indentWithTabs,
236237
filepath: filepath,
238+
printWidth: printWidth,
237239
endOfLine: "lf" // codemirror always does lf and only crlf before disk write in windows.
238240
});
239241
let prettierParams ={

src/extensions/default/Phoenix-prettier/unittests.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ define(function (require, exports, module) {
2727
let SpecRunnerUtils = brackets.getModule("spec/SpecRunnerUtils"),
2828
Editor = brackets.getModule("editor/Editor").Editor,
2929
FileUtils = brackets.getModule('file/FileUtils'),
30+
PreferencesManager = brackets.getModule("preferences/PreferencesManager"),
3031
BeautificationManager = brackets.getModule("features/BeautificationManager");
3132

3233
const PLATFORM_LINE_ENDINGS = (FileUtils.getPlatformLineEndings() === 'CRLF' ? "\r\n" : "\n");
@@ -35,6 +36,7 @@ define(function (require, exports, module) {
3536

3637
const jsFile = require("text!../../../../test/spec/prettier-test-files/js/test.js"),
3738
jsPrettyFile = require("text!../../../../test/spec/prettier-test-files/js/test-pretty.js"),
39+
jsPrettyRulerFile = require("text!../../../../test/spec/prettier-test-files/js/test-pretty-ruler.js"),
3840
jsPrettySelection = require("text!../../../../test/spec/prettier-test-files/js/test-pretty-selection.js"),
3941
jsPrettySelectionOffset = require("text!../../../../test/spec/prettier-test-files/js/test-pretty-selection-offset.js"),
4042
jsPrettySingleSpace = require("text!../../../../test/spec/prettier-test-files/js/test-pretty-single-space.js"),
@@ -81,6 +83,34 @@ define(function (require, exports, module) {
8183
expect(testEditor.document.getText(true)).toBe(jsPrettyFile);
8284
});
8385

86+
it("should use line max length from editor rulers by default", async function () {
87+
const PREFERENCES_EDITOR_RULERS = "editor.rulers";
88+
PreferencesManager.set(PREFERENCES_EDITOR_RULERS, [10, 20]);
89+
createMockEditor(jsFile, "javascript", "/test.js");
90+
await BeautificationManager.beautifyEditor(testEditor);
91+
expect(testEditor.document.getText(true)).toBe(jsPrettyRulerFile);
92+
PreferencesManager.set(PREFERENCES_EDITOR_RULERS, [120]); // restore default
93+
});
94+
95+
it("should prioritise line max length from prettier options above editor rulers", async function () {
96+
// here we set prettier options to 20 line width and ruler options to 120 chars. the prettier override
97+
// should take preference above ruler config
98+
const PREFERENCES_EDITOR_RULERS = "editor.rulers";
99+
PreferencesManager.set(PREFERENCES_EDITOR_RULERS, [120]);
100+
createMockEditor(jsFile, "javascript", "/test.js");
101+
await BeautificationManager.beautifyEditor(testEditor);
102+
expect(testEditor.document.getText(true)).toBe(jsPrettyFile);
103+
// now override the prettier prefs
104+
const extPrefs = PreferencesManager.getExtensionPrefs("beautify");
105+
const originalPrefs = structuredClone(extPrefs.get("options"));
106+
const newPrefs = structuredClone(originalPrefs);
107+
newPrefs.printWidth = 20;
108+
extPrefs.set("options", newPrefs);
109+
await BeautificationManager.beautifyEditor(testEditor);
110+
expect(testEditor.document.getText(true)).toBe(jsPrettyRulerFile);
111+
extPrefs.set("options", originalPrefs);
112+
});
113+
84114
it("should beautify editor respect space options for js", async function () {
85115
createMockEditor(jsFile, "javascript", "/test.js");
86116
Editor.setUseTabChar(false);

test/SpecRunner.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ define(function (require, exports, module) {
213213
require("thirdparty/lodash");
214214
require("thirdparty/jszip");
215215
require("editor/CodeHintManager");
216+
require("editor/EditorOptionHandlers");
216217
require("utils/Global");
217218
require("command/Menus");
218219
require("utils/NodeDomain");
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function hello() {
2+
console.log(
3+
"hello"
4+
);
5+
}
6+
7+
function world() {
8+
console.log(
9+
"world"
10+
);
11+
}
12+
13+
function yo() {
14+
console.log(
15+
"yo"
16+
);
17+
}

0 commit comments

Comments
 (0)