diff --git a/pygments/lexers/configs.py b/pygments/lexers/configs.py index ab9f5ff9ba..04b09cf4e7 100644 --- a/pygments/lexers/configs.py +++ b/pygments/lexers/configs.py @@ -46,15 +46,18 @@ class IniLexer(RegexLexer): (r'\s+', Whitespace), (r'[;#].*', Comment.Single), (r'\[.*?\]$', Keyword), - (r'(.*?)([  \t]*)(=)([  \t]*)([^;#\n]*[  \t]\\\n)', - bygroups(Name.Attribute, Whitespace, Operator, Whitespace, String), "value"), - (r'(.*?)([  \t]*)(=)([  \t]*)([^;#\n]*)', + (r'(.*?)([  \t]*)(=)([  \t]*)([^;#\n]*)(\\)(\s+)', + bygroups(Name.Attribute, Whitespace, Operator, Whitespace, String, Text, Whitespace), + "value"), + (r'(.*?)([  \t]*)(=)([  \t]*)([^ ;#\n]*(?: [^ ;#\n]+)*)', bygroups(Name.Attribute, Whitespace, Operator, Whitespace, String)), # standalone option, supported by some INI parsers (r'(.+?)$', Name.Attribute), ], 'value': [ # line continuation - (r'.*\\[ \t]*\n', String), + (r'\s+', Whitespace), + (r'(\s*)(.*)(\\)([ \t]*)', + bygroups(Whitespace, String, Text, Whitespace)), (r'.*$', String, "#pop"), ], } diff --git a/tests/examplefiles/ini/test.ini.output b/tests/examplefiles/ini/test.ini.output index 0b79e410e0..27a91956fc 100644 --- a/tests/examplefiles/ini/test.ini.output +++ b/tests/examplefiles/ini/test.ini.output @@ -5,7 +5,8 @@ ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace -'bar ' Literal.String +'bar' Literal.String +' ' Text.Whitespace '; inline comment' Comment.Single '\n' Text.Whitespace @@ -13,7 +14,8 @@ ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace -'foo ' Literal.String +'foo' Literal.String +' ' Text.Whitespace '# inline comment with \\' Comment.Single '\n ' Text.Whitespace '# line continuation' Comment.Single @@ -41,9 +43,10 @@ ' ' Text.Whitespace '=' Operator ' ' Text.Whitespace -"Asia, Africa, 'North America', South America, \\\n" Literal.String - -' Antarctica, Europe, Australia' Literal.String +"Asia, Africa, 'North America', South America, " Literal.String +'\\' Text +'\n ' Text.Whitespace +'Antarctica, Europe, Australia' Literal.String '\n\n' Text.Whitespace 'implicit_boolean' Name.Attribute