[OT] Which IDE / Editor do you use?

Adam D. Ruppe destructionator at gmail.com
Mon Sep 16 19:25:50 PDT 2013


On Tuesday, 17 September 2013 at 01:59:42 UTC, H. S. Teoh wrote:
> No kidding! Never knew that. I guess that just shows how b0rken 
> (or antiquated) X11 font handling is.

indeed.

> 0xb800 -- I remember that! Brings back the memories!

Oh yeah. This is half the fun of my minimal-d 
(http://arsdnet.net/dcode/minimal.zip) toy that runs on bare 
metal (after booting with grub) - I can do some of that stuff 
again!

> Heh. I was on the other extreme... I reinvented everything from 
> the square wheel to the triangular peg in the round hole.

Oh, I've done my share of that too, but my lines were so slow and 
Bresenham's algorithm was so fast, so I had to make the switch!

> How would you intermix it with character data, though?

If you have a reliable connection it isn't too bad. You can 
either define anything outside a struct to be character info or 
you can have an INPUT_TYPE_CHAR struct that showsit.

> That's the problem with the Unix design. The control stream and 
> the data stream is intermixed, which is the source of much of 
> the headaches in terminal handling.

Yup. I've thought before about doing up to five standard streams:

1) system control in, the event stream
2) user control in, a character stream
3) standard file in, a plain file. might be user control or might 
be another file
4) standard file out, might be the terminal or might be a file
5) interactive output, the terminal.


The #3 and #4 are different from unix stdin/out because they 
aren't necessarily the terminal. Suppose you want to edit a 
temporary file. You can'd do

echo "initial data" | vi

since that would be considered user input and be interpreted by 
vi as a command. So what you end up doing is something like this

echo "initial data" > /tmp/filexxx
vi /tmp/filexxx

And ditto on output, you'd tell vi to write to the tmpfile since 
redirecting stdout would screw up the user interactivity.

So the other files let you just set up pipes easily without 
necessarily hijacking the interactivity.


But, overall, I think unix does a pretty ok in this department - 
the system is simple, maybe too simple, but it gets the job done.

> Hmm. I've gotta try that sometime. Does XKB support mappings 
> like that?

I don't know.

> I suppose one way is to delimit it with invalid UTF-8 bytes 
> like:

yea.

> then you have the problem of spewing random garbage to the 
> screen if somehow the 0xFC got lost in transit.

Right... but the connections are reliable enough that we can 
probably get away with just leaving that to the other layer (tcp 
or whatever).

> But on second thoughts, aren't terminals over raw, unreliable
> connections passé these days? As long as you have TCP, you 
> should be good to go.

exactly

> Thankfully,ratpoison lets me hardcode a manually-specified name 
> onto windows, which causes the window's title string to be 
> ignored.

cool. Maybe I'll put that in my terminal emulator too...

> Well, ranges are one of D's big selling points, aren't they?

tbh I'm kinda meh on them. When they're great, they're great, but 
otherwise eh, no need to force them in when it isn't necessary.




BTW I did a lot of snippage here since I generally agree, but the 
big fun is I just spent the last half hour playing with the idea 
of doing my own terminal emulator again.

And you know, that might not be so hard. In just this short time, 
I got it started: in about 100 lines with simpledisplay.d and 
eventloop.d as helper libraries, I have it running a basic shell. 
The hard part is still coming: all the escape sequence nonsense, 
but that's kinda additive, I can just do each one as I come to 
them, making it more or less xterm compatible but just enough for 
the programs I use.... then start doing extensions!

Most the work is actually done by forkpty() apparently. It even 
handles echo automatically and I think it does line buffering 
too, I'll know more as I play with it. And of course, 
simpledisplay.d already does a lot of messy Xlib stuff and input 
events so this might not be that hard at all.

...until I get to the issue of utf8 font output lol.


More information about the Digitalmars-d mailing list