
Yet another tool for making copy/paste/run experience better (Windows) - noseratio
https://github.com/postprintum/devcomrade
======
AnonHP
To the author: This is a really nifty tool. It's also great that it provides
the ability to configure custom keyboard shortcuts. I will be trying this
soon.

> Does the following sound familiar: you paste some text from a web page into
> a Terminal command line, and it gets executed immediately, before you even
> had a chance to edit it? Only because there was a CR/LF character at the end
> of the clipboard text.

Oh yes, that sounds very familiar! As the description says, I use another
buffer (it says notepad.exe) to re-copy the line without the newline and then
paste. __________

 _Aside: Is there a similar tool for macOS?_

__________

The screenshot also shows a "Prevent Sleep Mode" option. I currently use an
app called Caffeine [1] to keep my machine awake (and not automatically lock).
I guess DevComrade could replace that too.

[1]:
[https://zhornsoftware.co.uk/caffeine/](https://zhornsoftware.co.uk/caffeine/)

~~~
JadeNB
> Aside: Is there a similar tool for macOS?

I don't know the state of Windows terminal emulators, but it seems strange to
describe the problem without mentioning the term for the solution, which is
'bracketed paste'. This article discusses how bracketed-paste mode is
signalled using ANSI escape sequences, which I guess can work in most macOS
terminal emulators (although it's up to the shell to respond):
[https://cirw.in/blog/bracketed-paste](https://cirw.in/blog/bracketed-paste) .
(I guess that Win+Ins is doing something similar on Windows?)

~~~
AnonHP
Thanks for this. I’ll check out bracketed pasting mode in terminal next time
(not near one right now), though I have to admit that even after reading that
post, I didn’t understand what exactly happens when it’s used. I understood
that the command does not get executed, but what happens in the shell (I
looked this up on Wikipedia too)? Does it just display the line and allow the
user to edit it so that the starting and ending escape sequences can be
removed along with any other edits and then the command executed?

~~~
JadeNB
> I understood that the command does not get executed, but what happens in the
> shell (I looked this up on Wikipedia too)? Does it just display the line and
> allow the user to edit it so that the starting and ending escape sequences
> can be removed along with any other edits and then the command executed?

My understanding is that it's up to the shell, or whatever program, to decide
how to handle it. (I didn't make this clear in my original post, and have
updated it accordingly.) All bracketed paste is doing is providing a mode that
tells the program "everything between these two symbols should be interpreted
as input, not as commands"; it's then up to the program to decide how it wants
to respond to the user's intention.

At least for me, with Terminal.app and bash 5.0 (where it's not enabled by
default), it behaves es you describe when enabled by `set enable-bracketed-
paste on` in `.inputrc`. For vim, I _believe_ the plugin is essentially doing
the equivalent of `set paste` before and `set nopaste` after.

------
Fiahil
On MacOS, you can use Flycut
([https://github.com/TermiT/Flycut](https://github.com/TermiT/Flycut)) to
manage your clipboard. Just assign it to cmd + shift + v and it will allow you
to cycle through your buffers.

This is nice when you need multiple items from the same source (say
login/password from password manager), instead of doing "copy ; switch ; paste
; switch ; copy ; paste" you can now do "copy ; copy ; switch ; paste ;
paste". It's a phenomenal time saver and it will take care of the additional
LF at the end, as well!

------
cel1ne
When I copy a command to paste in the terminal I always start the selection
from the end and move left to the start. That way I won't accidentally copy a
newline.

------
noseratio
DevComrade is different from many similar utilities (e.g., from Puretext) in
how it uses Win32 simulated input API to feed the text into the currently
active window, as though it was typed by a person. For example, it works well
with Google's Secure Shell App for Chrome.

~~~
AnonHP
Please edit the title of this submission with a "Show HN: " prefix.

~~~
GordonS
AFAIK you can't edit the title of posts, only mods can.

------
thunderbong
How does this compare to Ditto?

[https://ditto-cp.sourceforge.io](https://ditto-cp.sourceforge.io)

~~~
noseratio
That's a good question. I've been a long-time user of PureText, but somehow
I've only become aware of Ditto's existence last week, when DevComrade was
already in the works :)

I've got a quick look and Ditto seem to be capable of doing much more than I
personally need, like maintaining the clipboard history (I use Windows' Win+V
for that), sharing clipboard over the network and using its own scripting
language ChaiScript. OTOH, I'd like to keep the useful functionality of
DevComrade at the very bare minimum.

I'm also not sure yet about how exactly they do pasting, i.e., if they use
Win32 SendInput. That may affects how well Ditto works with terminals and
shells. Conveniently, they provide the source code (looks like it is a C++/MFC
project), so at some point I'll come up with a better comparison and update
the Readme in my repro.

------
jessmay
Open URL from clipboard and Insert Guid seem pretty handy.

~~~
noseratio
Thanks! I've added "Insert Guid" merely as an example of how to bind a custom
C# script to a menu item or hotkey:

<hotkey name="InsertGuid" menuItem="Insert &amp;Guid" isScript="true"> <!--
this is an example of a C# scriptlet handler --> <![CDATA[ await
Host.FeedTextAsync(Guid.NewGuid().ToString("B").ToUpper(), Token); ]]>
</hotkey>

------
stOneskull
just what i need. thank you.

