diff --git a/data/resources/StringResources.de.resx b/data/resources/StringResources.de.resx index d58b0a366b..96bdeadaed 100644 --- a/data/resources/StringResources.de.resx +++ b/data/resources/StringResources.de.resx @@ -294,7 +294,7 @@ Laden Sie ein AddIn aus dem Internet herunter, klicken Sie auf "AddIn installier {1} -Sie werden nicht mehr funktionieren nachdem dieses AddIn deaktiviert wurde! Sind Sie sicher, dass Sie fortfahren möchten? +Sie werden nicht mehr funktionieren, nachdem dieses AddIn deaktiviert wurde! Sind Sie sicher, dass Sie fortfahren möchten? Das Paket "{0}" benötigt noch mindestens ein zusätzliches Paket: @@ -332,6 +332,9 @@ Wenn Sie den Lizenzbedingungen nicht zustimmen, klicken Sie auf "Ablehnen". Hinzufügen + + Automatisch nach Updates suchen + Nach unten @@ -350,6 +353,9 @@ Wenn Sie den Lizenzbedingungen nicht zustimmen, klicken Sie auf "Ablehnen". AddIns + + Allgemein + Quellen @@ -1201,9 +1207,7 @@ Ein Ausführungskommando kann in den Projektoptionen eingestellt werden. Ink - Sie protokollieren keine Ereignisse. - -Wählen Sie ein Objekt oder ein Ereignis im Objekte-Panel und klicken Sie mit der rechten Maustaste oder benutzen Sie das "Aktion"-Menü um mit dem Protokollieren von Ereignissen zu beginnen. + Sie protokollieren keine Ereignisse. Wählen Sie ein Objekt oder ein Ereignis im Objekte-Panel und klicken Sie mit der rechten Maustaste oder benutzen Sie das "Aktion"-Menü um mit dem Protokollieren von Ereignissen zu beginnen. Parameter @@ -1534,6 +1538,30 @@ Um ActiveX/COM-Objekte zu generieren, ziehen sie eine Klasse aus einer Typbiblio Code-Qualitätsanalyse + + Code automatisch formatieren + + + (Standard) + + + (Global) + + + Keine Formatierungsvoreinstellung ausgewählt! + + + Sind Sie sicher, dass Sie alle Formatierungseinstellungen zurücksetzen wollen? + + + (Projekt) + + + Zurücksetzen auf: + + + (Projektmappe) + Füge Reference zu Methode ein; drücke Tab oder Enter zweimal, um eine neue Methode anzulegen. @@ -1650,6 +1678,9 @@ Beispiele: "120", "MainClass", "Main.cs, 120". Kursiv + + Unterstrichen + Hervorhebungsfarben exportieren @@ -1954,6 +1985,12 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen? Cache leeren + + Den gewählten Code completion-Eintrag bei Eingabe der folgenden Zeichen einfügen: + + + Den gewählten Code completion-Eintrag nur bei <Tab> oder <Enter> einfügen. + Zeige Code Completion, wenn ein Buchstabe eingegeben wird @@ -1975,6 +2012,18 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen? Speichere + + Tooltip-Einstellungen + + + Links in Tooltips führen zur + + + Definition im Code + + + Dokumentation (falls verfügbar) + Häufig benutzte Einträge bevorzugt markieren @@ -2029,12 +2078,24 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen? Auf erster Anweisung des Programmes anhalten. + + Ausnahmen auswählen + Decompiler aktivieren Bearbeiten und Fortfahren (EnC) aktivieren + + Voller Name der Ausnahme + + + Unterbrechen bei + + + Wählen Sie Ausnahmen aus, bei denen der Debugger anhalten soll + Ausnahmen @@ -2347,6 +2408,9 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen? &Passende Klammer markieren + + Aktuelle Zeile hervorheben + Symbole hervorheben @@ -2608,6 +2672,9 @@ Wollen Sie die neue Datei zum Projekt ${CurrentProjectName} hinzufügen? Standardwerte für VB Optionen: + + Codeformatierung + Konfiguration @@ -3314,6 +3381,9 @@ Bitte einen anderen Dateinamen wählen. Nicht abgedeckter Code + + Code teilweise abgedeckt + Spalte @@ -3586,6 +3656,9 @@ Bitte stellen Sie den Pfad zur NAnt-Anwendung in den SharpDevelop-Optionen ein.< Konnte Typ '{0}' nicht finden. Fehlt eine Assembly-Referenz? + + Es konnte keine Typ- oder Member-Definition an der Cursor-Position gefunden werden. + Das gewählte Element ist keine Klasse oder überschreibbares Mitglied, daher können keine Symbole angezeigt werden. @@ -4305,6 +4378,9 @@ Grund: Der Wert zu dem zurückgesetzt werden soll ist ungültig weil sich eine a Die Projektmappe wurde extern geändert. + + Formatierungsoptionen der Projektmappe + Neue &Compilerversion: @@ -5026,6 +5102,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Assembly aus GAC öffnen... + + Im Klassenbrowser anzeigen + Suche nach Klassenname @@ -5044,6 +5123,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Zeilenumbruch aktivieren/deaktivieren + + Ausdruck zur Überwachung hinzufügen + Haltepunkte @@ -5146,6 +5228,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Unterbrechen + + Unterbrechen bei behandelter ${ExceptionName} + Fortsetzen @@ -5689,6 +5774,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Referenz hinzufügen + + Service-Referenz hinzufügen + Web Referenz hinzufügen @@ -6086,6 +6174,9 @@ Bitte einen anderen verwenden. Basisklassen von ${Name} + + Basis-Member von ${Name} + Die Operation kann nicht ausgeführt werden, weil Ihr Sourcecode Fehler enthält: @@ -6098,6 +6189,12 @@ Bitte einen anderen verwenden. Klassen, die von ${Name} erben + + Aus Zwischenablagering + + + Der Zwischenablagering ist leer + In automatische Eigenschaft konvertieren @@ -6128,6 +6225,9 @@ Bitte einen anderen verwenden. Finde Basisklassen + + Finde Basissymbole + Abgeleitete Typen finden @@ -6234,7 +6334,7 @@ Bitte einen anderen verwenden. Alle bekannten Projektformate - Diese Version von SharpDevelop kann keine Projekte, die mit Visual Studio .NET 2003 (oder früher) erstellt wurden. + Diese Version von SharpDevelop kann keine Projekte laden, die mit Visual Studio .NET 2003 (oder früher) erstellt wurden. Versuchen Sie das Projekt mit SharpDevelop 3.2 zu konvertieren, oder erstellen Sie ein neues Projekt und fügen Sie ihm die existierenden Quellcodedateien hinzu. @@ -6563,6 +6663,9 @@ SharpDevelop 2 kompiliert Ressourcendateien anders: der Ressourcenname ist nicht Projektmappe öffnen + + Aus der Liste der kürzlich verwendeten Projekte entfernen + Startseite @@ -6575,6 +6678,12 @@ SharpDevelop 2 kompiliert Ressourcendateien anders: der Ressourcenname ist nicht Z ${Line} S ${Column} Zei ${Character} + + Lg ${Rows} * ${Cols} (${Total}) + + + Lg ${Length} + Sonstiges diff --git a/data/resources/StringResources.es-mx.resx b/data/resources/StringResources.es-mx.resx index 09e174de1d..39e6af912c 100644 --- a/data/resources/StringResources.es-mx.resx +++ b/data/resources/StringResources.es-mx.resx @@ -1987,6 +1987,12 @@ Ejemplo: "120", "MainClass", "Main.cs, 120". Borrar caché + + Inserte entrada de autocompletado de código seleccionado escribiendo los siguientes caracteres: + + + Inserte solamente entrada de autocompletado de código seleccionado escribiendo <Tab> o <Enter>. + Mostrar lista de completado después de escribir un carácter @@ -2008,6 +2014,9 @@ Ejemplo: "120", "MainClass", "Main.cs, 120". Guardar + + Preferencias de Tooltip + Enlaces en tooltips deben ir en @@ -3636,6 +3645,9 @@ Por favor configure la ubicación del archivo ejecutable de NAnt en las opciones No se pudo encontrar el tipo '{0}'.¿Falta una referencia a un ensamblado? + + No se pudo encontrar una definición de tipo o de miembro en la posición del cursor. + El elemento seleccionado no es una clase o miembro sobrescribible, así que no se puede mostrar ningún símbolo derivado. @@ -6140,6 +6152,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Buscar clases base de ${Name} + + Miembros base de ${Name} + La operación no puede ser realizada debido a que su código fuente contiene errores: @@ -6188,6 +6203,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Buscar clases base + + Buscar símbolos base + Buscar clases &derivadas diff --git a/data/resources/StringResources.es.resx b/data/resources/StringResources.es.resx index dee824e910..ec64f7058f 100644 --- a/data/resources/StringResources.es.resx +++ b/data/resources/StringResources.es.resx @@ -1984,6 +1984,12 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib Limpiar caché + + Inserte la entrada de autocompletado de código seleccionada escribiendo los siguientes caracteres: + + + Inserte solamente la entrada de autocompletado de código seleccionado escribiendo <Tab> o <Enter> + Mostrar lista de completado después de escribir un carácter @@ -2005,6 +2011,9 @@ Para crear/manipular un objeto ActiveX/COM, arrastre una clase de un Control/Bib Guardar + + Preferencias de Tooltip + Enlaces en tooltips deben ir a @@ -3637,6 +3646,9 @@ Por favor configure la ubicación del archivo ejecutable de NAnt en las opciones No se pudo encontrar el tipo '{0}'.¿Falta una referencia a un ensamblado? + + No se pudo encontrar definición de tipo o de miembro en la posición del cursor. + El elemento seleccionado no es una clase o miembro sobrescribible, así que no se puede mostrar ningún símbolo derivado. @@ -6146,6 +6158,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Clases base de ${Name} + + Miembros base de ${Name} + La operación no puede ser realizada debido a que su código fuente contiene errores: @@ -6194,6 +6209,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Buscar clases base + + Buscar símbolos base + Encontrar clases &derivadas diff --git a/data/resources/StringResources.jp.resx b/data/resources/StringResources.jp.resx new file mode 100644 index 0000000000..5ae55b59a1 --- /dev/null +++ b/data/resources/StringResources.jp.resx @@ -0,0 +1,5102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + このリソースは使われません。改行\nのテスト目的です。(この日本語翻訳について要望などありましたらSharpDevelop-jpまでお願いします) + + + アバウト + + + アンインストールの中止 + + + インストールの中止 + + + アップデートの中止 + + + 無効 + + + 有効 + + + インストール + + + アンインストール + + + アップデート + + + このアドインには依存するものが見つかりません。このアドインをインストールして有効にしてください。 + + + 無効 + + + アドインはSharpDevelopの再起動後に有効になります + + + アドインはSharpDevelopの再起動後にインストールされます + + + このアドインは2度インストールされました。1つをアンインストールしてください + + + アドインマネージャで利用するために、アドインは<識別子>を持たなければなりません + + + アドインをSharpDevelopの再起動後に削除します + + + アドインをSharpDevelopの再起動後にアップデートします + + + アドインをSharpDevelopの再起動後に無効にします + + + アドインマネジャーは無効にできません。アドインを再度有効にするのに必要です! + + + アドインを${ProductName}ディレクトリにインストールできません。インストール前に自動的に設定されます + + + 選択したアドインのアンインストールを中断します。 + + + 選択したアドインのインストールを中断します。 + + + 選択したアドインのアップデートを中断します。 + + + 選択したアドインを無効 + + + 選択したアドインを有効 + + + 矛盾した選択です。同じ状態のアドインのみ選択してください + + + アドイン インストール パッケージ + + + SharpDevelop アドイン|*.addin;*.sdaddin|すべてのファイル|*.* + + + アドインのインストール(&I) + + + アドインがインストールされていません。インターネットからアドインをダウンロードし、「アドインのインストール」をクリックして、ダウンロードしたファイルを選択すれば、インストールできます。 + + + Webサイトを開く + + + オプション + + + アドイン被依存 : + + + 必要な依存関係 : + + + プレインストールのアドインを表示 + + + アドインマネージャ + + + 不明なファイル形式 + + + 圧縮ファイルからインストール... + + + レポジトリ : + + + 検索 : + + + プレインストールのアドインを表示 + + + リリース前バージョンを表示 + + + アドインマネジャーはアンインストールできません。アドインを再インストールするのに必要です! + + + SharpDevelop アドイン レポジトリ + + + 作成 : + + + 依存関係 : + + + ダウンロード : + + + ファイル名 : + + + インストール済みバージョン : + + + 最終更新 : + + + 詳細 + + + 新バージョン : + + + 評価 : + + + クラスダイアグラムを表示 + + + ?????? + + + ???????????????? + + + Microsoft???????? + + + ??????????????????????????????????????????????????????? + + + ?????? + + + ???????? + + + ???????????? + + + 行当たりのバイト数 + + + ?? + + + ??? + + + ????? + + + ?? + + + 16?? + + + ????????? + + + ?? + + + ????? + + + URL入力 + + + 進む + + + ?????? + + + ?? + + + 新しいウィンドウ + + + 検索 + + + ?? + + + ???? + + + ?? + + + ????????? + + + {0} ???? + + + SharpDevelop?????????????? + + + ?????????????????????????????????????????????????????????????????? + + + + ???????????????????... + + + ??????... + + + COM??????????????????????????????????????! + + + ?????? + + + .NET???????????????? + + + ???????????????? + + + ???????????????? + + + ????????? + + + ???????????????? + + + ??????????????????? +???????????????????????????? + + + + ????: + + + ?????: + + + ????????? + + + ???????/??? + + + ?????????? + + + CPU????: + + + ????? + + + ??????? + + + ????? + + + ????????? + + + % ????? + + + ???? / ???? + + + ????(??) + + + ????(??) / ???? + + + ??: + + + ???20 + + + 検索... + + + ?????????continue??????????????????????????????????????????? + + + ?????????goto????????????????????????????????????????? + + + {0}???????????????????????? + + + ?????????? + + + ????????? + + + ?? + + + Equals()?GetHashCode()???????? + + + ???????? {0} ??? + + + ?????????????? + + + ToString()?????????????? + + + ?????????: {0} + + + ???????? + + + Subversion???????'{0}'????????/???????????????? + + + Subversion???????'{0}'????????/??????????????? + + + ??????? + + + ?????? + + + ????????? + + + ???? + + + ????? + + + ??????????? + + + ??????????????(&A) + + + Subversion????? + + + ??? + + + ???????????????????????????? + + + ????????? + + + ???????? + + + ?????? + + + ???????????????????????????????????? +?????????????????????????????? + + + ?????????TortoiseSVN??????????????????? + + + ?????? + + + Update to revision + + + ????????????! ??SharpDevelop????????????????? + + + ????? - ????????????????? + + + ???SharpDevelop?????????????????? + + + ???????????????????SharpDevelop???????????????????????????????????????? +SharpDevelop??????????????????????? + + + ??????????? + + + ????????? + + + ??????????????? + + + ?????/????? + + + ?????????????????????????????????????????????????? + + + <???????????> + + + ???????: + + + XML?????????: + + + ????????: + + + ????????????? + + + ?????????? + + + ???${encoding}??????????????????????????? + + + プロジェクトは実行可能コマンドではなくdllとして定義されます。プロジェクトオプションで実行可能コマンドとして指定することが出来ます。 + + + 説明 + + + ファイル名 + + + ????? + + + ??????????(&O) + + + ???????????(&V) + + + ???????????(&T) + + + ??????(&E) + + + ???????????(&P) + + + TypeLib??? + + + ????????? + + + ????{0}????????? + + + ???? + + + ???? for + + + ???? + + + ?????????????????? + + + ??? + + + ???????? + + + COM???????? + + + ???????????????????OK?????????????????????????????????????????? + + + ?????? + + + ???????????????? + + + ?????? + + + ????COM???????? + + + ??? + + + ?????? + + + ???(&C) + + + ??????????? + + + ?? + + + ???????(&S) + + + ?? + + + ????: + + + ?? + + + ????? + + + ??? + + + ??? + + + ??????? + + + {0} ???????????????????;??????????????? + + + ????? + + + ?????: + + + ???? + + + ??????????? + + + ???????? + + + ????COM???????? + + + ????COM??????????? + + + ??? + + + GAC?????? + + + ???????ActiveX/COM???????????????? + +???????????????COM????????????????????????????????????????????????? + +ActiveX/COM????????????COM???????????????? + +??????????????????????????????????? + + ActiveX/COM?????????/????????????????????????????????????????/??????????????? + + + ???????? + + + ???? + + + ?????????? ?????? + + + ??????? + + + ???????(&M) + + + ??????(&I) + + + ?? + + + ?? + + + ?????(&A) + + + ActiveX???? + + + ??????(&D)... + + + ?????(&O) + + + ???(&P)... + + + ?????(&T)... + + + ???????(&T)... + + + ???? + + + 16 ????? + + + ????????? + + + ???????? + + + ????? + + + ?????? + + + ???? + + + ???????????????????? + + + ????? + + + ???????? + + + COM???????????????????????? + + + {0}??????????????????? + + + ??????????????????? + + + ?????????????????????????????? + + + ????? + + + ????????(&F) + + + ????????(&S) + + + ??????? + + + ?? + + + ?????????????????????????????????????????? + + + ??????????????????????????????????(????????????)????????????????????? + + + ??????? + + + ???????????????;????????????????????????? + + + ????????????? + + + ????????????? + + + SharpDevelop???????? + + + ????? + + + ??? + + + バージョン情報 + + + ???(&C) + + + バージョン + + + ????????? + + + ??????????? + + + すべて破棄(&D) + + + ?????(&A) + + + 保存(&S) + + + ???????????? + + + ?????????????????? + + + ??? '{0}' ?????? + + + ?????????(&S): + + + ??????????????????(&C) + + + ??????????? + + + ????????????????? + + + ???????????? + + + ?? + + + ???? + + + ??????????????? +???????????????????????? +?:"120", "MainClass", "Main.cs, 120". + + + 背景色 + + + 太字 + + + ??? + + + 斜体 + + + ? + + + ??????? + + + ??????????????????????????????????????????????? +???????????????${CurrentProjectName}????????? + + + カテゴリ(&C): + + + 新しいファイル + + + ファイル名(&F) + + + プロパティを入力してください + + + ファイルを作成する前にプロパティを指定してください。 + + + テンプレート(&T): + + + ??????????????????(&D) + + + 新しいプロジェクト + + + 場所(&L): + + + 名前(&N): + + + ??????????????????: + + + ????(&C): + + + ??????????: + + + ??????(&A) + + + ??(&F) + + + ?? + + + ????(&F) + + + ?????: + + + ??????????(&S) + + + ??????????????(&T) + + + ????????????? + + + ????????? + + + ????? + + + ?????? '{0}' ??????? + + + ?????????? + + + ???????????? + + + すべてをマーク + + + ????????????(&C) + + + すべて置換(&A) + + + 置換(&R) + + + 置換 + + + 置換後の文字列: + + + 検索対象: + + + ???? + + + ????? + + + ワイルドカード + + + 指定されたテキストは見つかりませんでした。 + + + ????? + + + オプション: + + + ????????????????????? + + + ????????(&M): + + + ??????(&T): + + + ??????? + + + ??????????(&D) + + + ?? + + + 説明(&D) + + + ????????? + + + テンプレート(&T) + + + ??(&X) + + + グループを削除(&M) + + + ?????? + + + コードテンプレート + + + ?? + + + ??(&A) + + + コマンド(&C) + + + 引数のプロンプト(&P) + + + ?????????????(&C) + + + コンバインファイル名 + + + カレント列 + + + ????? + + + ??????? + + + ??????????(&I) + + + アイテムパス + + + ターゲットパス + + + アイテム拡張子 + + + ????????? + + + ????????????(&P) + + + プロジェクトファイル名 + + + #Develop????????????? + + + ターゲットディレクトリ(&T) + + + ターゲット拡張子 + + + ??? + + + ????(&T) + + + ???(&T) + + + ??????????????(&O) + + + ????????(&W) + + + 外部ツール + + + ?????????? + + + ???????????????????????????????????????? + + + ?????????????????????????? + + + ?? + + + ?? + + + ???????????????? + + + ????????????????????? + + + メンバの間に空行を挿入(&I) + + + ??????? + + + ??????????? + + + else????????????(&E) + + + ??????????(&A) + + + ??????????????(&D) + + + ?????????????(&S) + + + ????? + + + ?????????(&U) + + + コーディング + + + ?????? + + + ??????????????????????? + + + ????????????????? + + + ???? + + + ????(&H) + + + ??(&L) + + + ???????? + + + 全般 + + + ???????????(&A) + + + ?????????????????(&E) + + + ????????????(&D) + + + ???? + + + ????????????(&L) + + + 読み込み/保存 + + + ?? + + + Unix + + + Windows + + + ???????? + + + ?????? + + + ?????????????????????? + + + ?????????????? + + + ??????????????? + + + ?????????????? + + + ???: + + + ?????????????? + + + ???UI?????: + + + ????????????????????????. + + + UI用言語設定 + + + 好みの外観を選択してください(&A): + + + ?????????????????????(&E) + + + ??????????(&S) + + + ????????(&T) + + + ??????????????????(Office 2003?)??? + + + 表示スタイル + + + スタイル + + + コメントタグ + + + 名前(&N) + + + タスクリスト + + + トークンリスト(&T) + + + ?? + + + EOL???????????(&C) + + + タブをスペースに変換(&O) + + + Ctrl+??????????????? + + + ??????????(&U) + + + ??????????????????? + + + 文字入力中はマウスカーソルを隠す(&H) + + + インデント(&N) + + + インデントサイズ(&I) + + + ?? + + + なし + + + スマート + + + ??????????(&M) + + + ?? + + + 動作 + + + ?? + + + タブ + + + ?????(&T) + + + ???????????(&A) + + + ???????????(&R) + + + ???????????? + + + ?????????(&C) + + + ?????????????(&D) + + + ????????????(&F) + + + ???? + + + ???????????? + + + ????????(&E): + + + サイズ: + + + ???? + + + マウスホイールでズーム + + + クイッククラスブラウザパネルを表示(&Q) + + + ????????: + + + 列(&N) + + + キャレット後 + + + ????? + + + ??????? + + + ??????????? + + + EOL??????(&E) + + + ??????????????(&M) + + + 水平ルーラを表示(&H) + + + ???????(&I) + + + ??????????(&A) + + + 行番号を表示(&L) + + + 1? + + + なし + + + ??????? + + + マーカとルール + + + ???????(&S) + + + ?????(&T) + + + エラーに下線を表示(&U) + + + ???????(&C) + + + ?????????????? + + + ????????????????? + + + ??????????? + + + ???????? + + + ツール + + + ????????????? + + + ????? + + + モジュール + + + Windowsアプリ + + + アセンブリを生成するディレクトリを選択してください. + + + ????? + + + SharpDevelopの設定 + + + ????????????(&C) + + + ??????????????(&M) + + + ???????????????? + + + ??????????(&F) + + + ?????????? + + + Win32????????(&R) + + + ?? + + + DLL???????: + + + ?????? + + + ??????: + + + ??????: + + + ?? + + + ????(&O): + + + ?????(&S) + + + Intel 64-bit Itanium????? + + + ???(&A) + + + ?????(&S): + + + ?????????????(&R) + + + ????? + + + ????????????? + + + ?????????????????????????(&C) + + + ????????? ????: + + + ?? + + + mscorlib.dll??????(&M) + + + ?????? + + + VB?????????: + + + ?? + + + ??-?? + + + ?????????(&M) + + + ????????? + + + ????????(&W): + + + ?????????????????????????????????????????? + + + ???????? + + + ????????-?? + + + ??????????? + + + ????(&N) + + + ????????(&R) + + + ?? + + + ???? + + + ????(&A) + + + ???????????????? + + + ?????? + + + ?????? + + + ????????(&W) + + + ????????(&F) + + + ????????(&E) + + + ?????????(&N) + + + ???????? ??????? + + + ????????????????? + + + ???????????6?????????? + + + sn.exe?????????.NET Framework SDK????????????????????? + + + ??????? + + + ??????? + + + ??????????????????????????????????????????????????????????????? + + + ??????? + + + .NETアセンブリブラウザ + + + ????? + + + ????????????????? + + + ??? + + + バージョン + + + GAC + + + ?? + + + プロジェクトディレクトリ + + + ??????? + + + プロジェクト + + + ??? + + + 選択された参照 + + + ??(&E) + + + + + + ?? + + + ??? + + + ??????? + + + ファイル名 + + + ???????????????????????????????? + + + 対象(&C) + + + 行数 + + + プロジェクトモードで行う必要があります + + + ??(&S) + + + 合計 + + + ??? + + + ????SDK bin?????${Executable} ???????? + + + ${File}を読み込めませんでした。 ファイルが見つかりません。 + + + ???????? + + + ??????? + + + ???????????????????????????? + + + ???? + + + ソース + + + ???? + + + 追加(&A) + + + < 戻る + + + ??(&B) + + + キャンセル + + + ??(&C) + + + 保存先を選択 + + + ???(&C) + + + 新規 + + + ?? + + + ??(&D) + + + ?????? + + + 編集(&E) + + + エラー + + + {0}'???????????????? + + + 完了 + + + 終了 + + + ???? + + + ???????? + + + ???? + + + ???(&H) + + + 無視 + + + ??????? + + + ?????????????? + + + 現在のファイル + + + ディレクトリ + + + すべてのプロジェクト + + + 下へ移動(&D) + + + ????(&U) + + + ?? + + + ?? > + + + OK + + + ??(&O) + + + ????? + + + ?? + + + ?? + + + 更新 + + + 取り除く(&R) + + + ?????(&N) + + + ??? + + + ??????? + + + ?? + + + + + + 警告 + + + ?? + + + ????????????????????????. ?????????????? + + + ファイル名に不正な文字が含まれています。異なる名前を選択してください。 + + + ?? + + + ????... + + + ?????(&D): + + + ?????(&P): + + + ????????(???????????) + + + ????Web???? + + + XML???? + + + ?????????????????: + + + ????? + + + ???????????{0}??? + + + <?????> + + + ?????????????????? ${Count} ????????????????????????????????????? + + + ?????????? + + + ????????????? + + + ???????????????? + + + ?? + + + ??????: + + + ??????????????? + + + ?????????????????????????? + + + ??????? + + + ? {0} ???????: + + + ICSharpCode.Core?????????? + + + ? + + + ???????????????????Ctrl+Space????????? + + + FxCop??????????????: + + + ??Mono????????????????: + + + FxCop????? + + + FxCop?????? + + + FxCop?? + + + FxCop????????? - ???FxCop????????????? + + + ????????(CODE_ANALYSIS?????) (&E) + + + ?????????????... + + + ???????????????(CODE_ANALYSIS?????) (&R) + + + SharpDevelop????????FxCop?????????? + + + ??? + + + ???????? + + + ????????? + + + ??????? + + + ????? + + + ??? + + + ??????????????????????: + + + ?? + + + ?? + + + ????????? + + + 説明 + + + ???? + + + ????? + + + ??????? + + + ?????????? + + + ????????? + + + ??????? + + + ?????????????????????? + + + .NETリソースファイル(バイナリ) + + + C#ソースファイル + + + Javaソースファイル + + + ?????? + + + .NETリソースファイル + + + VB.NETソースファイル + + + XMLドキュメント + + + NAnt '{0}' ???????? + +SharpDevelop???????NAnt??????????????????? + + + NAnt???? + + + ??????????(&B) + + + ??????(&G) + + + NAnt?????(&V) + + + ??(&B) + + + NAnt???????? + + + ????????? + + + ?????????????(&T) + + + ????????(&T) + + + NAnt???(&S) + + + ??????? + + + PInvoke????? + + + ?? + + + ?? + + + ?????: + + + ???? + + + ?? '{0}' ??????????? + + + PInvoke?????... + + + C#??Python + + + VB.NET??Python + + + ??Python???????? + + + Python???????? + + + {0}'??????????????????????????????? + + + ??Ruby???????? + + + Ruby???????? + + + ${Path}?????${FileNameWithoutPath}????????????????. ??????????????????????????????????. + + + ${Path}???${FileNameWithoutPath}??????????????????. ???????????????????????????????????????????????????. (???????????????) + + + C#からVB.NETへ + + + デバッグ + + + デフォルト + + + <??> + + + ??????? + + + ??????? + + + <デフォルトにリセット> + + + ????????????????????????? +??:???????????????????????? + + + ?? + + + ???? + + + ???? + + + ??????????????????????(??????????) + + + ?????${ErrorCount} ???????????? + + + ????????? + + + ???????? + + + VB.NET??Boo + + + '${FileName}'をオープン出来ませんでした。有効なコンバインやプロジェクトではありません。 + + + SharpDevelop?'${SolutionName}'??????????'${ProjectName}'????????? + + + ${ProjectName}' ? '${SolutionName}' ??? + + + ${ProjectName}' ?????????????? + + + プリントドキュメントの生成が出来ません + + + この名前のファイルは書き込み保護され既にこの位置に存在します。 + + + ?? + + + ????????? + + + ??????? + + + ???????????? + + + ファイルを再読み込みしますか? +(再読み込みするとすべての変更が失われます) + + + ????????? ${LanguageBinding} ?${FileName}??????????? + + + ファイルを保存しました + + + ?????'${FileName}'????????? + + + ファイルを保存しました + + + ???????????????????? + + + VB.NETからC#へ + + + (+${NumOverloads} ???????) + + + ${CurrentMethodNumber} / ? ${NumberOfTotalMethods} + + + ファイル ${File} が外部で変更されたようです。再読み込みしますか? + + + ?? + + + SharpDevelop??? + + + SharpDevelop??????????????????????????????????SharpDevelop?????????????SharpDevelop?????????????????????? + + + ???????????????:??????????????????Web?????????????????? +??????????????????????????????????????????????????????????????????????? + + + ???SharpDevelop???????? ???????????????! + + + SharpDevelop???????????? + + + ??????????????SharpDevelop??????????????????? + + + フォームをデシリアライズできません。可能な理由:Initialize componentメソッドが手動で変更されました。 + + + ${RootComponent}'.???????????????????????? + + + ルートデザイナーはウィンドウフォーム表示テクノロジをサポートしていません。 + + + ??????????????: + + + ????? + + + ?? + + + ???? + + + ???????????(&O) + + + カスタム + + + ?????????? + + + ????????????????? + + + ???.NET????????????????? + + + バージョン + + + GAC + + + ????? ${Name} ??????????????????? + + + ?????(&F) + + + ??????????(&A) + + + ????? + + + ???? + + + ???????? + + + ???? + + + ??(&N) + + + ????????????????? + + + ??????????(&M) + + + ???????????????????????????? + + + ?????(&E) + + + ?????... + + + ???????? + + + ?????????? + + + ?????? + + + ????? + + + ?? + + + Visual Studio????????????????? + + + グリッドプロパティ + + + 高さ(&H) + + + ????????? + + + ??????????? + + + プロパティをアルファベット順にソート + + + ???????(&S) + + + ????????????? + + + ????? + + + グリッドに吸着(&N) + + + ?(&W) + + + ????????????"TODO"??????? + + + ?????????(??????????????????????????????????) + + + ?????????????? + + + ウィンドウフォームデザイナー + + + カテゴリ名(&C) + + + この名前は重複しています。別の名前を選択してください。 + + + ??????? + + + カテゴリ名を変更 + + + ??????????(&S) + + + ??????????????????????????????? + + + ???????????????????????(???????????????????????????) +?????????????????? + + + ??????????????????????????? +Windows?????????????????????????????????????????? +(?????????????????????????????) + + + False + + + True + + + Web????? + + + ?????? + + + ?? + + + ?? + + + ??URI + + + ???? + + + ?? + + + ????(&A) + + + ? + + + ?????Web???? + + + ????????? + + + ??????????????? +??????????????? + + + 不正なプロジェクト名。文字、数字、スペース、'.'もしくは'_'のみが許されています。 + + + ??????????:??????????????????? + + + ??????????:???????????????????????? + + + &Select the file types you want to associate with SharpDevelop: + + + ファイルタイプ + + + &Register file types at application startup + + + 大文字と小文字を区別する(&C) + + + ????????? + + + ??????????(&I) + + + ????????(&R) + + + ソート方向 + + + ??(&A) + + + 降順(&D) + + + ??????? + + + Url: + + + ????(&U) + + + ?????... + + + ????(&R) + + + 説明を表示(&S) + + + ??????????:???????????????????????????????? + + + ???? + + + ???????? + + + ファイルのビルドアクション + + + ?????????????????????????? + + + ??????? + + + ??????????? + + + ?????????????????????? + + + ??? + + + ????? + + + ????????????????????????????????????????????????????????????:???????????????? + + + ???????? + + + もしtrueならば、アウトプットパスに参照されたアセンブリがコピーされます + + + ??? + + + ???????? + + + URL?? + + + Web??URL?? + + + ????? + + + Web??URL + + + Web??URL + + + ??????????? ${combineLocation} ????????????????????????? + + + ? '${type}' ??????????????? + + + ファイル ${fileName} を書き込むことが出来ないかもしれません。 + + + プロジェクトファイル ${projectLocation} はすでに存在する。すでに存在するファイルを上書きしますか? + + + ???????????? + + + ?????????????????? + + + ?????????????? + + + ????????????????????? + + + ?????????????(&p) : + + + ???????????????(&t) : + + + ??????????????????? + + + ??????????? + + + <?????> + + + ?????? ??????? + + + ???????????????????SharpDevelop????????? +??????Framework????????????????????????????? + + + 現在の環境が見つかりません。 +'オプション->表示スタイル'を表示し、現在の言語環境を変更してください。 + + + 全てマークしました。 + + + 置換が全て完了しました。 + + + ???? + + + ??????? + + + ????????????? + + + ????????????? + + + ?????????????? + + + ??????????? + + + ??????? + + + ${Name} ?????... + + + ???????????????????? '{0}' ????????? + + + ??????? + + + ?????: + + + ???????: + + + ??????????? + + + WiX????? + + + ????????????ID '{0}' ??????????? + + + ?????????,????????????? + +?: + +Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension + + + ????? + + + ?? + + + ????????? + + + ???????????????????WiX????????????? + + + TARGETDIR ???????DirectoryRef??????????????????????WiX???????WiX3.0??????"http://schemas.microsoft.com/wix/2006/wi"???????? + + + ?????????? + + + ?????????... + + + WiX???????? + + + WiX????? + + + ???????????? + + + {1} ?? {0} ??????????? + + + ??... + + + WiX?????????????????????????????????????????????????????????????????????????????? + + + ??????????? + + + ????????????? + + + ??????64 + + + ?????? + + + ????? + + + ???? + + + ?????? + + + ??? + + + ?????????(x64) + + + ????????? + + + ?? + + + ??????? + + + ???? + + + Temp + + + ?????? + + + Wix?? + + + WiX????? + + + WiX?????????? + + + .NET Framework?? + + + ?????????? + + + WiX?????? + + + WiX?????????? + + + WiX????????? + + + ?????? + + + ???? + + + ????? + + + ?? + + + ??? + + + ????: + + + XSLT?????(&A)... + + + XSLT???????????? + + + スキーマを生成 + + + XPath?????(&X) + + + XSLT???(&O) + + + XSLT???(&T) + + + Xmlスキーマを選択 + + + XML???(&V) + + + ?????????????(&A) + + + ??????????????(&T) + + + XML????? + + + XML?????? + + + 拡張(&E) + + + ??????? + + + 接頭辞(&P) + + + スキーマ(&S) + + + ???? + + + スキーマを追加できません。'{0}'という名前空間はすでに存在します。 + + + ???? '{0}' ???????????????? + + + Xmlスキーマ + + + スキーマを追加することが出来ません。 + + + 変更を保存することが出来ません。 + + + ?????... + + + ???????? + + + ??????????? + + + ???????... + + + ???????????? + + + ???????????? + + + ????? + + + XML??? + + + ???? + + + XPath????0??????? + + + ?? + + + XPath??? + + + XPath: + + + XSLT?? + + + ILSpy?????????????? + + + ILSpy??? + + + ILSpy?????? + + + 外部ツールの構成ファイルを読み込むことが出来ません + + + テンプレート構成ファイルを読み込むことが出来ません + + + プロジェクトテンプレート読み込みエラー: + + + ?????????????? + + + ?????????? + + + ?????????? + + + ??????????... + + + ------ ?????: ??????: ${Project} ??: ${Config} ------ + + + ?????? + + + COM ?????????????? + + + ??: ${Script} + + + ??????... + + + ビルド完了 -- ${Errors} エラー, ${Warnings} 警告 + + + ${Name} ?????????(SharpDevelop??????) + + + SharpDevelop + + + 変更を破棄しますか? + + + 変更を保存しますか? + + + ?????????? + + + ?????? ${Project} + + + レディ + + + ????????? + + + ?????/?? + + + ???????? + + + ???????? + + + {0} @? {1} + + + ?? + + + ?????? + + + ????????(&O) + + + ???????????(&P) + + + ???????????(&S) + + + ???????? + + + ?? + + + ??? + + + ?? + + + ?????????? + + + ??? + + + ???????: + + + ???????? + + + ??????? + + + ??????????????????????????? + + + ??????????????????????? + + + ?????????????????????????????????????????? + + + [??????] + + + ?? + + + ????????? + + + ??????? + + + ????????? + + + ???? + + + ???????? ???! + + + {2} ??? {1} ?? {0} ????????????? + + + ?? + + + ?? + + + ?? + + + ??????????? + + + ??????????? + + + ???????????? + + + ???? + + + ????? + + + ???????? + + + at {0} + + + ???????? {0} ????????? + + + ???????? + + + ????????? + + + ????? + + + ?? + + + ??/??? ????????? + + + ???? + + + ????? + + + ??????????????????????? + + + {0} ? {1} ???????? + + + ????????? + + + ????????? + + + ????????????? + + + ??????????? + + + ????????????????? + + + ???????????????? + + + ?????????... + + + 16??????? + + + ????????? + + + ???? + + + ????????: + + + ???????: + + + ???????? + + + ????????????????????! + + + ???????? + + + {0} ?? {1} ?????? - ??? {2}. + + + ?????????????? + + + {1} ???????? {0}????????? + + + ??????????? + + + ????????????? + + + ?? + + + ???? + + + ????????? + + + ???????? + + + ???????????? + + + スレッド + + + ????????????????????????????? + + + ????????????????????????? + + + ??????????????????????????????? + + + ?? + + + ?? + + + ?? + + + ???? + + + ???? + + + ?? + + + ?? + + + ????????????? + + + ???? + + + ?????? + + + ????????: + + + ??????? + + + ${TaskService.Messages} ????? + + + ?????????????????? + + + ??????????????? + + + ??? + + + ?????? + + + ???? + + + ??? + + + ファイル + + + ??? + + + アウトプット + + + ビルド + + + ???? + + + プロジェクト + + + ????? + + + ????????? + + + <?????> + + + ???????? + + + ???? + + + in + + + 1 ???? + + + 1 ? + + + ???????? + + + ???? + + + ?????? + + + ??? + + + ??????? + + + ?????? + + + ?????? + + + ???????: ?? + + + ------ xml検証中 ------ + + + 検証: 成功 + + + ?????????????????????????? + + + 定義へ移動(&G) + + + 現在選択しているプロジェクトにnunitへの参照を追加 + + + ????????????? + + + ?????????? + + + ?????? + + + ?????? + + + ?????? + + + ????????????????????????????????? + + + エラーの読み込み + + + ?????? '${TestCase}' ?? + + + ?????? '${TestCase}' ??????????? + + + アセンブリをロード... + + + ?????????????? + + + ??????????? + + + ???(&C) + + + これ以外を閉じる(&b) + + + 保存(&A) + + + ????????(&A)... + + + ファイル名をコピー + + + ????????????????????? + + + ??? + + + ??? + + + ??????????????????????????????????????????? + + + ${FileName}' ?????????????????????????? + + + 追加 + + + ????? + + + Web????? + + + ${FileName}'?????????? + + + ${FileName}'??????????????????????? + + + ?????????? + + + ???????... + + + ????????? + + + Html???????(&E) + + + ????????? + + + コンパイル + + + 配置 + + + ???????... + + + ???????(&E) + + + ?????(&N) + + + ?????????(&N) + + + ??????????????(&F) + + + 開く(&P) + + + ????(&E) + + + 名前の変更(&N) + + + ????????????????(&A) + + + 新しいフォルダ + + + project {0} から全てのWeb参照を削除しますか? + + + ????Web????? + + + ????? (*.dll)|*.dll + + + アセンブリ + + + ???? + + + ????? + + + アセンブリの生成 + + + ECMA script ?? + + + 終了 + + + 明白なキャプチャ + + + ???? + + + ????????? + + + ホワイトスペースを無視 + + + ?? + + + ?? + + + マルチライン + + + ???? + + + public??? + + + ???? + + + 置換 + + + 置換後の文字列 + + + 置換結果 + + + 右から左へ + + + ??????? + + + ??? + + + 開始 + + + ??? + + + ??? + + + クラス名は空にすることが出来ません + + + ????????????: + + + 生成に失敗しました:理由 + + + ??????????????? + + + 有効なファイル名を入力してください。 + + + ファイル名を入力してください。 + + + ?? + + + 一致 + + + ????????????? + + + ?? + + + ???? + + + ??????? + + + ?? + + + ビットマップを更新... + + + ??????? + + + リソースを読み込めません + + + ?????????????: ??????????????'{0}' ??????? + + + ?? + + + ???????(&F) + + + 文字列の追加(&N)... + + + リソース名をコピー + + + 名前の変更(&R) + + + + + + このキーはすでに定義されています。別のものを使ってください。 + + + すべてのファイル (*.*) + + + ????????? (*.exe;*.dll) + + + Boo?????????? + + + コンバインファイル (*.cmbx) + + + C++ファイル (*.cpp;*.c;*.hpp;*.h) + + + C#???? (*.cs) + + + ???????? + + + ???????? (*.exe;*.com;*.pif;*.bat;*.cmd) + + + ???????? (*.ico) + + + IL???? + + + ILAsm?????????? + + + ???????? + + + NAnt??????? + + + ???????? (*.resources;*.resx) + + + ??????? (*.sln) + + + VBファイル (*.vb) + + + XML???? (*.xml) + + + Xmlスキーマファイル (*.xsd) + + + XSL???? + + + グリッドに合わせる(&G) + + + ??????(&C) + + + ???? + + + ????????????! + + + ${Name}?????? + + + ?????????????????????? + + + ${Name}?????? + + + ???????? + + + ??????? + + + ?????????? + + + ????????(&D) + + + ???????? + + + ?????????... + + + ?????????(&O) + + + ????????(&B) + + + ???????? + + + ?????????????????????????? + + + ????'${FileName}'??????? + + + ${Name}??????? + + + ????????import??????????(&U) + + + ???????????? + + + ?????(&R) + + + ASCIIコード表 + + + ?????????? + + + C#ドキュメントタグ + + + ?? + + + ????? + + + ???????????????????????? + + + XSLT + + + ?????????????????? + + + ??SharpDevelop????????Visual Studio .NET 2003(??)?????????????????????????? +??????SharpDevelop 3.2???????????????????????????????????? + + + {0}????????:\n{1} + + + ??????????? {0} ????????????????????????? + + + {0}????????::\n{1}\n\n???????????????? + + + ??????????????????????? +SharpDevelop 2??????????????????:????????????????????????????????????????????? + +?????????????????/??????? + + + ????????????????/?????????? + + + {0}'?????????????????????? + + + データベース + + + SharpDevelop???? + + + ?????????? + + + ????? + + + ?????????? + + + グループ化/並び替え + + + ?????????? + + + ???????? + + + 選択を表示 + + + 基本設定 + + + ???? + + + 詳細セクション + + + ページフッタ + + + ページヘッダ + + + ???????? + + + ???????? + + + ???????????? + + + SharpDevelop??????????????????1?????????????????????? + + + ???'SharpReport'????????????????????? + + + ファイルが壊れていて読み込めません(SharpReportファイルは不正なフォーマットです) + + + ?????????? + + + ?????? + + + ????????? + + + ?? + + + ??? + + + ??????????? + + + ????? + + + ?????????? + + + ???????? + + + ?????? + + + ?????? + + + ?? + + + ??????????? + + + PDF??????? + + + ?? + + + ? + + + SharpReport - コントロール + + + データフィールド + + + ???? + + + SharpReport - 機能 + + + ????? + + + ページ数 + + + 今日 + + + ???????? + + + ???????? + + + ???? + + + ? + + + ???? + + + 矩形 + + + ? + + + ??? + + + ???? + + + ??????? + + + ???????? + + + ??????? + + + ????? + + + ??????? + + + ????????? + + + ?????? + + + ????????? + + + ??????? + + + ????????? + + + ??(????)??? + + + ???????? + + + タブを追加(&A) + + + ?????(&D) + + + ??"${TabHeader}"????????(????????????????????) + + + ?????(&D) + + + アイテム"${TabItem}"を削除しますか? + + + ????????(&R) + + + ????????(&R) + + + 作者を表示 + + + ?? + + + ??????? + + + ???? + + + ????? + + + ????? + + + ???????? + + + ?? + + + ???? + + + スタート + + + ?????????? + + + コンバインを開く + + + ??????? + + + 挿入 + + + 上書 + + + 行:${Line} 列:${Column} 文字:${Character} + + + その他 + + + Windows???????? + + + ???????????? + + + ??????????????? + + + ??????? + + + ??? + + + ????????? + + + 空のファイル + + + ?? + + + 空のヘッダファイルを生成。 + + + ヘッダファイル + + + 空のHTMLファイル + + + ??HTML??????? + + + ???????? + + + "My"???????????????? + + + ???NAnt?????????? + + + NAnt??????? + + + #if TEST ... #endif'??? + + + ??????????TEST??????????????????????? + + + SetUp??? + + + True????SetUp??? + + + TearDown??? + + + True????TearDown??? + + + ????? + + + ????? + + + ?????????????????????????????????????? + + + 空のリソースファイルを作成 + + + 空のリソースファイル + + + #Dの空のメニューコマンド。 + + + メニューコマンド + + + #Dのオプションパネル。 + + + オプションパネル + + + 様々な場合に使用することができるコマンド。 + + + シンプルコマンド + + + #Dパッドコンテンツ (#Dビューの例)。 + + + 空のパッド + + + #Dビューコンテンツ (テキストエディタやリソースエディタの例) + + + 空のビュー + + + シングルトンパターンに従ったクラスを生成します。 + + + シングルトンクラス + + + Equals()?GetHashCode()??????????? + + + ???????Equals()?GetHashCode()????????? + + + ??? + + + ?????????? + + + ?????????????? + + + 基本的な単体テストを生成します。 + + + ??????? + + + ASP.NET Web?????? + + + ASP.NET Web???? + + + ??????????ASP.NET??Web??????????? + + + ASP.NET Web???? + + + ASMX Web???????????????? + + + ASP.NET Web???? + + + Windows????????????? + + + フォーム + + + Windows?????????????????? + + + ユーザコントロール + + + WPF????????? + + + WPF??? + + + WPF?????????? + + + WPF?????????? + + + WPF????????? + + + WPF????? + + + WPF????? + + + Wix用空の断片ファイル + + + 空のWix断片ファイル + + + ????????????? + + + ????????????????? + + + ?????????????? + + + ?????????app.config??????????????????MSBuild????appname.exe.config??????????? + + + 空のXMLファイル + + + 空のXMLファイルを作成。 + + + ??XML??????? + + + XML???? + + + ??XML???????????? + + + XML????????? + + + ????????????????????? + + + 空のコンバイン + + + ??????????????????????????? + + + ???????? + + + コマンドラインアプリケーションを生成するプロジェクトです。 + + + ????????????? + + + ????????????????? + + + Direct3D?????????????????????????????? + + + Direct3D???????? + + + 空のプロジェクト。 + + + ???????? + + + Glade# ????????????????? + + + Gtk# ????????????????? + + + MSIインストーラのためのWindowsインストーラプロジェクト。 + + + ???????????? + + + COM??????????????????? + + + ?????? + + + SharpDevelop????????????????????????? + + + SharpDevelop???? + + + Silverlight????????????????????? + + + ?????????????????????????????????????? + + + ?????????????? + + + Windowsアプリケーションに使用されるユーザコントロールを生成するプロジェクトです。 + + + Windowsユーザコントロールライブラリ + + + ASP.NET Web??????????????? + + + Windows?????????????????????????????? + + + Windows???????? + + + Windows??????????????? + + + Windowsサービス + + + ?????WPF??????????? + + + 1?????????????????WPF??????????? + + + ??????????????????????? + + + ????????... + + + ??(&A) + + + ?????? + + + ???? + + + ???????????(&B) + + + ????????????(&C) + + + ??/??????????? + + + ??????????(&P) + + + ${CurrentProjectName} ?????(&E) + + + ????(&D) + + + ?????????... + + + ??(&B) + + + ??????????? + + + デバッグを続ける(&C) + + + ????????? + + + ???? + + + ??????.NET Framework????????????????????????????????????????? + + + ??????????? + + + ????????? + + + ???????????????????????????? + + + ?????????????????????????? + + + ????????? + + + ????????? + + + ???????????????????? + + + ?????? + + + ?????? + + + ??????? + + + ??????? + + + ???????? + + + ???????? + + + プロセスを停止 + + + 現在のプロセスを停止させ、デバッガを終了します。 + + + ????????????? + + + 編集(&E) + + + コピー(&C) + + + ??????????????????? + + + ????(&T) + + + ??????????????????????? + + + ??(&D) + + + ?? + + + 折りたたみ(&O) + + + 定義だけ表示(&D) + + + すべての折りたたみをトグル(&A) + + + ???????????(&T) + + + ??????(&F) + + + ???????????? + + + 大文字小文字変換 + + + ??????????? + + + 行頭のタブをスペースに変換 + + + ????????? + + + 行頭のホワイトスペースを削除 + + + 行末のホワイトスペースを削除 + + + 並び替え... + + + スペースをタブに置換 + + + タブをスペースに置換 + + + 大文字に変換 + + + ????(&P) + + + クリップボードの文字列を挿入します + + + やり直し(&R) + + + ?????????????? + + + ?????(&A) + + + 元に戻す(&U) + + + ??????????????? + + + ???????(&W)... + + + ????(&F) + + + ???????????????? + + + ?????????????????? + + + ???(&C) + + + ファイル(&F) + + + コンバイン(&C) + + + すべてのバッファを閉じる(&L) + + + アプリケーションの終了(&E) + + + 新規作成(&N) + + + ????(&F)... + + + ??????????????? + + + ??????(&P).. + + + コンバイン(&C)... + + + 開く(&O) + + + ????(&F)... + + + ???????????? + + + ??????/???????(&P)... + + + ??(&R) + + + ???????(&P) + + + ?????????(&F) + + + ???????????(&R) + + + ??????????(&E) + + + 上書き保存(&S) + + + ???????????????? + + + ?????(&L) + + + 現在オープンしているバッファをすべて保存します + + + ????????(&A)... + + + フォーマット(&O) + + + ??(&A) + + + 下(&B) + + + ????(&C) + + + 左(&L) + + + 右(&R) + + + グリッドに合わせる(&G) + + + 上(&S) + + + 上下中央(&M) + + + ??????????(&C) + + + ??(&H) + + + 上下(&V) + + + 左右の間隔(&H) + + + 最前面へ移動(&B) + + + ??(&R) + + + 間隔を狭くする(&D) + + + 間隔を広くする(&I) + + + ????????(&E) + + + 最背面へ移動(&S) + + + アイコンを並べる(&L) + + + コントロールのロック(&L) + + + ??(&O) + + + ??????(&B) + + + ??????(&S) + + + 同じサイズに揃える(&M) + + + ??(&B) + + + ??(&H) + + + ?(&W) + + + グリッドのサイズに揃える(&D) + + + ??????????(&S) + + + ?????(&P) + + + ????????(&T) + + + ?????(&V) + + + 削除(&R) + + + ???????(&D) + + + ???????(&I) + + + ????????(&E) + + + ヘルプ(&H) + + + ???????(&A)... + + + ????????? + + + ?????????(&D) + + + GPL???(&G)... + + + ReadMe(&R)... + + + ????????????? + + + ???Tip(&T)... + + + 目次(&H) + + + Web + + + プロジェクト(&P) + + + ????????(&O)... + + + 現在のプロジェクトをビルド + + + ?????????????????????? + + + ???????????????????????????(???????) + + + ??????????????????????????????? +???????????? + + + ??????? + + + ??(&R) + + + ????????????????????(?????????) + + + ??(&S) + + + ?????????????(&C) + + + ???????????????????????? + + + ??(&F)... + + + ????(&N) + + + ?????????(&S) + + + ??(&G) + + + ??????????(&M) + + + ?????????? + + + 次のブックマーク(&X) + + + 次のブックマークへ移動します + + + ????????(&P) + + + ?????????????? + + + 置換(&R)... + + + ブックマークの挿入/削除(&T) + + + ????????????????????????? + + + ツール(&T) + + + ??????(&C) + + + ????????????????? +???????: + + + + ???????: + + + ?????????? + + + ????... + + + ???GUID???(&G) + + + オプション(&P)... + + + Quick XMLドキュメント + + + ?????????? + + + ??(&V) + + + デバッグ(&D) + + + フルスクリーン(&F) + + + ?????? + + + ????? + + + ???? + + + スタートページを表示(&S) + + + ツール(&T) + + + ウィンドウ(&W) + + + 次(&N) + + + 前(&P) + + + 分割(&S) + + + ??: + + + ?????????????????????????????????????????? + + + ??: + + + ???: + + + ??????? + + + 選択範囲をコメント化 + + + コピー(&C) + + + ????(&T) + + + ファイルモード + + + インデント + + + ????(&P) + + + ????? + + + 選択範囲を非コメント化 + + \ No newline at end of file diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx index c6d41f1639..13e270d3cf 100644 --- a/data/resources/StringResources.resx +++ b/data/resources/StringResources.resx @@ -1729,6 +1729,9 @@ Examples: "120", "MainClass", "Main.cs, 120". Italic + + Underlined + Export highlighting colors @@ -3789,6 +3792,10 @@ Please configure the NAnt executable's location in the SharpDevelop Options.Could not find type definition at the cursor position. Error message when using Search>Find Base Classes when the cursor is not on a type reference. + + Could not find type definition or type member at the cursor position. + Error message when using Search>Find Base Classes when the cursor is not on a type reference or type member. + Send Line to Ruby Console @@ -6324,7 +6331,7 @@ Removed the end part of the original message ", reason '${Message}'" since this Update bitmap ... - Text for the link label that make it possible to update the stored bitmap + Text for the button that makes it possible to update the stored bitmap Do you really want to delete the selected resource(s)? @@ -6473,6 +6480,9 @@ Removed the end part of the original message ", reason '${Message}'" since this Base classes of ${Name} + + Base members of ${Name} + The operation cannot be performed because your source code contains errors: @@ -6525,6 +6535,9 @@ Removed the end part of the original message ", reason '${Message}'" since this Find base classes + + Find base symbols + Find &derived classes @@ -6843,17 +6856,14 @@ The resources files have been renamed/moved accordingly. Base settings - Report Type + Report Type : - File Name + File Name : Graphics Unit - - Basic report settings - Report Model @@ -6867,10 +6877,10 @@ The resources files have been renamed/moved accordingly. Push Data - Report Name + Report Name : - Report Type + Report Type : Select the GroupColumn @@ -6902,17 +6912,6 @@ The resources files have been renamed/moved accordingly. Available Fields - - Path to Schema (.xsd) File - - - Save Result (Schema and Data) - Save displayed Data to *.xsd File - - - Save Result (Schema only) - Save only the Schema to *.xsd File - Show Query result @@ -8182,4 +8181,176 @@ Error while starting: This resource is not being used. Its purpose is to test the translation database and has a line break + + Tooltip settings + + + Insert selected code completion entry by typing the following characters: + + + Only insert selected code completion entry by typing <Tab> or <Enter>. + + + Choose exceptions you want the debugger to break on + + + Break on + + + Full exception name + + + Choose exceptions + + + Break on handled ${ExceptionName} + + + Solution + + + Project + + + All opened files + + + File + + + Namespace + + + Class/Module + + + Update icon ... + Text for the button that makes it possible to update the stored icon + + + Can't load resource from file: {0} + + + Add &boolean entry + + + Filter: + + + Update cursor ... + Text for the button that makes it possible to update the stored cursor + + + Search For Issues... + + + Automatically fix issues if possible + + + Service References + + + Reformat + + + Reset + + + Run on Build + + + Filenames: + + + Columns: + + + Ctrl + + + Shift + + + Alt + + + Win + + + Clear console + + + Delete history + + + <Text was truncated because it was too long> + + + Building project ${Name} is not supported. + + + Services: + + + Operations: + + + Manage Packages... + + + Restore Packages + + + Package Management + + + Package Sources + + + Package Management Console + + + Code inspection + + + Formatting + + + Use Up/Down to move to another location. +Press Enter to select the location. +Press Esc to cancel this operation. + + + Client + + + Generate asynchronous operations + + + Public + + + Internal + + + Access level for generated classes: + + + Welcome to the SharpReport Wizard + + + Basic report settings + + + Classes in selected Project + + + Page Layout + + + No project selected, please enter FieldNames + + + <Create ${HandlerName}> + \ No newline at end of file diff --git a/data/resources/StringResources.ru.resx b/data/resources/StringResources.ru.resx index fbe55df7e1..1e2ad89d23 100644 --- a/data/resources/StringResources.ru.resx +++ b/data/resources/StringResources.ru.resx @@ -176,13 +176,13 @@ Плагин станет недоступным после перезапуска SharpDevelop - Вы не можете отключить Менеджер Плагинов. Он необходим для переподключения Плагинов! + Вы не можете отключить Менеджер Плагинов. Он необходим для переподключения плагинов! - Нельзя устанавливать плагины внутри папки ${ProductName},поскольку они являются предустановленными по умолчанию. + Нельзя устанавливать плагины внутри папки ${ProductName}, поскольку они являются предустановленными по умолчанию. - Отменяет деинсталляцию выделенных плагинов. + Отменяет удаление выделенных плагинов. Отменяет установку выделенных плагинов. @@ -213,7 +213,7 @@ Скачайте их из Интернета, нажмите 'Установить плагин' и выберите скачаный файл, чтобы установить его. - Открыть Web-сайт + Открыть Веб-сайт Опции @@ -236,18 +236,30 @@ Установить из архива... + + Репозиторий: + Поиск: Показать предустановленные плагины + + Показывать нестабильные версии + - Вы не можете деинсталлировать Менеджер плагинов, поскольку он понадобится для инсталляции плагинов! + Вы не можете удалить Менеджер Плагинов, поскольку он понадобится для инсталляции плагинов! + + + Репозиторий плагинов SharpDevelop Создатель: + + Зависимости: + Загрузки: @@ -270,7 +282,7 @@ Рейтинг: - Пожаловаться: + Пожаловаться Версия: @@ -293,6 +305,9 @@ Добавить + + Автоматически проверять обновления + Сместить вниз @@ -311,6 +326,12 @@ Плагины + + Разное + + + Репозитории + Следующие установленные плагины зависят от "{0}": @@ -318,6 +339,15 @@ Они перестанут работать, если удалить данный плагин! Вы уверены, что хотите продолжить? + + Плагины SharpDevelop|*.sdaddin;*.addin|Все файлы|*.* + + + Щелкните сюда, чтобы посмотреть обновления + + + Доступны обновления для SharpDevelop + Доступно @@ -327,6 +357,27 @@ Обновления + + В этом файле используется несколько разных символов переноса + + + Используются разные символы переноса + + + Исправить + + + Ошибка: + + + Следующий + + + Предыдущий + + + Использовать регулярные выражения + Показать диаграмму классов @@ -348,9 +399,18 @@ Режим справки + + Не удалось найти Help Library Manager. Для использования контекстной помощи в SharpDeveloper, необходимо скачать и установить Microsoft's Windows SDK 7.1. + + + Не удалось найти Help Library Manager. Пожалуйста, удостоверьтесь в том, что он был корректно установлен. + Установленные справочные каталоги + + Запустить Help Library Manager + Микрософт "Help Viewer" @@ -466,7 +526,10 @@ Объединить рекурсивные вызовы. - Не профилировать внутренние вызовы dotNET. + Не профилировать внутренние вызовы .NET. + + + Собирать данные только в конце сессии. Начать сбор данных немедленно после начала сессии. @@ -496,17 +559,17 @@ Аргументы командной строки: - Выберите путь выполнимой программы для профилирования. + Выберите путь до программы для профилирования. Дополнительно можно указать рабочий каталог и аргументы командной строки. - Путь к выполнимому файлу: + Путь к исполняемому файлу: Старт профайлинга - Выполнимый файл для профайлинга + Исполняемый файл для профайлинга Рабочий каталог: @@ -602,7 +665,19 @@ Старт с профайлером - Искать.. + Поиск ... + + + Добавить setter + + + Выберите поля, для которых вы хотите создать свойства: + + + Реализовать INotifyPropertyChanged + + + Создать свойства Извлечь в отдельный метод @@ -629,7 +704,7 @@ Извлекаемый исходный текст в {0} не поддерживается! - Вставка конструктора + Вставить конструктор Добавить проверку на null @@ -643,6 +718,9 @@ Переменная + + Переопределить Equals() и GetHashCode() + Добавить интерфейс {0} @@ -652,8 +730,17 @@ Добавить перегрузку ${otherMethod} + + Окружить #region + + + Переопределить ToString() + - Выберите поля, которые хотите использовать при выполнении ToString(): + Выберите поля, которые хотите использовать для реализации ToString(): + + + Проверить текущий проект с помощью StyleCop Проверить с помощью StyleCop @@ -662,34 +749,37 @@ Анализ исходного кода - Добавить в список отклоненных + Добавить в ignore список Аннотировать - Ветвь/ярлык + Branch/tag - Файл/папка не может быть скопирован, так как он в состоянии подверсии '{0}'. + Файл/папка не может быть скопирован, так как он в SVN статусе '{0}'. - Файл/папка не может быть перемещён, так как он в состоянии подверсии '{0}'. + Файл/папка не может быть перемещён, так как он в SVN статусе '{0}'. + + + Файл/папка не может быть удален, так как он в SVN статусе '{0}'. Проверить на изменения - Получить + Checkout Почистить - Совершить + Commit - Создать отрывок + Создать патч Удалить каталог @@ -698,7 +788,7 @@ Разность - Править противоречия + Править конфликты Ошибка удаления ${File} @@ -713,7 +803,7 @@ История - '{0}' был удалён из чёрного списка. + '{0}' был удалён из ignore списка. Заблокировать @@ -722,7 +812,7 @@ Считать противоречие разрешенным - Объединить + Merge Автоматическое добавление новых файлов @@ -746,13 +836,16 @@ Переместить - Перестать игнорировать + Удалить из ignore списка - Броузер хранилища + Repository browser - Вернуть + Revert + + + Файл бы изменен. Вы действительно хотите удалить его? Граф ревизий @@ -768,16 +861,16 @@ Вы должны сохранить эти файлы перед началом операции. - Переключить + Switch Для этого действия требуется TortoiseSVN - Обновить + Update - Обновить до версии + Update до ревизии Благодарим Вас за участие! Вы всё ещё можете отказаться с помощью настроек SharpDevelop. @@ -785,6 +878,21 @@ Я хотел бы принимать участие - собирать и передавать данные об использовании + + Вы всё ещё можете согласиться с помощью настроек SharpDevelop. + + + Я не хочу участвовать + + + Нам нужна ваша помощь! Для того чтобы улучшить SharpDevelop нам нужно знать какими возможностями вы чаще всего пользуетесь. SharpDevelop может собирать эту информацию и загружать автоматически. + + + Политика конфиденциальности + + + Показать собранные данные + Редактировать колонки и строки таблицы @@ -842,6 +950,9 @@ XAML + + Расширенная подсветка + Файл не может быть записан в текущей кодировке ${encoding} без потери данных. @@ -1014,6 +1125,9 @@ Параметры + + Остановить всё журналирование + Остановить журналирование @@ -1062,6 +1176,9 @@ Пожалуйста, выберите Узел Дерева + + Вы должны выбрать узел в каком-либо дереве; поиск начнется с этого узла + Имя @@ -1107,6 +1224,9 @@ Версия + + Автоматически получать COM свойства + Панели @@ -1304,6 +1424,18 @@ Ожидание запуска приложения + + Анализ качества кода + + + Автоматически форматировать код + + + Вы уверены, что хотите сбросить все заданные ранее настройки форматирования? + + + Сбросить к: + Вставка ссылки на явный метод; чтобы вставить новую заглушку метода ещё раз нажмите клавишу TAB или Enter. @@ -1419,9 +1551,15 @@ Курсив + + Эта версия настроек не поддерживается! + Значение + + Сбросить на настройки по-умолчанию + Пример @@ -1771,9 +1909,39 @@ Отладка + + Включить декомпилятор + + + Полное имя исключения + + + Остановиться на + + + Выберите исключения, на которые будет реагировать отладчик + + + Исключения + + + Перешагивать, если код не содержит отладочной информации + + + Перешагивать через однострочные свойства + + + Запретить JIT оптимизации + + + Запретить NGEN оптимизации + Символы + + Отладка без исходников + Заголовок @@ -1828,6 +1996,9 @@ Переносить длинные строки + + Параметры построения и запуска + Неверный путь к указанному проекту @@ -1849,6 +2020,9 @@ Установки + + Показать список ошибок, если постороение завершилось с ошибками + В работе: @@ -1927,6 +2101,9 @@ Вырезать/копировать всю строку, если ничего не выделено + + Включить виртуальные пробелы + Прятать курсор мыши во время набора текста @@ -1966,6 +2143,9 @@ Автоматическая вставка шаблонов + + Использовать умные отступы + Автодополнение кода @@ -2017,12 +2197,18 @@ Показать линию каретки + + Включить анимации + Показывать конец строки Подсвечивать соответствующие фигурные скобки + + Подсвечивать текущую строку + Выделенные символы @@ -2197,6 +2383,9 @@ Целевая версия Framework: + + Трактовать предупреждения как ошибки + Все @@ -2248,6 +2437,9 @@ Удалить проверку переполнения integer + + Форматирование кода + Конфигурация @@ -2266,6 +2458,9 @@ Настройки запуска + + Запуск внешней программы: + Запустить проект @@ -2335,6 +2530,9 @@ Подписывание ВОдинЩелчок + + Подпись ClickOnce приложения пока не реализована. + Подсказка к паролю: @@ -2518,6 +2716,9 @@ Добавить + + Дополнительно + < Назад @@ -2842,6 +3043,9 @@ SharpDevelop не может найти FxCop. Пожалуйста, выберите в настройках SharpDevelop установочную папку FxCop + + Не удалось прочитать файл лога FxCop: + Mono не установлена. @@ -2854,6 +3058,9 @@ Анализ кода + + Проверить текущий проект с помощью FxCop + Проверить FxCop-ом @@ -2875,6 +3082,9 @@ Добавить/Удалить правило сборки + + Не удалось найти FxCop - Убедитесь, что FxCop установлен. + Выбрать папку, содержащую правило сборки: @@ -2908,9 +3118,15 @@ Непокрытый код + + Код частично покрыт тестами + Столбец + + Содержимое + Параметры экрана @@ -2980,6 +3196,9 @@ Связать конкретные модули .NET + + Генерировать отладочную информацию + Расположение файлов библиотек. @@ -2989,9 +3208,18 @@ Препроцессор + + Определить переменную препроцессора + Расположение заголовочных файлов + + Сбросить все переменные препроцессора + + + Сбросить следущие переменные препроцессора + Символ @@ -3019,6 +3247,9 @@ XML-документ + + Не удалось найти NAnt '{0}'. Пожалуйсте укажите путь к NAnt в настройках SharpDevelop. + Построение NAnt остановлено. @@ -3094,6 +3325,9 @@ Остановить NAnt + + Не выбран проект для отладки. + Тесты @@ -3175,6 +3409,9 @@ Макет отладки + + Расположение по-умолчанию + <Правка> @@ -3278,6 +3515,9 @@ Файл сохранен + + Выделить файл окне проектов + Из VB.NET в C# @@ -3541,6 +3781,9 @@ Перейти + + Пространство имен содержит недопустимые символы. Пространство имен может содержать только буквы, цифры и символ подчеркивания. + Пространство имён: @@ -3765,12 +4008,21 @@ Загрузка ${Filename}... + + Закрыть решение + Держать старое решение открытым Перезагрузить решение + + Файлы решения были изменены другой прогаммой. + + + Настройки форматирования для Решения + Преобразовать выбранные проекты в: @@ -3852,6 +4104,36 @@ Тест + + Не удалось запустить юнит-тесты. Не удалось найти файл '{0}'. + + + Веб + + + Приложение уже существует. + + + Не удалось обнаружить локальный сервер IIS или IIS Express. + + + Порт сервера: + + + Url проекта: + + + Веб-сервер + + + Не удалось подключиться отладчиком к процессу. + + + Использовать веб-сервер IIS Express + + + Использовать локальный веб-сервер IIS + Добавить расширения @@ -4051,6 +4333,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Расширение .NET Framework + + WiX не установлен. Пожалуйста, скачайте WiX с сайта http://wixtoolset.org/ + Различия не обнаружены. @@ -4219,6 +4504,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Пространства имён + + Найдено 0 совпадений по XPath запросу. + Префикс @@ -4234,9 +4522,30 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< XPath: + + Совпадение + Вывод XSLT + + Не удалось найти ILSpy в указанном месете, или у SharpDevelop не достаточно прав для доступа к нему. + + + Путь к ILSpy не указан. + + + Открыть IlSpy + + + Эта возможность требует наличия ILSpy. Если у вас он еще не установлен, вы можете бесплатно скачать его здесь: + + + Полный путь к IlSpy.exe + + + Изменить путь к ILSpy + Невозможно загрузить конфигурацию внешнего инструмента @@ -4294,6 +4603,15 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Вы действительно хотите отменить изменения? + + локальная переменная + + + пространство имен + + + параметр + Сохранить текущие изменения? @@ -4330,6 +4648,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Закладки + + Добавить в рабочее пространство + Назад @@ -4360,6 +4681,15 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Ничего не найдено. + + Открыть сборку + + + Открыть сборку из файла... + + + Открыть сборку из GAC... + Классы @@ -4369,6 +4699,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Показывать вывод из: + + Перенос текста + + + Добавить выражения для наблюдения + Точки останова @@ -4381,6 +4717,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Язык + + Модуль + Показать имена аргументов @@ -4390,6 +4729,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Показывать внешние методы + + Показать номера строк + + + Показать имена модулей + Вопрос @@ -4399,6 +4744,15 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Стоп-точка + + Сработала точка останова! + + + Сработала точка останова на строке {0} в {1}. + + + Сработала точка останова на строке {0} в {1} так как {2} + Условие @@ -4411,6 +4765,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Убрать точку останова + + Редактировать условие... + Включить точку останова @@ -4432,9 +4789,15 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Консоль + + Отладить исполняемый файл + Прервать + + Остановиться на ${ExceptionName} + Продолжить @@ -4450,6 +4813,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< как {0} в {1}:строка {2} + + Исключения {0} было выброшено: + Показать подробности об Исключении @@ -4474,6 +4840,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Время + + Показать/Скрыть кнопки для изменения масштаба + Локальные переменные @@ -4483,6 +4852,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Основной класс + + Вы не можете видеть значение локальных переменных, если отладчик запущен. + Невозможно преобразовать {0} в {1} @@ -4495,6 +4867,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Копировать значение в буфер обмена + + Имя + Закрытые члены @@ -4504,6 +4879,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Частные члены + + Private Static члены + Показать полный текст ошибки... @@ -4513,6 +4891,33 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Статичные члены + + Тип + + + Значение + + + Память + + + Адрес {0} не найден! + + + Размер в байтах: + + + Перейти к адресу: + + + Следующий виртуальный адрес + + + Предыдущий виртуальный адрес + + + Обновить текущий адрес + Загруженные модули @@ -4555,6 +4960,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Установить текущий оператор + + Вы действительно хотите остановить отладку? + Отсоединить от процесса или завершить его? @@ -4567,9 +4975,15 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Невозможно сделать шаг, так как отсутствует активная выбранная функция + + Вы не можете переключиться на поток, с недоступным фреймом исполнения. + Вы не можете переключать потоки пока включён отладчик. + + Вы не можете переключиться на поток в декомпилированном коде, без включения декомпилятора. + Заморозить @@ -4598,10 +5012,13 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Переключатель потоков - Наблюдатель + Наблюдение - Добавить Наблюдателя + Добавить наблюдение + + + Введите выражения для наблюдения: Неправильное расширение: {0} @@ -4613,7 +5030,7 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Удалить все - Удалить наблюдателя + Удалить наблюдение Просмотр определения @@ -4720,6 +5137,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< По файлам + + Разделить по проектам + + + Разделить по проектам и файлам + Показать последние результаты поиска @@ -4795,6 +5218,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Проверка варианта '${TestCase}' не удалась. + + Тест '${TestCase}' не был запущен. + Загрузить сборку... @@ -4822,6 +5248,33 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Открыть папку в Проводнике + + Открыть командную строку в этой папке + + + выберите целевой фреймворк + + + Не удалось найти инструменты Portable Class Library. + + + Подмножество .NET Portable + + + Необходимо выбрать два или более фреймворка. + + + Выбранный профиль: + + + Выбрать профиль Portable Library + + + Для установки инструментов Portable Class Library без установки Visual Studio, необходимо скачать файл (PortableLibraryTools.exe) и запустить его из командной строки с ключом /buildmachine. + + + Свернуть всё + Добавить существующие файлы @@ -4849,6 +5302,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Добавить ссылку + + Добавить ссылку на сервис + Добавить веб-ссылку @@ -4927,6 +5383,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Новая папка решения + + Этот проект не является веб-проектом. + Открыть @@ -4945,9 +5404,15 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Запустить проект + + Запустить проект без отладки + Использовать как StartUp проект + + Просмотр в браузере + Новая папка @@ -5068,6 +5533,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Нецифровой символ + + Не пробельный символ + + + Нежадная звезда + Символ пробела @@ -5086,9 +5557,15 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Невозможно загрузить ресурс + + Ошибка: Генератор кода ресурсов пропустил файл "{0}", так как сгенерированный класс конфликтует с существующим классом "{1}". + Генератор кода ресурсов: невозможно создать свойство для ресурса '{0}'. + + Комментарий + Содержание @@ -5101,9 +5578,18 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Копировать имя ресурса + + Редактировать комментарий + + + Введите новый текст комменария: + Переименовать + + Показать как Hex дамп + Тип @@ -5113,6 +5599,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Все файлы (*.*) + + Все известные расширения + Файлы сборок (*.exe;*.dll) @@ -5200,6 +5689,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Основные классы ${Name} + + Действие не может быть выполнено, так как ваш код содержит ошибки: + Элемент не может быть переименован, поскольку он не определён в пользовательском коде. @@ -5266,6 +5758,12 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Перейти к свойству + + Реализовать методы абстрактного класса + + + Реализовать интерфейс + Реализовать интерфейс (явно) @@ -5284,6 +5782,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Перегрузки ${Name} + + Часть класса ${Name} + Ссылки на ${Name} @@ -5332,6 +5833,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension< Все известные форматы проектов + + Текущая версия SharpDevelop не может загружать проекты, созданные в Visual Studio .NET 2003 (или ранее). Попробуйте использовать SharpDevelop 3.2 для преобразования в современный формат или создайте новый проект, использую существующие исходные файлы. + Не удалось сохранить {0}:\n{1} @@ -5375,6 +5879,9 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Вставить поле + + Показать превью + Видимость раздела @@ -5492,6 +5999,9 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Прямоугольник + + Таблица + Надпись @@ -5525,6 +6035,18 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Тип отчёта + + Выберите столбец для группировки + + + Группировка + + + Верстка списком + + + Табличная верстка + Перемещаемая модель данных @@ -5612,6 +6134,9 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Открыть решение + + Удалить проект из списка недавних + Стартовая страница @@ -5639,6 +6164,9 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Конфигурация элемента + + Класс, который наследуется от ConfigurationElementCollection + Конфигурация коллекции элементов @@ -5708,6 +6236,15 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Файл сборки NAnt + + PRISM ViewModel (Unity) + + + Создать View для модуля PRISM. + + + PRISM View (Unity) + Добавить '#if TEST ... #endif' @@ -5744,6 +6281,12 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Пустой файл ресурсов + + Параметры плагина + + + Панель настроек + Класс следующий патерну Singleton. @@ -5924,6 +6467,21 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Gtk#-приложение + + Portable Class Library + + + Приложение PRISM - маленькое (Unity) + + + Создайть приложение PRISM вместе с Bootstrapper и Infrastructure. + + + Приложение PRISM (Unity) + + + Создать модуль PRISM, вместе с соотвествующими View и ViewModel + Проект для создания MSI-инсталлятора. @@ -6084,7 +6642,7 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Не удалось выполнить действие, поскольку отлаживаются некоторые процессы. - Невозможно запустить отладчик SharpDevelop, так как ядро отладчика включено. Для выключения ядра отладчика, удалите ключ "/debug" из файла Boot.ini и перезапустите свой компьютер. + Невозможно запустить отладчик SharpDevelop, так как включен отладчик ядра. Для выключения отладчика ядра, удалите ключ "/debug" из файла Boot.ini и перезапустите свой компьютер. Отладка программ .NET Framework 1.0 не поддерживается. @@ -6101,6 +6659,9 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Удалить все точки останова + + Запустить последний билд + Запустить без отладчика @@ -6110,12 +6671,21 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Шаг в + + Войти + Шаг вперёд Шаг вперёд + + Перешагнуть + + + Перешагнуть + Остановить процесс @@ -6260,6 +6830,9 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Создать новый файл + + Проект... + Решение... @@ -6467,6 +7040,9 @@ SharpDevelop 2 иначе компилировал ресурсы: имя рес Параметры проекта... + + Рефакторинг + Собрать текущий проект diff --git a/data/resources/languages/LanguageDefinition.xml b/data/resources/languages/LanguageDefinition.xml index 6df07f1a16..dd41db243e 100644 --- a/data/resources/languages/LanguageDefinition.xml +++ b/data/resources/languages/LanguageDefinition.xml @@ -14,9 +14,9 @@ - + - + diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisIdeOptionsPanel.xaml b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisIdeOptionsPanel.xaml index bb65181853..87e26df0f7 100644 --- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisIdeOptionsPanel.xaml +++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisIdeOptionsPanel.xaml @@ -7,12 +7,11 @@ + HorizontalAlignment="Center" TextWrapping="Wrap" /> + Style="{x:Static core:GlobalStyles.ButtonStyle}" /> diff --git a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanel.xaml.cs b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanel.xaml.cs index 8129f06798..d620fdec43 100644 --- a/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanel.xaml.cs +++ b/src/AddIns/Analysis/CodeAnalysis/Src/AnalysisProjectOptionsPanel.xaml.cs @@ -276,7 +276,7 @@ namespace ICSharpCode.CodeAnalysis private void ChangeRuleAssembliesButtonClick( object sender, RoutedEventArgs e) { var stringListDialog = new StringListEditorDialog(); - stringListDialog.BrowseForDirectory = true; + stringListDialog.ShowBrowse = true; stringListDialog.TitleText = StringParser.Parse("${res:ICSharpCode.CodeAnalysis.ProjectOptions.ChooseRuleAssemblyDirectory}"); stringListDialog.LoadList(GetRuleAssemblyList(false)); stringListDialog.ShowDialog(); diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin index 8f012b7a71..2b878a57fb 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.addin @@ -130,7 +130,7 @@ - + diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj index a6d3b5fd9d..95273c0e26 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj @@ -134,14 +134,9 @@ - - - - - @@ -285,6 +280,11 @@ ICSharpCode.AvalonEdit False + + {53DCA265-3C3C-42F9-B647-F72BA678122B} + ICSharpCode.NRefactory.CSharp + False + {3B2A5653-EC97-4001-BB9B-D90F1AF2C371} ICSharpCode.NRefactory diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpCompletionBinding.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpCompletionBinding.cs index 4401cdb541..1ab287f0cb 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpCompletionBinding.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpCompletionBinding.cs @@ -16,27 +16,149 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -//using System; -//using ICSharpCode.SharpDevelop.Editor; -//using ICSharpCode.SharpDevelop.Editor.CodeCompletion; -// -//namespace ICSharpCode.AspNet.Mvc.Completion -//{ -// public class RazorCSharpCompletionBinding : DefaultCodeCompletionBinding -// { -// public RazorCSharpCompletionBinding() -// { -// } -// -// public override CodeCompletionKeyPressResult HandleKeyPress(ITextEditor editor, char ch) -// { -// if (ch == '.') { -// new RazorCSharpDotCompletionDataProvider().ShowCompletion(editor); -// return CodeCompletionKeyPressResult.Completed; -// } else if (ch == '(') { -// return base.HandleKeyPress(editor, ch); -// } -// return CodeCompletionKeyPressResult.None; -// } -// } -//} +using System; +using System.IO; +using System.Web.Razor; +using ICSharpCode.NRefactory; +using ICSharpCode.NRefactory.CSharp; +using ICSharpCode.NRefactory.CSharp.Resolver; +using ICSharpCode.NRefactory.CSharp.TypeSystem; +using ICSharpCode.NRefactory.Editor; +using ICSharpCode.NRefactory.TypeSystem; +using ICSharpCode.NRefactory.TypeSystem.Implementation; +using ICSharpCode.SharpDevelop; +using ICSharpCode.SharpDevelop.Editor; +using ICSharpCode.SharpDevelop.Editor.CodeCompletion; + +namespace ICSharpCode.AspNet.Mvc.Completion +{ + public class RazorCSharpCompletionBinding : ICodeCompletionBinding + { + public bool HandleKeyPressed(ITextEditor editor, char ch) + { + if (ch == '.') { + var binding = CreateBinding(editor); + return binding.HandleKeyPressed(editor, ch); + } + return false; + } + + public bool CtrlSpace(ITextEditor editor) + { + return false; + } + + public CodeCompletionKeyPressResult HandleKeyPress(ITextEditor editor, char ch) + { + // We use HandleKeyPressed instead. + return CodeCompletionKeyPressResult.None; + } + + ICodeCompletionBinding CreateBinding(ITextEditor editor) + { + return SD.LanguageService.GetLanguageByExtension(".cs") + .CreateCompletionBinding(FindExpressionToComplete(editor), CreateContext(editor)); + } + + string FindExpressionToComplete(ITextEditor editor) + { + int endOffset = editor.Caret.Offset; + int startOffset = endOffset; + while (startOffset > 0 && IsValidCharacter(editor.Document.GetCharAt(startOffset - 1))) + startOffset--; + return editor.Document.GetText(startOffset, endOffset - startOffset); + } + + bool IsValidCharacter(char ch) + { + return Char.IsLetterOrDigit(ch) || + (ch == '.') || + (ch == '_'); + } + + ICodeContext CreateContext(ITextEditor editor) + { + var compilation = SD.ParserService.GetCompilationForFile(editor.FileName); + var project = SD.ProjectService.FindProjectContainingFile(editor.FileName); + + var resolveContext = new SimpleTypeResolveContext(compilation.MainAssembly); + + var currentTypeDefinition = new DefaultUnresolvedTypeDefinition(project.RootNamespace, Path.GetFileNameWithoutExtension(editor.FileName)); + ITypeReference baseTypeReference = new GetClassTypeReference("System.Web.Mvc", "WebViewPage", 1); + baseTypeReference = new ParameterizedTypeReference(baseTypeReference, new[] { FindModelType(editor) }); + currentTypeDefinition.BaseTypes.Add(baseTypeReference); + + var currentMethod = new DefaultUnresolvedMethod(currentTypeDefinition, "__ContextStub__"); + currentMethod.ReturnType = KnownTypeReference.Void; + currentTypeDefinition.Members.Add(currentMethod); + + var currentResolvedTypeDef = new DefaultResolvedTypeDefinition(resolveContext, currentTypeDefinition); + + var projectContent = compilation.MainAssembly.UnresolvedAssembly as IProjectContent; + + var currentFile = new CSharpUnresolvedFile(); + + currentFile.RootUsingScope.AddSimpleUsing("System.Web.Mvc"); + currentFile.RootUsingScope.AddSimpleUsing("System.Web.Mvc.Ajax"); + currentFile.RootUsingScope.AddSimpleUsing("System.Web.Mvc.Html"); + currentFile.RootUsingScope.AddSimpleUsing("System.Web.Routing"); + + currentFile.TopLevelTypeDefinitions.Add(currentTypeDefinition); + + if (projectContent != null) { + compilation = projectContent.AddOrUpdateFiles(currentFile).CreateCompilation(SD.ParserService.GetCurrentSolutionSnapshot()); + } + + var context = new CSharpTypeResolveContext(compilation.MainAssembly, + currentFile.RootUsingScope.Resolve(compilation), + currentResolvedTypeDef, + currentMethod.CreateResolved(resolveContext.WithCurrentTypeDefinition(currentResolvedTypeDef))); + return new CSharpResolver(context); + } + + ITypeReference FindModelType(ITextEditor editor) + { + ParserResults results = ParseTemplate(editor.Document); + string typeName = GetModelTypeName(results); + if (string.IsNullOrWhiteSpace(typeName)) + return KnownTypeReference.Object; + return new CSharpParser().ParseTypeReference(typeName) + .ToTypeReference(NameLookupMode.BaseTypeReference); + } + + ParserResults ParseTemplate(ITextSource textBuffer) + { + var host = new RazorEngineHost(new CSharpRazorCodeLanguage()); + var engine = new RazorTemplateEngine(host); + return engine.ParseTemplate(textBuffer.CreateReader()); + } + + string GetModelTypeName(ParserResults results) + { + var visitor = new RazorCSharpParserModelTypeVisitor(); + results.Document.Accept(visitor); + return visitor.ModelTypeName; + } + } + + static class NRUtils + { + /// Does not support type arguments! + public static void AddSimpleUsing(this UsingScope scope, string fullName) + { + if (scope == null) + throw new ArgumentNullException("scope"); + string[] parts = fullName.Trim().Split('.'); + TypeOrNamespaceReference reference = null; + foreach (var part in parts) { + if (reference != null) { + reference = new MemberTypeOrNamespaceReference(reference, part, EmptyList.Instance); + } else { + reference = new SimpleTypeOrNamespaceReference(part, EmptyList.Instance); + } + } + + scope.Usings.AddIfNotNull(reference); + } + } +} diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpDotCompletionDataProvider.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpDotCompletionDataProvider.cs deleted file mode 100644 index e5a321335d..0000000000 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpDotCompletionDataProvider.cs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team -// -// 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; -// -//namespace ICSharpCode.AspNet.Mvc.Completion -//{ -// public class RazorCSharpDotCompletionDataProvider : DotCodeCompletionItemProvider -// { -// } -//} diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpExpressionFinder.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpExpressionFinder.cs deleted file mode 100644 index 11aae7c710..0000000000 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpExpressionFinder.cs +++ /dev/null @@ -1,58 +0,0 @@ -// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team -// -// 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 ICSharpCode.SharpDevelop.Dom; -// -//namespace ICSharpCode.AspNet.Mvc.Completion -//{ -// public class RazorCSharpExpressionFinder : IExpressionFinder -// { -// public RazorCSharpExpressionFinder() -// { -// } -// -// public ExpressionResult FindExpression(string text, int offset) -// { -// int position = offset - 1; -// while (position > 0 && IsValidCharacter(text[position])) { -// position--; -// } -// position++; -// string expression = text.Substring(position, offset - position); -// return new ExpressionResult(expression); -// } -// -// bool IsValidCharacter(char ch) -// { -// return Char.IsLetterOrDigit(ch) || -// (ch == '.') || -// (ch == '_'); -// } -// -// public ExpressionResult FindFullExpression(string text, int offset) -// { -// return ExpressionResult.Empty; -// } -// -// public string RemoveLastPart(string expression) -// { -// return expression; -// } -// } -//} diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpModelTypeLocater.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpModelTypeLocater.cs index e45bc69574..a5cc0ea8be 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpModelTypeLocater.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpModelTypeLocater.cs @@ -16,34 +16,34 @@ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -//using System; -//using System.Web.Razor; -//using ICSharpCode.SharpDevelop; -// -//namespace ICSharpCode.AspNet.Mvc.Completion -//{ -// public class RazorCSharpModelTypeLocater -// { -// public RazorCSharpModelTypeLocater(ITextBuffer textBuffer) -// { -// ParserResults results = ParseTemplate(textBuffer); -// ModelTypeName = GetModelTypeName(results); -// } -// -// ParserResults ParseTemplate(ITextBuffer textBuffer) -// { -// var host = new RazorEngineHost(new CSharpRazorCodeLanguage()); -// var engine = new RazorTemplateEngine(host); -// return engine.ParseTemplate(textBuffer.CreateReader()); -// } -// -// string GetModelTypeName(ParserResults results) -// { -// var visitor = new RazorCSharpParserModelTypeVisitor(); -// results.Document.Accept(visitor); -// return visitor.ModelTypeName; -// } -// -// public string ModelTypeName { get; private set; } -// } -//} +using System; +using System.Web.Razor; +using ICSharpCode.NRefactory.Editor; + +namespace ICSharpCode.AspNet.Mvc.Completion +{ + public class RazorCSharpModelTypeLocater + { + public RazorCSharpModelTypeLocater(ITextSource textBuffer) + { + ParserResults results = ParseTemplate(textBuffer); + ModelTypeName = GetModelTypeName(results); + } + + ParserResults ParseTemplate(ITextSource textBuffer) + { + var host = new RazorEngineHost(new CSharpRazorCodeLanguage()); + var engine = new RazorTemplateEngine(host); + return engine.ParseTemplate(textBuffer.CreateReader()); + } + + string GetModelTypeName(ParserResults results) + { + var visitor = new RazorCSharpParserModelTypeVisitor(); + results.Document.Accept(visitor); + return visitor.ModelTypeName; + } + + public string ModelTypeName { get; private set; } + } +} diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpParser.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpParser.cs deleted file mode 100644 index cce64fb643..0000000000 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpParser.cs +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team -// -// 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 ICSharpCode.SharpDevelop; -//using ICSharpCode.SharpDevelop.Dom; -//using ICSharpCode.SharpDevelop.Dom.CSharp; -//using ICSharpCode.SharpDevelop.Project; -// -//namespace ICSharpCode.AspNet.Mvc.Completion -//{ -// public class RazorCSharpParser : IParser -// { -// public RazorCSharpParser() -// { -// } -// -// public string[] LexerTags { get; set; } -// -// public LanguageProperties Language { -// get { return LanguageProperties.CSharp; } -// } -// -// public IExpressionFinder CreateExpressionFinder(string fileName) -// { -// return new RazorCSharpExpressionFinder(); -// } -// -// public bool CanParse(string fileName) -// { -// return Path.GetExtension(fileName).Equals(".cshtml", StringComparison.OrdinalIgnoreCase); -// } -// -// public bool CanParse(IProject project) -// { -// return project.Language == "C#"; -// } -// -// public ICompilationUnit Parse(IProjectContent projectContent, string fileName, ITextBuffer fileContent) -// { -// var modelTypeLocater = new RazorCSharpModelTypeLocater(fileContent); -// return new RazorCompilationUnit(projectContent) { -// ModelTypeName = modelTypeLocater.ModelTypeName -// }; -// } -// -// public IResolver CreateResolver() -// { -// return new RazorCSharpResolver(); -// } -// } -//} diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpResolver.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpResolver.cs deleted file mode 100644 index 1ce97c8dc5..0000000000 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCSharpResolver.cs +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team -// -// 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 ICSharpCode.NRefactory.TypeSystem; -// -//namespace ICSharpCode.AspNet.Mvc.Completion -//{ -// public class RazorCSharpResolver : IResolver -// { -// NRefactoryResolver resolver = new NRefactoryResolver(LanguageProperties.CSharp); -// -// public ResolveResult Resolve(ExpressionResult expressionResult, ParseInformation parseInfo, string fileContent) -// { -// ParseInformation parseInfoWithWebViewPageClass = CreateParseInformationWithWebViewPageClass(parseInfo); -// expressionResult.Region = GetRegionInMiddleOfWebViewPageClass(); -// return resolver.Resolve(expressionResult, parseInfoWithWebViewPageClass, fileContent); -// } -// -// ParseInformation CreateParseInformationWithWebViewPageClass(ParseInformation parseInfo) -// { -// RazorCompilationUnit compilationUnit = RazorCompilationUnit.CreateFromParseInfo(parseInfo); -// AddDefaultUsings(compilationUnit); -// AddWebViewPageClass(compilationUnit); -// return new ParseInformation(compilationUnit); -// } -// -// void AddDefaultUsings(ICompilationUnit compilationUnit) -// { -// AddUsing("System.Web.Mvc", compilationUnit); -// AddUsing("System.Web.Mvc.Ajax", compilationUnit); -// AddUsing("System.Web.Mvc.Html", compilationUnit); -// AddUsing("System.Web.Routing", compilationUnit); -// } -// -// void AddUsing(string name, ICompilationUnit compilationUnit) -// { -// DefaultUsing defaultUsing = CreateUsing(name, compilationUnit.ProjectContent); -// compilationUnit.UsingScope.Usings.Add(defaultUsing); -// } -// -// DefaultUsing CreateUsing(string namespaceName, IProjectContent projectContent) -// { -// var defaultUsing = new DefaultUsing(projectContent); -// defaultUsing.Usings.Add(namespaceName); -// return defaultUsing; -// } -// -// void AddWebViewPageClass(RazorCompilationUnit compilationUnit) -// { -// DefaultClass webViewPageClass = CreateWebViewPageClass(compilationUnit); -// compilationUnit.Classes.Add(webViewPageClass); -// } -// -// DefaultClass CreateWebViewPageClass(RazorCompilationUnit compilationUnit) -// { -// var webViewPageClass = new DefaultClass(compilationUnit, "RazorWebViewPage") { -// Region = new DomRegion(1, 0, 3, 0) -// }; -// IReturnType modelType = GetModelReturnType(compilationUnit); -// AddWebViewPageBaseClass(webViewPageClass, modelType); -// return webViewPageClass; -// } -// -// IReturnType GetModelReturnType(RazorCompilationUnit compilationUnit) -// { -// IClass modelType = GetClassIfTypeNameIsNotEmpty(compilationUnit.ProjectContent, compilationUnit.ModelTypeName); -// if (modelType != null) { -// return modelType.DefaultReturnType; -// } -// return new DynamicReturnType(compilationUnit.ProjectContent); -// } -// -// IClass GetClassIfTypeNameIsNotEmpty(IProjectContent projectContent, string modelTypeName) -// { -// if (!String.IsNullOrEmpty(modelTypeName)) { -// return projectContent.GetClass(modelTypeName, 0); -// } -// return null; -// } -// -// void AddWebViewPageBaseClass(DefaultClass webViewPageClass, IReturnType modelType) -// { -// IClass webViewPageBaseClass = webViewPageClass.ProjectContent.GetClass("System.Web.Mvc.WebViewPage", 1); -// if (webViewPageBaseClass != null) { -// IReturnType returnType = GetWebViewPageBaseClassReturnType(webViewPageBaseClass, modelType); -// webViewPageClass.BaseTypes.Add(returnType); -// } -// } -// -// IReturnType GetWebViewPageBaseClassReturnType(IClass webViewPageBaseClass, IReturnType modelType) -// { -// var typeArguments = new List(); -// typeArguments.Add(modelType); -// return new ConstructedReturnType(webViewPageBaseClass.DefaultReturnType, typeArguments); -// } -// -// DomRegion GetRegionInMiddleOfWebViewPageClass() -// { -// return new DomRegion(2, 0, 2, 0); -// } -// } -//} diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCompilationUnit.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCompilationUnit.cs deleted file mode 100644 index 9672f4df56..0000000000 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/Completion/RazorCompilationUnit.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team -// -// 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 ICSharpCode.NRefactory.TypeSystem; -//using ICSharpCode.SharpDevelop.Parser; -// -//namespace ICSharpCode.AspNet.Mvc.Completion -//{ -// public class RazorCompilationUnit : DefaultCompilationUnit -// { -// public RazorCompilationUnit(IProjectContent projectContent) -// : base(projectContent) -// { -// } -// -// public static RazorCompilationUnit CreateFromParseInfo(ParseInformation parseInformation) -// { -// return new RazorCompilationUnit(parseInformation.CompilationUnit.ProjectContent) { -// ModelTypeName = GetModelTypeName(parseInformation.CompilationUnit) -// }; -// } -// -// static string GetModelTypeName(ICompilationUnit compilationUnit) -// { -// var originalRazorCompilationUnit = compilationUnit as RazorCompilationUnit; -// if (originalRazorCompilationUnit != null) { -// return originalRazorCompilationUnit.ModelTypeName; -// } -// return String.Empty; -// } -// -// public string ModelTypeName { get; set; } -// } -//} diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin index b70e3a2dcf..785b7fcd74 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin @@ -148,11 +148,11 @@ insertafter = "Highlighting" label = "C#"> @@ -165,7 +165,7 @@ diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj index 970be27a88..848785d6fb 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj @@ -78,6 +78,7 @@ + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/CSharp-Semantic.xshd b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/CSharp-Semantic.xshd index 157dc9e717..3e1bba50c7 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/CSharp-Semantic.xshd +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Resources/CSharp-Semantic.xshd @@ -32,7 +32,11 @@ + + + + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs index 548fddd585..1139a8a51d 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs @@ -55,35 +55,26 @@ namespace CSharpBinding this.container.AddService(typeof(System.CodeDom.Compiler.CodeDomProvider), new Microsoft.CSharp.CSharpCodeProvider()); } - public override ICodeCompletionBinding CreateCompletionBinding(string expressionToComplete, FileName fileName, TextLocation location, ICodeContext context) + public override ICodeCompletionBinding CreateCompletionBinding(string expressionToComplete, ICodeContext context) { - if (fileName == null) - throw new ArgumentNullException("fileName"); if (context == null) throw new ArgumentNullException("context"); - string content = GeneratePartialClassContextStub(fileName, location, context); + string content = GeneratePartialClassContextStub(context); const string caretPoint = "$__Caret_Point__$;"; int caretOffset = content.IndexOf(caretPoint, StringComparison.Ordinal) + expressionToComplete.Length; SD.Log.DebugFormatted("context used for dot completion: {0}", content.Replace(caretPoint, "$" + expressionToComplete + "|$")); var doc = new ReadOnlyDocument(content.Replace(caretPoint, expressionToComplete)); - return new CSharpCompletionBinding(fileName, doc.GetLocation(caretOffset), doc.CreateSnapshot()); + return new CSharpCompletionBinding(context, doc.GetLocation(caretOffset), doc.CreateSnapshot()); } - static string GeneratePartialClassContextStub(FileName fileName, TextLocation location, ICodeContext context) + static string GeneratePartialClassContextStub(ICodeContext context) { - var compilation = SD.ParserService.GetCompilationForFile(fileName); - var file = SD.ParserService.GetExistingUnresolvedFile(fileName); - if (compilation == null || file == null) - return ""; - var unresolvedMember = file.GetMember(location); - if (unresolvedMember == null) - return ""; - var member = unresolvedMember.Resolve(new SimpleTypeResolveContext(compilation.MainAssembly)); + var member = context.CurrentMember; if (member == null) return ""; var builder = new TypeSystemAstBuilder(); MethodDeclaration decl; - if (unresolvedMember is IMethod) { + if (member.SymbolKind == SymbolKind.Method) { // If it's a method, convert it directly (including parameters + type parameters) decl = (MethodDeclaration)builder.ConvertEntity(member); } else { @@ -97,11 +88,11 @@ namespace CSharpBinding } decl.Name = "__DebuggerStub__"; decl.ReturnType = builder.ConvertType(member.ReturnType); - decl.Modifiers = unresolvedMember.IsStatic ? Modifiers.Static : Modifiers.None; + decl.Modifiers = member.IsStatic ? Modifiers.Static : Modifiers.None; // Make the method look like an explicit interface implementation so that it doesn't appear in CC decl.PrivateImplementationType = new SimpleType("__DummyType__"); decl.Body = GenerateBodyFromContext(builder, context.LocalVariables.ToArray()); - return WrapInType(unresolvedMember.DeclaringTypeDefinition, decl).ToString(); + return WrapInType(context.CurrentTypeDefinition, decl).ToString(); } static BlockStatement GenerateBodyFromContext(TypeSystemAstBuilder builder, IVariable[] variables) @@ -113,7 +104,7 @@ namespace CSharpBinding return body; } - static AstNode WrapInType(IUnresolvedTypeDefinition entity, EntityDeclaration decl) + static AstNode WrapInType(ITypeDefinition entity, EntityDeclaration decl) { if (entity == null) return decl; @@ -137,7 +128,7 @@ namespace CSharpBinding }; } - static ClassType GetClassType(IUnresolvedTypeDefinition entity) + static ClassType GetClassType(ITypeDefinition entity) { switch (entity.Kind) { case TypeKind.Interface: diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpSemanticHighlighterVisitor.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpSemanticHighlighterVisitor.cs index 8e4765c939..f50df9abb3 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpSemanticHighlighterVisitor.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpSemanticHighlighterVisitor.cs @@ -58,10 +58,10 @@ namespace CSharpBinding //this.defaultTextColor = ???; this.referenceTypeColor = highlighting.GetNamedColor("ReferenceTypes"); this.valueTypeColor = highlighting.GetNamedColor("ValueTypes"); - this.interfaceTypeColor = this.referenceTypeColor; - this.enumerationTypeColor = this.valueKeywordColor; - this.typeParameterTypeColor = this.referenceTypeColor; - this.delegateTypeColor = this.referenceTypeColor; + this.interfaceTypeColor = highlighting.GetNamedColor("InterfaceTypes"); + this.enumerationTypeColor = highlighting.GetNamedColor("EnumTypes"); + this.typeParameterTypeColor = highlighting.GetNamedColor("TypeParameters"); + this.delegateTypeColor = highlighting.GetNamedColor("DelegateType"); this.methodDeclarationColor = this.methodCallColor = highlighting.GetNamedColor("MethodCall"); //this.eventDeclarationColor = this.eventAccessColor = defaultTextColor; //this.propertyDeclarationColor = this.propertyAccessColor = defaultTextColor; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionBinding.cs index 1e9943d962..69cba35ecd 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionBinding.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionBinding.cs @@ -18,6 +18,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using ICSharpCode.Core; @@ -26,6 +27,7 @@ using ICSharpCode.NRefactory.CSharp.Resolver; using ICSharpCode.NRefactory.Completion; using ICSharpCode.NRefactory.CSharp.Completion; using ICSharpCode.NRefactory.Editor; +using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.CodeCompletion; @@ -35,7 +37,7 @@ namespace CSharpBinding.Completion { public class CSharpCompletionBinding : ICodeCompletionBinding { - FileName contextFileName; + ICodeContext context; TextLocation currentLocation; ITextSource fileContent; @@ -44,9 +46,9 @@ namespace CSharpBinding.Completion { } - public CSharpCompletionBinding(FileName contextFileName, TextLocation currentLocation, ITextSource fileContent) + public CSharpCompletionBinding(ICodeContext context, TextLocation currentLocation, ITextSource fileContent) { - this.contextFileName = contextFileName; + this.context = context; this.currentLocation = currentLocation; this.fileContent = fileContent; } @@ -75,7 +77,7 @@ namespace CSharpBinding.Completion if (fileContent == null) { completionContext = CSharpCompletionContext.Get(editor); } else { - completionContext = CSharpCompletionContext.Get(editor, fileContent, currentLocation, contextFileName); + completionContext = CSharpCompletionContext.Get(editor, context, currentLocation, fileContent); } if (completionContext == null) return false; @@ -114,6 +116,7 @@ namespace CSharpBinding.Completion } else { startPos = caretOffset; if (char.IsLetterOrDigit (completionChar) || completionChar == '_') { + if (!CodeCompletionOptions.CompleteWhenTyping) return false; if (startPos > 1 && char.IsLetterOrDigit (completionContext.Document.GetCharAt (startPos - 2))) return false; completionData = cce.GetCompletionData(startPos, false); @@ -136,7 +139,7 @@ namespace CSharpBinding.Completion return true; } - if (!ctrlSpace) { + if (CodeCompletionOptions.InsightEnabled && !ctrlSpace) { // Method Insight var pce = new CSharpParameterCompletionEngine( completionContext.Document, diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionContext.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionContext.cs index ae654a0d81..2f4623dcf7 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionContext.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionContext.cs @@ -61,38 +61,24 @@ namespace CSharpBinding.Completion return new CSharpCompletionContext(editor, parseInfo.SyntaxTree.ConditionalSymbols, compilation, projectContent, editor.Document, parseInfo.UnresolvedFile, editor.Caret.Location); } - public static CSharpCompletionContext Get(ITextEditor editor, ITextSource fileContent, TextLocation currentLocation, FileName fileName) + public static CSharpCompletionContext Get(ITextEditor editor, ICodeContext context, TextLocation currentLocation, ITextSource fileContent) { IDocument document = new ReadOnlyDocument(fileContent); - // Don't require the very latest parse information, an older cached version is OK. - var parseInfo = SD.ParserService.GetCachedParseInformation(fileName) as CSharpFullParseInformation; - if (parseInfo == null) { - parseInfo = SD.ParserService.Parse(fileName) as CSharpFullParseInformation; - } - if (parseInfo == null) - return null; - - - var project = SD.ProjectService.FindProjectContainingFile(fileName)as CSharpProject; - if (project == null) - return null; - - var solutionSnapshot = SD.ParserService.GetCurrentSolutionSnapshot(); - var projectContent = solutionSnapshot.GetProjectContent(project); + var projectContent = context.Compilation.MainAssembly.UnresolvedAssembly as IProjectContent; if (projectContent == null) return null; - CSharpParser parser = new CSharpParser(project.CompilerSettings); + CSharpParser parser = new CSharpParser(); parser.GenerateTypeSystemMode = false; SyntaxTree cu = parser.Parse(fileContent, Path.GetRandomFileName() + ".cs"); cu.Freeze(); CSharpUnresolvedFile unresolvedFile = cu.ToTypeSystem(); - ICompilation compilation = projectContent.AddOrUpdateFiles(unresolvedFile).CreateCompilation(solutionSnapshot); + ICompilation compilation = projectContent.AddOrUpdateFiles(unresolvedFile).CreateCompilation(SD.ParserService.GetCurrentSolutionSnapshot()); - return new CSharpCompletionContext(editor, parseInfo.SyntaxTree.ConditionalSymbols, compilation, projectContent, document, unresolvedFile, currentLocation); + return new CSharpCompletionContext(editor, EmptyList.Instance, compilation, projectContent, document, unresolvedFile, currentLocation); } private CSharpCompletionContext(ITextEditor editor, IList conditionalSymbols, ICompilation compilation, IProjectContent projectContent, IDocument document, CSharpUnresolvedFile unresolvedFile, TextLocation caretLocation) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs index c3f005e892..9396dc084c 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs @@ -86,8 +86,7 @@ namespace CSharpBinding.Completion ICompletionData ICompletionDataFactory.CreateMemberCompletionData(IType type, IEntity member) { - string typeName = builder.ConvertType(type).ToString(); - return new CompletionData(typeName + "." + member.Name); + return new EnumMemberCompletionData(type, member, builder); } ICompletionData ICompletionDataFactory.CreateLiteralCompletionData(string title, string description, string insertText) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs index 7c04f56b9f..d717ebaf7b 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CompletionData.cs @@ -78,13 +78,14 @@ namespace CSharpBinding.Completion public IImage Image { get; set; } public virtual double Priority { - get { return 0; } + get { return CodeCompletionDataUsageCache.GetPriority(DisplayText, true); } } public virtual void Complete(CompletionContext context) { context.Editor.Document.Replace(context.StartOffset, context.Length, this.CompletionText); context.EndOffset = context.StartOffset + this.CompletionText.Length; + CodeCompletionDataUsageCache.IncrementUsage(DisplayText); } object fancyContent; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs index 65ea84fc1b..16d627ef43 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EntityCompletionData.cs @@ -37,14 +37,15 @@ namespace CSharpBinding.Completion public EntityCompletionData(IEntity entity) : base(entity.Name) { this.entity = entity; - this.Description = entity.Documentation; this.Image = ClassBrowserIconService.GetIcon(entity); + // don't set this.Description -- we use CreateFancyDescription() instead, + // and accessing entity.Documentation in the constructor is too slow } protected override object CreateFancyDescription() { return new FlowDocumentScrollViewer { - Document = XmlDocFormatter.CreateTooltip(entity, false), + Document = XmlDocFormatter.CreateTooltip(entity, entity is ITypeDefinition), VerticalScrollBarVisibility = ScrollBarVisibility.Auto }; } diff --git a/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyLanguageBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EnumMemberCompletionData.cs similarity index 60% rename from src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyLanguageBinding.cs rename to src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EnumMemberCompletionData.cs index 79814ab16d..9d0b2c9d33 100644 --- a/src/AddIns/BackendBindings/Ruby/RubyBinding/Project/Src/RubyLanguageBinding.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EnumMemberCompletionData.cs @@ -17,20 +17,36 @@ // DEALINGS IN THE SOFTWARE. using System; +using System.Linq; +using System.Windows.Controls; +using ICSharpCode.NRefactory.CSharp.Refactoring; +using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Dom; using ICSharpCode.SharpDevelop.Editor; - -namespace ICSharpCode.RubyBinding +namespace CSharpBinding.Completion { - public class RubyLanguageBinding : DefaultLanguageBinding + class EnumMemberCompletionData : CompletionData { - public override IFormattingStrategy FormattingStrategy { - get { return new RubyFormattingStrategy(); } + IType enumType; + + IEntity member; + + public EnumMemberCompletionData(IType enumType, IEntity member, TypeSystemAstBuilder builder) : base(enumType.Name + "." + member.Name) + { + this.enumType = enumType; + this.member = member; + this.Image = ClassBrowserIconService.Const; + this.CompletionText = builder.ConvertType(enumType).ToString() + "." + member.Name; } - - public override LanguageProperties Properties { - get { return RubyLanguageProperties.Default; } + + protected override object CreateFancyDescription() + { + return new FlowDocumentScrollViewer { + Document = XmlDocFormatter.CreateTooltip(member, false), + VerticalScrollBarVisibility = ScrollBarVisibility.Auto + }; } } } + + diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EventCreationCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EventCreationCompletionData.cs index 01ab271a64..f5cbfad2df 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EventCreationCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/EventCreationCompletionData.cs @@ -19,14 +19,15 @@ using System; using System.Linq; using System.Threading; -using ICSharpCode.SharpDevelop; -using CSharpBinding.Parser; -using CSharpBinding.Refactoring; +using ICSharpCode.Core; using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.CSharp.Refactoring; using ICSharpCode.NRefactory.CSharp.Resolver; using ICSharpCode.NRefactory.TypeSystem; +using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Editor.CodeCompletion; +using CSharpBinding.Parser; +using CSharpBinding.Refactoring; namespace CSharpBinding.Completion { @@ -35,46 +36,27 @@ namespace CSharpBinding.Completion /// class EventCreationCompletionData : CompletionData { - IEvent eventDefinition; - string varName; - IType delegateType; - string parameterList; - IUnresolvedMember callingMember; - IUnresolvedTypeDefinition declaringType; - CSharpResolver contextAtCaret; + readonly string handlerName; + readonly ITypeReference delegateTypeReference; + readonly bool isStatic; - public EventCreationCompletionData(string varName, IType delegateType, IEvent evt, string parameterList, IUnresolvedMember callingMember, IUnresolvedTypeDefinition declaringType, CSharpResolver contextAtCaret) + public EventCreationCompletionData(string handlerName, IType delegateType, IEvent evt, string parameterList, IUnresolvedMember callingMember, IUnresolvedTypeDefinition declaringType, CSharpResolver contextAtCaret) { - if (string.IsNullOrEmpty(varName)) { - this.DisplayText = ""; + if (string.IsNullOrEmpty(handlerName)) { + handlerName = (evt != null ? evt.Name : "Handle"); } - else { - this.DisplayText = "Handle" + char.ToUpper(varName[0]) + varName.Substring(1) + (evt != null ? evt.Name : ""); - } - - this.varName = varName; - this.eventDefinition = evt; - this.delegateType = delegateType; - this.parameterList = parameterList; - this.callingMember = callingMember; - this.declaringType = declaringType; - this.contextAtCaret = contextAtCaret; + this.handlerName = handlerName; + this.DisplayText = StringParser.Parse("${res:CSharpBinding.Refactoring.EventCreation.EventHandlerText}", new[] { new StringTagPair("HandlerName", handlerName) }); + this.delegateTypeReference = delegateType.ToTypeReference(); + this.isStatic = callingMember != null && callingMember.IsStatic; } public override void Complete(CompletionContext context) { - var invokeSignature = delegateType.GetMethods(m => m.Name == "Invoke").Single(); var refactoringContext = SDRefactoringContext.Create(context.Editor, CancellationToken.None); + var delegateType = delegateTypeReference.Resolve(refactoringContext.Compilation); + var invokeSignature = delegateType.GetMethods(m => m.Name == "Invoke").Single(); var builder = refactoringContext.CreateTypeSystemAstBuilder(); - string handlerName; - bool isStatic; - if (eventDefinition != null) { - handlerName = eventDefinition.Name; - isStatic = eventDefinition.IsStatic; - } else { - handlerName = varName; - isStatic = callingMember.IsStatic; - } var throwStatement = new ThrowStatement(); var decl = new MethodDeclaration { diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs index e2351811c4..a60836e910 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/TypeCompletionData.cs @@ -35,16 +35,15 @@ namespace CSharpBinding.Completion public TypeCompletionData(IType type) : base(type.Name) { this.type = type; - ITypeDefinition typeDef = type.GetDefinition(); - if (typeDef != null) - this.Description = typeDef.Documentation; this.Image = ClassBrowserIconService.GetIcon(type); + // don't set this.Description -- we use CreateFancyDescription() instead, + // and accessing entity.Documentation in the constructor is too slow } protected override object CreateFancyDescription() { return new FlowDocumentScrollViewer { - Document = XmlDocFormatter.CreateTooltip(type, false), + Document = XmlDocFormatter.CreateTooltip(type), VerticalScrollBarVisibility = ScrollBarVisibility.Auto }; } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/ExtensionMethods.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/ExtensionMethods.cs index 723ef18697..3b01520eb9 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/ExtensionMethods.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/ExtensionMethods.cs @@ -37,14 +37,19 @@ namespace CSharpBinding public static class ExtensionMethods { public static TextEditorOptions ToEditorOptions(this ITextEditor editor) + { + return ToEditorOptions(editor.Options); + } + + public static TextEditorOptions ToEditorOptions(this ITextEditorOptions options) { return new TextEditorOptions { - TabsToSpaces = editor.Options.ConvertTabsToSpaces, - TabSize = editor.Options.IndentationSize, - IndentSize = editor.Options.IndentationSize, - ContinuationIndent = editor.Options.IndentationSize, - LabelIndent = -editor.Options.IndentationSize, - WrapLineLength = editor.Options.VerticalRulerColumn, + TabsToSpaces = options.ConvertTabsToSpaces, + TabSize = options.IndentationSize, + IndentSize = options.IndentationSize, + ContinuationIndent = options.IndentationSize, + LabelIndent = -options.IndentationSize, + WrapLineLength = options.VerticalRulerColumn }; } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/FormattingOptionBinding.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/FormattingOptionBinding.cs index b36677c142..feaeb1c39e 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/FormattingOptionBinding.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormattingStrategy/FormattingOptionBinding.cs @@ -22,6 +22,7 @@ using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using ICSharpCode.NRefactory.CSharp; +using ICSharpCode.SharpDevelop; using CSharpBinding.OptionPanels; namespace CSharpBinding.FormattingStrategy @@ -143,9 +144,8 @@ namespace CSharpBinding.FormattingStrategy static void FillBoolComboValues(ComboBox comboBox) { - // TODO Add located resources! - comboBox.Items.Add(new ComboBoxItem { Content = "Yes", Tag = true }); - comboBox.Items.Add(new ComboBoxItem { Content = "No", Tag = false }); + comboBox.Items.Add(new ComboBoxItem { Content = SD.ResourceService.GetString("Global.Yes"), Tag = true }); + comboBox.Items.Add(new ComboBoxItem { Content = SD.ResourceService.GetString("Global.No"), Tag = false }); } static void FillIntComboValues(ComboBox comboBox) diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpDesignerGenerator.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpDesignerGenerator.cs index 5045d6fc8f..6b68df5d3c 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpDesignerGenerator.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpDesignerGenerator.cs @@ -297,9 +297,14 @@ namespace CSharpBinding.FormsDesigner void CreateField(CodeMemberField newField) { - // insert new field below InitializeComponents() - - var bodyRegion = initializeComponents.BodyRegion; + // insert new field below the last field or InitializeComponents() + IField field = null; + if (formClass != null) { + field = formClass.Fields.LastOrDefault(f => string.Equals(f.Region.FileName, + initializeComponents.Region.FileName, + StringComparison.OrdinalIgnoreCase)); + } + var bodyRegion = field != null ? field.BodyRegion : initializeComponents.BodyRegion; DocumentScript script = GetScript(bodyRegion.FileName); string newline = DocumentUtilities.GetLineTerminator(script.OriginalDocument, bodyRegion.BeginLine); string indentation = DocumentUtilities.GetIndentation(script.OriginalDocument, bodyRegion.BeginLine); diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpEventBindingService.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpEventBindingService.cs index b7c635c055..981092adf9 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpEventBindingService.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpEventBindingService.cs @@ -24,10 +24,14 @@ using System.Reflection; using System.Windows.Threading; using ICSharpCode.Core; using ICSharpCode.FormsDesigner.Gui.OptionPanels; +using ICSharpCode.NRefactory; using ICSharpCode.NRefactory.CSharp; +using ICSharpCode.NRefactory.Editor; using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.SharpDevelop; -using ICSharpCode.SharpDevelop.Gui; +using ICSharpCode.SharpDevelop.Editor; +using ICSharpCode.SharpDevelop.Project; +using ICSharpCode.SharpDevelop.Refactoring; using CSharpBinding.Refactoring; namespace CSharpBinding.FormsDesigner @@ -144,18 +148,28 @@ namespace CSharpBinding.FormsDesigner var primary = loader.GetPrimaryTypeDefinition(); var evtHandler = primary.GetMethods(m => m.Name == methodName, GetMemberOptions.IgnoreInheritedMembers).FirstOrDefault(); if (evtHandler == null) { - generator.InsertEventHandler(primary, methodName, evt, true); - } - else { + var insertionType = GeneralOptionsPanel.InsertTodoComment ? InsertEventHandlerBodyKind.TodoComment : InsertEventHandlerBodyKind.Nothing; + generator.InsertEventHandler(primary, methodName, evt, true, insertionType); + } else { CSharpBinding.Parser.CSharpFullParseInformation parseInfo; var node = evtHandler.GetDeclaration(out parseInfo) as MethodDeclaration; + var fileName = new FileName(evtHandler.Region.FileName); + var fileContentFinder = new ParseableFileContentFinder(); + if (node != null && !node.Body.IsNull) { var location = node.Body.FirstChild.StartLocation; var firstStatement = node.Body.Children.OfType().FirstOrDefault(); - if (firstStatement != null) + + if (firstStatement == null) { + var fileContent = fileContentFinder.Create(fileName); + var document = new ReadOnlyDocument(fileContent); + var offset = document.GetOffset(new TextLocation(location.Line + 1, 1)); + var length = DocumentUtilities.GetWhitespaceAfter(fileContent, offset).Length; + location = new TextLocation(location.Line + 1, length + 1); + } else { location = firstStatement.StartLocation; - // TODO : does not jump correctly... - SD.FileService.JumpToFilePosition(new FileName(evtHandler.Region.FileName), location.Line, location.Column); + } + SD.FileService.JumpToFilePosition(fileName, location.Line, location.Column); } } } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/ICSharpDesignerLoaderContext.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/ICSharpDesignerLoaderContext.cs index dadf5f5a5a..97e2ebff6a 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/ICSharpDesignerLoaderContext.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/ICSharpDesignerLoaderContext.cs @@ -31,6 +31,7 @@ namespace CSharpBinding.FormsDesigner CSharpFullParseInformation GetPrimaryFileParseInformation(); ICompilation GetCompilation(); IDocument GetDocument(FileName fileName); + /// if lineNumber = 0 no jump is performed, but the active view content changes. void ShowSourceCode(int lineNumber = 0); } } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs index 047c676cd6..1e87ada3ca 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Parser/Parser.cs @@ -38,7 +38,6 @@ using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Editor.Search; using ICSharpCode.SharpDevelop.Parser; using ICSharpCode.SharpDevelop.Project; -using ICSharpCode.SharpDevelop.Refactoring; namespace CSharpBinding.Parser { @@ -51,38 +50,6 @@ namespace CSharpBinding.Parser return Path.GetExtension(fileName).Equals(".CS", StringComparison.OrdinalIgnoreCase); } - /* - void RetrieveRegions(ISyntaxTree cu, ICSharpCode.NRefactory.Parser.SpecialTracker tracker) - { - for (int i = 0; i < tracker.CurrentSpecials.Count; ++i) { - ICSharpCode.NRefactory.PreprocessingDirective directive = tracker.CurrentSpecials[i] as ICSharpCode.NRefactory.PreprocessingDirective; - if (directive != null) { - if (directive.Cmd == "#region") { - int deep = 1; - for (int j = i + 1; j < tracker.CurrentSpecials.Count; ++j) { - ICSharpCode.NRefactory.PreprocessingDirective nextDirective = tracker.CurrentSpecials[j] as ICSharpCode.NRefactory.PreprocessingDirective; - if (nextDirective != null) { - switch (nextDirective.Cmd) { - case "#region": - ++deep; - break; - case "#endregion": - --deep; - if (deep == 0) { - cu.FoldingRegions.Add(new FoldingRegion(directive.Arg.Trim(), DomRegion.FromLocation(directive.StartPosition, nextDirective.EndPosition))); - goto end; - } - break; - } - } - } - end: ; - } - } - } - } - */ - public ITextSource GetFileContent(FileName fileName) { return SD.FileService.GetFileContent(fileName); @@ -94,7 +61,6 @@ namespace CSharpBinding.Parser var csharpProject = parentProject as CSharpProject; CSharpParser parser = new CSharpParser(csharpProject != null ? csharpProject.CompilerSettings : null); - parser.GenerateTypeSystemMode = !fullParseInformationRequested; SyntaxTree cu = parser.Parse(fileContent, fileName); cu.Freeze(); @@ -135,7 +101,7 @@ namespace CSharpBinding.Parser int endOffset; int searchOffset = 0; // HACK: workaround for parser bug: uses \n instead of \r\n in comment.Content - string commentContent = document.GetText(commentStartOffset, commentEndOffset - commentStartOffset + 1); + string commentContent = document.GetText(commentStartOffset, Math.Min(commentEndOffset - commentStartOffset + 1, commentEndOffset - commentStartOffset)); do { int start = commentStartOffset + searchOffset; int absoluteOffset = document.IndexOf(match, start, document.TextLength - start, StringComparison.Ordinal); diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs index 1ec12f9a3a..a7880dc1d6 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/CSharpCodeGenerator.cs @@ -66,7 +66,7 @@ namespace CSharpBinding.Refactoring AddAttribute(target.Region, attribute, "return"); } - public override void InsertEventHandler(ITypeDefinition target, string name, IEvent eventDefinition, bool jumpTo) + public override void InsertEventHandler(ITypeDefinition target, string name, IEvent eventDefinition, bool jumpTo, InsertEventHandlerBodyKind bodyKind = InsertEventHandlerBodyKind.ThrowNotImplementedException) { IUnresolvedTypeDefinition match = null; @@ -103,15 +103,30 @@ namespace CSharpBinding.Refactoring decl.Parameters.AddRange(param); using (Script script = context.StartScript()) { - // FIXME : will not work properly if there are no members. + int eolLen = 0; if (last == match) { - throw new NotImplementedException(); - // TODO InsertWithCursor not implemented! - //script.InsertWithCursor("Insert event handler", Script.InsertPosition.End, decl).RunSynchronously(); + eolLen = 2; + script.AddTo((TypeDeclaration)node, decl); } else { - // TODO does not jump correctly... script.InsertAfter(node, decl); - editor.JumpTo(throwStmt.StartLocation.Line, throwStmt.StartLocation.Column); + } + switch (bodyKind) { + case InsertEventHandlerBodyKind.TodoComment: + Comment comment = new Comment(" TODO: Implement " + name); + script.Replace(throwStmt, comment); + script.Select(comment); + break; + case InsertEventHandlerBodyKind.Nothing: + var segment = script.GetSegment(throwStmt); + if (script is DocumentScript && eolLen > 0) { + eolLen = ((DocumentScript)script).CurrentDocument.GetLineByOffset(segment.Offset).DelimiterLength; + } + script.RemoveText(segment.Offset, segment.Length - eolLen); + script.Select(segment.Offset, segment.Offset); + break; + case InsertEventHandlerBodyKind.ThrowNotImplementedException: + script.Select(throwStmt); + break; } } } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/EditorScript.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/EditorScript.cs index cb33ec2b33..30099aa233 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/EditorScript.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/EditorScript.cs @@ -18,6 +18,7 @@ using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using System.Windows.Threading; @@ -80,6 +81,16 @@ namespace CSharpBinding.Refactoring editor.Select(startOffset, endOffset - startOffset); } + public override void Select(int startOffset, int endOffset) + { + editor.Select(Math.Min(startOffset, endOffset), Math.Abs(endOffset - startOffset)); + } + + public override void Select(TextLocation start, TextLocation end) + { + Select(editor.Document.GetOffset(start), editor.Document.GetOffset(end)); + } + public override Task Link(params AstNode[] nodes) { var segs = nodes.Select(node => GetSegment(node)).ToArray(); @@ -132,21 +143,21 @@ namespace CSharpBinding.Refactoring switch (defaultPosition) { case InsertPosition.Start: - layer.CurrentInsertionPoint = 0; + layer.CurrentInsertionPointIndex = 0; break; case InsertPosition.End: - layer.CurrentInsertionPoint = insertionPoints.Count - 1; + layer.CurrentInsertionPointIndex = insertionPoints.Count - 1; break; case InsertPosition.Before: for (int i = 0; i < insertionPoints.Count; i++) { if (insertionPoints[i].Location < loc) - layer.CurrentInsertionPoint = i; + layer.CurrentInsertionPointIndex = i; } break; case InsertPosition.After: for (int i = 0; i < insertionPoints.Count; i++) { if (insertionPoints[i].Location > loc) { - layer.CurrentInsertionPoint = i; + layer.CurrentInsertionPointIndex = i; break; } } @@ -172,13 +183,34 @@ namespace CSharpBinding.Refactoring args.InsertionPoint.LineBefore == NewLineInsertion.None && nodes.Count > 1) { args.InsertionPoint.LineAfter = NewLineInsertion.BlankLine; } + + var insertionPoint = args.InsertionPoint; + if (nodes.All(n => n is EnumMemberDeclaration)) { + insertionPoint.LineAfter = NewLineInsertion.Eol; + insertionPoint.LineBefore = NewLineInsertion.None; + } - int offset = currentScript.GetCurrentOffset(args.InsertionPoint.Location); - int indentLevel = currentScript.GetIndentLevelAt(offset); + int offset = currentScript.GetCurrentOffset(insertionPoint.Location); + int indentLevel = currentScript.GetIndentLevelAt(Math.Max(0, offset - 1)); foreach (var node in nodes.Reverse()) { var output = currentScript.OutputNode(indentLevel, node); - int delta = args.InsertionPoint.Insert(target, output.Text); + var text = output.Text; + if (node is EnumMemberDeclaration) { + if (insertionPoint != layer.InsertionPoints.Last()) { + text += ","; + } else { + var parentEnum = currentScript.context.RootNode.GetNodeAt(insertionPoint.Location, n => (n is TypeDeclaration) && ((TypeDeclaration)n).ClassType == ClassType.Enum) as TypeDeclaration; + if (parentEnum != null) { + var lastMember = parentEnum.Members.LastOrDefault(); + if (lastMember != null) { + var segment = currentScript.GetSegment(lastMember); + currentScript.InsertText(segment.EndOffset, ","); + } + } + } + } + int delta = insertionPoint.Insert(target, text); output.RegisterTrackedSegments(currentScript, delta + offset); } currentScript.FormatText(nodes); @@ -239,19 +271,6 @@ namespace CSharpBinding.Refactoring var layer = new InsertionCursorLayer(area, operation, insertionPoints); area.Dispatcher.BeginInvoke(DispatcherPriority.Background, (Action)area.TextView.InvalidateVisual); - if (declaringType.Kind == TypeKind.Enum) { - foreach (var node in nodes.Reverse()) { - int indentLevel = GetIndentLevelAt(area.Document.GetOffset(declaringType.BodyRegion.Begin)); - var output = OutputNode(indentLevel, node); - var point = insertionPoints[0]; - var offset = area.Document.GetOffset(point.Location); - var text = output.Text + ","; - var delta = point.Insert(area.Document, text); - output.RegisterTrackedSegments(script, delta + offset); - } - tcs.SetResult(script); - return tcs.Task; - } InsertWithCursorOnLayer(script, layer, tcs, nodes, area.Document); return tcs.Task; } diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertionCursorLayer.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertionCursorLayer.cs index 5da8782c9a..7719012002 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertionCursorLayer.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/InsertionCursorLayer.cs @@ -24,6 +24,7 @@ using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; + using ICSharpCode.AvalonEdit; using ICSharpCode.AvalonEdit.Editing; using ICSharpCode.AvalonEdit.Rendering; @@ -31,6 +32,7 @@ using ICSharpCode.AvalonEdit.Utils; using ICSharpCode.NRefactory; using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop.Editor; + namespace CSharpBinding.Refactoring { class InsertionCursorLayer : Canvas, IDisposable @@ -41,9 +43,10 @@ namespace CSharpBinding.Refactoring readonly TextArea editor; - public int CurrentInsertionPoint { - get; - set; + public int CurrentInsertionPointIndex { get; set; } + + public InsertionPoint[] InsertionPoints { + get { return insertionPoints; } } int insertionPointNextToMouse = -1; @@ -73,8 +76,8 @@ namespace CSharpBinding.Refactoring protected override void OnRender(DrawingContext drawingContext) { - DrawLineForInsertionPoint(CurrentInsertionPoint, markerPen, drawingContext); - if (insertionPointNextToMouse > -1 && insertionPointNextToMouse != CurrentInsertionPoint) + DrawLineForInsertionPoint(CurrentInsertionPointIndex, markerPen, drawingContext); + if (insertionPointNextToMouse > -1 && insertionPointNextToMouse != CurrentInsertionPointIndex) DrawLineForInsertionPoint(insertionPointNextToMouse, tempMarkerPen, drawingContext); SetGroupBoxPosition(); // HACK: why OnRender() override? we could just use Line objects instead @@ -128,7 +131,7 @@ namespace CSharpBinding.Refactoring else { insertionPointNextToMouse = FindNextInsertionPoint(e.GetPosition(this)); if (insertionPointNextToMouse >= 0) - CurrentInsertionPoint = insertionPointNextToMouse; + CurrentInsertionPointIndex = insertionPointNextToMouse; InvalidateVisual(); } e.Handled = true; @@ -181,9 +184,9 @@ namespace CSharpBinding.Refactoring { return (sender, e) => { if (up) - layer.CurrentInsertionPoint = Math.Max(0, layer.CurrentInsertionPoint - 1); + layer.CurrentInsertionPointIndex = Math.Max(0, layer.CurrentInsertionPointIndex - 1); else - layer.CurrentInsertionPoint = Math.Min(layer.insertionPoints.Length - 1, layer.CurrentInsertionPoint + 1); + layer.CurrentInsertionPointIndex = Math.Min(layer.insertionPoints.Length - 1, layer.CurrentInsertionPointIndex + 1); layer.InvalidateVisual(); layer.ScrollToInsertionPoint(); }; @@ -192,9 +195,9 @@ namespace CSharpBinding.Refactoring ExecutedRoutedEventHandler MoveMarkerPage(bool up) { return (sender, e) => { - TextLocation current = layer.insertionPoints[layer.CurrentInsertionPoint].Location; + TextLocation current = layer.insertionPoints[layer.CurrentInsertionPointIndex].Location; double currentVPos = layer.editor.TextView.GetVisualTopByDocumentLine(current.Line); - int newIndex = layer.CurrentInsertionPoint; + int newIndex = layer.CurrentInsertionPointIndex; double newVPos; do { if (up) { @@ -214,7 +217,7 @@ namespace CSharpBinding.Refactoring newVPos = layer.editor.TextView.GetVisualTopByDocumentLine(layer.insertionPoints[newIndex].Location.Line); } while (Math.Abs(currentVPos - newVPos) < layer.editor.ActualHeight); - layer.CurrentInsertionPoint = newIndex; + layer.CurrentInsertionPointIndex = newIndex; layer.InvalidateVisual(); layer.ScrollToInsertionPoint(); }; @@ -224,9 +227,9 @@ namespace CSharpBinding.Refactoring { return (sender, e) => { if (up) - layer.CurrentInsertionPoint = 0; + layer.CurrentInsertionPointIndex = 0; else - layer.CurrentInsertionPoint = layer.insertionPoints.Length - 1; + layer.CurrentInsertionPointIndex = layer.insertionPoints.Length - 1; layer.InvalidateVisual(); layer.ScrollToInsertionPoint(); }; @@ -247,14 +250,14 @@ namespace CSharpBinding.Refactoring internal void ScrollToInsertionPoint() { - var location = insertionPoints[CurrentInsertionPoint].Location; + var location = insertionPoints[CurrentInsertionPointIndex].Location; editor.GetService().ScrollTo(location.Line, location.Column); SetGroupBoxPosition(); } void SetGroupBoxPosition() { - var boxPosition = GetLinePosition(CurrentInsertionPoint) + new Vector(editor.TextView.ActualWidth * 0.6 - 5, -groupBox.ActualHeight / 2.0); + var boxPosition = GetLinePosition(CurrentInsertionPointIndex) + new Vector(editor.TextView.ActualWidth * 0.6 - 5, -groupBox.ActualHeight / 2.0); Canvas.SetTop(groupBox, boxPosition.Y); Canvas.SetLeft(groupBox, boxPosition.X); } @@ -267,7 +270,7 @@ namespace CSharpBinding.Refactoring void FireExited(bool success) { if (Exited != null) { - Exited(this, new InsertionCursorEventArgs(insertionPoints[CurrentInsertionPoint], success)); + Exited(this, new InsertionCursorEventArgs(insertionPoints[CurrentInsertionPointIndex], success)); } } @@ -278,7 +281,7 @@ namespace CSharpBinding.Refactoring var content = new StackPanel { Children = { new TextBlock { - Text = "Use Up/Down to move to another location.\r\n" + "Press Enter to select the location.\r\n" + "Press Esc to cancel this operation." + Text = SD.ResourceService.GetString("CSharpBinding.Refactoring.InsertWithCursor.Description") } } }; diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SDRefactoringContext.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SDRefactoringContext.cs index 1fa3af1f23..1abfe05bbf 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SDRefactoringContext.cs +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SDRefactoringContext.cs @@ -44,6 +44,7 @@ namespace CSharpBinding.Refactoring readonly ITextEditor editor; readonly ITextSource textSource; readonly TextLocation location; + readonly TextEditorOptions editorOptions; IDocument document; int selectionStart, selectionLength; @@ -86,6 +87,7 @@ namespace CSharpBinding.Refactoring this.selectionStart = selectionStart; this.selectionLength = selectionLength; this.location = location; + this.editorOptions = SD.EditorControlService.GlobalOptions.ToEditorOptions(); InitializeServices(); } @@ -99,6 +101,7 @@ namespace CSharpBinding.Refactoring this.selectionStart = editor.SelectionStart; this.selectionLength = editor.SelectionLength; this.location = location; + this.editorOptions = editor.ToEditorOptions(); InitializeServices(); } @@ -131,6 +134,12 @@ namespace CSharpBinding.Refactoring } } + public override TextEditorOptions TextEditorOptions { + get { + return editorOptions; + } + } + public IDocument Document { get { IDocument result = LazyInit.VolatileRead(ref document); diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml index 3e5d356063..7f1f749f85 100644 --- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml +++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/SearchForIssuesDialog.xaml @@ -11,7 +11,7 @@ WindowStartupLocation="CenterOwner" Closing="Window_Closing" MinHeight="250" MinWidth="200" - Height="450" Width="400" Title="Search For Issues"> + Height="450" Width="400" Title="{core:Localize XML.MainMenu.SearchMenu.SearchForIssues}"> @@ -24,15 +24,15 @@ -