unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#74448: 30.0.92; c-ts-mode outlines only work with GNU or emacs style
@ 2024-11-20 22:22 Filippo Argiolas
  2024-11-21  7:42 ` Juri Linkov
  0 siblings, 1 reply; 2+ messages in thread
From: Filippo Argiolas @ 2024-11-20 22:22 UTC (permalink / raw)
  To: 74448

Hi, I've been playing with the new treesitter based outline minor mode
and c-ts-mode.

It seems that `outline-hide-subtree' is only working properly when code
is formatted with either GNU or emacs style.

To test try it with a function where the function declarator is preceded on the
same line by either type or storage class and type. It will fold the
function heading instead of the function body.

Problem seems `c-ts-mode--outline-predicate' only checks for
function_declarator nodes at the beginning of line (like in GNU coding
style) but other coding style will start the function line with either
storage class (e.g. static) or type.

Something like this seems to work a little better:

(defun c-ts-mode--outline-predicate (node)
  "Match outlines on lines with function names."
  (or (and (or (equal (treesit-node-type node) "function_declarator")
               (equal (treesit-node-type node) "storage_class_specifier")
               (equal (treesit-node-type node) "primitive_type")
               (equal (treesit-node-type node) "type_identifier"))
           (equal (treesit-node-type (treesit-node-parent node))
                  "function_definition"))
      ;; DEFUNs in Emacs sources.
      (and c-ts-mode-emacs-sources-support
           (c-ts-mode--emacs-defun-p node))))

But it kind of breaks GNU style by adding two outlines per function
definition. Also it seems a bit ugly to enumerate all the node types by
hand, there probably is a nicer way to detect a line with a
function_declarator not at bol.

Any better idea?

Thanks,
Filippo





^ permalink raw reply	[flat|nested] 2+ messages in thread

* bug#74448: 30.0.92; c-ts-mode outlines only work with GNU or emacs style
  2024-11-20 22:22 bug#74448: 30.0.92; c-ts-mode outlines only work with GNU or emacs style Filippo Argiolas
@ 2024-11-21  7:42 ` Juri Linkov
  0 siblings, 0 replies; 2+ messages in thread
From: Juri Linkov @ 2024-11-21  7:42 UTC (permalink / raw)
  To: Filippo Argiolas; +Cc: 74448

> Hi, I've been playing with the new treesitter based outline minor mode
> and c-ts-mode.
>
> It seems that `outline-hide-subtree' is only working properly when code
> is formatted with either GNU or emacs style.
>
> To test try it with a function where the function declarator is preceded on the
> same line by either type or storage class and type. It will fold the
> function heading instead of the function body.
>
> Problem seems `c-ts-mode--outline-predicate' only checks for
> function_declarator nodes at the beginning of line (like in GNU coding
> style) but other coding style will start the function line with either
> storage class (e.g. static) or type.
>
> Something like this seems to work a little better:
>
> (defun c-ts-mode--outline-predicate (node)
>   "Match outlines on lines with function names."
>   (or (and (or (equal (treesit-node-type node) "function_declarator")
>                (equal (treesit-node-type node) "storage_class_specifier")
>                (equal (treesit-node-type node) "primitive_type")
>                (equal (treesit-node-type node) "type_identifier"))
>            (equal (treesit-node-type (treesit-node-parent node))
>                   "function_definition"))
>       ;; DEFUNs in Emacs sources.
>       (and c-ts-mode-emacs-sources-support
>            (c-ts-mode--emacs-defun-p node))))
>
> But it kind of breaks GNU style by adding two outlines per function
> definition. Also it seems a bit ugly to enumerate all the node types by
> hand, there probably is a nicer way to detect a line with a
> function_declarator not at bol.
>
> Any better idea?

Could you please send a few of short examples of each style.
This would help to make a better decision.
And later these examples could be added to tests.





^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-11-21  7:42 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-20 22:22 bug#74448: 30.0.92; c-ts-mode outlines only work with GNU or emacs style Filippo Argiolas
2024-11-21  7:42 ` Juri Linkov

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).