run.dlang.io - a modern way to run D code
H. S. Teoh
hsteoh at quickfur.ath.cx
Thu Dec 14 01:52:29 UTC 2017
On Wed, Dec 13, 2017 at 04:59:00PM -0800, H. S. Teoh via Digitalmars-d-announce wrote:
[...]
> Sadly, `dmd - -run` currently doesn't quite work just yet. I should look
> into fixing that. And *then* we wouldn't need to invent a temporary
> filename for the executable in our keybinding.
[...]
Turns out, the code change to make this happen is trivial:
https://github.com/dlang/dmd/pull/7435
With this PR, you can compile and run code in standard input without
needing to specify any filenames:
$ echo 'import std.stdio; void main() { writeln("Hello, World!"); }' | dmd -run -
Hello, World!
$
Of course, piping the output of `echo` to dmd isn't a big deal. A more
interesting use case is being able to pipe the contents of an editor
buffer to dmd as input, and instantly receiving the program output in
the editor.
For example, I can open a new window in Vim (no filename), and type in
the following contents:
------
import std.stdio;
void main() {
writeln("Instant win!");
}
------
Then type:
:0,$!dmd -run -
and the buffer contents are now:
------
Instant win!
------
(In English, the vim magic word above means:
: Enter command mode
0,$ Take the range of lines from 0 to the end of file
! And filter these lines by a shell command
dmd -run - The command to run
)
This can, of course, be bound to a custom keybinding, then you'll have
your one-stop shop for compiling D snippets without ever seeing (much
less typing) any temporary filenames. And without needing an internet
connection.
Instant win! :-P
T
--
When solving a problem, take care that you do not become part of the problem.
More information about the Digitalmars-d-announce
mailing list