@amaloyの助けを借りて、問題を解決するこの修正を作成することができました。
(defun unident-closure ()
(let ((syntax (mapcar 'car c-syntactic-context)))
(if (and (member 'arglist-cont-nonempty syntax)
(or
(member 'statement-block-intro syntax)
(member 'block-close syntax)))
(save-excursion
(beginning-of-line)
(delete-char c-basic-offset)))))
(add-hook 'php-mode-hook (lambda ()
(add-hook 'c-special-indent-hook 'unident-closure))
それがphp-mode-hookにある必要があるかどうかわからない
が起動されたときに何が変数にC-c C-s
なるかを示すことは大きな助けになりました(そしてそれはインデントが行われた後です)。c-syntactic-context
c-special-indent-hook
CC-Mode マニュアルも役立ちます
アップデート
無効なコードを見つけました
array('tags' => array_map($rows,function($row) {
.... return array(
.... 'name' => $row['name'],
.... 'size' => $normalize($row['tag_count']);
.... );
....});
(ドットは削除する必要があるスペースです)
そしてもう一つ
return array('tags' =>
array_map($rows, function($row) use ($normalize) {
.... return array(
.... 'name' => $row['name'],
.... 'size' => $normalize($row['tag_count']);
.... );
....});
そのため、関数を変更する必要があり、2 回表示さC-c C-s
れることを示しています (追加するたびに、削除する必要があるインデントが追加されます)。arglist-cont-nonempty
arglist-cont-nonempty
(defun unident-closure ()
(let ((syntax (mapcar 'car c-syntactic-context)))
(if (and (member 'arglist-cont-nonempty syntax)
(or
(member 'statement-block-intro syntax)
(member 'brace-list-intro syntax)
(member 'brace-list-close syntax)
(member 'block-close syntax)))
(save-excursion
(beginning-of-line)
(delete-char (* (count 'arglist-cont-nonempty syntax)
c-basic-offset))))))