mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-03 22:20:52 -08:00
; cperl-mode.el: fix indentation for multiline signatures
This fixes the first (and more important) part of Bug#79269. * lisp/progmodes/cperl-mode.el (cperl-get-state): Replace `beginning-of-defun' by `beginning-of-defun-raw'. Also fix a typo in the docstring. * test/lisp/progmodes/cperl-mode-tests.el (test-indentation): Skip tests unless in cperl-mode. The test file cperl-indents.erts explicitly invokes cperl-mode. Due to different indentation defaults the tests do not pass in perl-mode. * test/lisp/progmodes/cperl-mode-resources/cperl-indents.erts: Add test cperl-subroutine-signatures for Bug#79269
This commit is contained in:
parent
c04553f655
commit
fdf5e5dc41
3 changed files with 30 additions and 2 deletions
|
|
@ -2766,7 +2766,7 @@ PARSE-DATA is used to save status between calls in a loop."
|
|||
START is a good place to start parsing, or equal to
|
||||
PARSE-START if preset.
|
||||
STATE is what is returned by `parse-partial-sexp'.
|
||||
DEPTH is true is we are immediately after end of block
|
||||
DEPTH is true if we are immediately after end of block
|
||||
which contains START.
|
||||
PRESTART is the position basing on which START was found.
|
||||
START-STATE should be a good guess for the start of a function."
|
||||
|
|
@ -2775,7 +2775,7 @@ START-STATE should be a good guess for the start of a function."
|
|||
(if (and parse-start
|
||||
(<= parse-start start-point))
|
||||
(goto-char parse-start)
|
||||
(beginning-of-defun)
|
||||
(beginning-of-defun-raw)
|
||||
(when (cperl-declaration-header-p (point))
|
||||
(goto-char (cperl-beginning-of-property (point) 'syntax-type))
|
||||
(beginning-of-line))
|
||||
|
|
|
|||
|
|
@ -98,3 +98,28 @@ Name: cperl-keyword-without-space
|
|||
my %h = map{$_=>1}
|
||||
@ARGV;
|
||||
=-=-=
|
||||
|
||||
Name: cperl-subroutine-signatures
|
||||
|
||||
=-=
|
||||
# -*- mode: cperl -*-
|
||||
# John Ciolfi reported as Bug#79269
|
||||
use strict;
|
||||
use warnings;
|
||||
use experimental 'signatures';
|
||||
|
||||
foo(1);
|
||||
|
||||
sub foo (
|
||||
$in1,
|
||||
$optionsHPtr = {},
|
||||
$otherOption1 = 1, # Bug: wrong face for this option
|
||||
) {
|
||||
|
||||
my $a = 1; # Bug: should be indented by 2 spaces
|
||||
|
||||
# Bug: following are not indented due to use of signatures
|
||||
my $b = 2;
|
||||
return $a + $b + $in1;
|
||||
}
|
||||
=-=-=
|
||||
|
|
|
|||
|
|
@ -1605,6 +1605,9 @@ It must not be mistaken for \"$)\"."
|
|||
(forward-line 1))))
|
||||
|
||||
(ert-deftest test-indentation ()
|
||||
;; The erts file explicitly invokes cperl-mode, so skip in perl-mode.
|
||||
;; Indentation defaults are different, so it won't pass in perl-mode
|
||||
(skip-unless (eq cperl-test-mode #'cperl-mode))
|
||||
(ert-test-erts-file (ert-resource-file "cperl-indents.erts")))
|
||||
|
||||
;;; cperl-mode-tests.el ends here
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue