[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: outline-cycle makes buffer content disappear
From: |
Thorsten Jolitz |
Subject: |
Re: outline-cycle makes buffer content disappear |
Date: |
Tue, 05 Feb 2013 19:30:39 +0100 |
User-agent: |
Gnus/5.130002 (Ma Gnus v0.2) Emacs/24.2 (gnu/linux) |
Thorsten Jolitz <tjolitz@gmail.com> writes:
Answering my own question:
> when I use outline-cycle from the outline-magic package (global version,
> i.e. with arg or with point on beg-of-buffer) in an .el file with
> several first-level outline entries, the whole buffer content
> disappears, except 3 dots ('show-all' brings the content back).
>
> Using outline-cycle without arg on one of the next first-level entries
> cycles the entry between 2 (not 3) states: CHILDREN and FOLDED.
>
> The other outline-minor-mode commands work as expected. What might be
> the reason for this behaviour?
Debugging outline.el and outline-magic.el, I found out that:
1. When I define a custom file-local var 'outline-regexp', I need to
define a file-local var 'outline-level' too, that is actually a function to
calculate the right outline-level, e.g. by substracting 4 from the
lenght of the match-data:
,---------------------------------------------------------------------------------------------
| ;; * first level (1)
| some text some text some text
|
| ;; ** second level (1.1)
| some text some text some text
| ;; *** third level (1.1.1)
| some text some text some text
| ;; *** third level (1.1.2)
| some text some text some text
|
| ;; Local Variables:
| ;; coding: utf-8
| ;; mode: emacs-lisp
| ;; eval: (outline-minor-mode)
| ;; ispell-local-dictionary: "en_US"
| ;; outline-regexp: ";; [*]+ "
| ;; outline-level: (lambda () (let ((len (- (match-end 0) (match-beginning
0)))) (- len 4))))
| ;; End:
`---------------------------------------------------------------------------------------------
2. 'outline-cycle' in outline-magic.el relies on the use of
,------------------------------------------
| (eq last-command 'outline-cycle-overview)
| (eq last-command 'outline-cycle-toc)
`------------------------------------------
what does not work anymore with 'smex' (http://www.emacswiki.org/Smex)
when using 'M-x outline-cycle', since in that case the last command is
always a smex command. It does work with 'M-: (outline-cycle)' though or
when called via key-binding.
--
cheers,
Thorsten