Christian Moe <m...@christianmoe.com> writes:

>> Firstly, I want to copy the *visible* text (minus the …, but never mind
>> that);

> In other words: Begin exporting only the visible part with `C-c C-e 
> v', then press space at the prompt for output formats. This leaves you
> in a second buffer with a copy of the visible part (and yes, you do
> get rid of the ellipses). Then select all with `C-c h' (alternately,
> select the region of your choice) and copy. Kill the copy buffer when
> you're done with it.

Thanks. Seems like `org-export-visible' does exactly what I want.

I also wrote a function to copy the visible part of the region. For
those curious:

(defun copy-visible (beg end)
  (interactive "r")
  (let ((text "") s)
    (save-excursion
      (save-restriction
        (narrow-to-region beg end)
        (setq s (goto-char (point-min)))
        (while (not (= (point) (point-max)))
          (goto-char (org-find-invisible))
          (setq text (concat text (buffer-substring s (point))))
          (setq s (goto-char (org-find-visible))))))
    (kill-new text)))



>> secondly, I want to be able to search only the visible text.
>
> You can do that, albeit only in a copy of your document in a separate
> buffer, with the approach above. But why would you want to? Perhaps if
> you state a use case, someone can point out a different approach.

Actually (as I just found out) you can do it very easily by setting the
variable `search-invisible' no nil (found in isearch.el).

>
>> More generally (and less org specific), how do I restrict commands to
>> the visible parts of the buffer?
>
> I don't know.

I guess it's not possible because commands work on the buffer and
usually do not know about viviblity. Maybe something like
`with-visible-buffer' could be proposed – but now with searching and
copying working, I do not really have a use case.

Thanks again.


-- 
Florian Beck

Reply via email to