From 4bb70549f7fa158f1eb1542cec799be219ce1a89 Mon Sep 17 00:00:00 2001 From: Dario Gjorgjevski Date: Fri, 27 Aug 2021 19:08:41 +0200 Subject: 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). --- test/lisp/progmodes/sh-script-tests.el | 40 ++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 test/lisp/progmodes/sh-script-tests.el (limited to 'test/lisp/progmodes/sh-script-tests.el') 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 -- cgit v1.2.3 From 6392bc37ab3b7eb83465d9b2248d21173373ae73 Mon Sep 17 00:00:00 2001 From: Kévin Le Gouguec Date: Sun, 29 Aug 2021 20:27:56 +0200 Subject: Tweak sh-script-mode indentation further * lisp/progmodes/sh-script.el (sh-smie--default-backward-token): Allow more parentheses in a token (bug#44592). --- lisp/progmodes/sh-script.el | 2 +- test/lisp/progmodes/sh-script-tests.el | 13 ++++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'test/lisp/progmodes/sh-script-tests.el') diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 201d1fd1647..7507579d16d 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 index 5bdce6260ae..82c2d5168ce 100644 --- a/test/lisp/progmodes/sh-script-tests.el +++ b/test/lisp/progmodes/sh-script-tests.el @@ -35,6 +35,17 @@ (should (equal (buffer-substring-no-properties (point-min) (point-max)) "relative-path/to/configure --prefix=$prefix\\ - --with-x")))) + --with-x"))) + (with-temp-buffer + (insert "${path_to_root}/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)) + "${path_to_root}/configure --prefix=$prefix\\ + --with-x")))) ;;; sh-script-tests.el ends here -- cgit v1.2.3 From f143260d04614ab45fe3fe505f1f2b7af2326294 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Thu, 2 Sep 2021 08:41:30 +0200 Subject: Revert "Tweak sh-script-mode indentation further" This reverts commit 6392bc37ab3b7eb83465d9b2248d21173373ae73. The changes led to errors throughout (bug#50320). --- lisp/progmodes/sh-script.el | 2 +- test/lisp/progmodes/sh-script-tests.el | 13 +------------ 2 files changed, 2 insertions(+), 13 deletions(-) (limited to 'test/lisp/progmodes/sh-script-tests.el') diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 7507579d16d..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 index 82c2d5168ce..5bdce6260ae 100644 --- a/test/lisp/progmodes/sh-script-tests.el +++ b/test/lisp/progmodes/sh-script-tests.el @@ -35,17 +35,6 @@ (should (equal (buffer-substring-no-properties (point-min) (point-max)) "relative-path/to/configure --prefix=$prefix\\ - --with-x"))) - (with-temp-buffer - (insert "${path_to_root}/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)) - "${path_to_root}/configure --prefix=$prefix\\ - --with-x")))) + --with-x")))) ;;; sh-script-tests.el ends here -- cgit v1.2.3 From 7d7e8a9c15cd509e731686f8e63fc1d574f4b5c0 Mon Sep 17 00:00:00 2001 From: Lars Ingebrigtsen Date: Thu, 2 Sep 2021 08:43:48 +0200 Subject: Add a test for bug#50320 in sh-script --- test/lisp/progmodes/sh-script-tests.el | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'test/lisp/progmodes/sh-script-tests.el') diff --git a/test/lisp/progmodes/sh-script-tests.el b/test/lisp/progmodes/sh-script-tests.el index 5bdce6260ae..c21010c8b43 100644 --- a/test/lisp/progmodes/sh-script-tests.el +++ b/test/lisp/progmodes/sh-script-tests.el @@ -37,4 +37,15 @@ "relative-path/to/configure --prefix=$prefix\\ --with-x")))) +(ert-deftest test-basic-sh-indentation () + (with-temp-buffer + (insert "myecho () {\necho foo\n}\n") + (shell-script-mode) + (indent-region (point-min) (point-max)) + (should (equal (buffer-string) + "myecho () { + echo foo +} +")))) + ;;; sh-script-tests.el ends here -- cgit v1.2.3