diff options
author | Vsevolod Kukol <sevoku@xamarin.com> | 2016-02-11 12:18:58 +0300 |
---|---|---|
committer | Vsevolod Kukol <sevoku@xamarin.com> | 2016-02-11 12:18:58 +0300 |
commit | a30b1a118be58589262d357026643fa4cd758fe4 (patch) | |
tree | 7f9dd429f1c6da7b346a21e9bdfc94cfb54e8cd4 | |
parent | 38dad12bfde5d7b4464128c90ce671c101875180 (diff) | |
parent | 7efe2abe40ba288e7b560660da2c5983d85310c6 (diff) |
Merge remote-tracking branch 'origin/master' into roslyn-dark-skin
156 files changed, 4849 insertions, 3538 deletions
@@ -52,8 +52,9 @@ usage () echo "" echo "--enable-release" echo " Builds md in release mode" - echo "--enable-mac64" - echo " Build for x64 on OS X" + echo "" + echo "--enable-mac32" + echo " Build for i386 on OS X" echo "" echo "--profile=PROFILE" echo "" @@ -161,7 +162,7 @@ configure_packages () enable_tests=" " fi - if [ -z "$MONODEVELOP_64BIT_SAFE" ]; then + if test xno == x$x64; then enable_x64=--with-macarch=i386 else enable_x64=--with-macarch=x86_64 @@ -246,8 +247,8 @@ while test x$1 != x; do --enable-release) release=yes ;; - --enable-mac64) - x64=yes + --enable-mac32) + x64=no ;; --prefix=*) prefix=`echo $1 | sed 's/--prefix=//'` diff --git a/main/Makefile.include b/main/Makefile.include index 8d0cec7599..59f937cb1e 100644 --- a/main/Makefile.include +++ b/main/Makefile.include @@ -10,7 +10,6 @@ abs_top_builddir ?= $(top_builddir) MD_BIN_PATH=$(abs_top_builddir)/build/bin MD_LAUNCH_SETUP= \ - MONODEVELOP_LOCALE_PATH="$(abs_top_builddir)/build/locale" \ - MONODEVELOP_PROFILE="$(MD_BIN_PATH)/test-profile" + MONODEVELOP_LOCALE_PATH="$(abs_top_builddir)/build/locale" MDTOOL_RUN=$(MD_LAUNCH_SETUP) exec -a "mdtool" $(RUNTIME)$(SGEN_SUFFIX) --debug "$(MD_BIN_PATH)/mdtool.exe" diff --git a/main/external/RefactoringEssentials b/main/external/RefactoringEssentials -Subproject f53f4091514104936eaf472b95ee2aa210854ad +Subproject 523277154a40f3a02c48f011b52c38b41d8de5c diff --git a/main/external/fsharpbinding b/main/external/fsharpbinding -Subproject 0888ab6a530c9f51576f7a18e9653c1445412b4 +Subproject af7fca23865814fcd23672414adf9608652f5df diff --git a/main/external/roslyn b/main/external/roslyn -Subproject 571132d0df9b754e525c2ea2aaefed5d7677883 +Subproject 16e117c2400d0ab930e7d89512f9894a169a0e6 diff --git a/main/po/uk.po b/main/po/uk.po index 093f9d7f15..73c58d2dcb 100644 --- a/main/po/uk.po +++ b/main/po/uk.po @@ -2,13 +2,13 @@ # Copyright (C) 2014 Olexandr Pylypchuk <pilipchukap@rambler.ru> # This file is distributed under the same license as the MonoDevelop package. # -# Olexandr Pylypchuk <pilipchukap@rambler.ru>, 2014. +# Olexandr Pylypchuk <pilipchukap@rambler.ru>, 2014, 2016. msgid "" msgstr "" "Project-Id-Version: MonoDevelop 2.4.1\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2015-12-15 15:35:25-0500\n" -"PO-Revision-Date: 2014-11-20 19:02+0200\n" +"PO-Revision-Date: 2016-02-06 10:23+0200\n" "Last-Translator: Olexandr Pylypchuk <pilipchukap@rambler.ru>\n" "Language-Team: Ukrainian <kde-i18n-doc@kde.org>\n" "Language: uk\n" @@ -113,9 +113,8 @@ msgid "Target File" msgstr "Цільовий файл" #: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectConfiguration.cs:14 -#, fuzzy msgid "Target Path" -msgstr "Назва цілі" +msgstr "Цільовий шлях" #: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProjectConfiguration.cs:14 msgid "Target Name" @@ -287,6 +286,8 @@ msgid "" "Invalid custom command for '{0}' step: the path to the command to execute " "has not been provided." msgstr "" +"Неправильна власна команда для кроку '{0}': не надано шлях до команди, " +"яку слід виконати." #: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/CustomCommand.cs:4 msgid "Executing: {0} {1}" @@ -598,9 +599,8 @@ msgid "Could not load {0} project '{1}'. {2}" msgstr "Неможливо завантажити {0} проект '{1}'. {2}" #: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:43 -#, fuzzy msgid "Unknown project type: {0}" -msgstr "Невідома ціль {0}" +msgstr "Невідомий тип проекту: {0}" #: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:43 msgid "Could not load project '{0}' with unknown item type '{1}'" @@ -608,9 +608,8 @@ msgstr "Не вдалось завантажити проект '{0}' з нев #: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:43 #: ../src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionItem.cs:57 -#, fuzzy msgid "Unknown project type" -msgstr "Невідомий тип пакета" +msgstr "Невідомий тип проекту" #: ../src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs:43 msgid "Could not load project '{0}' with unknown item type" @@ -809,13 +808,12 @@ msgstr "" "використати Visual Studio або Xamarin Studio на Mac." #: ../src/core/MonoDevelop.Core/MonoDevelop.Core.addin.xml:16 -#, fuzzy msgid "" "Xamarin.Mac projects are not supported in MonoDevelop on Windows. You need " "to use Xamarin Studio on Mac." msgstr "" -"Проекти Xamarin.iOS не підтримуються у MonoDevelop на Windows. Слід " -"використати Visual Studio або Xamarin Studio на Mac." +"Проекти Xamarin.Mac не підтримуються у MonoDevelop на Windows. Слід " +"використати Xamarin Studio на Mac." #: ../src/core/MonoDevelop.Core/frameworks/framework_NET_1_1.xml:0 msgid "Mono / .NET 1.1" @@ -939,14 +937,12 @@ msgid "Creates an empty interface." msgstr "Створити порожній інтерфейс." #: ../src/core/MonoDevelop.Ide/templates/EmptyResourceFile.xft.xml:0 -#, fuzzy msgid "Resource File" -msgstr "Порожній файл ресурсів" +msgstr "Файл ресурсів" #: ../src/core/MonoDevelop.Ide/templates/EmptyResourceFile.xft.xml:0 -#, fuzzy msgid "Creates a resx resource file." -msgstr "Створити порожній файл ресурсів." +msgstr "Створити файл ресурсів resx." #: ../src/core/MonoDevelop.Ide/templates/EmptyStruct.xft.xml:0 msgid "Empty Struct" @@ -1397,7 +1393,7 @@ msgstr "Назва класу вікна" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:13 msgid "Template for a class loading contents from a gtkbuilder file" -msgstr "" +msgstr "Шаблон класу, що завантажує вміст з файлу gtkbuilder" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/MonoDevelop-templates.xml:13 msgid "Path to ui description file (widgets.ui)" @@ -1521,24 +1517,20 @@ msgid "_Toggle Line Comment(s)" msgstr "_Перемкнути коментування рядків" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7 -#, fuzzy msgid "Comment selected lines of code" -msgstr "_Додати відступи до вибраних рядків" +msgstr "Закоментувати вибрані рядки коду" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7 -#, fuzzy msgid "_Add Line Comment(s)" -msgstr "_Перемкнути коментування рядків" +msgstr "_Закоментувати рядки" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7 -#, fuzzy msgid "Uncomment selected lines of code" -msgstr "Закоментувати/Розкоментувати вибрані рядки коду" +msgstr "Розкоментувати вибрані рядки коду" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7 -#, fuzzy msgid "_Remove Line Comment(s)" -msgstr "_Перемкнути коментування рядків" +msgstr "_Розкоментувати рядки" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7 msgid "Indent selected lines of code" @@ -1586,14 +1578,12 @@ msgid "_Join Lines" msgstr "О_б'єднати рядки" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7 -#, fuzzy msgid "Sort the selected lines" -msgstr "Вирізати вибраний текст" +msgstr "Упорядкувати вибрані рядки" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7 -#, fuzzy msgid "_Sort Lines" -msgstr "О_б'єднати рядки" +msgstr "_Упорядкувати рядки" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:7 msgid "_Word Count..." @@ -1960,15 +1950,13 @@ msgid "Export Policy..." msgstr "_Експортувати політику..." #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12 -#, fuzzy msgid "Run Code Analysis on Solution" -msgstr "Закрити всі рішення" +msgstr "Запустити аналіз коду рішення" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:12 #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:45 -#, fuzzy msgid "Run Code Analysis on Project" -msgstr "Консольний проект IL" +msgstr "Запустити аналіз коду проекту" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:14 #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:35 @@ -2186,14 +2174,12 @@ msgid "Require Specific Version" msgstr "Потрібна особлива версія" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15 -#, fuzzy msgid "Closes all opened files in a tab" -msgstr "Закрити всі відкриті файли за винятком активного файлу" +msgstr "Закрити всі відкриті файли у вкладці" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15 -#, fuzzy msgid "C_lose Others" -msgstr "Прихо_вати інші" +msgstr "_Закрити інші" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:15 msgid "Closes all opened files except for the active file" @@ -2374,14 +2360,12 @@ msgid "Resets zoom to default" msgstr "Відновити стандартний масштаб" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19 -#, fuzzy msgid "2 Columns" -msgstr "Колонки" +msgstr "2 колонки" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19 -#, fuzzy msgid "1 Column" -msgstr "Колонки" +msgstr "1 колонка" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:19 #, fuzzy @@ -2443,29 +2427,24 @@ msgid "Window" msgstr "Вікно" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27 -#, fuzzy msgid "_Next Document" -msgstr "_Форматування документа" +msgstr "_Наступний документ" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27 -#, fuzzy msgid "Show next document" -msgstr "Перейти до наступного документа" +msgstr "Показати наступний документ" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27 -#, fuzzy msgid "_Previous Document" -msgstr "_Показати курсор" +msgstr "_Попередній документ" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27 -#, fuzzy msgid "Show previous document" -msgstr "Перейти до попереднього документа" +msgstr "Показати попередній документ" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27 -#, fuzzy msgid "Document List" -msgstr "Документи" +msgstr "Список документів" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:27 msgid "Window List" @@ -2797,9 +2776,8 @@ msgid "Delete entire line" msgstr "Видалити цілий рядок" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41 -#, fuzzy msgid "Delete to start of line" -msgstr "Видалити до кінця рядка" +msgstr "Видалити до початку рядка" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41 msgid "Delete to end of line" @@ -2996,11 +2974,11 @@ msgstr "Увімкнути/вимкнути спливні повідомлен #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41 msgid "_Hide Issues" -msgstr "" +msgstr "_Приховати проблеми" #: ../src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml:41 msgid "Toggle Issues" -msgstr "" +msgstr "Перемкнути проблеми" #: ../src/core/MonoDevelop.Ide/ExtensionModel/DefaultPolicyPanels.addin.xml:2 #: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1 @@ -3173,10 +3151,9 @@ msgstr "Виведення" #: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1 msgid "Configuration Mappings" -msgstr "" +msgstr "Карти конфігурацій" #: ../src/core/MonoDevelop.Ide/ExtensionModel/ItemOptionPanels.addin.xml:1 -#, fuzzy msgid "Code Analysis" msgstr "Аналіз коду" @@ -3357,9 +3334,8 @@ msgid "Apple Strings" msgstr "Рядки Apple" #: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2 -#, fuzzy msgid "sql files" -msgstr "Файли il" +msgstr "Файли sql" #: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2 msgid "JSON files" @@ -3370,9 +3346,8 @@ msgid "Shell script" msgstr "Сценарій оболонки" #: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2 -#, fuzzy msgid "F# files" -msgstr "Файли f#" +msgstr "Файли F#" #: ../src/core/MonoDevelop.Ide/ExtensionModel/MimeTypes.addin.xml:2 #, fuzzy @@ -3623,7 +3598,7 @@ msgstr "Не вдалось виконати команду" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ProjectCommands.cs:45 msgid "Run Code Analysis on {0}" -msgstr "" +msgstr "Запустити аналіз коду для {0}" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/ToolsCommands.cs:4 msgid "Start tool" @@ -3690,9 +3665,8 @@ msgid "Show Previous ({0})" msgstr "Показати попередній ({0})" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/WindowCommands.cs:11 -#, fuzzy msgid "Activate document '{0}'" -msgstr "Активувати вікно '{0}'" +msgstr "Активувати документ '{0}'" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Commands/WindowCommands.cs:18 msgid "Activate window '{0}'" @@ -3756,7 +3730,7 @@ msgstr "" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ViewCommandHandlers.cs:6 msgid "All changes made to the document will be permanently lost." -msgstr "" +msgstr "Всі зміни, зроблені у документах, будуть повністю втрачені." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/CommonAboutDialog.cs:3 #: ../src/addins/MacPlatform/MacPlatform.cs:41 @@ -3793,9 +3767,8 @@ msgid "_Save and Quit" msgstr "Зберегти і в_ийти" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/DirtyFilesDialog.cs:10 -#, fuzzy msgid "_Save and Close" -msgstr "Зберегти і в_ийти" +msgstr "Зберегти і за_крити" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/NewLayoutDialog.cs:5 msgid "Enter a name for the new layout" @@ -3998,13 +3971,12 @@ msgid "Import From Folder" msgstr "Імпортувати з теки" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:36 -#, fuzzy msgid "Empty directory." -msgstr "Порожній деструктор" +msgstr "Порожня тека." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:36 msgid "Directory {0} is empty, no files have been added." -msgstr "" +msgstr "Тека {0} порожня, файли не додано." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:37 #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/FolderNodeBuilder.cs:45 @@ -4106,13 +4078,12 @@ msgstr "" "Виберіть Вилучити з проекту, щоб вилучити файл тільки з поточного рішення." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:10 -#, fuzzy msgid "" "The directory and any files it contains will be permanently removed from " "your hard disk. " msgstr "" "Тека та всі наявні у ній файли будуть повністю вилучені з вашого " -"жорсткогодиска." +"жорсткого диска." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:12 #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs:14 @@ -4128,9 +4099,8 @@ msgid "The folder {0} could not be deleted from disk: {1}" msgstr "Не вдалось видалити теку {0} з диска: {1}" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs:7 -#, fuzzy msgid "Unknown language '{0}'" -msgstr "Невідома ціль {0}" +msgstr "Невідома мова '{0}'" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs:9 #, fuzzy @@ -4140,9 +4110,8 @@ msgstr "" "Неправильна конфігурація {0}. Правильні конфігурації : " #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectNodeBuilder.cs:9 -#, fuzzy msgid "Project not built in active configuration" -msgstr "Конфігурація проекту" +msgstr "Проект не побудовано в активній конфігурації" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectReferenceFolderNodeBuilder.cs:3 #: ../src/addins/MonoDevelop.Autotools/gtk-gui/MonoDevelop.Autotools.MakefileOptionPanelWidget.cs:1 @@ -4213,9 +4182,8 @@ msgid "Initializing Main Window" msgstr "Ініціалізація головного вікна" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:22 -#, fuzzy msgid "Save the changes to document '{0}' before creating a new solution?" -msgstr "Зберегти зміни у документі '{0}' перед закриванням?" +msgstr "Зберегти зміни у документі '{0}' перед створенням нового рішення?" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs:43 msgid "Opening {0}" @@ -4450,9 +4418,8 @@ msgid "Category" msgstr "Категорія" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:38 -#, fuzzy msgid "Toggle visibility of Category column" -msgstr "Показати/сховати колонку 'Шлях'" +msgstr "Показати/сховати колонку 'Категорія'" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads/ErrorListPad.cs:69 msgid "{0} Error" @@ -4536,9 +4503,8 @@ msgstr "" "<span foreground='grey'>{0} <span size='small'>(Недоступно)</span></span>" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs:3 -#, fuzzy msgid "Load failed: " -msgstr "(Збій при завантаженні)" +msgstr "Збій при завантаженні:" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/UnknownEntryNodeBuilder.cs:8 msgid "Do you really want to remove project '{0}' from solution '{1}'" @@ -4586,23 +4552,20 @@ msgid "Apply" msgstr "Застосувати" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17 -#, fuzzy msgid "Build project before running" -msgstr "Побудувати рішення перед запуском" +msgstr "Побудувати проект перед запуском" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17 -#, fuzzy msgid "Run project if build completed with warnings" -msgstr "Запустити рішення, якщо побудова завершилась з попередженнями" +msgstr "Запустити проект, якщо побудова завершилась з попередженнями" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17 msgid "Enable parallel build of projects" -msgstr "" +msgstr "Дозволити паралельну побудову проектів" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17 -#, fuzzy msgid "Build project before executing unit tests" -msgstr "Побудувати рішення перед виконанням модульних тестів" +msgstr "Побудувати проект перед виконанням модульних тестів" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.BuildPanelWidget.cs:17 msgid "Log _verbosity:" @@ -4872,9 +4835,8 @@ msgid "Standard _Header" msgstr "Стандартний _заголовок" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.StandardHeader/StandardHeaderPolicyPanel.cs:4 -#, fuzzy msgid "Templates" -msgstr "Шаблони T4" +msgstr "Шаблони" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AuthorInformationPanelWidget.cs:2 msgid "_Use custom author information for this solution" @@ -4909,13 +4871,12 @@ msgid "Native" msgstr "Власні" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TextStylePolicyPanel.cs:2 -#, fuzzy msgid "Mac Classic" -msgstr "_Основний клас:" +msgstr "Класичний Mac" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TextStylePolicyPanel.cs:2 msgid "Unix / Mac" -msgstr "" +msgstr "Unix / Mac" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/TextStylePolicyPanel.cs:2 #: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.addin.xml:31 @@ -5010,7 +4971,7 @@ msgstr "" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2 msgid "_Shortcut:" -msgstr "" +msgstr "_Ярлик:" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.CodeTemplates.EditTemplateDialog.cs:2 #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.CombineInformationWidget.cs:2 @@ -5026,7 +4987,7 @@ msgstr "Текст шаблону:" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:2 msgid "Editable" -msgstr "" +msgstr "Можна редагувати" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:3 msgid "Identifier" @@ -5057,13 +5018,15 @@ msgstr "Функція, що буде розрахована для вмісту #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:2 msgid "Whether the variable is an editable region." -msgstr "" +msgstr "Чи належить змінна області, доступній для редагування" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:3 msgid "" "Whether the variable is an identifier, and should only accept valid " "identifiers as input." msgstr "" +"Чи є змінна ідентифікатором, і чи вимагає на вході лише правильного " +"ідентифікатора." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplateVariable.cs:3 msgid "A list of values for the user to choose from." @@ -5085,7 +5048,7 @@ msgstr "Середовище виконання Mono не знайдено" msgid "" "Please provide a valid directory prefix where mono is installed (for " "example, /usr)" -msgstr "" +msgstr "Надайте правильний префікс теки, де встановлено mono (наприклад, /usr)" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.MonoRuntimePanelWidget.cs:2 msgid "" @@ -5288,9 +5251,8 @@ msgid "Replacing '{0}' in current selection" msgstr "Заміна '{0}' у вибраному" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:19 -#, fuzzy msgid "Looking in solution folder '{0}'" -msgstr "Завантаження файлу рішення {0}" +msgstr "Пошук у теці рішення {0}" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:19 #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/Scope.cs:25 @@ -5380,7 +5342,7 @@ msgstr "" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "MDB Mode" -msgstr "" +msgstr "Режим MDB" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "GDB Symbols" @@ -5392,7 +5354,7 @@ msgstr "" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "Verbose Level" -msgstr "" +msgstr "Рівень деталізації" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "Runtime Version" @@ -5449,7 +5411,7 @@ msgstr "Префікс глобального кешу збірок (GAC)" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "Strip Drive Letters" -msgstr "" +msgstr "Відкинути букви дисків" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "Case Insensitive Paths" @@ -5481,7 +5443,7 @@ msgstr "Зберегти тимчасові файли ASP.NET" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "Trace Listener" -msgstr "" +msgstr "Слухач трасування" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "X11 Exceptions" @@ -5521,7 +5483,7 @@ msgstr "Дозволити підтримку зневадження" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "Enable more detailed InvalidCastException messages." -msgstr "" +msgstr "Увімкнути більш детальні повідомлення InvalidCastException." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "" @@ -5543,11 +5505,11 @@ msgstr "" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "Runs in profiling mode with the specified profiler module." -msgstr "" +msgstr "Запускається в режимі профілювання зі вказаним модулем профілювання." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "Increases the verbosity level." -msgstr "" +msgstr "Збільшити рівень деталізації." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "Use the specified runtime version, instead of autodetecting" @@ -5695,6 +5657,9 @@ msgid "" "If set, temporary source files generated by ASP.NET support classes will not " "be removed. They will be kept in the user's temporary directory." msgstr "" +"Якщо встановлено, тимчасові файли, створені класами підтримки ASP.NET, не " +"будуть" +"вилучені. Вони будуть збережені у тимчасовій теці користувача." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Execution/MonoExecutionParameters.cs:3 msgid "" @@ -5851,7 +5816,7 @@ msgstr "Кінець списку" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.OptionPanels.AssemblyFoldersPanelWidget.cs:2 msgid "" "Custom folders where MonoDevelop should look for assemblies and packages:" -msgstr "" +msgstr "Власні теки, де MonoDevelop має шукати збірки і пакунки:" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/BuildMessagePanel.cs:5 #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:108 @@ -5899,9 +5864,8 @@ msgid "Jump to first error or warning:" msgstr "Перейти до першої помилки або попередження:" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs:31 -#, fuzzy msgid "Search:" -msgstr "_Пошук:" +msgstr "Пошук:" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs:32 #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SearchAndReplaceWidget.cs:7 @@ -5928,14 +5892,12 @@ msgstr "" "параметр 'Запустити у зовнішній консолі' у налаштуваннях проекту." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:9 -#, fuzzy msgid "Generate templates" -msgstr "Створити файли Makefile" +msgstr "Створити шаблони" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:10 -#, fuzzy msgid "No templates found" -msgstr "Оновлень не знайдено" +msgstr "Шаблони не знайдено" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:21 #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:38 @@ -5943,19 +5905,16 @@ msgid "Running generator '{0}' on file '{1}'..." msgstr "Виконується генератор '{0}' у файлі '{1}'..." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:22 -#, fuzzy msgid "File '{0}' was generated successfully." -msgstr "Процес '{0}' завершено успішно" +msgstr "Файл '{0}' створено успішно." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:22 -#, fuzzy msgid "File '{0}' was generated with warnings." -msgstr "Операція завершилась з попередженнями." +msgstr "Файл '{0}' створено з попередженнями." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:22 -#, fuzzy msgid "Errors in file '{0}' generation." -msgstr "Помилка читання файлу '{0}'." +msgstr "Помилки при створенні файлу '{0}'." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:27 msgid "Errors in file generation." @@ -5966,21 +5925,20 @@ msgid "Warnings in file generation." msgstr "" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:27 -#, fuzzy msgid "Generated files successfully." -msgstr "Операцію завершено успішно." +msgstr "Файли створено успішно." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:41 msgid "Cancelled because generator ran again for the same file" -msgstr "" +msgstr "Скасовано, оскільки генератор запущено повторно для того ж файлу" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:42 msgid "The '{0}' code generator crashed" -msgstr "" +msgstr "Генератор коду '{0}' впав" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:43 msgid "The '{0}' code generator output invalid filename '{1}'" -msgstr "" +msgstr "Неправильна назва вихідного файлу '{1}' генератора коду '{0}'" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.CustomTools/CustomToolService.cs:26 msgid "" @@ -6010,9 +5968,8 @@ msgid "Clear" msgstr "Очистити" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs:60 -#, fuzzy msgid "Cut" -msgstr "Ви_різати" +msgstr "Вирізати" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs:61 #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs:57 @@ -6021,9 +5978,8 @@ msgid "Copy" msgstr "Копіювати" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs:62 -#, fuzzy msgid "Paste" -msgstr "Вст_авити" +msgstr "Вставити" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/GtkUtil.cs:64 #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlService.cs:51 @@ -6171,16 +6127,15 @@ msgstr "Детальніше" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Gui.Dialogs.ProgressDialog.cs:2 msgid "GtkButton" -msgstr "" +msgstr "GtkButton" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs:17 msgid "Loading Workbench" msgstr "Завантаження середовища розробки" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/Ide.cs:29 -#, fuzzy msgid "Could not open file: {0}" -msgstr "Не вдалось оновити файл '{0}'" +msgstr "Не вдалось відкрити файл: '{0}'" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:15 msgid "Workspace saved." @@ -6207,9 +6162,8 @@ msgid "Could not close solution '{0}'." msgstr "Не вдалось закрити рішення {0}." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:33 -#, fuzzy msgid "{0} is already opened" -msgstr "Файл {0} доступний лише для читання" +msgstr "{0} вже відкрито" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/RootWorkspace.cs:41 msgid "File is not a project or solution: {0}" @@ -6349,7 +6303,7 @@ msgstr "Всі конфігурації" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs:8 msgid "(Active)" -msgstr "" +msgstr "(Активний)" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs:19 #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Project.CodeGenerationPanelWidget.cs:2 @@ -6418,9 +6372,8 @@ msgid "Browse..." msgstr "Огляд..." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs:25 -#, fuzzy msgid "Select Assembly" -msgstr "З_бірка .NET" +msgstr "Виберіть збірку" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs:27 msgid "File '{0}' is not a valid .Net Assembly" @@ -6565,14 +6518,12 @@ msgid "The file '{0}' could not be loaded." msgstr "Не вдалось завантажити файл {0}." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:26 -#, fuzzy msgid "The file '{0}' is not a known project file format." -msgstr "Не вдалось відкрити файл '{0}'. Він занадто великий." +msgstr "Файл '{0}' не є файлом проекту відомого формату." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:27 -#, fuzzy msgid "The project '{0}' has already been added." -msgstr "Проект '{0}' не підтримується {1}" +msgstr "Проект '{0}' вже додано." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:39 msgid "Do you really want to remove project '{0}' from '{1}'?" @@ -6628,18 +6579,16 @@ msgid "Clean successful." msgstr "Очищення завершено успішно." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:73 -#, fuzzy msgid "Outdated Build" -msgstr "Після побудови" +msgstr "Застаріла побудова" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:73 -#, fuzzy msgid "" "The project you are executing has changes done after the last time it was " "compiled. Do you want to continue?" msgstr "" "До проекту, який виконується, внесено зміни після останньої компіляції. " -"Можливо, зневаджувальна інформація застаріла. Продовжити?" +"Бажаєте продовжити?" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:88 #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:94 @@ -6680,7 +6629,7 @@ msgstr "Додаються файли..." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:99 msgid "There is a already a file or link in the project with the name '{0}'" -msgstr "" +msgstr "У проекті вже є файл або посилання з назвою '{0}'" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:99 msgid "" @@ -6692,7 +6641,7 @@ msgstr "" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:99 msgid "The link '{0}' in the project already includes the file '{1}'" -msgstr "" +msgstr "Посилання '{0}' у проекті вже включає файл '{1}'" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs:99 msgid "The file '{0}' already exists. Do you want to replace it?" @@ -7062,11 +7011,11 @@ msgstr "Перейменувати" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.StartupOptionsPanelWidget.cs:2 msgid "Single startup project:" -msgstr "Окремий завантажувальний проект:" +msgstr "Окремий початковий проект:" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.StartupOptionsPanelWidget.cs:2 msgid "Multiple startup projects:" -msgstr "Декілька завантажувальних проектів:" +msgstr "Декілька початкових проектів:" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CodeFormattingPanel.cs:4 msgid "File Type" @@ -7332,33 +7281,28 @@ msgstr "" "використовується вбудований оглядач довідки." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/HelpOperations.cs:24 -#, fuzzy msgid "Help Viewer could not be opened" -msgstr "Не вдалось відкрити файл {0}." +msgstr "Не вдалось відкрити оглядач довідки" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:20 msgid "Starting {0}" msgstr "Запуск {0}" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:29 -#, fuzzy msgid "MonoDevelop failed to start" -msgstr "Файли політик MonoDevelop" +msgstr "MonoDevelop не вдалось запуститися." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:57 -#, fuzzy msgid "Close MonoDevelop" -msgstr "MonoDevelop" +msgstr "Закрити MonoDevelop" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:57 -#, fuzzy msgid "More Information" msgstr "Більше інформації" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:57 -#, fuzzy msgid "Continue Anyway" -msgstr "Продовжити" +msgstr "Все одно продовжити" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdeStartup.cs:65 msgid "CustomizerAssemblyPath" @@ -7400,7 +7344,6 @@ msgid "Select Font" msgstr "Виберіть шрифт" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Fonts/FontChooserPanelWidget.cs:8 -#, fuzzy msgid "Set To Default" msgstr "Зробити стандартним" @@ -7555,7 +7498,7 @@ msgstr "Застосувати політику з файлу" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.ApplyPolicyDialog.cs:2 msgid "Policies to set or replace:" -msgstr "" +msgstr "Політики для вмикання або заміни:" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.ApplyPolicyDialog.cs:2 msgid "_Apply policies" @@ -7746,11 +7689,11 @@ msgstr[2] "Востаннє відкрито {0} хвилин тому" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs:4 msgid "Back up and migrate" -msgstr "" +msgstr "Зарезервувати і перетворити" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs:4 msgid "Migrate" -msgstr "" +msgstr "Перетворити" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs:4 msgid "Ignore" @@ -7758,7 +7701,7 @@ msgstr "Знехтувати" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs:4 msgid "Migrate Project?" -msgstr "" +msgstr "Перетворити проект" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/ProjectLoadProgressMonitor.cs:4 msgid "" @@ -7768,6 +7711,11 @@ msgid "" "If you choose to back up the project before migration, a copy of the project " "file will be saved in a 'backup' directory in the project directory." msgstr "" +"Один або більше проектів слід перетворити у новий формат. Після " +"перетворення їх буде неможливо відкрити старою версією MonoDevelop.\n" +"\n" +"Якщо вибрати резервування проекту перед перетворенням, то копію " +"проекту буде збережено у теці 'backup', що у теці проекту." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/LogAgentOptionsPanel.cs:5 msgid "Report errors and usage information to help {0} improve my experience." @@ -7861,9 +7809,8 @@ msgid "Commands" msgstr "Команди" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageSection.cs:17 -#, fuzzy msgid "File not found {0}" -msgstr "Файл не знайдено: {0}" +msgstr "Файл не знайдено {0}" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.WelcomePage/WelcomePageFeedItem.cs:192 #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs:28 @@ -8019,9 +7966,8 @@ msgid "FirstRunDescription" msgstr "ОписПершогоЗапуску" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/IdeFileSystemExtensionExtension.cs:4 -#, fuzzy msgid "File '{0}' is locked." -msgstr "'{0}' розблоковано." +msgstr "Файл '{0}' заблоковано." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/IdeFileSystemExtensionExtension.cs:4 msgid "File {0} is read-only" @@ -8046,9 +7992,8 @@ msgid "Framework not installed: {0}" msgstr "Фреймворк не встановлено: {0}" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchInSolutionSearchCategory.cs:12 -#, fuzzy msgid "Search in Solution..." -msgstr "Шукати у рішенні" +msgstr "Пошук у рішенні..." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CombineMSBuildOptions.cs:54 msgid "Use MSBuild build engine (recommended for this project type)" @@ -8069,24 +8014,20 @@ msgid "_Surround With..." msgstr "" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:52 -#, fuzzy msgid "Choose a template for your new project" -msgstr "Виберіть файл з проекту." +msgstr "Виберіть шаблон для вашого нового проекту." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:53 -#, fuzzy msgid "Configure your new project" -msgstr "Поточний проект" +msgstr "Сконфігуруйте ваш новий проект" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:54 -#, fuzzy msgid "Configure your new workspace" -msgstr "Створити новий робочий простір" +msgstr "Сконфігуруйте ваш новий робочий простір" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:55 -#, fuzzy msgid "Configure your new solution" -msgstr "Створити нове рішення" +msgstr "Сконфігуруйте ваше нове рішення" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:480 #: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Gui/DeployDialog.cs:6 @@ -8095,18 +8036,16 @@ msgstr "Створити" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:482 #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.UI.cs:232 -#, fuzzy msgid "Next" -msgstr "Наступна порада" +msgstr "Далі" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:635 msgid "A Project with that name is already in your Project Space" msgstr "Проект з такою назвою проекту вже є у вашому просторі проектів" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:640 -#, fuzzy msgid "A solution with that filename is already in your workspace" -msgstr "Проект з такою назвою проекту вже є у вашому просторі проектів" +msgstr "Рішення з такою назвою файлу вже є у вашому робочому просторі" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:646 msgid "" @@ -8115,7 +8054,6 @@ msgid "" msgstr "" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectController.cs:654 -#, fuzzy msgid "" "Directory {0} already exists.\n" "Do you want to continue creating the project?" @@ -8140,33 +8078,29 @@ msgid "New Project" msgstr "Новий проект" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkNewProjectDialogBackend.UI.cs:225 -#, fuzzy msgid "Previous" -msgstr "Показати попереднє" +msgstr "Попереднє" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.GtkProjectFolderPreviewWidget.cs:35 msgid "<span weight='bold' foreground='#555555'>PREVIEW</span>" -msgstr "" +msgstr "<span weight='bold' foreground='#555555'>ПОПЕРЕДНІЙ ПЕРЕГЛЯД</span>" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs:215 -#, fuzzy msgid "Workspace Name:" -msgstr "Назва робочого простору" +msgstr "Назва робочого простору:" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/GtkProjectConfigurationWidget.cs:217 #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.GtkProjectConfigurationWidget.cs:207 -#, fuzzy msgid "Solution Name:" -msgstr "Назва рішення" +msgstr "Назва рішення:" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.GtkProjectConfigurationWidget.cs:113 msgid "Create a .gitignore file to ignore inessential files." msgstr "" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.GtkProjectConfigurationWidget.cs:129 -#, fuzzy msgid "Create a project within the solution directory." -msgstr "Шлях файлу відносно теки встановлення." +msgstr "Створити проект з текою рішення." #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.GtkProjectConfigurationWidget.cs:185 #: ../src/addins/MonoDevelop.Autotools/ImportMakefileDialog.cs:2 @@ -8174,14 +8108,12 @@ msgid "Project Name:" msgstr "Назва проекту:" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.GtkProjectConfigurationWidget.cs:245 -#, fuzzy msgid "Use git for version control." -msgstr "Інтегрувати з засобом керування _версіями" +msgstr "Використати git для керування версіями" #: ../src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.GtkProjectConfigurationWidget.cs:275 -#, fuzzy msgid "Version Control:" -msgstr "Керування версіями" +msgstr "Керування версіями:" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Components/Mac/MDServicesMenuItem.cs:2 #: ../src/addins/MacPlatform/MacMenu/MDServicesMenuItem.cs:2 @@ -8211,12 +8143,11 @@ msgid "Illegal characters used in location." msgstr "Розпізнавання тексту" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectConfiguration.cs:150 -#, fuzzy msgid "" "Illegal solution name.\n" "Only use letters, digits, '.' or '_'." msgstr "" -"Недопустима назва проекту. \n" +"Недопустима назва рішення. \n" "Використовуйте лише латинські літери, цифри, '.' або '_'." #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewProjectConfiguration.cs:157 @@ -8248,9 +8179,8 @@ msgid "Press ‘{0}’ to search" msgstr "" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs:77 -#, fuzzy msgid "Search solution" -msgstr "Шукати у рішенні" +msgstr "Шукати рішення" #: ../src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/CodeAnalysisPanel.cs:12 #, fuzzy @@ -8259,11 +8189,11 @@ msgstr "Увімкнути аналіз коду відкритих файлів #: ../src/core/Mono.Texteditor/Mono.TextEditor.PopupWindow/ModeHelpWindow.cs:44 msgid "Use [%UP%] [%DOWN%] to move to another location." -msgstr "" +msgstr "Скористайтесь [%UP%] [%DOWN%], щоб перейти в інше місце." #: ../src/core/Mono.Texteditor/Mono.TextEditor.PopupWindow/ModeHelpWindow.cs:44 msgid "Press [ENTER] to select the location." -msgstr "" +msgstr "Натисни [ENTER], щоб вибрати розташування." #: ../src/core/Mono.Texteditor/Mono.TextEditor.PopupWindow/ModeHelpWindow.cs:44 msgid "Press [ESC] to cancel this operation." @@ -8374,7 +8304,7 @@ msgstr "Заблокувати" #: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:17 msgid "Release Lock" -msgstr "" +msgstr "Блокування релізу" #: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:17 #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/BlameView.cs:0 @@ -8418,9 +8348,8 @@ msgid "_Version Control" msgstr "_Контроль версій" #: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:20 -#, fuzzy msgid "Versio_n Control" -msgstr "Керування версіями" +msgstr "К_ерування версіями" #: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:24 #: ../src/addins/VersionControl/MonoDevelop.VersionControl/VersionControl.addin.xml:25 @@ -8573,9 +8502,8 @@ msgid "Adding..." msgstr "Додавання..." #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs:2 -#, fuzzy msgid "Add operation completed." -msgstr "Операцію оновлення завершено." +msgstr "Операцію додавання завершено." #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs:2 msgid "" @@ -8592,9 +8520,8 @@ msgid "Removing..." msgstr "Вилучення..." #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/AddRemoveMoveCommand.cs:2 -#, fuzzy msgid "Remove operation completed." -msgstr "Операцію скасування завершено." +msgstr "Операцію вилучення завершено." #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/CheckoutCommand.cs:2 msgid "Checking out {0}..." @@ -9016,7 +8943,7 @@ msgstr "" #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs:6 msgid "Revert to this revision" -msgstr "" +msgstr "Повернутись до цієї ревізії" #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl.Views/LogWidget.cs:9 #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitSelectRevisionDialog.cs:81 @@ -9068,11 +8995,11 @@ msgstr "Справді знехтувати вибрані файли?" #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/IgnoreCommand.cs:75 msgid "Ignoring ..." -msgstr "" +msgstr "Нехтування ..." #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/IgnoreCommand.cs:90 msgid "Ignore operation completed." -msgstr "" +msgstr "Операцію нехтування завершено." #: ../src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/IgnoreCommand.cs:111 msgid "Are you sure you want to unignore the selected files?" @@ -9099,19 +9026,17 @@ msgid "Version control operation failed: " msgstr "Не вдалось виконати команду керування версіями:" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs:135 -#, fuzzy msgid "The following files must be locked before editing." -msgstr "Файл '{0}' має бути заблокований перед редагуванням." +msgstr "Файли мають бути заблоковані перед редагуванням." #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs:142 -#, fuzzy msgid "File could not be unlocked." -msgstr "Не вдалось розблокувати файл '{0}'" +msgstr "Не вдалось розблокувати файл." #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs:242 msgid "" "Project publishing failed. There is a stale .svn folder in the path '{0}'" -msgstr "" +msgstr "Не вдалось опублікувати проект. Виявлена застаріла тека .svn у '{0}'" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion/SubversionRepository.cs:555 #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:202 @@ -9244,9 +9169,8 @@ msgid "Upgrade working copy" msgstr "робоча копія" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.Gui/WorkingCopyFormatDialog.cs:1 -#, fuzzy msgid "Disable version control" -msgstr "Глобально вимкнути керування версіями" +msgstr "Вимкнути керування версіями" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion/MonoDevelop.VersionControl.Subversion.Gui/WorkingCopyFormatDialog.cs:2 msgid "The subversion working copy format is too old." @@ -9293,7 +9217,7 @@ msgstr "Відновлення локальних змін" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:103 msgid "Rebasing" -msgstr "" +msgstr "Перенесення" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitRepository.cs:109 msgid "Merging" @@ -9340,7 +9264,7 @@ msgstr "" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.PushDialog.cs:1 msgid "Branch:" -msgstr "" +msgstr "Гілка:" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.PushDialog.cs:1 msgid "Push Changes" @@ -9352,7 +9276,7 @@ msgstr "" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs:9 msgid "Rebasing branch '{0}'..." -msgstr "" +msgstr "Перенесення гілки '{0}'..." #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitService.cs:9 msgid "Merging branch '{0}'..." @@ -9571,7 +9495,7 @@ msgstr "Потрібні реєстраційні дані для доступу #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCredentials.cs:14 msgid "Select a private SSH key to use." -msgstr "" +msgstr "Виберіть приватний ключ SSH для використання." #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCredentials.cs:14 #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitCredentials.cs:17 @@ -9588,7 +9512,7 @@ msgstr "Поведінка команди оновлення:" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitOptionsPanelWidget.cs:1 msgid "Use the Rebase option for merging" -msgstr "" +msgstr "Скористайтесь параметром \"Перенесення\" для злиття" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.GitOptionsPanelWidget.cs:1 msgid "Automatically stash/unstash local changes" @@ -9668,9 +9592,8 @@ msgid "Username:" msgstr "Користувач:" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/gtk-gui/MonoDevelop.VersionControl.Git.UserGitConfigDialog.cs:80 -#, fuzzy msgid "Email:" -msgstr "_E-mail:" +msgstr "Електронна адреса:" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git/GitSelectRevisionDialog.cs:52 msgid "Select a revision" @@ -9698,7 +9621,7 @@ msgstr "" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:2 msgid "Rebase to Branch..." -msgstr "" +msgstr "Перенесення до гілки..." #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Git/MonoDevelop.VersionControl.Git.addin.xml:2 msgid "Stash..." @@ -9767,7 +9690,7 @@ msgstr "Не вдалось повернути '{0}' -- спробуйте он #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs:150 #: ../src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs:748 msgid "Resolved conflict state of '{0}'" -msgstr "" +msgstr "Розв'язано конфліктний стан '{0}'" #: ../src/addins/VersionControl/MonoDevelop.VersionControl.Subversion.Unix/MonoDevelop.VersionControl.Subversion.Unix/SvnClient.cs:150 #: ../src/addins/VersionControl/Subversion.Win32/SvnSharpClient.cs:752 @@ -10187,6 +10110,8 @@ msgid "" "The Gtk# User Interface designer will be disabled by removing the gtk-sharp " "reference." msgstr "" +"Дизайнер користувацького інтерфейсу Gtk# буде вимкнено шляхом вилучення " +"посилання на gtk-sharp." #: ../src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore/ReferenceManager.cs:23 msgid "Disable Designer" @@ -10540,7 +10465,7 @@ msgstr "Windows" #: ../src/addins/MonoDevelop.GtkCore/libsteticui/PaletteBackend.cs:15 msgid "Empty" -msgstr "" +msgstr "Порожньо" #: ../src/addins/MonoDevelop.GtkCore/libsteticui/ProjectBackend.cs:10 msgid "Not a Stetic file according to node name." @@ -10918,7 +10843,7 @@ msgstr "Текст, що буде вставлено в документ." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/TextToolboxNode.cs:35 #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/CodeTemplateToolboxProvider.cs:2 msgid "Text Snippets" -msgstr "" +msgstr "Текстові сніппети" #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/Toolbox.cs:3 msgid "Show categories" @@ -10926,7 +10851,7 @@ msgstr "Показати категорії" #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/Toolbox.cs:3 msgid "Use compact display" -msgstr "" +msgstr "Використати компактний вигляд" #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/Toolbox.cs:3 msgid "Add toolbox items" @@ -11006,7 +10931,7 @@ msgstr "Групувати за категорією компонента" #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/ErrorInFileException.cs:4 msgid "Error in file '{0}' at line {1}, column {2}." -msgstr "" +msgstr "Помилка у файлі '{0}' в {1} рядку, {2} стовпчику." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/TypeNotFoundException.cs:2 msgid "Could not find type '{0}'." @@ -11050,7 +10975,7 @@ msgstr "Тип файлу." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs:7 msgid "Action to perform when building this file." -msgstr "" +msgstr "Дія, яку слід виконати при побудові цього файлу." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs:7 msgid "Identifier of the embedded resource." @@ -11060,11 +10985,11 @@ msgstr "Ідентифікатор вбудованого ресурсу." msgid "" "Whether to copy the file to the project's output directory when the project " "is built." -msgstr "" +msgstr "Чи копіювати при побудові проекту файл до вихідної теки проекту." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs:7 msgid "The ID of a custom code generator." -msgstr "" +msgstr "ID власного генератора коду" #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectFileDescriptor.cs:7 msgid "" @@ -11091,7 +11016,7 @@ msgstr "Тип посилання." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs:3 msgid "Referenced project, when the reference is of type 'Project'." -msgstr "" +msgstr "Проект за посиланням, якщо посилання має тип 'Project'." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs:3 #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ImplicitFrameworkAssemblyReferenceDescriptor.cs:3 @@ -11109,13 +11034,15 @@ msgstr "Шлях до збірки." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs:3 msgid "Copy the referenced assembly to the output directory." -msgstr "" +msgstr "Копіювати збірку за посиланням у вихідну теку." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs:3 msgid "" "Require a specific version of the assembly. A warning will be issued if the " "specific version is not found in the system." msgstr "" +"Вимагає особливої версії збірки. Якщо особлива версія не буде знайдена " +"у системі, з'явиться попередження." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/ProjectReferenceDescriptor.cs:3 msgid "Package that provides this reference." @@ -11150,6 +11077,8 @@ msgid "" "Root directory of source files and projects. File paths will be shown " "relative to this directory." msgstr "" +"Коренева тека сирцевих файлів і проектів. Шляхи до файлів будуть вказані " +"відносно цієї теки." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/SolutionItemDescriptor.cs:3 #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/WorkspaceItemDescriptor.cs:2 @@ -11158,11 +11087,11 @@ msgstr "Формат файлу проекту." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/WorkspaceItemDescriptor.cs:2 msgid "Name of the item." -msgstr "" +msgstr "Назва елемента." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Projects/WorkspaceItemDescriptor.cs:2 msgid "File path of the item." -msgstr "" +msgstr "Шлях до файлу елемента." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/CodeBehindWriter.cs:6 #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport/CodeBehindWriter.cs:7 @@ -11201,7 +11130,7 @@ msgstr "Додати елементи..." #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.addin.xml:15 msgid "Switch between related files " -msgstr "" +msgstr "Перемикання між пов'язаними файлами" #: ../src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.addin.xml:15 msgid "Switch between related files, such as CodeBehind, headers, etc." @@ -11476,6 +11405,8 @@ msgid "" "Unable to find the specified Makefile. You need to specify the path to an " "existing Makefile for use with the 'Makefile Integration' feature." msgstr "" +"Не вдалось знайти вказаний Makefile. Слід вказати шлях до Makefile, " +"який використовуватиметься з засобом 'Інтеграція Makefile'." #: ../src/addins/MonoDevelop.Autotools/MakefileProjectServiceExtension.cs:4 msgid "Error resolving Makefile based project references for solution {0}" @@ -11486,9 +11417,8 @@ msgid "Updating project from Makefile" msgstr "Проект оновлюється з Makefile" #: ../src/addins/MonoDevelop.Autotools/MakefileProjectServiceExtension.cs:11 -#, fuzzy msgid "\tError loading Makefile for project {0}" -msgstr "Не вдалось завантажити Makefile для проекту {0}" +msgstr "\tНе вдалось завантажити Makefile для проекту {0}" #: ../src/addins/MonoDevelop.Autotools/MakefileProjectServiceExtension.cs:15 msgid "Error saving to Makefile ({0}) for project {1}" @@ -11829,7 +11759,7 @@ msgstr "" #: ../src/addins/MonoDevelop.Autotools/gtk-gui/MonoDevelop.Autotools.TarballBuilderEditorWidget.cs:1 msgid "Edit configure switches" -msgstr "" +msgstr "Редагувати параметри конфігурації" #: ../src/addins/MonoDevelop.Autotools/PropertyProvider.cs:3 msgid "Include in Makefile" @@ -11858,6 +11788,9 @@ msgid "" "configurations can be selected via the '--config' option of the generated " "configure script." msgstr "" +"Виберіть типову конфігурацію, яку будуватиме Makefile. Інші " +"конфігурації можна вибрати параметром '--config' у створеному " +"скрипті конфігурації." #: ../src/addins/MonoDevelop.Autotools/gtk-gui/MonoDevelop.Autotools.MakefileSwitchEditorWidget.cs:1 msgid "<b>Switch list</b>" @@ -11911,9 +11844,8 @@ msgid "Web Service References" msgstr "Посилання веб-сервісу" #: ../src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.NodeBuilders/WebReferenceFolderNodeBuilder.cs:1 -#, fuzzy msgid "Web Services" -msgstr "Веб-сервіс" +msgstr "Веб-сервіси" #: ../src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.NodeBuilders/WebReferenceFolderNodeBuilder.cs:1 msgid "Web References" @@ -12007,9 +11939,8 @@ msgid "Credentials" msgstr "Реєстраційні дані" #: ../src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Dialogs/WCFConfigWidget.cs:2 -#, fuzzy msgid "Task-based" -msgstr "Завдання" +msgstr "На основі завдань" #: ../src/addins/MonoDevelop.WebReferences/gtk-gui/MonoDevelop.WebReferences.Dialogs.WCFConfigWidget.cs:2 msgid "Dictionary type:" @@ -12025,7 +11956,7 @@ msgstr "Рівень доступу:" #: ../src/addins/MonoDevelop.WebReferences/gtk-gui/MonoDevelop.WebReferences.Dialogs.WCFConfigWidget.cs:2 msgid "Generate Asynchronous:" -msgstr "" +msgstr "Генерувати асинхронно:" #: ../src/addins/MonoDevelop.WebReferences/gtk-gui/MonoDevelop.WebReferences.Dialogs.WCFConfigWidget.cs:2 #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionEditRuleDialog.cs:3 @@ -12038,13 +11969,12 @@ msgid "Internal" msgstr "Внутрішні" #: ../src/addins/MonoDevelop.WebReferences/gtk-gui/MonoDevelop.WebReferences.Dialogs.WCFConfigWidget.cs:2 -#, fuzzy msgid "No" -msgstr "Немає" +msgstr "Ні" #: ../src/addins/MonoDevelop.WebReferences/gtk-gui/MonoDevelop.WebReferences.Dialogs.WCFConfigWidget.cs:2 msgid "Async" -msgstr "" +msgstr "Асинхронно" #: ../src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.addin.xml:3 msgid "Web Reference" @@ -12097,7 +12027,6 @@ msgstr "_Знайти посилання" #: ../src/addins/CSharpBinding/CSharpBinding.addin.xml:3 #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/ExtractMethod/ExtractMethodCodeRefactoringProvider.cs:8 -#, fuzzy msgid "Extract Method" msgstr "Видобути метод" @@ -12168,6 +12097,9 @@ msgid "" "Creates a C# library that can be used in Windows, Mac, Silverlight, Windows " "Phone, Xamarin.iOS and Xamarin.Android." msgstr "" +"Створити бібліотеку C#, яку можна використати у Windows, Mac, Silverlight, " +"Windows " +"Phone, Xamarin.iOS і Xamarin.Android." #: ../src/addins/CSharpBinding/templates/SharedAssetsProject.xpt.xml:0 #, fuzzy @@ -12176,7 +12108,7 @@ msgstr "Спільний об'єкт" #: ../src/addins/CSharpBinding/templates/SharedAssetsProject.xpt.xml:0 msgid "Creates a project that allows sharing files between projects" -msgstr "" +msgstr "Створити проект, який дозволяє поширювати файли між проектами" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Project/CompilerOptionsPanelWidget.cs:19 msgid "Invalid code page number." @@ -12204,7 +12136,7 @@ msgstr "x64" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Project.CodeGenerationPanelWidget.cs:2 msgid "Itanium" -msgstr "" +msgstr "Itanium" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Project.CodeGenerationPanelWidget.cs:2 msgid "Full" @@ -12212,7 +12144,7 @@ msgstr "Повне" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Project.CodeGenerationPanelWidget.cs:2 msgid "Symbols only" -msgstr "" +msgstr "Лише символи" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Project.CodeGenerationPanelWidget.cs:2 #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.OptionPanels/BehaviorPanel.cs:2 @@ -12252,7 +12184,7 @@ msgstr "Трактувати попередження як _помилки" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Project.CompilerOptionsPanelWidget.cs:2 msgid "Do not reference mscorlib.dll" -msgstr "" +msgstr "Не посилатися на mscorlib.dll" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Project.CompilerOptionsPanelWidget.cs:2 msgid "<b>Language Options</b>" @@ -12288,35 +12220,31 @@ msgstr "Назва _профілю:" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Formatting.NewFormattingProfileDialog.cs:2 msgid "_Initialize from profile:" -msgstr "" +msgstr "_Ініціалізувати з профілю:" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:4 msgid "leftmost column" -msgstr "" +msgstr "найлівіший стовпчик" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:4 -#, fuzzy msgid "normal placement" -msgstr "_Форматування документа" +msgstr "звичайне розташування" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:4 msgid "one indent less" -msgstr "" +msgstr "на рівень нижче" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:5 -#, fuzzy msgid "ignore" -msgstr "Знехтувати" +msgstr "нехтувати" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:5 -#, fuzzy msgid "remove" -msgstr "Вилучити" +msgstr "видалити" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:5 -#, fuzzy msgid "single" -msgstr "Відсутній" +msgstr "одинарний" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:7 msgid "Show built-in profile" @@ -12337,116 +12265,104 @@ msgstr "Нові рядкиПросмотреть список" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:7 #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Formatting.CSharpFormattingProfileDialog.cs:2 -#, fuzzy msgid "Spacing" -msgstr "Трасування" +msgstr "Інтервали" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:7 #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Formatting.CSharpFormattingProfileDialog.cs:2 msgid "Wrapping" -msgstr "" +msgstr "Перенесення" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:10 -#, fuzzy msgid "Indent block contents" -msgstr "Відступ вмісту" +msgstr "Відступ вмісту блока" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:10 msgid "Indent open and close braces" -msgstr "" +msgstr "Відступ відкритих і закритих фігурних дужок" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:10 -#, fuzzy msgid "Indent case contents" -msgstr "Відступ вмісту" +msgstr "Відступ вмісту case" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:10 -#, fuzzy msgid "Indent case labels" -msgstr "Видалити мітку case" +msgstr "Відступ міток case" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:10 -#, fuzzy msgid "Label indentation" -msgstr "Відступи" +msgstr "Відступи міток" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:12 -#, fuzzy msgid "New line options for braces" -msgstr "Новий рядок після відкритої квадратної дужки" +msgstr "Параметри нового рядка для фігурних дужок" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:12 -#, fuzzy msgid "Place open brace on new line for types" -msgstr "Помістити 'else' у новому рядку" +msgstr "Помістити відкриту фігурну дужку в новому рядку для типів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:12 -#, fuzzy msgid "Place open brace on new line for methods" -msgstr "Помістити 'else' у новому рядку" +msgstr "Помістити відкриту фігурну дужку в новому рядку для методів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:12 msgid "Place open brace on new line for properties" -msgstr "" +msgstr "Помістити відкриту фігурну дужку в новому рядку для властивостей" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:13 msgid "Place open brace on new line for property accessors" msgstr "" +"Помістити відкриту фігурну дужку в новому рядку для методів доступу до " +"властивостей" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:15 msgid "Place open brace on new line for anonymous methods" -msgstr "" +msgstr "Помістити відкриту фігурну дужку в новому рядку для анонімних методів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:15 msgid "Place open brace on new line for control blocks" -msgstr "" +msgstr "Помістити відкриту фігурну дужку в новому рядку для керувальних блоків" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:15 msgid "Place open brace on new line for anonymous types" -msgstr "" +msgstr "Помістити відкриту фігурну дужку в новому рядку для анонімних типів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:15 -#, fuzzy msgid "Place open brace on new line for object initializers" -msgstr "Зайва кома при ініціалізації об'єкта" +msgstr "" +"Помістити відкриту фігурну дужку в новому рядку для ініціалізаторів об'єктів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:15 msgid "Place open brace on new line for lambda expression" -msgstr "" +msgstr "Помістити відкриту фігурну дужку в новому рядку для лямбда-виразів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:16 msgid "New line options for keywords" -msgstr "" +msgstr "Параметри нового рядка для ключових слів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:16 -#, fuzzy msgid "Place \"else\" on new line" msgstr "Помістити 'else' у новому рядку" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:16 -#, fuzzy msgid "Place \"catch\" on new line" msgstr "Помістити 'catch' у новому рядку" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:16 -#, fuzzy msgid "Place \"finally\" on new line" msgstr "Помістити 'finally' у новому рядку" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:17 -#, fuzzy msgid "New line options for expressions" -msgstr "Заперечити вираз 'is'" +msgstr "Параметри нового рядка для виразів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:17 -#, fuzzy msgid "Place members in object initializers on new line" -msgstr "Помістити ініціалізатори масиву у новому рядку" +msgstr "Помістити члени в ініціалізаторах об'єктів у новому рядку" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:17 -#, fuzzy msgid "Place members in anonymous types on new line" -msgstr "Помістити вкладені інструкції у новому рядку" +msgstr "Помістити члени в анонімних типах у новому рядку" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:17 #, fuzzy @@ -12454,9 +12370,8 @@ msgid "Place query expression clauses on new line" msgstr "Помістити ініціалізатори масиву у новому рядку" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:25 -#, fuzzy msgid "Set spacing for method declarations" -msgstr "Оголошення методів" +msgstr "Задати пропуски для оголошень методів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:25 #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:27 @@ -12474,14 +12389,12 @@ msgid "Insert space within empty argument list parentheses" msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:27 -#, fuzzy msgid "Set spacing for method calls" -msgstr "Перетворити на виклик статичного методу" +msgstr "Задати пропуски для викликів методів" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:28 -#, fuzzy msgid "Set other spacing options" -msgstr "Програми для налаштувань" +msgstr "Встановити інші параметри пропусків" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:28 msgid "Insert space after keywords in control flow statements" @@ -12511,37 +12424,32 @@ msgstr "Порожнє оголошення простору назв є зай #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:31 #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32 -#, fuzzy msgid "Set spacing for brackets" -msgstr "у квадратних дужках" +msgstr "Задати відступи для квадратних дужок" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:31 -#, fuzzy msgid "Insert space before open square bracket" -msgstr "перед відкритою квадратною дужкою" +msgstr "Вставити пропуск перед відкритою квадратною дужкою" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:31 msgid "Insert space within empty square brackets" msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:31 -#, fuzzy msgid "Insert space within square brackets" -msgstr "Вставляти парні _дужки" +msgstr "Вставити пропуск у квадратних дужках" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32 msgid "Insert space after colon for base or interface in type declaration" msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32 -#, fuzzy msgid "Insert space after comma" -msgstr "Вставити після" +msgstr "Вставити пропуск після коми" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32 -#, fuzzy msgid "Insert space after dot" -msgstr "Вставити після" +msgstr "Вставити пропуск після крапки" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32 msgid "Insert space after semicolon in \"for\" statement" @@ -12552,14 +12460,12 @@ msgid "Insert space before colon for base or interface in type declaration" msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32 -#, fuzzy msgid "Insert space before comma" -msgstr "Вставити перед" +msgstr "Вставити перед комою" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32 -#, fuzzy msgid "Insert space before dot" -msgstr "Вставити перед" +msgstr "Вставити пропуск перед крапкою" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs:32 msgid "Insert space before semicolon in \"for\" statement" @@ -12591,23 +12497,20 @@ msgid "_Category:" msgstr "_Категорія:" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Formatting.CSharpFormattingProfileDialog.cs:2 -#, fuzzy msgid "NewLines" -msgstr "Нові рядкиПросмотреть список" +msgstr "НовіРядки" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Formatting.CSharpFormattingProfileDialog.cs:2 -#, fuzzy msgid "Style" -msgstr "Стиль:" +msgstr "Стиль" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp/PathedDocumentTextEditorExtension.cs:63 msgid "No region" -msgstr "" +msgstr "Немає ділянки" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/EventCreationCompletionData.cs:10 -#, fuzzy msgid "Create new method" -msgstr "Створити метод" +msgstr "Створити новий метод" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/CreateConstructorGenerator.cs:32 msgid "Constructor" @@ -12615,7 +12518,7 @@ msgstr "Конструктор" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/CreateConstructorGenerator.cs:33 msgid "Select members to be initialized by the constructor." -msgstr "" +msgstr "Виберіть члени, що мають ініціалізуватися в конструкторі." #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/OverrideMembersGenerator.cs:3 msgid "Override members" @@ -12623,7 +12526,7 @@ msgstr "Замістити члени" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/OverrideMembersGenerator.cs:4 msgid "Select members to be overridden." -msgstr "" +msgstr "Виберіть члени, що будуть заміщені." #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/PropertyGenerator.cs:2 #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ReadonlyPropertyGenerator.cs:2 @@ -12637,11 +12540,11 @@ msgstr "Реалізація ToString()" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ToStringGenerator.cs:4 #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/WriteLineGenerator.cs:2 msgid "Select members to be outputted." -msgstr "" +msgstr "Виберіть члени для виведення." #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/WriteLineGenerator.cs:2 msgid "WriteLine call" -msgstr "" +msgstr "Виклик WriteLine" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CodeGeneration.GenerateCodeWindow.cs:2 msgid "GenerateCodeWindow" @@ -12657,15 +12560,15 @@ msgstr "Властивості лише для читання" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/RaiseEventMethodGenerator.cs:3 msgid "Event OnXXX method" -msgstr "" +msgstr "Подія методу OnXXX" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/RaiseEventMethodGenerator.cs:4 msgid "Select event to generate the method for." -msgstr "" +msgstr "Виберіть подію для якої створюється метод." #: ../src/addins/CSharpBinding/MonoDevelop.CSharp/AstAmbience.cs:4 msgid "(abstract)" -msgstr "" +msgstr "(абстрактний)" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp/AstAmbience.cs:4 msgid "(partial)" @@ -12690,7 +12593,7 @@ msgstr "Часткові методи" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/PartialGenerator.cs:4 msgid "Select methods to be implemented." -msgstr "" +msgstr "Виберіть метод, який буде реалізовано." #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ExportCodeGenerator.cs:17 msgid "Implement protocol members" @@ -12699,7 +12602,7 @@ msgstr "Реалізувати члени протоколу" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ExportCodeGenerator.cs:18 #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ExportCodeGenerator.cs:21 msgid "Select protocol members to implement" -msgstr "" +msgstr "Виберіть члени протоколу для реалізації" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeGeneration/ExportCodeGenerator.cs:20 msgid "Implement required protocol members" @@ -12736,7 +12639,7 @@ msgstr "Параметри схеми документа" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.ClassOutline.OutlineSortingPreferencesDialog.cs:2 msgid "Group sorting order when grouping is enabled:" -msgstr "" +msgstr "Порядок сортування груп, якщо групування увімкнене:" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.ClassOutline/OutlineSettings.cs:3 msgid "Regions" @@ -12807,9 +12710,8 @@ msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/RefactoryCommands.cs:14 #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs:68 -#, fuzzy msgid "In _Document" -msgstr "Документ" +msgstr "У _документі" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/RefactoryCommands.cs:20 msgid "Refactor" @@ -12820,18 +12722,16 @@ msgid "{0}, Line {1}" msgstr "{0}, рядок {1}" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/FullyQualify/CSharpFullyQualifyCodeFixProvider.cs:28 -#, fuzzy msgid "Change '{0}' to '{1}.{2}'" -msgstr "Перейменувати '{0}' на '{1}'" +msgstr "Замінити '{0}' на '{1}.{2}'" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/Async/CSharpConvertToAsyncMethodCodeFixProvider.cs:8 msgid "Make {0} return Task instead of void" msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/Async/CSharpAddAwaitCodeFixProvider.cs:17 -#, fuzzy msgid "Insert 'await'" -msgstr "Додати вкладку" +msgstr "Вставити 'await'" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/Async/CSharpAddAsyncCodeFixProvider.cs:16 msgid "Make async" @@ -12846,9 +12746,8 @@ msgid "Move type to file '{0}'" msgstr "Перенести тип у файл '{0}'" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/ImplementAbstractClass/ImplementAbstractClassCodeFixProvider.cs:9 -#, fuzzy msgid "Implement Abstract Class" -msgstr "Реалізувати інтерфейс" +msgstr "Реалізувати абстрактний rkfc" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/InlineTemporary/InlineTemporaryCodeRefactoringProvider.cs:12 #, fuzzy @@ -12866,19 +12765,17 @@ msgid "Extract Method + Local" msgstr "Видобути метод" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/SimplifyTypeNames/SimplifyTypeNamesCodeFixProvider.cs:11 -#, fuzzy msgid "Simplify name '{0}'" -msgstr "Пропущено '{0}'" +msgstr "Спростити назву '{0}'" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/SimplifyTypeNames/SimplifyTypeNamesCodeFixProvider.cs:12 #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/SimplifyTypeNames/SimplifyTypeNamesDiagnosticAnalyzerBase.cs:4 msgid "Simplify member access '{0}'" -msgstr "" +msgstr "Спростити доступ до члена '{0}'" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/SimplifyTypeNames/SimplifyTypeNamesCodeFixProvider.cs:13 -#, fuzzy msgid "Remove 'this' qualification" -msgstr "Вилучити 'this'" +msgstr "Вилучити кваліфікатор 'this'" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeFixes/RemoveUnnecessaryUsings/RemoveUnnecessaryUsingsCodeFixProvider.cs:7 #, fuzzy @@ -12903,14 +12800,12 @@ msgstr "" "Директива using не використовується у коді і може бути безпечно вилучена." #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/SimplifyTypeNames/SimplifyTypeNamesDiagnosticAnalyzerBase.cs:2 -#, fuzzy msgid "Name can be simplified." -msgstr "Тип можна спростити до '{0}?'" +msgstr "Назву можна спростити." #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/SimplifyTypeNames/SimplifyTypeNamesDiagnosticAnalyzerBase.cs:2 -#, fuzzy msgid "Simplify Names" -msgstr "Спростити вираз LINQ" +msgstr "Спростити назви" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/SimplifyTypeNames/SimplifyTypeNamesDiagnosticAnalyzerBase.cs:5 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CompilerErrors/ProhibitedModifiersIssue.cs:15 @@ -12951,7 +12846,7 @@ msgstr "Структури" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionEditRuleDialog.cs:2 msgid "Enums" -msgstr "" +msgstr "Переліки" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionEditRuleDialog.cs:2 msgid "Interfaces" @@ -12964,7 +12859,7 @@ msgstr "Делегати" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionEditRuleDialog.cs:2 #: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2 msgid "Attributes" -msgstr "" +msgstr "Атрибути" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionEditRuleDialog.cs:2 msgid "Event Arguments" @@ -13020,11 +12915,11 @@ msgstr "Локальні константи" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionEditRuleDialog.cs:2 msgid "Labels" -msgstr "" +msgstr "Мітки" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionEditRuleDialog.cs:3 msgid "Private" -msgstr "" +msgstr "Приватний" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Diagnostics/InconsistentNaming/NameConventionEditRuleDialog.cs:3 msgid "Protected" @@ -13064,7 +12959,7 @@ msgstr "Стиль:" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Diagnostics.InconsistentNaming.NameConventionEditRuleDialog.cs:2 msgid "Suffix:" -msgstr "" +msgstr "Суфікс:" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Diagnostics.InconsistentNaming.NameConventionEditRuleDialog.cs:2 msgid "Optional Prefixes:" @@ -13080,16 +12975,15 @@ msgstr "" #: ../src/addins/CSharpBinding/gtk-gui/MonoDevelop.CSharp.Diagnostics.InconsistentNaming.NameConventionEditRuleDialog.cs:2 msgid "Static/Non Static" -msgstr "" +msgstr "Статичний/не статичний" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindDerivedSymbolsHandler.cs:1 msgid "Find Implementing Types" msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindDerivedSymbolsHandler.cs:1 -#, fuzzy msgid "Find Derived Types" -msgstr "Знайти класи-_нащадки" +msgstr "Знайти типи-нащадки" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindDerivedSymbolsHandler.cs:1 msgid "Find Implementing Symbols" @@ -13097,31 +12991,27 @@ msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindDerivedSymbolsHandler.cs:1 msgid "Find Derived Symbols" -msgstr "" +msgstr "Знайти символи-нащадки" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindExtensionMethodHandler.cs:2 msgid "Find Extension Methods" msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindMemberOverloadsHandler.cs:1 -#, fuzzy msgid "Find Method Overloads" -msgstr "Знайти перевантаження члена" +msgstr "Знайти перевантаження методу" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindMemberOverloadsHandler.cs:1 -#, fuzzy msgid "Find Indexer Overloads" -msgstr "Знайти перевантаження члена" +msgstr "Знайти перевантаження індексатора" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs:1 -#, fuzzy msgid "Go to _Base Type" -msgstr "Базові типи" +msgstr "Перейти до _базового типу" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs:1 -#, fuzzy msgid "Go to _Base Property" -msgstr "Перетворити на автоматичну властивість" +msgstr "Перейти до _базової властивості" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs:1 #, fuzzy @@ -13138,9 +13028,8 @@ msgid "Go to _Interface Event" msgstr "Назва інтерфейсу" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs:1 -#, fuzzy msgid "Go to _Base Method" -msgstr "До наступного слова" +msgstr "Перейти до _базового методу" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs:1 msgid "Go to _Interface Method" @@ -13151,9 +13040,8 @@ msgid "Go to _Base Symbol" msgstr "" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindProjectReferenceUsagesHandler.cs:3 -#, fuzzy msgid "Analyzing project" -msgstr "Збереження проектів" +msgstr "Аналіз проекту" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp/DeclaredSymbolInfo.cs:38 msgid "file {0}" @@ -13200,9 +13088,8 @@ msgid "method ({0})" msgstr "метод ({0})" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp/DeclaredSymbolInfo.cs:40 -#, fuzzy msgid "symbol ({0})" -msgstr "метод ({0})" +msgstr "символ ({0})" #: ../src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/ConvertToEnum/ConvertToEnumCodeRefactoringProvider.cs:14 msgid "Create enum '{0}'" @@ -13415,7 +13302,7 @@ msgstr "_Системний шлях:" #: ../src/addins/MonoDevelop.Gettext/gtk-gui/MonoDevelop.Gettext.TranslationProjectOptionsDialog.cs:2 msgid "The catalog initialization string should look like:" -msgstr "" +msgstr "Рядок ініціалізації каталогу має виглядати, як:" #: ../src/addins/MonoDevelop.Gettext/gtk-gui/MonoDevelop.Gettext.TranslationProjectOptionsDialog.cs:2 msgid "<b>Init String</b>" @@ -13498,15 +13385,15 @@ msgstr "" #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/POEditorWidget.cs:19 msgid "{0:#00.00}% Translated" -msgstr "" +msgstr "Перекладено {0:#00.00}%" #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/POEditorWidget.cs:23 msgid "Translation for '{0}' doesn't end with whitespace ' '." -msgstr "" +msgstr "Переклад для '{0}' не завершується пропуском ' '." #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/POEditorWidget.cs:23 msgid "Translation for '{0}' doesn't end with '.'." -msgstr "" +msgstr "Переклад для '{0}' не завершується '.'." #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/POEditorWidget.cs:23 msgid "Casing mismatch in '{0}'" @@ -13514,15 +13401,15 @@ msgstr "" #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/POEditorWidget.cs:23 msgid "Original string '{0}' contains '_', translation doesn't." -msgstr "" +msgstr "Оригінальний рядок '{0}' містить '_', а переклад - ні." #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/POEditorWidget.cs:23 msgid "Original string '{0}' doesn't contain '_', translation does." -msgstr "" +msgstr "Оригінальний рядок '{0}' не містить '_', а переклад - так." #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/POEditorWidget.cs:23 msgid "Original string '{0}' contains '{1}', translation doesn't." -msgstr "" +msgstr "Оригінальний рядок '{0}' містить '{1}', а переклад - ні." #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.Editor/POEditorWidget.cs:20 msgid "{0} Missing Message" @@ -13596,7 +13483,7 @@ msgstr "Пошук перекладів" #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext/PropertyProvider.cs:4 msgid "Include this file in the translation scan." -msgstr "" +msgstr "Включити цей файл у пошук для перекладу." #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext/PropertyProvider.cs:4 msgid "Gettext translation" @@ -13606,10 +13493,11 @@ msgstr "Переклад gettext" msgid "" "Select the languages you want to support (more languages can be added later):" msgstr "" +"Виберіть мови, які потрібно підтримувати (пізніше можна буде додати інші):" #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext/StringEscaping.cs:2 msgid "Invalid character '{0}' in translatable string: '{1}'" -msgstr "" +msgstr "Некоректний символ '{0}' у рядку для перекладу: '{1}'" #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext/StringEscaping.cs:2 msgid "Invalid escape sequence '{0}' in string: '{1}'" @@ -13645,7 +13533,7 @@ msgstr "_Пошук перекладів" #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.addin.xml:2 msgid "Include this file in the translations scan." -msgstr "" +msgstr "Включити цей файл у пошук для перекладу." #: ../src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.addin.xml:2 msgid "PO Files" @@ -13936,33 +13824,39 @@ msgstr "Класи символів" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "[character_group]" -msgstr "" +msgstr "[група_символів]" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "" "Positive character group.\n" "Matches any character in the specified character group." msgstr "" +"Позитивна група символів.\n" +"Відповідає будь-якому символу зі вказаної групи." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "[^character_group]" -msgstr "" +msgstr "[^група_символів]" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "" "Negative character group.\n" "Matches any character not in the specified character group." msgstr "" +"Негативна група символів.\n" +"Відповідає будь-якому символу, відсутньому у вказаній групі." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "[firstCharacter-lastCharacter]" -msgstr "" +msgstr "[першийСимвол-останнійСимвол]" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "" "Character range.\n" "Matches any character in a range of characters." msgstr "" +"Діапазон символів.\n" +"Відповідає будь-якому символу з діапазону." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "." @@ -14003,7 +13897,7 @@ msgstr "\\w" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "Matches any word character." -msgstr "" +msgstr "Відповідає будь-якому словесному символу." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "\\W" @@ -14011,7 +13905,7 @@ msgstr "\\W" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "Matches any nonword character." -msgstr "" +msgstr "Відповідає будь-якому несловесному символу." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "\\s" @@ -14058,6 +13952,8 @@ msgid "" "Specifies that the match must occur at the beginning of \n" "the string or the beginning of the line." msgstr "" +"Вказує, що відповідність повинна бути розташована \n" +"на початку тексту або рядка." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "$" @@ -14069,6 +13965,8 @@ msgid "" "string, before \\n at the end of the string, or at the \n" "end of the line." msgstr "" +"Вказує, що відповідність повинна бути розташована \n" +"в кінці тексту, перед \\n в кінці тексту або в кінці рядка." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "\\A" @@ -14079,6 +13977,8 @@ msgid "" "Specifies that the match must occur at the beginning of \n" "the string (ignores the Multiline option)." msgstr "" +"Вказує, що відповідність повинна бути розташована \n" +"на початку тексту (нехтується параметр Multiline)." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "\\Z" @@ -14090,6 +13990,9 @@ msgid "" "string or before \\n at the end of the string (ignores \n" "the Multiline option)." msgstr "" +"Вказує, що відповідність повинна бути розташована \n" +"в кінці тексту або перед \\n в кінці тексту (нехтується \n" +"параметр Multiline)." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "\\z" @@ -14100,6 +14003,8 @@ msgid "" "Specifies that the match must occur at the end of the \n" "string (ignores the Multiline option)." msgstr "" +"Вказує, що відповідність повинна бути розташована \n" +"в кінці тексту (нехтується параметр Multiline)." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "\\G" @@ -14211,6 +14116,8 @@ msgid "" "Specifies the first match that consumes as few repeats \n" "as possible (equivalent to lazy *)." msgstr "" +"Вказує на перший збіг, який використовує якомога менше \n" +"повторів (те саме, що лінива *)." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "+?" @@ -14221,6 +14128,8 @@ msgid "" "Specifies as few repeats as possible, but at least one \n" "(equivalent to lazy +)." msgstr "" +"Вказує на якомога менше повторів, але принаймні \n" +"один (те саме, що лінивий +)." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "??" @@ -14228,7 +14137,7 @@ msgstr "??" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "Specifies zero repeats if possible, or one (lazy ?)." -msgstr "" +msgstr "Вказує на відсутність повторів, якщо можливо, або один (лінивий ?)." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "{n}?" @@ -14236,7 +14145,7 @@ msgstr "{n}?" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "Equivalent to {n} (lazy {n})." -msgstr "" +msgstr "Те саме, що {n} (лінивий {n})." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "{n,}?" @@ -14247,6 +14156,8 @@ msgid "" "Specifies as few repeats as possible, \n" "but at least n (lazy {n,})." msgstr "" +"Вказує на якомога менше повторів, але принаймні \n" +"n (ліниве {n,})." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "{n,m}?" @@ -14257,6 +14168,8 @@ msgid "" "Specifies as few repeats as possible \n" "between n and m (lazy {n,m})." msgstr "" +"Вказує на якомога менше повторів \n" +"між n і m (ліниве {n,m})." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "Grouping Constructs" @@ -14413,20 +14326,24 @@ msgid "" "Matches any one of the terms separated by the | (vertical bar) character; \n" "for example, cat|dog|tiger. The leftmost successful match wins." msgstr "" +"Збіг з одним з термінів, відокремлених символом | (вертикальна лінія); \n" +"наприклад, кіт|собака|тигр. Перевага надається першому зліва збігу." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "(?(expression)yes|no)" -msgstr "" +msgstr "(?(вираз)так|ні)" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "" "Matches the 'yes' part if the expression matches at this point; otherwise, " "matches the 'no' part." msgstr "" +"Означає частину 'так', якщо вираз відповідає даній точні; інакше, " +"означає частину 'ні'." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "(?(name)yes|no)" -msgstr "" +msgstr "(?(назва)так|ні)" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "" @@ -14443,7 +14360,7 @@ msgstr "Різне" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "(?imnsx-imnsx)" -msgstr "" +msgstr "(?imnsx-imnsx)" #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "" @@ -14460,6 +14377,8 @@ msgid "" "Inline comment inserted within a regular expression. \n" "The comment terminates at the first closing parenthesis character." msgstr "" +"Лінійний коментар, вставлений у регулярний вираз. \n" +"Коментар завершується першою закритою дужкою." #: ../src/addins/MonoDevelop.RegexToolkit/RegexElements.xml:1 msgid "# [to end of line]" @@ -14470,6 +14389,8 @@ msgid "" "X-mode comment. The comment begins at an unescaped # and \n" "continues to the end of the line." msgstr "" +"Коментар режиму X. Починається символом # без риски і \n" +"продовжується до кінця рядка." #: ../src/addins/CBinding/CBinding.addin.xml:1 msgid "C++ Files" @@ -14631,7 +14552,7 @@ msgstr "Попередньо скомпільовані заголовки" #: ../src/addins/CBinding/Compiler/GNUCompiler.cs:7 msgid "Generating binary \"{0}\" from object files" -msgstr "" +msgstr "Створення двійкового \"{0}\" з об'єктних файлів" #: ../src/addins/CBinding/Compiler/GNUCompiler.cs:7 msgid "Generating static library {0} from object files" @@ -14651,7 +14572,7 @@ msgstr "попередження" #: ../src/addins/CBinding/Compiler/GNUCompiler.cs:14 msgid "note" -msgstr "" +msgstr "зауваження" #: ../src/addins/CBinding/Compiler/GNUCompiler.cs:17 msgid "Build failed - check build output for details" @@ -14696,7 +14617,7 @@ msgstr "Визначити символи:" #: ../src/addins/CBinding/gtk-gui/CBinding.CodeGenerationPanel.cs:2 msgid "Extra Linker Options" -msgstr "" +msgstr "Додаткові параметри редактора зв'язків" #: ../src/addins/CBinding/gtk-gui/CBinding.CodeGenerationPanel.cs:2 msgid "Extra Compiler Options" @@ -14729,7 +14650,7 @@ msgstr "Шляхи" #: ../src/addins/CBinding/gtk-gui/CBinding.CompilerPanel.cs:2 msgid "Use ccache" -msgstr "" +msgstr "Використовувати ccache" #: ../src/addins/CBinding/gtk-gui/CBinding.EditPackagesDialog.cs:2 msgid "Edit packages" @@ -14781,7 +14702,7 @@ msgstr "Стандартний компілятор C++:" #: ../src/addins/CBinding/gtk-gui/CBinding.GeneralOptionsPanel.cs:2 msgid "CTags: " -msgstr "" +msgstr "CTags: " #: ../src/addins/CBinding/gtk-gui/CBinding.GeneralOptionsPanel.cs:2 msgid "Parse Local Variables" @@ -14809,21 +14730,19 @@ msgstr "Бібліотеки:" #: ../src/addins/CBinding/gtk-gui/CBinding.PackageDetails.cs:2 msgid "CFlags:" -msgstr "" +msgstr "CFlags:" #: ../src/addins/CBinding/Parser/CDocumentParser.cs:3 msgid "(Global Scope)" -msgstr "" +msgstr "(Глобальна видимість)" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs:31 -#, fuzzy msgid "<b>Warning</b>: {0}" -msgstr "<b>Попередження розбору</b>: {0}" +msgstr "<b>Попередження</b>: {0}" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs:31 -#, fuzzy msgid "<b>Error</b>: {0}" -msgstr "<b>Помилка розбору</b>: {0}" +msgstr "<b>Помилка</b>: {0}" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/ExtensibleTextEditor.cs:37 msgid "_Input Methods" @@ -14841,7 +14760,7 @@ msgstr "Не вдалось зберегти файл" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:108 msgid "The file was marked as read only. Should the file be overwritten?" -msgstr "" +msgstr "Файл позначений, як доступний лише для читання. Перезаписати його?" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:108 msgid "Operation failed." @@ -14858,6 +14777,10 @@ msgid "" "Do you want to resave this file as Unicode ?\n" "You can choose another encoding in the 'save as' dialog." msgstr "" +"Деякі символи Юнікоду, що є у цьому файлі, неможливо зберегти у поточному " +"кодуванні.\n" +"Бажаєте зберегти цей файл в Юнікоді?\n" +"У діалозі \"Зберегти як\" ви можете вибрати й інше кодування." #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:108 msgid "Save as Unicode" @@ -14873,7 +14796,7 @@ msgstr "Трапився збій під час друку." #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:185 msgid "Press F2 to focus" -msgstr "" +msgstr "Натисніть 'F2' для фокусування" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs:185 msgid "Clipboard ring" @@ -15065,11 +14988,11 @@ msgstr "Дозволити _часткове приховування коду" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.GeneralOptionsPanel.cs:21 msgid "Fold #_regions by default" -msgstr "" +msgstr "Типово #_ділянки згорнуті" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.GeneralOptionsPanel.cs:21 msgid "Fold _comments by default" -msgstr "" +msgstr "Типово _коментарі згорнуті" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.GeneralOptionsPanel.cs:21 msgid "<b>Appearance</b>" @@ -15081,7 +15004,7 @@ msgstr "_Переносити по словах" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.GeneralOptionsPanel.cs:21 msgid "_Use anti aliasing" -msgstr "" +msgstr "_Застосувати згладжування" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs:20 msgid "<b>General</b>" @@ -15105,7 +15028,7 @@ msgstr "Під_свічувати поточний рядок" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs:20 msgid "Show _column ruler" -msgstr "" +msgstr "Показувати край колонки" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.MarkerPanel.cs:20 msgid "_Enable animations" @@ -15177,7 +15100,7 @@ msgstr "_Режим відступів:" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.BehaviorPanel.cs:27 msgid "Interpret tab _keystroke as reindent command" -msgstr "" +msgstr "При натисканні Tab виправляти відступи" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.BehaviorPanel.cs:27 msgid "<b>Navigation</b>" @@ -15200,7 +15123,6 @@ msgid "Page %N of %Q" msgstr "Сторінка %N з %Q" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.ColorShemeEditor.cs:35 -#, fuzzy msgid "Edit color sheme" msgstr "Редагувати колірну схему" @@ -15278,7 +15200,7 @@ msgstr "Включити у список завершення _ключові с #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionOptionsPanel.cs:19 msgid "Include _code snippets in completion list" -msgstr "" +msgstr "Включити у список завершення _сніппети коду" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionOptionsPanel.cs:19 msgid "_Show import items" @@ -15298,11 +15220,11 @@ msgstr "_Відкриту і закриту" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs:15 msgid "_Filter members by [EditorBrowsable] attribute" -msgstr "" +msgstr "_Фільтрувати члени за атрибутом [EditorBrowsable]" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs:15 msgid "_Show Normal members only" -msgstr "" +msgstr "Показати лише _звичайні члени" #: ../src/addins/MonoDevelop.SourceEditor2/gtk-gui/MonoDevelop.SourceEditor.OptionPanels.CompletionAppearancePanel.cs:15 msgid "<i>EditorBrowsableState.Always</i>" @@ -15351,11 +15273,11 @@ msgstr "Навігація у коді" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:8 msgid "Next Issue in File" -msgstr "" +msgstr "Наступна проблема у файлі" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:8 msgid "Previous Issue in File" -msgstr "" +msgstr "Попередня проблема у файлі" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:8 msgid "Next Error" @@ -15367,11 +15289,11 @@ msgstr "Попередня помилка" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:9 msgid "_Top" -msgstr "" +msgstr "В_горі" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:9 msgid "_Bottom" -msgstr "" +msgstr "В_низу" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:9 msgid "_Page Up" @@ -15398,14 +15320,12 @@ msgid "Behavior" msgstr "Поведінка" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:14 -#, fuzzy msgid "Code Completion" -msgstr "Перевірка коду" +msgstr "Завершення коду" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:14 -#, fuzzy msgid "Appearance" -msgstr "<b>Вигляд</b>" +msgstr "Вигляд" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:14 msgid "Syntax Highlighting" @@ -15413,7 +15333,7 @@ msgstr "Підсвічування синтаксису" #: ../src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor.addin.xml:15 msgid "Inspect" -msgstr "" +msgstr "Перевірка" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DisplayBinding.cs:2 #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserViewContent.cs:4 @@ -15430,9 +15350,8 @@ msgid "All members" msgstr "Всі члени" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:24 -#, fuzzy msgid "Types and Members" -msgstr "Пошук членів" +msgstr "Типи і члени" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:25 msgid "Members" @@ -15443,17 +15362,14 @@ msgid "IL" msgstr "IL" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:36 -#, fuzzy msgid "Search for types and members" -msgstr "Пошук типів або членів" +msgstr "Пошук типів і членів" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:36 -#, fuzzy msgid "Search for types" -msgstr "Пошук тексту" +msgstr "Пошук типів" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:36 -#, fuzzy msgid "Search for members" msgstr "Пошук членів" @@ -15467,12 +15383,11 @@ msgstr "Член" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:57 msgid "Declaring Type" -msgstr "" +msgstr "Оголошення типу" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:57 -#, fuzzy msgid "Results" -msgstr "Результат" +msgstr "Результати" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:58 #, fuzzy @@ -15496,9 +15411,8 @@ msgid "Searching type..." msgstr "Тип пошуку..." #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:63 -#, fuzzy msgid "Searching types and members..." -msgstr "Пошук члена.." +msgstr "Пошук типів і членів..." #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/AssemblyBrowserWidget.cs:67 #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/DocumentationPanel.cs:3 @@ -15507,7 +15421,7 @@ msgstr "Документація відсутня." #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomMethodNodeBuilder.cs:5 msgid "<b>Declaring Type:</b>\t{0}" -msgstr "" +msgstr "<b>Оголошення типу:</b>\t{0}" #: ../src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/DomTypeNodeBuilder.cs:4 msgid "<b>Assembly:</b>\t{0}, Version={1}" @@ -15580,7 +15494,7 @@ msgstr "Відносний шлях цілі" #: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Gui/PropertyProvider.cs:3 msgid "Has path references" -msgstr "" +msgstr "Має посилання на шлях" #: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Gui/PropertyProvider.cs:3 msgid "Use project relative path" @@ -15603,6 +15517,9 @@ msgid "" "Set to 'true' if the text file contains unresolved references to paths (e.g. " "@ProgramFiles@)" msgstr "" +"Встановіть 'true', якщо текстовий файл містить нерозібрані посилання на шляхи " +"(наприклад, " +"@ProgramFiles@)" #: ../src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.Gui/PropertyProvider.cs:3 msgid "" @@ -16556,7 +16473,7 @@ msgstr "тека застосунку в .desktop" #: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/app.desktop.xft.xml:0 msgid "Desktop Application Launcher" -msgstr "" +msgstr "Запуск стільничної програми" #: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/app.desktop.xft.xml:0 msgid "Creates a Desktop Entry file." @@ -16577,7 +16494,7 @@ msgstr "<Стандарт>" #: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DotDesktopDisplayBinding.cs:3 #: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/DotDesktopView.cs:2 msgid "Desktop Entry" -msgstr "" +msgstr "Елемент робочого столу" #: ../src/addins/Deployment/MonoDevelop.Deployment.Linux/MonoDevelop.Deployment.Linux/MenuCategorySelectorDialog.cs:2 msgid "Additional categories" @@ -16696,9 +16613,8 @@ msgid "Select the categories you want to assign to the desktop entry:" msgstr "Виберіть категорії, які будуть пов'язані з цим елементом:" #: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:48 -#, fuzzy msgid "Xml Editor" -msgstr "Шістнадцятковий редактор" +msgstr "Редактор Xml" #: ../src/addins/Xml/Properties/MonoDevelop.XmlEditor.addin.xml:50 msgid "Create _Schema" @@ -16770,7 +16686,7 @@ msgstr "" #: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2 msgid "Wrap attributes" -msgstr "" +msgstr "Переносити атрибути" #: ../src/addins/Xml/Formatting/XmlFormattingPolicy.cs:2 msgid "Align attributes" @@ -16815,6 +16731,7 @@ msgstr "Документ" #: ../src/addins/Xml/Formatting/XmlFormattingPolicyPanelWidget.cs:7 msgid "Enter one or several xpath expressions to which this format applies:" msgstr "" +"Введіть один або декілька виразів xpath, до яких застосовується цей формат:" #: ../src/addins/Xml/Formatting/XmlFormattingPolicyPanelWidget.cs:10 msgid "Advanced Settings" @@ -16826,7 +16743,7 @@ msgstr "Формат #{0}" #: ../src/addins/Xml/Formatting/XmlFormattingPolicyPanelWidget.cs:20 msgid "XPath scope:" -msgstr "" +msgstr "Видимість XPath:" #: ../src/addins/Xml/Editor/XmlTextEditorExtension.cs:185 msgid "Creating schema..." @@ -16925,9 +16842,8 @@ msgid "Show schema annotation" msgstr "Показати анотацію схеми" #: ../src/addins/Xml/Editor/XmlSchemasPanel.cs:49 -#, fuzzy msgid "Schema changes could not be saved" -msgstr "Не вдалось зберегти файл." +msgstr "Не вдалось зберегти зміни схеми." #: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:4 msgid "Built in" @@ -16946,18 +16862,16 @@ msgid "Prefix" msgstr "Префікс" #: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:9 -#, fuzzy msgid "<b>Registered Schema</b>" -msgstr "<b>Зареєстровані схеми</b>" +msgstr "<b>Зареєстрована схема</b>" #: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:11 msgid "<b>Default File Associations</b>" msgstr "<b>Стандартні відповідності файлів</b>" #: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:19 -#, fuzzy msgid "Schema '{0}' could not be loaded." -msgstr "Не вдалось завантажити файл {0}." +msgstr "Не вдалось завантажити схему {0}." #: ../src/addins/Xml/Editor/XmlSchemasPanelWidget.cs:21 msgid "Schema '{0}' has no target namespace." @@ -17049,9 +16963,8 @@ msgid "Show results pad" msgstr "Показати панель результатів" #: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14 -#, fuzzy msgid "Rerun test" -msgstr "Запустити тест" +msgstr "Перезапустити тест" #: ../src/addins/NUnit/MonoDevelopNUnit.addin.xml:14 msgid "Proportional time scale" @@ -17100,9 +17013,8 @@ msgid "Creates an NUnit library" msgstr "Створити бібліотеку тестів NUnit." #: ../src/addins/NUnit/Gui/TestPad.cs:5 -#, fuzzy msgid "Run All" -msgstr "_Перебудувати все" +msgstr "Запустити всі" #: ../src/addins/NUnit/Gui/TestPad.cs:5 msgid "Run all tests" @@ -17186,6 +17098,9 @@ msgid "" "<b>Inconclusive</b>: {3} <b>Invalid</b>: {4} <b>Ignored</b>: {5} " "<b>Skipped</b>: {6} <b>Time</b>: {7}" msgstr "" +"<b>Успішно</b>: {0} <b>Невдало</b>: {1} <b>Помилок</b>: {2} " +"<b>Непереконливо</b>: {3} <b>Невірно</b>: {4} <b>Знехтувано</b>: {5} " +"<b>Пропущено</b>: {6} <b>Час</b>: {7}" #: ../src/addins/NUnit/Gui/TestResultsPad.cs:16 msgid "Running tests for <b>{0}</b> configuration <b>{1}</b>" @@ -17255,9 +17170,8 @@ msgstr "" #: ../src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs:38 #: ../src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs:40 -#, fuzzy msgid "Unhandled exception" -msgstr "Прибрати _відступи" +msgstr "Необроблений виняток" #: ../src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs:38 msgid "Canceled" @@ -17334,21 +17248,18 @@ msgstr "Приховати подробиці" #: ../src/addins/MacPlatform/MacProxyCredentialProvider.cs:15 #: ../src/addins/WindowsPlatform/WindowsPlatform/WindowsProxyCredentialProvider.cs:116 -#, fuzzy msgid "{0} needs credentials to access the proxy server {1}." -msgstr "{1} вимагає {2} реєстраційні дані для доступу {0}." +msgstr "{0} вимагає реєстраційні дані для доступу до проксі-сервера {1}." #: ../src/addins/MacPlatform/MacProxyCredentialProvider.cs:15 #: ../src/addins/WindowsPlatform/WindowsPlatform/WindowsProxyCredentialProvider.cs:121 -#, fuzzy msgid "{0} needs credentials to access {1}." -msgstr "{1} вимагає {2} реєстраційні дані для доступу {0}." +msgstr "{0} вимагає реєстраційні дані для доступу {1}." #: ../src/addins/MacPlatform/MacProxyCredentialProvider.cs:16 #: ../src/addins/WindowsPlatform/WindowsPlatform/WindowsProxyCredentialProvider.cs:129 -#, fuzzy msgid "Credentials Required" -msgstr "Реєстраційні дані" +msgstr "Потрібні реєстраційні дані" #: ../src/addins/MacPlatform/MacPlatform.addin.xml:1 msgid "_Minimize" @@ -17371,19 +17282,16 @@ msgid "_Hide Others" msgstr "Прихо_вати інші" #: ../src/addins/MacPlatform/MacPlatform.addin.xml:1 -#, fuzzy msgid "Hide other applications' windows" -msgstr "Приховати інші вікна" +msgstr "Приховати вікна інших застосунків" #: ../src/addins/MacPlatform/MacPlatform.addin.xml:1 -#, fuzzy msgid "Show All" -msgstr "Показати всі файли" +msgstr "Показувати всі" #: ../src/addins/MacPlatform/MacPlatform.addin.xml:1 -#, fuzzy msgid "Show all applications' windows" -msgstr "Показати вікно параметрів" +msgstr "Показати вікна всіх застосунків" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/Gui/AnalysisOptionsPanel.cs:3 msgid "Enable source analysis of open files" @@ -17436,19 +17344,16 @@ msgid "Rename Interface" msgstr "Перейменувати інтерфейс" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs:9 -#, fuzzy msgid "Rename Delegate" -msgstr "Створити делегат" +msgstr "Перейменувати делегат" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs:9 -#, fuzzy msgid "Rename Enum" -msgstr "Перейменувати подію" +msgstr "Перейменувати перелік" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs:9 -#, fuzzy msgid "Rename Struct" -msgstr "Перейменувати групу" +msgstr "Перейменувати структуру" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs:9 msgid "Rename Class" @@ -17479,14 +17384,12 @@ msgid "Rename Variable" msgstr "Перейменувати змінну" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs:9 -#, fuzzy msgid "Rename Namespace" msgstr "Перейменувати простір назв" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs:9 -#, fuzzy msgid "Rename Label" -msgstr "Перейменувати поле" +msgstr "Перейменувати напис" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.Rename/RenameItemDialog.cs:9 msgid "Rename Item" @@ -17534,7 +17437,7 @@ msgstr "Попередження" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeIssuePanelWidget.cs:8 msgid "Info" -msgstr "" +msgstr "Інформація" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:5 msgid "_Find References" @@ -17545,9 +17448,8 @@ msgid "_Find References of All Overloads" msgstr "_Знайти посилання всіх перевантажень" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:5 -#, fuzzy msgid "Find _Derived Symbols" -msgstr "Знайти класи-_нащадки" +msgstr "Знайти _символи-нащадки" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:5 msgid "Refactoring" @@ -17562,14 +17464,12 @@ msgid "Import Symbol..." msgstr "Імпортувати символ..." #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:7 -#, fuzzy msgid "Export C# Code Rules to a File" -msgstr "Експортувати політики до файлу" +msgstr "Експортувати правила коду C# до файлу" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:7 -#, fuzzy msgid "Generates an HTML file that contains a list of all code rules" -msgstr "Перейменувати файл, що містить загальнодоступний клас" +msgstr "Створити файл HTML, що містить перелік всіх правил коду" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:8 msgid "Show Fixes" @@ -17577,21 +17477,19 @@ msgstr "Показати виправлення" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:8 msgid "Shows a list of fixes for problems at the current location" -msgstr "" +msgstr "Показує список виправлень проблем у поточному розташуванні" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:8 msgid "Source Analysis" msgstr "Аналіз коду" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:8 -#, fuzzy msgid "Code Rules" -msgstr "Шаблони коду" +msgstr "Правила коду" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:8 -#, fuzzy msgid "Code Actions" -msgstr "Перевірка коду" +msgstr "Дії коду" #: ../src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml:8 msgid "Design Guidelines" @@ -17652,7 +17550,7 @@ msgstr "Контролер..." #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:195 msgid "Add an ASP.NET MVC controller" -msgstr "" +msgstr "Додати контролер ASP.NET MVC" #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:197 msgid "View..." @@ -17660,15 +17558,15 @@ msgstr "Перегляд..." #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:198 msgid "Add an ASP.NET MVC view" -msgstr "" +msgstr "Додати представлення ASP.NET MVC" #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:204 msgid "Go To View" -msgstr "" +msgstr "Перейти до представлення" #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:208 msgid "Add View..." -msgstr "Додати перегляд..." +msgstr "Додати представлення..." #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:212 msgid "Go To Controller" @@ -17684,7 +17582,7 @@ msgstr "Користувацький компонент ASP.NET." #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:245 msgid "ASP.NET global application class" -msgstr "" +msgstr "Глобальний програмний клас ASP.NET" #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:248 msgid "ASP.NET handler" @@ -17720,456 +17618,456 @@ msgstr "Документ HTML" #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:272 msgid "Spark View template" -msgstr "" +msgstr "Шаблон представлення Spark" #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:276 msgid "Typescript source code" msgstr "" #: ../src/addins/AspNet/Properties/MonoDevelop.AspNet.addin.xml:279 -#, fuzzy msgid "Razor template" -msgstr "Видалити шаблон" +msgstr "Шаблон Razor" #: ../src/addins/AspNet/Razor/EditorParserFixed/CommonResources.Designer.cs:3 msgid "Argument_Cannot_Be_Null_Or_Empty" -msgstr "" +msgstr "Argument_Cannot_Be_Null_Or_Empty" #: ../src/addins/AspNet/Razor/EditorParserFixed/CommonResources.Designer.cs:3 msgid "Argument_Must_Be_Between" -msgstr "" +msgstr "Argument_Must_Be_Between" #: ../src/addins/AspNet/Razor/EditorParserFixed/CommonResources.Designer.cs:3 msgid "Argument_Must_Be_Enum_Member" -msgstr "" +msgstr "Argument_Must_Be_Enum_Member" #: ../src/addins/AspNet/Razor/EditorParserFixed/CommonResources.Designer.cs:3 msgid "Argument_Must_Be_GreaterThan" -msgstr "" +msgstr "Argument_Must_Be_GreaterThan" #: ../src/addins/AspNet/Razor/EditorParserFixed/CommonResources.Designer.cs:3 msgid "Argument_Must_Be_GreaterThanOrEqualTo" -msgstr "" +msgstr "Argument_Must_Be_GreaterThanOrEqualTo" #: ../src/addins/AspNet/Razor/EditorParserFixed/CommonResources.Designer.cs:3 msgid "Argument_Must_Be_LessThan" -msgstr "" +msgstr "Argument_Must_Be_LessThan" #: ../src/addins/AspNet/Razor/EditorParserFixed/CommonResources.Designer.cs:3 msgid "Argument_Must_Be_LessThanOrEqualTo" -msgstr "" +msgstr "Argument_Must_Be_LessThanOrEqualTo" #: ../src/addins/AspNet/Razor/EditorParserFixed/CommonResources.Designer.cs:3 msgid "Argument_Must_Be_Null_Or_Non_Empty" -msgstr "" +msgstr "Argument_Must_Be_Null_Or_Non_Empty" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ActiveParser_Must_Be_Code_Or_Markup_Parser" -msgstr "" +msgstr "ActiveParser_Must_Be_Code_Or_Markup_Parser" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Block_Type_Not_Specified" -msgstr "" +msgstr "Block_Type_Not_Specified" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "BlockName_Code" -msgstr "" +msgstr "BlockName_Code" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "BlockName_ExplicitExpression" -msgstr "" +msgstr "BlockName_ExplicitExpression" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CancelBacktrack_Must_Be_Called_Within_Lookahead" -msgstr "" +msgstr "CancelBacktrack_Must_Be_Called_Within_Lookahead" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CreateCodeWriter_NoCodeWriter" -msgstr "" +msgstr "CreateCodeWriter_NoCodeWriter" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CSharpSymbol_CharacterLiteral" -msgstr "" +msgstr "CSharpSymbol_CharacterLiteral" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CSharpSymbol_Comment" -msgstr "" +msgstr "CSharpSymbol_Comment" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CSharpSymbol_Identifier" -msgstr "" +msgstr "CSharpSymbol_Identifier" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CSharpSymbol_IntegerLiteral" -msgstr "" +msgstr "CSharpSymbol_IntegerLiteral" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CSharpSymbol_Keyword" -msgstr "" +msgstr "CSharpSymbol_Keyword" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CSharpSymbol_Newline" -msgstr "" +msgstr "CSharpSymbol_Newline" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CSharpSymbol_RealLiteral" -msgstr "" +msgstr "CSharpSymbol_RealLiteral" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CSharpSymbol_StringLiteral" -msgstr "" +msgstr "CSharpSymbol_StringLiteral" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "CSharpSymbol_Whitespace" -msgstr "" +msgstr "CSharpSymbol_Whitespace" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "EndBlock_Called_Without_Matching_StartBlock" -msgstr "" +msgstr "EndBlock_Called_Without_Matching_StartBlock" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ErrorComponent_Character" -msgstr "" +msgstr "ErrorComponent_Character" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ErrorComponent_EndOfFile" -msgstr "" +msgstr "ErrorComponent_EndOfFile" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ErrorComponent_Newline" -msgstr "" +msgstr "ErrorComponent_Newline" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ErrorComponent_Whitespace" -msgstr "" +msgstr "ErrorComponent_Whitespace" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "HtmlSymbol_NewLine" -msgstr "" +msgstr "HtmlSymbol_NewLine" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "HtmlSymbol_RazorComment" -msgstr "" +msgstr "HtmlSymbol_RazorComment" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "HtmlSymbol_Text" -msgstr "" +msgstr "HtmlSymbol_Text" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "HtmlSymbol_WhiteSpace" -msgstr "" +msgstr "HtmlSymbol_WhiteSpace" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Language_Does_Not_Support_RazorComment" -msgstr "" +msgstr "Language_Does_Not_Support_RazorComment" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start" msgstr "" +"ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_BlockComment_Not_Terminated" -msgstr "ПомилкаРозбору_КоментарБлоку_Не_Закритий" +msgstr "ParseError_BlockComment_Not_Terminated" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_BlockNotTerminated" -msgstr "ПомилкаРозбору_БлокНеЗакритий" +msgstr "ParseError_BlockNotTerminated" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Expected_CloseBracket_Before_EOF" -msgstr "ПомилкаРозбору_Очікується_ЗакритаДужка_Перед_EOF" +msgstr "ParseError_Expected_CloseBracket_Before_EOF" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Expected_EndOfBlock_Before_EOF" -msgstr "ПомилкаРозбору_Очікується_КінецьБлоку_Перед_EOF" +msgstr "ParseError_Expected_EndOfBlock_Before_EOF" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Expected_X" -msgstr "ПомилкаРозбору_Очікується_X" +msgstr "ParseError_Expected_X" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Helpers_Cannot_Be_Nested" -msgstr "" +msgstr "ParseError_Helpers_Cannot_Be_Nested" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_InheritsKeyword_Must_Be_Followed_By_TypeName" -msgstr "ПомилкаРозбору_Після_КлючовогоСловаInherits_Потрібна_НазваТипу" +msgstr "ParseError_InheritsKeyword_Must_Be_Followed_By_TypeName" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_InlineMarkup_Blocks_Cannot_Be_Nested" -msgstr "" +msgstr "ParseError_InlineMarkup_Blocks_Cannot_Be_Nested" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_InvalidOptionValue" -msgstr "ПомилкаРозбору_НеправильнеЗначенняПараметра" +msgstr "ParseError_InvalidOptionValue" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_MarkupBlock_Must_Start_With_Tag" -msgstr "ПомилкаРозбору_БлокРозмітки_Має_Починатися_Тегом" +msgstr "ParseError_MarkupBlock_Must_Start_With_Tag" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_MissingCharAfterHelperName" -msgstr "" +msgstr "ParseError_MissingCharAfterHelperName" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_MissingCharAfterHelperParameters" -msgstr "" +msgstr "ParseError_MissingCharAfterHelperParameters" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_MissingEndTag" -msgstr "ПомилкаРозбору_ВідсутнійКінцевийТег" +msgstr "ParseError_MissingEndTag" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_MissingOpenBraceAfterSection" -msgstr "" +msgstr "ParseError_MissingOpenBraceAfterSection" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock" -msgstr "" +msgstr "ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_NamespaceOrTypeAliasExpected" -msgstr "" +msgstr "ParseError_NamespaceOrTypeAliasExpected" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_OuterTagMissingName" -msgstr "" +msgstr "ParseError_OuterTagMissingName" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_RazorComment_Not_Terminated" -msgstr "" +msgstr "ParseError_RazorComment_Not_Terminated" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_ReservedWord" -msgstr "ПомилкаРозбору_ЗарезервованеСлово" +msgstr "ParseError_ReservedWord" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Sections_Cannot_Be_Nested" -msgstr "ПомилкаРозбору_НеМожуть_Бути_Вкладеними" +msgstr "ParseError_Sections_Cannot_Be_Nested" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_SingleLine_ControlFlowStatements_Not_Allowed" -msgstr "" +msgstr "ParseError_SingleLine_ControlFlowStatements_Not_Allowed" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_TextTagCannotContainAttributes" -msgstr "" +msgstr "ParseError_TextTagCannotContainAttributes" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected" -msgstr "ПомилкаРозбору_Неочікувана" +msgstr "ParseError_Unexpected" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected_Character_At_Helper_Name_Start" -msgstr "" +msgstr "ParseError_Unexpected_Character_At_Helper_Name_Start" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected_Character_At_Section_Name_Start" -msgstr "" +msgstr "ParseError_Unexpected_Character_At_Section_Name_Start" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS" -msgstr "" +msgstr "ParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected_Character_At_Start_Of_CodeBlock_VB" -msgstr "" +msgstr "ParseError_Unexpected_Character_At_Start_Of_CodeBlock_VB" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock" -msgstr "" +msgstr "ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected_Keyword_After_At" -msgstr "ПомилкаРозбору_Неочікуване_КлючовеСлово_Після_At" +msgstr "ParseError_Unexpected_Keyword_After_At" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected_Nested_CodeBlock" -msgstr "" +msgstr "ParseError_Unexpected_Nested_CodeBlock" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS" -msgstr "" +msgstr "ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_VB" -msgstr "" +msgstr "ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_VB" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_UnexpectedEndTag" -msgstr "ПомилкаРозбору_НеочікуванийКінцевийТег" +msgstr "ParseError_UnexpectedEndTag" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_UnfinishedTag" -msgstr "ПомилкаРозбору_НезавершенийТег" +msgstr "ParseError_UnfinishedTag" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_UnknownOption" -msgstr "ПомилкаРозбору_НевідомийПараметр" +msgstr "ParseError_UnknownOption" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_Unterminated_String_Literal" -msgstr "ПомилкаРозбору_НезакритийРядковийЛітерал" +msgstr "ParseError_Unterminated_String_Literal" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParseError_UnterminatedHelperParameterList" -msgstr "" +msgstr "ParseError_UnterminatedHelperParameterList" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Parser_Context_Not_Set" -msgstr "" +msgstr "Parser_Context_Not_Set" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParserContext_CannotCompleteTree_NoRootBlock" -msgstr "" +msgstr "ParserContext_CannotCompleteTree_NoRootBlock" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParserContext_CannotCompleteTree_OutstandingBlocks" -msgstr "" +msgstr "ParserContext_CannotCompleteTree_OutstandingBlocks" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParserContext_NoCurrentBlock" -msgstr "" +msgstr "ParserContext_NoCurrentBlock" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParserContext_ParseComplete" -msgstr "" +msgstr "ParserContext_ParseComplete" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParserEror_SessionDirectiveMissingValue" -msgstr "" +msgstr "ParserEror_SessionDirectiveMissingValue" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "ParserIsNotAMarkupParser" -msgstr "" +msgstr "ParserIsNotAMarkupParser" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "SectionExample_CS" -msgstr "" +msgstr "SectionExample_CS" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "SectionExample_VB" -msgstr "" +msgstr "SectionExample_VB" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Structure_Member_CannotBeNull" -msgstr "" +msgstr "Structure_Member_CannotBeNull" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Symbol_Unknown" -msgstr "" +msgstr "Symbol_Unknown" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Tokenizer_CannotResumeSymbolUnlessIsPrevious" -msgstr "" +msgstr "Tokenizer_CannotResumeSymbolUnlessIsPrevious" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "TokenizerView_CannotPutBack" -msgstr "" +msgstr "TokenizerView_CannotPutBack" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_BackgroundThreadShutdown" -msgstr "" +msgstr "Trace_BackgroundThreadShutdown" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_BackgroundThreadStart" -msgstr "" +msgstr "Trace_BackgroundThreadStart" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_ChangesArrived" -msgstr "" +msgstr "Trace_ChangesArrived" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_ChangesDiscarded" -msgstr "" +msgstr "Trace_ChangesDiscarded" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_CollectedDiscardedChanges" -msgstr "" +msgstr "Trace_CollectedDiscardedChanges" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_Disabled" -msgstr "" +msgstr "Trace_Disabled" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_EditorProcessedChange" -msgstr "" +msgstr "Trace_EditorProcessedChange" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_EditorReceivedChange" -msgstr "" +msgstr "Trace_EditorReceivedChange" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_Enabled" -msgstr "" +msgstr "Trace_Enabled" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_Format" -msgstr "" +msgstr "Trace_Format" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_NoChangesArrived" -msgstr "" +msgstr "Trace_NoChangesArrived" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_ParseComplete" -msgstr "" +msgstr "Trace_ParseComplete" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_QueuingParse" -msgstr "" +msgstr "Trace_QueuingParse" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_Startup" -msgstr "" +msgstr "Trace_Startup" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "Trace_TreesCompared" -msgstr "" +msgstr "Trace_TreesCompared" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_CharacterLiteral" -msgstr "" +msgstr "VBSymbol_CharacterLiteral" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_Comment" -msgstr "" +msgstr "VBSymbol_Comment" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_DateLiteral" -msgstr "" +msgstr "VBSymbol_DateLiteral" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_FloatingPointLiteral" -msgstr "" +msgstr "VBSymbol_FloatingPointLiteral" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_Identifier" -msgstr "" +msgstr "VBSymbol_Identifier" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_IntegerLiteral" -msgstr "" +msgstr "VBSymbol_IntegerLiteral" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_Keyword" -msgstr "" +msgstr "VBSymbol_Keyword" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_NewLine" -msgstr "" +msgstr "VBSymbol_NewLine" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_RazorComment" -msgstr "" +msgstr "VBSymbol_RazorComment" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_StringLiteral" -msgstr "" +msgstr "VBSymbol_StringLiteral" #: ../src/addins/AspNet/Razor/EditorParserFixed/RazorResources.Designer.cs:1 msgid "VBSymbol_WhiteSpace" -msgstr "" +msgstr "VBSymbol_WhiteSpace" #: ../src/addins/AspNet/WebForms/MasterContentFileDescriptionTemplate.cs:2 #: ../src/addins/AspNet/Commands/AddViewDialog.cs:119 @@ -18227,7 +18125,7 @@ msgstr "Потрібен клієнтський сертифікат" #: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:4 msgid "Ask" -msgstr "" +msgstr "Запитати" #: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:4 msgid "Store (insecure)" @@ -18242,9 +18140,8 @@ msgid "(blank = localhost)" msgstr "" #: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:7 -#, fuzzy msgid "(0 = random)" -msgstr "0 = випадковий порт" +msgstr "(0 = випадково)" #: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:7 msgid "Verbose console output" @@ -18259,9 +18156,8 @@ msgid "SSL protocol:" msgstr "Протокол SSL:" #: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:12 -#, fuzzy msgid "SSL Key" -msgstr "<b>Ключ SSL</b>" +msgstr "Ключ SSL" #: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:13 msgid "Key type:" @@ -18273,9 +18169,8 @@ msgid "Key file:" msgstr "Файли jay" #: ../src/addins/AspNet/Execution/XspOptionsPanelWidget.cs:13 -#, fuzzy msgid "Certificate file:" -msgstr "Розташування сертифіката:" +msgstr "Файл сертифіката:" #: ../src/addins/AspNet/Html/HtmlPathCompletion.cs:3 msgid "Choose file..." @@ -18287,7 +18182,7 @@ msgstr "Виберіть файл з проекту." #: ../src/addins/AspNet/WebForms/WebFormsEditorExtension.cs:18 msgid "Updating ASP.NET Designer File..." -msgstr "" +msgstr "Оновлення файлу ASP.NET Designer..." #: ../src/addins/AspNet/WebForms/WebFormsEditorExtension.cs:30 msgid "Required for ASP.NET controls.\n" @@ -18303,7 +18198,7 @@ msgstr "" #: ../src/addins/AspNet/WebForms/WebFormsEditorExtension.cs:30 msgid "Unique identifier.\n" -msgstr "" +msgstr "Унікальний ідентифікатор.\n" #: ../src/addins/AspNet/WebForms/WebFormsEditorExtension.cs:30 msgid "" @@ -18362,24 +18257,22 @@ msgid "_Template:" msgstr "_Шаблон:" #: ../src/addins/AspNet/Commands/AddViewDialog.cs:31 -#, fuzzy msgid "_Name" msgstr "_Назва:" #: ../src/addins/AspNet/Commands/AddViewDialog.cs:31 msgid "_View Engine:" -msgstr "" +msgstr "Рушій _представлень:" #: ../src/addins/AspNet/Commands/AddViewDialog.cs:36 msgid "_Partial view" -msgstr "" +msgstr "_Часткове представлення" #: ../src/addins/AspNet/Commands/AddViewDialog.cs:36 msgid "_Strongly typed" msgstr "_Жорстко типізований" #: ../src/addins/AspNet/Commands/AddViewDialog.cs:36 -#, fuzzy msgid "Has _master page or layout" msgstr "Має _головну сторінку або конфігурацію:" @@ -18392,9 +18285,8 @@ msgid "_File:" msgstr "_Файл:" #: ../src/addins/AspNet/Commands/AddViewDialog.cs:41 -#, fuzzy msgid "P_rimary placeholder:" -msgstr "Основний заповнювач: " +msgstr "_Основний заповнювач: " #: ../src/addins/AspNet/Commands/AddViewDialog.cs:116 msgid "Select a Layout file..." @@ -18443,9 +18335,8 @@ msgid "" msgstr "" #: ../src/addins/AspNet/gtk-gui/MonoDevelop.AspNet.Projects.GtkAspNetProjectTemplateWizardPageWidget.cs:283 -#, fuzzy msgid "Testing:" -msgstr "Модульне тестування" +msgstr "Тестування:" #: ../src/addins/AspNet/gtk-gui/MonoDevelop.AspNet.Projects.GtkAspNetProjectTemplateWizardPageWidget.cs:316 msgid "Web API" @@ -18458,9 +18349,8 @@ msgid "" msgstr "" #: ../src/addins/AspNet/gtk-gui/MonoDevelop.AspNet.Projects.GtkAspNetProjectTemplateWizardPageWidget.cs:371 -#, fuzzy msgid "Web Forms" -msgstr "Веб-форма" +msgstr "Веб-форми" #: ../src/addins/AspNet/gtk-gui/MonoDevelop.AspNet.Projects.GtkAspNetProjectTemplateWizardPageWidget.cs:397 msgid "" @@ -18496,11 +18386,11 @@ msgstr "" #: ../src/addins/AspNet/Razor/Razor-templates.xml:27 #: ../src/addins/AspNet/Razor/Razor-templates.xml:28 msgid "Razor" -msgstr "" +msgstr "Razor" #: ../src/addins/AspNet/Razor/Razor-templates.xml:1 msgid "Template for inherits directive" -msgstr "" +msgstr "Шаблон директиви inherits" #: ../src/addins/AspNet/Razor/Razor-templates.xml:1 msgid "Base class" @@ -18508,7 +18398,7 @@ msgstr "Базовий клас" #: ../src/addins/AspNet/Razor/Razor-templates.xml:2 msgid "Template for model directive" -msgstr "" +msgstr "Шаблон директиви model" #: ../src/addins/AspNet/Razor/Razor-templates.xml:2 msgid "Strongly typed model" @@ -18524,7 +18414,7 @@ msgstr "Використовуваний ресурс" #: ../src/addins/AspNet/Razor/Razor-templates.xml:4 msgid "Template for section directive" -msgstr "" +msgstr "Шаблон директиви section" #: ../src/addins/AspNet/Razor/Razor-templates.xml:4 msgid "Section's name" @@ -18532,19 +18422,19 @@ msgstr "Назва розділу" #: ../src/addins/AspNet/Razor/Razor-templates.xml:5 msgid "Template for helper directive" -msgstr "" +msgstr "Шаблон директиви помічника" #: ../src/addins/AspNet/Razor/Razor-templates.xml:5 msgid "Helper's name" -msgstr "" +msgstr "Назва помічника" #: ../src/addins/AspNet/Razor/Razor-templates.xml:5 msgid "Helper's arguments" -msgstr "" +msgstr "Аргументи помічника" #: ../src/addins/AspNet/Razor/Razor-templates.xml:6 msgid "Template for functions directive" -msgstr "" +msgstr "Шаблон директиви функції" #: ../src/addins/AspNet/Templates/Mvc/Controller.xft.xml:1 msgid "ASP.NET MVC Controller" @@ -18576,15 +18466,15 @@ msgstr "Створити сторінку макету MVC Razor." #: ../src/addins/AspNet/Templates/Mvc/PartialViewPageRazor.xft.xml:1 msgid "ASP.NET MVC Partial View Page (Razor)" -msgstr "" +msgstr "Сторінка часткового представлення ASP.NET MVC Partial (Razor)" #: ../src/addins/AspNet/Templates/Mvc/PartialViewPageRazor.xft.xml:1 msgid "Creates an MVC Razor Partial View page." -msgstr "" +msgstr "Створити сторінку часткового представлення MVC Razor." #: ../src/addins/AspNet/Templates/Mvc/UserControl.xft.xml:1 msgid "ASP.NET MVC View User Control" -msgstr "" +msgstr "Елемент керування представлення ASP.NET MVC" #: ../src/addins/AspNet/Templates/Mvc/UserControl.xft.xml:1 msgid "Creates an ASP.NET MVC User Control." @@ -18592,11 +18482,11 @@ msgstr "Створити користувацький компонент ASP.NET #: ../src/addins/AspNet/Templates/Mvc/ViewContentPage.xft.xml:1 msgid "ASP.NET MVC View Content" -msgstr "Перегляд вмісту ASP.NET MVC" +msgstr "Вмісту представлення ASP.NET MVC" #: ../src/addins/AspNet/Templates/Mvc/ViewContentPage.xft.xml:1 msgid "Creates an ASP.NET MVC View Content page." -msgstr "Створити сторінку перегляду вмісту ASP.NET MVC." +msgstr "Створити сторінку вмісту представлення ASP.NET MVC." #: ../src/addins/AspNet/Templates/Mvc/ViewMasterPage.xft.xml:1 msgid "ASP.NET MVC Master Page" @@ -18608,38 +18498,35 @@ msgstr "Створити головну сторінку ASP.NET MVC." #: ../src/addins/AspNet/Templates/Mvc/ViewPage.xft.xml:1 msgid "ASP.NET MVC View Page" -msgstr "Сторінка перегляду ASP.NET MVC" +msgstr "Сторінка представлення ASP.NET MVC" #: ../src/addins/AspNet/Templates/Mvc/ViewPage.xft.xml:1 msgid "Creates an MVC View page." -msgstr "Створити сторінку перегляду MVC." +msgstr "Створити сторінку представлення MVC." #: ../src/addins/AspNet/Templates/Mvc/ViewPageRazor.xft.xml:1 msgid "ASP.NET MVC View Page (Razor)" -msgstr "Сторінка перегляду ASP.NET MVC (Razor)" +msgstr "Сторінка представлення ASP.NET MVC (Razor)" #: ../src/addins/AspNet/Templates/Mvc/ViewPageRazor.xft.xml:1 msgid "Creates an MVC Razor View page." -msgstr "Створити сторінку перегляду MVC Razor." +msgstr "Створити сторінку представлення MVC Razor." #: ../src/addins/AspNet/Templates/Mvc/WebConfigViews.xft.xml:4 -#, fuzzy msgid "ASP.NET MVC Views Configuration" -msgstr "Перегляд вмісту ASP.NET MVC" +msgstr "Конфігурація представлень ASP.NET MVC" #: ../src/addins/AspNet/Templates/Mvc/WebConfigViews.xft.xml:10 -#, fuzzy msgid "Creates an ASP.NET MVC Web.config file for the Views directory." -msgstr "Створити файл ASP.NET web.config для підтеки." +msgstr "Створити файл ASP.NET Web.config для теки представлень." #: ../src/addins/AspNet/Templates/WebConfig-Application.xft.xml:1 msgid "Web Application Configuration" msgstr "Конфігурація веб-застосунку" #: ../src/addins/AspNet/Templates/WebConfig-Application.xft.xml:1 -#, fuzzy msgid "Creates an ASP.NET Web.config file for an application." -msgstr "Створити для застосунку файл ASP.NET web.config." +msgstr "Створити для застосунку файл ASP.NET Web.config." #: ../src/addins/AspNet/Templates/WebConfig-SubDir.xft.xml:1 msgid "Subdirectory Web Configuration" @@ -18798,24 +18685,20 @@ msgid "A Razor template that will be preprocessed into a C# class." msgstr "Шаблон Razor, що буде перетворений препроцесором на клас C#." #: ../src/addins/AspNet/Templates/Projects/MvcProject.xpt.xml:4 -#, fuzzy msgid "ASP.NET MVC Project" -msgstr "Проект ASP.NET MVC 2" +msgstr "Проект ASP.NET MVC" #: ../src/addins/AspNet/Templates/Projects/MvcProject.xpt.xml:9 -#, fuzzy msgid "Creates an ASP.NET MVC Web Project with Razor Views." -msgstr "Створити веб-проект ASP.NET MVC 2" +msgstr "Створити веб-проект ASP.NET MVC з представленнями Razor." #: ../src/addins/AspNet/Templates/Projects/EmptyProject.xpt.xml:0 -#, fuzzy msgid "Empty ASP.NET Project" -msgstr "Порожній проект ASP.NET MVC 2" +msgstr "Порожній проект ASP.NET" #: ../src/addins/AspNet/Templates/Projects/EmptyProject.xpt.xml:0 -#, fuzzy msgid "Creates an empty ASP.NET Web Project." -msgstr "Створити порожній веб-проект ASP.NET MVC 2" +msgstr "Створити порожній веб-проект ASP.NET" #: ../src/addins/AspNet/Templates/Projects/WebFormsProject.xpt.xml:1 #, fuzzy @@ -18870,7 +18753,7 @@ msgstr "Шаблон T4" #: ../src/addins/TextTemplating/MonoDevelop.TextTemplating/Templates/T4TemplateCSharp.xft.xml:1 msgid "A T4 template for generating code or text files." -msgstr "" +msgstr "Шаблон T4 для створення коду або текстових файлів" #: ../src/addins/TextTemplating/MonoDevelop.TextTemplating/Templates/T4PreprocessedTemplateCSharp.xft.xml:1 msgid "Preprocessed T4 Template" @@ -18894,11 +18777,14 @@ msgid "" "Could not get assembly name for user assembly '{0}'. Debugger will now debug " "all code, not just user code." msgstr "" +"Неможливо отримати назву збірки для користувацької збірки '{0}'. Зневаджувач " +"оброблятиме весь код, а не лише код користувача." #: ../src/addins/MonoDevelop.Debugger.Soft/MonoDevelop.Debugger.Soft.AspNet/AspNetSoftDebuggerEngine.cs:4 msgid "" "The \"{0}\" web server cannot be started. Please ensure that it is installed." msgstr "" +"Неможливо запустити веб-сервер \"{0}\". Перевірте, чи він встановлений." #: ../src/addins/MonoDevelop.HexEditor/MonoDevelop.HexEditor/DisplayBinding.cs:2 msgid "Hex Editor" @@ -18914,29 +18800,24 @@ msgid "Address" msgstr "Адреса" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs:59 -#, fuzzy msgid "Show Module Name" -msgstr "Назва додатку:" +msgstr "Показати назву модуля" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs:59 -#, fuzzy msgid "Show Parameter Type" -msgstr "Показати список параметрів" +msgstr "Показати тип параметра" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs:59 -#, fuzzy msgid "Show Parameter Name" -msgstr "Показати список параметрів" +msgstr "Показати назву параметра" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs:59 -#, fuzzy msgid "Show Parameter Value" -msgstr "Показати список параметрів" +msgstr "Показати значення параметра" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/StackTracePad.cs:59 -#, fuzzy msgid "Show Line Number" -msgstr "Показувати _номери рядків" +msgstr "Показати номер рядка" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:28 msgid "Click here to add a new watch" @@ -18947,23 +18828,20 @@ msgid "The name '{0}' does not exist in the current context." msgstr "Назва '{0}' відсутня у поточному контексті." #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:87 -#, fuzzy msgid "Show Value" -msgstr "Значення" +msgstr "Показати значення" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:87 msgid "Evaluating..." msgstr "Обчислення..." #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:88 -#, fuzzy msgid "Show More" -msgstr "Показати помилки" +msgstr "Показати більше" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ObjectValueTreeView.cs:88 -#, fuzzy msgid "Show Values" -msgstr "Показати файли:" +msgstr "Показати значення" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs:2 #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DisassemblyView.cs:13 @@ -19015,14 +18893,12 @@ msgid "Continue the execution of the application" msgstr "" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs:18 -#, fuzzy msgid "Please select the application to debug" -msgstr "Виберіть політику" +msgstr "Виберіть застосунок для зневадження" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs:19 -#, fuzzy msgid "The file '{0}' does not exist" -msgstr "Не вдалось видалити файл {0}" +msgstr "Файл '{0}' не існує" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs:20 msgid "The file '{0}' can't be debugged" @@ -19030,7 +18906,7 @@ msgstr "Неможливе зневадження файлу '{0}'" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs:21 msgid "Do you want to detach from the process being debugged?" -msgstr "" +msgstr "Бажаєте від'єднатися від процесу, який зневаджується?" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebugCommands.cs:21 #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11 @@ -19068,7 +18944,7 @@ msgstr "Сеанс зневадження не розпочато." #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs:5 msgid "The expression can't be evaluated while the application is running." -msgstr "" +msgstr "Неможливо обчислити значення виразу, доки програма запущена." #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs:10 msgid "Expression not supported." @@ -19083,9 +18959,8 @@ msgid "< More... (The first {0} items were displayed.) >" msgstr "" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs:31 -#, fuzzy msgid "Debugging stopped" -msgstr "Розпочати _зневадження елемента" +msgstr "Зневадження зупинено" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs:34 #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ImmediatePad.cs:42 @@ -19137,14 +19012,12 @@ msgid "ms" msgstr "мс" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs:7 -#, fuzzy msgid "Advanced options" msgstr "Розширені параметри" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/DebuggerOptionsPanelWidget.cs:7 -#, fuzzy msgid "Enable diagnostic logging" -msgstr "Підсвічувати семантику" +msgstr "Увімкнути журналювання діагностики" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/ExceptionCaughtDialog.cs:42 msgid "Exception Caught" @@ -19184,107 +19057,93 @@ msgid "C String" msgstr "Рядок C" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:4 -#, fuzzy msgid "Pause the program" -msgstr "Вставити з буфера" +msgstr "Призупинити програму" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:4 msgid "Print a message and continue" -msgstr "" +msgstr "Вивести повідомлення і продовжити" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:5 -#, fuzzy msgid "When a function is entered" -msgstr "Коли умова виконується:" +msgstr "При вході у функцію" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:5 -#, fuzzy msgid "When a location is reached" -msgstr "Коли умова виконується:" +msgstr "При досягненні розташування" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:5 -#, fuzzy msgid "When an exception is thrown" -msgstr "Коли умова виконується:" +msgstr "При виникненні винятку" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:6 msgid "e.g. System.Object.ToString" -msgstr "" +msgstr "наприклад, System.Object.ToString" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:6 msgid "e.g. Program.cs:15:5" -msgstr "" +msgstr "наприклад, Program.cs:15:5" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:6 msgid "e.g. System.InvalidOperationException" -msgstr "" +msgstr "наприклад, System.InvalidOperationException" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:6 msgid "e.g. colorName == \"Red\"" -msgstr "" +msgstr "наприклад, colorName == \"Red\"" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:6 msgid "e.g. Value of 'name' is {name}" -msgstr "" +msgstr "наприклад, значення 'name' дорівнює {name}" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:20 -#, fuzzy msgid "Include subclasses" -msgstr "Включити _пропуски" +msgstr "Включити підкласи" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:21 msgid "Place simple C# expressions within {} to interpolate them." -msgstr "" +msgstr "Помістіть у {} простий вираз C# для обчислення." #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:21 msgid "A C# boolean expression. Scope is local to the breakpoint." -msgstr "" +msgstr "Логічний вираз C#. Видимість - локальна до контр. точки." #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:28 #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:31 -#, fuzzy msgid "Reset condition" -msgstr "Замінити умовою" +msgstr "Скинути умову" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:28 -#, fuzzy msgid "When hit count is less than" -msgstr "Зупинитись, якщо лічильник менший ніж" +msgstr "Якщо лічильник менший ніж" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:28 -#, fuzzy msgid "When hit count is less than or equal to" -msgstr "Зупинитись, якщо лічильник менший або дорівнює" +msgstr "Якщо лічильник менший або дорівнює" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:28 -#, fuzzy msgid "When hit count is equal to" -msgstr "Зупинитись, якщо лічильник дорівнює" +msgstr "Якщо лічильник дорівнює" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:28 -#, fuzzy msgid "When hit count is greater than" -msgstr "Зупинитись, якщо лічильник більший ніж" +msgstr "Якщо лічильник більший ніж" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:28 -#, fuzzy msgid "When hit count is greater than or equal to" -msgstr "Зупинитись, якщо лічильник більший або дорівнює" +msgstr "Якщо лічильник більший або дорівнює" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:28 -#, fuzzy msgid "When hit count is a multiple of" -msgstr "Зупинитись, якщо лічильник кратний" +msgstr "Якщо лічильник кратний" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:31 -#, fuzzy msgid "And the following condition is true" -msgstr "Зупинитись, якщо умова виконується" +msgstr "І виконується така умова" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:31 -#, fuzzy msgid "And the following expression changes" -msgstr "Зупинитись, якщо вираз змінився" +msgstr "І змінилося значення такого виразу" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:60 #, fuzzy @@ -19293,9 +19152,8 @@ msgstr "Розташування ключа:" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:60 #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:63 -#, fuzzy msgid "File does not exist" -msgstr "Тека для перевірки не існує" +msgstr "Файл не існує" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:60 #, fuzzy @@ -19312,7 +19170,7 @@ msgstr "" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:87 msgid "Trace expression not specified" -msgstr "" +msgstr "Не задано вираз для трасування" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:89 msgid "Function name not specified" @@ -19323,33 +19181,28 @@ msgid "Invalid function syntax" msgstr "Неправильний синтаксис функції" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:90 -#, fuzzy msgid "Exception not identified" -msgstr "Не вказана назва функції" +msgstr "Виняток не розпізнано" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:102 -#, fuzzy msgid "Breakpoint Action" -msgstr "Контрольні точки" +msgstr "Дія контрольної точки" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:109 msgid "When to Take Action" -msgstr "" +msgstr "Коли виконати дію" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger/BreakpointPropertiesDialog.cs:120 -#, fuzzy msgid "Advanced Conditions" -msgstr "Розширені параметри" +msgstr "Розширені умови" #: ../src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebugApplicationDialog.cs:2 -#, fuzzy msgid "Debug Application" -msgstr "Зневадження застосунку..." +msgstr "Зневадження застосунку" #: ../src/addins/MonoDevelop.Debugger/gtk-gui/MonoDevelop.Debugger.DebugApplicationDialog.cs:2 -#, fuzzy msgid "Working Directory" -msgstr "Робоча тека :" +msgstr "Робоча тека" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:5 msgid "Debug Windows" @@ -19432,14 +19285,12 @@ msgid "Step Out" msgstr "Крок за межі" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11 -#, fuzzy msgid "New Breakpoint" -msgstr "Нова контрольна точка..." +msgstr "Нова контрольна точка" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11 -#, fuzzy msgid "New Function Breakpoint" -msgstr "Нова контрольна точка функції..." +msgstr "Нова контрольна точка функції" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11 #, fuzzy @@ -19447,9 +19298,8 @@ msgid "New Exception Catchpoint" msgstr "Трапився виняток" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11 -#, fuzzy msgid "View Breakpoints" -msgstr "Контрольні точки" +msgstr "Показати контрольні точки" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11 msgid "Remove Breakpoint" @@ -19501,7 +19351,7 @@ msgstr "Зупинити розрахунок" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11 msgid "Run To Cursor" -msgstr "" +msgstr "Виконати до курсора" #: ../src/addins/MonoDevelop.Debugger/MonoDevelop.Debugger.addin.xml:11 #, fuzzy @@ -19519,9 +19369,8 @@ msgstr "Зневаджувач" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/ReinstallProjectPackagesActionTests.cs:168 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ReinstallProjectPackagesAction.cs:101 -#, fuzzy msgid "Retargeting packages...{0}" -msgstr "Створити пакет..." +msgstr "Перенацілення пакунків...{0}" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/AvailablePackagesViewModel.cs:211 #, fuzzy @@ -19535,21 +19384,19 @@ msgstr "Не вдалось перейменувати проект." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs:142 msgid "WARNING: {0} Package contains PowerShell scripts which will not be run." -msgstr "" +msgstr "УВАГА: Пакунок {0} містить скрипти PowerShell, які не будуть запущені." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProcessPackageAction.cs:149 msgid "Licenses not accepted." -msgstr "" +msgstr "Ліцензії не прийнято." #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:26 -#, fuzzy msgid "Manage Packages" -msgstr "Пакети" +msgstr "Керування пакунками" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:45 -#, fuzzy msgid "Available" -msgstr "Доступний для" +msgstr "Доступно" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:56 #: ../external/mono-addins/Mono.Addins.Gui/Mono.Addins.Gui/AddinManagerDialog.cs:3 @@ -19558,16 +19405,14 @@ msgid "Installed" msgstr "Встановлено" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:67 -#, fuzzy msgid "Updated" -msgstr "Оновити" +msgstr "Оновлено" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:78 msgid "Recent" msgstr "Останні" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.ManagePackagesDialog.cs:102 -#, fuzzy msgid "Messages" msgstr "Повідомлення" @@ -19583,37 +19428,35 @@ msgstr "Оновити всі" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:218 msgid "<span weight='bold'>Created by:</span>" -msgstr "" +msgstr "<span weight='bold'>Створено:</span>" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:246 msgid "<span weight='bold'>Id:</span>" -msgstr "" +msgstr "<span weight='bold'>Id:</span>" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:279 msgid "<span weight='bold'>Version:</span>" -msgstr "" +msgstr "<span weight='bold'>Версія:</span>" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:307 msgid "<span weight='bold'>Last Updated:</span>" -msgstr "" +msgstr "<span weight='bold'>Останнє оновлення:</span>" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:335 msgid "<span weight='bold'>Downloads:</span>" -msgstr "" +msgstr "<span weight='bold'>Звантажень:</span>" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:399 msgid "<span weight='bold'>Dependencies:</span>" -msgstr "" +msgstr "<span weight='bold'>Залежності:</span>" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackagesWidget.cs:484 -#, fuzzy msgid "Manage" -msgstr "Керування додатками" +msgstr "Керування" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.LicenseAcceptanceDialog.cs:22 -#, fuzzy msgid "License Agreements" -msgstr "Аргументи подій" +msgstr "Ліцензійна угода" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.LicenseAcceptanceDialog.cs:36 #, fuzzy @@ -19621,9 +19464,8 @@ msgid "The following package requires a click-to-accept license:" msgstr "Такі пакунки потрібно вилучити:" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.LicenseAcceptanceDialog.cs:54 -#, fuzzy msgid "The following packages require a click-to-accept license:" -msgstr "Такі пакунки потрібно вилучити:" +msgstr "Дані пакунки потребують згоди з ліцензією:" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.LicenseAcceptanceDialog.cs:89 msgid "" @@ -19631,16 +19473,17 @@ msgid "" "above.\n" "If you do not agree to the license terms click \"Cancel\"." msgstr "" +"Натиснувши \"Гаразд\" ви погодитесь з ліцензійними вимогами для " +"перелічених нижче пакунків.\n" +"Якщо ви не згодні з ліцензійними вимогами, клацніть \"Скасувати\"." #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.SelectProjectsDialog.cs:18 -#, fuzzy msgid "Select Projects" -msgstr "Видалити проект" +msgstr "Виберіть проекти" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.SelectProjectsDialog.cs:31 -#, fuzzy msgid "Install the package into the following projects:" -msgstr "Лише в таких віконних середовищах:" +msgstr "Встановити пакунок у такі проекти:" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/PackageSourcesOptionsPanel.cs:83 msgid "Unable to encrypt Package Source passwords." @@ -19651,136 +19494,115 @@ msgid "Unable to save package source changes.{0}{0}{1}" msgstr "" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/PackageSourcesOptionsPanel.cs:154 -#, fuzzy msgid "Unable to read or write to \"{0}\"." -msgstr "Не вдалось побудувати ResourceId для {0}." +msgstr "Не вдалось прочитати або записати \"{0}\"." #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackageManagementOptionsWidget.cs:43 -#, fuzzy msgid "<b>Package Restore</b>" -msgstr "<b>Повернення</b>" +msgstr "<b>Відновлення пакунків</b>" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackageManagementOptionsWidget.cs:65 -#, fuzzy msgid "_Automatically restore packages when opening a solution." -msgstr "Після відкриття рішення закрити сторінку вітання." +msgstr "При відкриванні рішення _автоматично відновлювати пакунки." #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackageManagementOptionsWidget.cs:81 -#, fuzzy msgid "<b>Package Updates</b>" -msgstr "<b>Мовні параметри</b>" +msgstr "<b>Оновлення пакунків</b>" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PackageManagementOptionsWidget.cs:103 -#, fuzzy msgid "Check for package _updates when opening a solution." -msgstr "Після відкриття рішення закрити сторінку вітання." +msgstr "Після відкриття рішення перевірити _оновлення пакунків." #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PagedResultsWidget.cs:45 msgid "1" -msgstr "" +msgstr "1" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PagedResultsWidget.cs:57 msgid "2" -msgstr "" +msgstr "2" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PagedResultsWidget.cs:69 msgid "3" -msgstr "" +msgstr "3" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PagedResultsWidget.cs:81 msgid "4" -msgstr "" +msgstr "4" #: ../src/addins/MonoDevelop.PackageManagement/gtk-gui/MonoDevelop.PackageManagement.PagedResultsWidget.cs:93 msgid "5" -msgstr "" +msgstr "5" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs:60 -#, fuzzy msgid "Configure Sources..." -msgstr "Конфігурувати" +msgstr "Конфігурувати джерела..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs:174 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:135 -#, fuzzy msgid "Loading package list..." -msgstr "Завантаження даних..." +msgstr "Завантаження списку пакунків..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs:176 -#, fuzzy msgid "Searching packages..." -msgstr "Тип пошуку..." +msgstr "Пошук пакунків..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs:270 -#, fuzzy msgid "All Sources" -msgstr "{0} сирців" +msgstr "Всі джерела" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs:659 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:67 -#, fuzzy msgid "Add Packages" -msgstr "Додати пакет..." +msgstr "Додати пакунки" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs:662 -#, fuzzy msgid "Update Package" -msgstr "Створити пакет" +msgstr "Оновити пакунок" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs:664 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:332 -#, fuzzy msgid "Add Package" -msgstr "Додати пакет..." +msgstr "Додати пакунок" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:150 -#, fuzzy msgid "No matching packages found." -msgstr "Новин не знайдено." +msgstr "Підхожих пакунків не знайдено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:210 -#, fuzzy msgid "<b>Id</b>" -msgstr "<b>Завантажити</b>" +msgstr "<b>Id</b>" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:229 -#, fuzzy msgid "<b>Author</b>" -msgstr "<b>Дія</b>" +msgstr "<b>Автор</b>" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:244 -#, fuzzy msgid "<b>Published</b>" -msgstr "<b>Різне</b>" +msgstr "<b>Опубліковано</b>" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:257 -#, fuzzy msgid "<b>Downloads</b>" -msgstr "<b>Вниз</b>" +msgstr "<b>Звантаження</b>" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:270 -#, fuzzy msgid "<b>License</b>" -msgstr "<b>Різне</b>" +msgstr "<b>Ліцензія</b>" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:275 -#, fuzzy msgid "View License" -msgstr "Переглянути список" +msgstr "Показати ліцензію" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:284 -#, fuzzy msgid "<b>Project Page</b>" -msgstr "<b>Опції проекту</b>" +msgstr "<b>Сторінка проекту</b>" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:289 msgid "Visit Page" -msgstr "" +msgstr "Відвідати сторінку" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:298 -#, fuzzy msgid "<b>Dependencies</b>" -msgstr "<b>Вигляд</b>" +msgstr "<b>Залежності</b>" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.UI.cs:326 #, fuzzy @@ -19797,381 +19619,318 @@ msgid "" msgstr "" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageManagementProgressMonitorFactory.cs:58 -#, fuzzy msgid "Package Console" -msgstr "Пакети" +msgstr "Консоль пакунка" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNode.cs:91 -#, fuzzy msgid "updates" -msgstr "Оновлення" +msgstr "оновлення" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNode.cs:93 -#, fuzzy msgid "update" -msgstr "Оновити" +msgstr "оновити" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNode.cs:105 -#, fuzzy msgid "available" -msgstr "Недоступно" +msgstr "доступно" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNode.cs:110 -#, fuzzy msgid "installing" -msgstr "Видалити" +msgstr "встановлення" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNode.cs:120 -#, fuzzy msgid "Version {0}" -msgstr "Версія" +msgstr "Версія {0}" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNode.cs:139 -#, fuzzy msgid "Package is not restored" -msgstr "Не вказана назва пакета." +msgstr "Пакунок не відновлено" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNode.cs:141 -#, fuzzy msgid "Package needs retargeting" -msgstr "Настройки пакета" +msgstr "Пакунок потрібно перенацілити" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageReferenceNodeCommandHandler.cs:66 msgid "" "Unable to find package {0} {1} to remove it from the project. Please restore " "the package first." msgstr "" +"Не вдалось знайти пакунок {0} {1}, щоб вилучити його з проекту. Спочатку " +"слід відновити пакунок." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNodeDescriptor.cs:58 msgid "Development Dependency" -msgstr "" +msgstr "Залежність розробки" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNodeDescriptor.cs:65 -#, fuzzy msgid "Target Framework" -msgstr "Цільовий _фреймворк:" +msgstr "Цільовий фреймворк" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNodeDescriptor.cs:72 -#, fuzzy msgid "Version Constraint" -msgstr "Керування версіями" +msgstr "Обмеження версії" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNodeDescriptor.cs:45 -#, fuzzy msgid "Package Id." -msgstr "Пакет" +msgstr "Ідентифікатор пакунка." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNodeDescriptor.cs:52 -#, fuzzy msgid "Package version." -msgstr "Настройки пакета" +msgstr "Версія пакунка." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNodeDescriptor.cs:59 msgid "Package is a development dependency." -msgstr "" +msgstr "Пакунок залежний від розробки." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNodeDescriptor.cs:66 -#, fuzzy msgid "Target framework for the Package." -msgstr "Цільовий _фреймворк:" +msgstr "Цільовий фреймворк для пакунка." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageReferenceNodeDescriptor.cs:73 -#, fuzzy msgid "Version constraint for the Package." -msgstr "Версія збірки." +msgstr "Обмеження версії для пакунка." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:38 -#, fuzzy msgid "Adding {0}..." -msgstr "Додавання..." +msgstr "Додавання {0}..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:39 -#, fuzzy msgid "{0} successfully added." -msgstr "Мову '{0}' успішно додано." +msgstr "{0} успішно додано." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:40 -#, fuzzy msgid "Could not add {0}." -msgstr "Тип '{0}' не знайдено." +msgstr "Не вдалось додати {0}." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:41 -#, fuzzy msgid "{0} added with warnings." -msgstr "{0} попередження" +msgstr "{0} додано з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:48 -#, fuzzy msgid "Adding packages..." -msgstr "Пакети додатків" +msgstr "Додавання пакунків..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:49 -#, fuzzy msgid "Packages successfully added." -msgstr "Мову '{0}' успішно додано." +msgstr "Пакунки успішно додано." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:50 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:60 -#, fuzzy msgid "Could not add packages." -msgstr "Тип '{0}' не знайдено." +msgstr "Не вдалось додати пакунки." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:51 -#, fuzzy msgid "Packages added with warnings." -msgstr "Операція завершилась з попередженнями." +msgstr "Пакунки додано з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:58 -#, fuzzy msgid "Adding {0} packages..." -msgstr "Пакети додатків" +msgstr "Додавання {0} пакунків..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:59 -#, fuzzy msgid "{0} packages successfully added." -msgstr "Мову '{0}' успішно додано." +msgstr "{0} пакунків успішно додано." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:61 -#, fuzzy msgid "{0} packages added with warnings." -msgstr "{0} помилок і {1} попереджень" +msgstr "{0} пакунків додано з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:68 -#, fuzzy msgid "Updating packages in solution..." -msgstr "Оновлення рішення" +msgstr "Оновлення пакунків у рішенні..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:69 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:109 -#, fuzzy msgid "Packages successfully updated." -msgstr "Мову '{0}' успішно додано." +msgstr "Пакунки успішно оновлено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:70 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:90 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:110 -#, fuzzy msgid "Could not update packages." -msgstr "Не вдалось оновити файл '{0}'" +msgstr "Не вдалось оновити пакунки." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:71 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:111 -#, fuzzy msgid "Packages updated with warnings." -msgstr "Операція завершилась з попередженнями." +msgstr "Пакунки оновлено з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:80 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:100 -#, fuzzy msgid "Packages are up to date." -msgstr "Не вказана назва пакета." +msgstr "Пакунки актуальні." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:81 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:101 msgid "No updates found but warnings were reported." -msgstr "" +msgstr "Оновлень не знайдено, але є попередження." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:88 -#, fuzzy msgid "Updating {0} packages in project..." -msgstr "Проект оновлюється" +msgstr "Оновлення {0} пакунків у проекті..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:89 -#, fuzzy msgid "{0} packages successfully updated." -msgstr "{0} були створені успішно." +msgstr "{0} пакунків успішно оновлено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:91 -#, fuzzy msgid "{0} packages updated with warnings." -msgstr "Операція завершилась з попередженнями." +msgstr "{0} пакунків оновлено з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:108 -#, fuzzy msgid "Updating packages in project..." -msgstr "Проект оновлюється" +msgstr "Оновлення пакунків у проекті..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:118 -#, fuzzy msgid "Updating {0}..." -msgstr "Оновлення {0}" +msgstr "Оновлення {0}..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:119 -#, fuzzy msgid "{0} successfully updated." -msgstr "{0} були створені успішно." +msgstr "{0} успішно оновлено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:120 -#, fuzzy msgid "Could not update {0}." -msgstr "Не вдалось оновити файл '{0}'" +msgstr "Не вдалось оновити {0}." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:121 -#, fuzzy msgid "{0} updated with warnings." -msgstr "Операція завершилась з попередженнями." +msgstr "{0} оновлено з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:130 -#, fuzzy msgid "{0} is up to date." -msgstr "Віддалену гілку оновлено." +msgstr "{0} актуальний." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:131 msgid "No update found but warnings were reported." -msgstr "" +msgstr "Оновлення не знайдено, але є попередження." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:138 -#, fuzzy msgid "Removing {0}..." -msgstr "Вилучення..." +msgstr "Вилучення {0}..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:139 -#, fuzzy msgid "{0} successfully removed." -msgstr "Ревізію {0} успішно повернуто." +msgstr "{0} успішно видалено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:140 -#, fuzzy msgid "Could not remove {0}." -msgstr "Не вдалось зберегти елемент: {0}" +msgstr "Не вдалось видалити {0}." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:141 -#, fuzzy msgid "{0} removed with warnings." -msgstr "{0} помилок і {1} попереджень" +msgstr "{0} видалено з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:148 -#, fuzzy msgid "Restoring packages for solution..." -msgstr "До проекту або рішення." +msgstr "Відновлення пакунків для рішення..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:149 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:159 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:169 -#, fuzzy msgid "Packages successfully restored." -msgstr "Ревізію {0} успішно повернуто." +msgstr "Пакунки успішно відновлено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:150 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:160 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:170 -#, fuzzy msgid "Could not restore packages." -msgstr "Не вдалось запустити перетворення." +msgstr "Не вдалось відновити пакунки." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:151 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:161 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:171 -#, fuzzy msgid "Packages restored with warnings." -msgstr "Операція завершилась з попередженнями." +msgstr "Пакунки відновлено з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:158 msgid "Restoring packages before update..." -msgstr "" +msgstr "Відновлення пакунків перед оновленням..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:168 -#, fuzzy msgid "Restoring packages for project..." -msgstr "Створити нові пакети для проекту" +msgstr "Відновлення пакунків для проекту..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:178 -#, fuzzy msgid "Checking package compatibility with new target framework..." -msgstr "Не сумісний цільовий фреймворк: {0}" +msgstr "Перевірка сумісності пакунків з новим цільовим фреймворком..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:179 -#, fuzzy msgid "Packages are compatible." -msgstr "Не вказана назва пакета." +msgstr "Пакунки сумісні." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:180 msgid "Could not check package compatibility." -msgstr "" +msgstr "Не вдалось перевірити сумісність пакунків." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:181 -#, fuzzy msgid "Package retargeting required." -msgstr "Настройки пакета" +msgstr "Необхідне перенацілення пакунка." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:188 -#, fuzzy msgid "Retargeting {0}..." -msgstr "Запуск {0}" +msgstr "Перенацілення {0}..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:189 -#, fuzzy msgid "{0} successfully retargeted." -msgstr "{0} були створені успішно." +msgstr "{0} перенацілено успішно." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:190 -#, fuzzy msgid "Could not retarget {0}." -msgstr "Не вдалось створити теку '{0}'." +msgstr "Не вдалось перенацілити '{0}'." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:191 -#, fuzzy msgid "{0} retargeted with warnings." -msgstr "Операція завершилась з попередженнями." +msgstr "{0} перенацілено з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:198 msgid "Retargeting {0} packages..." -msgstr "" +msgstr "Перенацілення {0} пакунків..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:199 -#, fuzzy msgid "{0} packages successfully retargeted." -msgstr "{0} були створені успішно." +msgstr "{0} пакунків успішно перенацілено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:200 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:210 -#, fuzzy msgid "Could not retarget packages." -msgstr "Не вдалось запустити перетворення." +msgstr "Не вдалось перенацілити пакунки." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:201 -#, fuzzy msgid "{0} packages retargeted with warnings." -msgstr "Операція завершилась з попередженнями." +msgstr "{0} пакунків перенацілено з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:208 -#, fuzzy msgid "Retargeting packages..." -msgstr "Створити пакет..." +msgstr "Перенацілення пакунків..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:209 -#, fuzzy msgid "Packages successfully retargeted." -msgstr "Ревізію {0} успішно повернуто." +msgstr "Пакунки успішно перенацілено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProgressMonitorStatusMessageFactory.cs:211 -#, fuzzy msgid "Packages retarget with warnings." -msgstr "Настройки пакета" +msgstr "Пакунки перенацілено з попередженнями." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/SearchPackagesSearchCategory.cs:63 -#, fuzzy msgid "Search Packages..." -msgstr "Створити пакет..." +msgstr "Знайти пакунки..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectReferencesFromPackagesFolderNodeBuilder.cs:48 -#, fuzzy msgid "From Packages" -msgstr "Пакети" +msgstr "З пакунків" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackageSourceDialog.cs:68 -#, fuzzy msgid "Edit Package Source" -msgstr "Редагувати пакети" +msgstr "Редагувати джерело пакунків" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackageSourceDialog.UI.cs:44 -#, fuzzy msgid "Add Package Source" -msgstr "Додати пакет..." +msgstr "Додати джерело пакунків" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackageSourceDialog.UI.cs:68 msgid "URL" -msgstr "" +msgstr "Адреса" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackageSourceDialog.UI.cs:81 msgid "Username" @@ -20180,17 +19939,15 @@ msgstr "Користувач" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackageSourceDialog.UI.cs:87 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackageSourceDialog.UI.cs:101 msgid "Private sources only" -msgstr "" +msgstr "Лише приватні джерела" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackageSourceDialog.UI.cs:95 -#, fuzzy msgid "Password" -msgstr "Пароль:" +msgstr "Пароль" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackageSourceDialog.UI.cs:109 -#, fuzzy msgid "Add Source" -msgstr "Джерело" +msgstr "Додати джерело" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackageSourceDialog.UI.cs:114 #: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.InstrumentationViewerDialog.cs:2 @@ -20200,33 +19957,28 @@ msgstr "Зберегти" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSourceViewModelChecker.cs:89 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSourceViewModelChecker.cs:149 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSourceViewModelChecker.cs:165 -#, fuzzy msgid "Unreachable" -msgstr "Код недосяжний" +msgstr "Недосяжно" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSourceViewModelChecker.cs:132 -#, fuzzy msgid "Directory not found" -msgstr "Теку не знайдено: {0}" +msgstr "Теки не існує" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSourceViewModelChecker.cs:142 -#, fuzzy msgid "Invalid credentials" -msgstr "Реєстраційні дані Git" +msgstr "Помилка реєстраційних даних" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageSourceViewModelChecker.cs:152 -#, fuzzy msgid "Proxy authentication required" -msgstr "Область аутентифікації:" +msgstr "Проксі вимагає аутентифікації" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/PackageCompatibilityRunner.cs:152 -#, fuzzy msgid "Incompatible packages found." -msgstr "Компілятор IL (ilasm) не знайдено." +msgstr "Знайдено несумісні пакунки." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ReinstallProjectPackagesAction.cs:124 msgid "Package {0} {1} not found in package source." -msgstr "" +msgstr "Пакунок {0} {1} не знайдено у джерелі пакунків." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectPackagesCompatibilityReport.cs:111 msgid "" @@ -20236,6 +19988,11 @@ msgid "" "and may no longer work. Retargeting these packages will fail and cause them " "to be removed from the project." msgstr "" +"Дані пакунки не сумісні з цільовим фреймворком '{0}' поточного проекту." +"Пакунки не містять посилань на збірки або файли з вмістом, сумісні з" +"цільовим фреймворком поточного проекту і можуть припинити роботу. " +"Перенацілення цих пакунків буде невдалим і спричинить їх вилучення " +"з проекту." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/ProjectPackagesCompatibilityReport.cs:117 msgid "" @@ -20244,964 +20001,924 @@ msgid "" "'{0}'. The packages contain assembly references or content files for the " "current project target framework which are not currently installed." msgstr "" +"Дані пакунки потрібно перенацілити. Вони встановлені з цільовим " +"фреймворком, що відрізняється від цільового фреймворку '{0}' " +"поточного проекту. Пакунки містять посилання на збірки або файли з вмістом " +"для цільового фреймворку поточного проекту, які зараз не встановлено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInSolution.cs:219 -#, fuzzy msgid "Checking {0} for updates..." -msgstr "По_шук оновлень..." +msgstr "Перевірка оновлень {0}..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInSolution.cs:225 -#, fuzzy msgid "{0} update found." -msgstr "Оновлень не знайдено" +msgstr "Знайдено оновлення {0}." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInSolution.cs:227 -#, fuzzy msgid "{0} updates found." -msgstr "Оновлень не знайдено" +msgstr "Знайдено {0} оновлень." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Commands/PackageManagementStartupHandler.cs:123 msgid "Unable to close the solution when NuGet packages are being processed." -msgstr "" +msgstr "Неможливо закрити рішення коли обробляються пакунки NuGet." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs:103 -#, fuzzy msgid "Skipping '{0}' because it is already restored." -msgstr "Tип '{0}' вже зареєстровано" +msgstr "Пропускаємо '{0}', оскільки його вже відновлено." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs:111 msgid "1 package restored successfully." -msgstr "" +msgstr "1 пакунок відновлено успішно." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/RestorePackagesAction.cs:113 -#, fuzzy msgid "{0} packages restored successfully." -msgstr "{0} були створені успішно." +msgstr "{0} пакунків відновлено успішно." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:9 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:108 msgid "NuGet" -msgstr "" +msgstr "NuGet" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:12 -#, fuzzy msgid "Add NuGet packages to the project" -msgstr "Створити нові пакети для проекту" +msgstr "Додати до проекту пакунки NuGet" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:13 -#, fuzzy msgid "Add NuGet _Packages..." -msgstr "Додати пакет..." +msgstr "Додати _пакунки NuGet..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:17 -#, fuzzy msgid "Add packages to the project" -msgstr "Створити нові пакети для проекту" +msgstr "Додати пакунки до проекту" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:18 -#, fuzzy msgid "Add _Packages..." -msgstr "Додати пакет..." +msgstr "Додати пакунки..." #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:22 -#, fuzzy msgid "Restore missing NuGet packages" -msgstr "Відновлення локальних змін" +msgstr "Відновити відсутні пакунки NuGet" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:23 -#, fuzzy msgid "_Restore NuGet Packages" -msgstr "Системні пакети" +msgstr "Відновити _пакунки NuGet" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:27 -#, fuzzy msgid "Restore missing packages" -msgstr "Відновлення локальних змін" +msgstr "Відновити відсутні пакунки" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:28 -#, fuzzy msgid "_Restore" -msgstr "Відновлено '{0}'" +msgstr "_Відновити" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:32 -#, fuzzy msgid "Current package version" -msgstr "Поточне рішення" +msgstr "Поточна версія пакунка" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:36 -#, fuzzy msgid "Retarget package" -msgstr "Створити пакет" +msgstr "Перенацілити пакунок" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:37 #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:55 -#, fuzzy msgid "Re_target" -msgstr "_Редагувати цілі" +msgstr "_Перенацілити" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:40 -#, fuzzy msgid "Update package" -msgstr "Редагувати пакети" +msgstr "Оновити пакунок" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:44 -#, fuzzy msgid "Update all packages" -msgstr "Редагувати пакети" +msgstr "Оновити всі пакунки" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:49 -#, fuzzy msgid "Update all NuGet packages in the solution" -msgstr "Зберегти конфігурацію пакета у рішенні" +msgstr "Оновити всі пакунки NuGet у рішенні" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:50 -#, fuzzy msgid "_Update NuGet Packages" -msgstr "Створити пакет" +msgstr "_Оновити пакунки NuGet" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:54 -#, fuzzy msgid "Retargets all packages" -msgstr "Вибрані пакети:" +msgstr "Перенацілює всі пакунки" #: ../src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml:110 -#, fuzzy msgid "Sources" -msgstr "Джерело" +msgstr "Джерела" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:67 msgid "ApplicationRecoverFailedToRegisterForRestartBadParameters" -msgstr "" +msgstr "ApplicationRecoverFailedToRegisterForRestartBadParameters" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:76 msgid "ApplicationRecoveryBadParameters" -msgstr "" +msgstr "ApplicationRecoveryBadParameters" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:85 msgid "ApplicationRecoveryFailedToRegister" -msgstr "" +msgstr "ApplicationRecoveryFailedToRegister" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:94 msgid "ApplicationRecoveryFailedToRegisterForRestart" -msgstr "" +msgstr "ApplicationRecoveryFailedToRegisterForRestart" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:103 msgid "ApplicationRecoveryFailedToUnregister" -msgstr "" +msgstr "ApplicationRecoveryFailedToUnregister" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:112 msgid "ApplicationRecoveryFailedToUnregisterForRestart" -msgstr "" +msgstr "ApplicationRecoveryFailedToUnregisterForRestart" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:121 msgid "ApplicationRecoveryMustBeCalledFromCallback" -msgstr "" +msgstr "ApplicationRecoveryMustBeCalledFromCallback" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:130 msgid "BatteryStateStringRepresentation" -msgstr "" +msgstr "BatteryStateStringRepresentation" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:139 msgid "CancelableCannotBeChanged" -msgstr "" +msgstr "CancelableCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:148 msgid "CaptionCannotBeChanged" -msgstr "" +msgstr "CaptionCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:157 msgid "CheckBoxCannotBeChanged" -msgstr "" +msgstr "CheckBoxCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:166 msgid "CollapsedTextCannotBeChanged" -msgstr "" +msgstr "CollapsedTextCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:175 msgid "CoreHelpersRunningOn7" -msgstr "" +msgstr "CoreHelpersRunningOn7" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:184 msgid "CoreHelpersRunningOnVista" -msgstr "" +msgstr "CoreHelpersRunningOnVista" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:193 msgid "CoreHelpersRunningOnXp" -msgstr "" +msgstr "CoreHelpersRunningOnXp" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:202 msgid "DialogCollectionCannotHaveDuplicateNames" -msgstr "" +msgstr "DialogCollectionCannotHaveDuplicateNames" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:211 msgid "DialogCollectionControlAlreadyHosted" -msgstr "" +msgstr "DialogCollectionControlAlreadyHosted" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:220 -#, fuzzy msgid "DialogCollectionControlNameNull" -msgstr "Назва колекції" +msgstr "DialogCollectionControlNameNull" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:229 msgid "DialogCollectionModifyShowingDialog" -msgstr "" +msgstr "DialogCollectionModifyShowingDialog" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:238 msgid "DialogControlNameCannotBeEmpty" -msgstr "" +msgstr "DialogControlNameCannotBeEmpty" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:247 msgid "DialogControlsCannotBeRenamed" -msgstr "" +msgstr "DialogControlsCannotBeRenamed" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:256 msgid "DialogDefaultCaption" -msgstr "" +msgstr "DialogDefaultCaption" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:265 msgid "DialogDefaultContent" -msgstr "" +msgstr "DialogDefaultContent" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:274 msgid "DialogDefaultMainInstruction" -msgstr "" +msgstr "DialogDefaultMainInstruction" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:283 msgid "ExpandedDetailsCannotBeChanged" -msgstr "" +msgstr "ExpandedDetailsCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:292 msgid "ExpandedLabelCannotBeChanged" -msgstr "" +msgstr "ExpandedLabelCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:301 msgid "ExpandingStateCannotBeChanged" -msgstr "" +msgstr "ExpandingStateCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:310 msgid "HyperlinksCannotBetSet" -msgstr "" +msgstr "HyperlinksCannotBetSet" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:319 -#, fuzzy msgid "InvalidReferencePath" -msgstr "Шлях посилання" +msgstr "InvalidReferencePath" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:328 msgid "MessageManagerHandlerNotRegistered" -msgstr "" +msgstr "MessageManagerHandlerNotRegistered" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:337 -#, fuzzy msgid "NativeTaskDialogConfigurationError" -msgstr "Активна конфігурація" +msgstr "NativeTaskDialogConfigurationError" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:346 msgid "NativeTaskDialogInternalErrorArgs" -msgstr "" +msgstr "NativeTaskDialogInternalErrorArgs" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:355 msgid "NativeTaskDialogInternalErrorComplex" -msgstr "" +msgstr "NativeTaskDialogInternalErrorComplex" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:364 -#, fuzzy msgid "NativeTaskDialogInternalErrorUnexpected" -msgstr "ПомилкаРозбору_Неочікувана" +msgstr "NativeTaskDialogInternalErrorUnexpected" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:373 msgid "NativeTaskDialogVersionError" -msgstr "" +msgstr "NativeTaskDialogVersionError" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:382 msgid "OwnerCannotBeChanged" -msgstr "" +msgstr "OwnerCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:391 -#, fuzzy msgid "PowerExecutionStateFailed" -msgstr "Виконання завершилось невдало." +msgstr "PowerExecutionStateFailed" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:400 msgid "PowerInsufficientAccessBatteryState" -msgstr "" +msgstr "PowerInsufficientAccessBatteryState" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:409 msgid "PowerInsufficientAccessCapabilities" -msgstr "" +msgstr "PowerInsufficientAccessCapabilities" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:418 msgid "PowerManagerActiveSchemeFailed" -msgstr "" +msgstr "PowerManagerActiveSchemeFailed" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:427 msgid "PowerManagerBatteryNotPresent" -msgstr "" +msgstr "PowerManagerBatteryNotPresent" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:436 msgid "ProgressBarCannotBeChanged" -msgstr "" +msgstr "ProgressBarCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:445 msgid "ProgressBarCannotBeHostedInMultipleDialogs" -msgstr "" +msgstr "ProgressBarCannotBeHostedInMultipleDialogs" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:454 -#, fuzzy msgid "PropertyKeyFormatString" -msgstr "Оголошення властивості" +msgstr "PropertyKeyFormatString" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:463 msgid "PropVariantInitializationError" -msgstr "" +msgstr "PropVariantInitializationError" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:472 msgid "PropVariantMultiDimArray" -msgstr "" +msgstr "PropVariantMultiDimArray" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:481 msgid "PropVariantNullString" -msgstr "" +msgstr "PropVariantNullString" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:490 msgid "PropVariantTypeNotSupported" -msgstr "" +msgstr "PropVariantTypeNotSupported" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:499 msgid "PropVariantUnsupportedType" -msgstr "" +msgstr "PropVariantUnsupportedType" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:508 msgid "RecoverySettingsFormatString" -msgstr "" +msgstr "RecoverySettingsFormatString" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:517 msgid "RestartSettingsFormatString" -msgstr "" +msgstr "RestartSettingsFormatString" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:526 msgid "StandardButtonsCannotBeChanged" -msgstr "" +msgstr "StandardButtonsCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:535 msgid "StartupLocationCannotBeChanged" -msgstr "" +msgstr "StartupLocationCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:544 msgid "TaskDialogBadButtonId" -msgstr "" +msgstr "TaskDialogBadButtonId" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:553 msgid "TaskDialogButtonTextEmpty" -msgstr "" +msgstr "TaskDialogButtonTextEmpty" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:562 msgid "TaskDialogCheckBoxTextRequiredToEnableCheckBox" -msgstr "" +msgstr "TaskDialogCheckBoxTextRequiredToEnableCheckBox" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:571 msgid "TaskDialogCloseNonShowing" -msgstr "" +msgstr "TaskDialogCloseNonShowing" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:580 msgid "TaskDialogDefaultCaption" -msgstr "" +msgstr "TaskDialogDefaultCaption" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:589 msgid "TaskDialogDefaultContent" -msgstr "" +msgstr "TaskDialogDefaultContent" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:598 msgid "TaskDialogDefaultMainInstruction" -msgstr "" +msgstr "TaskDialogDefaultMainInstruction" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:607 msgid "TaskDialogOnlyOneDefaultControl" -msgstr "" +msgstr "TaskDialogOnlyOneDefaultControl" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:616 msgid "TaskDialogProgressBarMaxValueGreaterThanMin" -msgstr "" +msgstr "TaskDialogProgressBarMaxValueGreaterThanMin" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:625 msgid "TaskDialogProgressBarMinValueGreaterThanZero" -msgstr "" +msgstr "TaskDialogProgressBarMinValueGreaterThanZero" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:634 msgid "TaskDialogProgressBarMinValueLessThanMax" -msgstr "" +msgstr "TaskDialogProgressBarMinValueLessThanMax" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:643 msgid "TaskDialogProgressBarValueInRange" -msgstr "" +msgstr "TaskDialogProgressBarValueInRange" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:652 msgid "TaskDialogSupportedButtonsAndButtons" -msgstr "" +msgstr "TaskDialogSupportedButtonsAndButtons" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:661 msgid "TaskDialogSupportedButtonsAndLinks" -msgstr "" +msgstr "TaskDialogSupportedButtonsAndLinks" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Core/Resources/LocalizedMessages.Designer.cs:670 msgid "TaskDialogUnkownControl" -msgstr "" +msgstr "TaskDialogUnkownControl" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:67 msgid "AddToMostRecentlyUsedListCannotBeChanged" -msgstr "" +msgstr "AddToMostRecentlyUsedListCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:76 msgid "AlwaysAppendDefaultExtensionCannotBeChanged" -msgstr "" +msgstr "AlwaysAppendDefaultExtensionCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:85 msgid "ComboBoxIndexOutsideBounds" -msgstr "" +msgstr "ComboBoxIndexOutsideBounds" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:94 msgid "CommonFileDialogCanceled" -msgstr "" +msgstr "CommonFileDialogCanceled" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:103 msgid "CommonFileDialogCannotCreateShellItem" -msgstr "" +msgstr "CommonFileDialogCannotCreateShellItem" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:112 msgid "CommonFileDialogInvalidHandle" -msgstr "" +msgstr "CommonFileDialogInvalidHandle" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:121 msgid "CommonFileDialogMultipleFiles" -msgstr "" +msgstr "CommonFileDialogMultipleFiles" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:130 msgid "CommonFileDialogMultipleItems" -msgstr "" +msgstr "CommonFileDialogMultipleItems" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:139 msgid "CommonFileDialogNotClosed" -msgstr "" +msgstr "CommonFileDialogNotClosed" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:148 msgid "CommonFileDialogRequiresVista" -msgstr "" +msgstr "CommonFileDialogRequiresVista" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:157 msgid "CommonFiltersOffice" -msgstr "" +msgstr "CommonFiltersOffice" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:166 msgid "CommonFiltersPicture" -msgstr "" +msgstr "CommonFiltersPicture" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:175 -#, fuzzy msgid "CommonFiltersText" -msgstr "Надіслати зміни" +msgstr "CommonFiltersText" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:184 msgid "CreatePromptCannotBeChanged" -msgstr "" +msgstr "CreatePromptCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:193 msgid "DialogControlCollectionCannotRemoveControls" -msgstr "" +msgstr "DialogControlCollectionCannotRemoveControls" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:202 msgid "DialogControlCollectionEmptyName" -msgstr "" +msgstr "DialogControlCollectionEmptyName" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:211 msgid "DialogControlCollectionMenuItemControlsCannotBeAdded" -msgstr "" +msgstr "DialogControlCollectionMenuItemControlsCannotBeAdded" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:220 msgid "DialogControlCollectionModifyingControls" -msgstr "" +msgstr "DialogControlCollectionModifyingControls" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:229 msgid "DialogControlCollectionMoreThanOneControl" -msgstr "" +msgstr "DialogControlCollectionMoreThanOneControl" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:238 msgid "DialogControlCollectionRemoveControlFirst" -msgstr "" +msgstr "DialogControlCollectionRemoveControlFirst" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:247 msgid "EnsureFileExistsCannotBeChanged" -msgstr "" +msgstr "EnsureFileExistsCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:256 msgid "EnsurePathExistsCannotBeChanged" -msgstr "" +msgstr "EnsurePathExistsCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:265 msgid "EnsureReadonlyCannotBeChanged" -msgstr "" +msgstr "EnsureReadonlyCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:274 msgid "EnsureValidNamesCannotBeChanged" -msgstr "" +msgstr "EnsureValidNamesCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:283 msgid "ExplorerBrowserBrowseToObjectFailed" -msgstr "" +msgstr "ExplorerBrowserBrowseToObjectFailed" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:292 msgid "ExplorerBrowserFailedToGetView" -msgstr "" +msgstr "ExplorerBrowserFailedToGetView" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:301 msgid "ExplorerBrowserIconSize" -msgstr "" +msgstr "ExplorerBrowserIconSize" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:310 msgid "ExplorerBrowserItemCount" -msgstr "" +msgstr "ExplorerBrowserItemCount" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:319 msgid "ExplorerBrowserSelectedItemCount" -msgstr "" +msgstr "ExplorerBrowserSelectedItemCount" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:328 -#, fuzzy msgid "ExplorerBrowserUnexpectedError" -msgstr "ПомилкаРозбору_Неочікувана" +msgstr "ExplorerBrowserUnexpectedError" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:337 msgid "ExplorerBrowserViewItems" -msgstr "" +msgstr "ExplorerBrowserViewItems" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:346 -#, fuzzy msgid "FilePathNotExist" -msgstr "Шлях до файлу" +msgstr "FilePathNotExist" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:355 msgid "FolderIdsUnknownGuid" -msgstr "" +msgstr "FolderIdsUnknownGuid" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:364 -#, fuzzy msgid "FolderTypeCategory" -msgstr "Категорія" +msgstr "FolderTypeCategory" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:373 msgid "FolderTypeClassic" -msgstr "" +msgstr "FolderTypeClassic" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:382 msgid "FolderTypeCommunications" -msgstr "" +msgstr "FolderTypeCommunications" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:391 msgid "FolderTypeCompressedFolder" -msgstr "" +msgstr "FolderTypeCompressedFolder" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:400 msgid "FolderTypeContacts" -msgstr "" +msgstr "FolderTypeContacts" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:409 -#, fuzzy msgid "FolderTypeDocuments" -msgstr "Закрити документи" +msgstr "FolderTypeDocuments" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:418 msgid "FolderTypeGames" -msgstr "" +msgstr "FolderTypeGames" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:427 msgid "FolderTypeGenericLibrary" -msgstr "" +msgstr "FolderTypeGenericLibrary" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:436 msgid "FolderTypeInvalid" -msgstr "" +msgstr "FolderTypeInvalid" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:445 -#, fuzzy msgid "FolderTypeLibrary" -msgstr "Портативна бібліотека" +msgstr "FolderTypeLibrary" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:454 msgid "FolderTypeMusic" -msgstr "" +msgstr "FolderTypeMusic" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:463 msgid "FolderTypeMusicIcons" -msgstr "" +msgstr "FolderTypeMusicIcons" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:472 msgid "FolderTypeNetworkExplorer" -msgstr "" +msgstr "FolderTypeNetworkExplorer" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:481 -#, fuzzy msgid "FolderTypeNotSpecified" -msgstr "Не вказана назва файлу" +msgstr "FolderTypeNotSpecified" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:490 msgid "FolderTypeOpenSearch" -msgstr "" +msgstr "FolderTypeOpenSearch" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:499 msgid "FolderTypeOtherUsers" -msgstr "" +msgstr "FolderTypeOtherUsers" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:508 msgid "FolderTypePictures" -msgstr "" +msgstr "FolderTypePictures" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:517 -#, fuzzy msgid "FolderTypePrinters" -msgstr "Параметри-типи" +msgstr "FolderTypePrinters" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:526 msgid "FolderTypeRecordedTV" -msgstr "" +msgstr "FolderTypeRecordedTV" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:535 msgid "FolderTypeRecycleBin" -msgstr "" +msgstr "FolderTypeRecycleBin" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:544 msgid "FolderTypeSavedGames" -msgstr "" +msgstr "FolderTypeSavedGames" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:553 msgid "FolderTypeSearchConnector" -msgstr "" +msgstr "FolderTypeSearchConnector" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:562 -#, fuzzy msgid "FolderTypeSearches" -msgstr "Очистити список останніх пошуків" +msgstr "FolderTypeSearches" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:571 -#, fuzzy msgid "FolderTypeSearchResults" -msgstr "Результати пошуку" +msgstr "FolderTypeSearchResults" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:580 msgid "FolderTypeSoftwareExplorer" -msgstr "" +msgstr "FolderTypeSoftwareExplorer" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:589 msgid "FolderTypeUserFiles" -msgstr "" +msgstr "FolderTypeUserFiles" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:598 msgid "FolderTypeUserLibraries" -msgstr "" +msgstr "FolderTypeUserLibraries" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:607 msgid "FolderTypeVideos" -msgstr "" +msgstr "FolderTypeVideos" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:616 msgid "IsExpandedModeCannotBeChanged" -msgstr "" +msgstr "IsExpandedModeCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:625 msgid "JumpListCustomCategoriesDisabled" -msgstr "" +msgstr "JumpListCustomCategoriesDisabled" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:634 msgid "JumpListFileTypeNotRegistered" -msgstr "" +msgstr "JumpListFileTypeNotRegistered" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:643 msgid "JumpListLinkPathRequired" -msgstr "" +msgstr "JumpListLinkPathRequired" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:652 msgid "JumpListLinkTitleRequired" -msgstr "" +msgstr "JumpListLinkTitleRequired" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:661 msgid "JumpListNegativeOrdinalPosition" -msgstr "" +msgstr "JumpListNegativeOrdinalPosition" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:670 msgid "KnownFolderInvalidGuid" -msgstr "" +msgstr "KnownFolderInvalidGuid" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:679 msgid "KnownFolderParsingName" -msgstr "" +msgstr "KnownFolderParsingName" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:688 msgid "MessageListenerCannotCreateWindow" -msgstr "" +msgstr "MessageListenerCannotCreateWindow" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:697 msgid "MessageListenerClassNotRegistered" -msgstr "" +msgstr "MessageListenerClassNotRegistered" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:706 msgid "MessageListenerFilterUnableToRegister" -msgstr "" +msgstr "MessageListenerFilterUnableToRegister" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:715 msgid "MessageListenerFilterUnknownListenerHandle" -msgstr "" +msgstr "MessageListenerFilterUnknownListenerHandle" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:724 msgid "MessageListenerNoWindowHandle" -msgstr "" +msgstr "MessageListenerNoWindowHandle" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:733 msgid "NavigateToShortcutCannotBeChanged" -msgstr "" +msgstr "NavigateToShortcutCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:742 msgid "NavigationLogNullParent" -msgstr "" +msgstr "NavigationLogNullParent" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:751 msgid "NotImplementedException" -msgstr "" +msgstr "NotImplementedException" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:760 msgid "OverwritePromptCannotBeChanged" -msgstr "" +msgstr "OverwritePromptCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:769 msgid "PropertyCollectionCanonicalInvalidIndex" -msgstr "" +msgstr "PropertyCollectionCanonicalInvalidIndex" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:778 msgid "PropertyCollectionInvalidIndex" -msgstr "" +msgstr "PropertyCollectionInvalidIndex" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:787 msgid "PropertyCollectionNullCanonicalName" -msgstr "" +msgstr "PropertyCollectionNullCanonicalName" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:796 msgid "RadioButtonListIndexOutOfBounds" -msgstr "" +msgstr "RadioButtonListIndexOutOfBounds" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:805 msgid "RestoreDirectoryCannotBeChanged" -msgstr "" +msgstr "RestoreDirectoryCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:814 -#, fuzzy msgid "SaveFileNullItem" -msgstr "Зберегти файли" +msgstr "SaveFileNullItem" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:823 msgid "SearchConditionFactoryInvalidProperty" -msgstr "" +msgstr "SearchConditionFactoryInvalidProperty" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:832 msgid "ShellExceptionDefaultText" -msgstr "" +msgstr "ShellExceptionDefaultText" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:841 msgid "ShellHelperGetParsingNameFailed" -msgstr "" +msgstr "ShellHelperGetParsingNameFailed" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:850 msgid "ShellInvalidCanonicalName" -msgstr "" +msgstr "ShellInvalidCanonicalName" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:859 msgid "ShellLibraryDefaultSaveFolderNotFound" -msgstr "" +msgstr "ShellLibraryDefaultSaveFolderNotFound" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:868 msgid "ShellLibraryEmptyName" -msgstr "" +msgstr "ShellLibraryEmptyName" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:877 msgid "ShellLibraryFolderNotFound" -msgstr "" +msgstr "ShellLibraryFolderNotFound" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:886 msgid "ShellLibraryInvalidFolderType" -msgstr "" +msgstr "ShellLibraryInvalidFolderType" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:895 -#, fuzzy msgid "ShellLibraryInvalidLibrary" -msgstr "Спільна бібліотека" +msgstr "ShellLibraryInvalidLibrary" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:904 msgid "ShellObjectCannotGetDisplayName" -msgstr "" +msgstr "ShellObjectCannotGetDisplayName" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:913 msgid "ShellObjectCollectionArrayTooSmall" -msgstr "" +msgstr "ShellObjectCollectionArrayTooSmall" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:922 msgid "ShellObjectCollectionEmptyCollection" -msgstr "" +msgstr "ShellObjectCollectionEmptyCollection" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:931 msgid "ShellObjectCollectionInsertReadOnly" -msgstr "" +msgstr "ShellObjectCollectionInsertReadOnly" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:940 msgid "ShellObjectCollectionRemoveReadOnly" -msgstr "" +msgstr "ShellObjectCollectionRemoveReadOnly" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:949 -#, fuzzy msgid "ShellObjectCreationFailed" -msgstr "Створення об'єкта" +msgstr "ShellObjectCreationFailed" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:958 msgid "ShellObjectFactoryPlatformNotSupported" -msgstr "" +msgstr "ShellObjectFactoryPlatformNotSupported" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:967 msgid "ShellObjectFactoryUnableToCreateItem" -msgstr "" +msgstr "ShellObjectFactoryUnableToCreateItem" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:976 msgid "ShellObjectWatcherRegisterFailed" -msgstr "" +msgstr "ShellObjectWatcherRegisterFailed" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:985 msgid "ShellObjectWatcherUnableToChangeEvents" -msgstr "" +msgstr "ShellObjectWatcherUnableToChangeEvents" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:994 msgid "ShellPropertyCannotSetProperty" -msgstr "" +msgstr "ShellPropertyCannotSetProperty" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1003 msgid "ShellPropertyFactoryConstructorNotFound" -msgstr "" +msgstr "ShellPropertyFactoryConstructorNotFound" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1012 msgid "ShellPropertySetValue" -msgstr "" +msgstr "ShellPropertySetValue" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1021 msgid "ShellPropertyUnableToGetWritableProperty" -msgstr "" +msgstr "ShellPropertyUnableToGetWritableProperty" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1030 msgid "ShellPropertyValueTruncated" -msgstr "" +msgstr "ShellPropertyValueTruncated" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1039 msgid "ShellPropertyWindows7" -msgstr "" +msgstr "ShellPropertyWindows7" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1048 msgid "ShellPropertyWrongType" -msgstr "" +msgstr "ShellPropertyWrongType" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1057 msgid "ShellSearchFolderUnableToSetSortColumns" -msgstr "" +msgstr "ShellSearchFolderUnableToSetSortColumns" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1066 msgid "ShellSearchFolderUnableToSetVisibleColumns" -msgstr "" +msgstr "ShellSearchFolderUnableToSetVisibleColumns" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1075 msgid "ShellThumbnailCurrentSizeRange" -msgstr "" +msgstr "ShellThumbnailCurrentSizeRange" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1084 msgid "ShellThumbnailDoesNotHaveThumbnail" -msgstr "" +msgstr "ShellThumbnailDoesNotHaveThumbnail" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1093 msgid "ShellThumbnailNoHandler" -msgstr "" +msgstr "ShellThumbnailNoHandler" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1102 msgid "ShellThumbnailSizeCannotBe0" -msgstr "" +msgstr "ShellThumbnailSizeCannotBe0" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1111 msgid "ShowHiddenItemsCannotBeChanged" -msgstr "" +msgstr "ShowHiddenItemsCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1120 msgid "ShowPlacesListCannotBeChanged" -msgstr "" +msgstr "ShowPlacesListCannotBeChanged" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1129 msgid "StockIconInvalidGuid" -msgstr "" +msgstr "StockIconInvalidGuid" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1138 msgid "TabbedThumbnailZeroChildHandle" -msgstr "" +msgstr "TabbedThumbnailZeroChildHandle" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1147 msgid "TabbedThumbnailZeroParentHandle" -msgstr "" +msgstr "TabbedThumbnailZeroParentHandle" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1156 msgid "TasbarWindowProxyWindowSet" -msgstr "" +msgstr "TasbarWindowProxyWindowSet" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1165 msgid "TaskbarManagerValidWindowRequired" -msgstr "" +msgstr "TaskbarManagerValidWindowRequired" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1174 msgid "TaskbarWindowEmptyButtonArray" -msgstr "" +msgstr "TaskbarWindowEmptyButtonArray" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1183 msgid "TaskbarWindowManagerButtonsAlreadyAdded" -msgstr "" +msgstr "TaskbarWindowManagerButtonsAlreadyAdded" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1192 msgid "TaskbarWindowValueSet" -msgstr "" +msgstr "TaskbarWindowValueSet" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1201 msgid "ThumbnailManagerControlNotAdded" -msgstr "" +msgstr "ThumbnailManagerControlNotAdded" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1210 msgid "ThumbnailManagerInvalidHandle" -msgstr "" +msgstr "ThumbnailManagerInvalidHandle" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1219 msgid "ThumbnailManagerPreviewAdded" -msgstr "" +msgstr "ThumbnailManagerPreviewAdded" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1228 msgid "ThumbnailManagerPreviewNotAdded" -msgstr "" +msgstr "ThumbnailManagerPreviewNotAdded" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1237 msgid "ThumbnailToolbarManagerMaxButtons" -msgstr "" +msgstr "ThumbnailToolbarManagerMaxButtons" #: ../src/addins/WindowsPlatform/WindowsAPICodePack/Shell/Resources/LocalizedMessages.Designer.cs:1246 msgid "ThumbnailToolbarManagerNullEmptyArray" -msgstr "" +msgstr "ThumbnailToolbarManagerNullEmptyArray" #: ../src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/IconButton.xaml.cs:216 -#, fuzzy msgid "Stop currently running operation" -msgstr "Припинити побудову або виконання застосунку" +msgstr "Припинити поточну операцію" #: ../src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/IconButton.xaml.cs:218 -#, fuzzy msgid "Run current startup project" -msgstr "Запустити поточний проект" +msgstr "Запустити поточний початковий проект" #: ../src/addins/WindowsPlatform/WindowsPlatform/MainToolbar/IconButton.xaml.cs:220 -#, fuzzy msgid "Build current startup project" -msgstr "Побудувати поточний проект" +msgstr "Побудувати поточний початковий проект" #: ../external/ikvm/reflect/Projection.cs:19 msgid "" @@ -21453,7 +21170,7 @@ msgstr "Доступні оновлення" #: ../external/mono-addins/Mono.Addins.Gui/Mono.Addins.Gui/AddinInfoView.cs:2 msgid "This add-in can't be loaded due to missing dependencies" -msgstr "" +msgstr "Цей додаток неможливо завантажити через порушення залежностей" #: ../external/mono-addins/Mono.Addins.Gui/Mono.Addins.Gui/AddinInfoView.cs:2 msgid "Required: {0} v{1}, found v{2}" @@ -21518,7 +21235,7 @@ msgstr "Інтерфейс {0} змінено." #: ../external/nrefactory/ICSharpCode.NRefactory/Analysis/AbiComparer.cs:12 msgid "Type definition {0} is missing." -msgstr "" +msgstr "Пропущено опис типу {0}." #: ../external/nrefactory/ICSharpCode.NRefactory/Analysis/AbiComparer.cs:17 msgid "Namespace {0} is missing." @@ -21556,15 +21273,15 @@ msgstr "На віртуальний" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/AddAnotherAccessorCodeRefactoringProvider.cs:7 #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/AddAnotherAccessorCodeRefactoringProvider.cs:6 msgid "Add another accessor" -msgstr "" +msgstr "Додати інший метод доступу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddAnotherAccessorAction.cs:2 msgid "Add setter" -msgstr "" +msgstr "Додати setter" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddAnotherAccessorAction.cs:2 msgid "Add getter" -msgstr "" +msgstr "Додати getter" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddArgumentNameAction.cs:2 msgid "Add name for argument" @@ -21620,21 +21337,21 @@ msgstr "Перетворити на лямбда" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertAsToCastAction.cs:1 msgid "Convert 'as' to cast." -msgstr "" +msgstr "Перетворити 'as' на вказівку типу." #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertAsToCastAction.cs:1 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ReplaceSafeCastWithDirectCastCodeRefactoringProvider.cs:4 msgid "Convert 'as' to cast" -msgstr "" +msgstr "Перетворити 'as' на вказівку типу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertCastToAsAction.cs:2 msgid "Convert cast to 'as'." -msgstr "" +msgstr "Перетворити вказівку типу на 'as'." #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertCastToAsAction.cs:2 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ReplaceDirectCastWithSafeCastCodeRefactoringProvider.cs:2 msgid "Convert cast to 'as'" -msgstr "" +msgstr "Перетворити вказівку типу на 'as'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertDecToHexAction.cs:1 msgid "Convert dec to hex." @@ -21705,7 +21422,7 @@ msgstr "Перетворити неявну реалізацію на явну" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertLambdaBodyExpressionToStatementAction.cs:1 msgid "Converts expression of lambda body to statement" -msgstr "" +msgstr "Перетворити вираз тіла лямбда на інструкцію" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertLambdaBodyExpressionToStatementAction.cs:3 msgid "Convert to lambda statement" @@ -21713,7 +21430,7 @@ msgstr "Перетворити на інструкцію lambda" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertLambdaBodyStatementToExpressionAction.cs:1 msgid "Converts statement of lambda body to expression" -msgstr "" +msgstr "Перетворити інструкцію тіла лямбда на вираз" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertLambdaBodyStatementToExpressionAction.cs:2 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertMethodGroupToLambdaAction.cs:2 @@ -21740,7 +21457,7 @@ msgstr "Перетворити на анонімний метод" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertMethodGroupToLambdaAction.cs:1 msgid "Convert method group to lambda expression" -msgstr "" +msgstr "Перетворити групу методів на лямбда-вираз" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertSwitchToIfAction.cs:2 msgid "Convert 'switch' to 'if'" @@ -21986,7 +21703,7 @@ msgstr "Створити відсутні мітки switch" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ImplementAbstractMembersAction.cs:1 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ImplementAbstractMembersAction.cs:5 msgid "Implement abstract members" -msgstr "" +msgstr "Реалізувати абстрактні члени" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ImplementInterfaceAction.cs:1 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ImplementInterfaceAction.cs:3 @@ -22021,7 +21738,7 @@ msgstr "Вставити підпис анонімного методу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/IntroduceConstantAction.cs:3 msgid "Introduce constant" -msgstr "" +msgstr "Створити константу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/IntroduceConstantAction.cs:7 msgid "Create local constant" @@ -22038,16 +21755,16 @@ msgstr "Створити константу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/IntroduceConstantAction.cs:8 msgid "Create local constant (replace '{0}' occurrences)" -msgstr "" +msgstr "Створити локальну константу (замінити входження '{0}')" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/IntroduceConstantAction.cs:9 msgid "Create constant field (replace '{0}' occurrences)" -msgstr "" +msgstr "Створити поле-константу (замінити входження '{0}')" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/IntroduceFormatItemAction.cs:2 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/IntroduceFormatItemAction.cs:3 msgid "Introduce format item" -msgstr "" +msgstr "Створити елемент формату" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/InvertConditionalOperatorAction.cs:1 msgid "Invert conditional operator" @@ -22071,7 +21788,7 @@ msgstr "Інвертувати If і спростити" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/InvertIfAndSimplify.cs:4 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/SimplifyIfInLoopsFlowAction.cs:2 msgid "Simplify if in loops" -msgstr "" +msgstr "Спростити if у циклах" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/InvertLogicalExpressionAction.cs:1 msgid "Invert logical expression" @@ -22112,7 +21829,7 @@ msgstr "Об'єднати рядки" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/LinqQueryToFluentAction.cs:1 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/LinqQueryToFluentAction.cs:4 msgid "Convert LINQ query to fluent syntax" -msgstr "" +msgstr "Перетворити запит LINQ до плинного синтаксису" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/LinqFluentToQueryAction.cs:7 msgid "Convert to query syntax" @@ -22162,7 +21879,7 @@ msgstr "вставити в 'using'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/RemoveBackingStoreAction.cs:1 msgid "Remove backing store for property" -msgstr "" +msgstr "Вилучити резервне сховище для властивості" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/RemoveBackingStoreAction.cs:2 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/Opportunities/ConvertToAutoPropertyIssue.cs:6 @@ -22191,7 +21908,7 @@ msgstr "Вилучити специфікатор типу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/RemoveRegionAction.cs:1 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/RemoveRegionAction.cs:6 msgid "Remove region" -msgstr "" +msgstr "Вилучити ділянку" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ReplaceEmptyStringAction.cs:1 msgid "Use string.Empty" @@ -22291,11 +22008,11 @@ msgstr "" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/NegativeRelationalExpressionIssue.cs:11 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NegativeRelationalExpressionAnalyzer.cs:1 msgid "Simplify negative relational expression" -msgstr "" +msgstr "Спростити вираз з запереченням відношення" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/NotImplementedExceptionIssue.cs:1 msgid "Show NotImplementedExceptions" -msgstr "" +msgstr "Показати NotImplementedExceptions" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/NotImplementedExceptionIssue.cs:3 msgid "NotImplemented exception thrown" @@ -22365,11 +22082,11 @@ msgstr "Параметр може бути {0}" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/NotWorking/VariableDeclaredInWideScopeIssue.cs:18 msgid "Variable could be moved to a nested scope" -msgstr "" +msgstr "Змінну можна перемістити всередину" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/NotWorking/VariableDeclaredInWideScopeIssue.cs:34 msgid "Move to nested scope" -msgstr "" +msgstr "Перемістити всередину" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/BaseMethodCallWithDefaultParameterIssue.cs:1 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/BaseMethodCallWithDefaultParameterIssue.cs:12 @@ -22390,7 +22107,7 @@ msgstr "" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/CanBeReplacedWithTryCastAndCheckForNullIssue.cs:2 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/CanBeReplacedWithTryCastAndCheckForNullIssue.cs:5 msgid "Type check and casts can be replaced with 'as' and null check" -msgstr "" +msgstr "Перевірку і вказівки типу можна замінити на 'as' без перевірок" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/CompareOfFloatsByEqualityOperatorIssue.cs:2 msgid "Compare floating point numbers with equality operator" @@ -22566,7 +22283,7 @@ msgstr "Вилучити стандартне значення параметр #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/OptionalParameterHierarchyMismatchIssue.cs:12 msgid "Change default value to {0}" -msgstr "" +msgstr "Змінити типове значення на {0}" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/OptionalParameterHierarchyMismatchIssue.cs:12 msgid "Parameter {0} has default value in base method '{1}'" @@ -22644,11 +22361,11 @@ msgstr "" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/ValueParameterNotUsedIssue.cs:3 msgid "The add accessor does not use the 'value' parameter" -msgstr "" +msgstr "Метод доступу add не використовує параметра 'значення'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/ValueParameterNotUsedIssue.cs:3 msgid "The remove accessor does not use the 'value' parameter" -msgstr "" +msgstr "Метод доступу remove не використовує параметра 'значення'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CompilerWarnings/CS1573ParameterHasNoMatchingParamTagIssue.cs:1 msgid "Parameter has no matching param tag in the XML comment" @@ -22656,7 +22373,7 @@ msgstr "Параметр не має відповідного тегу param у #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CompilerWarnings/CS1573ParameterHasNoMatchingParamTagIssue.cs:17 msgid "Missing xml documentation for Parameter '{0}'" -msgstr "" +msgstr "Відсутня документація xml для параметра '{0}'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CompilerWarnings/CS1573ParameterHasNoMatchingParamTagIssue.cs:17 msgid "Create xml documentation for Parameter '{0}'" @@ -22682,7 +22399,7 @@ msgstr "Полю лише для читання '{0}' не надано знач #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CompilerWarnings/UnassignedReadonlyFieldIssue.cs:4 msgid "Initialize field from constructor parameter" -msgstr "" +msgstr "Ініціалізувати поле з параметра конструктора" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/ConstraintViolations/InconsistentNamingIssue/InconsistentNamingIssue.cs:1 msgid "Inconsistent Naming" @@ -22734,7 +22451,7 @@ msgstr "'{0}' має починатися з малої літери. (Прав #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/ConstraintViolations/InconsistentNaming/NamingRule.cs:35 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/ConstraintViolations/InconsistentNaming/NamingRule.cs:36 msgid "'{0}' should not separate words with an underscore. (Rule '{1}')" -msgstr "" +msgstr "'{0}' не має відокремлювати слова знаком підкреслення. (Правило '{1}')" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/ConstraintViolations/InconsistentNamingIssue/NamingRule.cs:24 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/ConstraintViolations/InconsistentNamingIssue/NamingRule.cs:25 @@ -22782,12 +22499,12 @@ msgstr "Перетворити анонімний метод на групу м #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/Opportunities/ConvertClosureToMethodGroupIssue.cs:10 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertClosureToMethodGroupAnalyzer.cs:19 msgid "Anonymous method can be simplified to method group" -msgstr "" +msgstr "Анонімний метод можна спростити до групи методів" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/Opportunities/ConvertClosureToMethodGroupIssue.cs:10 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertClosureToMethodGroupAnalyzer.cs:19 msgid "Lambda expression can be simplified to method group" -msgstr "" +msgstr "Лямбда-вираз можна спростити до групи методів" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/Opportunities/ConvertClosureToMethodGroupIssue.cs:10 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertClosureToMethodGroupCodeFixProvider.cs:4 @@ -22861,11 +22578,11 @@ msgstr "Використати 'var'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/AccessToStaticMemberViaDerivedTypeIssue.cs:1 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/AccessToStaticMemberViaDerivedTypeAnalyzer.cs:1 msgid "Call to static member via a derived class" -msgstr "" +msgstr "Виклик статичного члена через клас-нащадок" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/AccessToStaticMemberViaDerivedTypeIssue.cs:8 msgid "Static method invoked via derived type" -msgstr "" +msgstr "Виклик статичного методу через тип-нащадок" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/AccessToStaticMemberViaDerivedTypeIssue.cs:9 msgid "Use base qualifier" @@ -23191,12 +22908,12 @@ msgstr "Замінити викликом 'Any()'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/UseMethodIsInstanceOfTypeIssue.cs:1 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseMethodIsInstanceOfTypeAnalyzer.cs:1 msgid "Use method IsInstanceOfType" -msgstr "" +msgstr "Використати метод IsInstanceOfType" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/UseMethodIsInstanceOfTypeIssue.cs:4 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseMethodIsInstanceOfTypeAnalyzer.cs:1 msgid "Use method IsInstanceOfType (...)" -msgstr "" +msgstr "Використати метод IsInstanceOfType (...)" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/UseMethodIsInstanceOfTypeIssue.cs:4 msgid "Replace with call to IsInstanceOfType" @@ -23266,7 +22983,7 @@ msgstr "Вилучити 'base.'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/RedundantBoolCompareIssue.cs:2 msgid "Comparison of boolean with 'true' or 'false'" -msgstr "" +msgstr "Порівняння логічного значення з 'true' або 'false'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/RedundantBoolCompareIssue.cs:10 msgid "Comparison with 'true' is redundant" @@ -23299,7 +23016,7 @@ msgstr "Зайвий виклик" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/RedundantCastIssue.cs:11 msgid "Type cast is redundant" -msgstr "" +msgstr "Зайва вказівка типу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/RedundantCastIssue.cs:11 msgid "Remove cast to '{0}'" @@ -23665,7 +23382,7 @@ msgstr "" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Uncategorized/DontUseLinqWhenItsVerboseAndInefficientIssue.cs:21 msgid "Replace method by simpler version" -msgstr "" +msgstr "Замінити метод простішою версією" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertIfStatementToConditionalTernaryExpressionAction.cs:1 msgid "Convert 'if' to '?:'" @@ -23760,7 +23477,7 @@ msgstr "Перетворити на 'foreach'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/UseAsAndNullCheckAction.cs:1 msgid "Use 'as' and null check" -msgstr "" +msgstr "Використати 'as' і перевірку на null" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/UseAsAndNullCheckAction.cs:8 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/UseAsAndNullCheckAction.cs:14 @@ -23769,7 +23486,7 @@ msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/UseAsAndNullCheckCodeRefactoringProvider.cs:10 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/UseAsAndNullCheckCodeRefactoringProvider.cs:24 msgid "Use 'as' and check for null" -msgstr "" +msgstr "Використати 'as' і перевірку на null" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ConvertForToWhileAction.cs:1 msgid "Convert 'for' loop to 'while'" @@ -23800,7 +23517,7 @@ msgstr "Вилучити зайву гілку 'default'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0126ReturnMustBeFollowedByAnyExpression.cs:1 msgid "CS0126: A method with return type cannot return without value." -msgstr "" +msgstr "CS0126: Метод з типом повернення повинен повертати значення." #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0126ReturnMustBeFollowedByAnyExpression.cs:16 msgid "Return default value" @@ -24027,12 +23744,12 @@ msgstr "'string.Compare' є культурозалежним" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/UseArrayCreationExpressionIssue.cs:2 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseArrayCreationExpressionAnalyzer.cs:1 msgid "Use array creation expression" -msgstr "" +msgstr "Використати вираз створення масиву" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/UseArrayCreationExpressionIssue.cs:7 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseArrayCreationExpressionAnalyzer.cs:1 msgid "Use array create expression" -msgstr "" +msgstr "Використати вираз створення масиву" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/UseArrayCreationExpressionIssue.cs:7 msgid "Replace with 'new'" @@ -24120,7 +23837,7 @@ msgstr "Методи розширення допускаються лише у #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CompilerErrors/ProhibitedModifiersIssue.cs:23 msgid "Static constructors can't have any other modifier" -msgstr "" +msgstr "Статичний конструктор не може мати інших модифікаторів" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CompilerErrors/ProhibitedModifiersIssue.cs:23 msgid "Remove prohibited modifier" @@ -24144,7 +23861,7 @@ msgstr "Виділити умову у внутрішню інструкцію ' #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ReverseDirectionForForLoopAction.cs:1 msgid "Reverse the direction of a for loop" -msgstr "" +msgstr "Змінити напрямок циклу for" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ReverseDirectionForForLoopAction.cs:24 msgid "Reverse 'for' loop" @@ -24325,7 +24042,7 @@ msgstr "Замінити на '{0} -= 1'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ReplaceWithOperatorAssignmentAction.cs:1 msgid "Replace assignment with operator assignment" -msgstr "" +msgstr "Замінити присвоєння на присвоєння з операцією" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ReplaceWithOperatorAssignmentAction.cs:3 msgid "Replace with '{0}='" @@ -24333,7 +24050,7 @@ msgstr "Замінити на '{0}='" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ReplaceOperatorAssignmentWithAssignmentAction.cs:1 msgid "Replace operator assignment with assignment" -msgstr "" +msgstr "Замінити присвоєння з операцією на присвоєння" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/ReplaceOperatorAssignmentWithAssignmentAction.cs:2 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplaceOperatorAssignmentWithAssignmentCodeRefactoringProvider.cs:3 @@ -24445,7 +24162,7 @@ msgstr "Вилучити невикористану мітку" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:1 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/MemberHidesStaticFromOuterClassAnalyzer.cs:1 msgid "Member hides static member from outer class" -msgstr "" +msgstr "Член приховує статичного члена з зовнішнього класу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/MemberHidesStaticFromOuterClassIssue.cs:7 msgid "field" @@ -24645,7 +24362,7 @@ msgstr "Вилучити зайву специфікацію типу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/ArrayCreationCanBeReplacedWithArrayInitializerIssue.cs:2 msgid "Array creation can be replaced with array initializer" -msgstr "" +msgstr "Створення масиву можна замінити ініціалізацією масиву" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/RedundanciesInCode/ArrayCreationCanBeReplacedWithArrayInitializerIssue.cs:6 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/ArrayCreationCanBeReplacedWithArrayInitializerAnalyzer.cs:1 @@ -24686,17 +24403,18 @@ msgstr "Поле лише для читання не може бути ціль #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/ObjectCreationAsStatementIssue.cs:1 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ObjectCreationAsStatementAnalyzer.cs:1 msgid "Possible unassigned object created by 'new'" -msgstr "" +msgstr "Можливо, не присвоєно значення об'єкту, створеному за допомогою 'new'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/ObjectCreationAsStatementIssue.cs:3 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ObjectCreationAsStatementAnalyzer.cs:1 msgid "Possible unassigned object created by 'new' expression" msgstr "" +"Можливо, не присвоєно значення об'єкту, створеному за допомогою виразу 'new'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/NotResolvedInTextIssue.cs:2 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/NotResolvedInTextAnalyzer.cs:1 msgid "Cannot resolve symbol in text argument" -msgstr "" +msgstr "Не вдалось розібрати символ у текстовому аргументі" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/NotResolvedInTextIssue.cs:21 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/NotResolvedInTextIssue.cs:24 @@ -24793,6 +24511,8 @@ msgid "" "Given expression is always of the provided type. Consider comparing with " "'null' instead" msgstr "" +"Даний вираз завжди має вказаний тип. Можливо, варто натомість " +"порівняти з 'null'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/PolymorphicFieldLikeEventInvocationIssue.cs:1 msgid "Invocation of polymorphic field event" @@ -24807,13 +24527,13 @@ msgstr "Подія '{0}' може з'явитись лише ліворуч ві #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/CodeQuality/PolymorphicFieldLikeEventInvocationIssue.cs:3 msgid "Invocation of polymorphic field like event" -msgstr "" +msgstr "Виклик поліморфного поля як події" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/PossibleMistakenCallToGetTypeIssue.cs:1 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/PossibleMistakenCallToGetTypeIssue.cs:4 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/PossibleMistakenCallToGetTypeAnalyzer.cs:1 msgid "Possible mistaken call to 'object.GetType()'" -msgstr "" +msgstr "Можливо, помилковий виклик 'object.GetType()'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/PossibleMistakenCallToGetTypeIssue.cs:4 msgid "Remove call to 'object.GetType()'" @@ -24832,9 +24552,8 @@ msgid "CS0618: Member is obsolete" msgstr "CS0618: Член застарілий" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs:7 -#, fuzzy msgid "'{0}' is obsolete: '{1}'" -msgstr "'{0}' є застарілим" +msgstr "'{0}' є застарілим: '{1}'" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/CS0618UsageOfObsoleteMemberIssue.cs:7 msgid "'{0}' is obsolete" @@ -24897,10 +24616,12 @@ msgid "" "CS1729: The type '{0}' does not contain a constructor that takes '{1}' " "arguments" msgstr "" +"CS1729: Тип '{0}' не містить конструктора, який отримує '{1}' " +"аргументів" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/ParameterOnlyAssignedIssue.cs:1 msgid "Parameter is only assigned" -msgstr "" +msgstr "Параметру лише надано значення" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/ParameterOnlyAssignedIssue.cs:5 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/ParameterOnlyAssignedAnalyzer.cs:1 @@ -24916,7 +24637,7 @@ msgstr "" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CallToObjectEqualsViaBaseIssue.cs:4 msgid "Change invocation to call Object.ReferenceEquals" -msgstr "" +msgstr "Замінити виклик на виклик Object.ReferenceEquals" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/ConstantConditionIssue.cs:2 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/ConstantConditionAnalyzer.cs:1 @@ -24956,7 +24677,7 @@ msgstr "Тип має бути оголошений у просторі назв #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CastExpressionOfIncompatibleTypeIssue.cs:2 #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CastExpressionOfIncompatibleTypeIssue.cs:9 msgid "Type cast expression of incompatible type" -msgstr "" +msgstr "Вказівка несумісного типу" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/CompilerErrors/ExpressionIsNeverOfProvidedTypeIssue.cs:2 msgid "CS0184:Given expression is never of the provided type" @@ -24992,36 +24713,31 @@ msgstr "Вилучити недосяжний код" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Custom/UnreachableCodeIssue.cs:25 msgid "Comment unreachable code" -msgstr "" +msgstr "Закоментувати недосяжний код" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToMinIssue.cs:1 -#, fuzzy msgid "Replace with single call to Min(...)" -msgstr "Замінити одиничним викликом Any(...)" +msgstr "Замінити одиничним викликом Min(...)" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToMaxIssue.cs:1 -#, fuzzy msgid "Replace with single call to Max(...)" -msgstr "Замінити одиничним викликом Last(...)" +msgstr "Замінити одиничним викликом Max(...)" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAverageIssue.cs:1 -#, fuzzy msgid "Replace with single call to Average(...)" -msgstr "Замінити одиничним викликом Any(...)" +msgstr "Замінити одиничним викликом Average(...)" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAverageIssue.cs:8 msgid "Redundant Select() call with predicate followed by {0}()" msgstr "" #: ../external/nrefactory/ICSharpCode.NRefactory.CSharp.Refactoring/CodeIssues/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSumIssue.cs:1 -#, fuzzy msgid "Replace with single call to Sum(...)" -msgstr "Замінити одиничним викликом Count(...)" +msgstr "Замінити одиничним викликом Sum(...)" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/AddNullCheckCodeRefactoringProvider.cs:13 -#, fuzzy msgid "Add null check" -msgstr "Додати перевірку, чи параметр - null" +msgstr "Додати перевірку на null" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ContractRequiresNotNullCodeRefactoringProvider.cs:2 msgid "Add contract requiring parameter must not be null" @@ -25029,12 +24745,11 @@ msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/AddCatchExceptionCodeRefactoringProvider.cs:3 msgid "To 'catch (Exception)'" -msgstr "" +msgstr "На 'catch (виняток)'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/AddExceptionDescriptionCodeRefactoringProvider.cs:4 -#, fuzzy msgid "Add exception description" -msgstr "Додати виняток до документації XML" +msgstr "Додати опис винятку" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/AddNewFormatItemCodeRefactoringProvider.cs:4 #, fuzzy @@ -25044,92 +24759,78 @@ msgstr "Запитувати _аргументи" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertAnonymousMethodToLambdaCodeRefactoringProvider.cs:3 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertLambdaStatementToExpressionCodeRefactoringProvider.cs:6 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertMethodGroupToLambdaCodeRefactoringProvider.cs:7 -#, fuzzy msgid "To lambda expression" -msgstr "Перетворити на вираз лямбда-вираз" +msgstr "На лямбда-вираз" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertCoalescingToConditionalExpressionCodeRefactoringProvider.cs:3 -#, fuzzy msgid "Replace '??' operator with '?:' expression" -msgstr "Замінити виразом з '?:'" +msgstr "Замінити оператор '??' на вираз '?:'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertDecToHexCodeRefactoringProvider.cs:2 #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertDecToHexCodeRefactoringProvider.cs:2 msgid "To hex" -msgstr "" +msgstr "На шістнадцяткове" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertEqualityOperatorToEqualsCodeRefactoringProvider.cs:1 -#, fuzzy msgid "To 'Equals' call" -msgstr "Використовувати 'Equals'" +msgstr "На виклик 'Equals'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertEqualityOperatorToReferenceEqualsCodeRefactoringProvider.cs:3 msgid "To 'ReferenceEquals' call" -msgstr "" +msgstr "На виклик 'ReferenceEquals'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertEqualsToEqualityOperatorCodeRefactoringProvider.cs:6 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertReferenceEqualsToEqualityOperatorCodeRefactoringProvider.cs:6 -#, fuzzy msgid "To '=='" -msgstr "Використовувати '=='" +msgstr "На '=='" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertEqualsToEqualityOperatorCodeRefactoringProvider.cs:6 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertReferenceEqualsToEqualityOperatorCodeRefactoringProvider.cs:6 -#, fuzzy msgid "To '!='" -msgstr "Використовувати '!='" +msgstr "На '!='" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertExplicitToImplicitImplementationCodeRefactoringProvider.cs:9 -#, fuzzy msgid "To implicit implementation" -msgstr "Перетворити явну реалізацію на неявну" +msgstr "На неявну реалізацію" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertForeachToForCodeRefactoringProvider.cs:4 -#, fuzzy msgid "To 'for'" -msgstr "'for'" +msgstr "На 'for'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertHexToDecCodeRefactoringProvider.cs:2 #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertHexToDecCodeRefactoringProvider.cs:2 msgid "To dec" -msgstr "" +msgstr "На десяткове" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertIfStatementToConditionalTernaryExpressionCodeRefactoringProvider.cs:11 -#, fuzzy msgid "To '?:' expression" -msgstr "Перетворити на вираз '?:'" +msgstr "На вираз '?:'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertIfStatementToSwitchStatementCodeRefactoringProvider.cs:5 -#, fuzzy msgid "To 'switch'" -msgstr "'switch'" +msgstr "На 'switch'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertImplicitToExplicitImplementationCodeRefactoringProvider.cs:7 -#, fuzzy msgid "To explicit implementation" -msgstr "Перетворити неявну реалізацію на явну" +msgstr "На явну реалізацію" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertLambdaBodyExpressionToStatementCodeRefactoringProvider.cs:4 -#, fuzzy msgid "To lambda statement" -msgstr "Перетворити на інструкцію lambda" +msgstr "На лямбда-вираз" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertLambdaToAnonymousMethodCodeRefactoringProvider.cs:3 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertMethodGroupToAnonymousMethodCodeRefactoringProvider.cs:7 -#, fuzzy msgid "To anonymous method" -msgstr "Анонімні методи" +msgstr "На анонімний метод" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertSwitchToIfCodeRefactoringProvider.cs:4 #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertSelectCaseToIfCodeRefactoringProvider.cs:5 -#, fuzzy msgid "To 'if'" -msgstr "'if'" +msgstr "На 'if'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/FlipOperatorOperandsCodeRefactoringProvider.cs:3 -#, fuzzy msgid "Flip '{0}' operands" -msgstr "Поміняти аргументи оператора '{0}'" +msgstr "Поміняти операнди '{0}'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/FlipRelationalOperatorArgumentsCodeRefactoringProvider.cs:3 #, fuzzy @@ -25137,71 +24838,59 @@ msgid "Flip '{0}' operator to '{1}'" msgstr "Поміняти аргументи оператора '{0}'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/InsertAnonymousMethodSignatureCodeRefactoringProvider.cs:2 -#, fuzzy msgid "Insert signature" -msgstr "Вставити підпис анонімного методу" +msgstr "Вставити підпис" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/InvertIfCodeRefactoringProvider.cs:1 #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/InvertIfCodeRefactoringProvider.cs:1 -#, fuzzy msgid "Invert 'if'" -msgstr "Інвертувати if" +msgstr "Інвертувати 'if'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/RemoveCatchExceptionCodeRefactoringProvider.cs:4 -#, fuzzy msgid "To 'catch'" -msgstr "'catch'" +msgstr "На 'catch'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/InvokeAsStaticMethodCodeRefactoringProvider.cs:5 -#, fuzzy msgid "To static invocation" -msgstr "Порушення обмежень" +msgstr "На статичний виклик" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/JoinLocalVariableDeclarationAndAssignmentCodeRefactoringProvider.cs:2 -#, fuzzy msgid "Join declaration and assignment" -msgstr "Об'єднати оголошення та присвоєння локальних змінних" +msgstr "Об'єднати оголошення та присвоєння" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/RemoveRegionEndRegionDirectivesCodeRefactoringProvider.cs:3 -#, fuzzy msgid "Remove region/endregion directives" -msgstr "Видалити зайві директиви using" +msgstr "Видалити директиви region/endregion" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ReplaceAutoPropertyWithPropertyAndBackingFieldCodeRefactoringProvider.cs:3 msgid "To property with backing field" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertAutoPropertyToPropertyCodeRefactoringProvider.cs:3 -#, fuzzy msgid "To computed property" -msgstr "Перетворити на автоматичну властивість" +msgstr "На обчислювану властивість" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ReplacePropertyWithBackingFieldWithAutoPropertyCodeRefactoringProvider.cs:2 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ReplacePropertyWithBackingFieldWithAutoPropertyCodeRefactoringProvider.cs:7 -#, fuzzy msgid "Convert to auto-property" msgstr "Перетворити на автоматичну властивість" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ReplaceExplicitTypeWithVarCodeRefactoringProvider.cs:6 -#, fuzzy msgid "To 'var'" -msgstr "Використати 'var'" +msgstr "На 'var'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ReplaceVarWithExplicitTypeCodeRefactoringProvider.cs:2 -#, fuzzy msgid "To explicit type" -msgstr "Використати явний тип" +msgstr "На явний тип" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/SplitIfWithAndConditionInTwoCodeRefactoringProvider.cs:5 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/SplitIfWithOrConditionInTwoCodeRefactoringProvider.cs:5 -#, fuzzy msgid "Split into two 'if' statements" -msgstr "Розділити інструкцію 'if'" +msgstr "Розділити на дві інструкції 'if'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/SplitLocalVariableDeclarationAndAssignmentCodeRefactoringProvider.cs:2 -#, fuzzy msgid "Split declaration and assignment" -msgstr "Розділити оголошення та присвоєння локальних змінних" +msgstr "Розділити оголошення та присвоєння" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertHasFlagsToBitwiseFlagComparisonCodeRefactoringProvider.cs:3 #, fuzzy @@ -25209,110 +24898,94 @@ msgid "To bitwise flag comparison" msgstr "Використати порівняння за порядком" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertBitwiseFlagComparisonToHasFlagsCodeRefactoringProvider.cs:4 -#, fuzzy msgid "To 'Enum.HasFlag'" -msgstr "Замінити на 'Enum.HasFlag'" +msgstr "На 'Enum.HasFlag'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/UseSystemStringEmptyCodeRefactoringProvider.cs:2 -#, fuzzy msgid "Use 'string.Empty'" -msgstr "Використати string.Empty" +msgstr "Використати 'string.Empty'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/UseSystemEnvironmentNewLineCodeRefactoringProvider.cs:2 msgid "Use 'System.Environment.NewLine'" -msgstr "" +msgstr "Використати 'System.Environment.NewLine'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertForToWhileCodeRefactoringProvider.cs:2 -#, fuzzy msgid "To 'while'" -msgstr "'while'" +msgstr "На 'while'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertDoWhileToWhileLoopCodeRefactoringProvider.cs:3 msgid "To 'while { ... }'" -msgstr "" +msgstr "На 'while { ... }'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplacePostfixExpressionWithAssignmentCodeRefactoringProvider.cs:3 -#, fuzzy msgid "Replace '{0}++' with '{0} += 1'" -msgstr "Замінити на '{0} += 1'" +msgstr "Замінити '{0}++' на '{0} += 1'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplacePostfixExpressionWithAssignmentCodeRefactoringProvider.cs:3 -#, fuzzy msgid "Replace '{0}--' with '{0} -= 1'" -msgstr "Замінити на '{0} -= 1'" +msgstr "Замінити '{0}--' на '{0} -= 1'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplaceWithOperatorAssignmentCodeRefactoringProvider.cs:1 -#, fuzzy msgid "To '{0}='" -msgstr "(з '{0}')" +msgstr "На '{0}='" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplaceAssignmentWithPostfixExpressionCodeRefactoringProvider.cs:6 -#, fuzzy msgid "To '{0}++'" -msgstr "(з '{0}')" +msgstr "На '{0}++'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ReplaceAssignmentWithPostfixExpressionCodeRefactoringProvider.cs:6 -#, fuzzy msgid "To '{0}--'" -msgstr "(з '{0}')" +msgstr "На '{0}--'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertShiftToMultiplyCodeRefactoringProvider.cs:2 msgid "To '*'" -msgstr "" +msgstr "На '*'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertShiftToMultiplyCodeRefactoringProvider.cs:2 msgid "To '/'" -msgstr "" +msgstr "На '/'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertMultiplyToShiftCodeRefactoringProvider.cs:4 msgid "To '<<'" -msgstr "" +msgstr "На '<<'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertMultiplyToShiftCodeRefactoringProvider.cs:4 msgid "To '>>'" -msgstr "" +msgstr "На '>>'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Custom/ConvertWhileToDoWhileLoopCodeRefactoringProvider.cs:3 -#, fuzzy msgid "To 'do...while'" -msgstr "Шаблон для циклу 'do...while'" +msgstr "На 'do...while'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/PublicConstructorInAbstractClass.cs:1 -#, fuzzy msgid "Constructor in abstract class should not be public" -msgstr "Конструктор в абстрактному класі не може бути загальнодоступним" +msgstr "Конструктор в абстрактному класі не може бути public" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeAny.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().Any()" -msgstr "Замінити викликом OfType<T>().{0}()" +msgstr "Замінити викликом OfType<T>().Any()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeAny.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().Any()'" -msgstr "Замінити на OfType<T>().Any()" +msgstr "Замінити на 'OfType<T>().Any()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/AdditionalOfTypeAnalyzer.cs:2 -#, fuzzy msgid "Replace with call to OfType<T> (extended cases)" -msgstr "Замінити на OfType<T> (extended)" +msgstr "Замінити викликом OfType<T> (розширені випадки)" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/AdditionalOfTypeAnalyzer.cs:2 -#, fuzzy msgid "Replace with 'OfType<T>'" -msgstr "Замінити на OfType<T>" +msgstr "Замінити на 'OfType<T>'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/CallToObjectEqualsViaBaseAnalyzer.cs:1 msgid "Finds potentially erroneous calls to Object.Equals" -msgstr "" +msgstr "Знаходить потенційно помилкові виклики Object.Equals" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/ConvertIfToAndExpressionAnalyzer.cs:1 -#, fuzzy msgid "Convert 'if' to '&&' expression" -msgstr "Перетворити 'if' на вираз '??'" +msgstr "Перетворити 'if' на вираз '&&'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/ConvertIfToAndExpressionAnalyzer.cs:4 -#, fuzzy msgid "Convert to '&&' expression" msgstr "Перетворити на вираз '&&'" @@ -25325,9 +24998,8 @@ msgid "Shows NotImplementedException throws in the quick task bar" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NotImplementedExceptionAnalyzer.cs:1 -#, fuzzy msgid "Not implemented" -msgstr "Розваги" +msgstr "Не реалізовано" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/RedundantAssignmentAnalyzer.cs:1 msgid "" @@ -25412,7 +25084,7 @@ msgstr "Перетворити на інструкцію 'return'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/LocalVariableHidesMemberAnalyzer.cs:1 msgid "Local variable has the same name as a member and hides it" -msgstr "" +msgstr "Назва локальної змінної збігається з назвою члена і приховує його" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/LocalVariableHidesMemberAnalyzer.cs:1 #, fuzzy @@ -25421,12 +25093,11 @@ msgstr "Локальна змінна '{0}' приховує поле '{1}'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/LongLiteralEndingLowerLAnalyzer.cs:1 msgid "Lowercase 'l' is often confused with '1'" -msgstr "" +msgstr "Малу 'l' часто плутають з '1'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/MethodOverloadWithOptionalParameterAnalyzer.cs:1 -#, fuzzy msgid "{0} with optional parameter is hidden by overload" -msgstr "Метод з необов'язковим параметром прихований перевантаженням" +msgstr "{0} з необов'язковим параметром прихований перевантаженням" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/NotResolvedInTextAnalyzer.cs:2 #, fuzzy @@ -25438,23 +25109,27 @@ msgid "" "Operator Is can be used instead of comparing object GetType() and instances " "of System.Type object" msgstr "" +"Замість порівняння об'єкта GetType() з примірником об'єкта System.Type " +"можна використати операцію Is" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/OptionalParameterHierarchyMismatchAnalyzer.cs:1 msgid "" "The value of an optional parameter in a method does not match the base method" msgstr "" +"Значення необов'язкового параметра у методі не відповідає базовому методу" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/OptionalParameterHierarchyMismatchAnalyzer.cs:1 msgid "Optional parameter value {0} differs from base {1} '{2}'" msgstr "" +"Значення необов'язкового параметра {0} відрізняється від базового {1} '{2}'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/OptionalParameterRefOutAnalyzer.cs:1 msgid "C# doesn't support optional 'ref' or 'out' parameters" -msgstr "" +msgstr "C# не підтримує необов'язкових параметрів 'ref' або 'out'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ParameterHidesMemberAnalyzer.cs:1 msgid "Parameter has the same name as a member and hides it" -msgstr "" +msgstr "Назва параметра збігається з назвою члена і приховує його" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/PolymorphicFieldLikeEventInvocationAnalyzer.cs:1 msgid "" @@ -25488,12 +25163,11 @@ msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ValueParameterNotUsedAnalyzer.cs:5 msgid "add accessor" -msgstr "" +msgstr "метод доступу add" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/ValueParameterNotUsedAnalyzer.cs:5 -#, fuzzy msgid "remove accessor" -msgstr "Видалити дужки" +msgstr "метод доступу remove" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CompilerWarnings/UnassignedReadonlyFieldAnalyzer.cs:1 #, fuzzy @@ -25506,14 +25180,12 @@ msgid "Non public methods are not found by NUnit" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertIfStatementToNullCoalescingExpressionAnalyzer.cs:1 -#, fuzzy msgid "Convert 'if' to '??'" -msgstr "Перетворити 'if' на '?:'" +msgstr "Перетворити 'if' на '??'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertNullableToShortFormAnalyzer.cs:1 -#, fuzzy msgid "Convert 'Nullable<T>' to the short form 'T?'" -msgstr "Перетворити 'Nullable<T>' на 'T?'" +msgstr "Перетворити 'Nullable<T>' на коротку форму 'T?'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertNullableToShortFormAnalyzer.cs:1 #, fuzzy @@ -25521,9 +25193,8 @@ msgid "Nullable type can be simplified" msgstr "Тип можна спростити до '{0}?'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertToLambdaExpressionAnalyzer.cs:1 -#, fuzzy msgid "Convert to lambda with expression" -msgstr "Перетворити на вираз лямбда-вираз" +msgstr "Перетворити на лямбда-вираз with" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/Opportunities/ConvertToStaticTypeAnalyzer.cs:1 msgid "" @@ -25606,69 +25277,61 @@ msgid "Finds redundant null coalescing expressions such as expr ?? expr" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/ForStatementConditionIsTrueAnalyzer.cs:1 -#, fuzzy msgid "" "true is redundant as for statement condition, thus can be safely ommited" -msgstr "'true' в якості умови є зайвим" +msgstr "true в якості умови є зайвим, тому може бути безпечно усунуте" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantAnonymousTypePropertyNameAnalyzer.cs:1 msgid "The name can be inferred from the initializer expression" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantArgumentDefaultValueAnalyzer.cs:1 -#, fuzzy msgid "Default argument value is redundant" -msgstr "Значення аргументу зайве" +msgstr "Стандартне значення аргументу зайве" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantArgumentDefaultValueAnalyzer.cs:1 -#, fuzzy msgid "The parameter is optional with the same default value" -msgstr "Вилучити стандартне значення параметра" +msgstr "Параметр не обов'язковий і якщо не вказаний, набуває такого ж значення" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantBaseQualifierAnalyzer.cs:1 -#, fuzzy msgid "'base.' is redundant and can safely be removed" -msgstr "'base.' зайве і може бути безпечно вилучене." +msgstr "'base.' зайве і може бути безпечно вилучене" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantBoolCompareAnalyzer.cs:1 -#, fuzzy msgid "Comparison of a boolean value with 'true' or 'false' constant" -msgstr "Порівняння з 'true' є зайвим" +msgstr "Порівняння логічного значення з константою 'true' або 'false'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantBoolCompareAnalyzer.cs:1 -#, fuzzy msgid "Comparison with '{0}' is redundant" -msgstr "Порівняння з 'true' є зайвим" +msgstr "Порівняння з '{0}' є зайвим" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantCaseLabelAnalyzer.cs:1 -#, fuzzy msgid "'case' label is redundant" -msgstr "Зайва інструкція 'unsafe'." +msgstr "Зайва мітка 'case'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantCatchClauseAnalyzer.cs:1 -#, fuzzy msgid "Catch clause with a single 'throw' statement is redundant" -msgstr "Пункт 'catch' з одиничним виразом 'throw' є зайвим" +msgstr "Пункт catch з одиничним виразом 'throw' є зайвим" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantCheckBeforeAssignmentAnalyzer.cs:1 msgid "" "Check for inequality before assignment is redundant if (x != value) x = " "value;" msgstr "" +"Перевірка не рівності перед присвоєнням є зайвою if (x != значення) x = " +"значення;" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantComparisonWithNullAnalyzer.cs:1 msgid "When 'is' keyword is used, which implicitly check null" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantEnumerableCastCallAnalyzer.cs:1 -#, fuzzy msgid "Redundant '{0}' call" -msgstr "Видалити мітку 'case'" +msgstr "Зайвий виклик '{0}'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantExplicitArraySizeAnalyzer.cs:1 -#, fuzzy msgid "Remove the redundant size indicator" -msgstr "Вилучити зайвий підпис" +msgstr "Вилучити зайвий індикатор size" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantExplicitNullableCreationAnalyzer.cs:1 #, fuzzy @@ -25687,11 +25350,12 @@ msgid "" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantObjectCreationArgumentListAnalyzer.cs:1 -#, fuzzy msgid "" "When object creation uses object or collection initializer, empty argument " "list is redundant" -msgstr "Порожній об'єкт або ініціалізатор колекції є зайвим" +msgstr "" +"Кори при створенні об'єкта використовується ініціалізатор об'єкта або " +"колекції, порожній список аргументів є зайвим" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantToStringCallAnalyzer.cs:1 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantToStringCallAnalyzer.cs:2 @@ -25702,9 +25366,8 @@ msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantToStringCallAnalyzer.cs:1 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantToStringCallAnalyzer.cs:2 -#, fuzzy msgid "Redundant 'ToString()' call" -msgstr "Зайвий виклик ToString()" +msgstr "Зайвий виклик 'ToString()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantUnsafeContextAnalyzer.cs:1 msgid "" @@ -25713,25 +25376,22 @@ msgid "" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/RedundantUnsafeContextAnalyzer.cs:1 -#, fuzzy msgid "'unsafe' modifier is redundant" -msgstr "Зайвий модифікатор 'unsafe'." +msgstr "Зайвий модифікатор 'unsafe'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/RedundanciesInCode/UnusedAnonymousMethodSignatureAnalyzer.cs:1 msgid "Detects when no delegate parameter is used in the anonymous method body" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseMethodAnyAnalyzer.cs:1 -#, fuzzy msgid "Replace usages of 'Count()' with call to 'Any()'" -msgstr "Замінити викликом 'Any()'" +msgstr "Замінити використання 'Count()' викликом 'Any()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseMethodAnyAnalyzer.cs:1 msgid "Use '{0}' for increased performance" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/UseIsOperatorAnalyzer.cs:1 -#, fuzzy msgid "'is' operator can be used" msgstr "Можна використати оператор 'is'" @@ -25740,36 +25400,32 @@ msgid "Warns when a culture-aware 'StartsWith' call is used by default." msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringStartsWithIsCultureSpecificAnalyzer.cs:1 -#, fuzzy msgid "'StartsWith' is culture-aware and missing a StringComparison argument" -msgstr "'{0}' є культурозалежним і пропущено аргумент StringComparison" +msgstr "'StartsWith' є культурозалежним і пропущено аргумент StringComparison" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringLastIndexOfIsCultureSpecificAnalyzer.cs:1 msgid "Warns when a culture-aware 'LastIndexOf' call is used by default." msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringLastIndexOfIsCultureSpecificAnalyzer.cs:1 -#, fuzzy msgid "'LastIndexOf' is culture-aware and missing a StringComparison argument" -msgstr "'{0}' є культурозалежним і пропущено аргумент StringComparison" +msgstr "'LastIndexOf' є культурозалежним і пропущено аргумент StringComparison" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringIndexOfIsCultureSpecificAnalyzer.cs:1 msgid "Warns when a culture-aware 'IndexOf' call is used by default." msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringIndexOfIsCultureSpecificAnalyzer.cs:1 -#, fuzzy msgid "'IndexOf' is culture-aware and missing a StringComparison argument" -msgstr "'{0}' є культурозалежним і пропущено аргумент StringComparison" +msgstr "'IndexOf' є культурозалежним і пропущено аргумент StringComparison" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringEndsWithIsCultureSpecificAnalyzer.cs:1 msgid "Warns when a culture-aware 'EndsWith' call is used by default." msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringEndsWithIsCultureSpecificAnalyzer.cs:1 -#, fuzzy msgid "'EndsWith' is culture-aware and missing a StringComparison argument" -msgstr "'{0}' є культурозалежним і пропущено аргумент StringComparison" +msgstr "'EndsWith' є культурозалежним і пропущено аргумент StringComparison" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/StringCompareToIsCultureSpecificAnalyzer.cs:1 msgid "Warns when a culture-aware 'string.CompareTo' call is used by default" @@ -25780,204 +25436,172 @@ msgid "Warns when a culture-aware 'Compare' call is used by default" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/SimplifyConditionalTernaryExpressionAnalyzer.cs:1 -#, fuzzy msgid "Conditional expression can be simplified" -msgstr "Не задано вираз умови" +msgstr "Вираз умови можна спростити" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithStringIsNullOrEmptyAnalyzer.cs:2 msgid "Uses shorter string.IsNullOrEmpty call instead of a longer condition" -msgstr "" +msgstr "Використати коротший виклик string.IsNullOrEmpty замість довшої умови" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithStringIsNullOrEmptyAnalyzer.cs:2 -#, fuzzy msgid "Expression can be replaced with '{0}'" -msgstr "Вираз можна замінити на string.IsNullOrEmpty" +msgstr "Вираз можна замінити на '{0}'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSingleOrDefaultAnalyzer.cs:1 msgid "Redundant Where() call with predicate followed by SingleOrDefault()" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSingleOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with single call to 'SingleOrDefault()'" -msgstr "Замінити одиничним викликом SingleOrDefault(...)" +msgstr "Замінити одиничним викликом 'SingleOrDefault()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSingleAnalyzer.cs:1 msgid "Redundant Where() call with predicate followed by Single()" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToSingleAnalyzer.cs:1 -#, fuzzy msgid "Replace with single call to 'Single()'" -msgstr "Замінити одиничним викликом Single(...)" +msgstr "Замінити одиничним викликом 'Single()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLongCountAnalyzer.cs:1 msgid "Redundant Where() call with predicate followed by LongCount()" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLongCountAnalyzer.cs:1 -#, fuzzy msgid "Replace with single call to 'LongCount()'" -msgstr "Замінити одиничним викликом LongCount(...)" +msgstr "Замінити одиничним викликом 'LongCount()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLastOrDefaultAnalyzer.cs:1 msgid "Redundant Where() call with predicate followed by LastOrDefault()" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLastOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with single call to 'LastOrDefault()'" -msgstr "Замінити одиничним викликом LastOrDefault(...)" +msgstr "Замінити одиничним викликом 'LastOrDefault()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLastAnalyzer.cs:1 msgid "Redundant Where() call with predicate followed by Last()" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToLastAnalyzer.cs:1 -#, fuzzy msgid "Replace with single call to 'Last()'" -msgstr "Замінити одиничним викликом Last(...)" +msgstr "Замінити одиничним викликом 'Last()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToFirstOrDefaultAnalyzer.cs:1 msgid "Redundant Where() call with predicate followed by FirstOrDefault()" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToFirstOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with single call to 'FirstOrDefault()'" -msgstr "Замінити одиничним викликом FirstOrDefault(...)" +msgstr "Замінити одиничним викликом 'FirstOrDefault()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToFirstAnalyzer.cs:1 msgid "Redundant Where() call with predicate followed by First()" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToFirstAnalyzer.cs:1 -#, fuzzy msgid "Replace with single call to 'First()'" -msgstr "Замінити одиничним викликом First(...)" +msgstr "Замінити одиничним викликом 'First()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToCountAnalyzer.cs:1 msgid "Redundant Where() call with predicate followed by Count()" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToCountAnalyzer.cs:1 -#, fuzzy msgid "Replace with single call to 'Count()'" -msgstr "Замінити одиничним викликом Count(...)" +msgstr "Замінити одиничним викликом 'Count()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAnyAnalyzer.cs:1 msgid "Redundant Where() call with predicate followed by Any()" msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithSingleCallToAnyAnalyzer.cs:1 -#, fuzzy msgid "Replace with single call to 'Any()'" -msgstr "Замінити одиничним викликом Any(...)" +msgstr "Замінити одиничним викликом 'Any()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeWhereAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().Where()" -msgstr "Замінити викликом OfType<T>().{0}()" +msgstr "Замінити викликом OfType<T>().Where()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeWhereAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().Where()'" -msgstr "Замінити на OfType<T>().Where()" +msgstr "Замінити на 'OfType<T>().Where()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeSingleOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().SingleOrDefault()" -msgstr "Замінити на OfType<T>().SingleOrDefault()" +msgstr "Замінити викликом OfType<T>().SingleOrDefault()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeSingleOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().SingleOrDefault()'" -msgstr "Замінити на OfType<T>().SingleOrDefault()" +msgstr "Замінити на 'OfType<T>().SingleOrDefault()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeSingleAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().Single()" -msgstr "Замінити на OfType<T>().Single()" +msgstr "Замінити викликом OfType<T>().Single()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeSingleAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().Single()'" -msgstr "Замінити на OfType<T>().Single()" +msgstr "Замінити на 'OfType<T>().Single()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeLongCountAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().LongCount()" -msgstr "Замінити на OfType<T>().LongCount()" +msgstr "Замінити викликом OfType<T>().LongCount()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeLongCountAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().LongCount()'" -msgstr "Замінити на OfType<T>().LongCount()" +msgstr "Замінити на 'OfType<T>().LongCount()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeLastOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().LastOrDefault()" -msgstr "Замінити на OfType<T>().LastOrDefault()" +msgstr "Замінити викликом OfType<T>().LastOrDefault()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeLastOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().LastOrDefault()'" -msgstr "Замінити на OfType<T>().LastOrDefault()" +msgstr "Замінити на 'OfType<T>().LastOrDefault()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeLastAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().Last()" -msgstr "Замінити викликом OfType<T>().{0}()" +msgstr "Замінити викликом OfType<T>().Last()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeLastAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().Last()'" -msgstr "Замінити на OfType<T>().Last()" +msgstr "Замінити на 'OfType<T>().Last()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>()'" -msgstr "Замінити на OfType<T>" +msgstr "Замінити на 'OfType<T>()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeFirstOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().FirstOrDefault()" -msgstr "Замінити на OfType<T>().FirstOrDefault()" +msgstr "Замінити викликом OfType<T>().FirstOrDefault()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeFirstOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().FirstOrDefault()'" -msgstr "Замінити на OfType<T>().FirstOrDefault()" +msgstr "Замінити на 'OfType<T>().FirstOrDefault()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeFirstAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().First()" -msgstr "Замінити викликом OfType<T>().{0}()" +msgstr "Замінити викликом OfType<T>().First()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeFirstAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().First()'" -msgstr "Замінити на OfType<T>().First()" +msgstr "Замінити на 'OfType<T>().First()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeCountAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to OfType<T>().Count()" -msgstr "Замінити викликом OfType<T>().{0}()" +msgstr "Замінити викликом OfType<T>().Count()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithOfTypeCountAnalyzer.cs:1 -#, fuzzy msgid "Replace with 'OfType<T>().Count()'" -msgstr "Замінити на OfType<T>().Count()" +msgstr "Замінити на 'OfType<T>().Count()'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithLastOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to LastOrDefault<T>()" -msgstr "Замінити на LastOrDefault<T>()" +msgstr "Замінити викликом LastOrDefault<T>()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ReplaceWithFirstOrDefaultAnalyzer.cs:1 -#, fuzzy msgid "Replace with call to FirstOrDefault<T>()" -msgstr "Замінити на FirstOrDefault<T>()" +msgstr "Замінити викликом FirstOrDefault<T>()" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ParameterCanBeDeclaredWithBaseTypeAnalyzer.cs:4 #, fuzzy @@ -25985,14 +25609,12 @@ msgid "Finds parameters that can be demoted to a base class" msgstr "Параметр можна оголосити з базовим типом" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ConvertIfToOrExpressionAnalyzer.cs:1 -#, fuzzy msgid "Convert 'if' to '||' expression" -msgstr "Перетворити 'if' на вираз '??'" +msgstr "Перетворити 'if' на вираз '||'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/ConvertIfDoToWhileAnalyzer.cs:1 -#, fuzzy msgid "Convert 'if-do-while' to 'while' statement" -msgstr "Перетворити на інструкцію 'switch'" +msgstr "Перетворити 'if-do-while' на інструкцію 'while'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/AccessToStaticMemberViaDerivedTypeAnalyzer.cs:1 msgid "Suggests using the class declaring a static function when calling it" @@ -26001,25 +25623,23 @@ msgstr "" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertStatementBodyToExpressionBodyCodeRefactoringProvider.cs:8 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertStatementBodyToExpressionBodyCodeRefactoringProvider.cs:9 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertStatementBodyToExpressionBodyCodeRefactoringProvider.cs:10 -#, fuzzy msgid "To expression body" -msgstr "Вилучити вираз" +msgstr "До тіла виразу" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertExpressionBodyToStatementBodyCodeRefactoringProvider.cs:6 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/ConvertExpressionBodyToStatementBodyCodeRefactoringProvider.cs:9 -#, fuzzy msgid "To statement body" -msgstr "Порожнє тіло керувальної інструкції" +msgstr "До тіла інструкції" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckArrayIndexValueCodeRefactoringProvider.cs:4 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckStringIndexValueCodeRefactoringProvider.cs:4 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckStringBuilderIndexValueCodeRefactoringProvider.cs:4 msgid "Check 'if ({0}.Length > {1})'" -msgstr "" +msgstr "Перевіряти 'if ({0}.Length > {1})'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckCollectionIndexValueCodeRefactoringProvider.cs:4 msgid "Check 'if ({0}.Count > {1})'" -msgstr "" +msgstr "Перевіряти 'if ({0}.Count > {1})'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/CheckDictionaryKeyValueCodeRefactoringProvider.cs:3 msgid "Use 'if ({0}.TryGetValue({1}, out val))'" @@ -26032,42 +25652,36 @@ msgstr "Обернути цикл 'for'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/InitializeFieldFromConstructorParameterCodeRefactoringProvider.cs:3 msgid "Initialize field from parameter" -msgstr "" +msgstr "Ініціалізувати поле з параметра" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeRefactorings/Synced/InitializeAutoPropertyFromConstructorParameterCodeRefactoringProvider.cs:3 msgid "Initialize auto-property from parameter" -msgstr "" +msgstr "Ініціалізувати автоматичну властивість з параметра" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS1520MethodMustHaveAReturnTypeCodeFixProvider.cs:3 -#, fuzzy msgid "Fix constructor" -msgstr "Конструктор" +msgstr "Виправити конструктор" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS0108UseNewKeywordIfHidingIntendedCodeFixProvider.cs:5 -#, fuzzy msgid "Add 'new' modifier" -msgstr "Додати модифікатор 'params'" +msgstr "Додати модифікатор 'new'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/ReturnMustNotBeFollowedByAnyExpressionCodeFixProvider.cs:6 #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/InvalidConversionCodeFixProvider.cs:11 -#, fuzzy msgid "Change return type of method" -msgstr "Змінити тип, що повертається методом." +msgstr "Змінити тип, що повертається методом" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS0152DuplicateCaseLabelValueCodeFixProvider.cs:5 -#, fuzzy msgid "Remove 'case {0}' switch section" -msgstr "Вилучити 'case {0}'" +msgstr "Вилучити секцію 'case {0}' зі switch" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS0152DuplicateCaseLabelValueCodeFixProvider.cs:5 -#, fuzzy msgid "Remove 'case {0}' label" -msgstr "Вилучити 'case {0}'" +msgstr "Вилучити мітку 'case {0}'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/CodeFixes/Custom/CS0162UnreachableCodeDetectedCodeFixProvider.cs:6 -#, fuzzy msgid "Remove redundant code" -msgstr "Прибрати зайву перевірку" +msgstr "Прибрати зайвий код" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/CodeQuality/NotResolvedInTextIssueCodeFixProvider.cs:6 #, fuzzy @@ -26075,21 +25689,20 @@ msgid "Swap parameter" msgstr "Параметр-тип" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Synced/PracticesAndImprovements/FieldCanBeMadeReadOnlyCodeFixProvider.cs:3 -#, fuzzy msgid "To 'readonly'" -msgstr "На лише для читання" +msgstr "На 'readonly'" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NameOfSuggestionAnalyzer.cs:1 msgid "Suggest the usage of the nameof operator" -msgstr "" +msgstr "Запропонувати використати оператор nameof" #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NameOfSuggestionAnalyzer.cs:1 msgid "Use 'nameof({0})' expression instead." -msgstr "" +msgstr "Використати натомість 'nameof({0})'." #: ../external/RefactoringEssentials/RefactoringEssentials/CSharp/Diagnostics/Custom/NameOfSuggestionCodeFixProvider.cs:4 msgid "To 'nameof({0})'" -msgstr "" +msgstr "На 'nameof({0})'" #: ../external/RefactoringEssentials/RefactoringEssentials/Samples/CSharp/SampleAnalyzer.cs:2 msgid "Sample analyzer: Class name should not have a 'C' prefix." @@ -26116,45 +25729,40 @@ msgid "Import static class with using" msgstr "Частковий (partial) клас з однією частиною" #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/CheckIfParameterIsNothingCodeRefactoringProvider.cs:2 -#, fuzzy msgid "Add 'Is Nothing' check for parameter" -msgstr "Додати перевірку, чи параметр - null" +msgstr "Додати до параметра перевірку 'Is Nothing'" #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertIfStatementToSelectCaseStatementCodeRefactoringProvider.cs:6 -#, fuzzy msgid "To 'Select Case'" -msgstr "Виберіть зображення" +msgstr "На 'Select Case'" #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ConvertToCustomEventCodeRefactoringProvider.cs:6 -#, fuzzy msgid "Convert to custom event" -msgstr "Перетворити на константу" +msgstr "Перетворити на власну подію" #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/CheckDictionaryKeyValueCodeRefactoringProvider.cs:5 msgid "Check 'If {0}.TryGetValue({1}, val)'" -msgstr "" +msgstr "Перевіряти 'If {0}.TryGetValue({1}, val)'" #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ReplaceDirectCastWithSafeCastCodeRefactoringProvider.cs:1 -#, fuzzy msgid "Convert cast to 'TryCast'" -msgstr "Перетворити на 'switch'" +msgstr "Перетворити виклик на 'TryCast'" #: ../external/RefactoringEssentials/RefactoringEssentials/VB/CodeRefactorings/ReplaceSafeCastWithDirectCastCodeRefactoringProvider.cs:3 -#, fuzzy msgid "Convert 'TryCast' to 'DirectCast'" -msgstr "Перетворити 'switch' на 'if'" +msgstr "Перетворити 'TryCast' на 'DirectCast'" #: ../external/RefactoringEssentials/RefactoringEssentials/VB/Diagnostics/Custom/NameOfSuggestionAnalyzer.cs:1 msgid "Suggest the usage of the NameOf operator" -msgstr "" +msgstr "Запропонувати використати оператор NameOf" #: ../external/RefactoringEssentials/RefactoringEssentials/VB/Diagnostics/Custom/NameOfSuggestionAnalyzer.cs:1 msgid "Use 'NameOf({0})' expression instead." -msgstr "" +msgstr "Використати натомість вираз 'NameOf({0})'." #: ../external/RefactoringEssentials/RefactoringEssentials/VB/Diagnostics/Custom/NameOfSuggestionCodeFixProvider.cs:4 msgid "To 'NameOf({0})'" -msgstr "" +msgstr "На 'NameOf({0})'" #: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.InstrumentationViewerDialog.cs:2 msgid "C_onnect" @@ -26178,11 +25786,11 @@ msgstr "" #: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.NewProfile.cs:1 msgid "New View" -msgstr "" +msgstr "Новий перегляд" #: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.NewProfile.cs:1 msgid "View Name:" -msgstr "" +msgstr "Назва перегляду:" #: ../src/tools/mdmonitor/gtk-gui/Mono.Instrumentation.Monitor.CounterSelectorDialog.cs:2 msgid "Select Counter" diff --git a/main/src/addins/AspNet/Commands/AddViewDialog.cs b/main/src/addins/AspNet/Commands/AddViewDialog.cs index 44bc8e2c06..4f107b31f5 100644 --- a/main/src/addins/AspNet/Commands/AddViewDialog.cs +++ b/main/src/addins/AspNet/Commands/AddViewDialog.cs @@ -27,6 +27,7 @@ using System; using System.IO; using System.Collections.Generic; +using System.Threading.Tasks; using PP = System.IO.Path; using Gtk; @@ -281,12 +282,13 @@ namespace MonoDevelop.AspNet.Commands Validate (); } - protected void UpdateTypePanelSensitivity (object sender, EventArgs e) + protected async void UpdateTypePanelSensitivity (object sender, EventArgs e) {
bool enabled = typePanel.Sensitive = stronglyTypedCheck.Active;
if (enabled && classDataProvider == null) {
- classDataProvider = new TypeDataProvider (project);
+ classDataProvider = new TypeDataProvider (); + await classDataProvider.GetTypes (project);
dataClassStore = new ListStore (typeof (string));
foreach (var item in classDataProvider.TypeNamesList)
dataClassStore.AppendValues (item);
@@ -351,7 +353,7 @@ namespace MonoDevelop.AspNet.Commands } } - protected virtual void MasterChanged (object sender, EventArgs e) + protected virtual async void MasterChanged (object sender, EventArgs e) { if (IsPartialView || !HasMaster) return; @@ -367,7 +369,7 @@ namespace MonoDevelop.AspNet.Commands if (!File.Exists (realPath)) return; - var pd = TypeSystemService.ParseFile (project, realPath).Result as WebFormsParsedDocument; + var pd = await TypeSystemService.ParseFile (project, realPath) as WebFormsParsedDocument; if (pd != null) { try { @@ -472,12 +474,12 @@ namespace MonoDevelop.AspNet.Commands class TypeDataProvider
{
public List<INamedTypeSymbol> TypesList { get; private set; }
- public List<string> TypeNamesList { get; private set; }
-
- public TypeDataProvider (MonoDevelop.Projects.DotNetProject project)
+ public List<string> TypeNamesList { get; private set; } + + public async Task GetTypes (MonoDevelop.Projects.DotNetProject project) {
TypeNamesList = new List<string> (); - var ctx = TypeSystemService.GetCompilationAsync (project).Result; + var ctx = await TypeSystemService.GetCompilationAsync (project); TypesList = new List<INamedTypeSymbol> (ctx.GetAllTypesInMainAssembly ());
foreach (var typeDef in TypesList) {
TypeNamesList.Add (Ambience.EscapeText (typeDef.ToDisplayString (SymbolDisplayFormat.CSharpErrorMessageFormat))); diff --git a/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs b/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs index 252a97bb27..2d5c091f3f 100644 --- a/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs +++ b/main/src/addins/AspNet/Commands/GoToControllerCommandHandler.cs @@ -1,38 +1,40 @@ -//
-// GoToControllerCommandHandler.cs
-//
-// Author:
-// Piotr Dowgiallo <sparekd@gmail.com>
-//
-// Copyright (c) 2012 Piotr Dowgiallo
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
+// +// GoToControllerCommandHandler.cs +// +// Author: +// Piotr Dowgiallo <sparekd@gmail.com> +// +// Copyright (c) 2012 Piotr Dowgiallo +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + using System;
using System.Linq;
+using System.Threading.Tasks; using Microsoft.CodeAnalysis;
using MonoDevelop.AspNet.Projects;
using MonoDevelop.Components.Commands;
using MonoDevelop.Core;
using MonoDevelop.Ide;
using MonoDevelop.Ide.TypeSystem;
-
+using MonoDevelop.Refactoring; + namespace MonoDevelop.AspNet.Commands
{
class GoToControllerCommandHandler : CommandHandler
@@ -54,21 +56,21 @@ namespace MonoDevelop.AspNet.Commands info.Enabled = info.Visible = false;
}
- protected override void Run ()
+ protected override async void Run ()
{
var doc = IdeApp.Workbench.ActiveDocument;
var name = doc.FileName.ParentDirectory.FileName;
- var controller = FindController (doc.Project, name);
+ var controller = await FindController (doc.Project, name);
if (controller != null)
- IdeApp.ProjectOperations.JumpToDeclaration (controller, doc.Project);
+ await RefactoringService.RoslynJumpToDeclaration (controller, doc.Project);
else
MessageService.ShowError ("Matching controller cannot be found.");
}
- INamedTypeSymbol FindController (MonoDevelop.Projects.Project project, string name)
+ async Task<INamedTypeSymbol> FindController (MonoDevelop.Projects.Project project, string name)
{
- var compilation = TypeSystemService.GetCompilationAsync (project).Result;
+ var compilation = await TypeSystemService.GetCompilationAsync (project);
if (compilation == null)
return null;
diff --git a/main/src/addins/AspNet/Projects/AspNetProjectTemplateWizardPage.cs b/main/src/addins/AspNet/Projects/AspNetProjectTemplateWizardPage.cs index b6a04bbc67..c410d543ea 100644 --- a/main/src/addins/AspNet/Projects/AspNetProjectTemplateWizardPage.cs +++ b/main/src/addins/AspNet/Projects/AspNetProjectTemplateWizardPage.cs @@ -119,7 +119,7 @@ namespace MonoDevelop.AspNet.Projects get { return title; }
}
- protected override object CreateNativeWidget ()
+ protected override object CreateNativeWidget<T> ()
{
return view ?? (view = new GtkAspNetProjectTemplateWizardPageWidget (this));
}
diff --git a/main/src/addins/AspNet/Razor/IRazorCompletionBuilder.cs b/main/src/addins/AspNet/Razor/IRazorCompletionBuilder.cs index c74de5edaf..2beed8acba 100644 --- a/main/src/addins/AspNet/Razor/IRazorCompletionBuilder.cs +++ b/main/src/addins/AspNet/Razor/IRazorCompletionBuilder.cs @@ -46,7 +46,7 @@ namespace MonoDevelop.AspNet.Razor Task<MonoDevelop.Ide.CodeCompletion.ParameterHintingResult> HandleParameterCompletion (TextEditor editor, DocumentContext context, CodeCompletionContext completionContext,
UnderlyingDocumentInfo docInfo, char completionChar);
// bool GetParameterCompletionCommandOffset (TextEditor editor, DocumentContext context, UnderlyingDocumentInfo docInfo, out int cpos);
- int GetCurrentParameterIndex (TextEditor editor, DocumentContext context, UnderlyingDocumentInfo docInfo, int startOffset);
+ Task<int> GetCurrentParameterIndex (TextEditor editor, DocumentContext context, UnderlyingDocumentInfo docInfo, int startOffset);
}
public class UnderlyingDocument : Document
diff --git a/main/src/addins/AspNet/Razor/RazorCSharpEditorExtension.cs b/main/src/addins/AspNet/Razor/RazorCSharpEditorExtension.cs index adac098d7a..1fc3994145 100644 --- a/main/src/addins/AspNet/Razor/RazorCSharpEditorExtension.cs +++ b/main/src/addins/AspNet/Razor/RazorCSharpEditorExtension.cs @@ -567,14 +567,13 @@ namespace MonoDevelop.AspNet.Razor return base.GetParameterCompletionCommandOffset (out cpos); }*/ - - public override int GetCurrentParameterIndex (int startOffset) + public override Task<int> GetCurrentParameterIndex (int startOffset, CancellationToken token) { if (hiddenInfo != null && isInCSharpContext) { return completionBuilder.GetCurrentParameterIndex (defaultEditor, defaultDocumentContext, hiddenInfo, startOffset); } - return base.GetCurrentParameterIndex (startOffset); + return base.GetCurrentParameterIndex (startOffset, token); } public override Task<MonoDevelop.Ide.CodeCompletion.ParameterHintingResult> HandleParameterCompletionAsync ( @@ -585,7 +584,7 @@ namespace MonoDevelop.AspNet.Razor hiddenInfo, completionChar); } - return base.HandleParameterCompletionAsync (completionContext, completionChar); + return base.HandleParameterCompletionAsync (completionContext, completionChar, token); } #endregion diff --git a/main/src/addins/CSharpBinding/AspNet/RazorCSharpCompletionBuilder.cs b/main/src/addins/CSharpBinding/AspNet/RazorCSharpCompletionBuilder.cs index ae5abf7433..3f95198852 100644 --- a/main/src/addins/CSharpBinding/AspNet/RazorCSharpCompletionBuilder.cs +++ b/main/src/addins/CSharpBinding/AspNet/RazorCSharpCompletionBuilder.cs @@ -105,11 +105,11 @@ namespace MonoDevelop.CSharp.Completion // return completion.GetParameterCompletionCommandOffset (out cpos);
// }
- public int GetCurrentParameterIndex (MonoDevelop.Ide.Editor.TextEditor editor, DocumentContext context, UnderlyingDocumentInfo docInfo, int startOffset)
+ public Task<int> GetCurrentParameterIndex (MonoDevelop.Ide.Editor.TextEditor editor, DocumentContext context, UnderlyingDocumentInfo docInfo, int startOffset)
{
CodeCompletionContext ccc;
var completion = CreateCompletionAndUpdate (editor, context, docInfo, out ccc);
- return completion.GetCurrentParameterIndex (startOffset);
+ return completion.GetCurrentParameterIndex (startOffset, default(CancellationToken));
}
}
diff --git a/main/src/addins/CSharpBinding/CSharpBinding.addin.xml b/main/src/addins/CSharpBinding/CSharpBinding.addin.xml index 3f584b9f69..1af06cda14 100644 --- a/main/src/addins/CSharpBinding/CSharpBinding.addin.xml +++ b/main/src/addins/CSharpBinding/CSharpBinding.addin.xml @@ -296,4 +296,17 @@ <Extension path="/MonoDevelop/Ide/SearchCategories"> <Class class="MonoDevelop.CSharp.ProjectSearchCategory" /> </Extension> + + <Extension path = "/MonoDevelop/Refactoring/FindReferencesProvider"> + <Class class="MonoDevelop.CSharp.Refactoring.CSharpFindReferencesProvider" /> + </Extension> + + <Extension path = "/MonoDevelop/Refactoring/JumpToDeclarationHandler"> + <Class class="MonoDevelop.CSharp.Refactoring.CSharpJumpToDeclarationHandler" /> + </Extension> + + <Extension path = "/MonoDevelop/NUnit/NUnitSourceCodeLocationFinder"> + <Class class="MonoDevelop.CSharp.UnitTests.CSharpNUnitSourceCodeLocationFinder" /> + </Extension> + </ExtensionModel>
\ No newline at end of file diff --git a/main/src/addins/CSharpBinding/CSharpBinding.csproj b/main/src/addins/CSharpBinding/CSharpBinding.csproj index 41c4e4b5cd..191454a3cf 100644 --- a/main/src/addins/CSharpBinding/CSharpBinding.csproj +++ b/main/src/addins/CSharpBinding/CSharpBinding.csproj @@ -794,6 +794,9 @@ <Compile Include="Util\AccessibilityUtilities.cs" /> <Compile Include="Util\Glyph.cs" /> <Compile Include="MonoDevelop.CSharp.Features\Completion\ContextHandler\RegexContextHandler.cs" /> + <Compile Include="MonoDevelop.CSharp.Refactoring\CSharpFindReferencesProvider.cs" /> + <Compile Include="MonoDevelop.CSharp.Refactoring\CSharpJumpToDeclarationHandler.cs" /> + <Compile Include="MonoDevelop.CSharp.UnitTests\CSharpNUnitSourceCodeLocationFinder.cs" /> </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/InlineTemporary/InlineTemporaryCodeRefactoringProvider.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/InlineTemporary/InlineTemporaryCodeRefactoringProvider.cs index 1d6bb95822..0d1a5c6a68 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/InlineTemporary/InlineTemporaryCodeRefactoringProvider.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.CodeRefactorings/InlineTemporary/InlineTemporaryCodeRefactoringProvider.cs @@ -48,6 +48,8 @@ namespace MonoDevelop.CSharp.CodeRefactorings.InlineTemporary if (model.IsFromGeneratedCode (cancellationToken)) return; var root = await document.GetCSharpSyntaxRootAsync(cancellationToken).ConfigureAwait(false); + if (textSpan.Start >= root.FullSpan.Length) + return; var token = root.FindToken(textSpan.Start); if (!token.Span.Contains(textSpan)) diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs index 9e7e51ec2a..6f23bd387a 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Completion/RoslynSymbolCompletionData.cs @@ -113,11 +113,6 @@ namespace MonoDevelop.CSharp.Completion public static Task<TooltipInformation> CreateTooltipInformation (CancellationToken ctoken, MonoDevelop.Ide.Editor.TextEditor editor, MonoDevelop.Ide.Editor.DocumentContext ctx, ISymbol entity, bool smartWrap, bool createFooter = false, SemanticModel model = null) { - if (ctx != null) { - if (ctx.ParsedDocument == null || ctx.AnalysisDocument == null) - LoggingService.LogError ("Signature markup creator created with invalid context." + Environment.NewLine + Environment.StackTrace); - } - var tooltipInfo = new TooltipInformation (); // if (resolver == null) // resolver = file != null ? file.GetResolver (compilation, textEditorData.Caret.Location) : new CSharpResolver (compilation); @@ -372,13 +367,16 @@ namespace MonoDevelop.CSharp.Completion static bool HasNonMethodMembersWithSameName (ISymbol member) { var method = member as IMethodSymbol; - if (method != null && method.MethodKind == MethodKind.Constructor) - return false; - if (member.ContainingType == null) + if (method == null) + return true; + if (method == null || method.MethodKind == MethodKind.Constructor) return false; - return member.ContainingType - .GetMembers () - .Any (e => e.Kind != SymbolKind.Method && e.Name == member.Name); + var type = method.ReceiverType ?? method.ContainingType; + foreach (var m in type.GetMembers ().Where (m => m.Kind != SymbolKind.Method)) { + if (m.Name == member.Name) + return true; + } + return false; } static bool RequireGenerics (IMethodSymbol method) diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs index 7aa90ca04e..bd00f01024 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/CSharpFormattingProfileDialog.cs @@ -388,7 +388,7 @@ namespace MonoDevelop.CSharp.Formatting { }"); - AddOption (spacingOptions, category, "SpaceWithinMethodDeclarationParenthesis", GettextCatalog.GetString ("Insert space withing argument list parentheses"), + AddOption (spacingOptions, category, "SpaceWithinMethodDeclarationParenthesis", GettextCatalog.GetString ("Insert space within argument list parentheses"), @"void Example(int i, int j) { }"); @@ -401,7 +401,7 @@ namespace MonoDevelop.CSharp.Formatting { Test(); }"); - AddOption (spacingOptions, category, "SpaceWithinMethodCallParentheses", GettextCatalog.GetString ("Insert space withing argument list parentheses"), @"void Example() + AddOption (spacingOptions, category, "SpaceWithinMethodCallParentheses", GettextCatalog.GetString ("Insert space within argument list parentheses"), @"void Example() { Test(1, 2); }"); diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs index 3331393f78..049c9906fd 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Formatting/OnTheFlyFormatter.cs @@ -76,7 +76,6 @@ namespace MonoDevelop.CSharp.Formatting var analysisDocument = context.AnalysisDocument; if (analysisDocument == null) return; - using (var undo = editor.OpenUndoGroup (/*OperationType.Format*/)) { try { var syntaxTree = analysisDocument.GetSyntaxTreeAsync ().Result; @@ -112,14 +111,15 @@ namespace MonoDevelop.CSharp.Formatting editor.ReplaceText (delta + change.Span.Start, change.Span.Length, newText); delta = delta - change.Span.Length + newText.Length; } - - var caretEndOffset = caretOffset + delta; - if (0 <= caretEndOffset && caretEndOffset < editor.Length) - editor.CaretOffset = caretEndOffset; - if (editor.CaretColumn == 1) { - if (editor.CaretLine > 1 && editor.GetLine (editor.CaretLine - 1).Length == 0) - editor.CaretLine--; - editor.CaretColumn = editor.GetVirtualIndentationColumn (editor.CaretLine); + if (startOffset < caretOffset) { + var caretEndOffset = caretOffset + delta; + if (0 <= caretEndOffset && caretEndOffset < editor.Length) + editor.CaretOffset = caretEndOffset; + if (editor.CaretColumn == 1) { + if (editor.CaretLine > 1 && editor.GetLine (editor.CaretLine - 1).Length == 0) + editor.CaretLine--; + editor.CaretColumn = editor.GetVirtualIndentationColumn (editor.CaretLine); + } } } catch (Exception e) { LoggingService.LogError ("Error in on the fly formatter", e); diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Project/CSharpProjectExtension.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Project/CSharpProjectExtension.cs index dcae550ed4..8f87cc1e5a 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Project/CSharpProjectExtension.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Project/CSharpProjectExtension.cs @@ -64,6 +64,7 @@ namespace MonoDevelop.CSharp.Project protected override void OnInitialize () { base.OnInitialize (); + SupportsRoslyn = true; StockIcon = "md-csharp-project"; } diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpCodeGenerator.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpCodeGenerator.cs index dbbfd5f907..82d6abfd9c 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpCodeGenerator.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpCodeGenerator.cs @@ -734,7 +734,11 @@ namespace MonoDevelop.CSharp.Refactoring } else if (p.ExplicitDefaultValue is bool) { result.Append ((bool)p.ExplicitDefaultValue ? "true" : "false"); } else if (p.ExplicitDefaultValue == null) { - result.Append ("null"); + if (p.Type.IsValueType && p.Type.SpecialType != SpecialType.System_String) { + result.Append ("default(" + p.Type.ToMinimalDisplayString (options.SemanticModel, options.Part.SourceSpan.Start) + ")"); + } else { + result.Append ("null"); + } } else { result.Append (p.ExplicitDefaultValue); } diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFeaturesTextEditorExtension.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFeaturesTextEditorExtension.cs index 4ec807c365..8419616f70 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFeaturesTextEditorExtension.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFeaturesTextEditorExtension.cs @@ -46,7 +46,7 @@ namespace MonoDevelop.CSharp.Refactoring static CSharpFeaturesTextEditorExtension () { GoToDefinitionService.TryNavigateToSymbol = delegate (ISymbol symbol, Microsoft.CodeAnalysis.Project project, bool usePreviewTab) { - IdeApp.ProjectOperations.JumpToDeclaration (symbol, TypeSystemService.GetMonoProject (project)); + RefactoringService.RoslynJumpToDeclaration (symbol, TypeSystemService.GetMonoProject (project)); return true; }; diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs new file mode 100644 index 0000000000..2a1ca4fed5 --- /dev/null +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpFindReferencesProvider.cs @@ -0,0 +1,278 @@ +// +// CSharpFindReferencesProvider.cs +// +// Author: +// Mike Krüger <mkrueger@xamarin.com> +// +// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +using System; +using System.Linq; +using System.Threading; +using MonoDevelop.Components.Commands; +using MonoDevelop.Core; +using MonoDevelop.Ide; +using MonoDevelop.Refactoring; +using Microsoft.CodeAnalysis.FindSymbols; +using Microsoft.CodeAnalysis; +using MonoDevelop.Ide.TypeSystem; +using MonoDevelop.Ide.FindInFiles; +using MonoDevelop.Ide.Tasks; +using System.Threading.Tasks; +using System.Collections.Generic; + +namespace MonoDevelop.CSharp.Refactoring +{ + class CSharpFindReferencesProvider : FindReferencesProvider + { + internal class LookupResult + { + public static LookupResult Failure = new LookupResult (); + + public bool Success { get; private set; } + public ISymbol Symbol { get; private set; } + public Solution Solution { get; private set; } + public MonoDevelop.Projects.Project MonoDevelopProject { get; internal set; } + public Compilation Compilation { get; private set; } + + public LookupResult () + { + } + + public LookupResult (ISymbol symbol, Solution solution, Compilation compilation) + { + this.Success = true; + this.Symbol = symbol; + this.Solution = solution; + this.Compilation = compilation; + } + } + + static async Task<LookupResult> TryLookupSymbolInProject (Microsoft.CodeAnalysis.Project prj, string documentationCommentId, CancellationToken token) + { + if (string.IsNullOrEmpty (documentationCommentId)) + return LookupResult.Failure; + bool searchNs = documentationCommentId[0] == 'N'; + bool searchType = documentationCommentId[0] == 'T'; + int reminderIndex = 2; + var comp = await prj.GetCompilationAsync (token).ConfigureAwait (false); + var current = LookupNamespace (documentationCommentId, ref reminderIndex, comp.GlobalNamespace); + if (current == null) + return LookupResult.Failure; + if (searchNs) { + if (current.GetDocumentationCommentId () == documentationCommentId) + return new LookupResult (current, prj.Solution, comp); + return LookupResult.Failure; + } + + INamedTypeSymbol type = null; + foreach (var t in current.GetAllTypes ()) { + type = LookupType (documentationCommentId, reminderIndex, t); + if (type != null) { + if (searchType) { + return new LookupResult(type, prj.Solution, comp); + } + break; + } + } + if (type == null) + return LookupResult.Failure; + foreach (var member in type.GetMembers ()) { + if (member.GetDocumentationCommentId () == documentationCommentId) { + return new LookupResult(member, prj.Solution, comp); + } + } + return LookupResult.Failure; + } + + internal static async Task<LookupResult> TryLookupSymbol (string documentationCommentId, MonoDevelop.Projects.Project hintProject, CancellationToken token) + { + Microsoft.CodeAnalysis.Project codeAnalysisHintProject = null; + if (hintProject != null) { + codeAnalysisHintProject = TypeSystemService.GetCodeAnalysisProject (hintProject); + if (codeAnalysisHintProject != null) { + var result = await TryLookupSymbolInProject (codeAnalysisHintProject, documentationCommentId, token); + if (result.Success) { + result.MonoDevelopProject = hintProject; + return result; + } + } + } + + foreach (var ws in TypeSystemService.AllWorkspaces) { + foreach (var prj in ws.CurrentSolution.Projects) { + if (prj == codeAnalysisHintProject) + continue; + var result = await TryLookupSymbolInProject (prj, documentationCommentId, token); + if (result.Success) { + result.MonoDevelopProject = TypeSystemService.GetMonoProject (prj); + return result; + } + } + } + + return LookupResult.Failure; + } + + static INamedTypeSymbol LookupType (string documentationCommentId, int reminder, INamedTypeSymbol current) + { + var idx = documentationCommentId.IndexOf ('.', reminder); + var exact = idx < 0; + var typeId = current.GetDocumentationCommentId (); + if (exact) { + if (typeId == documentationCommentId) + return current; + return null; + } + + if (typeId.Length < reminder) + return null; + if (string.CompareOrdinal (documentationCommentId, reminder, typeId, reminder, idx - reminder - 1) == 0) { + if (typeId.Length > idx) + return null; + foreach (var subType in current.GetTypeMembers ()) { + var child = LookupType (documentationCommentId, idx + 1, subType); + if (child != null) { + return child; + } + } + return current; + + } + return null; + } + + static INamespaceSymbol LookupNamespace (string documentationCommentId, ref int reminder, INamespaceSymbol current) + { + var exact = documentationCommentId.IndexOf ('.', reminder) < 0; + + foreach (var subNamespace in current.GetNamespaceMembers ()) { + if (exact) { + if (subNamespace.Name.Length == documentationCommentId.Length - reminder && + string.CompareOrdinal (documentationCommentId, reminder, subNamespace.Name, 0, subNamespace.Name.Length) == 0) + return subNamespace; + } else { + if (subNamespace.Name.Length < documentationCommentId.Length - reminder - 1 && + string.CompareOrdinal (documentationCommentId, reminder, subNamespace.Name, 0, subNamespace.Name.Length) == 0 && + documentationCommentId [reminder + subNamespace.Name.Length] == '.') { + reminder += subNamespace.Name.Length + 1; + return LookupNamespace (documentationCommentId, ref reminder, subNamespace); + } + } + } + + return current; + } + + public override Task<IEnumerable<SearchResult>> FindReferences (string documentationCommentId, MonoDevelop.Projects.Project hintProject, CancellationToken token) + { + var workspace = TypeSystemService.Workspace as MonoDevelopWorkspace; + if (workspace == null) + return Task.FromResult (Enumerable.Empty<SearchResult> ()); + + return Task.Run (async delegate { + var result = new List<SearchResult> (); + var lookup = await TryLookupSymbol (documentationCommentId, hintProject, token); + if (!lookup.Success) { + return result; + } + + var antiDuplicatesSet = new HashSet<SearchResult> (new SearchResultComparer ()); + foreach (var loc in lookup.Symbol.Locations) { + if (!loc.IsInSource) + continue; + var fileName = loc.SourceTree.FilePath; + var offset = loc.SourceSpan.Start; + string projectedName; + int projectedOffset; + if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) { + fileName = projectedName; + offset = projectedOffset; + } + var sr = new SearchResult (new FileProvider (fileName), offset, loc.SourceSpan.Length); + antiDuplicatesSet.Add (sr); + result.Add (sr); + } + + foreach (var mref in await SymbolFinder.FindReferencesAsync (lookup.Symbol, lookup.Solution).ConfigureAwait (false)) { + foreach (var loc in mref.Locations) { + var fileName = loc.Document.FilePath; + var offset = loc.Location.SourceSpan.Start; + string projectedName; + int projectedOffset; + if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) { + fileName = projectedName; + offset = projectedOffset; + } + var sr = new SearchResult (new FileProvider (fileName), offset, loc.Location.SourceSpan.Length); + if (antiDuplicatesSet.Add (sr)) { + result.Add (sr); + } + } + } + return (IEnumerable<SearchResult>)result; + }); + } + + public override Task<IEnumerable<SearchResult>> FindAllReferences (string documentationCommentId, MonoDevelop.Projects.Project hintProject, CancellationToken token) + { + var workspace = TypeSystemService.Workspace as MonoDevelopWorkspace; + if (workspace == null) + return Task.FromResult (Enumerable.Empty<SearchResult> ()); + return Task.Run (async delegate { + var antiDuplicatesSet = new HashSet<SearchResult> (new SearchResultComparer ()); + var result = new List<SearchResult> (); + var lookup = await TryLookupSymbol (documentationCommentId, hintProject, token); + if (!lookup.Success) + return result; + + foreach (var simSym in SymbolFinder.FindSimilarSymbols (lookup.Symbol, lookup.Compilation)) { + foreach (var loc in simSym.Locations) { + var sr = new SearchResult (new FileProvider (loc.SourceTree.FilePath), loc.SourceSpan.Start, loc.SourceSpan.Length); + if (antiDuplicatesSet.Add (sr)) { + result.Add (sr); + } + } + + foreach (var mref in await SymbolFinder.FindReferencesAsync (simSym, lookup.Solution).ConfigureAwait (false)) { + foreach (var loc in mref.Locations) { + var fileName = loc.Document.FilePath; + var offset = loc.Location.SourceSpan.Start; + string projectedName; + int projectedOffset; + if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) { + fileName = projectedName; + offset = projectedOffset; + } + + var sr = new SearchResult (new FileProvider (fileName), offset, loc.Location.SourceSpan.Length); + if (antiDuplicatesSet.Add (sr)) { + result.Add (sr); + } + } + } + } + return (IEnumerable<SearchResult>)result; + }); + } + } + +} diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpJumpToDeclarationHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpJumpToDeclarationHandler.cs new file mode 100644 index 0000000000..8ce24f29b8 --- /dev/null +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/CSharpJumpToDeclarationHandler.cs @@ -0,0 +1,45 @@ +// +// CSharpJumpToDeclarationHandler.cs +// +// Author: +// Mike Krüger <mkrueger@xamarin.com> +// +// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System.Threading.Tasks; +using MonoDevelop.Refactoring; +using MonoDevelop.Ide; +using System.Linq; + +namespace MonoDevelop.CSharp.Refactoring +{ + class CSharpJumpToDeclarationHandler : JumpToDeclarationHandler + { + public override async Task<bool> TryJumpToDeclarationAsync (string documentIdString, MonoDevelop.Projects.Project hintProject, System.Threading.CancellationToken token) + { + var lookup = await CSharpFindReferencesProvider.TryLookupSymbol (documentIdString, hintProject, token); + if (!lookup.Success || lookup.Symbol.Locations.First().IsInMetadata) + return false; + IdeApp.ProjectOperations.JumpToDeclaration (lookup.Symbol, lookup.MonoDevelopProject); + return true; + } + } +} + diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindReferencesHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindReferencesHandler.cs index 90bc31dcc6..cd8cab3a64 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindReferencesHandler.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/FindReferencesHandler.cs @@ -43,7 +43,7 @@ namespace MonoDevelop.CSharp.Refactoring { class FindReferencesHandler { - public static void FindRefs (ISymbol symbol) + internal static void FindRefs (ISymbol symbol) { var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true); var workspace = TypeSystemService.Workspace as MonoDevelopWorkspace; @@ -95,7 +95,7 @@ namespace MonoDevelop.CSharp.Refactoring monitor.Dispose (); } }); - } + } public void Update (CommandInfo info) { @@ -116,60 +116,20 @@ namespace MonoDevelop.CSharp.Refactoring var info = RefactoringSymbolInfo.GetSymbolInfoAsync (doc, doc.Editor).Result; var sym = info.Symbol ?? info.DeclaredSymbol; - if (sym != null) - FindRefs (sym); + if (sym != null) { + if (sym.Kind == SymbolKind.Local || sym.Kind == SymbolKind.Parameter || sym.Kind == SymbolKind.TypeParameter) { + FindRefs (sym); + } else { + RefactoringService.FindReferencesAsync (sym.GetDocumentationCommentId ()); + } + } } } + + class FindAllReferencesHandler { - public static void FindRefs (ISymbol obj, Compilation compilation) - { - var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true); - var workspace = TypeSystemService.Workspace as MonoDevelopWorkspace; - if (workspace == null) - return; - var solution = workspace.CurrentSolution; - Task.Run (async delegate { - try { - var antiDuplicatesSet = new HashSet<SearchResult> (new SearchResultComparer ()); - foreach (var simSym in SymbolFinder.FindSimilarSymbols (obj, compilation)) { - foreach (var loc in simSym.Locations) { - var sr = new SearchResult (new FileProvider (loc.SourceTree.FilePath), loc.SourceSpan.Start, loc.SourceSpan.Length); - if (antiDuplicatesSet.Add (sr)) { - monitor.ReportResult (sr); - } - } - - foreach (var mref in await SymbolFinder.FindReferencesAsync (simSym, solution).ConfigureAwait (false)) { - foreach (var loc in mref.Locations) { - var fileName = loc.Document.FilePath; - var offset = loc.Location.SourceSpan.Start; - string projectedName; - int projectedOffset; - if (workspace.TryGetOriginalFileFromProjection (fileName, offset, out projectedName, out projectedOffset)) { - fileName = projectedName; - offset = projectedOffset; - } - - var sr = new SearchResult (new FileProvider (fileName), offset, loc.Location.SourceSpan.Length); - if (antiDuplicatesSet.Add (sr)) { - monitor.ReportResult (sr); - } - } - } - } - } catch (Exception ex) { - if (monitor != null) - monitor.ReportError ("Error finding references", ex); - else - LoggingService.LogError ("Error finding references", ex); - } finally { - if (monitor != null) - monitor.Dispose (); - } - }); - } public void Update (CommandInfo info) { @@ -190,8 +150,13 @@ namespace MonoDevelop.CSharp.Refactoring var info = RefactoringSymbolInfo.GetSymbolInfoAsync (doc, doc.Editor).Result; var sym = info.Symbol ?? info.DeclaredSymbol; - if (sym != null) - FindRefs (sym, info.Model.Compilation); + if (sym != null) { + if (sym.Kind == SymbolKind.Local || sym.Kind == SymbolKind.Parameter || sym.Kind == SymbolKind.TypeParameter) { + FindReferencesHandler.FindRefs (sym); + } else { + RefactoringService.FindAllReferencesAsync (sym.GetDocumentationCommentId ()); + } + } } } diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs index ea42862a3e..fef916d350 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoBaseDeclarationHandler.cs @@ -28,6 +28,7 @@ using Microsoft.CodeAnalysis; using MonoDevelop.Ide; using System.Linq; using MonoDevelop.Core; +using MonoDevelop.Refactoring; namespace MonoDevelop.CSharp.Refactoring { @@ -81,28 +82,28 @@ namespace MonoDevelop.CSharp.Refactoring throw new ArgumentNullException ("symbol"); switch (symbol.Kind) { case SymbolKind.NamedType: - IdeApp.ProjectOperations.JumpToDeclaration (((ITypeSymbol)symbol).BaseType, doc.Project); + RefactoringService.RoslynJumpToDeclaration (((ITypeSymbol)symbol).BaseType, doc.Project); break; case SymbolKind.Property: var property = (IPropertySymbol)symbol; if (property.OverriddenProperty != null) - IdeApp.ProjectOperations.JumpToDeclaration (property.OverriddenProperty, doc.Project); + RefactoringService.RoslynJumpToDeclaration (property.OverriddenProperty, doc.Project); else - IdeApp.ProjectOperations.JumpToDeclaration (property.ExplicitInterfaceImplementations.First (), doc.Project); + RefactoringService.RoslynJumpToDeclaration (property.ExplicitInterfaceImplementations.First (), doc.Project); break; case SymbolKind.Event: var evt = (IEventSymbol)symbol; if (evt.OverriddenEvent != null) - IdeApp.ProjectOperations.JumpToDeclaration (evt.OverriddenEvent, doc.Project); + RefactoringService.RoslynJumpToDeclaration (evt.OverriddenEvent, doc.Project); else - IdeApp.ProjectOperations.JumpToDeclaration (evt.ExplicitInterfaceImplementations.First (), doc.Project); + RefactoringService.RoslynJumpToDeclaration (evt.ExplicitInterfaceImplementations.First (), doc.Project); break; case SymbolKind.Method: var method = (IMethodSymbol)symbol; if (method.OverriddenMethod != null) - IdeApp.ProjectOperations.JumpToDeclaration (method.OverriddenMethod, doc.Project); + RefactoringService.RoslynJumpToDeclaration (method.OverriddenMethod, doc.Project); else - IdeApp.ProjectOperations.JumpToDeclaration (method.ExplicitInterfaceImplementations.First (), doc.Project); + RefactoringService.RoslynJumpToDeclaration (method.ExplicitInterfaceImplementations.First (), doc.Project); break; } } diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoDeclarationHandler.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoDeclarationHandler.cs index f33182b7fe..7ca54c08f6 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoDeclarationHandler.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/GotoDeclarationHandler.cs @@ -75,9 +75,9 @@ namespace MonoDevelop.CSharp.Refactoring public static void JumpToDeclaration (MonoDevelop.Ide.Gui.Document doc, RefactoringSymbolInfo info) { if (info.Symbol != null) - IdeApp.ProjectOperations.JumpToDeclaration (info.Symbol, doc.Project); + RefactoringService.RoslynJumpToDeclaration (info.Symbol, doc.Project); if (info.CandidateSymbols.Length > 0) - IdeApp.ProjectOperations.JumpToDeclaration (info.CandidateSymbols[0], doc.Project); + RefactoringService.RoslynJumpToDeclaration (info.CandidateSymbols[0], doc.Project); } } } diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/RefactoryCommands.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/RefactoryCommands.cs index e0250b41c3..8db220389e 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/RefactoryCommands.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.Refactoring/RefactoryCommands.cs @@ -163,7 +163,7 @@ namespace MonoDevelop.CSharp.Refactoring return result; } - protected override void Update (CommandArrayInfo ainfo) + protected override async void Update (CommandArrayInfo ainfo) { var doc = IdeApp.Workbench.ActiveDocument; if (doc == null || doc.FileName == FilePath.Null || doc.ParsedDocument == null) @@ -171,7 +171,10 @@ namespace MonoDevelop.CSharp.Refactoring var semanticModel = doc.ParsedDocument.GetAst<SemanticModel> (); if (semanticModel == null) return; - var info = RefactoringSymbolInfo.GetSymbolInfoAsync (doc, doc.Editor).Result; + var task = RefactoringSymbolInfo.GetSymbolInfoAsync (doc, doc.Editor); + if (!task.Wait (2000)) + return; + var info = task.Result; bool added = false; var ext = doc.GetContent<CodeActionEditorExtension> (); @@ -238,10 +241,18 @@ namespace MonoDevelop.CSharp.Refactoring var sym = info.Symbol ?? info.DeclaredSymbol; if (doc.HasProject && sym != null) { - ainfo.Add (IdeApp.CommandService.GetCommandInfo (RefactoryCommands.FindReferences), new System.Action (() => FindReferencesHandler.FindRefs (sym))); + ainfo.Add (IdeApp.CommandService.GetCommandInfo (RefactoryCommands.FindReferences), new System.Action (() => { + + if (sym.Kind == SymbolKind.Local || sym.Kind == SymbolKind.Parameter || sym.Kind == SymbolKind.TypeParameter) { + FindReferencesHandler.FindRefs (sym); + } else { + RefactoringService.FindReferencesAsync (sym.GetDocumentationCommentId ()); + } + + })); try { if (Microsoft.CodeAnalysis.FindSymbols.SymbolFinder.FindSimilarSymbols (sym, semanticModel.Compilation).Count () > 1) - ainfo.Add (IdeApp.CommandService.GetCommandInfo (RefactoryCommands.FindAllReferences), new System.Action (() => FindAllReferencesHandler.FindRefs (info.Symbol, semanticModel.Compilation))); + ainfo.Add (IdeApp.CommandService.GetCommandInfo (RefactoryCommands.FindAllReferences), new System.Action (() => RefactoringService.FindAllReferencesAsync (sym.GetDocumentationCommentId ()))); } catch (Exception) { // silently ignore roslyn bug. } diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp.UnitTests/CSharpNUnitSourceCodeLocationFinder.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.UnitTests/CSharpNUnitSourceCodeLocationFinder.cs new file mode 100644 index 0000000000..a1b878aea2 --- /dev/null +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp.UnitTests/CSharpNUnitSourceCodeLocationFinder.cs @@ -0,0 +1,77 @@ +// +// CSharpNUnitSourceCodeLocationFinder.cs +// +// Author: +// mkrueger <> +// +// Copyright (c) 2016 mkrueger +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using MonoDevelop.NUnit; +using MonoDevelop.Ide.TypeSystem; +using System.Threading; +using Microsoft.CodeAnalysis; +using System.Linq; +using MonoDevelop.Projects; + +namespace MonoDevelop.CSharp.UnitTests +{ + class CSharpNUnitSourceCodeLocationFinder : NUnitSourceCodeLocationFinder + { + public override async System.Threading.Tasks.Task<SourceCodeLocation> GetSourceCodeLocationAsync (MonoDevelop.Projects.Project project, string fixtureTypeNamespace, string fixtureTypeName, string testName, System.Threading.CancellationToken cancellationToken) + { + var csc = new CancellationTokenSource (); + var ctx = await TypeSystemService.GetCompilationAsync (project, csc.Token).ConfigureAwait (false); + var cls = ctx?.Assembly?.GetTypeByMetadataName (string.IsNullOrEmpty (fixtureTypeNamespace) ? fixtureTypeName : fixtureTypeNamespace + "." + fixtureTypeName); + if (cls == null) + return null; + if (cls.Name != testName) { + foreach (var met in cls.GetMembers ().OfType<IMethodSymbol> ()) { + if (met.Name == testName) { + var loc = met.Locations.FirstOrDefault (l => l.IsInSource); + return ConvertToSourceCodeLocation (loc); + } + } + + int idx = testName != null ? testName.IndexOf ('(') : -1; + if (idx > 0) { + testName = testName.Substring (0, idx); + foreach (var met in cls.GetMembers ().OfType<IMethodSymbol> ()) { + if (met.Name == testName){ + var loc = met.Locations.FirstOrDefault (l => l.IsInSource); + return ConvertToSourceCodeLocation (loc); + } + } + } + } + var classLoc = cls.Locations.FirstOrDefault (l => l.IsInSource); + return ConvertToSourceCodeLocation (classLoc); + } + + + SourceCodeLocation ConvertToSourceCodeLocation (Location loc) + { + var lineSpan = loc.GetLineSpan (); + return new SourceCodeLocation (loc.SourceTree.FilePath, lineSpan.StartLinePosition.Line, lineSpan.StartLinePosition.Character); + } + + } +} + diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpNavigationTextEditorExtension.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpNavigationTextEditorExtension.cs index c555fbd408..57bf692a05 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpNavigationTextEditorExtension.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/CSharpNavigationTextEditorExtension.cs @@ -35,6 +35,7 @@ using Microsoft.CodeAnalysis.CSharp.Syntax; using MonoDevelop.Ide; using MonoDevelop.Ide.Editor; using System.Linq; +using MonoDevelop.Refactoring; namespace MonoDevelop.CSharp { @@ -101,7 +102,7 @@ namespace MonoDevelop.CSharp if (IsNavigatable (info)) { result.Add (new NavigationSegment (node.Span.Start, node.Span.Length, delegate { GLib.Timeout.Add (50, delegate { - IdeApp.ProjectOperations.JumpToDeclaration (info.Symbol, documentContext.Project); + RefactoringService.RoslynJumpToDeclaration (info.Symbol, documentContext.Project); return false; }); })); @@ -119,7 +120,7 @@ namespace MonoDevelop.CSharp if (IsNavigatable(info)) { result.Add (new NavigationSegment (node.Name.Span.Start, node.Name.Span.Length, delegate { GLib.Timeout.Add (50, delegate { - IdeApp.ProjectOperations.JumpToDeclaration (info.Symbol, documentContext.Project); + RefactoringService.RoslynJumpToDeclaration (info.Symbol, documentContext.Project); return false; }); })); diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/DeclaredSymbolInfo.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/DeclaredSymbolInfo.cs index a6110bdae7..347c1e5be4 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/DeclaredSymbolInfo.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/DeclaredSymbolInfo.cs @@ -44,6 +44,7 @@ using Gtk; using MonoDevelop.Ide; using MonoDevelop.CSharp; using MonoDevelop.Components.MainToolbar; +using MonoDevelop.Refactoring; namespace MonoDevelop.CSharp { @@ -552,7 +553,7 @@ namespace MonoDevelop.CSharp if (doc != null) { var symbol = await type.GetSymbolAsync (doc, token); var project = TypeSystemService.GetMonoProject (doc.Id); - IdeApp.ProjectOperations.JumpToDeclaration (symbol, project); + RefactoringService.RoslynJumpToDeclaration (symbol, project); } } } diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/PathedDocumentTextEditorExtension.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/PathedDocumentTextEditorExtension.cs index 6ed61d9ca2..57ad3c0f9b 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/PathedDocumentTextEditorExtension.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/PathedDocumentTextEditorExtension.cs @@ -53,6 +53,7 @@ namespace MonoDevelop.CSharp { public override void Dispose () { + CancelDocumentParsedUpdate (); CancelUpdatePathTimeout (); CancelUpdatePath (); Editor.TextChanging -= Editor_TextChanging; @@ -121,9 +122,31 @@ namespace MonoDevelop.CSharp updatePathTimeoutId = 0; } + CancellationTokenSource documentParsedCancellationTokenSource = new CancellationTokenSource (); + void DocumentContext_DocumentParsed (object sender, EventArgs e) { SubscribeCaretPositionChange (); + + // Fixes a potential memory leak see: https://bugzilla.xamarin.com/show_bug.cgi?id=38041 + if (ownerProjects.Count > 1) { + var currentOwners = ownerProjects.Where (p => p != DocumentContext.Project).Select (p => TypeSystemService.GetCodeAnalysisProject (p)).ToList (); + CancelDocumentParsedUpdate (); + var token = documentParsedCancellationTokenSource.Token; + Task.Run (async delegate { + foreach (var otherProject in currentOwners) { + if (otherProject == null) + continue; + await otherProject.GetCompilationAsync (token).ConfigureAwait (false); + } + }); + } + } + + void CancelDocumentParsedUpdate () + { + documentParsedCancellationTokenSource.Cancel (); + documentParsedCancellationTokenSource = new CancellationTokenSource (); } void SubscribeCaretPositionChange () diff --git a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs index 2d00548f7c..3bcfcae94c 100644 --- a/main/src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs +++ b/main/src/addins/CSharpBinding/MonoDevelop.CSharp/SignatureMarkupCreator.cs @@ -82,9 +82,6 @@ namespace MonoDevelop.CSharp this.colorStyle = SyntaxModeService.GetDefaultColorStyle (Ide.IdeApp.Preferences.UserInterfaceSkin); this.ctx = ctx; if (ctx != null) { - if (ctx.ParsedDocument == null || ctx.AnalysisDocument == null) { - LoggingService.LogError ("Signature markup creator created with invalid context." + Environment.NewLine + Environment.StackTrace); - } this.options = ctx.GetOptionSet (); } else { this.options = MonoDevelop.Ide.TypeSystem.TypeSystemService.Workspace.Options; @@ -109,7 +106,7 @@ namespace MonoDevelop.CSharp if (model == null) { var parsedDocument = ctx.ParsedDocument; if (parsedDocument != null) { - model = parsedDocument.GetAst<SemanticModel> () ?? ctx.AnalysisDocument.GetSemanticModelAsync ().Result; + model = parsedDocument.GetAst<SemanticModel> () ?? ctx.AnalysisDocument?.GetSemanticModelAsync ().Result; } } //Math.Min (model.SyntaxTree.Length, offset)) is needed in case parsedDocument.GetAst<SemanticModel> () is outdated diff --git a/main/src/addins/MacPlatform/MainToolbar/AwesomeBar.cs b/main/src/addins/MacPlatform/MainToolbar/AwesomeBar.cs index 145c159fe5..ec335ae567 100644 --- a/main/src/addins/MacPlatform/MainToolbar/AwesomeBar.cs +++ b/main/src/addins/MacPlatform/MainToolbar/AwesomeBar.cs @@ -27,6 +27,8 @@ using System; using AppKit; using CoreGraphics; +using Foundation; +using MonoDevelop.Core; using MonoDevelop.Core; using MonoDevelop.Ide; @@ -125,7 +127,24 @@ namespace MonoDevelop.MacIntegration.MainToolbar var locationInSV = Superview.ConvertPointFromView (theEvent.LocationInWindow, null); if (theEvent.ClickCount == 2 && HitTest (locationInSV) == this) { - Window.Zoom (this); + bool miniaturise = false; + + if (MacSystemInformation.OsVersion < MacSystemInformation.ElCapitan) { + miniaturise = NSUserDefaults.StandardUserDefaults.BoolForKey ("AppleMiniaturizeOnDoubleClick"); + } else { + var action = NSUserDefaults.StandardUserDefaults.StringForKey ("AppleActionOnDoubleClick"); + if (action == "None") { + return; + } else if (action == "Minimize") { + miniaturise = true; + } + } + + if (miniaturise) { + Window.Miniaturize (this); + } else { + Window.Zoom (this); + } } } diff --git a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs index 0f66834775..f89fc715ce 100644 --- a/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs +++ b/main/src/addins/MacPlatform/MainToolbar/SelectorView.cs @@ -298,9 +298,6 @@ namespace MonoDevelop.MacIntegration.MainToolbar var _configuration = configuration; menu.AddItem (new NSMenuItem (configuration.DisplayString, (o2, e2) => { ActiveConfiguration = configurationModel.First (c => c.OriginalId == _configuration.OriginalId); - if (ConfigurationChanged != null) - ConfigurationChanged (o2, e2); - UpdatePathText (ConfigurationIdx, _configuration.DisplayString); }) { Enabled = true, IndentationLevel = 1, @@ -427,6 +424,8 @@ namespace MonoDevelop.MacIntegration.MainToolbar set { activeConfiguration = value; state |= CellState.ConfigurationShown; + if (ConfigurationChanged != null) + ConfigurationChanged (this, EventArgs.Empty); UpdatePathText (ConfigurationIdx, value.DisplayString); OnSizeChanged (); } diff --git a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/IToolboxLoader.cs b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/IToolboxLoader.cs index f7fad29038..f5e8edc5b8 100644 --- a/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/IToolboxLoader.cs +++ b/main/src/addins/MonoDevelop.DesignerSupport/MonoDevelop.DesignerSupport.Toolbox/IToolboxLoader.cs @@ -64,7 +64,7 @@ namespace MonoDevelop.DesignerSupport.Toolbox ExternalLoader eloader; if (!externalLoaders.TryGetValue (runtime, out eloader)) { - eloader = (ExternalLoader) Runtime.ProcessService.CreateExternalProcessObject (typeof(ExternalLoader), runtime); + eloader = (ExternalLoader) Runtime.ProcessService.CreateExternalProcessObject (typeof(ExternalLoader), runtime.GetExecutionHandler ()); externalLoaders [runtime] = eloader; values [counter++] = eloader; } else { diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/ActionGroupView.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/ActionGroupView.cs index bef385e027..9bd11bc1f6 100644 --- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/ActionGroupView.cs +++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/ActionGroupView.cs @@ -38,6 +38,7 @@ using MonoDevelop.DesignerSupport; using Microsoft.CodeAnalysis; using MonoDevelop.Ide; using System.Threading.Tasks; +using MonoDevelop.Refactoring; namespace MonoDevelop.GtkCore.GuiBuilder { @@ -183,7 +184,7 @@ namespace MonoDevelop.GtkCore.GuiBuilder var met = cls.GetMembers (signal.Handler).OfType<IMethodSymbol> ().FirstOrDefault (); if (met != null) { ShowPage (1); - IdeApp.ProjectOperations.JumpToDeclaration (met); + RefactoringService.RoslynJumpToDeclaration(met); } } diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderView.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderView.cs index 00845bd1f2..f1b4ded7ea 100644 --- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderView.cs +++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.GuiBuilder/GuiBuilderView.cs @@ -46,6 +46,7 @@ using Gdk; using MonoDevelop.Ide; using Microsoft.CodeAnalysis; using System.Threading.Tasks; +using MonoDevelop.Refactoring; namespace MonoDevelop.GtkCore.GuiBuilder { @@ -378,7 +379,7 @@ namespace MonoDevelop.GtkCore.GuiBuilder .FirstOrDefault (); if (met != null) { ShowPage (0); - IdeApp.ProjectOperations.JumpToDeclaration (met); + RefactoringService.RoslynJumpToDeclaration (met); } } diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs index be46db225f..445b9e46d8 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Gui/AddPackagesDialog.cs @@ -111,6 +111,9 @@ namespace MonoDevelop.PackageManagement viewModel.PropertyChanged -= ViewModelPropertyChanged;
parentViewModel.Dispose ();
DisposeExistingTimer ();
+ packageStore.Clear ();
+ viewModel = null;
+ parentViewModel = null;
base.Dispose (disposing);
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNode.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNode.cs index c22033d690..5d959a7146 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNode.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNode.cs @@ -139,6 +139,11 @@ namespace MonoDevelop.PackageManagement.NodeBuilders {
return reference.IsPackageInstalled (project.DotNetProject);
}
+
+ public void ClearPackageReferences ()
+ {
+ packageReferences = null;
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesProjectNodeBuilderExtension.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesProjectNodeBuilderExtension.cs index 1fc090597e..98f1c484fc 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesProjectNodeBuilderExtension.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesProjectNodeBuilderExtension.cs @@ -83,7 +83,17 @@ namespace MonoDevelop.PackageManagement.NodeBuilders {
ITreeBuilder builder = Context.GetTreeBuilder (project);
if (builder != null) {
- builder.UpdateChildren ();
+ if (builder.MoveToChild ("References", typeof (ProjectReferenceCollection))) {
+ builder.UpdateAll ();
+ builder.MoveToParent ();
+ }
+
+ if (builder.MoveToChild ("Packages", typeof (ProjectPackagesFolderNode))) {
+ var packagesFolder = (ProjectPackagesFolderNode)builder.DataItem;
+ packagesFolder.ClearPackageReferences ();
+ builder.UpdateAll ();
+ builder.MoveToParent ();
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UpdatedPackagesInSolutionTests.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UpdatedPackagesInSolutionTests.cs index 3bd97e9fa4..0a0a83eed6 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UpdatedPackagesInSolutionTests.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.Tests/MonoDevelop.PackageManagement.Tests/UpdatedPackagesInSolutionTests.cs @@ -654,6 +654,37 @@ namespace MonoDevelop.PackageManagement.Tests Assert.AreEqual (0, updatedPackages.GetPackages ().Count ());
}
+
+ [Test]
+ public void GetUpdatedPackages_UpdatingThreeOldAndroidPackagesInstallsOneAndUpdatesOneAndRemovesOneWithOneInstall_NoUpdatesRemain ()
+ {
+ CreateUpdatedPackagesInSolution ();
+ FakePackageManagementProject project = AddProjectToSolution ();
+ project.AddPackageReference ("Xamarin.Android.Support.v13", "20.0.0.4");
+ project.AddPackageReference ("Xamarin.Android.Support.v4", "20.0.0.4");
+ project.AddPackageReference ("Xamarin.Android.Support.v7.AppCompat", "20.0.0.2");
+ AddUpdatedPackageToAggregateSourceRepository ("Xamarin.Android.Support.v13", "23.1.1.0");
+ AddUpdatedPackageToAggregateSourceRepository ("Xamarin.Android.Support.v4", "23.1.1.0");
+ AddUpdatedPackageToAggregateSourceRepository ("Xamarin.Android.Support.v7.AppCompat", "23.1.1.0");
+ updatedPackagesInSolution.CheckForUpdates ();
+ int originalUpdatesAvailable = updatedPackagesInSolution
+ .GetUpdatedPackages (project.Project)
+ .GetPackages ()
+ .Count ();
+ var task = taskFactory.FakeTasksCreated [0] as FakeTask<CheckForUpdatesTask>;
+ task.ExecuteTaskButNotContinueWith ();
+ project.PackageReferences.Clear ();
+ project.AddPackageReference ("Xamarin.Android.Support.v4", "23.1.1.0");
+ project.AddPackageReference ("Xamarin.Android.Support.v7.AppCompat", "23.1.1.0");
+ var installedPackage = FakePackage.CreatePackageWithVersion ("Xamarin.Android.Support.v4", "23.1.1.0");
+ packageManagementEvents.OnParentPackageInstalled (installedPackage, project);
+ task.ExecuteContinueWith ();
+
+ UpdatedPackagesInProject updatedPackages = updatedPackagesInSolution.GetUpdatedPackages (project.Project);
+
+ Assert.AreEqual (3, originalUpdatesAvailable);
+ Assert.AreEqual (0, updatedPackages.GetPackages ().Count ());
+ }
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs index d7ad16154e..f9178786a8 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/BackgroundPackageActionRunner.cs @@ -79,7 +79,13 @@ namespace MonoDevelop.PackageManagement AddInstallActionsToPendingQueue (actions);
packageManagementEvents.OnPackageOperationsStarting ();
runCount++;
- BackgroundDispatch (() => TryRunActionsWithProgressMonitor (progressMessage, actions.ToList ()));
+
+ List<IPackageAction> actionsList = actions.ToList ();
+ BackgroundDispatch (() => {
+ TryRunActionsWithProgressMonitor (progressMessage, actionsList);
+ actionsList = null;
+ progressMessage = null;
+ });
}
void AddInstallActionsToPendingQueue (IEnumerable<IPackageAction> actions)
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInProject.cs index c73b1ccd6d..66aeeb4985 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInProject.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/UpdatedPackagesInProject.cs @@ -82,6 +82,13 @@ namespace MonoDevelop.PackageManagement packages.Remove (package);
}
}
+
+ RemoveUninstalledPackages (packageReferences);
+ }
+
+ void RemoveUninstalledPackages (IEnumerable<PackageReference> packageReferences)
+ {
+ packages.RemoveAll (package => !packageReferences.Any (packageReference => packageReference.Id == package.Id));
}
}
}
diff --git a/main/src/addins/MonoDevelop.Refactoring/AssemblyInfo.cs b/main/src/addins/MonoDevelop.Refactoring/AssemblyInfo.cs index 120f59415c..a78ff47618 100644 --- a/main/src/addins/MonoDevelop.Refactoring/AssemblyInfo.cs +++ b/main/src/addins/MonoDevelop.Refactoring/AssemblyInfo.cs @@ -7,5 +7,6 @@ using System.Reflection; [assembly: AssemblyDescription ("Provides refactoring support to MonoDevelop")] [assembly: AssemblyVersion ("2.6")] [assembly: AssemblyCopyright ("X11")] +[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("FSharpBinding")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("MonoDevelop.CSharpBinding")] [assembly: System.Runtime.CompilerServices.InternalsVisibleTo("MonoDevelop.PackageManagement")] diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/Gui/ResultsEditorExtension.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/Gui/ResultsEditorExtension.cs index b327d21e98..f10459f87a 100644 --- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/Gui/ResultsEditorExtension.cs +++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.AnalysisCore/Gui/ResultsEditorExtension.cs @@ -149,7 +149,7 @@ namespace MonoDevelop.AnalysisCore.Gui var ad = new AnalysisDocument (Editor, DocumentContext); Task.Run (() => { try { - var result = CodeDiagnosticRunner.Check (ad, token); + var result = CodeDiagnosticRunner.Check (ad, token).Result; if (token.IsCancellationRequested) return; var updater = new ResultsUpdater (this, result, token); diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs index 9a7e31ccdc..571cff665b 100644 --- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs +++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeActions/CodeActionEditorExtension.cs @@ -149,7 +149,7 @@ namespace MonoDevelop.CodeActions if (Editor.IsInAtomicUndo) return; CancelQuickFixTimer (); - if (AnalysisOptions.EnableFancyFeatures && DocumentContext.ParsedDocument != null && !Debugger.DebuggingService.IsDebugging) { + if (AnalysisOptions.EnableFancyFeatures && DocumentContext.ParsedDocument != null) { var token = quickFixCancellationTokenSource.Token; var curOffset = Editor.CaretOffset; if (HasCurrentFixes) { diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeDiagnosticRunner.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeDiagnosticRunner.cs index d07bff1ef4..b7ce5ed5fe 100644 --- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeDiagnosticRunner.cs +++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.CodeIssues/CodeDiagnosticRunner.cs @@ -39,13 +39,16 @@ using MonoDevelop.AnalysisCore.Gui; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis; using System.Threading.Tasks; +using System.Diagnostics; namespace MonoDevelop.CodeIssues { static class CodeDiagnosticRunner { - static List<CodeDiagnosticDescriptor> diagnostics; - public static IEnumerable<Result> Check (AnalysisDocument analysisDocument, CancellationToken cancellationToken) + static IEnumerable<CodeDiagnosticDescriptor> diagnostics; + static TraceListener consoleTraceListener = new ConsoleTraceListener (); + + public static async Task<IEnumerable<Result>> Check (AnalysisDocument analysisDocument, CancellationToken cancellationToken) { var input = analysisDocument.DocumentContext; if (!AnalysisOptions.EnableFancyFeatures || input.Project == null || !input.IsCompileableInProject || input.AnalysisDocument == null) @@ -60,7 +63,7 @@ namespace MonoDevelop.CodeIssues var providers = new List<DiagnosticAnalyzer> (); var alreadyAdded = new HashSet<Type>(); if (diagnostics == null) { - diagnostics = CodeRefactoringService.GetCodeDiagnosticsAsync (analysisDocument.DocumentContext, language, cancellationToken).Result.ToList (); + diagnostics = await CodeRefactoringService.GetCodeDiagnosticsAsync (analysisDocument.DocumentContext, language, cancellationToken); } foreach (var diagnostic in diagnostics) { if (alreadyAdded.Contains (diagnostic.DiagnosticAnalyzerType)) @@ -74,6 +77,9 @@ namespace MonoDevelop.CodeIssues if (providers.Count == 0 || cancellationToken.IsCancellationRequested) return Enumerable.Empty<Result> (); + #if DEBUG + Debug.Listeners.Add (consoleTraceListener); + #endif CompilationWithAnalyzers compilationWithAnalyzer; var analyzers = System.Collections.Immutable.ImmutableArray<DiagnosticAnalyzer>.Empty.AddRange (providers); @@ -82,10 +88,15 @@ namespace MonoDevelop.CodeIssues compilationWithAnalyzer = compilation.WithAnalyzers (analyzers, null, cancellationToken); if (input.ParsedDocument == null || cancellationToken.IsCancellationRequested) return Enumerable.Empty<Result> (); - diagnosticList.AddRange (compilationWithAnalyzer.GetAnalyzerSemanticDiagnosticsAsync (model, null, cancellationToken).Result); + + diagnosticList.AddRange (await compilationWithAnalyzer.GetAnalyzerSemanticDiagnosticsAsync (model, null, cancellationToken).ConfigureAwait (false)); + diagnosticList.AddRange (await compilationWithAnalyzer.GetAnalyzerSyntaxDiagnosticsAsync (model.SyntaxTree, cancellationToken).ConfigureAwait (false)); } catch (Exception) { return Enumerable.Empty<Result> (); } finally { + #if DEBUG + Debug.Listeners.Remove (consoleTraceListener); + #endif CompilationWithAnalyzers.ClearAnalyzerState (analyzers); } diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml index 764ffbfad4..eb941dccf9 100644 --- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml +++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.addin.xml @@ -8,7 +8,7 @@ <ExtensionPoint path = "/MonoDevelop/Refactoring/CodeGenerators" name = "Code Generators"> <ExtensionNode name="Class"/> </ExtensionPoint> - + <ExtensionPoint path = "/MonoDevelop/Refactoring/ASTProvider" name = "ASTProviders"> <ExtensionNode name="Class"/> </ExtensionPoint> @@ -17,6 +17,14 @@ <ExtensionNode name="Class"/> </ExtensionPoint> + <ExtensionPoint path = "/MonoDevelop/Refactoring/FindReferencesProvider"> + <ExtensionNode name="Class"/> + </ExtensionPoint> + + <ExtensionPoint path = "/MonoDevelop/Refactoring/JumpToDeclarationHandler"> + <ExtensionNode name="Class"/> + </ExtensionPoint> + <ExtensionNodeSet id="MonoDevelop.AnalysisCore.Rules"> <ExtensionNode name="Category" type="MonoDevelop.Ide.Codons.CategoryNode"> <ExtensionNodeSet id="MonoDevelop.AnalysisCore.Rules" /> @@ -29,7 +37,7 @@ <Description>Analysis rules.</Description> <ExtensionNodeSet id="MonoDevelop.AnalysisCore.Rules" /> </ExtensionPoint> - + <ExtensionPoint path = "/MonoDevelop/AnalysisCore/Types" name = "Analysis rule input/output types"> <Description>Analysis rule input/output types.</Description> <ExtensionNode name="Type" type="MonoDevelop.AnalysisCore.Extensions.AnalysisTypeExtensionNode" /> diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj index b08275eb5b..3509cbcedd 100644 --- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj +++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring.csproj @@ -170,6 +170,8 @@ <Compile Include="MonoDevelop.CodeIssues\ISuppressionFixProvider.cs" /> <Compile Include="MonoDevelop.CodeIssues\CodeFix.cs" /> <Compile Include="MonoDevelop.CodeIssues\CSharpSuppressionFixProvider.cs" /> + <Compile Include="MonoDevelop.Refactoring\FindReferencesProvider.cs" /> + <Compile Include="MonoDevelop.Refactoring\JumpToDeclarationHandler.cs" /> </ItemGroup> <ItemGroup> <Folder Include="MonoDevelop.Refactoring\" /> diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/FindReferencesProvider.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/FindReferencesProvider.cs new file mode 100644 index 0000000000..9e8d17fb4d --- /dev/null +++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/FindReferencesProvider.cs @@ -0,0 +1,42 @@ +// +// FindReferencesProvider.cs +// +// Author: +// mkrueger <> +// +// Copyright (c) 2016 +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Threading; +using System.Threading.Tasks; +using System.Collections; +using System.Collections.Generic; +using MonoDevelop.Ide.FindInFiles; +using MonoDevelop.Projects; + +namespace MonoDevelop.Refactoring +{ + abstract class FindReferencesProvider + { + public abstract Task<IEnumerable<SearchResult>> FindReferences (string documentationCommentId, Project hintProject, CancellationToken token = default(CancellationToken)); + public abstract Task<IEnumerable<SearchResult>> FindAllReferences (string documentationCommentId, Project hintProject, CancellationToken token = default(CancellationToken)); + } +} + diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/JumpToDeclarationHandler.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/JumpToDeclarationHandler.cs new file mode 100644 index 0000000000..54f2b36559 --- /dev/null +++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/JumpToDeclarationHandler.cs @@ -0,0 +1,37 @@ +// +// JumpToDeclarationHandler.cs +// +// Author: +// Mike Krüger <mkrueger@xamarin.com> +// +// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Threading; +using System.Threading.Tasks; + +namespace MonoDevelop.Refactoring +{ + abstract class JumpToDeclarationHandler + { + public abstract Task<bool> TryJumpToDeclarationAsync (string documentIdString, Projects.Project hintProject, CancellationToken token = default(CancellationToken)); + } +} + diff --git a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs index e0ef78a287..fed58ad5a0 100644 --- a/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs +++ b/main/src/addins/MonoDevelop.Refactoring/MonoDevelop.Refactoring/RefactoringService.cs @@ -43,16 +43,42 @@ using MonoDevelop.Core.Instrumentation; using MonoDevelop.Ide.Editor; using Microsoft.CodeAnalysis.Options;
using MonoDevelop.Ide; -
+using MonoDevelop.Projects; +using Microsoft.CodeAnalysis; + namespace MonoDevelop.Refactoring -{ +{ public static class RefactoringService { internal static Func<TextEditor, DocumentContext, OptionSet> OptionSetCreation; + static List<FindReferencesProvider> findReferencesProvider = new List<FindReferencesProvider> (); + static List<JumpToDeclarationHandler> jumpToDeclarationHandler = new List<JumpToDeclarationHandler> (); static RefactoringService () { + AddinManager.AddExtensionNodeHandler ("/MonoDevelop/Refactoring/FindReferencesProvider", delegate(object sender, ExtensionNodeEventArgs args) { + var provider = (FindReferencesProvider) args.ExtensionObject; + switch (args.Change) { + case ExtensionChange.Add: + findReferencesProvider.Add (provider); + break; + case ExtensionChange.Remove: + findReferencesProvider.Remove (provider); + break; + } + }); + AddinManager.AddExtensionNodeHandler ("/MonoDevelop/Refactoring/JumpToDeclarationHandler", delegate(object sender, ExtensionNodeEventArgs args) { + var provider = (JumpToDeclarationHandler) args.ExtensionObject; + switch (args.Change) { + case ExtensionChange.Add: + jumpToDeclarationHandler.Add (provider); + break; + case ExtensionChange.Remove: + jumpToDeclarationHandler.Remove (provider); + break; + } + }); } class RenameHandler @@ -80,7 +106,23 @@ namespace MonoDevelop.Refactoring { AcceptChanges (monitor, changes, MonoDevelop.Ide.TextFileProvider.Instance); } - + + public static async Task RoslynJumpToDeclaration (ISymbol symbol, Projects.Project hintProject = null, CancellationToken token = default(CancellationToken)) + { + if (symbol.Locations.Any (loc => loc.IsInSource)) { // all locals are in source. + await Runtime.RunInMainThread (delegate { + IdeApp.ProjectOperations.JumpToDeclaration (symbol); + }); + return; + } + var result = await TryJumpToDeclarationAsync (symbol.GetDocumentationCommentId (), hintProject, token).ConfigureAwait (false); + if (!result) { + await Runtime.RunInMainThread (delegate { + IdeApp.ProjectOperations.JumpToDeclaration (symbol, hintProject); + }); + } + } + public static void AcceptChanges (ProgressMonitor monitor, IList<Change> changes, MonoDevelop.Ide.ITextFileProvider fileProvider) { var rctx = new RefactoringOptions (null, null); @@ -201,21 +243,66 @@ namespace MonoDevelop.Refactoring return location; } - //static readonly CodeAnalysisBatchRunner runner = new CodeAnalysisBatchRunner(); + public static async Task FindReferencesAsync (string documentIdString, Projects.Project hintProject = null, CancellationToken token = default(CancellationToken)) + { + if (hintProject == null) + hintProject = IdeApp.Workbench.ActiveDocument?.Project; + var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true); + try { + foreach (var provider in findReferencesProvider) { + foreach (var result in await provider.FindReferences (documentIdString, hintProject, token)) { + monitor.ReportResult (result); + } + } + } catch (Exception ex) { + if (monitor != null) + monitor.ReportError ("Error finding references", ex); + else + LoggingService.LogError ("Error finding references", ex); + } finally { + if (monitor != null) + monitor.Dispose (); + } + } + + public static async Task FindAllReferencesAsync (string documentIdString, Projects.Project hintProject = null, CancellationToken token = default(CancellationToken)) + { + if (hintProject == null) + hintProject = IdeApp.Workbench.ActiveDocument?.Project; + var monitor = IdeApp.Workbench.ProgressMonitors.GetSearchProgressMonitor (true, true); + try { + foreach (var provider in findReferencesProvider) { + foreach (var result in await provider.FindAllReferences (documentIdString, hintProject, token)) { + monitor.ReportResult (result); + } + } + } catch (OperationCanceledException) { -// /// <summary> -// /// Queues a code analysis job. -// /// </summary> -// /// <param name="job">The job to queue.</param> -// /// <param name="progressMessage"> -// /// The message used for a progress monitor, or null if no progress monitor should be used. -// /// </param> -// public static IJobContext QueueCodeIssueAnalysis(IAnalysisJob job, string progressMessage = null) -// { -// if (progressMessage != null) -// job = new ProgressMonitorWrapperJob (job, progressMessage); -// return runner.QueueJob (job); -// return null; -// } + } catch (Exception ex) { + if (monitor != null) + monitor.ReportError ("Error finding references", ex); + else + LoggingService.LogError ("Error finding references", ex); + } finally { + if (monitor != null) + monitor.Dispose (); + } + } + + public static async Task<bool> TryJumpToDeclarationAsync (string documentIdString, Projects.Project hintProject = null, CancellationToken token = default(CancellationToken)) + { + try { + if (hintProject == null) + hintProject = IdeApp.Workbench.ActiveDocument?.Project; + foreach (var handler in jumpToDeclarationHandler) { + if (await handler.TryJumpToDeclarationAsync (documentIdString, hintProject, token)) + return true; + } + } catch (OperationCanceledException) { + } catch (Exception ex) { + LoggingService.LogError ("Error finding references", ex); + } + return false; + } } -} +}
\ No newline at end of file diff --git a/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit.csproj b/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit.csproj index 0e9417f934..693ad315a0 100644 --- a/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit.csproj +++ b/main/src/addins/MonoDevelop.RegexToolkit/MonoDevelop.RegexToolkit.csproj @@ -82,6 +82,10 @@ <HintPath>..\..\..\external\roslyn\Binaries\Release\System.Composition.AttributedModel.dll</HintPath> <Private>False</Private> </Reference> + <Reference Include="System.Collections.Immutable"> + <HintPath>..\..\..\build\bin\System.Collections.Immutable.dll</HintPath> + <Private>False</Private> + </Reference> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj"> diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/FileRegistry.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/FileRegistry.cs index 90c7229aba..366c5c355a 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/FileRegistry.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/FileRegistry.cs @@ -44,16 +44,11 @@ namespace MonoDevelop.SourceEditor readonly static List<SourceEditorView> openFiles = new List<SourceEditorView> (); readonly static FileSystemWatcher fileSystemWatcher; - public static bool SuspendFileWatch { - get; - set; - } - static FileRegistry () { fileSystemWatcher = new FileSystemWatcher (); - fileSystemWatcher.Created += (s,e) => Runtime.RunInMainThread (() => OnFileChanged (s,e)); - fileSystemWatcher.Changed += (s,e) => Runtime.RunInMainThread (() => OnFileChanged (s,e)); + fileSystemWatcher.Created += (s, e) => Runtime.RunInMainThread (() => OnFileChanged (s, e)); + fileSystemWatcher.Changed += (s, e) => Runtime.RunInMainThread (() => OnFileChanged (s, e)); FileService.FileCreated += HandleFileServiceChange; FileService.FileChanged += HandleFileServiceChange; @@ -79,10 +74,14 @@ namespace MonoDevelop.SourceEditor static void HandleFileServiceChange (object sender, FileEventArgs e) { // The Ide.Document generates a file service changed event this needs to be skipped. - if (!TypeSystemService.TrackFileChanges || SuspendFileWatch) + if (!TypeSystemService.TrackFileChanges) return; bool foundOneChange = false; foreach (var file in e) { + if (skipFiles.Contains (file.FileName)) { + skipFiles.Remove (file.FileName); + continue; + } foreach (var view in openFiles) { if (SkipView (view) || !string.Equals (view.ContentName, file.FileName, FilePath.PathComparison)) continue; @@ -116,14 +115,16 @@ namespace MonoDevelop.SourceEditor static void OnFileChanged (object sender, FileSystemEventArgs e) { - if (e.ChangeType == WatcherChangeTypes.Changed || e.ChangeType == WatcherChangeTypes.Created) + if (e.ChangeType == WatcherChangeTypes.Changed || e.ChangeType == WatcherChangeTypes.Created) CheckFileChange (e.FullPath); } static void CheckFileChange (string fileName) { - if (SuspendFileWatch) + if (skipFiles.Contains (fileName)) { + skipFiles.Remove (fileName); return; + } var changedViews = new List<SourceEditorView> (); foreach (var view in openFiles) { @@ -195,7 +196,7 @@ namespace MonoDevelop.SourceEditor foreach (var view in openFiles) { if (SkipView (view) || !view.SourceEditorWidget.HasIncorrectEolMarker) continue; - + view.SourceEditorWidget.ConvertLineEndings (); view.SourceEditorWidget.RemoveMessageBar (); view.WorkbenchWindow.ShowNotification = false; @@ -224,9 +225,16 @@ namespace MonoDevelop.SourceEditor foreach (var view in openFiles) { if (SkipView (view) || !view.SourceEditorWidget.HasIncorrectEolMarker) continue; - view.SourceEditorWidget.UpdateEolMarkerMessage(multiple); + view.SourceEditorWidget.UpdateEolMarkerMessage (multiple); } } + + static List<string> skipFiles = new List<string> (); + internal static void SkipNextChange (string fileName) + { + if (!skipFiles.Contains (fileName)) + skipFiles.Add (fileName); + } #endregion } -} +} diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs index d3ee4cd3cf..99f044b508 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorView.cs @@ -669,7 +669,7 @@ namespace MonoDevelop.SourceEditor } } - FileRegistry.SuspendFileWatch = true; + FileRegistry.SkipNextChange (fileName); try { object attributes = null; if (File.Exists (fileName)) { @@ -739,11 +739,8 @@ namespace MonoDevelop.SourceEditor } catch (UnauthorizedAccessException e) { LoggingService.LogError ("Error while saving file", e); MessageService.ShowError (GettextCatalog.GetString ("Can't save file - access denied"), e.Message); - } finally { - FileService.NotifyFileChanged (fileName); - FileRegistry.SuspendFileWatch = false; } - + // if (encoding != null) // se.Buffer.SourceEncoding = encoding; // TextFileService.FireCommitCountChanges (this); @@ -2990,28 +2987,75 @@ namespace MonoDevelop.SourceEditor } } - void ITextEditorImpl.UpdateBraceMatchingResult (BraceMatchingResult? result) + + class BracketMatcherTextMarker : TextSegmentMarker { - var oldOffset = widget.TextEditor.TextViewMargin.HighlightBracketOffset; + public BracketMatcherTextMarker (int offset, int length) : base (offset, length) + { + } - if (result.HasValue) { - if (result.Value.IsCaretInLeft) { - widget.TextEditor.TextViewMargin.HighlightBracketOffset = result.Value.RightSegment.Offset; - } else { - widget.TextEditor.TextViewMargin.HighlightBracketOffset = result.Value.LeftSegment.Offset; + public override void DrawBackground (MonoTextEditor editor, Cairo.Context cr, LineMetrics metrics, int startOffset, int endOffset) + { + double fromX, toX; + GetLineDrawingPosition (metrics, startOffset, out fromX, out toX); + + fromX = Math.Max (fromX, editor.TextViewMargin.XOffset); + toX = Math.Max (toX, editor.TextViewMargin.XOffset); + if (fromX < toX) { + var bracketMatch = new Cairo.Rectangle (fromX + 0.5, metrics.LineYRenderStartPosition + 0.5, toX - fromX - 1, editor.LineHeight - 2); + if (editor.TextViewMargin.BackgroundRenderer == null) { + cr.SetSourceColor (editor.ColorStyle.BraceMatchingRectangle.Color); + cr.Rectangle (bracketMatch); + cr.FillPreserve (); + cr.SetSourceColor (editor.ColorStyle.BraceMatchingRectangle.SecondColor); + cr.Stroke (); + } } - } else { - widget.TextEditor.TextViewMargin.HighlightBracketOffset = -1; } - if (oldOffset >= 0) { - widget.Document.CommitLineUpdate (widget.TextEditor.OffsetToLineNumber (oldOffset)); + void GetLineDrawingPosition (LineMetrics metrics, int startOffset, out double fromX, out double toX) + { + var startXPos = metrics.TextRenderStartPosition; + var endXPos = metrics.TextRenderEndPosition; + int start = this.Offset; + int end = this.EndOffset; + + uint curIndex = 0, byteIndex = 0; + TextViewMargin.TranslateToUTF8Index (metrics.Layout.LineChars, (uint)(start - startOffset), ref curIndex, ref byteIndex); + + int x_pos = metrics.Layout.Layout.IndexToPos ((int)byteIndex).X; + + fromX = startXPos + (int)(x_pos / Pango.Scale.PangoScale); + + TextViewMargin.TranslateToUTF8Index (metrics.Layout.LineChars, (uint)(end - startOffset), ref curIndex, ref byteIndex); + x_pos = metrics.Layout.Layout.IndexToPos ((int)byteIndex).X; + + toX = startXPos + (int)(x_pos / Pango.Scale.PangoScale); } - if (widget.TextEditor.TextViewMargin.HighlightBracketOffset >= 0) { - widget.Document.CommitLineUpdate (widget.TextEditor.OffsetToLineNumber (widget.TextEditor.TextViewMargin.HighlightBracketOffset)); + } + + List<BracketMatcherTextMarker> bracketMarkers = new List<BracketMatcherTextMarker> (); + + void ITextEditorImpl.UpdateBraceMatchingResult (BraceMatchingResult? result) + { + if (result.HasValue) { + if (bracketMarkers.Count > 0 && result.Value.LeftSegment.Offset == bracketMarkers [0].Offset) + return; + ClearBracketMarkers (); + bracketMarkers.Add (new BracketMatcherTextMarker (result.Value.LeftSegment.Offset, result.Value.LeftSegment.Length)); + bracketMarkers.Add (new BracketMatcherTextMarker (result.Value.RightSegment.Offset, result.Value.RightSegment.Length)); + bracketMarkers.ForEach (marker => widget.TextEditor.Document.AddMarker (marker)); + } else { + ClearBracketMarkers (); } } + void ClearBracketMarkers () + { + bracketMarkers.ForEach (marker => widget.TextEditor.Document.RemoveMarker (marker)); + bracketMarkers.Clear (); + } + public event EventHandler<MonoDevelop.Ide.Editor.LineEventArgs> LineChanged; public event EventHandler<MonoDevelop.Ide.Editor.LineEventArgs> LineInserted; @@ -3034,7 +3078,7 @@ namespace MonoDevelop.SourceEditor public double ZoomLevel { get { return TextEditor != null && TextEditor.Options != null ? TextEditor.Options.Zoom : 1d; } - set { if (TextEditor != null && TextEditor.Options != null) TextEditor.Options.Zoom = value; } + set { if (TextEditor != null && TextEditor.Options != null) TextEditor.Options.Zoom = value; } } event EventHandler ITextEditorImpl.ZoomLevelChanged { add { @@ -3195,7 +3239,7 @@ namespace MonoDevelop.SourceEditor } void IEditorActionHost.MoveNextSubWord () - { + { TextEditor.RunAction (SelectionActions.MoveNextSubword); } @@ -3292,8 +3336,8 @@ namespace MonoDevelop.SourceEditor } #endregion - - + + #region ISegmentMarkerHost implementation ITextSegmentMarker ITextMarkerFactory.CreateUsageMarker (MonoDevelop.Ide.Editor.TextEditor editor, Usage usage) @@ -3379,7 +3423,7 @@ namespace MonoDevelop.SourceEditor void GotoPgDown () { widget.QuickTaskStrip.GotoPgDown (); - } + } [CommandUpdateHandler (ScrollbarCommand.ShowTasks)] void UpdateShowMap (CommandInfo info) diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs index 53adc8eed6..9dfe1d2b70 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/SourceEditorWidget.cs @@ -1184,7 +1184,7 @@ namespace MonoDevelop.SourceEditor SetReplacePatternToSelection (); } - void ShowSearchReplaceWidget (bool replace) + void ShowSearchReplaceWidget (bool replace, bool switchFocus = true) { if (searchAndReplaceWidget == null) { KillWidgets (); @@ -1219,7 +1219,8 @@ namespace MonoDevelop.SourceEditor this.FindNext (); } } - searchAndReplaceWidget.Focus (); + if (switchFocus) + searchAndReplaceWidget.Focus (); } public void ShowGotoLineNumberWidget () @@ -1251,6 +1252,8 @@ namespace MonoDevelop.SourceEditor public SearchResult FindNext (bool focus) { + if (searchAndReplaceWidget == null) + ShowSearchReplaceWidget (false, false); return SearchAndReplaceWidget.FindNext (TextEditor); } @@ -1261,6 +1264,8 @@ namespace MonoDevelop.SourceEditor public SearchResult FindPrevious (bool focus) { + if (searchAndReplaceWidget == null) + ShowSearchReplaceWidget (false, false); return SearchAndReplaceWidget.FindPrevious (TextEditor); } diff --git a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/DebugTextMarker.cs b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/DebugTextMarker.cs index 6ca9f1588a..7f82fe371f 100644 --- a/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/DebugTextMarker.cs +++ b/main/src/addins/MonoDevelop.SourceEditor2/MonoDevelop.SourceEditor/TextMarker/DebugTextMarker.cs @@ -70,10 +70,11 @@ namespace MonoDevelop.SourceEditor class DebugTextMarker : TextSegmentMarker, IChunkMarker { - readonly AmbientColor background; - readonly ChunkStyle forground; + readonly Func<MonoTextEditor, AmbientColor> background; + readonly Func<MonoTextEditor, ChunkStyle> forground; + MonoTextEditor editor; - public DebugTextMarker (int offset, int length, AmbientColor background, ChunkStyle forground = null) + public DebugTextMarker (int offset, int length, Func<MonoTextEditor, AmbientColor> background, Func<MonoTextEditor, ChunkStyle> forground = null) : base (offset, length) { this.forground = forground; @@ -82,7 +83,7 @@ namespace MonoDevelop.SourceEditor public override void DrawBackground (MonoTextEditor editor, Cairo.Context cr, LineMetrics metrics, int startOffset, int endOffset) { - + this.editor = editor; int markerStart = base.Offset; int markerEnd = base.EndOffset; @@ -117,12 +118,12 @@ namespace MonoDevelop.SourceEditor @from = Math.Max (@from, editor.TextViewMargin.XOffset); to = Math.Max (to, editor.TextViewMargin.XOffset); if (@from < to) { - cr.SetSourceColor (background.Color); + cr.SetSourceColor (background(editor).Color); cr.RoundedRectangle (@from + 2.5, y + 0.5, to - @from, editor.LineHeight - 1, 2); // 2.5 to make space for the column guideline cr.FillPreserve (); - if (background.HasBorderColor) { - cr.SetSourceColor (background.BorderColor); + if (background(editor).HasBorderColor) { + cr.SetSourceColor (background(editor).BorderColor); cr.Stroke (); } } @@ -134,8 +135,8 @@ namespace MonoDevelop.SourceEditor return null; var style = new ChunkStyle (baseStyle); - if (forground != null) { - style.Foreground = forground.Foreground; + if (forground != null && editor != null) { + style.Foreground = forground(editor).Foreground; } return style; } @@ -167,14 +168,14 @@ namespace MonoDevelop.SourceEditor void IChunkMarker.ChangeForeColor (MonoTextEditor editor, Chunk chunk, ref Cairo.Color color) { - if (forground == null) { + if (forground == null || editor == null) { return; } int markerStart = Segment.Offset; int markerEnd = Segment.EndOffset; if (chunk.EndOffset <= markerStart || markerEnd <= chunk.Offset) return; - color = forground.Foreground; + color = forground(editor).Foreground; } #endregion @@ -210,7 +211,7 @@ namespace MonoDevelop.SourceEditor public BreakpointTextMarker (MonoTextEditor editor, int offset, int length, bool isTracepoint) { IconMarker = new DebugIconMarker (isTracepoint ? tracepoint : breakpoint); - TextMarker = new DebugTextMarker (offset, length, editor.ColorStyle.BreakpointMarker, editor.ColorStyle.BreakpointText); + TextMarker = new DebugTextMarker (offset, length, e => e.ColorStyle.BreakpointMarker, e => e.ColorStyle.BreakpointText); } } @@ -222,7 +223,7 @@ namespace MonoDevelop.SourceEditor public DisabledBreakpointTextMarker (MonoTextEditor editor, int offset, int length, bool isTracepoint) { IconMarker = new DebugIconMarker (isTracepoint ? tracepoint : breakpoint); - TextMarker = new DebugTextMarker (offset, length, editor.ColorStyle.BreakpointMarkerDisabled); + TextMarker = new DebugTextMarker (offset, length, e => e.ColorStyle.BreakpointMarkerDisabled); } } @@ -234,7 +235,7 @@ namespace MonoDevelop.SourceEditor public InvalidBreakpointTextMarker (MonoTextEditor editor, int offset, int length, bool isTracepoint) { IconMarker = new DebugIconMarker (isTracepoint ? tracepoint : breakpoint); - TextMarker = new DebugTextMarker (offset, length, editor.ColorStyle.BreakpointMarkerInvalid); + TextMarker = new DebugTextMarker (offset, length, e => e.ColorStyle.BreakpointMarkerInvalid); } } @@ -245,7 +246,7 @@ namespace MonoDevelop.SourceEditor public DebugStackLineTextMarker (MonoTextEditor editor, int offset, int length) { IconMarker = new DebugIconMarker (stackLine); - TextMarker = new DebugTextMarker (offset, length, editor.ColorStyle.DebuggerStackLineMarker, editor.ColorStyle.DebuggerStackLine); + TextMarker = new DebugTextMarker (offset, length, e => e.ColorStyle.DebuggerStackLineMarker, e => e.ColorStyle.DebuggerStackLine); } } @@ -256,7 +257,7 @@ namespace MonoDevelop.SourceEditor public CurrentDebugLineTextMarker (MonoTextEditor editor, int offset, int length) { IconMarker = new DebugIconMarker (currentLine); - TextMarker = new DebugTextMarker (offset, length, editor.ColorStyle.DebuggerCurrentLineMarker, editor.ColorStyle.DebuggerCurrentLine); + TextMarker = new DebugTextMarker (offset, length, e => e.ColorStyle.DebuggerCurrentLineMarker, e => e.ColorStyle.DebuggerCurrentLine); } public bool IsVisible { get { return IconMarker.IsVisible; } set { IconMarker.IsVisible = value; } } diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Commands/WebReferenceCommandHandler.cs b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Commands/WebReferenceCommandHandler.cs index 6193f36310..c45f4968fe 100644 --- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Commands/WebReferenceCommandHandler.cs +++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.Commands/WebReferenceCommandHandler.cs @@ -15,13 +15,11 @@ namespace MonoDevelop.WebReferences.Commands /// <summary>Defines the properties and methods for the WebReferenceCommandHandler class.</summary> public class WebReferenceCommandHandler : NodeCommandHandler { - StatusBarContext UpdateReferenceContext { - get; set; - } - + bool updatingReferences; + /// <summary>Execute the command for adding a new web reference to a project.</summary> [CommandHandler (WebReferenceCommands.Add)] - public void NewWebReference() + public async void NewWebReference() { // Get the project and project folder var project = CurrentNode.GetParentDataItem (typeof(DotNetProject), true) as DotNetProject; @@ -47,8 +45,8 @@ namespace MonoDevelop.WebReferences.Commands if (MessageService.RunCustomDialog (dialog) != (int)Gtk.ResponseType.Ok) return; - dialog.SelectedService.GenerateFiles (project, dialog.Namespace, dialog.ReferenceName); - IdeApp.ProjectOperations.SaveAsync(project); + await dialog.SelectedService.GenerateFiles (project, dialog.Namespace, dialog.ReferenceName); + await IdeApp.ProjectOperations.SaveAsync(project); } catch (Exception exception) { MessageService.ShowError ("The web reference could not be added", exception); } finally { @@ -61,72 +59,57 @@ namespace MonoDevelop.WebReferences.Commands [CommandUpdateHandler (WebReferenceCommands.UpdateAll)] void CanUpdateWebReferences (CommandInfo ci) { - // This does not appear to work. - ci.Enabled = UpdateReferenceContext == null; + ci.Enabled = !updatingReferences; } /// <summary>Execute the command for updating a web reference in a project.</summary> [CommandHandler (WebReferenceCommands.Update)] - public void Update() + public async void Update() { - UpdateReferences (new [] { (WebReferenceItem) CurrentNode.DataItem }); + await UpdateReferences (new [] { (WebReferenceItem) CurrentNode.DataItem }); } /// <summary>Execute the command for updating all web reference in a project.</summary> [CommandHandler (WebReferenceCommands.UpdateAll)] - public void UpdateAll() + public async void UpdateAll() { var folder = (WebReferenceFolder)CurrentNode.DataItem; DotNetProject project = folder.Project; if (folder.IsWCF) - UpdateReferences (WebReferencesService.GetWebReferenceItemsWCF (project).ToArray ()); + await UpdateReferences (WebReferencesService.GetWebReferenceItemsWCF (project).ToArray ()); else - UpdateReferences (WebReferencesService.GetWebReferenceItemsWS (project).ToArray ()); + await UpdateReferences (WebReferencesService.GetWebReferenceItemsWS (project).ToArray ()); } - void UpdateReferences (IList<WebReferenceItem> items) + async Task UpdateReferences (IList<WebReferenceItem> items) { + if (updatingReferences) + return; try { - UpdateReferenceContext = IdeApp.Workbench.StatusBar.CreateContext (); - UpdateReferenceContext.BeginProgress (GettextCatalog.GetPluralString ("Updating web reference", "Updating web references", items.Count)); - - Task.Run (() => { - for (int i = 0; i < items.Count; i ++) { - Runtime.RunInMainThread (() => UpdateReferenceContext.SetProgressFraction (Math.Max (0.1, (double)i / items.Count))); + updatingReferences = true; + using (var monitor = IdeApp.Workbench.ProgressMonitors.GetStatusProgressMonitor (GettextCatalog.GetPluralString ("Updating web reference", "Updating web references", items.Count), MonoDevelop.Ide.Gui.Stock.StatusDownload, true)) { + monitor.BeginTask (GettextCatalog.GetPluralString ("Updating web reference", "Updating web references", items.Count), items.Count); + + for (int i = 0; i < items.Count; i++) { try { - items [i].Update(); + await items [i].Update (); } catch (Exception ex) { - Runtime.RunInMainThread (() => { - MessageService.ShowError (GettextCatalog.GetString ("Failed to update Web Reference '{0}'", items [i].Name), ex); - DisposeUpdateContext (); - }).Wait (); + MessageService.ShowError (GettextCatalog.GetString ("Failed to update Web Reference '{0}'", items [i].Name), ex); return; } + monitor.Step (); } - - Runtime.RunInMainThread (() => { - // Make sure that we save all relevant projects, there should only be 1 though - foreach (var project in items.Select (i =>i.Project).Distinct ()) - IdeApp.ProjectOperations.SaveAsync (project); - - IdeApp.Workbench.StatusBar.ShowMessage(GettextCatalog.GetPluralString ("Updated Web Reference {0}", "Updated Web References", items.Count, items[0].Name)); - DisposeUpdateContext (); - }); - }); - } catch { - DisposeUpdateContext (); - throw; + + // Make sure that we save all relevant projects, there should only be 1 though + foreach (var project in items.Select (i => i.Project).Distinct ()) + await IdeApp.ProjectOperations.SaveAsync (project); + } + IdeApp.Workbench.StatusBar.ShowMessage (GettextCatalog.GetPluralString ("Updated Web Reference {0}", "Updated Web References", items.Count, items [0].Name)); + } finally { + updatingReferences = false; } } - void DisposeUpdateContext () - { - if (UpdateReferenceContext != null) { - UpdateReferenceContext.Dispose (); - UpdateReferenceContext = null; - } - } - /// <summary>Execute the command for removing a web reference from a project.</summary> [CommandHandler (WebReferenceCommands.Delete)] public void Delete() @@ -168,7 +151,7 @@ namespace MonoDevelop.WebReferences.Commands /// <summary>Execute the command for configuring a web reference in a project.</summary> [CommandHandler (WebReferenceCommands.Configure)] - public void Configure () + public async void Configure () { var item = (WebReferenceItem) CurrentNode.DataItem; @@ -196,7 +179,7 @@ namespace MonoDevelop.WebReferences.Commands return; refgroup.Save (item.MapFile.FilePath); - UpdateReferences (new [] { item }); + await UpdateReferences (new [] { item }); } catch (Exception exception) { LoggingService.LogInternalError (exception); } finally { diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.WCF/WebServiceDiscoveryResultWCF.cs b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.WCF/WebServiceDiscoveryResultWCF.cs index ea43a06504..383470d741 100644 --- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.WCF/WebServiceDiscoveryResultWCF.cs +++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.WCF/WebServiceDiscoveryResultWCF.cs @@ -40,6 +40,7 @@ using System.Xml.Schema; using System.Text; using Mono.ServiceContractTool; using MonoDevelop.Core; +using System.Threading.Tasks; namespace MonoDevelop.WebReferences.WCF { @@ -94,7 +95,7 @@ namespace MonoDevelop.WebReferences.WCF } } - protected override string GenerateDescriptionFiles (DotNetProject dotNetProject, FilePath basePath) + protected override async Task<string> GenerateDescriptionFiles (DotNetProject dotNetProject, FilePath basePath) { if (!dotNetProject.Items.GetAll<WCFMetadata> ().Any ()) { var met = new WCFMetadata (basePath.ParentDirectory); @@ -104,27 +105,31 @@ namespace MonoDevelop.WebReferences.WCF WCFMetadataStorage metStor = dotNetProject.Items.GetAll<WCFMetadataStorage> ().FirstOrDefault (m => m.Path.CanonicalPath == basePath); if (metStor == null) dotNetProject.Items.Add (new WCFMetadataStorage (basePath)); - + string file = Path.Combine (basePath, "Reference.svcmap"); - if (protocol != null) { - protocol.ResolveAll (); - protocol.WriteAll (basePath, "Reference.svcmap"); - refGroup = ConvertMapFile (file); - } else { - // TODO - var map = new ReferenceGroup (); - map.ClientOptions = defaultOptions; - map.Save (file); - map.ID = Guid.NewGuid ().ToString (); - refGroup = map; - } + + await Task.Run (() => { + if (protocol != null) { + protocol.ResolveAll (); + protocol.WriteAll (basePath, "Reference.svcmap"); + refGroup = ConvertMapFile (file); + } else { + // TODO + var map = new ReferenceGroup (); + map.ClientOptions = defaultOptions; + map.Save (file); + map.ID = Guid.NewGuid ().ToString (); + refGroup = map; + } + }); + foreach (MetadataFile mfile in refGroup.Metadata) dotNetProject.AddFile (new FilePath (mfile.FileName).ToAbsolute (basePath), BuildAction.None); return file; } - public override void Update () + public override async Task Update () { ReferenceGroup resfile = ReferenceGroup.Read (Item.MapFile.FilePath); if (resfile.MetadataSources.Count == 0) @@ -136,7 +141,7 @@ namespace MonoDevelop.WebReferences.WCF metadata = wref.metadata; protocol = wref.protocol; - GenerateFiles (Item.Project, Item.Project.DefaultNamespace, Item.Name); + await GenerateFiles (Item.Project, Item.Project.DefaultNamespace, Item.Name); } public override IEnumerable<string> GetAssemblyReferences () @@ -147,72 +152,73 @@ namespace MonoDevelop.WebReferences.WCF yield return "System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; } - protected override string CreateProxyFile (DotNetProject dotNetProject, FilePath basePath, string proxyNamespace, string referenceName) + protected override Task<string> CreateProxyFile (DotNetProject dotNetProject, FilePath basePath, string proxyNamespace, string referenceName) { - var ccu = new CodeCompileUnit (); - var cns = new CodeNamespace (proxyNamespace); - ccu.Namespaces.Add (cns); - + CodeDomProvider code_provider = GetProvider (dotNetProject); + bool targetMoonlight = dotNetProject.TargetFramework.Id.Identifier == ("Silverlight"); bool targetMonoTouch = dotNetProject.TargetFramework.Id.Identifier == ("MonoTouch"); bool targetMonoDroid = dotNetProject.TargetFramework.Id.Identifier == ("MonoDroid"); - - bool targetCoreClr = targetMoonlight || targetMonoDroid || targetMonoTouch; - bool generateSyncMethods = targetMonoDroid | targetMonoTouch; - - var generator = new ServiceContractGenerator (ccu); - generator.Options = ServiceContractGenerationOptions.ChannelInterface | ServiceContractGenerationOptions.ClientClass; - if (refGroup.ClientOptions.GenerateAsynchronousMethods || targetCoreClr) - generator.Options |= ServiceContractGenerationOptions.AsynchronousMethods; - if (refGroup.ClientOptions.GenerateEventBasedAsynchronousMethods) - generator.Options |= ServiceContractGenerationOptions.EventBasedAsynchronousMethods; + + return Task.Run (() => { + var ccu = new CodeCompileUnit (); + var cns = new CodeNamespace (proxyNamespace); + ccu.Namespaces.Add (cns); + + bool targetCoreClr = targetMoonlight || targetMonoDroid || targetMonoTouch; + bool generateSyncMethods = targetMonoDroid | targetMonoTouch; + + var generator = new ServiceContractGenerator (ccu); + generator.Options = ServiceContractGenerationOptions.ChannelInterface | ServiceContractGenerationOptions.ClientClass; + if (refGroup.ClientOptions.GenerateAsynchronousMethods || targetCoreClr) + generator.Options |= ServiceContractGenerationOptions.AsynchronousMethods; + if (refGroup.ClientOptions.GenerateEventBasedAsynchronousMethods) + generator.Options |= ServiceContractGenerationOptions.EventBasedAsynchronousMethods; #if NET_4_5 if (refGroup.ClientOptions.GenerateTaskBasedAsynchronousMethod) generator.Options |= ServiceContractGenerationOptions.TaskBasedAsynchronousMethod; #endif - if (refGroup.ClientOptions.GenerateInternalTypes) - generator.Options |= ServiceContractGenerationOptions.InternalTypes; - if (refGroup.ClientOptions.GenerateMessageContracts) - generator.Options |= ServiceContractGenerationOptions.TypedMessages; -// if (targetMoonlight || targetMonoTouch) -// generator.Options |= ServiceContractGenerationOptions.EventBasedAsynchronousMethods; - - MetadataSet mset; - mset = protocol != null ? ToMetadataSet (protocol) : metadata; + if (refGroup.ClientOptions.GenerateInternalTypes) + generator.Options |= ServiceContractGenerationOptions.InternalTypes; + if (refGroup.ClientOptions.GenerateMessageContracts) + generator.Options |= ServiceContractGenerationOptions.TypedMessages; + // if (targetMoonlight || targetMonoTouch) + // generator.Options |= ServiceContractGenerationOptions.EventBasedAsynchronousMethods; - CodeDomProvider code_provider = GetProvider (dotNetProject); - - var list = new List<IWsdlImportExtension> (); - list.Add (new TransportBindingElementImporter ()); - list.Add (new XmlSerializerMessageContractImporter ()); - - var importer = new WsdlImporter (mset); - try { - ConfigureImporter (importer); - } catch { - } + MetadataSet mset; + mset = protocol != null ? ToMetadataSet (protocol) : metadata; - Collection<ContractDescription> contracts = importer.ImportAllContracts (); - - foreach (ContractDescription cd in contracts) { - cd.Namespace = proxyNamespace; - if (targetCoreClr) { - var moonctx = new MoonlightChannelBaseContext (); - cd.Behaviors.Add (new MoonlightChannelBaseContractExtension (moonctx, generateSyncMethods)); - foreach (var od in cd.Operations) - od.Behaviors.Add (new MoonlightChannelBaseOperationExtension (moonctx, generateSyncMethods)); - generator.GenerateServiceContractType (cd); - moonctx.Fixup (); + var list = new List<IWsdlImportExtension> (); + list.Add (new TransportBindingElementImporter ()); + list.Add (new XmlSerializerMessageContractImporter ()); + + var importer = new WsdlImporter (mset); + try { + ConfigureImporter (importer); + } catch { } - else - generator.GenerateServiceContractType (cd); - } - - string fileSpec = Path.Combine (basePath, referenceName + "." + code_provider.FileExtension); - using (TextWriter w = File.CreateText (fileSpec)) { - code_provider.GenerateCodeFromCompileUnit (ccu, w, null); - } - return fileSpec; + + Collection<ContractDescription> contracts = importer.ImportAllContracts (); + + foreach (ContractDescription cd in contracts) { + cd.Namespace = proxyNamespace; + if (targetCoreClr) { + var moonctx = new MoonlightChannelBaseContext (); + cd.Behaviors.Add (new MoonlightChannelBaseContractExtension (moonctx, generateSyncMethods)); + foreach (var od in cd.Operations) + od.Behaviors.Add (new MoonlightChannelBaseOperationExtension (moonctx, generateSyncMethods)); + generator.GenerateServiceContractType (cd); + moonctx.Fixup (); + } else + generator.GenerateServiceContractType (cd); + } + + string fileSpec = Path.Combine (basePath, referenceName + "." + code_provider.FileExtension); + using (TextWriter w = File.CreateText (fileSpec)) { + code_provider.GenerateCodeFromCompileUnit (ccu, w, null); + } + return fileSpec; + }); } void ConfigureImporter (WsdlImporter importer) diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.WS/WebServiceDiscoveryResultWS.cs b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.WS/WebServiceDiscoveryResultWS.cs index 4386c278aa..178a85908a 100644 --- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.WS/WebServiceDiscoveryResultWS.cs +++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.WS/WebServiceDiscoveryResultWS.cs @@ -35,6 +35,7 @@ using System.CodeDom.Compiler; using System.CodeDom; using MonoDevelop.Core; using WebReferencesDir = MonoDevelop.WebReferences.WS.WebReferences; +using System.Threading.Tasks; namespace MonoDevelop.WebReferences.WS { @@ -78,43 +79,45 @@ namespace MonoDevelop.WebReferences.WS } } - protected override string GenerateDescriptionFiles (DotNetProject dotNetProject, FilePath basePath) + protected override async Task<string> GenerateDescriptionFiles (DotNetProject dotNetProject, FilePath basePath) { if (!dotNetProject.Items.GetAll<WebReferencesDir> ().Any ()) { var met = new WebReferencesDir (basePath.ParentDirectory); dotNetProject.Items.Add (met); } - - WebReferenceUrl wru = dotNetProject.Items.GetAll<WebReferenceUrl> ().FirstOrDefault (m => m.RelPath.CanonicalPath == basePath); - if (wru == null) { - wru = new WebReferenceUrl (protocol.Url); - wru.RelPath = basePath; - dotNetProject.Items.Add (wru); - } - - protocol.ResolveAll (); - DiscoveryClientResultCollection files = protocol.WriteAll (basePath, "Reference.map"); + + DiscoveryClientResultCollection files = await Task.Run (() => { + WebReferenceUrl wru = dotNetProject.Items.GetAll<WebReferenceUrl> ().FirstOrDefault (m => m.RelPath.CanonicalPath == basePath); + if (wru == null) { + wru = new WebReferenceUrl (protocol.Url); + wru.RelPath = basePath; + dotNetProject.Items.Add (wru); + } + + protocol.ResolveAll (); + return protocol.WriteAll (basePath, "Reference.map"); + }); foreach (DiscoveryClientResult dr in files) - dotNetProject.AddFile (new FilePath (dr.Filename).ToAbsolute (basePath), BuildAction.None); + dotNetProject.AddFile (new FilePath (Path.GetFileName (dr.Filename)).ToAbsolute (basePath), BuildAction.None); return Path.Combine (basePath, "Reference.map"); } - public override void Update () + public override async Task Update () { WebReferenceUrl wru = Item.Project.Items.GetAll<WebReferenceUrl> ().FirstOrDefault (m => m.RelPath.CanonicalPath == Item.BasePath); if (wru == null) return; - - var wref = (WebServiceDiscoveryResultWS) WebReferencesService.WsEngine.Discover (wru.UpdateFromURL); + + var wref = await Task.Run (() => (WebServiceDiscoveryResultWS)WebReferencesService.WsEngine.Discover (wru.UpdateFromURL)); if (wref == null) return; protocol = wref.protocol; // Re-generate the proxy and map files - GenerateFiles (Item.Project, Item.Project.DefaultNamespace, Item.Name); + await GenerateFiles (Item.Project, Item.Project.DefaultNamespace, Item.Name); } public override System.Collections.Generic.IEnumerable<string> GetAssemblyReferences () @@ -124,45 +127,48 @@ namespace MonoDevelop.WebReferences.WS yield return "System.Xml, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; } - protected override string CreateProxyFile (DotNetProject dotNetProject, FilePath basePath, string proxyNamespace, string referenceName) + protected override Task<string> CreateProxyFile (DotNetProject dotNetProject, FilePath basePath, string proxyNamespace, string referenceName) { // Setup the proxy namespace and compile unit CodeDomProvider codeProv = GetProvider (dotNetProject); - var codeNamespace = new CodeNamespace (proxyNamespace); - var urlConstructor = new CodeConstructor (); - var codeUnit = new CodeCompileUnit (); - codeUnit.Namespaces.Add (codeNamespace); - - // Setup the importer and import the service description into the code unit - ServiceDescriptionImporter importer = Library.ReadServiceDescriptionImporter (protocol); - importer.CodeGenerationOptions = CodeGenerationOptions.GenerateNewAsync; - importer.Import (codeNamespace, codeUnit); - - // Add the new Constructor with Url as a paremeter - // Search for the class which inherit SoapHttpClientProtocol (Which is the Service Class) - foreach (CodeTypeDeclaration declarationType in codeUnit.Namespaces[0].Types) - if (declarationType.IsClass) - if (declarationType.BaseTypes.Count > 0) - // Is a Service Class - if (declarationType.BaseTypes [0].BaseType.IndexOf ("SoapHttpClientProtocol", System.StringComparison.Ordinal) > -1) { - // Create new public constructor with the Url as parameter - urlConstructor.Attributes = MemberAttributes.Public; - urlConstructor.Parameters.Add (new CodeParameterDeclarationExpression ("System.String", "url")); - urlConstructor.Statements.Add (new CodeAssignStatement ( - new CodePropertyReferenceExpression (new CodeThisReferenceExpression(), - "Url"), - new CodeVariableReferenceExpression ("url"))); - declarationType.Members.Add (urlConstructor); - } - - // Generate the code and save the file - string fileSpec = Path.Combine (basePath, dotNetProject.LanguageBinding.GetFileName (referenceName)); - var writer = new StreamWriter (fileSpec); - codeProv.GenerateCodeFromCompileUnit (codeUnit, writer, new CodeGeneratorOptions ()); - - writer.Close (); - - return fileSpec; + + return Task.Run (() => { + var codeNamespace = new CodeNamespace (proxyNamespace); + var urlConstructor = new CodeConstructor (); + var codeUnit = new CodeCompileUnit (); + codeUnit.Namespaces.Add (codeNamespace); + + // Setup the importer and import the service description into the code unit + ServiceDescriptionImporter importer = Library.ReadServiceDescriptionImporter (protocol); + importer.CodeGenerationOptions = CodeGenerationOptions.GenerateNewAsync; + importer.Import (codeNamespace, codeUnit); + + // Add the new Constructor with Url as a paremeter + // Search for the class which inherit SoapHttpClientProtocol (Which is the Service Class) + foreach (CodeTypeDeclaration declarationType in codeUnit.Namespaces [0].Types) + if (declarationType.IsClass) + if (declarationType.BaseTypes.Count > 0) + // Is a Service Class + if (declarationType.BaseTypes [0].BaseType.IndexOf ("SoapHttpClientProtocol", System.StringComparison.Ordinal) > -1) { + // Create new public constructor with the Url as parameter + urlConstructor.Attributes = MemberAttributes.Public; + urlConstructor.Parameters.Add (new CodeParameterDeclarationExpression ("System.String", "url")); + urlConstructor.Statements.Add (new CodeAssignStatement ( + new CodePropertyReferenceExpression (new CodeThisReferenceExpression (), + "Url"), + new CodeVariableReferenceExpression ("url"))); + declarationType.Members.Add (urlConstructor); + } + + // Generate the code and save the file + string fileSpec = Path.Combine (basePath, dotNetProject.LanguageBinding.GetFileName (referenceName)); + var writer = new StreamWriter (fileSpec); + codeProv.GenerateCodeFromCompileUnit (codeUnit, writer, new CodeGeneratorOptions ()); + + writer.Close (); + + return fileSpec; + }); } public override string GetServiceURL () diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/DiscoveryProtocol.cs b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/DiscoveryProtocol.cs index bfa1ad18de..7d557d34fb 100644 --- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/DiscoveryProtocol.cs +++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/DiscoveryProtocol.cs @@ -45,7 +45,7 @@ namespace MonoDevelop.WebReferences var dr = (DiscoveryReference) Activator.CreateInstance(type); dr.Url = dcr.Url; - var fs = new FileStream (Path.Combine(basePath, dcr.Filename), FileMode.Open, FileAccess.Read); + var fs = new FileStream (Path.Combine(basePath, Path.GetFileName (dcr.Filename)), FileMode.Open, FileAccess.Read); Documents.Add (dr.Url, dr.ReadDocument (fs)); fs.Close (); References.Add (dr.Url, dr); diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/WebReferenceItem.cs b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/WebReferenceItem.cs index 175ceec2a0..2c71248e96 100644 --- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/WebReferenceItem.cs +++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/WebReferenceItem.cs @@ -1,6 +1,6 @@ using MonoDevelop.Projects; using MonoDevelop.Core; - +using System.Threading.Tasks; namespace MonoDevelop.WebReferences { @@ -38,10 +38,10 @@ namespace MonoDevelop.WebReferences } /// <summary>Update the web reference item by using the map file.</summary> - public void Update() + public Task Update() { WebServiceDiscoveryResult service = engine.Load (this); - service.Update (); + return service.Update (); } /// <summary>Delete the web reference from the project.</summary> diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/WebServiceDiscoveryResult.cs b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/WebServiceDiscoveryResult.cs index 653a640a42..2e8bfe4398 100644 --- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/WebServiceDiscoveryResult.cs +++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences/WebServiceDiscoveryResult.cs @@ -30,6 +30,7 @@ using MonoDevelop.Core; using System.Collections.Generic; using System.IO; using System.CodeDom.Compiler; +using System.Threading.Tasks; namespace MonoDevelop.WebReferences { @@ -72,7 +73,7 @@ namespace MonoDevelop.WebReferences public abstract string ProxyGenerator { get; } - public virtual void GenerateFiles (DotNetProject project, string namspace, string referenceName) + public virtual async Task GenerateFiles (DotNetProject project, string namspace, string referenceName) { //make sure we have a valid value for the namespace if (string.IsNullOrEmpty (namspace)) { @@ -90,10 +91,10 @@ namespace MonoDevelop.WebReferences project.Files.Remove (f); // Generate the wsdl, disco and map files - string mapSpec = GenerateDescriptionFiles (project, basePath); + string mapSpec = await GenerateDescriptionFiles (project, basePath); // Generate the proxy class - string proxySpec = CreateProxyFile (project, basePath, namspace + "." + referenceName, "Reference"); + string proxySpec = await CreateProxyFile (project, basePath, namspace + "." + referenceName, "Reference"); ProjectFile mapFile = project.Files.GetFile (mapSpec); if (mapFile == null) { @@ -136,10 +137,10 @@ namespace MonoDevelop.WebReferences WebReferencesService.NotifyWebReferencesChanged (project); } - protected abstract string GenerateDescriptionFiles (DotNetProject dotNetProject, FilePath basePath); + protected abstract Task<string> GenerateDescriptionFiles (DotNetProject dotNetProject, FilePath basePath); - protected abstract string CreateProxyFile (DotNetProject dotNetProject, FilePath basePath, string proxyNamespace, string referenceName); + protected abstract Task<string> CreateProxyFile (DotNetProject dotNetProject, FilePath basePath, string proxyNamespace, string referenceName); - public abstract void Update (); + public abstract Task Update (); } } diff --git a/main/src/addins/NUnit/Gui/TestNodeBuilder.cs b/main/src/addins/NUnit/Gui/TestNodeBuilder.cs index 7dd182adb7..2c5fbc8129 100644 --- a/main/src/addins/NUnit/Gui/TestNodeBuilder.cs +++ b/main/src/addins/NUnit/Gui/TestNodeBuilder.cs @@ -65,18 +65,20 @@ namespace MonoDevelop.NUnit { UnitTest test = dataObject as UnitTest; nodeInfo.Icon = test.StatusIcon; - + + var title = RemoveMarkup(test.Title); + if (test.Status == TestStatus.Running) { - nodeInfo.Label = test.Title; + nodeInfo.Label = title; return; } else if (test.Status == TestStatus.Loading) { - nodeInfo.Label = test.Title + GettextCatalog.GetString (" (Loading)"); + nodeInfo.Label = title + GettextCatalog.GetString (" (Loading)"); return; } else if (test.Status == TestStatus.LoadError) { - nodeInfo.Label = test.Title + GettextCatalog.GetString (" (Load failed)"); + nodeInfo.Label = title + GettextCatalog.GetString (" (Load failed)"); return; } else { - nodeInfo.Label = test.Title; + nodeInfo.Label = title; UnitTestResult res = test.GetLastResult (); if (res != null && treeBuilder.Options ["ShowTestCounters"] && (test is UnitTestGroup)) { @@ -130,6 +132,20 @@ namespace MonoDevelop.NUnit ITreeBuilder tb = Context.GetTreeBuilder (sender); if (tb != null) tb.Update (); } + + static string RemoveMarkup (string title) + { + var leftAngleIndex = title.IndexOf ('<'); + if (leftAngleIndex > -1) { + var rightAngleIndex = title.IndexOf ('>'); + if (rightAngleIndex > -1) { + title = title.Substring (0, leftAngleIndex) + title.Substring (rightAngleIndex + 1); + } + } + + return title; + } + } class TestNodeCommandHandler: NodeCommandHandler diff --git a/main/src/addins/NUnit/MonoDevelop.NUnit.csproj b/main/src/addins/NUnit/MonoDevelop.NUnit.csproj index c663caccad..bb2c3bfeb2 100644 --- a/main/src/addins/NUnit/MonoDevelop.NUnit.csproj +++ b/main/src/addins/NUnit/MonoDevelop.NUnit.csproj @@ -331,6 +331,7 @@ <Compile Include="Gui\AbstractUnitTestEditorExtension.cs" /> <Compile Include="Services\AbstractResultsStore.cs" /> <Compile Include="Services\BinaryResultsStore.cs" /> + <Compile Include="Services\NUnitSourceCodeLocationFinder.cs" /> </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> diff --git a/main/src/addins/NUnit/MonoDevelopNUnit.addin.xml b/main/src/addins/NUnit/MonoDevelopNUnit.addin.xml index e7c51e39f2..4419c66c67 100644 --- a/main/src/addins/NUnit/MonoDevelopNUnit.addin.xml +++ b/main/src/addins/NUnit/MonoDevelopNUnit.addin.xml @@ -39,6 +39,10 @@ <ExtensionNodeSet id="MonoDevelop.Components.Commands.ItemSet"/> </ExtensionPoint> + <ExtensionPoint path = "/MonoDevelop/NUnit/NUnitSourceCodeLocationFinder"> + <ExtensionNode name="Class"/> + </ExtensionPoint> + <!-- Extensions --> <Extension path = "/MonoDevelop/Ide/Pads"> diff --git a/main/src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs b/main/src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs index 900d6090e6..27224fd53f 100644 --- a/main/src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs +++ b/main/src/addins/NUnit/Services/NUnitAssemblyTestSuite.cs @@ -126,7 +126,7 @@ namespace MonoDevelop.NUnit return GetSourceCodeLocation (test.FixtureTypeNamespace, test.FixtureTypeName, test.Name); } - protected virtual SourceCodeLocation GetSourceCodeLocation (string fixtureTypeNamespace, string fixtureTypeName, string methodName) + protected virtual SourceCodeLocation GetSourceCodeLocation (string fixtureTypeNamespace, string fixtureTypeName, string testName) { return null; } @@ -382,8 +382,8 @@ namespace MonoDevelop.NUnit var runnerExe = GetCustomConsoleRunnerCommand (); if (runnerExe != null) return RunWithConsoleRunner (runnerExe, test, suiteName, pathName, testName, testContext); - - ExternalTestRunner runner = (ExternalTestRunner)Runtime.ProcessService.CreateExternalProcessObject (typeof(ExternalTestRunner), testContext.ExecutionContext, UserAssemblyPaths); + var console = IdeApp.Workbench?.ProgressMonitors.ConsoleFactory.CreateConsole (); + ExternalTestRunner runner = (ExternalTestRunner)Runtime.ProcessService.CreateExternalProcessObject (typeof(ExternalTestRunner), testContext.ExecutionContext, UserAssemblyPaths, console); LocalTestMonitor localMonitor = new LocalTestMonitor (testContext, test, suiteName, testName != null); ITestFilter filter = null; @@ -471,8 +471,14 @@ namespace MonoDevelop.NUnit UnitTestResult RunWithConsoleRunner (ProcessExecutionCommand cmd, UnitTest test, string suiteName, string pathName, string testName, TestContext testContext) { var outFile = Path.GetTempFileName (); - LocalConsole cons = new LocalConsole (); - + var xmlOutputConsole = new LocalConsole (); + var appDebugOutputConsole = IdeApp.Workbench?.ProgressMonitors.ConsoleFactory.CreateConsole (); + OperationConsole cons; + if (appDebugOutputConsole != null) { + cons = new MultipleOperationConsoles (appDebugOutputConsole, xmlOutputConsole); + } else { + cons = xmlOutputConsole; + } try { MonoDevelop.NUnit.External.TcpTestListener tcpListener = null; LocalTestMonitor localMonitor = new LocalTestMonitor (testContext, test, suiteName, testName != null); @@ -517,9 +523,9 @@ namespace MonoDevelop.NUnit if (doc.Root != null) { var root = doc.Root.Elements ("test-suite").FirstOrDefault (); if (root != null) { - cons.SetDone (); - var ot = cons.OutReader.ReadToEnd (); - var et = cons.ErrorReader.ReadToEnd (); + xmlOutputConsole.SetDone (); + var ot = xmlOutputConsole.OutReader.ReadToEnd (); + var et = xmlOutputConsole.ErrorReader.ReadToEnd (); testContext.Monitor.WriteGlobalLog (ot); if (!string.IsNullOrEmpty (et)) { testContext.Monitor.WriteGlobalLog ("ERROR:\n"); @@ -535,9 +541,9 @@ namespace MonoDevelop.NUnit } throw new Exception ("Test results could not be parsed."); } catch (Exception ex) { - cons.SetDone (); - var ot = cons.OutReader.ReadToEnd (); - var et = cons.ErrorReader.ReadToEnd (); + xmlOutputConsole.SetDone (); + var ot = xmlOutputConsole.OutReader.ReadToEnd (); + var et = xmlOutputConsole.ErrorReader.ReadToEnd (); testContext.Monitor.WriteGlobalLog (ot); if (!string.IsNullOrEmpty (et)) { testContext.Monitor.WriteGlobalLog ("ERROR:\n"); diff --git a/main/src/addins/NUnit/Services/NUnitProjectTestSuite.cs b/main/src/addins/NUnit/Services/NUnitProjectTestSuite.cs index 3bbfc1f11f..bb5e34550b 100644 --- a/main/src/addins/NUnit/Services/NUnitProjectTestSuite.cs +++ b/main/src/addins/NUnit/Services/NUnitProjectTestSuite.cs @@ -79,43 +79,15 @@ namespace MonoDevelop.NUnit return p.Reference.IndexOf ("GuiUnit", StringComparison.OrdinalIgnoreCase) != -1 || p.Reference.IndexOf ("nunit.framework") != -1 || p.Reference.IndexOf ("nunit.core") != -1 || p.Reference.IndexOf ("nunitlite") != -1; } - protected override SourceCodeLocation GetSourceCodeLocation (string fixtureTypeNamespace, string fixtureTypeName, string methodName) + protected override SourceCodeLocation GetSourceCodeLocation (string fixtureTypeNamespace, string fixtureTypeName, string testName) { if (string.IsNullOrEmpty (fixtureTypeName) || string.IsNullOrEmpty (fixtureTypeName)) return null; - var csc = new CancellationTokenSource (); - var task = TypeSystemService.GetCompilationAsync (project, csc.Token); - task.Wait (2000); - if (!task.IsCompleted) { - csc.Cancel (); + var task = NUnitSourceCodeLocationFinder.TryGetSourceCodeLocationAsync (project, fixtureTypeNamespace, fixtureTypeName, testName); + if (!task.Wait (2000)) return null; - } - var ctx = task.Result; - var cls = ctx?.Assembly?.GetTypeByMetadataName (string.IsNullOrEmpty (fixtureTypeNamespace) ? fixtureTypeName : fixtureTypeNamespace + "." + fixtureTypeName); - if (cls == null) - return null; - - if (cls.Name != methodName) { - foreach (var met in cls.GetMembers ().OfType<IMethodSymbol> ()) { - if (met.Name == methodName) { - var loc = met.Locations.FirstOrDefault (l => l.IsInSource); - return ConvertToSourceCodeLocation (loc); - } - } - - int idx = methodName != null ? methodName.IndexOf ('(') : -1; - if (idx > 0) { - methodName = methodName.Substring (0, idx); - foreach (var met in cls.GetMembers ().OfType<IMethodSymbol> ()) { - if (met.Name == methodName){ - var loc = met.Locations.FirstOrDefault (l => l.IsInSource); - return ConvertToSourceCodeLocation (loc); - } - } - } - } - var classLoc = cls.Locations.FirstOrDefault (l => l.IsInSource); - return ConvertToSourceCodeLocation (classLoc); + return task.Result; + } SourceCodeLocation ConvertToSourceCodeLocation (Location loc) @@ -123,7 +95,7 @@ namespace MonoDevelop.NUnit var lineSpan = loc.GetLineSpan (); return new SourceCodeLocation (loc.SourceTree.FilePath, lineSpan.StartLinePosition.Line, lineSpan.StartLinePosition.Character); } - + public override void Dispose () { project.NameChanged -= OnProjectRenamed; diff --git a/main/src/addins/NUnit/Services/NUnitSourceCodeLocationFinder.cs b/main/src/addins/NUnit/Services/NUnitSourceCodeLocationFinder.cs new file mode 100644 index 0000000000..2cbc70db34 --- /dev/null +++ b/main/src/addins/NUnit/Services/NUnitSourceCodeLocationFinder.cs @@ -0,0 +1,71 @@ +// +// NUnitSourceCodeLocationFinder.cs +// +// Author: +// Mike Krüger <mkrueger@xamarin.com> +// +// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Threading.Tasks; +using System.Threading; +using Mono.Addins; +using System.Collections.Generic; +using MonoDevelop.NUnit; +using MonoDevelop.Projects; + +namespace MonoDevelop.NUnit +{ + public abstract class NUnitSourceCodeLocationFinder + { + static List<NUnitSourceCodeLocationFinder> locationFinder = new List<NUnitSourceCodeLocationFinder> (); + + static NUnitSourceCodeLocationFinder () + { + AddinManager.AddExtensionNodeHandler ("/MonoDevelop/NUnit/NUnitSourceCodeLocationFinder", delegate(object sender, ExtensionNodeEventArgs args) { + var provider = (NUnitSourceCodeLocationFinder) args.ExtensionObject; + switch (args.Change) { + case ExtensionChange.Add: + locationFinder.Add (provider); + break; + case ExtensionChange.Remove: + locationFinder.Remove (provider); + break; + } + }); + } + + public static async Task<SourceCodeLocation> TryGetSourceCodeLocationAsync (Project project, string fixtureTypeNamespace, string fixtureTypeName, string testName, CancellationToken cancellationToken = default(CancellationToken)) + { + foreach (var finder in locationFinder) { + var result = await finder.GetSourceCodeLocationAsync (project, fixtureTypeNamespace, fixtureTypeName, testName, cancellationToken).ConfigureAwait (false); + if (result != null) + return result; + } + return null; + } + + + public abstract Task<SourceCodeLocation> GetSourceCodeLocationAsync (Project project, string fixtureTypeNamespace, string fixtureTypeName, string testName, CancellationToken cancellationToken = default(CancellationToken)); + + + } +} + diff --git a/main/src/addins/VBNetBinding/Project/VBProjectExtension.cs b/main/src/addins/VBNetBinding/Project/VBProjectExtension.cs index 66973b5080..94db4dd019 100644 --- a/main/src/addins/VBNetBinding/Project/VBProjectExtension.cs +++ b/main/src/addins/VBNetBinding/Project/VBProjectExtension.cs @@ -102,6 +102,7 @@ namespace MonoDevelop.VBNetBinding { base.OnInitialize (); DefaultNamespaceIsImplicit = true; + SupportsRoslyn = true; StockIcon = "md-project"; } diff --git a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlNodeExtension.cs b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlNodeExtension.cs index 0cb75e7881..a7af49ecd8 100644 --- a/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlNodeExtension.cs +++ b/main/src/addins/VersionControl/MonoDevelop.VersionControl/MonoDevelop.VersionControl/VersionControlNodeExtension.cs @@ -30,13 +30,20 @@ namespace MonoDevelop.VersionControl protected override void Initialize ()
{
base.Initialize ();
- VersionControlService.FileStatusChanged += Monitor;
+ VersionControlService.FileStatusChanged += Monitor; + IdeApp.Workspace.LastWorkspaceItemClosed += OnWorkspaceRefresh;
}
public override void Dispose ()
{
- VersionControlService.FileStatusChanged -= Monitor;
+ VersionControlService.FileStatusChanged -= Monitor; + IdeApp.Workspace.LastWorkspaceItemClosed -= OnWorkspaceRefresh;
base.Dispose ();
+ } + + void OnWorkspaceRefresh (object sender, EventArgs args) + { + pathToObject.Clear (); }
public override void BuildNode (ITreeBuilder builder, object dataObject, NodeInfo nodeInfo) diff --git a/main/src/addins/WindowsPlatform/WindowsAPICodePack/Shell/CommonFileDialogs/CommonFileDialog.cs b/main/src/addins/WindowsPlatform/WindowsAPICodePack/Shell/CommonFileDialogs/CommonFileDialog.cs index 8d418ac4c6..3cb8d2ddeb 100644 --- a/main/src/addins/WindowsPlatform/WindowsAPICodePack/Shell/CommonFileDialogs/CommonFileDialog.cs +++ b/main/src/addins/WindowsPlatform/WindowsAPICodePack/Shell/CommonFileDialogs/CommonFileDialog.cs @@ -638,6 +638,8 @@ namespace Microsoft.WindowsAPICodePack.Dialogs PopulateWithIShellItems(items);
}
+ CleanupEventSink();
+
return result;
}
/// <summary>
@@ -675,6 +677,15 @@ namespace Microsoft.WindowsAPICodePack.Dialogs }
}
+ private void CleanupEventSink()
+ {
+ if (nativeEventSink != null)
+ {
+ nativeDialog.Unadvise(nativeEventSink.Cookie);
+ nativeEventSink = null;
+ }
+ }
+
private void ApplyNativeSettings(IFileDialog dialog)
{
Debug.Assert(dialog != null, "No dialog instance to configure");
diff --git a/main/src/addins/Xml/MonoDevelop.Xml.csproj b/main/src/addins/Xml/MonoDevelop.Xml.csproj index 33f9c160d2..ecd57e0813 100644 --- a/main/src/addins/Xml/MonoDevelop.Xml.csproj +++ b/main/src/addins/Xml/MonoDevelop.Xml.csproj @@ -70,6 +70,10 @@ <HintPath>..\..\..\build\bin\Microsoft.CodeAnalysis.dll</HintPath> <Private>False</Private> </Reference> + <Reference Include="System.Collections.Immutable"> + <HintPath>..\..\..\build\bin\System.Collections.Immutable.dll</HintPath> + <Private>False</Private> + </Reference> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\core\MonoDevelop.Core\MonoDevelop.Core.csproj"> diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/DeleteActions.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/DeleteActions.cs index a7dcf62aaa..114261d97a 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/DeleteActions.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/DeleteActions.cs @@ -288,7 +288,10 @@ namespace Mono.TextEditor var prevLineIsEmpty = prevLine != null && prevLine.Length == 0; var startOffset = prevLine != null ? prevLine.EndOffset : 0; - data.Remove (startOffset, data.Caret.Offset - startOffset); + var count = data.Caret.Offset - startOffset; + if (count < 0) + return; + data.Remove (startOffset, count); if (prevLine != null) { if (prevLineIsEmpty) { if (line.Length - data.Caret.Column - 1 > 0 && data.HasIndentationTracker) { diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/MiscActions.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/MiscActions.cs index be40e0f733..35cbd01be4 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/MiscActions.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Actions/MiscActions.cs @@ -43,12 +43,12 @@ namespace Mono.TextEditor int matchingBracketOffset = data.Document.GetMatchingBracketOffset (data.Caret.Offset); if (matchingBracketOffset == -1 && data.Caret.Offset > 0) matchingBracketOffset = data.Document.GetMatchingBracketOffset (data.Caret.Offset - 1); - + if (matchingBracketOffset != -1) data.Caret.Offset = matchingBracketOffset; } } - + public static int RemoveTabInLine (TextEditorData data, DocumentLine line) { if (line.LengthIncludingDelimiter == 0) @@ -116,7 +116,7 @@ namespace Mono.TextEditor if (!removedFromLast) lc = lead.Column; } else { - if (!removedFromFirst) + if (!removedFromFirst) lc = lead.Column; if (!removedFromLast) ac = anchor.Column; @@ -135,10 +135,15 @@ namespace Mono.TextEditor return; } var line = data.Document.GetLine (data.Caret.Line); - if (line != null) - RemoveTabInLine (data, line); + if (line != null) { + if (line.Length == 0 && data.Caret.Column > 1) { + data.Caret.Column = 1; + } else { + RemoveTabInLine (data, line); + } + } } - + public static void GetSelectedLines (TextEditorData data, out int startLineNr, out int endLineNr) { if (data.IsSomethingSelected) { diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/MonoTextEditor.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/MonoTextEditor.cs index 7bc05b9294..45e4e0c482 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/MonoTextEditor.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/MonoTextEditor.cs @@ -279,7 +279,7 @@ namespace Mono.TextEditor void ResizeChild (Rectangle allocation, EditorContainerChild child) { Requisition req = child.Child.SizeRequest (); - var childRectangle = new Gdk.Rectangle (Allocation.X + child.X, Allocation.Y + child.Y, req.Width, req.Height); + var childRectangle = new Gdk.Rectangle (Allocation.X + child.X, Allocation.Y + child.Y, System.Math.Max (1, req.Width), System.Math.Max (1, req.Height)); if (!child.FixedPosition) { double zoom = Options.Zoom; childRectangle.X = Allocation.X + (int)(child.X * zoom - HAdjustment.Value); diff --git a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextViewMargin.cs b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextViewMargin.cs index 9380dcb32e..2ff8c661a8 100644 --- a/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextViewMargin.cs +++ b/main/src/core/Mono.Texteditor/Mono.TextEditor/Gui/TextViewMargin.cs @@ -50,17 +50,7 @@ namespace Mono.TextEditor Pango.Rectangle[] eolMarkerLayoutRect; internal double charWidth; - int highlightBracketOffset = -1; - public int HighlightBracketOffset { - get { - return highlightBracketOffset; - } - set { - highlightBracketOffset = value; - } - } - double LineHeight { get { return textEditor.LineHeight; @@ -438,10 +428,6 @@ namespace Mono.TextEditor eolMarkerLayoutRect [i] = tRect; } - DecorateLineBg -= DecorateMatchingBracket; - if (textEditor.Options.HighlightMatchingBracket && !Document.ReadOnly) - DecorateLineBg += DecorateMatchingBracket; - if (tabArray != null) { tabArray.Dispose (); tabArray = null; @@ -1437,24 +1423,6 @@ namespace Mono.TextEditor } } - void DecorateMatchingBracket (Cairo.Context ctx, LayoutWrapper layout, int offset, int length, double xPos, double y, int selectionStart, int selectionEnd) - { - uint curIndex = 0, byteIndex = 0; - if (offset <= highlightBracketOffset && highlightBracketOffset <= offset + length) { - int index = highlightBracketOffset - offset; - Pango.Rectangle rect = layout.Layout.IndexToPos ((int)TranslateToUTF8Index (layout.LineChars, (uint)index, ref curIndex, ref byteIndex)); - - var bracketMatch = new Cairo.Rectangle (xPos + rect.X / Pango.Scale.PangoScale - 0.5, y + 0.5, (rect.Width / Pango.Scale.PangoScale) + 1, (rect.Height / Pango.Scale.PangoScale)); - if (BackgroundRenderer == null) { - ctx.SetSourceColor (ColorStyle.BraceMatchingRectangle.Color); - ctx.Rectangle (bracketMatch); - ctx.FillPreserve (); - ctx.SetSourceColor (ColorStyle.BraceMatchingRectangle.SecondColor); - ctx.Stroke (); - } - } - } - public LayoutWrapper GetLayout (DocumentLine line) { ISyntaxMode mode = Document.SyntaxMode != null && textEditor.Options.EnableSyntaxHighlighting ? Document.SyntaxMode : new SyntaxMode (Document); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/MultipleOperationConsoles.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/MultipleOperationConsoles.cs new file mode 100644 index 0000000000..01c44959f9 --- /dev/null +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/MultipleOperationConsoles.cs @@ -0,0 +1,480 @@ +// +// MultipleOperationConsoles.cs +// +// Author: +// David Karlaš <david.karlas@xamarin.com> +// +// Copyright (c) 2016 Xamarin, Inc (http://www.xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.IO; +using System.Text; +using System.Collections.Generic; +using System.Threading.Tasks; +using System.Linq; + +namespace MonoDevelop.Core.Execution +{ + public class MultipleOperationConsoles : OperationConsole + { + readonly OperationConsole [] consoles; + readonly TextWriter OutWriter; + readonly TextWriter ErrorWriter; + readonly TextWriter LogWriter; + + public MultipleOperationConsoles (params OperationConsole [] consoles) + { + if (consoles == null) + throw new ArgumentNullException (nameof (consoles)); + if (consoles.Length == 0) + throw new ArgumentOutOfRangeException (nameof (consoles)); + + this.consoles = consoles; + this.ErrorWriter = new MultipleTextWriters (consoles.Select (c => c.Error).ToArray ()); + this.OutWriter = new MultipleTextWriters (consoles.Select (c => c.Out).ToArray ()); + this.LogWriter = new MultipleTextWriters (consoles.Select (c => c.Log).ToArray ()); + } + + public override void Debug (int level, string category, string message) + { + foreach (var console in consoles) { + console.Debug (level, category, message); + } + } + + public override TextWriter Error { + get { + return ErrorWriter; + } + } + + public override TextReader In { + get { + return consoles [0].In; + } + } + + public override TextWriter Log { + get { + return LogWriter; + } + } + + public override TextWriter Out { + get { + return OutWriter; + } + } + + public override void Dispose () + { + foreach (var console in consoles) { + console.Dispose (); + } + } + + class MultipleTextWriters : TextWriter + { + readonly Encoding encoding; + readonly TextWriter [] writers; + + public MultipleTextWriters (params TextWriter [] writers) + { + if (writers == null) + throw new ArgumentNullException (nameof (writers)); + if (writers.Length == 0) + throw new ArgumentOutOfRangeException (nameof (writers)); + + this.writers = writers; + encoding = writers [0].Encoding; + + foreach (var writer in writers) { + if (encoding.GetType () != writer.Encoding.GetType ()) { + throw new Exception ("Encodings mismatch between writers."); + } + } + } + + public override Encoding Encoding { + get { + return encoding; + } + } + + public override void Close () + { + foreach (var writer in writers) { + writer.Close (); + } + } + + protected override void Dispose (bool disposing) + { + foreach (var writer in writers) { + writer.Dispose (); + } + base.Dispose (disposing); + } + + public override void Flush () + { + foreach (var writer in writers) { + writer.Flush (); + } + } + + public override Task FlushAsync () + { + var tasks = new List<Task> (writers.Length); + foreach (var writer in writers) { + tasks.Add (writer.FlushAsync ()); + } + return Task.WhenAll (tasks); + } + + public override IFormatProvider FormatProvider { + get { + return writers [0].FormatProvider; + } + } + + public override string NewLine { + get { + return writers [0].NewLine; + } + set { + foreach (var writer in writers) { + writer.NewLine = value; + } + } + } + + public override void Write (bool value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (char value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (char [] buffer) + { + foreach (var writer in writers) { + writer.Write (buffer); + } + } + + public override void Write (char [] buffer, int index, int count) + { + foreach (var writer in writers) { + writer.Write (buffer, index, count); + } + } + + public override void Write (decimal value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (double value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (float value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (int value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (long value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (object value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (string format, object arg0) + { + foreach (var writer in writers) { + writer.Write (format, arg0); + } + } + + public override void Write (string format, object arg0, object arg1) + { + foreach (var writer in writers) { + writer.Write (format, arg0, arg1); + } + } + + public override void Write (string format, object arg0, object arg1, object arg2) + { + foreach (var writer in writers) { + writer.Write (format, arg0, arg1, arg2); + } + } + + public override void Write (string format, params object [] arg) + { + foreach (var writer in writers) { + writer.Write (format, arg); + } + } + + public override void Write (string value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (uint value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override void Write (ulong value) + { + foreach (var writer in writers) { + writer.Write (value); + } + } + + public override Task WriteAsync (char value) + { + var tasks = new List<Task> (writers.Length); + foreach (var writer in writers) { + tasks.Add (writer.WriteAsync (value)); + } + return Task.WhenAll (tasks); + } + + public override Task WriteAsync (char [] buffer, int index, int count) + { + var tasks = new List<Task> (writers.Length); + foreach (var writer in writers) { + tasks.Add (writer.WriteAsync (buffer, index, count)); + } + return Task.WhenAll (tasks); + } + + public override Task WriteAsync (string value) + { + var tasks = new List<Task> (writers.Length); + foreach (var writer in writers) { + tasks.Add (writer.WriteAsync (value)); + } + return Task.WhenAll (tasks); + } + + + public override Task WriteLineAsync () + { + var tasks = new List<Task> (writers.Length); + foreach (var writer in writers) { + tasks.Add (writer.WriteLineAsync ()); + } + return Task.WhenAll (tasks); + } + + public override void WriteLine () + { + foreach (var writer in writers) { + writer.WriteLine (); + } + } + + public override void WriteLine (bool value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (char value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (char [] buffer) + { + foreach (var writer in writers) { + writer.WriteLine (buffer); + } + } + + public override void WriteLine (char [] buffer, int index, int count) + { + foreach (var writer in writers) { + writer.WriteLine (buffer, index, count); + } + } + + public override void WriteLine (decimal value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (double value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (float value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (int value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (long value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (object value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (string format, object arg0) + { + foreach (var writer in writers) { + writer.WriteLine (format, arg0); + } + } + + public override void WriteLine (string format, object arg0, object arg1) + { + foreach (var writer in writers) { + writer.WriteLine (format, arg0, arg1); + } + } + + public override void WriteLine (string format, object arg0, object arg1, object arg2) + { + foreach (var writer in writers) { + writer.WriteLine (format, arg0, arg1, arg2); + } + } + + public override void WriteLine (string format, params object [] arg) + { + foreach (var writer in writers) { + writer.WriteLine (format, arg); + } + } + + public override void WriteLine (string value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (uint value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override void WriteLine (ulong value) + { + foreach (var writer in writers) { + writer.WriteLine (value); + } + } + + public override Task WriteLineAsync (char [] buffer, int index, int count) + { + var tasks = new List<Task> (writers.Length); + foreach (var writer in writers) { + tasks.Add (writer.WriteLineAsync (buffer, index, count)); + } + return Task.WhenAll (tasks); + } + + public override Task WriteLineAsync (char value) + { + var tasks = new List<Task> (writers.Length); + foreach (var writer in writers) { + tasks.Add (writer.WriteLineAsync (value)); + } + return Task.WhenAll (tasks); + } + + public override Task WriteLineAsync (string value) + { + var tasks = new List<Task> (writers.Length); + foreach (var writer in writers) { + tasks.Add (writer.WriteLineAsync (value)); + } + return Task.WhenAll (tasks); + } + } + } +} + diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessHostController.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessHostController.cs index 445a33e5fa..536d9c3dd4 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessHostController.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessHostController.cs @@ -88,7 +88,7 @@ namespace MonoDevelop.Core.Execution timer.Elapsed += new System.Timers.ElapsedEventHandler (WaitTimeout); } - public void Start (IList<string> userAssemblyPaths = null) + public void Start (IList<string> userAssemblyPaths = null, OperationConsole console = null) { lock (this) { if (starting) @@ -129,7 +129,7 @@ namespace MonoDevelop.Core.Execution if (userAssemblyPaths != null) cmd.UserAssemblyPaths = userAssemblyPaths; cmd.DebugMode = isDebugMode; - ProcessHostConsole cons = new ProcessHostConsole (); + OperationConsole cons = console ?? new ProcessHostConsole (); var p = process = executionHandlerFactory.Execute (cmd, cons); Counters.ExternalHostProcesses++; @@ -182,12 +182,12 @@ namespace MonoDevelop.Core.Execution } } - public object CreateInstance (Type type, string[] addins, IList<string> userAssemblyPaths = null) + public object CreateInstance (Type type, string[] addins, IList<string> userAssemblyPaths = null, OperationConsole console = null) { lock (this) { references++; if (processHost == null) - Start (userAssemblyPaths); + Start (userAssemblyPaths, console); } if (!runningEvent.WaitOne (15000, false)) { @@ -212,12 +212,12 @@ namespace MonoDevelop.Core.Execution } } - public object CreateInstance (string assemblyPath, string typeName, string[] addins, IList<string> userAssemblyPaths = null) + public object CreateInstance (string assemblyPath, string typeName, string[] addins, IList<string> userAssemblyPaths = null, OperationConsole console = null) { lock (this) { references++; if (processHost == null) - Start (userAssemblyPaths); + Start (userAssemblyPaths, console); } if (!runningEvent.WaitOne (15000, false)) { diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs index 9ef65cd766..a84f5846d7 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Execution/ProcessService.cs @@ -305,44 +305,25 @@ namespace MonoDevelop.Core.Execution return externalProcess; } } - - public IDisposable CreateExternalProcessObject (Type type) - { - return CreateExternalProcessObject (type, true); - } - + void CheckRemoteType (Type type) { if (!typeof(IDisposable).IsAssignableFrom (type)) throw new ArgumentException ("The remote object type must implement IDisposable", "type"); } - public IDisposable CreateExternalProcessObject (Type type, bool shared, IList<string> userAssemblyPaths = null) + public IDisposable CreateExternalProcessObject (Type type, bool shared = true, IList<string> userAssemblyPaths = null, OperationConsole console = null) { CheckRemoteType (type); - ProcessHostController hc = GetHost (type.ToString(), shared, null); - return (IDisposable) hc.CreateInstance (type.Assembly.Location, type.FullName, GetRequiredAddins (type), userAssemblyPaths); - } - - public IDisposable CreateExternalProcessObject (Type type, TargetRuntime runtime) - { - return CreateExternalProcessObject (type, runtime.GetExecutionHandler ()); + var hc = GetHost (type.ToString(), shared, null); + return (IDisposable) hc.CreateInstance (type.Assembly.Location, type.FullName, GetRequiredAddins (type), userAssemblyPaths, console); } - public IDisposable CreateExternalProcessObject (Type type, IExecutionHandler executionHandler, IList<string> userAssemblyPaths = null) + public IDisposable CreateExternalProcessObject (Type type, IExecutionHandler executionHandler, IList<string> userAssemblyPaths = null, OperationConsole console = null) { CheckRemoteType (type); - return (IDisposable)GetHost (type.ToString (), false, executionHandler).CreateInstance (type.Assembly.Location, type.FullName, GetRequiredAddins (type), userAssemblyPaths); - } - - public IDisposable CreateExternalProcessObject (string assemblyPath, string typeName, bool shared, params string[] requiredAddins) - { - return (IDisposable) GetHost (typeName, shared, null).CreateInstance (assemblyPath, typeName, requiredAddins); - } - - public IDisposable CreateExternalProcessObject (string assemblyPath, string typeName, IExecutionHandler executionHandler, params string[] requiredAddins) - { - return (IDisposable) GetHost (typeName, false, executionHandler).CreateInstance (assemblyPath, typeName, requiredAddins); + var hc = GetHost (type.ToString (), false, executionHandler); + return (IDisposable)hc.CreateInstance (type.Assembly.Location, type.FullName, GetRequiredAddins (type), userAssemblyPaths, console); } public bool IsValidForRemoteHosting (IExecutionHandler handler) diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Logging/AssertLoggingTraceListener.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Logging/AssertLoggingTraceListener.cs index 75ae50cac6..9cf02b44e3 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Logging/AssertLoggingTraceListener.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Logging/AssertLoggingTraceListener.cs @@ -32,28 +32,8 @@ using System.IO; namespace MonoDevelop.Core.Logging { - class AssertLoggingTraceListener : TraceListener + class AssertLoggingTraceListener : DefaultTraceListener { - public override void Write (string message) - { - //ignore - } - - public override void WriteLine (string message) - { - //ignore - } - - public override void TraceData (TraceEventCache eventCache, string source, TraceEventType eventType, int id, params object[] data) - { - //ignore - } - - public override void TraceData (TraceEventCache eventCache, string source, TraceEventType eventType, int id, object data) - { - //ignore - } - public override void Fail (string message, string detailMessage) { var frames = new StackTrace (1, true).GetFrames (); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Web/RequestHelper.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Web/RequestHelper.cs index c3afcac25b..fb29860769 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Web/RequestHelper.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.Web/RequestHelper.cs @@ -19,6 +19,7 @@ using System; using System.Net; using System.Collections.Specialized; using System.Threading; +using System.Threading.Tasks; namespace MonoDevelop.Core.Web { @@ -63,6 +64,104 @@ namespace MonoDevelop.Core.Web token.Register (request.Abort); } + public async Task<HttpWebResponse> GetResponseAsync (CancellationToken token) + { + _previousRequest = null; + _previousResponse = null; + _previousStatusCode = null; + _usingSTSAuth = false; + _continueIfFailed = true; + _proxyCredentialsRetryCount = 0; + _credentialsRetryCount = 0; + int failureCount = 0; + const int MaxFailureCount = 10; + + while (true) + { + // Create the request + var request = (HttpWebRequest)_createRequest(); + MakeCancelable (request, token); + ConfigureRequest(request); + + try + { + var auth = request.Headers["Authorization"]; + _basicAuthIsUsedInPreviousRequest = (auth != null) + && auth.StartsWith("Basic ", StringComparison.Ordinal); + + // Prepare the request, we do something like write to the request stream + // which needs to happen last before the request goes out + _prepareRequest(request); + + HttpWebResponse response = (HttpWebResponse) await request.GetResponseAsync (); + + // Cache the proxy and credentials + _proxyCache.Add(request.Proxy); + + ICredentials credentials = request.Credentials; + _credentialCache.Add(request.RequestUri, credentials); + _credentialCache.Add(response.ResponseUri, credentials); + + return response; + } + catch (WebException ex) + { + ++failureCount; + if (failureCount >= MaxFailureCount) + { + throw; + } + + using (IHttpWebResponse response = GetResponse(ex.Response)) + { + if (response == null && + ex.Status != WebExceptionStatus.SecureChannelFailure) + { + // No response, something went wrong so just rethrow + throw; + } + + // Special case https connections that might require authentication + if (ex.Status == WebExceptionStatus.SecureChannelFailure) + { + if (_continueIfFailed) + { + // Act like we got a 401 so that we prompt for credentials on the next request + _previousStatusCode = HttpStatusCode.Unauthorized; + continue; + } + throw; + } + + // If we were trying to authenticate the proxy or the request and succeeded, cache the result. + if (_previousStatusCode == HttpStatusCode.ProxyAuthenticationRequired && + response.StatusCode != HttpStatusCode.ProxyAuthenticationRequired) + { + _proxyCache.Add(request.Proxy); + } + else if (_previousStatusCode == HttpStatusCode.Unauthorized && + response.StatusCode != HttpStatusCode.Unauthorized) + { + _credentialCache.Add(request.RequestUri, request.Credentials); + _credentialCache.Add(response.ResponseUri, request.Credentials); + } + + _usingSTSAuth = STSAuthHelper.TryRetrieveSTSToken(request.RequestUri, response); + + if (!IsAuthenticationResponse(response) || !_continueIfFailed) + { + throw; + } + + _previousRequest = request; + _previousResponse = response; + _previousStatusCode = _previousResponse.StatusCode; + } + } + } + + } + public HttpWebResponse GetResponse(CancellationToken token) { _previousRequest = null; diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj index dc61356746..3852340876 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core.csproj @@ -557,6 +557,7 @@ <Compile Include="MonoDevelop.Core\FileWriteableState.cs" /> <Compile Include="MonoDevelop.Projects\ConditionedPropertyCollection.cs" /> <Compile Include="MonoDevelop.Core\AsyncEventHandler.cs" /> + <Compile Include="MonoDevelop.Core.Execution\MultipleOperationConsoles.cs" /> </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/WebRequestHelper.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/WebRequestHelper.cs index 0fa710e677..2c2f6d59b6 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Core/WebRequestHelper.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Core/WebRequestHelper.cs @@ -73,13 +73,28 @@ namespace MonoDevelop.Core /// Keeps sending requests until a response code that doesn't require authentication happens or if the request /// requires authentication and the user has stopped trying to enter them (i.e. they hit cancel when they are prompted). /// </remarks> - public static Task<HttpWebResponse> GetResponseAsync ( + public static async Task<HttpWebResponse> GetResponseAsync ( Func<HttpWebRequest> createRequest, Action<HttpWebRequest> prepareRequest = null, CancellationToken token = default(CancellationToken)) { - //TODO: make this really async under the covers - return Task.Factory.StartNew (() => GetResponse (createRequest, prepareRequest, token), token); + if (prepareRequest == null) { + prepareRequest = r => {}; + } + + if (credentialProvider == null) { + var req = createRequest (); + req.MakeCancelable (token); + prepareRequest (req); + + return (HttpWebResponse) await req.GetResponseAsync (); + } + + var handler = new RequestHelper ( + createRequest, prepareRequest, proxyCache, CredentialStore.Instance, credentialProvider + ); + + return await handler.GetResponseAsync (token); } /// <summary> diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs index 3563c445d4..9b805ebeb5 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/DefaultMSBuildEngine.cs @@ -56,6 +56,7 @@ namespace MonoDevelop.Projects.MSBuild public Dictionary<MSBuildImport,string> Imports = new Dictionary<MSBuildImport, string> (); public Dictionary<string,string> GlobalProperties = new Dictionary<string, string> (); public List<MSBuildTarget> Targets = new List<MSBuildTarget> (); + public List<MSBuildTarget> TargetsIgnoringCondition = new List<MSBuildTarget> (); public List<MSBuildProject> ReferencedProjects = new List<MSBuildProject> (); public Dictionary<MSBuildImport, List<ProjectInfo>> ImportedProjects = new Dictionary<MSBuildImport, List<ProjectInfo>> (); public ConditionedPropertyCollection ConditionedProperties = new ConditionedPropertyCollection (); @@ -141,6 +142,7 @@ namespace MonoDevelop.Projects.MSBuild pi.Properties.Clear (); pi.Imports.Clear (); pi.Targets.Clear (); + pi.TargetsIgnoringCondition.Clear (); // Unload referenced projects after evaluating to avoid unnecessary unload + load var oldRefProjects = pi.ReferencedProjects; @@ -450,6 +452,10 @@ namespace MonoDevelop.Projects.MSBuild t.IsImported = true; project.Targets.Add (t); } + foreach (var t in p.TargetsIgnoringCondition) { + t.IsImported = true; + project.TargetsIgnoringCondition.Add (t); + } project.ConditionedProperties.Append (p.ConditionedProperties); } return; @@ -470,16 +476,19 @@ namespace MonoDevelop.Projects.MSBuild string[] GetImportFiles (ProjectInfo project, MSBuildEvaluationContext context, MSBuildImport import, string extensionsPath) { - var tempCtx = new MSBuildEvaluationContext (context); - var mep = MSBuildProjectService.ToMSBuildPath (null, extensionsPath); - tempCtx.SetPropertyValue ("MSBuildExtensionsPath", mep); - tempCtx.SetPropertyValue ("MSBuildExtensionsPath32", mep); - tempCtx.SetPropertyValue ("MSBuildExtensionsPath64", mep); + if (extensionsPath != null) { + var tempCtx = new MSBuildEvaluationContext (context); + var mep = MSBuildProjectService.ToMSBuildPath (null, extensionsPath); + tempCtx.SetPropertyValue ("MSBuildExtensionsPath", mep); + tempCtx.SetPropertyValue ("MSBuildExtensionsPath32", mep); + tempCtx.SetPropertyValue ("MSBuildExtensionsPath64", mep); + context = tempCtx; + } var pr = context.EvaluateString (import.Project); project.Imports [import] = pr; - if (!string.IsNullOrEmpty (import.Condition) && !SafeParseAndEvaluate (project, tempCtx, import.Condition, true)) + if (!string.IsNullOrEmpty (import.Condition) && !SafeParseAndEvaluate (project, context, import.Condition, true)) return null; var path = MSBuildProjectService.FromMSBuildPath (project.Project.BaseDirectory, pr); @@ -489,7 +498,10 @@ namespace MonoDevelop.Projects.MSBuild return File.Exists (path) ? new [] { path } : null; } else { - var files = Directory.GetFiles (Path.GetDirectoryName (path), fileName); + path = Path.GetDirectoryName (path); + if (!Directory.Exists (path)) + return null; + var files = Directory.GetFiles (path, fileName); Array.Sort (files); return files; } @@ -528,17 +540,18 @@ namespace MonoDevelop.Projects.MSBuild void Evaluate (ProjectInfo project, MSBuildEvaluationContext context, MSBuildTarget target) { - if (SafeParseAndEvaluate (project, context, target.Condition)) { - var newTarget = new MSBuildTarget (target.Name, target.Tasks); - newTarget.AfterTargets = context.EvaluateString (target.AfterTargets); - newTarget.Inputs = context.EvaluateString (target.Inputs); - newTarget.Outputs = context.EvaluateString (target.Outputs); - newTarget.BeforeTargets = context.EvaluateString (target.BeforeTargets); - newTarget.DependsOnTargets = context.EvaluateString (target.DependsOnTargets); - newTarget.Returns = context.EvaluateString (target.Returns); - newTarget.KeepDuplicateOutputs = context.EvaluateString (target.KeepDuplicateOutputs); + bool condIsTrue = SafeParseAndEvaluate (project, context, target.Condition); + var newTarget = new MSBuildTarget (target.Name, target.Tasks); + newTarget.AfterTargets = context.EvaluateString (target.AfterTargets); + newTarget.Inputs = context.EvaluateString (target.Inputs); + newTarget.Outputs = context.EvaluateString (target.Outputs); + newTarget.BeforeTargets = context.EvaluateString (target.BeforeTargets); + newTarget.DependsOnTargets = context.EvaluateString (target.DependsOnTargets); + newTarget.Returns = context.EvaluateString (target.Returns); + newTarget.KeepDuplicateOutputs = context.EvaluateString (target.KeepDuplicateOutputs); + project.TargetsIgnoringCondition.Add (newTarget); + if (condIsTrue) project.Targets.Add (newTarget); - } } static bool SafeParseAndEvaluate (ProjectInfo project, MSBuildEvaluationContext context, string condition, bool collectConditionedProperties = false) @@ -651,6 +664,11 @@ namespace MonoDevelop.Projects.MSBuild return ((ProjectInfo)projectInstance).Targets; } + public override IEnumerable<MSBuildTarget> GetTargetsIgnoringCondition (object projectInstance) + { + return ((ProjectInfo)projectInstance).TargetsIgnoringCondition; + } + public override void SetGlobalProperty (object projectInstance, string property, string value) { var pi = (ProjectInfo)projectInstance; diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngine.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngine.cs index 3e17684abc..f9ba3da355 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngine.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngine.cs @@ -103,6 +103,8 @@ namespace MonoDevelop.Projects.MSBuild public abstract IEnumerable<MSBuildTarget> GetTargets (object projectInstance); + public abstract IEnumerable<MSBuildTarget> GetTargetsIgnoringCondition (object projectInstance); + public abstract void SetGlobalProperty (object projectInstance, string property, string value); public abstract void RemoveGlobalProperty (object projectInstance, string property); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngineV12.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngineV12.cs index df15e56634..f6a287abc7 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngineV12.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngineV12.cs @@ -163,6 +163,11 @@ namespace MonoDevelop.Projects.MSBuild } } + public override IEnumerable<MSBuildTarget> GetTargetsIgnoringCondition (object projectInstance) + { + throw new NotImplementedException (); + } + public override void SetGlobalProperty (object project, string property, string value) { var p = (MSProject)project; diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngineV4.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngineV4.cs index b8a304bef8..a0b6424037 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngineV4.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEngineV4.cs @@ -202,6 +202,11 @@ namespace MonoDevelop.Projects.MSBuild { throw new NotImplementedException (); } + + public override IEnumerable<MSBuildTarget> GetTargetsIgnoringCondition (object projectInstance) + { + throw new NotImplementedException (); + } } #endif } diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs index 3f09106dc4..e980e56fe2 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildEvaluationContext.cs @@ -109,7 +109,46 @@ namespace MonoDevelop.Projects.MSBuild properties.Add ("MSBuildFrameworkToolsPath", MSBuildProjectService.ToMSBuildPath (null, frameworkToolsPath)); properties.Add ("MSBuildFrameworkToolsPath32", MSBuildProjectService.ToMSBuildPath (null, frameworkToolsPath)); - if (!String.IsNullOrEmpty (DefaultExtensionsPath)) { + if (Platform.IsWindows) { + // Taken from MSBuild source: + var programFiles = Environment.GetFolderPath (Environment.SpecialFolder.ProgramFiles); + var programFiles32 = Environment.GetFolderPath (Environment.SpecialFolder.ProgramFilesX86); + if (string.IsNullOrEmpty(programFiles32)) + programFiles32 = programFiles; // 32 bit box + + string programFiles64; + if (programFiles == programFiles32) { + // either we're in a 32-bit window, or we're on a 32-bit machine. + // if we're on a 32-bit machine, ProgramW6432 won't exist + // if we're on a 64-bit machine, ProgramW6432 will point to the correct Program Files. + programFiles64 = Environment.GetEnvironmentVariable("ProgramW6432"); + } + else { + // 64-bit window on a 64-bit machine; %ProgramFiles% points to the 64-bit + // Program Files already. + programFiles64 = programFiles; + } + + var extensionsPath32 = MSBuildProjectService.ToMSBuildPath (null, Path.Combine (programFiles32, "MSBuild")); + properties.Add ("MSBuildExtensionsPath32", extensionsPath32); + + if (programFiles64 != null) + properties.Add ("MSBuildExtensionsPath64", MSBuildProjectService.ToMSBuildPath (null, Path.Combine(programFiles64, "MSBuild"))); + + // MSBuildExtensionsPath: The way this used to work is that it would point to "Program Files\MSBuild" on both + // 32-bit and 64-bit machines. We have a switch to continue using that behavior; however the default is now for + // MSBuildExtensionsPath to always point to the same location as MSBuildExtensionsPath32. + + bool useLegacyMSBuildExtensionsPathBehavior = !String.IsNullOrEmpty(Environment.GetEnvironmentVariable("MSBUILDLEGACYEXTENSIONSPATH")); + + string extensionsPath; + if (useLegacyMSBuildExtensionsPathBehavior) + extensionsPath = Path.Combine (programFiles, "MSBuild"); + else + extensionsPath = extensionsPath32; + properties.Add ("MSBuildExtensionsPath", extensionsPath); + } + else if (!String.IsNullOrEmpty (DefaultExtensionsPath)) { var ep = MSBuildProjectService.ToMSBuildPath (null, extensionsPath); properties.Add ("MSBuildExtensionsPath", ep); properties.Add ("MSBuildExtensionsPath32", ep); @@ -147,6 +186,9 @@ namespace MonoDevelop.Projects.MSBuild internal static IEnumerable<string> GetApplicableExtensionsPaths () { + // On windows there is a single extension path, which is already properly defined in the engine + if (Platform.IsWindows) + yield return null; if (Platform.IsMac) yield return MacOSXExternalXBuildDir; yield return DotConfigExtensionsPath; diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs index 82736754f4..187da6cd79 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProject.cs @@ -416,6 +416,8 @@ namespace MonoDevelop.Projects.MSBuild public void Evaluate () { + if (mainProjectInstance != null) + mainProjectInstance.Dispose (); mainProjectInstance = new MSBuildProjectInstance (this); mainProjectInstance.Evaluate (); conditionedProperties = mainProjectInstance.GetConditionedProperties (); @@ -423,6 +425,8 @@ namespace MonoDevelop.Projects.MSBuild public Task EvaluateAsync () { + if (mainProjectInstance != null) + mainProjectInstance.Dispose (); mainProjectInstance = new MSBuildProjectInstance (this); return mainProjectInstance.EvaluateAsync ().ContinueWith (t => { conditionedProperties = mainProjectInstance.GetConditionedProperties (); @@ -626,6 +630,11 @@ namespace MonoDevelop.Projects.MSBuild get { return mainProjectInstance.Targets; } } + public IEnumerable<IMSBuildTargetEvaluated> EvaluatedTargetsIgnoringCondition + { + get { return mainProjectInstance.TargetsIgnoringCondition; } + } + public MSBuildPropertyGroup GetGlobalPropertyGroup () { return PropertyGroups.FirstOrDefault (g => g.Condition.Length == 0); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectInstance.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectInstance.cs index 837261498f..73e5bdd747 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectInstance.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectInstance.cs @@ -39,6 +39,7 @@ namespace MonoDevelop.Projects.MSBuild List<IMSBuildItemEvaluated> evaluatedItemsIgnoringCondition = new List<IMSBuildItemEvaluated> (); MSBuildEvaluatedPropertyCollection evaluatedProperties; MSBuildTarget[] targets = new MSBuildTarget[0]; + MSBuildTarget[] targetsIgnoringCondition = new MSBuildTarget[0]; Dictionary<string,string> globalProperties = new Dictionary<string, string> (); ConditionedPropertyCollection conditionedProperties; @@ -164,6 +165,7 @@ namespace MonoDevelop.Projects.MSBuild ((MSBuildPropertyGroupEvaluated)it.Metadata).RemoveProperty (NodeIdPropertyName); targets = e.GetTargets (project).ToArray (); + targetsIgnoringCondition = e.GetTargetsIgnoringCondition (project).ToArray (); } var props = new MSBuildEvaluatedPropertyCollection (msproject); @@ -202,6 +204,12 @@ namespace MonoDevelop.Projects.MSBuild } } + public IEnumerable<IMSBuildTargetEvaluated> TargetsIgnoringCondition { + get { + return targetsIgnoringCondition; + } + } + internal IPropertySet GetPropertiesLinkedToGroup (MSBuildPropertyGroup group) { evaluatedProperties.LinkToGroup (group); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs index 9d12344de8..1444d45fe5 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects.MSBuild/MSBuildProjectService.cs @@ -949,8 +949,11 @@ namespace MonoDevelop.Projects.MSBuild string responseKey = "[MonoDevelop]"; string sref = null; p.ErrorDataReceived += (sender, e) => { - if (e.Data == null) + if (e.Data == null) { + if (string.IsNullOrEmpty (sref)) + LoggingService.LogError ("The MSBuild builder exited before initializing"); return; + } if (e.Data.StartsWith (responseKey, StringComparison.Ordinal)) { sref = e.Data.Substring (responseKey.Length); diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs index 90e985ef4c..50c0870736 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/DotNetProject.cs @@ -258,6 +258,8 @@ namespace MonoDevelop.Projects get { return (flags & DotNetProjectFlags.GeneratesDebugInfoFile) != 0; } } + public bool SupportsRoslyn { get; protected set; } + protected virtual DotNetProjectFlags OnGetDotNetProjectFlags () { return DotNetProjectFlags.GeneratesDebugInfoFile; diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs index d1446c5fac..88f50ba90e 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/Project.cs @@ -176,17 +176,23 @@ namespace MonoDevelop.Projects sourceProject.FileName = FileName; } + var ggroup = sourceProject.GetGlobalPropertyGroup (); + // Avoid crash if there is not global group + if (ggroup == null) + ggroup = sourceProject.AddNewPropertyGroup (false); + + // Load the evaluated properties + InitMainGroupProperties (ggroup); + } + + void InitMainGroupProperties (MSBuildPropertyGroup globalGroup) + { // Create a project instance to be used for comparing old and new values in the global property group // We use a dummy configuration and platform to avoid loading default values from the configurations // while evaluating var c = Guid.NewGuid ().ToString (); - using (var pi = CreateProjectInstaceForConfiguration (c, c)) { - var globalGroup = sourceProject.GetGlobalPropertyGroup (); - // Avoid crash if there is not global group - if (globalGroup == null) - globalGroup = sourceProject.AddNewPropertyGroup (false); + using (var pi = CreateProjectInstaceForConfiguration (c, c)) mainGroupProperties = pi.GetPropertiesLinkedToGroup (globalGroup); - } } protected override void OnExtensionChainInitialized () @@ -256,8 +262,10 @@ namespace MonoDevelop.Projects { var conf = (ProjectConfiguration)args.Configuration; - // Initialize the property group - if (!Loading) + // Initialize the property group only if the project is not being loaded (in which case it will + // be initialized by the ReadProject method) or if the project is new (because it will be initialized + // after the project is fully written, since only then all imports are in place + if (!Loading && !sourceProject.IsNewProject) InitConfiguration (conf); base.OnConfigurationAdded (args); @@ -897,7 +905,7 @@ namespace MonoDevelop.Projects protected virtual bool OnGetSupportsTarget (string target) { - return sourceProject.EvaluatedTargets.Any (t => t.Name == target); + return sourceProject.EvaluatedTargetsIgnoringCondition.Any (t => t.Name == target); } /// <summary> @@ -2003,6 +2011,16 @@ namespace MonoDevelop.Projects globalGroup.PurgeDefaultProperties (); globalGroup.ResetIsNewFlags (); + if (sourceProject.IsNewProject) { + // If the project is new, the evaluated properties lists are empty. Now that the project is saved, + // those lists can be filled, so that the project is left in the same state it would have if it + // was just loaded. + sourceProject.Evaluate (); + InitMainGroupProperties (globalGroup); + foreach (ProjectConfiguration conf in Configurations) + InitConfiguration (conf); + } + sourceProject.IsNewProject = false; } finally { saving = false; diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectCreateInformation.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectCreateInformation.cs index eda33a4205..316dda8010 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectCreateInformation.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectCreateInformation.cs @@ -82,30 +82,5 @@ namespace MonoDevelop.Projects ActiveConfiguration = projectCreateInformation.ActiveConfiguration; Parameters = projectCreateInformation.Parameters; } - - public bool ShouldCreate (string createCondition) - { - // This logic is duplicated in the TemplateConditionEvaluator. - if (string.IsNullOrWhiteSpace (createCondition)) - return true; - - createCondition = createCondition.Trim (); - - string parameter = GetNotConditionParameterName (createCondition); - if (parameter != null) { - return !Parameters.GetBoolean (parameter); - } - - return Parameters.GetBoolean (createCondition); - } - - static string GetNotConditionParameterName (string createCondition) - { - if (createCondition.StartsWith ("!")) { - return createCondition.Substring (1).TrimStart (); - } - - return null; - } } } diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectCreateParameters.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectCreateParameters.cs index fc56097a3b..27f4f88873 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectCreateParameters.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/ProjectCreateParameters.cs @@ -44,13 +44,6 @@ namespace MonoDevelop.Projects parameters = new Dictionary<string, string> (StringComparer.OrdinalIgnoreCase);
}
- public void MergeTo (IDictionary<string, string> other)
- {
- foreach (KeyValuePair<string, string> parameter in parameters) {
- other [parameter.Key] = parameter.Value;
- }
- }
-
public string this [string name] {
get {
string result;
@@ -64,12 +57,6 @@ namespace MonoDevelop.Projects }
}
- [Obsolete("Use StringTagModelExtensions.GetBoolValue")] - public bool GetBoolean (string name, bool defaultValue = false)
- {
- return ((IStringTagModel)this).GetBoolValue (name, defaultValue); - }
-
object IStringTagModel.GetValue (string name)
{
string result;
diff --git a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs index 6c0b74dddf..4e7fb71428 100644 --- a/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs +++ b/main/src/core/MonoDevelop.Core/MonoDevelop.Projects/SolutionFolder.cs @@ -216,8 +216,10 @@ namespace MonoDevelop.Projects SolutionItem newItem; try { - if (ParentSolution.IsSolutionItemEnabled (item.FileName)) - newItem = await Services.ProjectService.ReadSolutionItem (monitor, item.FileName, null, ctx:new SolutionLoadContext (ParentSolution)); + if (ParentSolution.IsSolutionItemEnabled (item.FileName)) { + using (var ctx = new SolutionLoadContext (ParentSolution)) + newItem = await Services.ProjectService.ReadSolutionItem (monitor, item.FileName, null, ctx: ctx); + } else { UnknownSolutionItem e = new UnloadedSolutionItem () { FileName = item.FileName @@ -309,9 +311,11 @@ namespace MonoDevelop.Projects public async Task<SolutionItem> AddItem (ProgressMonitor monitor, string filename, bool createSolutionConfigurations) { if (monitor == null) monitor = new ProgressMonitor (); - SolutionItem entry = await Services.ProjectService.ReadSolutionItem (monitor, filename, null, ctx:new SolutionLoadContext (ParentSolution)); - AddItem (entry, createSolutionConfigurations); - return entry; + using (var ctx = new SolutionLoadContext (ParentSolution)) { + var entry = await Services.ProjectService.ReadSolutionItem (monitor, filename, null, ctx: ctx); + AddItem (entry, createSolutionConfigurations); + return entry; + } } public void AddItem (SolutionFolderItem item) diff --git a/main/src/core/MonoDevelop.Ide/AssemblyInfo.cs b/main/src/core/MonoDevelop.Ide/AssemblyInfo.cs index f5110291c3..1a1a28c7dc 100644 --- a/main/src/core/MonoDevelop.Ide/AssemblyInfo.cs +++ b/main/src/core/MonoDevelop.Ide/AssemblyInfo.cs @@ -32,3 +32,4 @@ using System.Runtime.CompilerServices; [assembly: InternalsVisibleTo("MonoDevelop.CSharpBinding.AspNet")] [assembly: InternalsVisibleTo("MonoDevelop.GtkCore")] [assembly: InternalsVisibleTo("MonoDevelop.PackageManagement")] +[assembly: InternalsVisibleTo("Xamarin.Forms.Addin.Tests")] diff --git a/main/src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml b/main/src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml index a5ca844ab2..201f663303 100644 --- a/main/src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml +++ b/main/src/core/MonoDevelop.Ide/ExtensionModel/Commands.addin.xml @@ -425,7 +425,10 @@ defaultHandler = "MonoDevelop.Ide.Commands.CloseWorkspaceHandler" _label = "C_lose Workspace" _description = "Close all solutions open in the current workspace" - icon = "md-close-combine-icon" /> + icon = "md-close-combine-icon" + shortcut = "Control|Alt|W" + macShortcut = "Meta|Alt|W" + /> <Command id = "MonoDevelop.Ide.Commands.FileCommands.CloseWorkspaceItem" defaultHandler = "MonoDevelop.Ide.Commands.CloseWorkspaceHandler" _label = "C_lose" diff --git a/main/src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml b/main/src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml index cf4d15a937..1eaaa09818 100644 --- a/main/src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml +++ b/main/src/core/MonoDevelop.Ide/ExtensionModel/MonoDevelop.Ide.addin.xml @@ -75,7 +75,7 @@ <ExtensionNode name="FileFilter" type="MonoDevelop.Ide.Codons.FileFilterCodon"/> </ExtensionPoint> - <ExtensionPoint path = "/MonoDevelop/Ide/TextEditorExtensions" name = "Text editor extensions"> + <ExtensionPoint path = "/MonoDevelop/Ide/TextEditorExtensions" name = "Text editor extensions" defaultInsertAfter = "MidStep"> <Description>Extensions to the text editor. Classes must be a subclass of TextEditorExtension.</Description> <ExtensionNode name="Class" type="MonoDevelop.Ide.Extensions.TextEditorExtensionNode"/> </ExtensionPoint> @@ -262,6 +262,9 @@ <Class id="InitialStep" class = "MonoDevelop.Ide.Editor.Extension.TextEditorExtensionMarker" /> <Class id="MidStep" class = "MonoDevelop.Ide.Editor.Extension.TextEditorExtensionMarker" /> <Class class = "MonoDevelop.Ide.Editor.Extension.BraceMatcherTextEditorExtension" /> + <Class class = "MonoDevelop.Ide.Editor.Extension.DefaultCommandTextEditorExtension" /> + <Class class = "MonoDevelop.Ide.Editor.Extension.FoldingTextEditorExtension" /> + <Class class = "MonoDevelop.Ide.Editor.Extension.ErrorHandlerTextEditorExtension" /> <Class id="FinalStep" class = "MonoDevelop.Ide.Editor.Extension.TextEditorExtensionMarker" /> </Extension> diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AppResult.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AppResult.cs index 45b3bc22ea..df759e541b 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AppResult.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest/AppResult.cs @@ -152,7 +152,7 @@ namespace MonoDevelop.Components.AutoTest var propertiesObject = new ObjectProperties (); if (resultObject != null) { var properties = resultObject.GetType ().GetProperties ( - BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static); + BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic); foreach (var property in properties) { try { var value = GetPropertyValue (property.Name, resultObject); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Chart/BasicChart.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Chart/BasicChart.cs index cfe3b9cb6f..f7caa76582 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Chart/BasicChart.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Chart/BasicChart.cs @@ -43,7 +43,7 @@ namespace MonoDevelop.Components.Chart widget = new ChartWidget (); } - protected override object CreateNativeWidget () + protected override object CreateNativeWidget<T> () { return widget; } @@ -956,7 +956,10 @@ namespace MonoDevelop.Components.Chart selectionStart = selectionEnd; selectionEnd = tmp; } - chart.OnSelectionChanged (); + + if (chart != null) { + chart.OnSelectionChanged (); + } } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs index d73871947b..cb7ed361f0 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Commands/CommandManager.cs @@ -637,6 +637,8 @@ namespace MonoDevelop.Components.Commands public void UnregisterCommandTargetVisitor (ICommandTargetVisitor visitor) { visitors.Remove (visitor); + + StopStatusUpdaterIfNeeded (); } /// <summary> @@ -906,7 +908,7 @@ namespace MonoDevelop.Components.Commands object initialCommandTarget, EventHandler closeHandler) { #if MAC - var menu = CreateNSMenu (entrySet, initialCommandTarget, closeHandler); + var menu = CreateNSMenu (entrySet, initialCommandTarget ?? parent, closeHandler); ContextMenuExtensionsMac.ShowContextMenu (parent, evt, menu); #else var menu = CreateMenu (entrySet, closeHandler); @@ -929,7 +931,7 @@ namespace MonoDevelop.Components.Commands object initialCommandTarget = null) { #if MAC - var menu = CreateNSMenu (entrySet, initialCommandTarget); + var menu = CreateNSMenu (entrySet, initialCommandTarget ?? parent); ContextMenuExtensionsMac.ShowContextMenu (parent, x, y, menu); #else var menu = CreateMenu (entrySet); @@ -1690,7 +1692,7 @@ namespace MonoDevelop.Components.Commands cmdTarget = null; if (cmdTarget == null || !visitedTargets.Add (cmdTarget)) { - if (delegatorStack.Count > 0) { + while (delegatorStack.Count > 0) { var del = delegatorStack.Pop (); if (del is ICommandDelegatorRouter) cmdTarget = ((ICommandDelegatorRouter)del).GetNextCommandTarget (); @@ -1884,6 +1886,14 @@ namespace MonoDevelop.Components.Commands toolbarUpdaterRunning = true; } } + + void StopStatusUpdaterIfNeeded () + { + if (toolbars.Count != 0 || visitors.Count != 0) + return; + + StopStatusUpdater (); + } void StopStatusUpdater () { @@ -1954,6 +1964,8 @@ namespace MonoDevelop.Components.Commands public void UnregisterCommandBar (ICommandBar commandBar) { toolbars.Remove (commandBar); + + StopStatusUpdaterIfNeeded (); } void UpdateToolbars () diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemToolbar.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemToolbar.cs index 0d683b5967..5908aa86e0 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemToolbar.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.Docking/DockItemToolbar.cs @@ -209,7 +209,7 @@ namespace MonoDevelop.Components.Docking Image.Show (); } - protected override object CreateNativeWidget () + protected override object CreateNativeWidget<T> () { return button; } @@ -222,6 +222,30 @@ namespace MonoDevelop.Components.Docking button.Clicked -= value; } } + + public class DockToolButtonImage : Control + { + ImageView image; + internal DockToolButtonImage (ImageView image) + { + this.image = image; + } + + protected override object CreateNativeWidget<T> () + { + return image; + } + + public static implicit operator Gtk.Widget (DockToolButtonImage d) + { + return d.GetNativeWidget<Gtk.Widget> (); + } + + public static implicit operator DockToolButtonImage (ImageView d) + { + return new DockToolButtonImage (d); + } + } } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs index 5db3ed8216..b5204a2e27 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/FileSearchCategory.cs @@ -99,11 +99,18 @@ namespace MonoDevelop.Components.MainToolbar } static List<Tuple<string, string, ProjectFile>> allFilesCache; + static object allFilesLock = new object (); public override Task GetResults (ISearchResultCallback searchResultCallback, SearchPopupSearchPattern pattern, CancellationToken token) { return Task.Run (delegate { - var files = allFilesCache = allFilesCache ?? GenerateAllFiles (); + List<Tuple<string, string, ProjectFile>> files; + //This lock is here in case user quickly types 5 letters which triggers 5 threads + //we don't want to use all CPU doing same thing, instead 1st one will create cache, others will wait here + //and then all will use cached version... + lock (allFilesLock) { + files = allFilesCache = allFilesCache ?? GenerateAllFiles (); + } var matcher = StringMatcher.GetMatcher (pattern.Pattern, false); var savedMatches = new Dictionary<string, MatchResult> (); foreach (var file in files) { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs index 44d6118ed4..c6fd6fd3c2 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/MainToolbarController.cs @@ -402,6 +402,10 @@ namespace MonoDevelop.Components.MainToolbar UpdateBuildConfiguration (); } + if (currentStartupProject == null) { + return; + } + var runtime = (RuntimeModel)ToolbarView.ActiveRuntime; if (runtime != null && runtime.Command == null) { currentStartupProject.UserProperties.SetValue<string> ("PreferredExecutionTarget", runtime.TargetId); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupSearchPattern.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupSearchPattern.cs index 1d77e7ec8b..556bf30628 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupSearchPattern.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupSearchPattern.cs @@ -34,6 +34,7 @@ using System.Linq; using ICSharpCode.NRefactory.TypeSystem; using MonoDevelop.Ide; using MonoDevelop.Ide.CodeCompletion; +using System.Text.RegularExpressions; namespace MonoDevelop.Components.MainToolbar { @@ -65,8 +66,44 @@ namespace MonoDevelop.Components.MainToolbar UnparsedPattern = unparsedPattern; } + static readonly Regex githubRegex = new Regex ("((?<tag>.*):)?(?<pattern>[^#]+)#L(?<line>\\d+)$", RegexOptions.Compiled); // for example: ExceptionCaughtDialog.cs#L510 + static readonly Regex lineRegex = new Regex ("((?<tag>[^:]*):)?(?<pattern>[^0-:][^:]*):[a-zA-Z]*\\s*(?<line>\\d+)$", RegexOptions.Compiled); // for example: ExceptionCaughtDialog.cs:line 510 + public static SearchPopupSearchPattern ParsePattern (string searchPattern) { + var githubMatch = githubRegex.Match (searchPattern); + if (githubMatch.Success) { + int parsedLine; + try { + parsedLine = int.Parse (githubMatch.Groups ["line"].Value); + } catch (Exception) { + parsedLine = -1; + } + return new SearchPopupSearchPattern (githubMatch.Groups["tag"].Success ? githubMatch.Groups["tag"].Value : null, + githubMatch.Groups["pattern"].Success ? githubMatch.Groups["pattern"].Value : null, + parsedLine, + -1, + searchPattern); + + } + + + var lineRegexMatch = lineRegex.Match (searchPattern); + if (lineRegexMatch.Success) { + int parsedLine; + try { + parsedLine = int.Parse (lineRegexMatch.Groups ["line"].Value); + } catch (Exception) { + parsedLine = -1; + } + return new SearchPopupSearchPattern (lineRegexMatch.Groups["tag"].Success ? lineRegexMatch.Groups["tag"].Value : null, + lineRegexMatch.Groups["pattern"].Value, + parsedLine, + -1, + searchPattern); + + } + string tag = null; string pattern = null; int lineNumber = -1; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupWindow.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupWindow.cs index be226052c1..f18bdb998f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupWindow.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.MainToolbar/SearchPopupWindow.cs @@ -180,9 +180,9 @@ namespace MonoDevelop.Components.MainToolbar if (region.Length <= 0) { if (Pattern.LineNumber == 0) { - IdeApp.Workbench.OpenDocument (SelectedItemFileName, project: null); + await IdeApp.Workbench.OpenDocument (SelectedItemFileName, project: null); } else { - IdeApp.Workbench.OpenDocument (SelectedItemFileName, null, Pattern.LineNumber, Pattern.HasColumn ? Pattern.Column : 1); + await IdeApp.Workbench.OpenDocument (SelectedItemFileName, null, Pattern.LineNumber, Pattern.HasColumn ? Pattern.Column : 1); } } else { await IdeApp.Workbench.OpenDocument (new FileOpenInformation (SelectedItemFileName, null) { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs index 61a3bdb059..5539608113 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components/Control.cs @@ -34,7 +34,7 @@ using MonoDevelop.Components.Mac; namespace MonoDevelop.Components { - public class Control : IDisposable + public class Control : IDisposable, ICommandRouter { internal static Dictionary<object, WeakReference<Control>> cache = new Dictionary<object, WeakReference<Control>> (); internal object nativeWidget; @@ -51,7 +51,7 @@ namespace MonoDevelop.Components cache.Add (nativeWidget, new WeakReference<Control> (this)); } - protected virtual object CreateNativeWidget () + protected virtual object CreateNativeWidget<T> () { throw new NotSupportedException (); } @@ -60,7 +60,7 @@ namespace MonoDevelop.Components { if (nativeWidget == null) { var toCache = this; - var w = CreateNativeWidget (); + var w = CreateNativeWidget<T> (); if (!(w is T)) { var temp = w as Control; while (temp != null) { @@ -211,6 +211,11 @@ namespace MonoDevelop.Components gtkWidget.Destroyed -= OnGtkDestroyed; } } + + object ICommandRouter.GetNextCommandTarget () + { + return nativeWidget; + } } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWindow.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWindow.cs index 3a59ca1ec1..daba7f1cc7 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWindow.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ListWindow.cs @@ -276,7 +276,6 @@ namespace MonoDevelop.Ide.CodeCompletion public bool IsUniqueMatch { get { - list.FilterWords (); return list.filteredItems.Count == 1; } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs index 5473fbab24..fc7c2e6e51 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeCompletion/ParameterInformationWindowManager.cs @@ -33,6 +33,7 @@ using Gtk; using Gdk; using MonoDevelop.Ide.Gui.Content; using MonoDevelop.Ide.Editor.Extension; +using System.Threading; namespace MonoDevelop.Ide.CodeCompletion { @@ -113,9 +114,12 @@ namespace MonoDevelop.Ide.CodeCompletion internal static void PostProcessKeyEvent (CompletionTextEditorExtension ext, ICompletionWidget widget, KeyDescriptor descriptor) { } - - internal static void UpdateCursorPosition (CompletionTextEditorExtension ext, ICompletionWidget widget) - { + static CancellationTokenSource updateSrc = new CancellationTokenSource (); + internal static async void UpdateCursorPosition (CompletionTextEditorExtension ext, ICompletionWidget widget) + { + updateSrc.Cancel (); + updateSrc = new CancellationTokenSource (); + var token = updateSrc.Token; // Called after the key has been processed by the editor if (methods.Count == 0) return; @@ -125,7 +129,7 @@ namespace MonoDevelop.Ide.CodeCompletion // information window for that method. MethodData md = methods [n]; - int pos = ext.GetCurrentParameterIndex (md.MethodProvider.StartOffset); + int pos = await ext.GetCurrentParameterIndex (md.MethodProvider.StartOffset, token); if (pos == -1) { methods.RemoveAt (n); n--; @@ -207,7 +211,7 @@ namespace MonoDevelop.Ide.CodeCompletion static bool wasVisi; static int lastW = -1, lastH = -1; - internal static void UpdateWindow (CompletionTextEditorExtension textEditorExtension, ICompletionWidget completionWidget) + internal static async void UpdateWindow (CompletionTextEditorExtension textEditorExtension, ICompletionWidget completionWidget) { // Updates the parameter information window from the information // of the current method overload @@ -231,7 +235,7 @@ namespace MonoDevelop.Ide.CodeCompletion } wasAbove = false; var lastMethod = methods [methods.Count - 1]; - int curParam = window.Ext != null ? window.Ext.GetCurrentParameterIndex (lastMethod.MethodProvider.StartOffset) : 0; + int curParam = window.Ext != null ? await window.Ext.GetCurrentParameterIndex (lastMethod.MethodProvider.StartOffset) : 0; var geometry2 = DesktopService.GetUsableMonitorGeometry (window.Screen.Number, window.Screen.GetMonitorAtPoint (X, Y)); window.ShowParameterInfo (lastMethod.MethodProvider, lastMethod.CurrentOverload, curParam - 1, (int)geometry2.Width); PositionParameterInfoWindow (window.Allocation); @@ -251,14 +255,14 @@ namespace MonoDevelop.Ide.CodeCompletion } - static void PositionParameterInfoWindow (Rectangle allocation) + static async void PositionParameterInfoWindow (Rectangle allocation) { lastW = allocation.Width; lastH = allocation.Height; wasVisi = CompletionWindowManager.IsVisible; var ctx = window.Widget.CurrentCodeCompletionContext; var md = methods [methods.Count - 1]; - int cparam = window.Ext != null ? window.Ext.GetCurrentParameterIndex (md.MethodProvider.StartOffset) : 0; + int cparam = window.Ext != null ? await window.Ext.GetCurrentParameterIndex (md.MethodProvider.StartOffset) : 0; X = md.CompletionContext.TriggerXCoord; if (CompletionWindowManager.IsVisible) { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs index 2c82c997fb..9125e48690 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.CodeTemplates/CodeTemplate.cs @@ -454,7 +454,8 @@ namespace MonoDevelop.Ide.CodeTemplates if (prettyPrinter != null && prettyPrinter.SupportsOnTheFlyFormatting) { int endOffset = template.InsertPosition + template.Code.Length; var oldVersion = data.Version; - prettyPrinter.OnTheFlyFormat (editor, context, TextSegment.FromBounds (template.InsertPosition, endOffset)); + prettyPrinter.OnTheFlyFormat (editor, context, TextSegment.FromBounds (template.InsertPosition, editor.CaretOffset)); + prettyPrinter.OnTheFlyFormat (editor, context, TextSegment.FromBounds (editor.CaretOffset, endOffset)); foreach (var textLink in template.TextLinks) { for (int i = 0; i < textLink.Links.Count; i++) { var segment = textLink.Links [i]; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/BraceMatcherTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/BraceMatcherTextEditorExtension.cs index 1aef1db2a4..4bc186bacf 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/BraceMatcherTextEditorExtension.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/BraceMatcherTextEditorExtension.cs @@ -94,9 +94,9 @@ namespace MonoDevelop.Ide.Editor.Extension Task.Run (async delegate() { BraceMatchingResult? result; try { - result = await matcher.GetMatchingBracesAsync (snapshot, ctx, caretOffset, token).ConfigureAwait (false); + result = await matcher.GetMatchingBracesAsync (snapshot, ctx, caretOffset - 1, token).ConfigureAwait (false); if (result == null && caretOffset > 0) - result = await matcher.GetMatchingBracesAsync (snapshot, ctx, caretOffset - 1, token).ConfigureAwait (false); + result = await matcher.GetMatchingBracesAsync (snapshot, ctx, caretOffset, token).ConfigureAwait (false); if (result == null) return; } catch (OperationCanceledException) { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs index 9172c2e371..31a42a4ccd 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/CompletionTextEditorExtension.cs @@ -293,17 +293,11 @@ namespace MonoDevelop.Ide.Editor.Extension autoHideCompletionWindow = autoHideParameterWindow = true; } - public virtual Task<int> GetCurrentParameterIndex (int startOffset, CancellationToken token) + public virtual Task<int> GetCurrentParameterIndex (int startOffset, CancellationToken token = default(CancellationToken)) { return Task.FromResult (-1); } - [Obsolete("Use GetCurrentParameterIndex (int startOffset, CancellationToken token)")] - public virtual int GetCurrentParameterIndex (int startOffset) - { - return GetCurrentParameterIndex (startOffset, default(CancellationToken)).Result; - } - internal protected virtual void OnCompletionContextChanged (object o, EventArgs a) { if (!IsActiveExtension ()) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/DefaultCommandTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/DefaultCommandTextEditorExtension.cs new file mode 100644 index 0000000000..11f68e1c2e --- /dev/null +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/DefaultCommandTextEditorExtension.cs @@ -0,0 +1,652 @@ +// +// DefaultCommandTextEditorExtension.cs +// +// Author: +// Mike Krüger <mkrueger@xamarin.com> +// +// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Collections.Generic; +using System.Linq; +using MonoDevelop.Components.Commands; +using MonoDevelop.Core.Text; +using MonoDevelop.Ide.Commands; +using MonoDevelop.Ide.TypeSystem; + +namespace MonoDevelop.Ide.Editor.Extension +{ + class DefaultCommandTextEditorExtension : TextEditorExtension + { + #region Commands + void ToggleCodeCommentWithBlockComments () + { + var blockStarts = TextEditorFactory.GetSyntaxProperties (Editor.MimeType, "BlockCommentStart"); + var blockEnds = TextEditorFactory.GetSyntaxProperties (Editor.MimeType, "BlockCommentEnd"); + if (blockStarts == null || blockEnds == null || blockStarts.Length == 0 || blockEnds.Length == 0) + return; + + string blockStart = blockStarts[0]; + string blockEnd = blockEnds[0]; + + using (var undo = Editor.OpenUndoGroup ()) { + IDocumentLine startLine; + IDocumentLine endLine; + + if (Editor.IsSomethingSelected) { + startLine = Editor.GetLineByOffset (Editor.SelectionRange.Offset); + endLine = Editor.GetLineByOffset (Editor.SelectionRange.EndOffset); + + // If selection ends at begining of line... This is visible as previous line + // is selected, hence we want to select previous line Bug 26287 + if (endLine.Offset == Editor.SelectionRange.EndOffset) + endLine = endLine.PreviousLine; + } else { + startLine = endLine = Editor.GetLine (Editor.CaretLine); + } + string startLineText = Editor.GetTextAt (startLine.Offset, startLine.Length); + string endLineText = Editor.GetTextAt (endLine.Offset, endLine.Length); + if (startLineText.StartsWith (blockStart, StringComparison.Ordinal) && endLineText.EndsWith (blockEnd, StringComparison.Ordinal)) { + Editor.RemoveText (endLine.Offset + endLine.Length - blockEnd.Length, blockEnd.Length); + Editor.RemoveText (startLine.Offset, blockStart.Length); + if (Editor.IsSomethingSelected) { + Editor.SelectionAnchorOffset -= blockEnd.Length; + } + } else { + Editor.InsertText (endLine.Offset + endLine.Length, blockEnd); + Editor.InsertText (startLine.Offset, blockStart); + if (Editor.IsSomethingSelected) { + Editor.SelectionAnchorOffset += blockEnd.Length; + } + } + } + } + + bool TryGetLineCommentTag (out string commentTag) + { + var lineComments = TextEditorFactory.GetSyntaxProperties (Editor.MimeType, "LineComment"); + if (lineComments == null || lineComments.Length == 0) { + commentTag = null; + return false; + } + commentTag = lineComments [0]; + return true; + } + + [CommandUpdateHandler (EditCommands.AddCodeComment)] + [CommandUpdateHandler (EditCommands.RemoveCodeComment)] + [CommandUpdateHandler (EditCommands.ToggleCodeComment)] + void OnUpdateToggleComment (CommandInfo info) + { + var lineComments = TextEditorFactory.GetSyntaxProperties (Editor.MimeType, "LineComment"); + if (lineComments != null && lineComments.Length > 0) { + info.Visible = true; + return; + } + var blockStarts = TextEditorFactory.GetSyntaxProperties (Editor.MimeType, "BlockCommentStart"); + var blockEnds = TextEditorFactory.GetSyntaxProperties (Editor.MimeType, "BlockCommentEnd"); + info.Visible = blockStarts != null && blockStarts.Length > 0 && blockEnds != null && blockEnds.Length > 0; + } + + [CommandHandler (EditCommands.ToggleCodeComment)] + internal void ToggleCodeComment () + { + string commentTag; + if (!TryGetLineCommentTag (out commentTag)) + return; + bool comment = false; + foreach (var line in GetSelectedLines (Editor)) { + int startOffset; + int offset = line.Offset; + if (!StartsWith (Editor, offset, line.Length, commentTag, out startOffset)) { + if (startOffset - offset == line.Length) // case: line consists only of white spaces + continue; + comment = true; + break; + } + } + + if (comment) { + AddCodeComment (); + } else { + RemoveCodeComment (); + } + } + + static bool StartsWith (ITextSource text, int offset, int length, string commentTag, out int startOffset) + { + int max = Math.Min (offset + length, text.Length); + int i = offset; + for (; i < max; i++) { + char ch = text.GetCharAt (i); + if (ch != ' ' && ch != '\t') + break; + } + startOffset = i; + for (int j = 0; j < commentTag.Length && i < text.Length; j++) { + if (text.GetCharAt (i) != commentTag [j]) + return false; + i++; + } + + return true; + } + + static IEnumerable<IDocumentLine> GetSelectedLines (TextEditor Editor) + { + if (!Editor.IsSomethingSelected) { + yield return Editor.GetLine (Editor.CaretLine); + yield break; + } + var selection = Editor.SelectionRegion; + var line = Editor.GetLine(selection.EndLine); + if (selection.EndColumn == 1) + line = line.PreviousLine; + + while (line != null && line.LineNumber >= selection.BeginLine) { + yield return line; + line = line.PreviousLine; + } + } + + [CommandHandler (EditCommands.AddCodeComment)] + internal void AddCodeComment () + { + string commentTag; + if (!TryGetLineCommentTag (out commentTag)) + return; + + using (var undo = Editor.OpenUndoGroup ()) { + var wasSelected = Editor.IsSomethingSelected; + var lead = Editor.SelectionLeadOffset; + var anchor = Editor.SelectionAnchorOffset; + var lineAndIndents = new List<Tuple<IDocumentLine, string>>(); + string indent = null; + var oldVersion = Editor.Version; + foreach (var line in GetSelectedLines (Editor)) { + var curIndent = line.GetIndentation (Editor); + if (line.Length == curIndent.Length) { + lineAndIndents.Add (Tuple.Create ((IDocumentLine)null, "")); + continue; + } + if (indent == null || curIndent.Length < indent.Length) + indent = curIndent; + lineAndIndents.Add (Tuple.Create (line, curIndent)); + } + + foreach (var line in lineAndIndents) { + if (line.Item1 == null) + continue; + Editor.InsertText (line.Item1.Offset + indent.Length, commentTag); + } + if (wasSelected) { + Editor.SelectionAnchorOffset = oldVersion.MoveOffsetTo (Editor.Version, anchor); + Editor.SelectionLeadOffset = oldVersion.MoveOffsetTo (Editor.Version, lead); + } + } + } + + [CommandHandler (EditCommands.RemoveCodeComment)] + internal void RemoveCodeComment () + { + string commentTag; + if (!TryGetLineCommentTag (out commentTag)) + return; + + using (var undo = Editor.OpenUndoGroup ()) { + var wasSelected = Editor.IsSomethingSelected; + var lead = Editor.SelectionLeadOffset; + var anchor = Editor.SelectionAnchorOffset; + int lines = 0; + + //IDocumentLine first = null; + IDocumentLine last = null; + var oldVersion = Editor.Version; + foreach (var line in GetSelectedLines (Editor)) { + int startOffset; + if (StartsWith (Editor, line.Offset, line.Length, commentTag, out startOffset)) { + Editor.RemoveText (startOffset, commentTag.Length); + lines++; + } + + //first = line; + if (last == null) + last = line; + } + + if (wasSelected) { + // if (IdeApp.Workbench != null) + // CodeFormatterService.Format (Editor, IdeApp.Workbench.ActiveDocument, TextSegment.FromBounds (first.Offset, last.EndOffset)); + + Editor.SelectionAnchorOffset = oldVersion.MoveOffsetTo (Editor.Version, anchor); + Editor.SelectionLeadOffset = oldVersion.MoveOffsetTo (Editor.Version, lead); + } + } + } + + [CommandHandler (EditCommands.InsertGuid)] + void InsertGuid () + { + Editor.InsertAtCaret (Guid.NewGuid ().ToString ()); + } + + [CommandUpdateHandler (MessageBubbleCommands.Toggle)] + public void OnUpdateToggleErrorTextMarker (CommandInfo info) + { + var line = Editor.GetLine (Editor.CaretLine); + if (line == null) { + info.Visible = false; + return; + } + + var marker = (IMessageBubbleLineMarker)Editor.GetLineMarkers (line).FirstOrDefault (m => m is IMessageBubbleLineMarker); + info.Visible = marker != null; + } + + [CommandHandler (MessageBubbleCommands.Toggle)] + public void OnToggleErrorTextMarker () + { + var line = Editor.GetLine (Editor.CaretLine); + if (line == null) + return; + var marker = (IMessageBubbleLineMarker)Editor.GetLineMarkers (line).FirstOrDefault (m => m is IMessageBubbleLineMarker); + if (marker != null) { + marker.IsVisible = !marker.IsVisible; + } + } + #endregion + + + #region Key bindings + + [CommandHandler (TextEditorCommands.LineEnd)] + void OnLineEnd () + { + EditActions.MoveCaretToLineEnd (Editor); + } + + [CommandHandler (TextEditorCommands.LineStart)] + void OnLineStart () + { + EditActions.MoveCaretToLineStart (Editor); + } + + [CommandHandler (TextEditorCommands.DeleteLeftChar)] + void OnDeleteLeftChar () + { + EditActions.Backspace (Editor); + } + + [CommandHandler (TextEditorCommands.DeleteRightChar)] + void OnDeleteRightChar () + { + EditActions.Delete (Editor); + } + + [CommandHandler (TextEditorCommands.CharLeft)] + void OnCharLeft () + { + EditActions.MoveCaretLeft (Editor); + } + + [CommandHandler (TextEditorCommands.CharRight)] + void OnCharRight () + { + EditActions.MoveCaretRight (Editor); + } + + [CommandHandler (TextEditorCommands.LineUp)] + void OnLineUp () + { + EditActions.MoveCaretUp (Editor); + } + + [CommandHandler (TextEditorCommands.LineDown)] + void OnLineDown () + { + EditActions.MoveCaretDown (Editor); + } + + [CommandHandler (TextEditorCommands.DocumentStart)] + void OnDocumentStart () + { + EditActions.MoveCaretToDocumentStart (Editor); + } + + [CommandHandler (TextEditorCommands.DocumentEnd)] + void OnDocumentEnd () + { + EditActions.MoveCaretToDocumentEnd (Editor); + } + + [CommandHandler (TextEditorCommands.PageUp)] + void OnPageUp () + { + EditActions.PageUp (Editor); + } + + [CommandHandler (TextEditorCommands.PageDown)] + void OnPageDown () + { + EditActions.PageDown (Editor); + } + + [CommandHandler (TextEditorCommands.DeleteLine)] + void OnDeleteLine () + { + EditActions.DeleteCurrentLine (Editor); + } + + [CommandHandler (TextEditorCommands.DeleteToLineEnd)] + void OnDeleteToLineEnd () + { + EditActions.DeleteCurrentLineToEnd (Editor); + } + + [CommandHandler (TextEditorCommands.ScrollLineUp)] + void OnScrollLineUp () + { + EditActions.ScrollLineUp (Editor); + } + + [CommandHandler (TextEditorCommands.ScrollLineDown)] + void OnScrollLineDown () + { + EditActions.ScrollLineDown (Editor); + } + + [CommandHandler (TextEditorCommands.ScrollPageUp)] + void OnScrollPageUp () + { + EditActions.ScrollPageUp (Editor); + } + + [CommandHandler (TextEditorCommands.ScrollPageDown)] + void OnScrollPageDown () + { + EditActions.ScrollPageDown (Editor); + } + + [CommandHandler (TextEditorCommands.GotoMatchingBrace)] + void OnGotoMatchingBrace () + { + EditActions.GotoMatchingBrace (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveLeft)] + void OnSelectionMoveLeft () + { + EditActions.SelectionMoveLeft (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveRight)] + void OnSelectionMoveRight () + { + EditActions.SelectionMoveRight (Editor); + } + + [CommandHandler (TextEditorCommands.MovePrevWord)] + void OnMovePrevWord () + { + EditActions.MovePrevWord (Editor); + } + + [CommandHandler (TextEditorCommands.MoveNextWord)] + void OnMoveNextWord () + { + EditActions.MoveNextWord (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMovePrevWord)] + void OnSelectionMovePrevWord () + { + EditActions.SelectionMovePrevWord (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveNextWord)] + void OnSelectionMoveNextWord () + { + EditActions.SelectionMoveNextWord (Editor); + } + + [CommandHandler (TextEditorCommands.MovePrevSubword)] + void OnMovePrevSubword () + { + EditActions.MovePrevSubWord (Editor); + } + + [CommandHandler (TextEditorCommands.MoveNextSubword)] + void OnMoveNextSubword () + { + EditActions.MoveNextSubWord (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMovePrevSubword)] + void OnSelectionMovePrevSubword () + { + EditActions.SelectionMovePrevSubWord (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveNextSubword)] + void OnSelectionMoveNextSubword () + { + EditActions.SelectionMoveNextSubWord (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveUp)] + void OnSelectionMoveUp () + { + EditActions.SelectionMoveUp (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveDown)] + void OnSelectionMoveDown () + { + EditActions.SelectionMoveDown (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveHome)] + void OnSelectionMoveHome () + { + EditActions.SelectionMoveLineStart (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveEnd)] + void OnSelectionMoveEnd () + { + EditActions.SelectionMoveLineEnd (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveToDocumentStart)] + void OnSelectionMoveToDocumentStart () + { + EditActions.SelectionMoveToDocumentStart (Editor); + } + + [CommandHandler (TextEditorCommands.ExpandSelectionToLine)] + void OnExpandSelectionToLine () + { + EditActions.ExpandSelectionToLine (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionMoveToDocumentEnd)] + void OnSelectionMoveToDocumentEnd () + { + EditActions.SelectionMoveToDocumentEnd (Editor); + } + + [CommandHandler (TextEditorCommands.SwitchCaretMode)] + void OnSwitchCaretMode () + { + EditActions.SwitchCaretMode (Editor); + } + + [CommandHandler (TextEditorCommands.InsertTab)] + void OnInsertTab () + { + EditActions.InsertTab (Editor); + } + + [CommandHandler (TextEditorCommands.RemoveTab)] + void OnRemoveTab () + { + EditActions.RemoveTab (Editor); + } + + [CommandHandler (TextEditorCommands.InsertNewLine)] + void OnInsertNewLine () + { + EditActions.InsertNewLine (Editor); + } + + [CommandHandler (TextEditorCommands.InsertNewLineAtEnd)] + void OnInsertNewLineAtEnd () + { + EditActions.InsertNewLineAtEnd (Editor); + } + + [CommandHandler (TextEditorCommands.InsertNewLinePreserveCaretPosition)] + void OnInsertNewLinePreserveCaretPosition () + { + EditActions.InsertNewLinePreserveCaretPosition (Editor); + } + + [CommandHandler (TextEditorCommands.CompleteStatement)] + void OnCompleteStatement () + { + var doc = IdeApp.Workbench.ActiveDocument; + var generator = CodeGenerator.CreateGenerator (doc); + if (generator != null) { + generator.CompleteStatement (doc); + } + } + + [CommandHandler (TextEditorCommands.DeletePrevWord)] + void OnDeletePrevWord () + { + EditActions.DeletePreviousWord (Editor); + } + + [CommandHandler (TextEditorCommands.DeleteNextWord)] + void OnDeleteNextWord () + { + EditActions.DeleteNextWord (Editor); + } + + [CommandHandler (TextEditorCommands.DeletePrevSubword)] + void OnDeletePrevSubword () + { + EditActions.DeletePreviousSubword (Editor); + } + + [CommandHandler (TextEditorCommands.DeleteNextSubword)] + void OnDeleteNextSubword () + { + EditActions.DeleteNextSubword (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionPageDownAction)] + void OnSelectionPageDownAction () + { + EditActions.SelectionPageDown (Editor); + } + + [CommandHandler (TextEditorCommands.SelectionPageUpAction)] + void OnSelectionPageUpAction () + { + EditActions.SelectionPageUp (Editor); + } + + [CommandHandler (TextEditorCommands.PulseCaret)] + void OnPulseCaretCommand () + { + EditActions.StartCaretPulseAnimation (Editor); + } + + [CommandHandler (TextEditorCommands.TransposeCharacters)] + void TransposeCharacters () + { + EditActions.TransposeCharacters (Editor); + } + + [CommandHandler (TextEditorCommands.DuplicateLine)] + void DuplicateLine () + { + EditActions.DuplicateCurrentLine (Editor); + } + + [CommandHandler (TextEditorCommands.RecenterEditor)] + void RecenterEditor () + { + EditActions.RecenterEditor (Editor); + } + + [CommandHandler (EditCommands.JoinWithNextLine)] + void JoinLines () + { + EditActions.JoinLines (Editor); + } + + [CommandHandler (TextEditorCommands.MoveBlockUp)] + void OnMoveBlockUp () + { + EditActions.MoveBlockUp (Editor); + } + + [CommandHandler (TextEditorCommands.MoveBlockDown)] + void OnMoveBlockDown () + { + EditActions.MoveBlockDown (Editor); + } + + [CommandHandler (TextEditorCommands.ToggleBlockSelectionMode)] + void OnToggleBlockSelectionMode () + { + EditActions.ToggleBlockSelectionMode (Editor); + } + + [CommandHandler (EditCommands.IndentSelection)] + void IndentSelection () + { + EditActions.IndentSelection (Editor); + } + + [CommandHandler (EditCommands.UnIndentSelection)] + void UnIndentSelection () + { + EditActions.UnIndentSelection (Editor); + } + + + [CommandHandler (EditCommands.SortSelectedLines)] + void SortSelectedLines () + { + EditActions.SortSelectedLines (Editor); + } + + [CommandUpdateHandler (EditCommands.SortSelectedLines)] + void UpdateSortSelectedLines (CommandInfo ci) + { + var region = Editor.SelectionRegion; + ci.Enabled = region.BeginLine != region.EndLine; + } + #endregion + } +}
\ No newline at end of file diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/ErrorHandlerTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/ErrorHandlerTextEditorExtension.cs new file mode 100644 index 0000000000..54747fd1ca --- /dev/null +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/ErrorHandlerTextEditorExtension.cs @@ -0,0 +1,235 @@ +// +// ErrorHandlerTextEditorExtension.cs +// +// Author: +// Mike Krüger <mkrueger@xamarin.com> +// +// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Linq; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Threading; +using System.Threading.Tasks; +using Gtk; +using Microsoft.CodeAnalysis; +using MonoDevelop.Core; +using MonoDevelop.Core.Text; +using MonoDevelop.Ide.TypeSystem; + +namespace MonoDevelop.Ide.Editor.Extension +{ + class ErrorHandlerTextEditorExtension: TextEditorExtension, IQuickTaskProvider + { + CancellationTokenSource src = new CancellationTokenSource (); + bool isDisposed; + + protected override void Initialize () + { + DocumentContext.DocumentParsed += DocumentContext_DocumentParsed; + } + + public override void Dispose () + { + if (isDisposed) + return; + isDisposed = true; + + this.tasks = ImmutableArray<QuickTask>.Empty; + OnTasksUpdated (EventArgs.Empty); + + RemoveErrorUnderlines (); + RemoveErrorUndelinesResetTimerId (); + CancelDocumentParsedUpdate (); + DocumentContext.DocumentParsed -= DocumentContext_DocumentParsed; + base.Dispose (); + } + + void CancelDocumentParsedUpdate () + { + src.Cancel (); + src = new CancellationTokenSource (); + } + + void DocumentContext_DocumentParsed (object sender, EventArgs e) + { + CancelDocumentParsedUpdate (); + var token = src.Token; + var caretLocation = Editor.CaretLocation; + Task.Run (async () => { + try { + await UpdateErrorUndelines (DocumentContext, DocumentContext.ParsedDocument, token); + await UpdateQuickTasks (DocumentContext, DocumentContext.ParsedDocument, token); + } catch (OperationCanceledException) { + // ignore + } + }, token); + } + + #region Error handling + List<IErrorMarker> errors = new List<IErrorMarker> (); + uint resetTimerId; + + void RemoveErrorUndelinesResetTimerId () + { + if (resetTimerId > 0) { + GLib.Source.Remove (resetTimerId); + resetTimerId = 0; + } + } + + void RemoveErrorUnderlines () + { + errors.ForEach (err => Editor.RemoveMarker (err)); + errors.Clear (); + } + + void UnderLineError (Error info) + { + var error = TextMarkerFactory.CreateErrorMarker (Editor, info); + Editor.AddMarker (error); + errors.Add (error); + } + + static string [] lexicalError = { + "CS0594", // ERR_FloatOverflow + "CS0595", // ERR_InvalidReal + "CS1009", // ERR_IllegalEscape + "CS1010", // ERR_NewlineInConst + "CS1011", // ERR_EmptyCharConst + "CS1012", // ERR_TooManyCharsInConst + "CS1015", // ERR_TypeExpected + "CS1021", // ERR_IntOverflow + "CS1032", // ERR_PPDefFollowsTokenpp + "CS1035", // ERR_OpenEndedComment + "CS1039", // ERR_UnterminatedStringLit + "CS1040", // ERR_BadDirectivePlacementpp + "CS1056", // ERR_UnexpectedCharacter + "CS1056", // ERR_UnexpectedCharacter_EscapedBackslash + "CS1646", // ERR_ExpectedVerbatimLiteral + "CS0078", // WRN_LowercaseEllSuffix + "CS1002", // ; expected + "CS1519", // Invalid token ';' in class, struct, or interface member declaration + "CS1031", // Type expected + "CS0106", // The modifier 'readonly' is not valid for this item + "CS1576", // The line number specified for #line directive is missing or invalid + "CS1513" // } expected + }; + + async Task UpdateErrorUndelines (DocumentContext ctx, ParsedDocument parsedDocument, CancellationToken token) + { + if (!DefaultSourceEditorOptions.Instance.UnderlineErrors || parsedDocument == null || isDisposed) + return; + try { + var errors = await parsedDocument.GetErrorsAsync(token).ConfigureAwait (false); + Application.Invoke (delegate { + if (token.IsCancellationRequested || isDisposed) + return; + RemoveErrorUndelinesResetTimerId (); + const uint timeout = 500; + resetTimerId = GLib.Timeout.Add (timeout, delegate { + if (token.IsCancellationRequested) { + resetTimerId = 0; + return false; + } + RemoveErrorUnderlines (); + // Else we underline the error + if (errors != null) { + foreach (var error in errors) { + if (ctx.IsAdHocProject && !lexicalError.Contains (error.Id)) + continue; + UnderLineError (error); + } + } + resetTimerId = 0; + return false; + }); + }); + } catch (OperationCanceledException) { + // ignore + } + } + #endregion + + #region IQuickTaskProvider implementation + ImmutableArray<QuickTask> tasks = ImmutableArray<QuickTask>.Empty; + + public event EventHandler TasksUpdated; + + protected virtual void OnTasksUpdated (EventArgs e) + { + TasksUpdated?.Invoke (this, e); + } + + public ImmutableArray<QuickTask> QuickTasks { + get { + return tasks; + } + } + + async Task UpdateQuickTasks (DocumentContext ctx, ParsedDocument doc, CancellationToken token) + { + if (isDisposed) + return; + var newTasks = ImmutableArray<QuickTask>.Empty.ToBuilder (); + if (doc != null) { + foreach (var cmt in await doc.GetTagCommentsAsync(token).ConfigureAwait (false)) { + if (token.IsCancellationRequested) + return; + int offset; + try { + offset = Editor.LocationToOffset (cmt.Region.Begin.Line, cmt.Region.Begin.Column); + } catch (Exception) { + return; + } + var newTask = new QuickTask (cmt.Text, offset, DiagnosticSeverity.Info); + newTasks.Add (newTask); + } + + foreach (var error in await doc.GetErrorsAsync(token).ConfigureAwait (false)) { + if (token.IsCancellationRequested) + return; + if (ctx.IsAdHocProject && !lexicalError.Contains (error.Id)) + continue; + int offset; + try { + offset = Editor.LocationToOffset (error.Region.Begin.Line, error.Region.Begin.Column); + } catch (Exception) { + return; + } + var newTask = new QuickTask (error.Message, offset, error.ErrorType == ErrorType.Error ? DiagnosticSeverity.Error : DiagnosticSeverity.Warning); + newTasks.Add (newTask); + } + } + if (token.IsCancellationRequested) + return; + Application.Invoke (delegate { + if (token.IsCancellationRequested || isDisposed) + return; + tasks = newTasks.ToImmutable (); + OnTasksUpdated (EventArgs.Empty); + }); + } + #endregion + + } +} + diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/FoldingTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/FoldingTextEditorExtension.cs new file mode 100644 index 0000000000..c0e0804dbf --- /dev/null +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor.Extension/FoldingTextEditorExtension.cs @@ -0,0 +1,151 @@ +// +// FoldingTextEditorExtension.cs +// +// Author: +// Mike Krüger <mkrueger@xamarin.com> +// +// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +using System; +using System.Collections.Generic; +using System.Threading; +using System.Threading.Tasks; +using Gtk; +using MonoDevelop.Core; +using MonoDevelop.Core.Text; +using MonoDevelop.Ide.TypeSystem; + +namespace MonoDevelop.Ide.Editor.Extension +{ + class FoldingTextEditorExtension : TextEditorExtension + { + CancellationTokenSource src = new CancellationTokenSource (); + bool isDisposed; + + protected override void Initialize () + { + DocumentContext.DocumentParsed += DocumentContext_DocumentParsed; + } + + public override void Dispose () + { + if (isDisposed) + return; + isDisposed = true; + CancelDocumentParsedUpdate (); + DocumentContext.DocumentParsed -= DocumentContext_DocumentParsed; + base.Dispose (); + } + + void CancelDocumentParsedUpdate () + { + src.Cancel (); + src = new CancellationTokenSource (); + } + + void DocumentContext_DocumentParsed (object sender, EventArgs e) + { + CancelDocumentParsedUpdate (); + var token = src.Token; + var caretLocation = Editor.CaretLocation; + var parsedDocument = DocumentContext.ParsedDocument; + Task.Run (async () => { + try { + if (!isDisposed) + await UpdateFoldings (Editor, parsedDocument, caretLocation, false, token); + } catch (OperationCanceledException) {} + }, token); + } + + internal static async Task UpdateFoldings (TextEditor Editor, ParsedDocument parsedDocument, DocumentLocation caretLocation, bool firstTime = false, CancellationToken token = default (CancellationToken)) + { + if (parsedDocument == null || !Editor.Options.ShowFoldMargin) + return; + // don't update parsed documents that contain errors - the foldings from there may be invalid. + if (parsedDocument.HasErrors) + return; + + try { + var foldSegments = new List<IFoldSegment> (); + + foreach (FoldingRegion region in await parsedDocument.GetFoldingsAsync (token)) { + if (token.IsCancellationRequested) + return; + var type = FoldingType.Unknown; + bool setFolded = false; + bool folded = false; + //decide whether the regions should be folded by default + switch (region.Type) { + case FoldType.Member: + type = FoldingType.TypeMember; + break; + case FoldType.Type: + type = FoldingType.TypeDefinition; + break; + case FoldType.UserRegion: + type = FoldingType.Region; + setFolded = DefaultSourceEditorOptions.Instance.DefaultRegionsFolding; + folded = true; + break; + case FoldType.Comment: + type = FoldingType.Comment; + setFolded = DefaultSourceEditorOptions.Instance.DefaultCommentFolding; + folded = true; + break; + case FoldType.CommentInsideMember: + type = FoldingType.Comment; + setFolded = DefaultSourceEditorOptions.Instance.DefaultCommentFolding; + folded = false; + break; + case FoldType.Undefined: + setFolded = true; + folded = region.IsFoldedByDefault; + break; + } + var start = Editor.LocationToOffset (region.Region.Begin); + var end = Editor.LocationToOffset (region.Region.End); + var marker = Editor.CreateFoldSegment (start, end - start); + foldSegments.Add (marker); + marker.CollapsedText = region.Name; + marker.FoldingType = type; + //and, if necessary, set its fold state + if (marker != null && setFolded && firstTime) { + // only fold on document open, later added folds are NOT folded by default. + marker.IsCollapsed = folded; + continue; + } + if (marker != null && region.Region.Contains (caretLocation.Line, caretLocation.Column)) + marker.IsCollapsed = false; + } + if (firstTime) { + Editor.SetFoldings (foldSegments); + } else { + Application.Invoke (delegate { + if (!token.IsCancellationRequested) + Editor.SetFoldings (foldSegments); + }); + } + } catch (Exception ex) { + LoggingService.LogError ("Unhandled exception in ParseInformationUpdaterWorkerThread", ex); + } + } + + } +}
\ No newline at end of file diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedCompletionExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedCompletionExtension.cs index 5eb350947c..f695491b7c 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedCompletionExtension.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedCompletionExtension.cs @@ -291,12 +291,12 @@ namespace MonoDevelop.Ide.Editor.Projection return projectedExtension.GetCompletionCommandOffset (out cpos, out wlen); } - public override int GetCurrentParameterIndex (int startOffset) + public override Task<int> GetCurrentParameterIndex (int startOffset, System.Threading.CancellationToken token) { var projectedExtension = GetExtensionAt (startOffset); if (projectedExtension == null) - return -1; - return projectedExtension.GetCurrentParameterIndex (startOffset); + return Task.FromResult (-1); + return projectedExtension.GetCurrentParameterIndex (startOffset, token); } public override int GuessBestMethodOverload (ParameterHintingResult provider, int currentOverload) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedFilterCompletionTextEditorExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedFilterCompletionTextEditorExtension.cs index a164dc546e..262bfe79ac 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedFilterCompletionTextEditorExtension.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/Projection/ProjectedFilterCompletionTextEditorExtension.cs @@ -81,11 +81,11 @@ namespace MonoDevelop.Ide.Editor.Projection return completionTextEditorExtension.IsValidInContext (context); } - public override int GetCurrentParameterIndex (int startOffset) + public override Task<int> GetCurrentParameterIndex (int startOffset, System.Threading.CancellationToken token) { if (!IsActiveExtension()) - return -1; - return completionTextEditorExtension.GetCurrentParameterIndex (startOffset); + return Task.FromResult (-1); + return completionTextEditorExtension.GetCurrentParameterIndex (startOffset, token); } public override string CompletionLanguage { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs index 22756ad0be..db5f65f1dd 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditor.cs @@ -926,7 +926,7 @@ namespace MonoDevelop.Ide.Editor base.Dispose (disposing); } - protected override object CreateNativeWidget () + protected override object CreateNativeWidget<T> () { return textEditorImpl.CreateNativeControl (); } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorViewContent.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorViewContent.cs index 66c01967b0..5642fba6b9 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorViewContent.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Editor/TextEditorViewContent.cs @@ -55,7 +55,7 @@ namespace MonoDevelop.Ide.Editor /// The TextEditor object needs to be available through BaseViewContent.GetContent therefore we need to insert a /// decorator in between. /// </summary> - class TextEditorViewContent : ViewContent, ICommandRouter, IQuickTaskProvider + class TextEditorViewContent : ViewContent, ICommandRouter { readonly TextEditor textEditor; readonly ITextEditorImpl textEditorImpl; @@ -78,10 +78,7 @@ namespace MonoDevelop.Ide.Editor void HandleDocumentContextChanged (object sender, EventArgs e) { - if (currentContext != null) - currentContext.DocumentParsed -= HandleDocumentParsed; currentContext = textEditor.DocumentContext; - currentContext.DocumentParsed += HandleDocumentParsed; } void HandleDirtyChanged (object sender, EventArgs e) @@ -90,7 +87,7 @@ namespace MonoDevelop.Ide.Editor InformAutoSave (); } - void HandleTextChanged (object sender, MonoDevelop.Core.Text.TextChangeEventArgs e) + void HandleTextChanged (object sender, TextChangeEventArgs e) { InformAutoSave (); } @@ -158,186 +155,13 @@ namespace MonoDevelop.Ide.Editor textEditor.Options = DefaultSourceEditorOptions.Instance.WithTextStyle (currentPolicy); } - void HandleDocumentParsed (object sender, EventArgs e) - { - var ctx = (DocumentContext)sender; - CancelDocumentParsedUpdate (); - var token = src.Token; - var caretLocation = textEditor.CaretLocation; - Task.Run (async () => { - try { - await UpdateErrorUndelines (ctx, ctx.ParsedDocument, token); - await UpdateQuickTasks (ctx, ctx.ParsedDocument, token); - await UpdateFoldings (ctx.ParsedDocument, caretLocation, false, token); - } catch (OperationCanceledException) { - // ignore - } - }, token); - } - void CancelDocumentParsedUpdate () { src.Cancel (); src = new CancellationTokenSource (); } - #region Error handling - List<IErrorMarker> errors = new List<IErrorMarker> (); - uint resetTimerId; - - void RemoveErrorUndelinesResetTimerId () - { - if (resetTimerId > 0) { - GLib.Source.Remove (resetTimerId); - resetTimerId = 0; - } - } - - void RemoveErrorUnderlines () - { - errors.ForEach (err => textEditor.RemoveMarker (err)); - errors.Clear (); - } - - void UnderLineError (MonoDevelop.Ide.TypeSystem.Error info) - { - var error = TextMarkerFactory.CreateErrorMarker (textEditor, info); - textEditor.AddMarker (error); - errors.Add (error); - } - - static string [] lexicalError = { - "CS0594", // ERR_FloatOverflow - "CS0595", // ERR_InvalidReal - "CS1009", // ERR_IllegalEscape - "CS1010", // ERR_NewlineInConst - "CS1011", // ERR_EmptyCharConst - "CS1012", // ERR_TooManyCharsInConst - "CS1015", // ERR_TypeExpected - "CS1021", // ERR_IntOverflow - "CS1032", // ERR_PPDefFollowsTokenpp - "CS1035", // ERR_OpenEndedComment - "CS1039", // ERR_UnterminatedStringLit - "CS1040", // ERR_BadDirectivePlacementpp - "CS1056", // ERR_UnexpectedCharacter - "CS1056", // ERR_UnexpectedCharacter_EscapedBackslash - "CS1646", // ERR_ExpectedVerbatimLiteral - "CS0078", // WRN_LowercaseEllSuffix - "CS1002", // ; expected - "CS1519", // Invalid token ';' in class, struct, or interface member declaration - "CS1031", // Type expected - "CS0106", // The modifier 'readonly' is not valid for this item - "CS1576", // The line number specified for #line directive is missing or invalid - "CS1513" // } expected - }; - - async Task UpdateErrorUndelines (DocumentContext ctx, ParsedDocument parsedDocument, CancellationToken token) - { - if (!DefaultSourceEditorOptions.Instance.UnderlineErrors || parsedDocument == null || isDisposed) - return; - try { - var errors = await parsedDocument.GetErrorsAsync(token).ConfigureAwait (false); - Application.Invoke (delegate { - if (token.IsCancellationRequested || isDisposed) - return; - RemoveErrorUndelinesResetTimerId (); - const uint timeout = 500; - resetTimerId = GLib.Timeout.Add (timeout, delegate { - if (token.IsCancellationRequested) { - resetTimerId = 0; - return false; - } - RemoveErrorUnderlines (); - // Else we underline the error - if (errors != null) { - foreach (var error in errors) { - if (ctx.IsAdHocProject && !lexicalError.Contains (error.Id)) - continue; - UnderLineError (error); - } - } - resetTimerId = 0; - return false; - }); - }); - } catch (OperationCanceledException) { - // ignore - } - } - #endregion CancellationTokenSource src = new CancellationTokenSource (); - async Task UpdateFoldings (ParsedDocument parsedDocument, DocumentLocation caretLocation, bool firstTime = false, CancellationToken token = default (CancellationToken)) - { - if (parsedDocument == null || !textEditor.Options.ShowFoldMargin || isDisposed) - return; - // don't update parsed documents that contain errors - the foldings from there may be invalid. - if (parsedDocument.HasErrors) - return; - - try { - var foldSegments = new List<IFoldSegment> (); - - foreach (FoldingRegion region in await parsedDocument.GetFoldingsAsync(token)) { - if (token.IsCancellationRequested) - return; - var type = FoldingType.Unknown; - bool setFolded = false; - bool folded = false; - //decide whether the regions should be folded by default - switch (region.Type) { - case FoldType.Member: - type = FoldingType.TypeMember; - break; - case FoldType.Type: - type = FoldingType.TypeDefinition; - break; - case FoldType.UserRegion: - type = FoldingType.Region; - setFolded = DefaultSourceEditorOptions.Instance.DefaultRegionsFolding; - folded = true; - break; - case FoldType.Comment: - type = FoldingType.Comment; - setFolded = DefaultSourceEditorOptions.Instance.DefaultCommentFolding; - folded = true; - break; - case FoldType.CommentInsideMember: - type = FoldingType.Comment; - setFolded = DefaultSourceEditorOptions.Instance.DefaultCommentFolding; - folded = false; - break; - case FoldType.Undefined: - setFolded = true; - folded = region.IsFoldedByDefault; - break; - } - var start = textEditor.LocationToOffset (region.Region.Begin); - var end = textEditor.LocationToOffset (region.Region.End); - var marker = textEditor.CreateFoldSegment (start, end - start); - foldSegments.Add (marker); - marker.CollapsedText = region.Name; - marker.FoldingType = type; - //and, if necessary, set its fold state - if (marker != null && setFolded && firstTime) { - // only fold on document open, later added folds are NOT folded by default. - marker.IsCollapsed = folded; - continue; - } - if (marker != null && region.Region.Contains (caretLocation.Line, caretLocation.Column)) - marker.IsCollapsed = false; - } - if (firstTime) { - textEditor.SetFoldings (foldSegments); - } else { - Application.Invoke (delegate { - if (!token.IsCancellationRequested) - textEditor.SetFoldings (foldSegments); - }); - } - } catch (Exception ex) { - LoggingService.LogError ("Unhandled exception in ParseInformationUpdaterWorkerThread", ex); - } - } async Task RunFirstTimeFoldUpdate (string text) { @@ -352,7 +176,7 @@ namespace MonoDevelop.Ide.Editor var normalParser = TypeSystemService.GetParser (textEditor.MimeType); if (normalParser != null) { parsedDocument = await normalParser.Parse( - new MonoDevelop.Ide.TypeSystem.ParseOptions { + new TypeSystem.ParseOptions { FileName = textEditor.FileName, Content = new StringTextSource(text), Project = Project @@ -360,7 +184,7 @@ namespace MonoDevelop.Ide.Editor } } if (parsedDocument != null) { - await UpdateFoldings (parsedDocument, textEditor.CaretLocation, true); + await FoldingTextEditorExtension.UpdateFoldings (textEditor, parsedDocument, textEditor.CaretLocation, true); } } @@ -492,11 +316,9 @@ namespace MonoDevelop.Ide.Editor textEditor.TextChanged -= HandleTextChanged; textEditor.DocumentContextChanged -= HandleDocumentContextChanged; - currentContext.DocumentParsed -= HandleDocumentParsed; DefaultSourceEditorOptions.Instance.Changed -= UpdateTextEditorOptions; RemovePolicyChangeHandler (); RemoveAutoSaveTimer (); - RemoveErrorUndelinesResetTimerId (); } #endregion @@ -510,681 +332,7 @@ namespace MonoDevelop.Ide.Editor #endregion - #region Commands - void ToggleCodeCommentWithBlockComments () - { - var blockStarts = TextEditorFactory.GetSyntaxProperties (textEditor.MimeType, "BlockCommentStart"); - var blockEnds = TextEditorFactory.GetSyntaxProperties (textEditor.MimeType, "BlockCommentEnd"); - if (blockStarts == null || blockEnds == null || blockStarts.Length == 0 || blockEnds.Length == 0) - return; - - string blockStart = blockStarts[0]; - string blockEnd = blockEnds[0]; - - using (var undo = textEditor.OpenUndoGroup ()) { - IDocumentLine startLine; - IDocumentLine endLine; - if (textEditor.IsSomethingSelected) { - startLine = textEditor.GetLineByOffset (textEditor.SelectionRange.Offset); - endLine = textEditor.GetLineByOffset (textEditor.SelectionRange.EndOffset); - - // If selection ends at begining of line... This is visible as previous line - // is selected, hence we want to select previous line Bug 26287 - if (endLine.Offset == textEditor.SelectionRange.EndOffset) - endLine = endLine.PreviousLine; - } else { - startLine = endLine = textEditor.GetLine (textEditor.CaretLine); - } - string startLineText = textEditor.GetTextAt (startLine.Offset, startLine.Length); - string endLineText = textEditor.GetTextAt (endLine.Offset, endLine.Length); - if (startLineText.StartsWith (blockStart, StringComparison.Ordinal) && endLineText.EndsWith (blockEnd, StringComparison.Ordinal)) { - textEditor.RemoveText (endLine.Offset + endLine.Length - blockEnd.Length, blockEnd.Length); - textEditor.RemoveText (startLine.Offset, blockStart.Length); - if (textEditor.IsSomethingSelected) { - textEditor.SelectionAnchorOffset -= blockEnd.Length; - } - } else { - textEditor.InsertText (endLine.Offset + endLine.Length, blockEnd); - textEditor.InsertText (startLine.Offset, blockStart); - if (textEditor.IsSomethingSelected) { - textEditor.SelectionAnchorOffset += blockEnd.Length; - } - } - } - } - - bool TryGetLineCommentTag (out string commentTag) - { - var lineComments = TextEditorFactory.GetSyntaxProperties (textEditor.MimeType, "LineComment"); - if (lineComments == null || lineComments.Length == 0) { - commentTag = null; - return false; - } - commentTag = lineComments [0]; - return true; - } - - [CommandUpdateHandler (EditCommands.AddCodeComment)] - [CommandUpdateHandler (EditCommands.RemoveCodeComment)] - [CommandUpdateHandler (EditCommands.ToggleCodeComment)] - void OnUpdateToggleComment (CommandInfo info) - { - var lineComments = TextEditorFactory.GetSyntaxProperties (textEditor.MimeType, "LineComment"); - if (lineComments != null && lineComments.Length > 0) { - info.Visible = true; - return; - } - var blockStarts = TextEditorFactory.GetSyntaxProperties (textEditor.MimeType, "BlockCommentStart"); - var blockEnds = TextEditorFactory.GetSyntaxProperties (textEditor.MimeType, "BlockCommentEnd"); - info.Visible = blockStarts != null && blockStarts.Length > 0 && blockEnds != null && blockEnds.Length > 0; - } - - [CommandHandler (EditCommands.ToggleCodeComment)] - internal void ToggleCodeComment () - { - string commentTag; - if (!TryGetLineCommentTag (out commentTag)) - return; - bool comment = false; - foreach (var line in GetSelectedLines (textEditor)) { - int startOffset; - int offset = line.Offset; - if (!StartsWith (textEditor, offset, line.Length, commentTag, out startOffset)) { - if (startOffset - offset == line.Length) // case: line consists only of white spaces - continue; - comment = true; - break; - } - } - - if (comment) { - AddCodeComment (); - } else { - RemoveCodeComment (); - } - } - - static bool StartsWith (ITextSource text, int offset, int length, string commentTag, out int startOffset) - { - int max = Math.Min (offset + length, text.Length); - int i = offset; - for (; i < max; i++) { - char ch = text.GetCharAt (i); - if (ch != ' ' && ch != '\t') - break; - } - startOffset = i; - for (int j = 0; j < commentTag.Length && i < text.Length; j++) { - if (text.GetCharAt (i) != commentTag [j]) - return false; - i++; - } - - return true; - } - - static IEnumerable<IDocumentLine> GetSelectedLines (TextEditor textEditor) - { - if (!textEditor.IsSomethingSelected) { - yield return textEditor.GetLine (textEditor.CaretLine); - yield break; - } - var selection = textEditor.SelectionRegion; - var line = textEditor.GetLine(selection.EndLine); - if (selection.EndColumn == 1 && textEditor.SelectionLeadOffset < textEditor.SelectionAnchorOffset) - line = line.PreviousLine; - - while (line != null && line.LineNumber >= selection.BeginLine) { - yield return line; - line = line.PreviousLine; - } - } - - [CommandHandler (EditCommands.AddCodeComment)] - internal void AddCodeComment () - { - string commentTag; - if (!TryGetLineCommentTag (out commentTag)) - return; - - using (var undo = textEditor.OpenUndoGroup ()) { - var wasSelected = textEditor.IsSomethingSelected; - var lead = textEditor.SelectionLeadOffset; - var anchor = textEditor.SelectionAnchorOffset; - var lineAndIndents = new List<Tuple<IDocumentLine, string>>(); - string indent = null; - var oldVersion = textEditor.Version; - foreach (var line in GetSelectedLines (textEditor)) { - var curIndent = line.GetIndentation (textEditor); - if (line.Length == curIndent.Length) { - lineAndIndents.Add (Tuple.Create ((IDocumentLine)null, "")); - continue; - } - if (indent == null || curIndent.Length < indent.Length) - indent = curIndent; - lineAndIndents.Add (Tuple.Create (line, curIndent)); - } - - foreach (var line in lineAndIndents) { - if (line.Item1 == null) - continue; - textEditor.InsertText (line.Item1.Offset + indent.Length, commentTag); - } - if (wasSelected) { - textEditor.SelectionAnchorOffset = oldVersion.MoveOffsetTo (textEditor.Version, anchor); - textEditor.SelectionLeadOffset = oldVersion.MoveOffsetTo (textEditor.Version, lead); - } - } - } - - [CommandHandler (EditCommands.RemoveCodeComment)] - internal void RemoveCodeComment () - { - string commentTag; - if (!TryGetLineCommentTag (out commentTag)) - return; - - using (var undo = textEditor.OpenUndoGroup ()) { - var wasSelected = textEditor.IsSomethingSelected; - var lead = textEditor.SelectionLeadOffset; - var anchor = textEditor.SelectionAnchorOffset; - int lines = 0; - - //IDocumentLine first = null; - IDocumentLine last = null; - var oldVersion = textEditor.Version; - foreach (var line in GetSelectedLines (textEditor)) { - int startOffset; - if (StartsWith (textEditor, line.Offset, line.Length, commentTag, out startOffset)) { - textEditor.RemoveText (startOffset, commentTag.Length); - lines++; - } - - //first = line; - if (last == null) - last = line; - } - - if (wasSelected) { -// if (IdeApp.Workbench != null) -// CodeFormatterService.Format (textEditor, IdeApp.Workbench.ActiveDocument, TextSegment.FromBounds (first.Offset, last.EndOffset)); - - textEditor.SelectionAnchorOffset = oldVersion.MoveOffsetTo (textEditor.Version, anchor); - textEditor.SelectionLeadOffset = oldVersion.MoveOffsetTo (textEditor.Version, lead); - } - } - } - - [CommandHandler (EditCommands.InsertGuid)] - void InsertGuid () - { - textEditor.InsertAtCaret (Guid.NewGuid ().ToString ()); - } - - [CommandUpdateHandler (MessageBubbleCommands.Toggle)] - public void OnUpdateToggleErrorTextMarker (CommandInfo info) - { - var line = textEditor.GetLine (textEditor.CaretLine); - if (line == null) { - info.Visible = false; - return; - } - - var marker = (IMessageBubbleLineMarker)textEditor.GetLineMarkers (line).FirstOrDefault (m => m is IMessageBubbleLineMarker); - info.Visible = marker != null; - } - - [CommandHandler (MessageBubbleCommands.Toggle)] - public void OnToggleErrorTextMarker () - { - var line = textEditor.GetLine (textEditor.CaretLine); - if (line == null) - return; - var marker = (IMessageBubbleLineMarker)textEditor.GetLineMarkers (line).FirstOrDefault (m => m is IMessageBubbleLineMarker); - if (marker != null) { - marker.IsVisible = !marker.IsVisible; - } - } - #endregion - - #region IQuickTaskProvider implementation - ImmutableArray<QuickTask> tasks = ImmutableArray<QuickTask>.Empty; - - public event EventHandler TasksUpdated; - - protected virtual void OnTasksUpdated (EventArgs e) - { - EventHandler handler = this.TasksUpdated; - if (handler != null) - handler (this, e); - } - - public ImmutableArray<QuickTask> QuickTasks { - get { - return tasks; - } - } - - async Task UpdateQuickTasks (DocumentContext ctx, ParsedDocument doc, CancellationToken token) - { - if (isDisposed) - return; - var newTasks = ImmutableArray<QuickTask>.Empty.ToBuilder (); - if (doc != null) { - foreach (var cmt in await doc.GetTagCommentsAsync(token).ConfigureAwait (false)) { - if (token.IsCancellationRequested) - return; - int offset; - try { - offset = textEditor.LocationToOffset (cmt.Region.Begin.Line, cmt.Region.Begin.Column); - } catch (Exception) { - return; - } - var newTask = new QuickTask (cmt.Text, offset, DiagnosticSeverity.Info); - newTasks.Add (newTask); - } - - foreach (var error in await doc.GetErrorsAsync(token).ConfigureAwait (false)) { - if (token.IsCancellationRequested) - return; - if (ctx.IsAdHocProject && !lexicalError.Contains (error.Id)) - continue; - int offset; - try { - offset = textEditor.LocationToOffset (error.Region.Begin.Line, error.Region.Begin.Column); - } catch (Exception) { - return; - } - var newTask = new QuickTask (error.Message, offset, error.ErrorType == MonoDevelop.Ide.TypeSystem.ErrorType.Error ? DiagnosticSeverity.Error : DiagnosticSeverity.Warning); - newTasks.Add (newTask); - } - } - if (token.IsCancellationRequested) - return; - Application.Invoke (delegate { - if (token.IsCancellationRequested || isDisposed) - return; - tasks = newTasks.ToImmutable (); - OnTasksUpdated (EventArgs.Empty); - }); - } - #endregion - - #region Key bindings - - [CommandHandler (TextEditorCommands.LineEnd)] - void OnLineEnd () - { - EditActions.MoveCaretToLineEnd (textEditor); - } - - [CommandHandler (TextEditorCommands.LineStart)] - void OnLineStart () - { - EditActions.MoveCaretToLineStart (textEditor); - } - - [CommandHandler (TextEditorCommands.DeleteLeftChar)] - void OnDeleteLeftChar () - { - EditActions.Backspace (textEditor); - } - - [CommandHandler (TextEditorCommands.DeleteRightChar)] - void OnDeleteRightChar () - { - EditActions.Delete (textEditor); - } - - [CommandHandler (TextEditorCommands.CharLeft)] - void OnCharLeft () - { - EditActions.MoveCaretLeft (textEditor); - } - - [CommandHandler (TextEditorCommands.CharRight)] - void OnCharRight () - { - EditActions.MoveCaretRight (textEditor); - } - - [CommandHandler (TextEditorCommands.LineUp)] - void OnLineUp () - { - EditActions.MoveCaretUp (textEditor); - } - - [CommandHandler (TextEditorCommands.LineDown)] - void OnLineDown () - { - EditActions.MoveCaretDown (textEditor); - } - - [CommandHandler (TextEditorCommands.DocumentStart)] - void OnDocumentStart () - { - EditActions.MoveCaretToDocumentStart (textEditor); - } - - [CommandHandler (TextEditorCommands.DocumentEnd)] - void OnDocumentEnd () - { - EditActions.MoveCaretToDocumentEnd (textEditor); - } - - [CommandHandler (TextEditorCommands.PageUp)] - void OnPageUp () - { - EditActions.PageUp (textEditor); - } - - [CommandHandler (TextEditorCommands.PageDown)] - void OnPageDown () - { - EditActions.PageDown (textEditor); - } - - [CommandHandler (TextEditorCommands.DeleteLine)] - void OnDeleteLine () - { - EditActions.DeleteCurrentLine (textEditor); - } - - [CommandHandler (TextEditorCommands.DeleteToLineEnd)] - void OnDeleteToLineEnd () - { - EditActions.DeleteCurrentLineToEnd (textEditor); - } - - [CommandHandler (TextEditorCommands.ScrollLineUp)] - void OnScrollLineUp () - { - EditActions.ScrollLineUp (textEditor); - } - - [CommandHandler (TextEditorCommands.ScrollLineDown)] - void OnScrollLineDown () - { - EditActions.ScrollLineDown (textEditor); - } - - [CommandHandler (TextEditorCommands.ScrollPageUp)] - void OnScrollPageUp () - { - EditActions.ScrollPageUp (textEditor); - } - - [CommandHandler (TextEditorCommands.ScrollPageDown)] - void OnScrollPageDown () - { - EditActions.ScrollPageDown (textEditor); - } - - [CommandHandler (TextEditorCommands.GotoMatchingBrace)] - void OnGotoMatchingBrace () - { - EditActions.GotoMatchingBrace (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveLeft)] - void OnSelectionMoveLeft () - { - EditActions.SelectionMoveLeft (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveRight)] - void OnSelectionMoveRight () - { - EditActions.SelectionMoveRight (textEditor); - } - - [CommandHandler (TextEditorCommands.MovePrevWord)] - void OnMovePrevWord () - { - EditActions.MovePrevWord (textEditor); - } - - [CommandHandler (TextEditorCommands.MoveNextWord)] - void OnMoveNextWord () - { - EditActions.MoveNextWord (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMovePrevWord)] - void OnSelectionMovePrevWord () - { - EditActions.SelectionMovePrevWord (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveNextWord)] - void OnSelectionMoveNextWord () - { - EditActions.SelectionMoveNextWord (textEditor); - } - - [CommandHandler (TextEditorCommands.MovePrevSubword)] - void OnMovePrevSubword () - { - EditActions.MovePrevSubWord (textEditor); - } - - [CommandHandler (TextEditorCommands.MoveNextSubword)] - void OnMoveNextSubword () - { - EditActions.MoveNextSubWord (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMovePrevSubword)] - void OnSelectionMovePrevSubword () - { - EditActions.SelectionMovePrevSubWord (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveNextSubword)] - void OnSelectionMoveNextSubword () - { - EditActions.SelectionMoveNextSubWord (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveUp)] - void OnSelectionMoveUp () - { - EditActions.SelectionMoveUp (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveDown)] - void OnSelectionMoveDown () - { - EditActions.SelectionMoveDown (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveHome)] - void OnSelectionMoveHome () - { - EditActions.SelectionMoveLineStart (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveEnd)] - void OnSelectionMoveEnd () - { - EditActions.SelectionMoveLineEnd (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveToDocumentStart)] - void OnSelectionMoveToDocumentStart () - { - EditActions.SelectionMoveToDocumentStart (textEditor); - } - - [CommandHandler (TextEditorCommands.ExpandSelectionToLine)] - void OnExpandSelectionToLine () - { - EditActions.ExpandSelectionToLine (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionMoveToDocumentEnd)] - void OnSelectionMoveToDocumentEnd () - { - EditActions.SelectionMoveToDocumentEnd (textEditor); - } - - [CommandHandler (TextEditorCommands.SwitchCaretMode)] - void OnSwitchCaretMode () - { - EditActions.SwitchCaretMode (textEditor); - } - - [CommandHandler (TextEditorCommands.InsertTab)] - void OnInsertTab () - { - EditActions.InsertTab (textEditor); - } - - [CommandHandler (TextEditorCommands.RemoveTab)] - void OnRemoveTab () - { - EditActions.RemoveTab (textEditor); - } - - [CommandHandler (TextEditorCommands.InsertNewLine)] - void OnInsertNewLine () - { - EditActions.InsertNewLine (textEditor); - } - - [CommandHandler (TextEditorCommands.InsertNewLineAtEnd)] - void OnInsertNewLineAtEnd () - { - EditActions.InsertNewLineAtEnd (textEditor); - } - - [CommandHandler (TextEditorCommands.InsertNewLinePreserveCaretPosition)] - void OnInsertNewLinePreserveCaretPosition () - { - EditActions.InsertNewLinePreserveCaretPosition (textEditor); - } - - [CommandHandler (TextEditorCommands.CompleteStatement)] - void OnCompleteStatement () - { - var doc = IdeApp.Workbench.ActiveDocument; - var generator = CodeGenerator.CreateGenerator (doc); - if (generator != null) { - generator.CompleteStatement (doc); - } - } - - [CommandHandler (TextEditorCommands.DeletePrevWord)] - void OnDeletePrevWord () - { - EditActions.DeletePreviousWord (textEditor); - } - - [CommandHandler (TextEditorCommands.DeleteNextWord)] - void OnDeleteNextWord () - { - EditActions.DeleteNextWord (textEditor); - } - - [CommandHandler (TextEditorCommands.DeletePrevSubword)] - void OnDeletePrevSubword () - { - EditActions.DeletePreviousSubword (textEditor); - } - - [CommandHandler (TextEditorCommands.DeleteNextSubword)] - void OnDeleteNextSubword () - { - EditActions.DeleteNextSubword (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionPageDownAction)] - void OnSelectionPageDownAction () - { - EditActions.SelectionPageDown (textEditor); - } - - [CommandHandler (TextEditorCommands.SelectionPageUpAction)] - void OnSelectionPageUpAction () - { - EditActions.SelectionPageUp (textEditor); - } - - [CommandHandler (TextEditorCommands.PulseCaret)] - void OnPulseCaretCommand () - { - EditActions.StartCaretPulseAnimation (textEditor); - } - - [CommandHandler (TextEditorCommands.TransposeCharacters)] - void TransposeCharacters () - { - EditActions.TransposeCharacters (textEditor); - } - - [CommandHandler (TextEditorCommands.DuplicateLine)] - void DuplicateLine () - { - EditActions.DuplicateCurrentLine (textEditor); - } - - [CommandHandler (TextEditorCommands.RecenterEditor)] - void RecenterEditor () - { - EditActions.RecenterEditor (textEditor); - } - - [CommandHandler (EditCommands.JoinWithNextLine)] - void JoinLines () - { - EditActions.JoinLines (textEditor); - } - - [CommandHandler (TextEditorCommands.MoveBlockUp)] - void OnMoveBlockUp () - { - EditActions.MoveBlockUp (textEditor); - } - - [CommandHandler (TextEditorCommands.MoveBlockDown)] - void OnMoveBlockDown () - { - EditActions.MoveBlockDown (textEditor); - } - - [CommandHandler (TextEditorCommands.ToggleBlockSelectionMode)] - void OnToggleBlockSelectionMode () - { - EditActions.ToggleBlockSelectionMode (textEditor); - } - - [CommandHandler (EditCommands.IndentSelection)] - void IndentSelection () - { - EditActions.IndentSelection (textEditor); - } - - [CommandHandler (EditCommands.UnIndentSelection)] - void UnIndentSelection () - { - EditActions.UnIndentSelection (textEditor); - } - - - [CommandHandler (EditCommands.SortSelectedLines)] - void SortSelectedLines () - { - EditActions.SortSelectedLines (textEditor); - } - - [CommandUpdateHandler (EditCommands.SortSelectedLines)] - void UpdateSortSelectedLines (CommandInfo ci) - { - var region = textEditor.SelectionRegion; - ci.Enabled = region.BeginLine != region.EndLine; - } - #endregion } }
\ No newline at end of file diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FileProvider.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FileProvider.cs index c67934a5d8..3a070068e5 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FileProvider.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.FindInFiles/FileProvider.cs @@ -32,6 +32,7 @@ using System.Text; using MonoDevelop.Core; using System; using MonoDevelop.Core.Text; +using System.Threading.Tasks; namespace MonoDevelop.Ide.FindInFiles { @@ -92,7 +93,12 @@ namespace MonoDevelop.Ide.FindInFiles if (buffer != null) { result = buffer.ToString (); } else { - var doc = SearchDocument (); + Document doc = null; + + var task = SearchDocument (); + if (task.Wait (1000)) + doc = task.Result; + if (doc != null && doc.Editor != null) { result = doc.Editor.Text; } else { @@ -113,9 +119,11 @@ namespace MonoDevelop.Ide.FindInFiles return result; } - Document SearchDocument () + async Task<Document> SearchDocument () { - return IdeApp.Workbench.Documents.FirstOrDefault(d => !string.IsNullOrEmpty (d.FileName) && Path.GetFullPath (d.FileName) == Path.GetFullPath (FileName)); + Document result = null; + await Runtime.RunInMainThread (() => result = IdeApp.Workbench.Documents.FirstOrDefault(d => !string.IsNullOrEmpty (d.FileName) && Path.GetFullPath (d.FileName) == Path.GetFullPath (FileName))); + return result; } Document document; @@ -125,11 +133,11 @@ namespace MonoDevelop.Ide.FindInFiles bool hadBom; Encoding encoding; - public void BeginReplace (string content) + public async void BeginReplace (string content) { somethingReplaced = false; buffer = new StringBuilder (content); - document = SearchDocument (); + document = await SearchDocument (); if (document != null) { Gtk.Application.Invoke (delegate { undoGroup = document.Editor.OpenUndoGroup (); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs index 8336c1a1b4..7446c0e012 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/ExtensibleTreeView.cs @@ -166,7 +166,7 @@ namespace MonoDevelop.Ide.Gui.Components } } - protected override object CreateNativeWidget () + protected override object CreateNativeWidget<T> () { return widget; } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs index 5933d9856c..1f267996a8 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Components/LogView.cs @@ -123,17 +123,23 @@ namespace MonoDevelop.Ide.Gui.Components [CommandHandler (EditCommands.Cut)] void CutText () { - if (Buffer.HasSelection) { + if (!Buffer.HasSelection) + return; + if (Editable) { var clipboard = Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false)); Buffer.CutClipboard (clipboard, false); + } else { + CopyText (); } } [CommandHandler (EditCommands.Paste)] void PasteText () { - var clipboard = Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false)); - Buffer.PasteClipboard (clipboard); + if (Editable) { + var clipboard = Clipboard.Get (Gdk.Atom.Intern ("CLIPBOARD", false)); + Buffer.PasteClipboard (clipboard); + } } static readonly Regex lineRegex = new Regex ("\\b.*\\s(?<file>(\\w:)?[/\\\\].*):(\\w+\\s)?(?<line>\\d+)\\.?\\s*$", RegexOptions.Compiled); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs index 84125c5e78..62fc2913f1 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Dialogs/MultiConfigItemOptionsPanel.cs @@ -32,6 +32,8 @@ using MonoDevelop.Components; using MonoDevelop.Core; using MonoDevelop.Ide.Gui.Dialogs; using MonoDevelop.Projects; +using MonoDevelop.Components.AutoTest; +using System.ComponentModel; namespace MonoDevelop.Ide.Gui.Dialogs { @@ -100,17 +102,20 @@ namespace MonoDevelop.Ide.Gui.Dialogs Control IOptionsPanel.CreatePanelWidget () { Gtk.VBox cbox = new Gtk.VBox (false, 6); - Gtk.HBox combosBox = new Gtk.HBox (false, 6); + Gtk.HBox combosBox = new Gtk.HBox (false, 6) { Name = "panelWidgetCombosBox" }; cbox.PackStart (combosBox, false, false, 0); combosBox.PackStart (new Gtk.Label (GettextCatalog.GetString ("Configuration:")), false, false, 0); configListStore = new Gtk.ListStore (typeof(string), typeof(string)); - configCombo = new Gtk.ComboBox (configListStore); + configCombo = new Gtk.ComboBox (configListStore) { Name = "panelWidgetConfigurationCombo" }; + SemanticModelAttribute modelAttr = new SemanticModelAttribute ("configListStore__DisplayName", "configListStore__ConfigName"); + TypeDescriptor.AddAttributes (configListStore, modelAttr); var cell = new Gtk.CellRendererText (); configCombo.PackStart (cell, true); configCombo.AddAttribute (cell, "text", 0); combosBox.PackStart (configCombo, false, false, 0); combosBox.PackStart (new Gtk.Label (GettextCatalog.GetString ("Platform:")), false, false, 0); platformCombo = Gtk.ComboBox.NewText (); + platformCombo.Name = "panelWidgetPlatformCombo"; combosBox.PackStart (platformCombo, false, false, 0); cbox.PackStart (new Gtk.HSeparator (), false, false, 0); cbox.ShowAll (); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/BaseViewContent.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/BaseViewContent.cs index 893bf654f2..a879a3d30c 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/BaseViewContent.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/BaseViewContent.cs @@ -33,7 +33,6 @@ using MonoDevelop.Components; using MonoDevelop.Core; using System.Collections.Immutable; using MonoDevelop.Projects; -using MonoDevelop.Components; namespace MonoDevelop.Ide.Gui { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs index c8d5a72005..d60d1b1516 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Document.cs @@ -370,6 +370,10 @@ namespace MonoDevelop.Ide.Gui // Or at least one that updates "soon". TypeSystemService.TrackFileChanges = false; try { + // Freeze the file change events. There can be several such events, and sending them all together + // is more efficient + FileService.FreezeEvents (); + if (Window.ViewContent.IsViewOnly || !Window.ViewContent.IsDirty) return; @@ -396,13 +400,17 @@ namespace MonoDevelop.Ide.Gui // save backup first if (IdeApp.Preferences.CreateFileBackupCopies) {
await Window.ViewContent.Save (fileName + "~");
- FileService.NotifyFileChanged (fileName); + FileService.NotifyFileChanged (fileName + "~"); }
await Window.ViewContent.Save (fileName);
+ FileService.NotifyFileChanged (fileName); OnSaved(EventArgs.Empty); } } } finally { + // Send all file change notifications + FileService.ThawEvents (); + // Set the file time of the current document after the file time of the written file, to prevent double file updates. // Note that the parsed document may be overwritten by a background thread to a more recent one. var doc = parsedDocument; @@ -732,7 +740,7 @@ namespace MonoDevelop.Ide.Gui { try { await EnsureAnalysisDocumentIsOpen (); - string currentParseFile = FileName; + string currentParseFile = GetCurrentParseFileName(); var editor = Editor; if (editor == null || string.IsNullOrEmpty (currentParseFile)) return null; @@ -866,7 +874,7 @@ namespace MonoDevelop.Ide.Gui internal void StartReparseThread () { - string currentParseFile = adhocProject != null ? adHocFile : FileName; + string currentParseFile = GetCurrentParseFileName (); if (string.IsNullOrEmpty (currentParseFile)) return; CancelParseTimeout (); @@ -878,6 +886,12 @@ namespace MonoDevelop.Ide.Gui }); } + string GetCurrentParseFileName () + { + string result = adhocProject != null ? adHocFile : Editor.FileName; + return result ?? FileName; + } + async void StartReparseThreadDelayed (FilePath currentParseFile) { var editor = Editor; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DocumentToolbar.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DocumentToolbar.cs index 3734516f80..ca4a8d9350 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DocumentToolbar.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/DocumentToolbar.cs @@ -206,7 +206,7 @@ namespace MonoDevelop.Ide.Gui Image.Show (); } - protected override object CreateNativeWidget () + protected override object CreateNativeWidget<T> () { return button; } @@ -219,6 +219,30 @@ namespace MonoDevelop.Ide.Gui button.Clicked -= value; } } + + public class DocumentToolButtonImage : Control + { + ImageView image; + internal DocumentToolButtonImage (ImageView image) + { + this.image = image; + } + + protected override object CreateNativeWidget<T> () + { + return image; + } + + public static implicit operator Gtk.Widget (DocumentToolButtonImage d) + { + return d.GetNativeWidget<Gtk.Widget> (); + } + + public static implicit operator DocumentToolButtonImage (ImageView d) + { + return new DocumentToolButtonImage (d); + } + } } } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SyncContext.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SyncContext.cs index a7a0ec0838..8db95e7b96 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SyncContext.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/SyncContext.cs @@ -41,11 +41,6 @@ namespace MonoDevelop.Ide.Gui [ThreadStatic] static SyncContext context; - static Hashtable delegateFactories = new Hashtable (); - static ModuleBuilder module; - static AssemblyBuilder asmBuilder; - static int typeCounter; - public static void SetContext (SyncContext ctx) { context = ctx; @@ -66,4 +61,6 @@ namespace MonoDevelop.Ide.Gui cb.BeginInvoke (ob, null, null); } } + + public delegate void StatefulMessageHandler (object state); } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs index 6f9a322262..97d389b364 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui/Workbench.cs @@ -54,6 +54,7 @@ using System.Text; using MonoDevelop.Ide.Editor; using MonoDevelop.Components; using System.Threading.Tasks; +using System.Collections.Immutable; namespace MonoDevelop.Ide.Gui { @@ -63,7 +64,7 @@ namespace MonoDevelop.Ide.Gui public sealed class Workbench { readonly ProgressMonitorManager monitors = new ProgressMonitorManager (); - readonly List<Document> documents = new List<Document> (); + ImmutableList<Document> documents = ImmutableList<Document>.Empty; DefaultWorkbench workbench; PadCollection pads; @@ -144,8 +145,8 @@ namespace MonoDevelop.Ide.Gui return workbench.Close(); } - public ReadOnlyCollection<Document> Documents { - get { return documents.AsReadOnly (); } + public ImmutableList<Document> Documents { + get { return documents; } } public Document ActiveDocument { @@ -775,7 +776,7 @@ namespace MonoDevelop.Ide.Gui doc = new Document (window); window.Closing += OnWindowClosing; window.Closed += OnWindowClosed; - documents.Add (doc); + documents = documents.Add (doc); doc.OnDocumentAttached (); OnDocumentOpened (new DocumentEventArgs (doc)); @@ -832,7 +833,7 @@ namespace MonoDevelop.Ide.Gui var doc = FindDocument (window); window.Closing -= OnWindowClosing; window.Closed -= OnWindowClosed; - documents.Remove (doc); + documents = documents.Remove (doc); OnDocumentClosed (doc); doc.DisposeDocument (); } @@ -1161,8 +1162,7 @@ namespace MonoDevelop.Ide.Gui workbench.InternalViewContentCollection.Insert (newPlacement, content); Document doc = documents [oldPlacement]; - documents.RemoveAt (oldPlacement); - documents.Insert (newPlacement, doc); + documents = documents.RemoveAt (oldPlacement).Insert (newPlacement, doc); } internal void LockActiveWindowChangeEvent () @@ -1189,6 +1189,8 @@ namespace MonoDevelop.Ide.Gui ThreadPool.QueueUserWorkItem (delegate { // t = DateTime.Now; lock (fileStatusLock) { + if (fileStatus == null) + return; foreach (FilePath file in files) { try { DateTime ft = File.GetLastWriteTimeUtc (file); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs index 375c376abc..a87031db12 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/AssemblyReferencePanel.cs @@ -198,6 +198,11 @@ namespace MonoDevelop.Ide.Projects this.project = configureProject; assemblies.Clear (); + if (configureProject == null) { + Reset (); + return; + } + nugetDir = configureProject.ParentSolution.ItemDirectory.Combine ("packages"); foreach (var asm in selectDialog.GetRecentFileReferences (project.ParentSolution.FileName)) { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/FinalProjectConfigurationPage.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/FinalProjectConfigurationPage.cs index a535151d68..456006faa0 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/FinalProjectConfigurationPage.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/FinalProjectConfigurationPage.cs @@ -25,6 +25,7 @@ // THE SOFTWARE.
using System;
+using MonoDevelop.Core.StringParsing;
using MonoDevelop.Ide.Templates;
using ProjectCreateParameters = MonoDevelop.Projects.ProjectCreateParameters;
using SolutionFolder = MonoDevelop.Projects.SolutionFolder;
@@ -228,7 +229,7 @@ namespace MonoDevelop.Ide.Projects public void UpdateFromParameters ()
{
ProjectName = Parameters ["ProjectName"];
- projectNameIsReadOnly = Parameters.GetBoolean ("IsProjectNameReadOnly", false);
+ projectNameIsReadOnly = Parameters.GetBoolValue ("IsProjectNameReadOnly", false);
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/PackageReferencePanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/PackageReferencePanel.cs index 96f89f4735..2ddb9df4e9 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/PackageReferencePanel.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/PackageReferencePanel.cs @@ -112,8 +112,14 @@ namespace MonoDevelop.Ide.Projects { selection.Clear (); configureProject = netProject; - SetTargetFramework (netProject.AssemblyContext, netProject.TargetFramework); - Reset (); + if (netProject != null) { + SetTargetFramework (netProject.AssemblyContext, netProject.TargetFramework); + Reset (); + } else { + targetContext = null; + targetVersion = null; + store.Clear (); + } } public void SetFilter (string filter) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectReferencePanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectReferencePanel.cs index 69de5b937b..e1dc9b1fef 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectReferencePanel.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ProjectReferencePanel.cs @@ -106,8 +106,11 @@ namespace MonoDevelop.Ide.Projects { selection.Clear (); store.Clear (); this.configureProject = configureProject; - PopulateListView (); - Show (); + + if (configureProject != null) { + PopulateListView (); + Show (); + } } public void SetFilter (string filter) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs index ac91295d78..f297eeec48 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/SelectReferenceDialog.cs @@ -96,9 +96,12 @@ namespace MonoDevelop.Ide.Projects this.configureProject = configureProject; foreach (var p in panels) p.SetProject (configureProject); - + ((ListStore) ReferencesTreeView.Model).Clear (); + if (configureProject == null) + return; + foreach (ProjectReference refInfo in configureProject.References) AppendReference (refInfo); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectCreateInformationExtensions.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectCreateInformationExtensions.cs new file mode 100644 index 0000000000..df16a37a0d --- /dev/null +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectCreateInformationExtensions.cs @@ -0,0 +1,40 @@ +//
+// ProjectCreateInformationExtensions.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.Ide.Templates
+{
+ static class ProjectCreateInformationExtensions
+ {
+ public static bool ShouldCreate (this ProjectCreateInformation projectCreateInformation, string condition)
+ {
+ return TemplateConditionEvaluator.EvaluateCondition (projectCreateInformation.Parameters, condition);
+ }
+ }
+}
+
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs index dfb83e7deb..fe5c2d792e 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/ProjectTemplate.cs @@ -312,7 +312,7 @@ namespace MonoDevelop.Ide.Templates { if (await IdeApp.Workspace.OpenWorkspaceItem (createdSolutionName)) { foreach (string action in actions) - IdeApp.Workbench.OpenDocument (Path.Combine (createdProjectInformation.ProjectBasePath, action), project:null); + await IdeApp.Workbench.OpenDocument (Path.Combine (createdProjectInformation.ProjectBasePath, action), project:null); return true; } return false; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplateConditionEvaluator.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplateConditionEvaluator.cs index 220cfd6e98..2d0b8642b7 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplateConditionEvaluator.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Templates/TemplateConditionEvaluator.cs @@ -34,7 +34,6 @@ namespace MonoDevelop.Ide.Templates { public static bool EvaluateCondition (IStringTagModel model, string condition) { - // This logic is duplicated in the ProjectCreateInformation.ShouldCreate method. if (string.IsNullOrWhiteSpace (condition)) return true; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopSourceTextContainer.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopSourceTextContainer.cs index 2814a22de7..0c282f163c 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopSourceTextContainer.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopSourceTextContainer.cs @@ -41,7 +41,7 @@ namespace MonoDevelop.Ide.TypeSystem { readonly ITextDocument document; bool isDisposed; - MonoDevelopSourceText currentText; + SourceText currentText; public DocumentId Id { get; @@ -57,7 +57,6 @@ namespace MonoDevelop.Ide.TypeSystem { this.document = document; this.document.TextChanging += HandleTextReplacing; - this.document.TextChanged += Document_TextChanged; } void HandleTextReplacing (object sender, Core.Text.TextChangeEventArgs e) @@ -66,22 +65,17 @@ namespace MonoDevelop.Ide.TypeSystem if (handler != null) { var oldText = CurrentText; var newText = oldText.Replace (e.Offset, e.RemovalLength, e.InsertedText.Text); + currentText = newText; handler (this, new Microsoft.CodeAnalysis.Text.TextChangeEventArgs (oldText, newText, new TextChangeRange(TextSpan.FromBounds (e.Offset, e.Offset + e.RemovalLength), e.InsertionLength))); } } - void Document_TextChanged (object sender, Core.Text.TextChangeEventArgs e) - { - currentText = null; - } - public void Dispose () { if (isDisposed) return; currentText = null; document.TextChanging -= HandleTextReplacing; - document.TextChanged -= Document_TextChanged;; isDisposed = true; } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopTextLoader.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopTextLoader.cs index 4b95fb2c5b..3f766eb3c7 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopTextLoader.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopTextLoader.cs @@ -44,7 +44,8 @@ namespace MonoDevelop.Ide.TypeSystem } #region implemented abstract members of TextLoader - async Task<TextAndVersion> GetTextAndVersion (Workspace workspace, DocumentId documentId, CancellationToken cancellationToken) + + public override async Task<TextAndVersion> LoadTextAndVersionAsync (Workspace workspace, DocumentId documentId, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested (); SourceText text; @@ -52,16 +53,12 @@ namespace MonoDevelop.Ide.TypeSystem text = new MonoDevelopSourceText (TextFileProvider.Instance.GetTextEditorData (fileName).CreateDocumentSnapshot ()); } else { if (!File.Exists (fileName)) - return TextAndVersion.Create (SourceText.From (""), VersionStamp.Create ()); ; - text = SourceText.From (await TextFileUtility.GetTextAsync (fileName, cancellationToken)); + return TextAndVersion.Create (SourceText.From (""), VersionStamp.Create ()); + text = SourceText.From (await TextFileUtility.GetTextAsync (fileName, cancellationToken).ConfigureAwait(false)); } return TextAndVersion.Create (text, VersionStamp.Create ()); } - public override async Task<TextAndVersion> LoadTextAndVersionAsync (Workspace workspace, DocumentId documentId, CancellationToken cancellationToken) - { - return await GetTextAndVersion (workspace, documentId, cancellationToken); - } #endregion public static TextLoader CreateFromText (string text) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs index 44abef3f28..07cc14a60f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/MonoDevelopWorkspace.cs @@ -180,11 +180,6 @@ namespace MonoDevelop.Ide.TypeSystem } - static bool SupportsRoslyn (MonoDevelop.Projects.Project proj) - { - return string.Equals (proj.TypeGuid, "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}", StringComparison.OrdinalIgnoreCase) || string.Equals (proj.TypeGuid, "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}", StringComparison.OrdinalIgnoreCase); - } - SolutionData solutionData; async Task<SolutionInfo> CreateSolutionInfo (MonoDevelop.Projects.Solution solution, CancellationToken token) { @@ -197,7 +192,7 @@ namespace MonoDevelop.Ide.TypeSystem foreach (var proj in mdProjects) { if (token.IsCancellationRequested) return null; - if (!SupportsRoslyn (proj)) + if (!proj.SupportsRoslyn) continue; var tp = LoadProject (proj, token).ContinueWith (t => { if (!t.IsCanceled) @@ -423,7 +418,7 @@ namespace MonoDevelop.Ide.TypeSystem }, token); } - internal void UpdateProjectionEnntry (MonoDevelop.Projects.ProjectFile projectFile, IReadOnlyList<Projection> projections) + internal void UpdateProjectionEntry (MonoDevelop.Projects.ProjectFile projectFile, IReadOnlyList<Projection> projections) { foreach (var entry in projectionList) { if (entry.File.FilePath == projectFile.FilePath) { @@ -501,7 +496,7 @@ namespace MonoDevelop.Ide.TypeSystem var options = new ParseOptions { FileName = f.FilePath, Project = p, - Content = StringTextSource.ReadFrom (f.FilePath), + Content = TextFileProvider.Instance.GetReadOnlyTextEditorData (f.FilePath), }; var projections = node.Parser.GenerateProjections (options); var entry = new ProjectionEntry (); @@ -695,6 +690,17 @@ namespace MonoDevelop.Ide.TypeSystem return; bool isOpen; var filePath = document.FilePath; + + Projection projection = null; + foreach (var entry in ProjectionList) { + var p = entry.Projections.FirstOrDefault (proj => FilePath.PathComparer.Equals (proj.Document.FileName, filePath)); + if (p != null) { + filePath = entry.File.FilePath; + projection = p; + break; + } + } + var data = TextFileProvider.Instance.GetTextEditorData (filePath, out isOpen); // Guard against already done changes in linked files. @@ -708,19 +714,10 @@ namespace MonoDevelop.Ide.TypeSystem return; } changedFiles [filePath] = text; - - Projection projection = null; - foreach (var entry in ProjectionList) { - var p = entry.Projections.FirstOrDefault (proj => FilePath.PathComparer.Equals (proj.Document.FileName, filePath)); - if (p != null) { - filePath = entry.File.FilePath; - projection = p; - break; - } - } + SourceText oldFile; if (!isOpen || !document.TryGetText (out oldFile)) { - oldFile = new MonoDevelopSourceText (data); + oldFile = document.GetTextAsync ().Result; } var changes = text.GetTextChanges (oldFile).OrderByDescending (c => c.Span.Start).ToList (); int delta = 0; @@ -728,55 +725,67 @@ namespace MonoDevelop.Ide.TypeSystem if (!isOpen) { delta = ApplyChanges (projection, data, changes); var formatter = CodeFormatterService.GetFormatter (data.MimeType); - var mp = GetMonoProject (CurrentSolution.GetProject (id.ProjectId)); - string currentText = data.Text; - - foreach (var change in changes) { - delta -= change.Span.Length - change.NewText.Length; - var startOffset = change.Span.Start - delta; - - if (projection != null) { - int originalOffset; - if (projection.TryConvertFromProjectionToOriginal (startOffset, out originalOffset)) - startOffset = originalOffset; - } + if (formatter.SupportsPartialDocumentFormatting) { + var mp = GetMonoProject (CurrentSolution.GetProject (id.ProjectId)); + string currentText = data.Text; + + foreach (var change in changes) { + delta -= change.Span.Length - change.NewText.Length; + var startOffset = change.Span.Start - delta; + + if (projection != null) { + int originalOffset; + if (projection.TryConvertFromProjectionToOriginal (startOffset, out originalOffset)) + startOffset = originalOffset; + } - string str; - if (change.NewText.Length == 0) { - str = formatter.FormatText (mp.Policies, currentText, TextSegment.FromBounds (Math.Max (0, startOffset - 1), Math.Min (data.Length, startOffset + 1))); - } else { - str = formatter.FormatText (mp.Policies, currentText, new TextSegment (startOffset, change.NewText.Length)); + string str; + if (change.NewText.Length == 0) { + str = formatter.FormatText (mp.Policies, currentText, TextSegment.FromBounds (Math.Max (0, startOffset - 1), Math.Min (data.Length, startOffset + 1))); + } else { + str = formatter.FormatText (mp.Policies, currentText, new TextSegment (startOffset, change.NewText.Length)); + } + data.ReplaceText (startOffset, change.NewText.Length, str); } - data.ReplaceText (startOffset, change.NewText.Length, str); } data.Save (); - OnDocumentTextChanged (id, new MonoDevelopSourceText (data), PreservationMode.PreserveValue); + if (projection != null) { + UpdateProjectionsDocuments (document, data); + } else { + OnDocumentTextChanged (id, new MonoDevelopSourceText (data), PreservationMode.PreserveValue); + } FileService.NotifyFileChanged (filePath); } else { - var formatter = CodeFormatterService.GetFormatter (data.MimeType); + var formatter = CodeFormatterService.GetFormatter (data.MimeType); var documentContext = IdeApp.Workbench.Documents.FirstOrDefault (d => FilePath.PathComparer.Compare (d.FileName, filePath) == 0); if (documentContext != null) { var editor = (TextEditor)data; using (var undo = editor.OpenUndoGroup ()) { delta = ApplyChanges (projection, data, changes); - foreach (var change in changes) { - delta -= change.Span.Length - change.NewText.Length; - var startOffset = change.Span.Start - delta; - if (projection != null) { - int originalOffset; - if (projection.TryConvertFromProjectionToOriginal (startOffset, out originalOffset)) - startOffset = originalOffset; - } - if (change.NewText.Length == 0) { - formatter.OnTheFlyFormat (editor, documentContext, TextSegment.FromBounds (Math.Max (0, startOffset - 1), Math.Min (data.Length, startOffset + 1))); - } else { - formatter.OnTheFlyFormat (editor, documentContext, new TextSegment (startOffset, change.NewText.Length)); + if (formatter.SupportsOnTheFlyFormatting) { + foreach (var change in changes) { + delta -= change.Span.Length - change.NewText.Length; + var startOffset = change.Span.Start - delta; + if (projection != null) { + int originalOffset; + if (projection.TryConvertFromProjectionToOriginal (startOffset, out originalOffset)) + startOffset = originalOffset; + } + if (change.NewText.Length == 0) { + formatter.OnTheFlyFormat (editor, documentContext, TextSegment.FromBounds (Math.Max (0, startOffset - 1), Math.Min (data.Length, startOffset + 1))); + } else { + formatter.OnTheFlyFormat (editor, documentContext, new TextSegment (startOffset, change.NewText.Length)); + } } } } } - OnDocumentTextChanged (id, new MonoDevelopSourceText(data.CreateDocumentSnapshot ()), PreservationMode.PreserveValue); + if (projection != null) { + UpdateProjectionsDocuments (document, data); + } else { + OnDocumentTextChanged (id, new MonoDevelopSourceText (data.CreateDocumentSnapshot ()), PreservationMode.PreserveValue); + } Runtime.RunInMainThread (() => { if (IdeApp.Workbench != null) foreach (var w in IdeApp.Workbench.Documents) @@ -785,6 +794,27 @@ namespace MonoDevelop.Ide.TypeSystem } } + void UpdateProjectionsDocuments (Document document, ITextDocument data) + { + var project = TypeSystemService.GetMonoProject (document.Project); + var file = project.Files.GetFile (data.FileName); + var node = TypeSystemService.GetTypeSystemParserNode (data.MimeType, file.BuildAction); + if (node != null && node.Parser.CanGenerateProjection (data.MimeType, file.BuildAction, project.SupportedLanguages)) { + var options = new ParseOptions { + FileName = file.FilePath, + Project = project, + Content = TextFileProvider.Instance.GetReadOnlyTextEditorData (file.FilePath), + }; + var projections = node.Parser.GenerateProjections (options).Result; + UpdateProjectionEntry (file, projections); + var projectId = GetProjectId (project); + var projectdata = GetProjectData (projectId); + foreach (var projected in projections) { + OnDocumentTextChanged (projectdata.GetDocumentId (projected.Document.FileName), new MonoDevelopSourceText (projected.Document), PreservationMode.PreserveValue); + } + } + } + static int ApplyChanges (Projection projection, ITextDocument data, List<TextChange> changes) { int delta = 0; @@ -793,11 +823,16 @@ namespace MonoDevelop.Ide.TypeSystem if (projection != null) { int originalOffset; - if (projection.TryConvertFromProjectionToOriginal (offset, out originalOffset)) + //If change is outside projection segments don't apply it... + if (projection.TryConvertFromProjectionToOriginal (offset, out originalOffset)) { offset = originalOffset; + data.ReplaceText (offset, change.Span.Length, change.NewText); + delta += change.Span.Length - change.NewText.Length; + } + } else { + data.ReplaceText (offset, change.Span.Length, change.NewText); + delta += change.Span.Length - change.NewText.Length; } - data.ReplaceText (offset, change.Span.Length, change.NewText); - delta += change.Span.Length - change.NewText.Length; } return delta; diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs index 3ae504505a..94a21ec954 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService.cs @@ -243,7 +243,7 @@ namespace MonoDevelop.Ide.TypeSystem return ParseFile (project, data.FileName, data.MimeType, data, cancellationToken); } - internal static Task<ParsedDocumentProjection> ParseProjection (ParseOptions options, string mimeType, CancellationToken cancellationToken = default(CancellationToken)) + internal static async Task<ParsedDocumentProjection> ParseProjection (ParseOptions options, string mimeType, CancellationToken cancellationToken = default(CancellationToken)) { if (options == null) throw new ArgumentNullException ("options"); @@ -252,18 +252,18 @@ namespace MonoDevelop.Ide.TypeSystem var parser = GetParser (mimeType, options.BuildAction); if (parser == null || !parser.CanGenerateProjection (mimeType, options.BuildAction, options.Project?.SupportedLanguages)) - return Task.FromResult ((ParsedDocumentProjection)null); + return null; var t = Counters.ParserService.FileParsed.BeginTiming (options.FileName); try { - var result = parser.GenerateParsedDocumentProjection (options, cancellationToken); + var result = await parser.GenerateParsedDocumentProjection (options, cancellationToken); if (options.Project != null) { var ws = workspaces.First () ; var projectId = ws.GetProjectId (options.Project); if (projectId != null) { - ws.UpdateProjectionEnntry (options.Project.GetProjectFile (options.FileName), result.Result.Projections); - foreach (var projection in result.Result.Projections) { + ws.UpdateProjectionEntry (options.Project.GetProjectFile (options.FileName), result.Projections); + foreach (var projection in result.Projections) { var docId = ws.GetDocumentId (projectId, projection.Document.FileName); if (docId != null) { ws.InformDocumentTextChange (docId, new MonoDevelopSourceText (projection.Document)); @@ -274,12 +274,12 @@ namespace MonoDevelop.Ide.TypeSystem return result; } catch (AggregateException ae) { ae.Flatten ().Handle (x => x is OperationCanceledException); - return Task.FromResult ((ParsedDocumentProjection)null); + return null; } catch (OperationCanceledException) { - return Task.FromResult ((ParsedDocumentProjection)null); + return null; } catch (Exception e) { LoggingService.LogError ("Exception while parsing: " + e); - return Task.FromResult ((ParsedDocumentProjection)null); + return null; } finally { t.Dispose (); } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs index 175cc3f7ee..81c4aef5bc 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.TypeSystem/TypeSystemService_WorkspaceHandling.cs @@ -258,7 +258,7 @@ namespace MonoDevelop.Ide.TypeSystem return null; } - public static async Task<Compilation> GetCompilationAsync (MonoDevelop.Projects.Project project, CancellationToken cancellationToken = default(CancellationToken)) + public static Task<Compilation> GetCompilationAsync (MonoDevelop.Projects.Project project, CancellationToken cancellationToken = default(CancellationToken)) { if (project == null) throw new ArgumentNullException ("project"); @@ -269,9 +269,9 @@ namespace MonoDevelop.Ide.TypeSystem var roslynProject = w.CurrentSolution.GetProject (projectId); if (roslynProject == null) continue; - return await roslynProject.GetCompilationAsync (cancellationToken).ConfigureAwait (false); + return roslynProject.GetCompilationAsync (cancellationToken); } - return null; + return Task.FromResult<Compilation> (null); } static void OnWorkspaceItemAdded (object s, MonoDevelop.Projects.WorkspaceItemEventArgs args) diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj index f946430b72..f96246e650 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.csproj @@ -7740,6 +7740,10 @@ <Compile Include="MonoDevelop.Components\Dialog.cs" /> <Compile Include="MonoDevelop.Ide.TypeSystem\MonoDevelopSourceText.cs" /> <Compile Include="MonoDevelop.Components.AutoTest\DataTransferObjects.cs" /> + <Compile Include="MonoDevelop.Ide.Templates\ProjectCreateInformationExtensions.cs" /> + <Compile Include="MonoDevelop.Ide.Editor.Extension\FoldingTextEditorExtension.cs" /> + <Compile Include="MonoDevelop.Ide.Editor.Extension\ErrorHandlerTextEditorExtension.cs" /> + <Compile Include="MonoDevelop.Ide.Editor.Extension\DefaultCommandTextEditorExtension.cs" /> </ItemGroup> <ItemGroup> <None Include="Makefile.am" /> diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DispatchService.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DispatchService.cs index af9015da0e..648eb17bb8 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DispatchService.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/DispatchService.cs @@ -42,31 +42,34 @@ namespace MonoDevelop.Ide { public static class DispatchService { - static Queue<GenericMessageContainer> backgroundQueue = new Queue<GenericMessageContainer> (); - static ManualResetEvent backgroundThreadWait = new ManualResetEvent (false); - static Queue<GenericMessageContainer> guiQueue = new Queue<GenericMessageContainer> (); - static Thread thrBackground; - static uint iIdle = 0; - static GLib.TimeoutHandler handler; - static Thread guiThread; static GuiSyncContext guiContext; - static internal bool DispatchDebug; - const string errormsg = "An exception was thrown while dispatching a method call in the UI thread."; class GtkSynchronizationContext: SynchronizationContext { public override void Post (SendOrPostCallback d, object state) { - GuiDispatch (delegate { + Gtk.Application.Invoke (delegate { d (state); }); } public override void Send (SendOrPostCallback d, object state) { - GuiSyncDispatch (delegate { + if (Runtime.IsMainThread) { d (state); - }); + return; + } + var ob = new object (); + lock (ob) { + Gtk.Application.Invoke (delegate { + try { + d (state); + } finally { + Monitor.Pulse (ob); + } + }); + Monitor.Wait (ob); + } } public override SynchronizationContext CreateCopy () @@ -81,64 +84,12 @@ namespace MonoDevelop.Ide return; guiContext = new GuiSyncContext (); - guiThread = Thread.CurrentThread; - - handler = new GLib.TimeoutHandler (guiDispatcher); - - thrBackground = new Thread (new ThreadStart (backgroundDispatcher)) { - Name = "Background dispatcher", - IsBackground = true, - Priority = ThreadPriority.Lowest, - }; - thrBackground.Start (); - - DispatchDebug = Environment.GetEnvironmentVariable ("MONODEVELOP_DISPATCH_DEBUG") != null; SynchronizationContext = new GtkSynchronizationContext (); } public static SynchronizationContext SynchronizationContext { get; private set; } - static Task GuiDispatch (Action cb) - { - TaskCompletionSource<bool> ts = new TaskCompletionSource<bool> (); - if (IsGuiThread) { - try { - cb (); - ts.SetResult (true); - } catch (Exception ex) { - ts.SetException (ex); - } - return ts.Task; - } - - QueueMessage (new GenericMessageContainer (() => { - try { - cb (); - } finally { - ts.SetResult (true); - } - }, false)); - - return ts.Task; - } - - static void GuiSyncDispatch (MessageHandler cb) - { - if (IsGuiThread) { - cb (); - return; - } - - GenericMessageContainer mc = new GenericMessageContainer (cb, true); - lock (mc) { - QueueMessage (mc); - Monitor.Wait (mc); - } - if (mc.Exception != null) - throw new Exception (errormsg, mc.Exception); - } - static DateTime lastPendingEvents; internal static void RunPendingEvents () { @@ -168,152 +119,8 @@ namespace MonoDevelop.Ide sw.Stop (); Gdk.Threads.Leave(); - guiDispatcher (); - } - - static void QueueMessage (GenericMessageContainer msg) - { - lock (guiQueue) { - guiQueue.Enqueue (msg); - if (iIdle == 0) - iIdle = GLib.Timeout.Add (0, handler); - } - } - - static bool IsGuiThread - { - get { return guiThread == Thread.CurrentThread; } - } - - static void AssertGuiThread () - { - if (guiThread != Thread.CurrentThread) - throw new InvalidOperationException ("This method can only be called in the GUI thread"); - } - - /// <summary> - /// Runs the provided delegate in the background, but waits until finished, pumping the - /// message queue if necessary. - /// </summary> - public static void BackgroundDispatchAndWait (MessageHandler cb) - { - object eventObject = new object (); - lock (eventObject) { - BackgroundDispatch (delegate { - try { - cb (); - } finally { - lock (eventObject) { - Monitor.Pulse (eventObject); - } - } - }); - if (IsGuiThread) { - while (true) { - if (Monitor.Wait (eventObject, 50)) - return; - RunPendingEvents (); - } - } - else { - Monitor.Wait (eventObject); - } - } - } - - public static void BackgroundDispatch (MessageHandler cb) - { - QueueBackground (new GenericMessageContainer (cb, false)); - } - - static void BackgroundDispatch (StatefulMessageHandler cb, object state) - { - QueueBackground (new StatefulMessageContainer (cb, state, false)); - } - - static void QueueBackground (GenericMessageContainer c) - { - lock (backgroundQueue) { - backgroundQueue.Enqueue (c); - if (backgroundQueue.Count == 1) - backgroundThreadWait.Set (); - } } - static bool guiDispatcher () - { - GenericMessageContainer msg; - int iterCount; - - lock (guiQueue) { - iterCount = guiQueue.Count; - if (iterCount == 0) { - iIdle = 0; - return false; - } - } - - for (int n=0; n<iterCount; n++) { - lock (guiQueue) { - if (guiQueue.Count == 0) { - iIdle = 0; - return false; - } - msg = guiQueue.Dequeue (); - } - - msg.Run (); - - if (msg.IsSynchronous) - lock (msg) Monitor.PulseAll (msg); - else if (msg.Exception != null) - HandlerError (msg); - } - - lock (guiQueue) { - if (guiQueue.Count == 0) { - iIdle = 0; - return false; - } else - return true; - } - } - - static void backgroundDispatcher () - { - while (true) { - GenericMessageContainer msg = null; - bool wait = false; - lock (backgroundQueue) { - if (backgroundQueue.Count == 0) { - backgroundThreadWait.Reset (); - wait = true; - } else - msg = backgroundQueue.Dequeue (); - } - - if (wait) { - backgroundThreadWait.WaitOne (); - continue; - } - - if (msg != null) { - msg.Run (); - if (msg.Exception != null) - HandlerError (msg); - } - } - } - - static void HandlerError (GenericMessageContainer msg) - { - if (msg.CallerStack != null) { - LoggingService.LogError ("{0} {1}\nCaller stack:{2}", errormsg, msg.Exception.ToString (), msg.CallerStack); - } - else - LoggingService.LogError ("{0} {1}\nCaller stack not available. Define the environment variable MONODEVELOP_DISPATCH_DEBUG to enable caller stack capture.", errormsg, msg.Exception.ToString ()); - } - #region Animations /// <summary> @@ -399,76 +206,4 @@ namespace MonoDevelop.Ide #endregion } - - public delegate void MessageHandler (); - public delegate void StatefulMessageHandler (object state); - - class GenericMessageContainer - { - MessageHandler callback; - protected Exception ex; - protected bool isSynchronous; - protected string callerStack; - - protected GenericMessageContainer () { } - - public GenericMessageContainer (MessageHandler cb, bool isSynchronous) - { - callback = cb; - this.isSynchronous = isSynchronous; - if (DispatchService.DispatchDebug) callerStack = Environment.StackTrace; - }
-
- public virtual void Run ( ) - { - try { - callback (); - callback = null; - } - catch (Exception e) { - ex = e; - callback = null; - } - } - - public Exception Exception - { - get { return ex; } - } - - public bool IsSynchronous - { - get { return isSynchronous; } - } - - public string CallerStack - { - get { return callerStack; } - } - } - - class StatefulMessageContainer : GenericMessageContainer - { - object data; - StatefulMessageHandler callback; - - public StatefulMessageContainer (StatefulMessageHandler cb, object state, bool isSynchronous) - { - data = state; - callback = cb; - this.isSynchronous = isSynchronous; - if (DispatchService.DispatchDebug) callerStack = Environment.StackTrace; - }
-
- public override void Run ( ) - { - try { - callback (data); - } - catch (Exception e) { - ex = e; - } - } - } - } diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdePreferences.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdePreferences.cs index 27ceb639c4..ffff05ccad 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdePreferences.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/IdePreferences.cs @@ -149,7 +149,7 @@ namespace MonoDevelop.Ide internal static readonly string DefaultLightColorScheme = "Default"; internal static readonly string DefaultDarkColorScheme = "Oblivion"; - public readonly ConfigurationProperty<bool> EnableSourceAnalysis = ConfigurationProperty.Create ("MonoDevelop.AnalysisCore.AnalysisEnabled", true); + public readonly ConfigurationProperty<bool> EnableSourceAnalysis = ConfigurationProperty.Create ("MonoDevelop.AnalysisCore.AnalysisEnabled_V2", true); public readonly ConfigurationProperty<bool> EnableUnitTestEditorIntegration = ConfigurationProperty.Create ("Testing.EnableUnitTestEditorIntegration", false); public readonly SkinConfigurationProperty<string> ColorScheme = new SkinConfigurationProperty<string> ("ColorScheme", DefaultLightColorScheme, DefaultDarkColorScheme); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs index ddf89a3108..d83390e93f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide/ProjectOperations.cs @@ -880,10 +880,14 @@ namespace MonoDevelop.Ide foreach (var reference in editEventArgs.ReferencesToAdd) project.References.Add (reference); + selDialog.SetProject (null); + return editEventArgs.ReferencesToAdd.Count > 0 || editEventArgs.ReferencesToRemove.Count > 0; } - else + else { + selDialog.SetProject (null); return false; + } } finally { selDialog.Hide (); } diff --git a/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj b/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj index f518cef7a8..b744117f27 100644 --- a/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj +++ b/main/src/core/MonoDevelop.Startup/MonoDevelop.Startup.csproj @@ -22,7 +22,6 @@ <EnvironmentVariables> <EnvironmentVariables> <Variable name="MONODEVELOP_LOCALE_PATH" value="../locale" /> - <Variable name="MONODEVELOP_PROFILE" value="./test-profile" /> </EnvironmentVariables> </EnvironmentVariables> <PlatformTarget>x86</PlatformTarget> @@ -50,7 +49,6 @@ <EnvironmentVariables> <EnvironmentVariables> <Variable name="MONODEVELOP_LOCALE_PATH" value="../locale" /> - <Variable name="MONODEVELOP_PROFILE" value="./test-profile" /> </EnvironmentVariables> </EnvironmentVariables> <Execution> diff --git a/main/tests/UnitTests/MonoDevelop.Ide.Editor/Commands/CodeCommentTests.cs b/main/tests/UnitTests/MonoDevelop.Ide.Editor/Commands/CodeCommentTests.cs index 8678559f78..55a4c5235d 100644 --- a/main/tests/UnitTests/MonoDevelop.Ide.Editor/Commands/CodeCommentTests.cs +++ b/main/tests/UnitTests/MonoDevelop.Ide.Editor/Commands/CodeCommentTests.cs @@ -27,6 +27,9 @@ using System; using System.Text; using NUnit.Framework; using UnitTests; +using MonoDevelop.Ide.Editor.Extension; +using MonoDevelop.CSharpBinding; +using MonoDevelop.CSharpBinding.Tests; namespace MonoDevelop.Ide.Editor { @@ -132,7 +135,7 @@ namespace MonoDevelop.Ide.Editor }-> }"); - ((TextEditorViewContent)editor.GetViewContent ()).AddCodeComment (); + GetExtension (editor).AddCodeComment (); AssertEditorState (editor, @"class Foo { //<-void Bar () @@ -142,6 +145,14 @@ namespace MonoDevelop.Ide.Editor }"); } + static DefaultCommandTextEditorExtension GetExtension (TextEditor editor) + { + var ext = new DefaultCommandTextEditorExtension (); + var tww = new TestWorkbenchWindow { ViewContent = new TestViewContent () }; + ext.Initialize (editor, new TestDocument (tww)); + return ext; + } + [Test] public void TestRemoveComment() { @@ -152,7 +163,7 @@ namespace MonoDevelop.Ide.Editor //}-> }"); - ((TextEditorViewContent)editor.GetViewContent ()).RemoveCodeComment (); + GetExtension (editor).RemoveCodeComment (); AssertEditorState (editor,@"class Foo { <-void Bar () @@ -172,7 +183,7 @@ namespace MonoDevelop.Ide.Editor }-> }"); - ((TextEditorViewContent)editor.GetViewContent ()).ToggleCodeComment (); + GetExtension (editor).ToggleCodeComment (); AssertEditorState (editor, @"class Foo { //<-void Bar () @@ -192,7 +203,7 @@ namespace MonoDevelop.Ide.Editor //}-> }"); - ((TextEditorViewContent)editor.GetViewContent ()).ToggleCodeComment (); + GetExtension (editor).ToggleCodeComment (); AssertEditorState (editor,@"class Foo { <-void Bar () @@ -214,7 +225,7 @@ namespace MonoDevelop.Ide.Editor } } ->"); - ((TextEditorViewContent)editor.GetViewContent ()).ToggleCodeComment (); + GetExtension (editor).ToggleCodeComment (); AssertEditorState (editor, @"//class Foo //{ // void Bar () @@ -234,7 +245,7 @@ namespace MonoDevelop.Ide.Editor { } }"); - ((TextEditorViewContent)editor.GetViewContent ()).ToggleCodeComment (); + GetExtension (editor).ToggleCodeComment (); AssertEditorState (editor,@"class Foo { //void Bar () @@ -243,6 +254,30 @@ namespace MonoDevelop.Ide.Editor }"); } + + /// <summary> + /// Bug 38355 - comment selected lines puts a comment on too many lines! + /// </summary> + [Test] + public void TestBug38355() + { + var editor = CreateTextEditor (@"class Foo +{ +<- void Bar () + { +-> Bar(); + } +}"); + GetExtension (editor).ToggleCodeComment (); + AssertEditorState (editor, @"class Foo +{ + //void Bar () + //{ + Bar(); + } +}"); + } + } } diff --git a/main/tests/UnitTests/MonoDevelop.Ide.Gui/SearchPopupWindowTests.cs b/main/tests/UnitTests/MonoDevelop.Ide.Gui/SearchPopupWindowTests.cs index 78a2b205a7..8f4b7bb720 100644 --- a/main/tests/UnitTests/MonoDevelop.Ide.Gui/SearchPopupWindowTests.cs +++ b/main/tests/UnitTests/MonoDevelop.Ide.Gui/SearchPopupWindowTests.cs @@ -138,6 +138,20 @@ namespace MonoDevelop.Ide.Gui } [Test] + public void TestLineStyle () + { + var pattern = SearchPopupSearchPattern.ParsePattern ("cat:foo:line 1337"); + Assert.AreEqual (new SearchPopupSearchPattern ("cat", "foo", 1337, -1), pattern); + } + + [Test] + public void TestGithub () + { + var pattern = SearchPopupSearchPattern.ParsePattern ("ExceptionCaughtDialog.cs#L510"); + Assert.AreEqual (new SearchPopupSearchPattern (null, "ExceptionCaughtDialog.cs", 510, -1), pattern); + } + + [Test] public void TestOriginalSearchPatternStored () { var pattern = SearchPopupSearchPattern.ParsePattern ("id:json"); diff --git a/main/tests/UnitTests/MonoDevelop.Ide.Templates/TestableWizardPage.cs b/main/tests/UnitTests/MonoDevelop.Ide.Templates/TestableWizardPage.cs index 76ed0b3155..5a0654c736 100644 --- a/main/tests/UnitTests/MonoDevelop.Ide.Templates/TestableWizardPage.cs +++ b/main/tests/UnitTests/MonoDevelop.Ide.Templates/TestableWizardPage.cs @@ -30,7 +30,7 @@ namespace MonoDevelop.Ide.Templates {
public class TestableWizardPage : WizardPage
{
- protected override object CreateNativeWidget ()
+ protected override object CreateNativeWidget<T> ()
{
return new Gtk.EventBox ();
}
diff --git a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs index a328581806..166e10d991 100644 --- a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs +++ b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildProjectTests.cs @@ -167,6 +167,22 @@ namespace MonoDevelop.Projects Assert.IsTrue (tn.Contains ("Clean")); Assert.IsTrue (tn.Contains ("ResolveReferences")); Assert.IsTrue (tn.Contains ("GetReferenceAssemblyPaths")); + Assert.IsFalse (tn.Contains ("Conditioned")); + } + + [Test] + public void TargetsIgnoringCondition () + { + var p = LoadProject (); + p.Evaluate (); + var tn = p.EvaluatedTargetsIgnoringCondition.Select (t => t.Name).ToArray (); + + // Verify that some of the imported targets are returned + Assert.IsTrue (tn.Contains ("Build")); + Assert.IsTrue (tn.Contains ("Clean")); + Assert.IsTrue (tn.Contains ("ResolveReferences")); + Assert.IsTrue (tn.Contains ("GetReferenceAssemblyPaths")); + Assert.IsTrue (tn.Contains ("Conditioned")); } [Test] diff --git a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs index 44dd2ff514..4a9008948c 100644 --- a/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs +++ b/main/tests/UnitTests/MonoDevelop.Projects/MSBuildTests.cs @@ -1547,6 +1547,27 @@ namespace MonoDevelop.Projects var savedXml = File.ReadAllText (p.FileName); Assert.AreEqual (refXml, savedXml); } + + [Test] + public async Task MSBuildPropertiesSetWhenSaving () + { + Solution sol = TestProjectsChecks.CreateConsoleSolution ("console-project-msbuild"); + sol.ConvertToFormat (MSBuildFileFormat.VS2010); + + var p = sol.GetAllProjects ().First (); + var c = (ProjectConfiguration) p.Configurations [0]; + Assert.IsFalse (p.ProjectProperties.HasProperty ("TargetName")); + Assert.IsFalse (p.MSBuildProject.EvaluatedProperties.HasProperty ("TargetName")); + Assert.IsFalse (c.Properties.HasProperty ("TargetName")); + + await sol.SaveAsync (Util.GetMonitor ()); + + // MSBuild properties defined in imported targets are loaded after saving a project for the first time + + Assert.IsTrue (p.ProjectProperties.HasProperty ("TargetName")); + Assert.IsTrue (p.MSBuildProject.EvaluatedProperties.HasProperty ("TargetName")); + Assert.IsTrue (c.Properties.HasProperty ("TargetName")); + } } class MyProjectTypeNode: ProjectTypeNode diff --git a/main/tests/test-projects/msbuild-project-test/test.csproj b/main/tests/test-projects/msbuild-project-test/test.csproj index bdd559caf4..ee9f2f29a5 100755 --- a/main/tests/test-projects/msbuild-project-test/test.csproj +++ b/main/tests/test-projects/msbuild-project-test/test.csproj @@ -45,6 +45,7 @@ <Meta2>$(Configuration)</Meta2> </None> </ItemGroup> + <Target Name="Conditioned" Condition="false"></Target> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="extra.csproj" /> </Project> diff --git a/main/tests/test-projects/unsupported-project-roundtrip/TestApp.WinPhone.csproj b/main/tests/test-projects/unsupported-project-roundtrip/TestApp.WinPhone.csproj index 4faea6b984..02d7af34ad 100644 --- a/main/tests/test-projects/unsupported-project-roundtrip/TestApp.WinPhone.csproj +++ b/main/tests/test-projects/unsupported-project-roundtrip/TestApp.WinPhone.csproj @@ -154,13 +154,13 @@ <HintPath>..\..\packages\WPtoolkit.4.2013.08.16\lib\wp8\Microsoft.Phone.Controls.Toolkit.dll</HintPath> </Reference> <Reference Include="Xamarin.Forms.Core"> - <HintPath>..\..\packages\Xamarin.Forms.1.0.6186\lib\WP80\Xamarin.Forms.Core.dll</HintPath> + <HintPath>..\..\packages\Xamarin.Forms.2.0.1.6505\lib\WP80\Xamarin.Forms.Core.dll</HintPath> </Reference> <Reference Include="Xamarin.Forms.Platform.WP8"> - <HintPath>..\..\packages\Xamarin.Forms.1.0.6186\lib\WP80\Xamarin.Forms.Platform.WP8.dll</HintPath> + <HintPath>..\..\packages\Xamarin.Forms.2.0.1.6505\lib\WP80\Xamarin.Forms.Platform.WP8.dll</HintPath> </Reference> <Reference Include="Xamarin.Forms.Xaml"> - <HintPath>..\..\packages\Xamarin.Forms.1.0.6186\lib\WP80\Xamarin.Forms.Xaml.dll</HintPath> + <HintPath>..\..\packages\Xamarin.Forms.2.0.1.6505\lib\WP80\Xamarin.Forms.Xaml.dll</HintPath> </Reference> </ItemGroup> <Import Project="..\TestApp\TestApp.projitems" Label="Shared" Condition="Exists('..\TestApp\TestApp.projitems')" /> @@ -174,11 +174,11 @@ </Target> --> <ProjectExtensions /> - <Import Project="..\..\packages\Xamarin.Forms.1.0.6186\build\portable-win+net45+wp80+MonoAndroid10+MonoTouch10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.1.0.6186\build\portable-win+net45+wp80+MonoAndroid10+MonoTouch10\Xamarin.Forms.targets')" /> + <Import Project="..\..\packages\Xamarin.Forms.2.0.1.6505\build\portable-win+net45+wp80+MonoAndroid10+MonoTouch10\Xamarin.Forms.targets" Condition="Exists('..\..\packages\Xamarin.Forms.2.0.1.6505\build\portable-win+net45+wp80+MonoAndroid10+MonoTouch10\Xamarin.Forms.targets')" /> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <PropertyGroup> <ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> </PropertyGroup> - <Error Condition="!Exists('..\..\packages\Xamarin.Forms.1.0.6186\build\portable-win+net45+wp80+MonoAndroid10+MonoTouch10\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.1.0.6186\build\portable-win+net45+wp80+MonoAndroid10+MonoTouch10\Xamarin.Forms.targets'))" /> + <Error Condition="!Exists('..\..\packages\Xamarin.Forms.2.0.1.6505\build\portable-win+net45+wp80+MonoAndroid10+MonoTouch10\Xamarin.Forms.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Xamarin.Forms.2.0.1.6505\build\portable-win+net45+wp80+MonoAndroid10+MonoTouch10\Xamarin.Forms.targets'))" /> </Target> </Project>
\ No newline at end of file diff --git a/main/tests/test-projects/unsupported-project-roundtrip/packages.config b/main/tests/test-projects/unsupported-project-roundtrip/packages.config index 56ef8e776f..2f70fefc55 100644 --- a/main/tests/test-projects/unsupported-project-roundtrip/packages.config +++ b/main/tests/test-projects/unsupported-project-roundtrip/packages.config @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="WPtoolkit" version="4.2013.08.16" targetFramework="wp80" />
- <package id="Xamarin.Forms" version="1.0.6186" targetFramework="wp80" />
+ <package id="Xamarin.Forms" version="2.0.1.6505" targetFramework="wp80" />
</packages>
\ No newline at end of file |