Glavin001 / atom-beautify

:mega: Help Wanted - Looking for Maintainer: https://github.com/Glavin001/atom-beautify/issues/2572 | :lipstick: Universal beautification package for Atom editor (:warning: Currently migrating to https://github.com/Unibeautify/ and have very limited bandwidth for Atom-Beautify Issues. Thank you for your patience and understanding :heart: )
http://unibeautify.com/
MIT License
1.5k stars 454 forks source link

Atom says file did not save, when beautifyOnSave is enabled #314

Closed mingjunyang closed 9 years ago

mingjunyang commented 9 years ago

hello ! This issuse perhaps you can solve.

I setting beautifyOnSave:true..I save some files, but the tips I don't save the file.

Something about my atom.

Atom Version: 0.196.0
System: linux 3.16.7-21-desktop
Thrown From: atom-beautify package, v0.26.4

more information you can see #313,That is create use atom report issues.

Glavin001 commented 9 years ago

I save some files, but the tips I don't save the file.

Could you please explain your problem clearer so I can help? :smiley:

Here's a few questions to help me help you:

Thank you.

Glavin001 commented 9 years ago

I just published an update to v0.26.5 regarding beautify on save (fixes #289). Let me know if your issue still exists and then we can reopen this. Please provide me with your Help Debug Editor results.

mingjunyang commented 9 years ago

Oh,sorry,I use the 313 is want to tell you my os environment and my atom environment. Because this issues is created by atom report.

I am a Chinese,and English so bad.So you need guess my words.

I try describe my problem again.

I use Core: save save my JavaScript source file, but the atom point out I not save this file. I save html file, the atom point out I not save this file. I save css file, the atom point out I not save this file.

I save the C source file,Not happend this problem. I save the Java source file,My first save happend this problem,and save again is ok. I save the SQL source file,My first save happend this problem,and save again is ok.

this status is point out I not save my files

Atom Beautify - Debugging information

The following debugging information was generated by Atom Beautify on Wed May 06 2015 09:47:43 GMT+0800 (CST).


Platform: linux

Versions

Atom Version: 0.196.0

Atom Beautify Version: 0.26.5

Original file to be beautified

Original File Path: /home/mingjunyang/git/testMaterial/app/javascript/app.js

Original File Grammar: JavaScript

Original File Contents:

angular.module('reportApp', ['ngMaterial', 'ui.grid'])
    .config(function($provide) {
        $provide.decorator('GridOptions', function($delegate) {
            var contentH = $('#content').css('height').replace('px', '');
            var headH = $('#content .md-padding').css('height').replace('px', '');
            var rowCount = Math.floor((contentH - headH) / 30 - 3);

            var gridOptions;
            gridOptions = angular.copy($delegate);
            gridOptions.initialize = function(options) {
                var initOptions;
                initOptions = $delegate.initialize(options);
                initOptions.enableColumnMenus = false;
                initOptions.showHeader = true;
                initOptions.showGridFooter = true;
                initOptions.multiSelect = false;
                initOptions.useExternalPaging = true;
                initOptions.minimumColumnSize = 60;
                initOptions.minRowsToShow = rowCount;
                return initOptions;
            };
            return gridOptions;
        });
    })
    .config([
        function() {}

    ])
    .controller('mainController', function($scope) {

    })
    .directive('asterisk', function() {
        return {
            restrict: 'AEC',
            template: '<span>&nbsp;&nbsp;{{show}}</span>',
            replace: true,
            transclude: true,
            scope: {},
            link: function(scope, element, attrs) {

                scope.show = Boolean(attrs.show) ? '*' : '';
                var ele = element[0];
                $(ele).css({
                    color: "red",
                    fontSize: "1.5em",
                    textAlign: "center",
                    verticalAlign: "middle"
                })
            }
        };
    })

Beautification options

Editor Options: Options from Atom Editor settings

{
    "indent_size": 4,
    "indent_char": " ",
    "indent_with_tabs": false
}

Config Options: Options from Atom Beautify package settings

{
    "js": {
        "keep_function_indentation": true,
        "indent_size": 4,
        "indent_char": " ",
        "indent_level": 0,
        "indent_with_tabs": false,
        "preserve_newlines": true,
        "max_preserve_newlines": 10,
        "space_in_paren": false,
        "jslint_happy": false,
        "space_after_anon_function": false,
        "brace_style": "collapse",
        "break_chained_methods": false,
        "keep_array_indentation": false,
        "space_before_conditional": true,
        "eval_code": false,
        "unescape_strings": false,
        "wrap_line_length": 0,
        "end_with_newline": false
    },
    "css": {
        "newline_between_rules": true,
        "selector_separator_newline": true,
        "indent_size": 4,
        "indent_char": " ",
        "preserve_newlines": false
    },
    "cs": {
        "configPath": ""
    },
    "c": {
        "configPath": ""
    },
    "cpp": {
        "configPath": ""
    },
    "d": {
        "configPath": ""
    },
    "html": {
        "indent_inner_html": false,
        "indent_size": 4,
        "indent_char": " ",
        "brace_style": "collapse",
        "indent_scripts": "normal",
        "wrap_line_length": 250,
        "wrap_attributes": "auto",
        "wrap_attributes_indent_size": 4,
        "preserve_newlines": true,
        "max_preserve_newlines": 10,
        "unformatted": [
            "a",
            "sub",
            "sup",
            "b",
            "i",
            "u"
        ],
        "end_with_newline": false
    },
    "java": {
        "configPath": ""
    },
    "objectivec": {
        "configPath": ""
    },
    "pawn": {
        "configPath": ""
    },
    "perl": {
        "perltidy_profile": ""
    },
    "php": {
        "fixers": "",
        "level": ""
    },
    "python": {
        "max_line_length": 79,
        "indent_size": 4,
        "ignore": [
            "E24"
        ]
    },
    "sql": {
        "indent_size": 4,
        "keywords": "upper",
        "identifiers": "lower"
    },
    "vala": {
        "configPath": ""
    }
}

Home Options: Options from /home/mingjunyang/.jsbeautifyrc

{}

EditorConfig Options: Options from EditorConfig file

{}

Project Options: Options from .jsbeautifyrc files starting from directory /home/mingjunyang/git/testMaterial/app/javascript and going up to root

[
    {},
    {},
    {},
    {},
    {},
    {}
]

Results

Beautified File Contents:

angular.module('reportApp', ['ngMaterial', 'ui.grid'])
    .config(function($provide) {
        $provide.decorator('GridOptions', function($delegate) {
            var contentH = $('#content').css('height').replace('px', '');
            var headH = $('#content .md-padding').css('height').replace('px', '');
            var rowCount = Math.floor((contentH - headH) / 30 - 3);

            var gridOptions;
            gridOptions = angular.copy($delegate);
            gridOptions.initialize = function(options) {
                var initOptions;
                initOptions = $delegate.initialize(options);
                initOptions.enableColumnMenus = false;
                initOptions.showHeader = true;
                initOptions.showGridFooter = true;
                initOptions.multiSelect = false;
                initOptions.useExternalPaging = true;
                initOptions.minimumColumnSize = 60;
                initOptions.minRowsToShow = rowCount;
                return initOptions;
            };
            return gridOptions;
        });
    })
    .config([
        function() {}

    ])
    .controller('mainController', function($scope) {

    })
    .directive('asterisk', function() {
        return {
            restrict: 'AEC',
            template: '<span>&nbsp;&nbsp;{{show}}</span>',
            replace: true,
            transclude: true,
            scope: {},
            link: function(scope, element, attrs) {

                scope.show = Boolean(attrs.show) ? '*' : '';
                var ele = element[0];
                $(ele).css({
                    color: "red",
                    fontSize: "1.5em",
                    textAlign: "center",
                    verticalAlign: "middle"
                })
            }
        };
    })

Logs:

2015-05-06T01:47:43.566Z - info: [/home/mingjunyang/.atom/packages/atom-beautify/src/beautifiers/index.coffee] beautify angular.module('reportApp', ['ngMaterial', 'ui.grid'])
    .config(function($provide) {
        $provide.decorator('GridOptions', function($delegate) {
            var contentH = $('#content').css('height').replace('px', '');
            var headH = $('#content .md-padding').css('height').replace('px', '');
            var rowCount = Math.floor((contentH - headH) / 30 - 3);

            var gridOptions;
            gridOptions = angular.copy($delegate);
            gridOptions.initialize = function(options) {
                var initOptions;
                initOptions = $delegate.initialize(options);
                initOptions.enableColumnMenus = false;
                initOptions.showHeader = true;
                initOptions.showGridFooter = true;
                initOptions.multiSelect = false;
                initOptions.useExternalPaging = true;
                initOptions.minimumColumnSize = 60;
                initOptions.minRowsToShow = rowCount;
                return initOptions;
            };
            return gridOptions;
        });
    })
    .config([
        function() {}

    ])
    .controller('mainController', function($scope) {

    })
    .directive('asterisk', function() {
        return {
            restrict: 'AEC',
            template: '<span>&nbsp;&nbsp;{{show}}</span>',
            replace: true,
            transclude: true,
            scope: {},
            link: function(scope, element, attrs) {

                scope.show = Boolean(attrs.show) ? '*' : '';
                var ele = element[0];
                $(ele).css({
                    color: "red",
                    fontSize: "1.5em",
                    textAlign: "center",
                    verticalAlign: "middle"
                })
            }
        };
    }) [ { indent_size: 4, indent_char: ' ', indent_with_tabs: false },
  { js: 
     { keep_function_indentation: true,
       indent_size: 4,
       indent_char: ' ',
       indent_level: 0,
       indent_with_tabs: false,
       preserve_newlines: true,
       max_preserve_newlines: 10,
       space_in_paren: false,
       jslint_happy: false,
       space_after_anon_function: false,
       brace_style: 'collapse',
       break_chained_methods: false,
       keep_array_indentation: false,
       space_before_conditional: true,
       eval_code: false,
       unescape_strings: false,
       wrap_line_length: 0,
       end_with_newline: false },
    css: 
     { newline_between_rules: true,
       selector_separator_newline: true,
       indent_size: 4,
       indent_char: ' ',
       preserve_newlines: false },
    cs: { configPath: '' },
    c: { configPath: '' },
    cpp: { configPath: '' },
    d: { configPath: '' },
    html: 
     { indent_inner_html: false,
       indent_size: 4,
       indent_char: ' ',
       brace_style: 'collapse',
       indent_scripts: 'normal',
       wrap_line_length: 250,
       wrap_attributes: 'auto',
       wrap_attributes_indent_size: 4,
       preserve_newlines: true,
       max_preserve_newlines: 10,
       unformatted: [Object],
       end_with_newline: false },
    java: { configPath: '' },
    objectivec: { configPath: '' },
    pawn: { configPath: '' },
    perl: { perltidy_profile: '' },
    php: { fixers: '', level: '' },
    python: { max_line_length: 79, indent_size: 4, ignore: [Object] },
    sql: { indent_size: 4, keywords: 'upper', identifiers: 'lower' },
    vala: { configPath: '' } },
  {},
  {},
  {},
  {},
  {},
  {},
  {},
  {} ] JavaScript /home/mingjunyang/git/testMaterial/app/javascript/app.js
2015-05-06T01:47:43.568Z - verbose: [/home/mingjunyang/.atom/packages/atom-beautify/src/beautifiers/index.coffee] JavaScript name=JavaScript, namespace=js, grammars=[JavaScript], extensions=[js], type=integer, default=4, minimum=0, description=Indentation size/length (Supported by JS Beautify, Pretty Diff), title=JavaScript - Indent size, beautifiers=[JS Beautify, Pretty Diff], type=string, default= , minimum=0, description=Indentation character (Supported by JS Beautify, Pretty Diff), title=JavaScript - Indent char, beautifiers=[JS Beautify, Pretty Diff], type=integer, default=0, description=Initial indentation level (Supported by JS Beautify), title=JavaScript - Indent level, beautifiers=[JS Beautify], type=boolean, default=false, description=Indentation uses tabs, overrides `Indent Size` and `Indent Char` (Supported by JS Beautify), title=JavaScript - Indent with tabs, beautifiers=[JS Beautify], type=boolean, default=true, description=Preserve line-breaks (Supported by JS Beautify, Pretty Diff), title=JavaScript - Preserve newlines, beautifiers=[JS Beautify, Pretty Diff], type=integer, default=10, description=Number of line-breaks to be preserved in one chunk (Supported by JS Beautify), title=JavaScript - Max preserve newlines, beautifiers=[JS Beautify], type=boolean, default=false, description=Add padding spaces within paren, ie. f( a, b ) (Supported by JS Beautify), title=JavaScript - Space in paren, beautifiers=[JS Beautify], type=boolean, default=false, description=Enable jslint-stricter mode (Supported by JS Beautify), title=JavaScript - Jslint happy, beautifiers=[JS Beautify], type=boolean, default=false, description=Add a space before an anonymous function's parens, ie. function () (Supported by JS Beautify), title=JavaScript - Space after anon function, beautifiers=[JS Beautify], type=string, default=collapse, enum=[collapse, expand, end-expand, none], description=[collapse|expand|end-expand|none] (Supported by JS Beautify), title=JavaScript - Brace style, beautifiers=[JS Beautify], type=boolean, default=false, description=Break chained method calls across subsequent lines (Supported by JS Beautify), title=JavaScript - Break chained methods, beautifiers=[JS Beautify], type=boolean, default=false, description=Preserve array indentation (Supported by JS Beautify), title=JavaScript - Keep array indentation, beautifiers=[JS Beautify], type=boolean, default=false, description= (Supported by JS Beautify), title=JavaScript - Keep function indentation, beautifiers=[JS Beautify], type=boolean, default=true, description= (Supported by JS Beautify), title=JavaScript - Space before conditional, beautifiers=[JS Beautify], type=boolean, default=false, description= (Supported by JS Beautify), title=JavaScript - Eval code, beautifiers=[JS Beautify], type=boolean, default=false, description=Decode printable characters encoded in xNN notation (Supported by JS Beautify), title=JavaScript - Unescape strings, beautifiers=[JS Beautify], type=integer, default=0, description=Wrap lines at next opportunity after N characters (Supported by JS Beautify), title=JavaScript - Wrap line length, beautifiers=[JS Beautify], type=boolean, default=false, description=End output with newline (Supported by JS Beautify), title=JavaScript - End with newline, beautifiers=[JS Beautify], beautifiers=[JS Beautify, Pretty Diff, Pretty Diff, Pretty Diff, Pretty Diff]
2015-05-06T01:47:43.569Z - verbose: [/home/mingjunyang/.atom/packages/atom-beautify/src/beautifiers/index.coffee] beautifier JS Beautify silly=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, debug=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, verbose=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, info=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, warn=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, error=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, onLogging=function (handler) {
        var subscription;
        subscription = emitter.on('logging', handler);
        return subscription;
      }, silly=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, debug=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, verbose=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, info=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, warn=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, error=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, onLogging=function (handler) {
        var subscription;
        subscription = emitter.on('logging', handler);
        return subscription;
      }, languages=[HTML, Handlebars, Mustache, Marko, JavaScript, JSON, CSS], silly=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, debug=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, verbose=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, info=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, warn=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, error=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, onLogging=function (handler) {
        var subscription;
        subscription = emitter.on('logging', handler);
        return subscription;
      }, silly=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, debug=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, verbose=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, info=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, warn=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, error=function (msg) {
      // build argument list (level, msg, ... [string interpolate], [{metadata}], [callback])
      var args = [level].concat(Array.prototype.slice.call(arguments));
      target.log.apply(target, args);
    }, onLogging=function (handler) {
        var subscription;
        subscription = emitter.on('logging', handler);
        return subscription;
      }, languages=[CSV, ERB, EJS, HTML, XML, Spacebars, JSX, JavaScript, CSS, SCSS, Sass, JSON, TSS, LESS]
Glavin001 commented 9 years ago

I am a Chinese,and English so bad.So you need guess my words.

Not a problem. I apologize, I was not able to guess what you meant from your words: I did not understand what you meant by tips.

I try describe my problem again.

Thank you :smiley:.

I use Core: save save my JavaScript source file, but the atom point out I not save this file. I save html file, the atom point out I not save this file. I save css file, the atom point out I not save this file.

Could you take a screenshot of what it looks like for Atom to point out it did not save this file?


I am currently re-implementing Beautify On Save (see #289 and #308 ). This may actually resolve whatever problems are going on for you.

mingjunyang commented 9 years ago

Excuse me english please.I should be learn more english.My english is chinglish(chinese-english)...... So I need say sorry to you.

I try again,hope you can understand it.

the bule circle on table means that I did not save the files,but i use command Core :save already. this

Glavin001 commented 9 years ago

Could you update to v0.27.0 and try again. It may have been fixed, since I have made changes to how beautify on save works ( #308 ).

dhm116 commented 9 years ago

Still appears to be an issue - not sure what info would be helpful to debug.

Icehunter commented 9 years ago

Is this related to the whitespace plugin at all? I've had it off/on that if this plugin beautifies AFTER whitespace fires off its events then it removes the blank line at the end of the file.

Icehunter commented 9 years ago

Additional notes:

My beautify file (.jsbeautifyrc)

{
    "indent_size": 4,
    "indent_char": " ",
    "indent_level": 0,
    "indent_with_tabs": false,
    "preserve_newlines": true,
    "max_preserve_newlines": 2,
    "end_with_newline": true,
    "jslint_happy": true,
    "brace_style": "end-expand",
    "keep_array_indentation": false,
    "keep_function_indentation": false,
    "space_before_conditional": true,
    "break_chained_methods": false,
    "eval_code": false,
    "unescape_strings": false,
    "wrap_line_length": 0
}

To keep the whitespace rule of a ending new line end_with_newline has to be true either here or in the global options.

After beautifying the first time atom says it needs to be saved if I try to close it and shows a blue dot next to file name (sublime tabs).

Saving again properly registers the file contents have been saved and I will not be prompted (blue dot is gone).

mingjunyang commented 9 years ago

I update to 0.27.0.

Perhaps more trouble here........

I checked the checkbox. It is look like did not work now.....

1

"atom-beautify":
    _analyticsUserId: "9821831b-a2aa-4903-a52f-3599aea0f6c0"
    js_keep_function_indentation: true
    css_newline_between_rules: true
    css_selector_separator_newline: true
    beautifyOnSave: false
    language_coffeescript_beautify_on_save: true
    language_css_beautify_on_save: true
    language_js_beautify_on_save: true
    language_go_beautify_on_save: true
    language_html_beautify_on_save: true
    language_java_beautify_on_save: true
    language_handlebars_beautify_on_save: true
    language_json_beautify_on_save: true
Glavin001 commented 9 years ago

/cc @MichaelMcGlothlin @Onigirium from #326

Upgraded to 0.27.0. Saw the warning that the auto was depreciated and switched it off and turned on support for each language. Tried to save again and din't get the warning but files aren't saving. Tried JS and HTML/Handlebar and both had the same problem. Had to disable and restart Atom to restore the ability to save.

Glavin001 commented 9 years ago

I am able to reproduce. Hope to get this resolved very soon. Thank you all for your patience. I was away all day visiting my parents. Back to work now :wink:.

Glavin001 commented 9 years ago

Published fix to v0.27.1

Please let me know it works for each of you. Thank you.

dhm116 commented 9 years ago

LGTM - thanks! :+1:

mingjunyang commented 9 years ago

thx!I update to 0.27.1 already . Perhaps the trouble go away.

janwerkhoven commented 9 years ago

I am on version 0.27.1 and now no beautification happens at all on save, unfortunately. I have tried checking and unchecking both "Beautify Entire File on Save" and "DEPRECATED: Beauty on Save". No combination seems to work for me.

Atom-beautify v0.21.1 Atom v0.198.0 Mac OS X v10.10.3

Any suggestions?

Glavin001 commented 9 years ago

Have you checked/enabled the "beautify on save" for your desired language? Beautify on save is now opt-in and no longer global. 

— Sent from Mailbox

On Sun, May 10, 2015 at 10:20 PM, Jan Werkhoven notifications@github.com wrote:

I am on version 0.27.1 and now no beautification happens at all on save, unfortunately. I have tried checking and unchecking both "Beautify Entire File on Save" and "DEPRECATED: Beauty on Save". No combination seems to work for me. Atom-beautify v0.21.1 Atom v0.198.0 Mac OS X v10.10.3

Any suggestions?

Reply to this email directly or view it on GitHub: https://github.com/Glavin001/atom-beautify/issues/314#issuecomment-100729681

janwerkhoven commented 9 years ago

Checked "Beautify Entire File on Save" Checked "Language Config - SCSS - Beautify on Save" Works! Also the files are no longer in unsaved state after beautifcation. Good job ;)

mingjunyang commented 9 years ago

I Checked css js html,It' okay.But after autosave ,the cursor stay at first line ,not stay at my edit line.