Theodor Thornhill writes: > Eli Zaretskii writes: > >>> From: Theodor Thornhill >>> Cc: 61558@debbugs.gnu.org >>> Date: Fri, 17 Feb 2023 20:49:23 +0100 >>> >>> Can you test this patch? It seems to work for me, but I'm no C expert. >> >> Thanks, this is much better. However, the handling of #if (as opposed >> to #ifdef) is still incorrect. For example, go to the end of line >> 3376 of dispnew.c and type RET: point goes to column zero, not column >> 2. If you convert "#if" to #ifdef", the behavior becomes correct. >> Same problem exists with #elif. >> >> Doesn't tree-sitter grammar consider #if and #elif preprocessor nodes? > > It seems we are at the mercy of this[0] issue here, in all the cases > you've described. > >> >> Also, there's a problem with #define in the middle of code. For >> example, here: >> >> /* Put a `display' property on the string for the captions to display, >> put a `menu_item' property on tab-bar items with a value that >> is the index of the item in F's tab-bar item vector. */ >> for (i = 0; i < f->n_tab_bar_items; ++i) >> { >> #define PROP(IDX) \ >> AREF (f->tab_bar_items, i * TAB_BAR_ITEM_NSLOTS + (IDX)) >> >> caption = Fcopy_sequence (PROP (TAB_BAR_ITEM_CAPTION)); <<<<<<<<<< >> >> /* Put a `display' text property on the string for the caption to >> display. Put a `menu-item' property on the string that gives >> the start of this item's properties in the tab-bar items >> vector. */ >> AUTO_LIST2 (props, Qmenu_item, make_fixnum (i * TAB_BAR_ITEM_NSLOTS)); >> >> Fadd_text_properties (make_fixnum (0), make_fixnum (SCHARS (caption)), >> props, caption); >> >> f->desired_tab_bar_string = >> concat2 (f->desired_tab_bar_string, caption); >> >> #undef PROP <<<<<<<<<<<<<<<<<<<< >> } >> >> Typing RET at the end of the two marked lines goes to column zero >> instead of the expected non-zero column. So it sounds like #define >> and #undef are also not handled correctly yet. > > Yeah, luckily it indents correctly after you start to type. I'll try to > see if I can make some specific handling for this. > > Theo > Scratch that. Can you test this for me? I think I got it. Theo