Version 4.0.0 of package Wisi has just been released in GNU ELPA. You can now find it in M-x list-packages RET.
Wisi describes itself as: Utilities for implementing an indentation/navigation engine using a generalized LR parser More at https://elpa.gnu.org/packages/wisi.html Recent NEWS: GNU Emacs wisi NEWS -- history of user-visible changes. Copyright (C) 2014 - 2022 Free Software Foundation, Inc. Please send wisi bug reports to bug-gnu-em...@gnu.org, with 'wisi' in the subject. If possible, use M-x report-emacs-bug. * wisi 4.0.0 22 Oct 2022 beta prompted to release * wisi 4.0.beta 9 Jul 2022 beta testing ** Major redesign to support incremental parse. ** New user custom variable wisi-incremental-parse-enable; when non-nil, wisi uses incremental parse. ** There is now a log buffer showing all interactions with the parser process. The buffer name is given by (wisi-parser-transaction-log-buffer-name parser); for Ada it is "*Ada-wisi-parser-log*". ** The buffer-local variable containing the wisi parser object is split and renamed from wisi--parser to wisi-parser-shared, and wisi-parser-local. wisi-parser-shared points to a per-language structure; wisi-parser-local contains parser state that is buffer local, such as error messages. ** The new command wisi-parse-tree-query allows querying the stored parse tree for various things. ** Redesign how indents add, and what some indent functions mean; see wisi.info for details. In general, it is easier to arrange indent actions to get the desired result. This may require grammar file indent action changes; most likely add 'wisi-block' in block statements. ** The algorithm for naming conflicts is now more accurate, and the format of the %conflict declaration has changed. The old format is still supported. Some conflicts have the same name, but others will need to be updated. ** wisitoken-parse_table-mode now provides a command wisitoken-parse_table-conflict-goto that will find a conflict in the parse table file. wisitoken-grammar-mode binds that command to "\C-c." ** wisitoken-parse_table-mode now provides a command wisitoken-parse_table-goto that will find a nonterminal or state in the parse table file. It is recommended to bind that command to "\C-c.", either in global-key-map, or in modes that typically have nonterminals or states. ** parser process protocol version 6 add zombie_limit add error-pos in Recover replace debug-mode, trace-mckenzie, trace-action with verbosity string delete wisi-mckenzie-disable, -check-limit add incremental parse increase command length to 4 digits add query_tree command * wisi 3.1.3 5 Jun 2020 ** Fix packaging bug. * wisi 3.1.2 4 Jun 2020 ** New dispatching function wisi-xref-completion-delim-regex for setting completion delimiters; example use in gpr-query.el. ** wisi-get-identifier (used by wisi-goto-spec/body and others) sets completion delimiters using wisi-xref-completion-delim-regex. ** A bug in wisi-before-change is fixed; it was missing many buffer changes, causing the parser not to be run when it should be. * wisi 3.1.1 14 May 2020 ** packaging bug fix * wisi 3.1.0 11 May 2020 ** Add Wisitoken.Syntax_Trees.Insert_Token, to allow using inserted virtual terminals tokens in indent. Several related changes to allow treating virtual terminals on par with actual terminals. ** New elisp generic functions: wisi-xref-completion-table, wisi-xref-completion-regexp, wisi-xref-completion-at-point-table ** New elisp functions: wisi-filter-table, wisi-completion-at-point, wisi-skel-add-token-after ** wisi-get-identifier uses wisi-xref-completion-table. ** wisi-prj-identifier-at-point returns (IDENT START END) ** In wisi.ads: augmented tokens are no stored only in the syntax tree; new functions Get_Aug_Token_Const_1, Get_Aug_Token_Const, Get_Aug_Token_Var provide access to them. Parse_Data_Type contains a reference to the shared Terminals. * wisi 3.0.1 30 Jan 2020 ** fix packaging bugs ** improve xref integration * wisi 3.0.0 19 Dec 2019 ** parser process protocol version 5 ** Add project.el integration. See wisi.info for more information. ** Move autocase functions from ada-mode to wisi. ... ...