* capturing and filling
@ 2023-04-07 3:29 Samuel Wales
2023-04-07 4:12 ` Max Nikulin
2023-04-10 4:39 ` Max Nikulin
0 siblings, 2 replies; 8+ messages in thread
From: Samuel Wales @ 2023-04-07 3:29 UTC (permalink / raw)
To: emacs-orgmode
when i use the superb org-capture extension in firefox, there is only
one icon, so any decisions about formatting have to be
one-size-fits-all at capture time in elisp. here are my ideas, but
not implementation. the decisions i'd make are:
1. fill long unfilled paragraphs vs. preserve verbatim lines
if i capture code, i don't want it filled. if i capture prose that is
unfilled, as in a long line, i probably want it filled at capture.
heuristic: loop through every line. if the line qualifies by some
sub-heuristic, and is more than 2x (window-width), then fill at
capture time, but only that line, not contiguous ones that do not meet
the sub-heuristic (different prefix etc.).
what does one do to loop through paragraphs? is this a reasonable
heuristic? anybody tried it? this is all too much for me atm but i
thought i'd pu out the idea in case anybody has thought of these
things.
alternative: figure out and use an emacs minor mode that makes
unfilled paragraphs look like filled ones, including fill-column,
filling word boundary heuristics, fill prefix, etc. this would still
interfere with diff and such. it might be best reserved for this
purpose rather than ridding me of my m-q filling habit. that would be
drastic.
2. region on org heading vs. in body
heuristic: if selected text is zero length, i.e. nonexistent, then
link on org heading. if it is short, "text -- [link]". if long, then
i'm not sure which i like better: short part of first line on header
and then rest and then "-- [link]", or link on header.
--
The Kafka Pandemic
A blog about science, health, human rights, and misopathy:
https://thekafkapandemic.blogspot.com
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: capturing and filling
2023-04-07 3:29 capturing and filling Samuel Wales
@ 2023-04-07 4:12 ` Max Nikulin
2023-04-07 4:40 ` Samuel Wales
2023-04-10 4:39 ` Max Nikulin
1 sibling, 1 reply; 8+ messages in thread
From: Max Nikulin @ 2023-04-07 4:12 UTC (permalink / raw)
To: emacs-orgmode
On 07/04/2023 10:29, Samuel Wales wrote:
> when i use the superb org-capture extension in firefox, there is only
> one icon, so any decisions about formatting have to be
> one-size-fits-all at capture time in elisp.
Samuel, in your case, it is your requirement to have non-distracting
single-click capture.
I admit that the feature is not implemented in browser add-ons.
A workaround is to define 2 capture template: for prose text and for
code. Browser extension should not add template=x query parameter to
org-protocol URI.
Extension may determine if the captured text pre-formatting, however
there are some complications. Besides <pre> and <code> tags, there may
be <div> and <span> elements with white-space: pre-wrap CSS property and
similar. Selection may consist of several regions, each one with mix of
regular and pre-formatted text.
Actually it is possible to convert selected text to Org markup. use
%(insert (shell-command-to-string "xclip -t text/html -o | pandoc
-f html -t org -"))
in your capture template. Possible caveats: headers, especially <h1> may
give undesired effect.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: capturing and filling
2023-04-07 4:12 ` Max Nikulin
@ 2023-04-07 4:40 ` Samuel Wales
2023-04-07 5:23 ` Max Nikulin
0 siblings, 1 reply; 8+ messages in thread
From: Samuel Wales @ 2023-04-07 4:40 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
hi max,
more below.
On 4/6/23, Max Nikulin <manikulin@gmail.com> wrote:
> Samuel, in your case, it is your requirement to have non-distracting
> single-click capture.
... but one icon for prose/filling and one for lines/nonfilling would
be great for me. or even the existing single icon for whichever one i
use most, with a right-click menu for other options. maybe other
templates.
> A workaround is to define 2 capture template: for prose text and for
> code. Browser extension should not add template=x query parameter to
i was thinking that would be a great solution. however, i cannot
implement it. i was thinking elisp workaround might be more
straightforward.
i am guessing you mean s/should not/should/ here?
> org-protocol URI.
>
> Extension may determine if the captured text pre-formatting, however
> there are some complications. Besides <pre> and <code> tags, there may
> be <div> and <span> elements with white-space: pre-wrap CSS property and
> similar. Selection may consist of several regions, each one with mix of
> regular and pre-formatted text.
i was thinking figuring it out from the selection and the html would
be horrendously complex and brittle and error prone. but i could be
wrong.
>
> Actually it is possible to convert selected text to Org markup. use
>
> %(insert (shell-command-to-string "xclip -t text/html -o | pandoc
> -f html -t org -"))
>
> in your capture template. Possible caveats: headers, especially <h1> may
> give undesired effect.
i selected one line and it printed that line. i selected your above
lines and got Error: target text/html not available.
>
>
>
--
The Kafka Pandemic
A blog about science, health, human rights, and misopathy:
https://thekafkapandemic.blogspot.com
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: capturing and filling
2023-04-07 4:40 ` Samuel Wales
@ 2023-04-07 5:23 ` Max Nikulin
2023-04-15 1:36 ` Samuel Wales
0 siblings, 1 reply; 8+ messages in thread
From: Max Nikulin @ 2023-04-07 5:23 UTC (permalink / raw)
To: emacs-orgmode
On 07/04/2023 11:40, Samuel Wales wrote:
>
> On 4/6/23, Max Nikulin wrote:
>> Samuel, in your case, it is your requirement to have non-distracting
>> single-click capture.
>
> ... but one icon for prose/filling and one for lines/nonfilling would
> be great for me. or even the existing single icon for whichever one i
> use most, with a right-click menu for other options. maybe other
> templates.
An extension can not add 2 buttons. It may define context menu for right
click or it may open a popup with menu (implemented as an HTML page) on
simple (left) click.
Till it is not implemented you may use an org-protocol handler that
displays menu from e.g. a shell script:
printf 'Prose\nCode\n' |
zenity --list --title "Capture template" \
--text "Capture type" --column Template
or
zenity --question --title "Capture template" --text "Capture type" \
--ok-label Prose --cancel-label Code
>> A workaround is to define 2 capture template: for prose text and for
>> code. Browser extension should not add template=x query parameter to
>
> i am guessing you mean s/should not/should/ here?
If template is not passed then script can just append &template=x to the
URI, otherwise it may call e.g. sed to replace existing parameter.
>> %(insert (shell-command-to-string "xclip -t text/html -o | pandoc
>> -f html -t org -"))
>>
> i selected one line and it printed that line. i selected your above
> lines and got Error: target text/html not available.
Select some text on a web page in Firefox (or similar application
supporting rich text copy, e.g. libreoffice writer) and try
xclip -t TARGETS -o
I have realized that `insert' should not be added to template, the code
above is more suitable for evaluation by M-:
Next revision (with escaped quote characters)
"* %:description
<%:link>
%(shell-command-to-string \"xclip -t text/html -o | pandoc -f html -t
org -\")
"
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: capturing and filling
2023-04-07 5:23 ` Max Nikulin
@ 2023-04-15 1:36 ` Samuel Wales
2023-04-15 3:37 ` Max Nikulin
2023-04-17 7:00 ` Max Nikulin
0 siblings, 2 replies; 8+ messages in thread
From: Samuel Wales @ 2023-04-15 1:36 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
i am very sorry, i got myself in over my head. i do not undestrand
what you are suggesting. if a change on the ff side i cannot do it,
bu perhaps you are suggesting making emac pop up an x seector that
chooses the filing option.
for yers i have used an unsophisticated heursitic in the template
simiilar to your teplate suggestion.
but now the problem is htat this essential ff extension is completely
broen for me. i upgraded firefox, and now it is popping up a window
asking [unselectable text paraphrasing] whether i want emacsclient
oprning protocol iink.
i affirm but no capture occurs.
so no capture at all, never mind a choice of filling.
On 4/6/23, Max Nikulin <manikulin@gmail.com> wrote:
> On 07/04/2023 11:40, Samuel Wales wrote:
>>
>> On 4/6/23, Max Nikulin wrote:
>>> Samuel, in your case, it is your requirement to have non-distracting
>>> single-click capture.
>>
>> ... but one icon for prose/filling and one for lines/nonfilling would
>> be great for me. or even the existing single icon for whichever one i
>> use most, with a right-click menu for other options. maybe other
>> templates.
>
> An extension can not add 2 buttons. It may define context menu for right
> click or it may open a popup with menu (implemented as an HTML page) on
> simple (left) click.
>
> Till it is not implemented you may use an org-protocol handler that
> displays menu from e.g. a shell script:
>
> printf 'Prose\nCode\n' |
> zenity --list --title "Capture template" \
> --text "Capture type" --column Template
>
> or
>
> zenity --question --title "Capture template" --text "Capture type" \
> --ok-label Prose --cancel-label Code
>
>>> A workaround is to define 2 capture template: for prose text and for
>>> code. Browser extension should not add template=x query parameter to
>>
>> i am guessing you mean s/should not/should/ here?
>
> If template is not passed then script can just append &template=x to the
> URI, otherwise it may call e.g. sed to replace existing parameter.
>
>>> %(insert (shell-command-to-string "xclip -t text/html -o | pandoc
>>> -f html -t org -"))
>>>
>> i selected one line and it printed that line. i selected your above
>> lines and got Error: target text/html not available.
>
> Select some text on a web page in Firefox (or similar application
> supporting rich text copy, e.g. libreoffice writer) and try
>
> xclip -t TARGETS -o
>
> I have realized that `insert' should not be added to template, the code
> above is more suitable for evaluation by M-:
>
> Next revision (with escaped quote characters)
>
> "* %:description
> <%:link>
>
> %(shell-command-to-string \"xclip -t text/html -o | pandoc -f html -t
> org -\")
> "
>
>
>
>
>
--
The Kafka Pandemic
A blog about science, health, human rights, and misopathy:
https://thekafkapandemic.blogspot.com
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: capturing and filling
2023-04-15 1:36 ` Samuel Wales
@ 2023-04-15 3:37 ` Max Nikulin
2023-04-17 7:00 ` Max Nikulin
1 sibling, 0 replies; 8+ messages in thread
From: Max Nikulin @ 2023-04-15 3:37 UTC (permalink / raw)
To: emacs-orgmode
On 15/04/2023 08:36, Samuel Wales wrote:
> but now the problem is htat this essential ff extension is completely
> broen for me. i upgraded firefox, and now it is popping up a window
> asking [unselectable text paraphrasing] whether i want emacsclient
> oprning protocol iink.
>
> i affirm but no capture occurs.
Please, start a new thread specific to org-protocol configuration and
Firefox. Post Firefox, Emacs, Org versions, content of your .desktop
file for org-protocol. There are enough subtle issues and dedicated
thread may help other user in troubleshooting of similar problems.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: capturing and filling
2023-04-15 1:36 ` Samuel Wales
2023-04-15 3:37 ` Max Nikulin
@ 2023-04-17 7:00 ` Max Nikulin
1 sibling, 0 replies; 8+ messages in thread
From: Max Nikulin @ 2023-04-17 7:00 UTC (permalink / raw)
To: emacs-orgmode
On 15/04/2023 08:36, Samuel Wales wrote:
> i am very sorry, i got myself in over my head. i do not undestrand
> what you are suggesting. if a change on the ff side i cannot do it,
> bu perhaps you are suggesting making emac pop up an x seector that
> chooses the filing option.
My idea is to setup as org-protocol: URI handler a simple script (e.g.
shell) that displays a GUI dialog what template should be used, modifies
the received URI to set &template= parameter, and passes the URI to
emacsclient. There is a number of GUI dialog utilities for using from
shell scripts: zenity, kdialog, gxmessage, yad, etc. Such implementation
does not require any modification of browser extension or Org code.
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: capturing and filling
2023-04-07 3:29 capturing and filling Samuel Wales
2023-04-07 4:12 ` Max Nikulin
@ 2023-04-10 4:39 ` Max Nikulin
1 sibling, 0 replies; 8+ messages in thread
From: Max Nikulin @ 2023-04-10 4:39 UTC (permalink / raw)
To: emacs-orgmode
On 07/04/2023 10:29, Samuel Wales wrote:
> heuristic: loop through every line. if the line qualifies by some
> sub-heuristic, and is more than 2x (window-width), then fill at
> capture time, but only that line, not contiguous ones that do not meet
> the sub-heuristic (different prefix etc.).
Somebody should debug such heuristics. Fortunately no modification of
Org is necessary to evaluate if it may be implemented. Something like
the following may be added to capture template.
%(let* ((query (plist-get org-store-link-plist :query))
(body (plist-get query :body)))
;; wrap lines in body accordingly e.g. to `fill-column'
)
Of course, there should be a function that implements heuristics to
facilitate debugging and to allow unit tests.
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2023-04-17 7:02 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-07 3:29 capturing and filling Samuel Wales
2023-04-07 4:12 ` Max Nikulin
2023-04-07 4:40 ` Samuel Wales
2023-04-07 5:23 ` Max Nikulin
2023-04-15 1:36 ` Samuel Wales
2023-04-15 3:37 ` Max Nikulin
2023-04-17 7:00 ` Max Nikulin
2023-04-10 4:39 ` Max Nikulin
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.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).