diff options
author | Jesse Tan <jessetan@users.noreply.github.com> | 2021-06-04 22:15:50 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-04 22:15:50 +0200 |
commit | d228fc74c8ec6189202afd8c7ebfa9c8d12c9f5a (patch) | |
tree | fd3178d54757bb66329e0e531813644315fe6b8a | |
parent | 3e9fe3a99ae3f4250e1d3788f5f3b4cc0c21e6ac (diff) | |
download | pygments-git-d228fc74c8ec6189202afd8c7ebfa9c8d12c9f5a.tar.gz |
Correctly highlight multiline console input, even without PS2 prompt (#1833)
-rw-r--r-- | pygments/lexers/shell.py | 11 | ||||
-rw-r--r-- | tests/snippets/console/test_newline_in_echo_no_ps2.txt | 16 | ||||
-rw-r--r-- | tests/snippets/console/test_newline_in_echo_ps2.txt (renamed from tests/snippets/console/test_newline_in_echo.txt) | 0 | ||||
-rw-r--r-- | tests/snippets/console/test_newline_in_ls_no_ps2.txt | 16 | ||||
-rw-r--r-- | tests/snippets/console/test_newline_in_ls_ps2.txt (renamed from tests/snippets/console/test_newline_in_ls.txt) | 0 |
5 files changed, 39 insertions, 4 deletions
diff --git a/pygments/lexers/shell.py b/pygments/lexers/shell.py index 5539e812..099782a0 100644 --- a/pygments/lexers/shell.py +++ b/pygments/lexers/shell.py @@ -192,10 +192,13 @@ class ShellSessionBaseLexer(Lexer): [(0, Generic.Prompt, m.group(1))])) curcode += m.group(2) backslash_continuation = curcode.endswith('\\\n') - elif line.startswith(self._ps2) and backslash_continuation: - insertions.append((len(curcode), - [(0, Generic.Prompt, line[:len(self._ps2)])])) - curcode += line[len(self._ps2):] + elif backslash_continuation: + if line.startswith(self._ps2): + insertions.append((len(curcode), + [(0, Generic.Prompt, line[:len(self._ps2)])])) + curcode += line[len(self._ps2):] + else: + curcode += line backslash_continuation = curcode.endswith('\\\n') else: if insertions: diff --git a/tests/snippets/console/test_newline_in_echo_no_ps2.txt b/tests/snippets/console/test_newline_in_echo_no_ps2.txt new file mode 100644 index 00000000..56a7470f --- /dev/null +++ b/tests/snippets/console/test_newline_in_echo_no_ps2.txt @@ -0,0 +1,16 @@ +---input--- +$ echo \ + hi +hi + +---tokens--- +'$ ' Generic.Prompt +'echo' Name.Builtin +' ' Text +'\\\n' Literal.String.Escape + +' ' Text +'hi' Text +'\n' Text + +'hi\n' Generic.Output diff --git a/tests/snippets/console/test_newline_in_echo.txt b/tests/snippets/console/test_newline_in_echo_ps2.txt index f1335f1d..f1335f1d 100644 --- a/tests/snippets/console/test_newline_in_echo.txt +++ b/tests/snippets/console/test_newline_in_echo_ps2.txt diff --git a/tests/snippets/console/test_newline_in_ls_no_ps2.txt b/tests/snippets/console/test_newline_in_ls_no_ps2.txt new file mode 100644 index 00000000..5a6bda85 --- /dev/null +++ b/tests/snippets/console/test_newline_in_ls_no_ps2.txt @@ -0,0 +1,16 @@ +---input--- +$ ls \ + hi +hi + +---tokens--- +'$ ' Generic.Prompt +'ls' Text +' ' Text +'\\\n' Literal.String.Escape + +' ' Text +'hi' Text +'\n' Text + +'hi\n' Generic.Output diff --git a/tests/snippets/console/test_newline_in_ls.txt b/tests/snippets/console/test_newline_in_ls_ps2.txt index d556a98d..d556a98d 100644 --- a/tests/snippets/console/test_newline_in_ls.txt +++ b/tests/snippets/console/test_newline_in_ls_ps2.txt |