Discussion:
[O] [OT] Org-like folding with cperl mode?
Loris Bennett
2018-05-04 07:32:02 UTC
Permalink
Hi,

This isn't about Org, but about me wanting other things to behave like
Org.

To get folding in Perl programs I have cargo-cult-copied the
outline-based set-up here

https://github.com/villadora/emacs-config/blob/master/modes.el

In particular I have:

;; CPerl mode hook
(setq cperl-mode-hook 'my-cperl-customizations)

(defun my-cperl-customizations ()
"cperl-mode customizations that must be done after cperl-mode loads"
(outline-minor-mode)
(abbrev-mode)
(defun cperl-outline-level ()
(looking-at outline-regexp)
(let ((match (match-string 1)))
(cond
((eq match "=head1" ) 1)
((eq match "package") 2)
((eq match "=head2" ) 3)
((eq match "=item" ) 4)
((eq match "sub" ) 5)
(t 7)
)))
(setq cperl-outline-regexp my-cperl-outline-regexp)
(setq outline-regexp cperl-outline-regexp)
(setq outline-level 'cperl-outline-level)
)

My expectation was that if I have

=head2 STUFF
=over
=item foo
Do foo
=cut
sub foo {
return 'foo';
}

I should be able to fold to

=head2 STUFF...

but instead I just can only fold to, say

=head2 STUFF...
=item foo
Do foo
=cut
sub foo {
return 'foo';
}

i.e. the hierarchy, which I thought gets defined by 'outline-level'
doesn't seem to work.

I do have

(add-hook 'outline-minor-mode-hook 'outshine-hook-function)

to get tab-cycling, but maybe this is screwing things up.

Any thoughts or other approaches?

Cheers,

Loris
--
This signature is currently under construction.
Loading...