teemperor added a comment.
In D81001#2199205 <https://reviews.llvm.org/D81001#2199205>, @gedatsu217 wrote:
>> So the way the issue with the single space is now solved is by doing
>> CC_REDISPLAY when we're only adding the single space? Isn't that also
>> deleting the whole autosuggestion?
>
> Yes. CC_REDISPLAY can delete all the gray characters left.
So, if I would type "b" and then press tab, the autosuggestion would briefly
disappear until I type the next character?
================
Comment at: lldb/source/Host/common/Editline.cpp:1081
+ if (spaces_to_print > 0) {
+ std::string spaces = std::string((int)spaces_to_print, ' ');
+ fputs(spaces.c_str(), m_output_file);
----------------
gedatsu217 wrote:
> teemperor wrote:
> > The `(int)` cast isn't necessary.
> I found that lldb crashed. Sorry, I should have checked more when I uploaded
> this.
>
> I use spaces_to_print as size_t, but this sometimes becomes less than zero.
> So, I have to use this as int.
>
>
Yeah I see that spaces_to_print can overflow. How about this code instead that
avoids all the casting and overflowing and so on:
```
lang=c++
size_t new_autosuggestion_size = line.size() + to_add->length();
// If the previous command line + autosuggestion was longer than the
// current autosuggestion, make sure that the autosuggestion is overwriting
// the old output by enough adding trailing spaces.
if (new_autosuggestion_size < m_previous_autosuggestion_size) {
size_t spaces_to_print = m_previous_autosuggestion_size -
new_autosuggestion_size;
std::string spaces = std::string(spaces_to_print, ' ');
fputs(spaces.c_str(), m_output_file);
}
m_previous_autosuggestion_size = new_autosuggestion_size;
```
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D81001/new/
https://reviews.llvm.org/D81001
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits