prettier icon indicating copy to clipboard operation
prettier copied to clipboard

Range formatting doesn't work

Open cryptomilk opened this issue 1 year ago • 0 comments

Prettier 3.2.5 Playground link

--parser babel
--tab-width 4
--range-start 598
--range-end 678

Input:

module.exports = grammar({
    name: 'rpmspec',

    rules: {
        name: ($) =>
            choice('AutoProv', 'AutoReq', 'AutoReqProv', 'AutoRequires', 'BuildArch', 'BuildArchitectures', 'BuildConflicts', 'BuildPreReq', 'BuildRequires', 'BuildRoot', 'Conflicts', 'Distribution', 'Enhances', 'Epoch', 'ExcludeArch', 'ExclusiveArch', 'ExclusiveOS', 'Group', 'License', 'Name', 'Obsoletes', 'Packager', 'Prereq', 'Provides', 'Recommends', 'Release', 'Requires', 'Suggests', 'Summary', 'Supplements', 'URL', 'Url', 'Vendor', 'Version', /Patch\d*/, /Source\d*/),

        _value: ($) =>
            repeat(choice( $.simple_expansion, $.expansion, $.integer, $.float, $.string )),
    },
});

Output:

module.exports = grammar({
    name: "rpmspec",

    rules: {
        name: ($) =>
            choice(
                "AutoProv",
                "AutoReq",
                "AutoReqProv",
                "AutoRequires",
                "BuildArch",
                "BuildArchitectures",
                "BuildConflicts",
                "BuildPreReq",
                "BuildRequires",
                "BuildRoot",
                "Conflicts",
                "Distribution",
                "Enhances",
                "Epoch",
                "ExcludeArch",
                "ExclusiveArch",
                "ExclusiveOS",
                "Group",
                "License",
                "Name",
                "Obsoletes",
                "Packager",
                "Prereq",
                "Provides",
                "Recommends",
                "Release",
                "Requires",
                "Suggests",
                "Summary",
                "Supplements",
                "URL",
                "Url",
                "Vendor",
                "Version",
                /Patch\d*/,
                /Source\d*/,
            ),

        _value: ($) =>
            repeat(
                choice(
                    $.simple_expansion,
                    $.expansion,
                    $.integer,
                    $.float,
                    $.string,
                ),
            ),
    },
});

Expected output:

module.exports = grammar({
    name: 'rpmspec',

    rules: {
        name: ($) =>
            choice('AutoProv', 'AutoReq', 'AutoReqProv', 'AutoRequires', 'BuildArch', 'BuildArchitectures', 'BuildConflicts', 'BuildPreReq', 'BuildRequires', 'BuildRoot', 'Conflicts', 'Distribution', 'Enhances', 'Epoch', 'ExcludeArch', 'ExclusiveArch', 'ExclusiveOS', 'Group', 'License', 'Name', 'Obsoletes', 'Packager', 'Prereq', 'Provides', 'Recommends', 'Release', 'Requires', 'Suggests', 'Summary', 'Supplements', 'URL', 'Url', 'Vendor', 'Version', /Patch\d*/, /Source\d*/),

        _value: ($) =>
            repeat(
                choice(
                    $.simple_expansion,
                    $.expansion,
                    $.integer,
                    $.float,
                    $.string,
                ),
            ),
    },
});

Why? As I select a range for formatting, only the given range should be formatted, but instead it formats the complete file.

cryptomilk avatar Mar 07 '24 14:03 cryptomilk