Guest User

Untitled

a guest
Dec 11th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. namespace FooBarIde
  2. {
  3. class InsertDateHandler : CommandHandler
  4. {
  5. protected override void Run()
  6. {
  7. Document doc = IdeApp.Workbench.ActiveDocument;
  8.  
  9. try
  10. {
  11. var lineCount = doc.Editor.LineCount;
  12.  
  13. var lines = new List<MonoDevelop.Ide.Editor.IDocumentLine>();
  14. for (var i = 0; i < lineCount; i++)
  15. {
  16. var x = doc.Editor.GetLine(i);
  17. if (x != null)
  18. lines.Add(x);
  19. }
  20.  
  21. var result =
  22. lines.Where(x =>
  23. {
  24. var line = doc.Editor.GetLineText(x.LineNumber);
  25. return line.Contains("open");
  26. });
  27. if (result.Any())
  28. {
  29. var lineNumber = result.OrderByDescending(x => x.LineNumber).First();
  30. var text = "open Foo";
  31. doc.Editor.InsertText(lineNumber.EndOffsetIncludingDelimiter, text);
  32. doc.Editor.InsertText(lineNumber.EndOffsetIncludingDelimiter + text.Length, "\n");
  33. }
  34. else
  35. {
  36. var openeing =
  37. lines.Where(x =>
  38. {
  39. var line = doc.Editor.GetLineText(x.LineNumber);
  40. return line.Contains("module") || line.Contains("namesapce");
  41. });
  42. if (result.Count() != 0)
  43. {
  44. var lineNumber = openeing.OrderByDescending(x => x.LineNumber).First();
  45. doc.Editor.InsertText(lineNumber.Offset + lineNumber.Length + 1, "open Foo\n");
  46. }
  47. else
  48. {
  49. var lineNumber = openeing.OrderByDescending(x => x.LineNumber).First();
  50. doc.Editor.InsertText(0, "open Foo");
  51. }
  52. }
  53. }
  54. catch (Exception e)
  55. {
  56. MessageService.ShowError("Something failed", "Error details", e);
  57. LoggingService.LogInternalError("Something failed...", e);
  58. }
  59. }
  60.  
  61. protected override void Update(CommandInfo info)
  62. {
  63. Document doc = IdeApp.Workbench.ActiveDocument;
  64. info.Enabled = doc != null && doc.Editor != null;
  65.  
  66. }
  67. }
  68.  
  69. public enum DateInserterCommands
  70. {
  71. InsertDate,
  72. }
  73. }
Add Comment
Please, Sign In to add comment