summaryrefslogtreecommitdiff
path: root/src/plugins/coreplugin/editormanager
Commit message (Collapse)AuthorAgeFilesLines
* Utils: Add toSet/toList functionshjk2019-07-021-2/+2
| | | | | | | | | As replacement for functionality that's being deprecated in Qt but still useful or needed, or that cannot easily be handled without resorting to #if QT_VERSION checks in user code. Change-Id: Id3575a54ff944bf0e89d452d13944fcaee270208 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* ProjectExplorer: Respect pinned documentsChristian Kandeler2019-06-212-6/+6
| | | | | | | | ... in "Close All Projects and Editors". Amends fe21a7a77e. Change-Id: I162753e08f97cf4538bf58e5f48fd222cdb9ee2b Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* ProjectExplorer: Add "Open Terminal Here" as default entryAndre Hartmann2019-06-121-1/+1
| | | | | | | | | | | Most often, a terminal with system environment is needed. Provide it as direct context menu entry, and leave the additional entries for build and run environment (which are probably more seldom used) as sub-menu as before, but rename it to "Open Terminal with >". Change-Id: I148395ca1e62eafff8844ba91db269a12b053de9 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Utils: Rename FileName to FilePathhjk2019-05-287-21/+21
| | | | | | | | More in line with QFileInfo terminonlogy which appears to be best-of-breed within Qt. Change-Id: I1d051ff1c8363ebd4ee56376451df45216c4c9ab Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Merge remote-tracking branch 'origin/4.9'Eike Ziller2019-05-171-1/+3
|\ | | | | | | | | | | | | Conflicts: src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp Change-Id: I473084232ab99c18e2316154656de0035af02628
| * Fix directory used for "Find in This Directory"Eike Ziller2019-05-091-1/+3
| | | | | | | | | | | | | | | | | | If the input already is a directory, we want to search in that, not the parent. Fixes: QTCREATORBUG-22079 Change-Id: If47435ecf2ffba088d50b57c18c8b1ee444fd718 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* | Allow pinning files to ensure that they are always openMitch Curtis2019-04-037-45/+177
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch allows pinning files within a session. Pinning a file puts it at the top of the Open Documents list, and prevents Close All from closing it until it is unpinned. This is useful for files that should always be open for a given session. [ChangeLog] Files can now be pinned via the context menu. Pinning a file keeps it at the top of the Open Documents list, and prevents Close All and similar actions from closing it until it is unpinned. This provides a way to quickly close any open files without closing important ones. Change-Id: If47a599fb272db4c78a71eabe6fb29215a9a8a11 Fixes: QTCREATORBUG-21899 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* | Fix usage of deprecated API QMessageBox::standardIconEike Ziller2019-03-281-1/+1
| | | | | | | | | | | | | | | | Instead use the style to get the icon and get the pixmap from there. Emulates what QMessageBox::setIcon(QMessageBox::Icon) does. Change-Id: Ic20d55070d510773eb194dc695689954b4862a2f Reviewed-by: David Schulz <david.schulz@qt.io>
* | EditorManager: add signals for opened/closed documentsDavid Schulz2019-03-122-5/+11
|/ | | | | | | | allows to react on first editor opened and last editor closed for a document. Change-Id: I0b625ce739f91c0483b9fcd650f86b69914c3009 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* use initializer listsTim Jenssen2019-01-211-6/+5
| | | | | Change-Id: I82b04601f1db52197b3dc625b6b7e0f143c1c8b6 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* Canonicalize some includesChristian Kandeler2019-01-101-1/+1
| | | | | | | | | | | | Our canonical style is #include <utils/fileutils.h> rather than #include "utils/fileutils.h" Which makes sense, as such headers will never be found in the local directory. Change-Id: I4ca46e90d6c4d19d4b1f235f4c79caad864ef222 Reviewed-by: hjk <hjk@qt.io>
* DocumentModel: Keep sorted on renamesTobias Hunger2018-12-191-11/+51
| | | | | | | | | Keep the document model sorted on document renames. This effects the "Open Documents" views and more. Task-number: QTCREATORBUG-21565 Change-Id: I2c546eb56ebee0a5fa1169060b85fce454b8e571 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Core: Fix using system codecDavid Schulz2018-12-121-2/+9
| | | | | | | | | | | Qt5 doesn't return a valid codec when looking up the "System" codec, but will return such a codec when asking for the codec for locale and no matching codec is available. So check whether this system codec was saved to the settings. Task-number: QTCREATORBUG-21622 Change-Id: I4dc3ab47a3a54f7e4ad4e00004c2622b26182db3 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Core: Change IEditor::document() to constOrgad Shaneh2018-09-261-1/+1
| | | | | | | All the implementations are const. Change-Id: Ib9753fe764dd482d4f4392eec70878d42edc737a Reviewed-by: hjk <hjk@qt.io>
* Introduce a basic client for the language server protocolDavid Schulz2018-09-032-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* Fix context of Locator inputEike Ziller2018-08-091-1/+5
| | | | | | | | | | | | | | | - In the main window, the locator input (actually the status bar) visually feels like being part of the mode widget, so give it its context. - In extra editor windows, the whole editor window should have "editor manager" context, so that is also active for the locator input. Task-number: QTCREATORBUG-20626 Task-number: QTCREATORBUG-20071 Change-Id: Ib68d6a8177446572ea59c3cc057eca0706173e11 Reviewed-by: Xing Xiong Reviewed-by: David Schulz <david.schulz@qt.io>
* Core: ModernizeAlessandro Portale2018-08-0813-60/+53
| | | | | | | | | | | modernize-use-auto modernize-use-nullptr modernize-use-override modernize-use-using modernize-use-default-member-init (partially) Change-Id: Idf10d7ffb1d98a04edc09a25c35e4e9e3abe87b5 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Core: Fix missing includeChristian Stenger2018-07-021-0/+1
| | | | | Change-Id: I6dfee20b3bd2e0ca4c0f3e8a2f8cd013157dd863 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
* Move editor factory search function to recently created private headerEike Ziller2018-07-024-48/+48
| | | | | Change-Id: I74a9a58c679c265c6d723209705323e83901e040 Reviewed-by: David Schulz <david.schulz@qt.io>
* Allow changing the default editor for mime typesEike Ziller2018-07-024-12/+125
| | | | | | | | | | | Double-clicking or clicking on the selected item shows a combo box with all editor types that can handle that mime type. Modified handlers are shown in italic, and a new button resets all handlers to the default. Change-Id: I4083c31e3867eb2a2a47adc85e4bd20f3d57be9a Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: David Schulz <david.schulz@qt.io>
* Remove mostly useless function parameterEike Ziller2018-06-255-15/+10
| | | | | | | | | | for getting only the best matching editor factory. Almost all code that uses it wants the whole list, the mime type settings will want the whole list soon, which leaves just the file properties dialog, which can simply fetch the whole list and show only the top entry. Change-Id: Ia49f7a4b52a35c6140eeba19424386c18cb3ec59 Reviewed-by: David Schulz <david.schulz@qt.io>
* Remove unneeded checks for validity of mime typesEike Ziller2018-06-252-39/+27
| | | | | | | | | | | | mimeTypeForFile(...) is documented to never return an invalid mime type (it will fall back to binary if everything else fails), so remove unneeded checks. This also removes fallback code that used text/plain in case of invalid mime type, which is probably a relict from the old mime implementation. Change-Id: I88ed41fa3b81704f110f9f481b0f01424a487cbb Reviewed-by: David Schulz <david.schulz@qt.io>
* Fix large text file detectionEike Ziller2018-06-251-1/+1
| | | | | | | | Text files don't start with "text" (and non-text files might), so check for mime type inheritence of "text/plain" instead. Change-Id: Ia9b7a2e68d43adbb8741dcd9d3ba9b2936a680de Reviewed-by: David Schulz <david.schulz@qt.io>
* Do not show external editors in mime settingsEike Ziller2018-06-253-7/+5
| | | | | | | | | External editors are never used to open files, except on explicit request with "Open with", so should not be considered in the settings' "Handler" column Change-Id: I8fe7b9d260754ce84d52db554d6ee25d1af3bfe2 Reviewed-by: David Schulz <david.schulz@qt.io>
* Move code for finding editor factories out of editor managerEike Ziller2018-06-257-109/+123
| | | | | | | And move it into IExternalEditor / IEditorFactory Change-Id: I4505824e44571a4c6f26d0192edf3929c2a00fb7 Reviewed-by: David Schulz <david.schulz@qt.io>
* CorePlugin: Switch split if remote command tries to open an already opened fileRazi Alavizadeh2018-06-222-1/+13
| | | | | | | | | It seems more natural that remote commands don't change current editor of active view if file is already opened in another view. Change-Id: Ie27de0d159cae6e63fa1d477fab59887a0e6d198 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Remove some lambdas from Utils::transform callsEike Ziller2018-05-281-1/+1
| | | | | | | | | | | It is often possible to user (member) functions or members directly. That improves readablility and potentially reduces the total number of symbols. Also use qobject_container_cast at places where it is appropriate. Change-Id: Ia2591bca356591e001e2c53eeebcf753e5bc3c37 Reviewed-by: Tobias Hunger <tobias.hunger@qt.io> Reviewed-by: hjk <hjk@qt.io>
* Fix that removing splits results in code model issuesEike Ziller2018-05-254-23/+48
| | | | | | | | | | | | | | | The code model is listening to editorsClosed signals, and checks for which editors are actually visible when that signal is sent. For this to work correctly, the signal must be sent only at the very end after deconstructing all the views, because otherwise we might be in a state where temporarily no editors are "visible". Fix-up after 80ae992c91985389f6d870ac0201c16d895bc5cc which exposes the issue. Task-number: QTCREATORBUG-20464 Change-Id: I9ec5e579d681f2c12924be3d7b89aab398579505 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
* Core: Consistently use nullptrTobias Hunger2018-05-082-8/+8
| | | | | | | Fixed by clang-tidy modernize-use-nullptr. Change-Id: I62a9388ab873410555f45a8a6f9b0149467ddbaa Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Core: Use override consistentlyTobias Hunger2018-05-076-12/+12
| | | | | | | clang-tidy fixes from modernize-use-override check. Change-Id: If33399d60e96cae766bbedbe30044ada411e862f Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* DocumentModel: Replace optional::value by non-throwing alternativeRobert Loehning2018-05-021-1/+1
| | | | | | | | ...to calm down static checker which fears throwing exceptions into dtors Change-Id: I595c79ca6d19c7592e98437585fc33c4071d09c6 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Utils: Use free functions in OsSpecificAspectshjk2018-04-241-2/+2
| | | | | | | Generates a bit less code in debug mode and is easier to read IMNSHO. Change-Id: Ib9c0b9a0c058327facff16600a7014207167b050 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Fix potential nullptr access in editor managerEike Ziller2018-04-161-1/+1
| | | | | | | Introduced recently in f1e02c0826f Change-Id: I9cae829c6c58ed30021b7c29fcde7487bf2ff625 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* DocumentModel: Replace optional::value by non-throwing alternativeRobert Loehning2018-04-121-2/+2
| | | | | | | ...to not throw exceptions into dtors Change-Id: Iee6cb7567befcc07879db496adeb3a2afedd18f3 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Fix that menus didn't show ampersands in files namesEike Ziller2018-03-261-5/+9
| | | | | | | | | | And instead interpreted the ampersand + following character as an accelerator key. Task-number: QTCREATORBUG-17817 Change-Id: I327239499ce56e75fd12f2df5be60d4b04913acd Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* FilePropertiesDialog: Show mime-type and default editorRazi Alavizadeh2018-03-202-14/+22
| | | | | | | | | | Added two new rows, Mime Type and Default Editor, to "File Properties" dialog. File properties dialog is a good place to show these information. Change-Id: I131b17a18679b1b94880b8f109fe166500ca34ef Reviewed-by: André Hartmann <aha_1980@gmx.de> Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io>
* Restore extra editor windows when opening sessionEike Ziller2018-03-204-6/+68
| | | | | | Task-number: QTCREATORBUG-13840 Change-Id: Idf87d0fd2d0b20f8239487a1c7bf31ea63456d42 Reviewed-by: David Schulz <david.schulz@qt.io>
* Merge remote-tracking branch 'origin/4.6'Eike Ziller2018-03-131-1/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/plugins/cmakeprojectmanager/cmakeproject.h src/plugins/debugger/debuggerplugin.cpp src/plugins/ios/iosrunfactories.cpp src/plugins/nim/project/nimproject.h src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp src/plugins/qmakeandroidsupport/qmakeandroidrunfactories.cpp src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp src/plugins/qmlprojectmanager/qmlproject.h src/plugins/qnx/qnxrunconfigurationfactory.cpp src/plugins/qtsupport/exampleslistmodel.cpp src/plugins/winrt/winrtrunfactories.cpp Change-Id: Ib029fdbaa65270426332f5edd6e90264be5fb539
| * Fix ordering of items without file name in open documents popupEike Ziller2018-03-121-1/+2
| | | | | | | | | | | | | | | | | | | | An item that has no file name (like Git Commit, Diff etc.) was always last in the list. Broke by 324de13b4e6703db778010d0682ac26cff359516. Change-Id: Ied3add2a372b4b176ee800e8c023c3cef5495488 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
* | EditorManager: Fix various compiler & clazy warningsEike Ziller2018-03-062-13/+14
| | | | | | | | | | Change-Id: Ie2318fd5ab2188b8e4bbcd0b77b2c978b52e1b30 Reviewed-by: David Schulz <david.schulz@qt.io>
* | EditorManager: Use nullptrEike Ziller2018-03-065-118/+116
| | | | | | | | | | Change-Id: If3e20279acbfcb89d9b16776739e318f519c337e Reviewed-by: David Schulz <david.schulz@qt.io>
* | Core: Do not try to remove objecs from global object poolhjk2018-03-051-3/+1
| | | | | | | | | | | | | | | | | | ... that is not put in there anymore. This amends 7acdf911a2e77766e3cd9b2d9ab72f0d40de3c41 Change-Id: I583511dfc7c8da9a6c594e44a4ec697a2057ef9c Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* | Core: don't put OpenEditorsViewFactory into global poolhjk2018-03-021-1/+0
| | | | | | | | | | | | | | Not needed anymore. Change-Id: Ia18e0a20d8a4477c7f6dff5b24d0d1d349759bf2 Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* | Merge remote-tracking branch 'origin/4.6'Eike Ziller2018-02-235-36/+51
|\ \ | |/ | | | | | | | | | | Conflicts: src/plugins/coreplugin/helpmanager.cpp Change-Id: I2feb60ec0afb2f22f75dc137a01c3fa217b299d8
| * Fix ordering of items in open documents popupEike Ziller2018-02-163-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the document history was updated, it was cleaned of any items which no longer had a document open for them. This worked fine when that only happened when user closed documents. Nowadays this also happens when suspending documents without user interaction. Only remove items from the document history if they are no longer available even as a suspended document. Task-number: QTCREATORBUG-19758 Change-Id: I131a24823b5c456879b67a35b039768a15bd7716 Reviewed-by: Konstantin Tokarev <annulen@yandex.ru> Reviewed-by: David Schulz <david.schulz@qt.io>
| * Document model: Use optional for "indexOf" kind of methodsEike Ziller2018-02-164-32/+42
| | | | | | | | | | Change-Id: Iaffbb0b695f96b5b44c9fd0df63891c2797181b7 Reviewed-by: David Schulz <david.schulz@qt.io>
* | Add a file properties dialogAndre Hartmann2018-02-193-1/+11
| | | | | | | | | | | | | | Task-number: QTCREATORBUG-19588 Change-Id: I75599459beb7e23812ba48670ae968585faefda9 Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
* | Core: make useMacShortcut constexprDavid Schulz2018-02-022-12/+12
|/ | | | | Change-Id: I293b96428784b6efecac6dae4f2f9690af0027da Reviewed-by: Eike Ziller <eike.ziller@qt.io>
* Utils: Remove directory iconChristian Stenger2018-01-081-3/+0
| | | | | | | | This icon had been moved already, but its declaration and definition were still present. Change-Id: I7e0f5cc91f83ac19e9bba9838b1fbc4d7258c6c7 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
* De-emphasize PluginManager::getObjects<Type>()hjk2017-12-155-19/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... by additionally keeping local (currently non-owning) pools per "interesting" type. Current situation: - The global object pool does not scale well for looking up objects, as iteration plus qobject_cast typically iterates over all pooled objects. - User code that can use typed results from the object pool need to have access to the full type definition anyway, i.e. depend on the plugin of the target class anyway. The patch here solves the scaling problem is to have local type-specific pools to which objects register in their constructors and deregister in their destructors. This patch here does *not* change the ownership model of the pooled objects, however, it opens the possibility to change the ownership model per type (e.g. by not putting things into the global pool at all anymore and make the local pool 'owning') and the intent is to handle that in later patchs. Even without the follow-up patches this here is a performance improvement for the cases that access the local pools instead the global one, i.e. "practically all". Change-Id: Ib11a42df2c4ecf5e1155534730083a520dd1995b Reviewed-by: Eike Ziller <eike.ziller@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>