And fix some details of the implementations.
Change-Id: I8e77fee4b95658a69ef1656bb406811de091ce16
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This moves the thread switcher combobox, the only consumer
of part of the threadhandler interface, into the threadhandler.
Change-Id: Icafd72e7777fad9196ce8fb33a79cae26c29a521
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
It could be that processTasks is executed before the future is finished
but in that case there are other tasks which will be called later.
Change-Id: I9b1bfb6fdd642f23842b9c70d60d5b1552193b99
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
There's no token before the first symbol in the line.
With no information it's better to avoid triggering
automatic completion after the first token.
Change-Id: I9d3aca3bf72485c6eca6e03d9b8691abf0492bcc
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
The language server protocol is used to transport language specific
information needed to efficiently edit source files. For example
completion, go to operations and symbol information. These information
are transferred via JSON-RPC. The complete definition can be found under
https://microsoft.github.io/language-server-protocol/specification.
This language server protocol support consists of two major parts, the
C++ representation of the language server protocol, and the client part
for the communication with an external language server.
The TypeScript definitions of the protocol interfaces are transferred to
C++ classes. Those classes have getter and setter for every interface
value. Optional values from the protocol are represented by
Utils::optional<ValueType>. The JSON objects that are used to transfer
the data between client and server are hidden by a specialized
JsonObject class derived from QJsonObject. Additionally this JsonObject
provides a validity check that is capable of creating a detailed error
message for malformed, or at least unexpected JSON representation of the
protocol.
The client is the interface between Qt Creator and language server
functionality, like completion, diagnostics, document and workspace
synchronization. The base client converts the data that is sent from/to
the server between the raw byte array and the corresponding C++ objects.
The transportat layer is defined in a specialized base client (this
initial change will only support stdio language server). The running
clients are handled inside the language client manager, which is also
used to connect global and exclusive Qt Creator functionality to the
clients.
Task-number: QTCREATORBUG-20284
Change-Id: I8e123e20c3f14ff7055c505319696d5096fe1704
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Update all identical snippet placeholder after selecting an item from
the completion proposal.
Change-Id: Iac4f4183c30517a8133269cc607edadce0c6bd23
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Do not try to read locals and threads when hitting a breakpoint with
"continue" command, as it doesn't really stop.
Change-Id: I2adc02d9f94375c390a874122afe2a82a764dc64
Reviewed-by: hjk <hjk@qt.io>
WE have to ensure the prefix starts with a lower case letter.
Change-Id: I62ed21150f5d7e320661424f71dd5002d2a61a42
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Our users are running out of choices for code pasting: KDE has required
an account for quite a while now, and pastebin.ca appears to be offline,
leaving them only with the ad-heavy pastebin.com.
Therefore, we add support for a new site: pastecode.xyz seems
responsive enough, has a simple API and has been around for a bit.
[ChangeLog] Added support for the pastecode.xyz code pasting service
Change-Id: I9b622853df24c28d65c6e388f953c82fc5380fae
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
(and keep updateThread() for the single-thread case)
All backends create full lists, making that explicit allows to
simplify the interface.
Change-Id: I717cfcf3ec9f8e81df8a5dfc71ae84855bc3beae
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
To enable single-sourcing Qt Creator Manual and Qt Design Studio
Manual.
Add the menu path to Typing options.
Change-Id: I99708fe39d414462c743b0f01a52dcefcce1d65b
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Follow-up fix for 8d0391a4f9.
Do not complete after '{' coming not after an identifier.
Take constructor completions only for '{' and function
completions only for '('. Filter constructor completions by
class/struct type.
Task-number: QTCREATORBUG-21004
Change-Id: I7ae2d6bee23cf907648c42b93eb12742942833f6
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Has not been needed since Utils::TreeModel was used.
Change-Id: Iff60a631e306e9756f83d70eacf19c2fe49bcedd
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Use the name attribute of the gdb.Type rather
than that of the pretty printer.
This e.g. displays 'std::vector<int>' rather than
just 'std::vector' for an int vector.
Change-Id: I53da01bb5ba67bcd8d7113beda6ff03e708d60f9
Reviewed-by: hjk <hjk@qt.io>
Make the individual thread items more agnostic of their environment.
The result is closer to the break handler setup.
Change-Id: I1a3f6138e5f32e930313e07d3c6a37144c180050
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Explicit polling is still available and accessible as fall back in
the gui, but is at least in theory not necessary anymore.
Change-Id: Ifd184fb88bdbf5de53f5776e2c94a03f8ad44a06
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
The attach dialog retrieves the host address to connect to from the
device's toolControlChannel(). All of the toolControlChannel()
implementations currently specify "localhost" as host address.
"localhost" means IPv6 on macOS and IPv4 everywhere else. Unfortunately
there is no shortcut for listening on a dual-stack local address in
QTcpServer and urlFromLocalHostAndFreePort() will try both v4 and v6,
returning whatever works. There is a shortcut for listening on a
dual-stack "any" address, though. As this is only the test, we can live
with exposing a TCP server to the internet for a short time.
Change-Id: I4114f03668e608f80353d21a59edf67db4b7f738
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Formatting is moved from Beautifier plugin to formattexteditor.h/.cpp.
Diff and Differ classes are extracted from DiffEditor to Utils
to prevent extra TextEditor dependencies.
This change will make possible to use formatCurrentFile
and similar functions not only from Beautifier code.
Change-Id: Ic5ca668afe88f4e9376d49e6bd3594807172b0dd
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
May save a few cycles for re-creation and re-layouting flicker
when switching back.
Change-Id: Ifc29adb008d2fa0966f68fe45b3258e6dd199d08
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
TextColorDisabled has always been the same value as TextColorNormal
(which was presumably unintended), and nobody seems to have noticed for
a long time. However, as of commit f7a0a3cd26 we have been using
TextColorDisabled to display disabled project nodes, which means users
could not tell enabled and disabled parts of the project apart anymore
when using classic mode.
We now use the same value as in the other themes.
Change-Id: I1f616b6808d6c2012748af24b90953e4eb75df18
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
When the zoomer, model, or notes properties for TimelineAbstractRenderer
are destroyed, the QPointers become null, and therefore the change
signals need to be emitted, and an update to the widget should be
scheduled.
If this is not done, clients using the property might keep a dangling
pointer in some cache and dereference it later.
Change-Id: I63fb657afb8138e9ac54c7d839d4a52271f8f3e8
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Introduce special location item for this purpose.
Task-number: QTCREATORBUG-20967
Change-Id: Icb6c6ec8ff9d2e4e8e3d13834427bae50d74bd2a
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Both completion kinds have the same name. Do not merge them
together when looking for constructor overloads.
Task-number: QTCREATORBUG-21010
Change-Id: I4c851033d63ad4e242b6179491f1fba00af466f6
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This removes the ability to have different enabled/disabled states
for the same breakpoint in concurrently running engines, but make
the behavior less surprising.
At least currently people *do* expect breakpoint changes in a running
engine to persist after the engine dies.
Change-Id: I911594765b24f2ce58f6747ae5ecab3e608882b8
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
It works with contiguous arrays like std::vector but it is not so useful
for other containers anyway. Use the iterator interface for std::array.
Change-Id: I9f5dd665d38ca642bbd81e1925445127ea579c22
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
... to breakpoint and watchhandler.
More modular this way.
Change-Id: I4a45481fcc2bfde67b164bd7274fb7b2a12cb7ac
Reviewed-by: Christian Stenger <christian.stenger@qt.io>