Datei: NDOPackage/MergeConflictBase.cs
Last Commit (0625a4c)
1 | // |
2 | // Copyright ( c) 2002-2019 Mirko Matytschak |
3 | // (www.netdataobjects.de) |
4 | // |
5 | // Author: Mirko Matytschak |
6 | // |
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated |
8 | // documentation files (the "Software"), to deal in the Software without restriction, including without limitation |
9 | // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the |
10 | // Software, and to permit persons to whom the Software is furnished to do so, subject to the following |
11 | // conditions: |
12 | |
13 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions |
14 | // of the Software. |
15 | // |
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED |
17 | // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
18 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF |
19 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. |
21 | |
22 | |
23 | using System; |
24 | using System.Diagnostics; |
25 | using System.IO; |
26 | using System.Windows.Forms; |
27 | using EnvDTE; |
28 | using EnvDTE80; |
29 | using Microsoft.VisualStudio.CommandBars; |
30 | using System.Text.RegularExpressions; |
31 | using Microsoft.VisualStudio.Shell; |
32 | using System.ComponentModel.Design; |
33 | |
34 | namespace NETDataObjects.NDOVSPackage |
35 | { |
36 | ····/// <summary> |
37 | /// Zusammenfassung für MergeConflictBase. |
38 | ····/// </summary> |
39 | ····internal abstract class MergeConflictBase : AbstractCommand |
40 | ····{ |
41 | ········public MergeConflictBase( _DTE dte, CommandID commandId ) |
42 | ············: base( dte, commandId ) |
43 | ········{ |
44 | ········} |
45 | |
46 | ········protected bool GetConflictPositions( out EditPoint ep, out int myCodeOffset, out int cgCodeOffset, out int endConflictOffset ) |
47 | ········{ |
48 | ············Document document; |
49 | ············TextDocument textDoc; |
50 | |
51 | ············// Values will be ignored, if we return mit false |
52 | ············ep = null; |
53 | ············myCodeOffset = 0; |
54 | ············cgCodeOffset = 0; |
55 | ············endConflictOffset = 0; |
56 | |
57 | ············document = this.VisualStudioApplication.ActiveDocument; |
58 | ············if (document == null) |
59 | ················return false; |
60 | |
61 | ············textDoc = (TextDocument)document.Object( "TextDocument" ); |
62 | ············if (textDoc == null) |
63 | ················return false; |
64 | |
65 | ············ep = textDoc.Selection.ActivePoint.CreateEditPoint(); |
66 | ············textDoc.Selection.SelectLine(); |
67 | |
68 | ············if (textDoc.Selection.Text.IndexOf( "!!!! ClassGenerator merge conflict !!!! Your code follows:" ) < 0) |
69 | ················return false;··// Nothing to do |
70 | |
71 | ············ep.StartOfLine(); |
72 | ············myCodeOffset = ep.AbsoluteCharOffset; |
73 | |
74 | ············while (true) |
75 | ············{ |
76 | ················if (ep.AtEndOfDocument) |
77 | ····················return false; |
78 | ················ep.LineDown( 1 ); |
79 | ················if (ep.GetText( ep.LineLength ).IndexOf( "!!!! The ClassGenerator's code follows:" ) >= 0) |
80 | ····················break; |
81 | ············} |
82 | ············cgCodeOffset = ep.AbsoluteCharOffset; |
83 | ············while (true) |
84 | ············{ |
85 | ················if (ep.AtEndOfDocument) |
86 | ····················return false; |
87 | ················ep.LineDown( 1 ); |
88 | ················if (ep.GetText( ep.LineLength ).IndexOf( "!!!! End of merge conflict" ) >= 0) |
89 | ····················break; |
90 | ············} |
91 | ············endConflictOffset = ep.AbsoluteCharOffset; |
92 | ············return true; |
93 | ········} |
94 | |
95 | ········public abstract void DoIt(); |
96 | |
97 | ········protected override void DoIt( object sender, EventArgs e ) |
98 | ········{ |
99 | ············DoIt(); |
100 | ········} |
101 | |
102 | ········protected override void OnBeforeQueryStatus( object sender, EventArgs e ) |
103 | ········{ |
104 | ············OleMenuCommand item = sender as OleMenuCommand; |
105 | ············bool enabled = false; |
106 | ············Document document = this.VisualStudioApplication.ActiveDocument; |
107 | ············if (document != null) |
108 | ············{ |
109 | |
110 | ················TextDocument textDoc = (TextDocument)document.Object( "TextDocument" ); |
111 | ················if (textDoc != null) |
112 | ················{ |
113 | ····················string fileName = document.FullName.ToLower(); |
114 | ····················if (fileName.EndsWith( ".cs" )) |
115 | ························enabled = true; |
116 | ····················else if (fileName.EndsWith( ".vb" )) |
117 | ························enabled = true; |
118 | ····················if (enabled) |
119 | ····················{ |
120 | ························EditPoint ep = textDoc.Selection.ActivePoint.CreateEditPoint(); |
121 | ························ep.StartOfLine(); |
122 | ························string s = ep.GetText( ep.LineLength ); |
123 | ························if (s.IndexOf( "!!!! ClassGenerator merge conflict !!!! Your code follows:" ) < 0) |
124 | ····························enabled = false; |
125 | ····················} |
126 | ················} |
127 | ············} |
128 | |
129 | ············item.Enabled = enabled; |
130 | ········} |
131 | |
132 | ········public static implicit operator OleMenuCommand( MergeConflictBase abstractCommand ) |
133 | ········{ |
134 | ············return abstractCommand.command; |
135 | ········} |
136 | ····} |
137 | } |
138 | |
139 | |
140 | |
141 |
New Commit (fa0d6d6)
1 | // |
2 | // Copyright ( c) 2002-2022 Mirko Matytschak |
3 | // (www.netdataobjects.de) |
4 | // |
5 | // Author: Mirko Matytschak |
6 | // |
7 | // Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated |
8 | // documentation files (the "Software"), to deal in the Software without restriction, including without limitation |
9 | // the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the |
10 | // Software, and to permit persons to whom the Software is furnished to do so, subject to the following |
11 | // conditions: |
12 | |
13 | // The above copyright notice and this permission notice shall be included in all copies or substantial portions |
14 | // of the Software. |
15 | // |
16 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED |
17 | // TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
18 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF |
19 | // CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
20 | // DEALINGS IN THE SOFTWARE. |
21 | |
22 | |
23 | using System; |
24 | using System.Diagnostics; |
25 | using System.IO; |
26 | using System.Windows.Forms; |
27 | using EnvDTE; |
28 | using EnvDTE80; |
29 | using Microsoft.VisualStudio.CommandBars; |
30 | using System.Text.RegularExpressions; |
31 | using Microsoft.VisualStudio.Shell; |
32 | using System.ComponentModel.Design; |
33 | |
34 | namespace NETDataObjects.NDOVSPackage |
35 | { |
36 | ····/// <summary> |
37 | /// MergeConflictBase is currently not used. It is intended for the ClassGenerator. In the event of conflicts, this produces marks in the |
38 | ····/// code that can be resolved by this class. |
39 | ····/// </summary> |
40 | ····internal abstract class MergeConflictBase : AbstractCommand |
41 | ····{ |
42 | ········public MergeConflictBase( _DTE dte, CommandID commandId ) |
43 | ············: base( dte, commandId ) |
44 | ········{ |
45 | ········} |
46 | |
47 | ········protected bool GetConflictPositions( out EditPoint ep, out int myCodeOffset, out int cgCodeOffset, out int endConflictOffset ) |
48 | ········{ |
49 | ············Document document; |
50 | ············TextDocument textDoc; |
51 | |
52 | ············// Values will be ignored, if we return mit false |
53 | ············ep = null; |
54 | ············myCodeOffset = 0; |
55 | ············cgCodeOffset = 0; |
56 | ············endConflictOffset = 0; |
57 | |
58 | ············document = this.VisualStudioApplication.ActiveDocument; |
59 | ············if (document == null) |
60 | ················return false; |
61 | |
62 | ············textDoc = (TextDocument)document.Object( "TextDocument" ); |
63 | ············if (textDoc == null) |
64 | ················return false; |
65 | |
66 | ············ep = textDoc.Selection.ActivePoint.CreateEditPoint(); |
67 | ············textDoc.Selection.SelectLine(); |
68 | |
69 | ············if (textDoc.Selection.Text.IndexOf( "!!!! ClassGenerator merge conflict !!!! Your code follows:" ) < 0) |
70 | ················return false;··// Nothing to do |
71 | |
72 | ············ep.StartOfLine(); |
73 | ············myCodeOffset = ep.AbsoluteCharOffset; |
74 | |
75 | ············while (true) |
76 | ············{ |
77 | ················if (ep.AtEndOfDocument) |
78 | ····················return false; |
79 | ················ep.LineDown( 1 ); |
80 | ················if (ep.GetText( ep.LineLength ).IndexOf( "!!!! The ClassGenerator's code follows:" ) >= 0) |
81 | ····················break; |
82 | ············} |
83 | ············cgCodeOffset = ep.AbsoluteCharOffset; |
84 | ············while (true) |
85 | ············{ |
86 | ················if (ep.AtEndOfDocument) |
87 | ····················return false; |
88 | ················ep.LineDown( 1 ); |
89 | ················if (ep.GetText( ep.LineLength ).IndexOf( "!!!! End of merge conflict" ) >= 0) |
90 | ····················break; |
91 | ············} |
92 | ············endConflictOffset = ep.AbsoluteCharOffset; |
93 | ············return true; |
94 | ········} |
95 | |
96 | ········public abstract void DoIt(); |
97 | |
98 | ········protected override void DoIt( object sender, EventArgs e ) |
99 | ········{ |
100 | ············DoIt(); |
101 | ········} |
102 | |
103 | ········protected override void OnBeforeQueryStatus( object sender, EventArgs e ) |
104 | ········{ |
105 | ············OleMenuCommand item = sender as OleMenuCommand; |
106 | ············bool enabled = false; |
107 | ············Document document = this.VisualStudioApplication.ActiveDocument; |
108 | ············if (document != null) |
109 | ············{ |
110 | |
111 | ················TextDocument textDoc = (TextDocument)document.Object( "TextDocument" ); |
112 | ················if (textDoc != null) |
113 | ················{ |
114 | ····················string fileName = document.FullName.ToLower(); |
115 | ····················if (fileName.EndsWith( ".cs" )) |
116 | ························enabled = true; |
117 | ····················else if (fileName.EndsWith( ".vb" )) |
118 | ························enabled = true; |
119 | ····················if (enabled) |
120 | ····················{ |
121 | ························EditPoint ep = textDoc.Selection.ActivePoint.CreateEditPoint(); |
122 | ························ep.StartOfLine(); |
123 | ························string s = ep.GetText( ep.LineLength ); |
124 | ························if (s.IndexOf( "!!!! ClassGenerator merge conflict !!!! Your code follows:" ) < 0) |
125 | ····························enabled = false; |
126 | ····················} |
127 | ················} |
128 | ············} |
129 | |
130 | ············item.Enabled = enabled; |
131 | ········} |
132 | |
133 | ········public static implicit operator OleMenuCommand( MergeConflictBase abstractCommand ) |
134 | ········{ |
135 | ············return abstractCommand.command; |
136 | ········} |
137 | ····} |
138 | } |
139 | |
140 | |
141 | |
142 |