[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: hiding lines
From: |
Werner LEMBERG |
Subject: |
Re: hiding lines |
Date: |
Fri, 10 Apr 2009 21:54:24 +0200 (CEST) |
> Consider this table:
>
> foo
> bar
> foo=bar
> bar-foo
> baz
> baz=baz
> baz-foo=baz
>
> I would like to make all lines invisable *and* intangible which
> don't contain a `='. Otherwise interactive search-and-replace would
> try to modify invisible text. At least this is my conclusion of
> your explanations.
I've now come up with the code as shown in the attachment. It works
fine, however, I would like to not have empty lines; in other words,
invisible text should not take any space in the buffer. Does Emacs
supports such a `compressed invisibility'? Otherwise it's getting
quite complicated, I fear...
Werner
(defun make-lines-invisible (regexp &optional arg)
"Make all lines matching a regexp invisible and intangible.
With a prefix arg, make it visible again. It is not necessary
that REGEXP matches the whole line; if a hit is found, the
affected line gets automatically selected.
This command affects the whole buffer."
(interactive "MRegexp: \nP")
(let (ov
ovs)
(cond
((equal arg '(4))
(setq ovs (overlays-in (point-min) (point-max)))
(mapc (lambda (o)
(if (overlay-get o 'make-lines-invisible)
(delete-overlay o)))
ovs))
(t
(save-excursion
(goto-char (point-min))
(while (re-search-forward regexp nil t)
(setq ov (make-overlay (line-beginning-position)
(line-end-position)))
(overlay-put ov 'make-lines-invisible t)
(overlay-put ov 'invisible t)
(overlay-put ov 'intangible t)))))))
(global-set-key "\C-cz" 'make-lines-invisible)
- hiding lines, Werner LEMBERG, 2009/04/02
- Re: hiding lines, Alan Mackenzie, 2009/04/02
- Re: hiding lines, Stefan Monnier, 2009/04/02
- Re: hiding lines, Alan Mackenzie, 2009/04/03
- Re: hiding lines, Stefan Monnier, 2009/04/03
- Re: hiding lines, Werner LEMBERG, 2009/04/06
- Re: hiding lines, Stefan Monnier, 2009/04/06
- Re: hiding lines, Werner LEMBERG, 2009/04/06
- Re: hiding lines, Stefan Monnier, 2009/04/06
- Re: hiding lines, Werner LEMBERG, 2009/04/07
- Re: hiding lines,
Werner LEMBERG <=
- Re: hiding lines, Andreas Schwab, 2009/04/10
- Re: hiding lines, Werner LEMBERG, 2009/04/10
- `make-overlay' very slow (was: hiding lines), Werner LEMBERG, 2009/04/10
- Re: `make-overlay' very slow, Stefan Monnier, 2009/04/10
- Re: `make-overlay' very slow, Werner LEMBERG, 2009/04/11
- Re: `make-overlay' very slow, Lennart Borgman, 2009/04/11
- Re: `make-overlay' very slow, Werner LEMBERG, 2009/04/11
- Re: `make-overlay' very slow, Lennart Borgman, 2009/04/11
- Re: `make-overlay' very slow, Werner LEMBERG, 2009/04/11
- Re: `make-overlay' very slow, Eli Zaretskii, 2009/04/11