* changed description text of Visual Studio plugin * changed plugin install targets to include VS 2017 * add license file with MIT license * updated vsix for deployment * implement wrapper for all used classes of VCProjectEngine.dll since you cannot just use the oldest version of this assembly (see https://stackoverflow.com/questions/44288050/typecast-fails-when-visual-studio-extension-uses-reference-to-older-assembly). * improved serialization and deserialization of compile commands and compilation databases. * updated used JSON package * rename CommandObject to CompileCommand * changed implementation to keep non-existent file paths in cdb * made methods of SolutionParser non-static * replace spaces with tabs * added IntegrationTests project * configured tests to simulate a new instance of VisualStudio * added cinder as test project for integration tests * remove all absolute paths from expected output of integration tests fortune cookie message = A stranger will bring great meaning to your life.
79 lines
1.9 KiB
C#
79 lines
1.9 KiB
C#
using System;
|
|
using EnvDTE;
|
|
|
|
namespace CoatiSoftware.SourcetrailPlugin.Utility
|
|
{
|
|
class FileUtility
|
|
{
|
|
public delegate void ErrorCallback(string message);
|
|
|
|
public static ErrorCallback _errorCallback = null;
|
|
|
|
/**
|
|
* Returns true when file was found, false otherwise
|
|
*/
|
|
public static bool OpenSourceFile(DTE dte, string fileName)
|
|
{
|
|
try
|
|
{
|
|
dte.ItemOperations.OpenFile(fileName);
|
|
return true;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Logging.Logging.LogError("Exception: " + e.Message);
|
|
|
|
if (_errorCallback != null)
|
|
{
|
|
_errorCallback("Failed to open file at " + fileName);
|
|
}
|
|
|
|
string message = "Failed to open file at " + Logging.Obfuscation.NameObfuscator.GetObfuscatedName(fileName);
|
|
Logging.Logging.LogError(message);
|
|
|
|
return false;
|
|
}
|
|
}
|
|
|
|
public static void GoToLine(DTE dte, int lineNumber, int columnNumber)
|
|
{
|
|
try
|
|
{
|
|
((EnvDTE.TextSelection)dte.ActiveDocument.Selection).MoveToLineAndOffset(lineNumber, columnNumber);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Logging.Logging.LogError("Exception: " + e.Message);
|
|
|
|
if (_errorCallback != null)
|
|
{
|
|
_errorCallback("Failed to set cursor to position [" + lineNumber.ToString() + "," + columnNumber.ToString() + "]");
|
|
|
|
string message = "Failed to set cursor to position [" + lineNumber.ToString() + "," + columnNumber.ToString() + "]";
|
|
Logging.Logging.LogError(message);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static string GetActiveDocumentName(DTE dte)
|
|
{
|
|
return dte.ActiveDocument.Name;
|
|
}
|
|
|
|
public static string GetActiveDocumentPath(DTE dte)
|
|
{
|
|
return dte.ActiveDocument.Path;
|
|
}
|
|
|
|
public static int GetActiveLineNumber(DTE dte)
|
|
{
|
|
return ((EnvDTE.TextSelection)dte.ActiveDocument.Selection).ActivePoint.Line;
|
|
}
|
|
|
|
public static int GetActiveColumnNumber(DTE dte)
|
|
{
|
|
return ((EnvDTE.TextSelection)dte.ActiveDocument.Selection).ActivePoint.LineCharOffset;
|
|
}
|
|
}
|
|
}
|