@@ -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 ) ;
0 commit comments