ImportC and color syntax highlighting

jfondren julian.fondren at gmail.com
Sun Sep 12 19:38:40 UTC 2021


On Sunday, 12 September 2021 at 09:23:06 UTC, Walter Bright wrote:
> On 9/11/2021 4:04 PM, jfondren wrote:
>> When running it, it pegs a CPU at 100% because it's constantly 
>> running ttkeysininput(). That's enough to cause a fan to run 
>> at high speed on this laptop. But, that's easily fixed with 
>> select() or similar against stdin.
>
> I'm not too familiar with I/O on Linux. If you could modify 
> ttkeysininput() to use select(), I'm interested to learn how 
> it's done. Thanks!

I went with adding a tt* function:

```d
/**************************
  * Return when there are unread chars ready in the input.
  */

void ttwaitkeys()
{
     import core.sys.posix.sys.select;
     fd_set readfds;
     FD_ZERO(&readfds);
     FD_SET(0, &readfds);
     select(1, &readfds, null, null, null);
}
```

and running that in the while loop at the outset of getkey():

```
     ttyield();
     while (hasmouse && !ttkeysininput())
     {   c = mouse_command();
         if (c)
             return c;
         ttyield();
         ttwaitkeys();
     }
     c = term.t_getchar();
```

This fixes the CPU use and results in normal key input. But, it 
can just be replaced with a 'break;' in the same place of that 
loop. And it should break mouse handling.


More information about the Digitalmars-d mailing list