buffer.tin 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #nop vim: set filetype=tt:;
  2. /*
  3. 本文件属于 PaoTin++ 的一部分。
  4. PaoTin++ © 2020~2023 的所有版权均由担子炮(dzp <danzipao@gmail.com>) 享有并保留一切法律权利
  5. 你可以在遵照 GPLv3 协议的基础之上使用、修改及重新分发本程序。
  6. */
  7. #nop 本文件是 xtintin 的一部分,实现了一些 buffer 工具函数。;
  8. ///=== {
  9. ///// buffer 操作函数
  10. /////
  11. // ## buffer.RawLine
  12. // 打印当前触发行的原始文本,而不论当前触发器是否为颜色触发。
  13. // };
  14. #alias {buffer.RawLine} {
  15. #line quiet #info output save;
  16. #echo {%s} {$info[OUTPUT][LINE]};
  17. };
  18. ///=== {
  19. // ## buffer.PlainLine
  20. // 打印当前触发行的无色文本,而不论当前触发器是否为颜色触发。
  21. // };
  22. #alias {buffer.PlainLine} {
  23. #line quiet #info output save;
  24. #echo {%s} {@str.Plain{$info[OUTPUT][LINE]}};
  25. };
  26. ///=== {
  27. // #@ buffer.RawLine
  28. // 获得当前触发行的原始文本,而不论当前触发器是否为颜色触发。
  29. // };
  30. #func {buffer.RawLine} {
  31. #line quiet #info output save;
  32. #return {$info[OUTPUT][LINE]};
  33. };
  34. ///=== {
  35. // #@ buffer.PlainLine
  36. // 获得当前触发行的无色文本,而不论当前触发器是否为颜色触发。
  37. // };
  38. #func {buffer.PlainLine} {
  39. #line quiet #info output save;
  40. #local line {$info[OUTPUT][LINE]};
  41. #return {@str.Plain{$line}};
  42. };
  43. ///=== {
  44. // #@ buffer.GetRawLine <行号> [<截止行号>]
  45. // 获得缓冲区中的文本,以原始格式返回。行号从 -1 开始往上数,最后一行为 -1。
  46. // 如果只提供一个行号,则返回字符串,否则返回列表。
  47. // };
  48. #func {buffer.GetRawLine} {
  49. #local lineNo {%1};
  50. #local endNo {%2};
  51. #if { "$endNo" != "" } {
  52. #if { $endNo < $lineNo } {
  53. #local tmp $endNo;
  54. #local endNo $lineNo;
  55. #local lineNo $tmp;
  56. };
  57. };
  58. #local line {};
  59. #line quiet #buffer {get} {line} {$lineNo} {$endNo};
  60. #return {$line};
  61. };
  62. ///=== {
  63. // #@ buffer.GetPlainLine <行号> [<截止行号>]
  64. // 获得缓冲区中的文本,以无色格式返回。行号从 -1 开始往上数,最后一行为 -1。
  65. // 如果只提供一个行号,则返回字符串,否则返回列表。
  66. // };
  67. #func {buffer.GetPlainLine} {
  68. #local lineNo {%1};
  69. #local endNo {%2};
  70. #if { "$endNo" != "" } {
  71. #if { $endNo < $lineNo } {
  72. #local tmp $endNo;
  73. #local endNo $lineNo;
  74. #local lineNo $tmp;
  75. };
  76. };
  77. #local line {};
  78. #line quiet #buffer {get} {line} {$lineNo} {$endNo};
  79. #if { "$endNo" == "" } {
  80. #return {@str.Plain{$line}};
  81. };
  82. #else {
  83. #foreach {*line[]} {lineNo} {
  84. #local line[$lineNo] {@str.Plain{$line[$lineNo]}};
  85. };
  86. #return {$line};
  87. };
  88. };