From 4bb70549f7fa158f1eb1542cec799be219ce1a89 Mon Sep 17 00:00:00 2001 From: Dario Gjorgjevski Date: Fri, 27 Aug 2021 19:08:41 +0200 Subject: [PATCH] Fix shell-script-mode indentation of continuation lines * lisp/progmodes/sh-script.el (sh-smie--default-backward-token): Fix indentation of continuation lines (bug#44592). --- lisp/progmodes/sh-script.el | 2 +- test/lisp/progmodes/sh-script-tests.el | 40 ++++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 test/lisp/progmodes/sh-script-tests.el diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index b6674731ddf..201d1fd1647 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -1775,7 +1775,7 @@ Does not preserve point." (goto-char p) nil)))) (while - (progn (skip-syntax-backward "w_'") + (progn (skip-syntax-backward ".w_'") (or (not (zerop (skip-syntax-backward "\\"))) (when (eq ?\\ (char-before (1- (point)))) (let ((p (point))) diff --git a/test/lisp/progmodes/sh-script-tests.el b/test/lisp/progmodes/sh-script-tests.el new file mode 100644 index 00000000000..5bdce6260ae --- /dev/null +++ b/test/lisp/progmodes/sh-script-tests.el @@ -0,0 +1,40 @@ +;;; sh-script-tests.el --- Tests for sh-script.el -*- lexical-binding: t; -*- + +;; Copyright (C) 2021 Free Software Foundation, Inc. + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;;; Code: + +(require 'sh-script) +(require 'ert) + +(ert-deftest test-sh-script-indentation () + (with-temp-buffer + (insert "relative-path/to/configure --prefix=$prefix\\ + --with-x") + (shell-script-mode) + (goto-char (point-min)) + (forward-line 1) + (indent-for-tab-command) + (should (equal + (buffer-substring-no-properties (point-min) (point-max)) + "relative-path/to/configure --prefix=$prefix\\ + --with-x")))) + +;;; sh-script-tests.el ends here -- 2.39.2