From: Yuan Fu Date: Sun, 5 Mar 2023 23:22:36 +0000 (-0800) Subject: Fix c-ts-mode indentation X-Git-Tag: emacs-29.0.90~235 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1c67e4f895f;p=emacs.git Fix c-ts-mode indentation Mentioned in bug#61893. * lisp/progmodes/c-ts-mode.el (c-ts-mode--anchor-prev-sibling): Handle "#elif" and "#else". * test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts: Add an "#elif" to the test. --- diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el index 2c534aa785a..0b775b2d5c8 100644 --- a/lisp/progmodes/c-ts-mode.el +++ b/lisp/progmodes/c-ts-mode.el @@ -296,6 +296,9 @@ PARENT and BOL are like other anchor functions." (setq prev-sibling (treesit-node-child prev-sibling -2))) ((or "preproc_elif" "preproc_else") (setq prev-sibling (treesit-node-child prev-sibling -1))) + ((or "#elif" "#else") + (setq prev-sibling (treesit-node-prev-sibling + (treesit-node-parent prev-sibling) t))) ;; If the start of the previous sibling isn't at the ;; beginning of a line, something's probably not quite ;; right, go a step further. diff --git a/test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts b/test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts index a82596e0010..ce753b5b3ea 100644 --- a/test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts +++ b/test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts @@ -89,6 +89,9 @@ int main() { #else if (f->output_method == output_termcap) create_tty_output (f); +#elif defined (HAVE_X_WINDOWS) /* X without toolkit. */ + if (FRAME_WINDOW_P (f)) + {} #endif t->display_info.tty->top_frame = selected_frame; change_frame_size ();