Welcome to Codidact Meta!
Codidact Meta is the meta-discussion site for the Codidact community network and the Codidact software. Whether you have bug reports or feature requests, support questions or rule discussions that touch the whole network – this is the site for you.
Issues with copying post source from revision history
When I try to copy and paste text out of a revision history for a question or answer, I notice that:
- Blank lines are not preserved
- If I copy the entire text of a revision, the entire thing will also be indented by four spaces on each line, and have two blank lines added on each end. (Skipping even a single character at either the beginning or end seems to avoid this.)
(This caused problems for me lately, as I attempted to use a revision history to create a Git backup of changes to a post for my personal records.)
2 answers
I see the described behaviour in Firefox but not in Chromium.
- Operating System: Fedora 38
- Firefox version: 116.0
- Chromium version: 115.0.5790.102
Example of a Post History page where this behaviour occurs:
The initial revision (#1), where there is no side by side diff, just the text of the original post, shows no problem.
The edits (#2 onwards) have a before and after version of the post content, and copying either before or after version gives the problem.
The problem occurs when copying from the first character to the last character, whether including the final newline or not. Apart from that final newline (which shows as a space at the end of the final line when selected), omitting a single character from the beginning or end of the visible text results in copying only what is seen. If all of the visible text is copied, pasting elsewhere results in each line having 4 leading spaces, and there are 2 blank lines before the start of the visible text, and 2 blank lines after the end of the visible text, and any existing blank lines within the post content are omitted.
1 comment thread
As a workaround, it's possible to write code in the browser console to iterate over the <li>
tags within the <div>
for each diff entry, and join their text with newlines in between. The page renders empty space with empty <li>
s.
I was able to extract the text I wanted (I think) - each revision, as separate text entries, in reverse order - at the browser console like so:
$($('.diff-new').get().reverse()).each(function() { console.log($(this).find('li').map(function() { return $(this).text() }).get().join('\n'))})
1 comment thread