buffer.tin 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  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. #local line {$info[OUTPUT][LINE]};
  17. #unvar info[OUTPUT];
  18. #echo {%s} {$line};
  19. };
  20. ///=== {
  21. // ## buffer.PlainLine
  22. // 打印当前触发行的无色文本,而不论当前触发器是否为颜色触发。
  23. // };
  24. #alias {buffer.PlainLine} {
  25. #line quiet #info output save;
  26. #local line {$info[OUTPUT][LINE]};
  27. #unvar info[OUTPUT];
  28. #echo {%s} {@str.Plain{$line}};
  29. };
  30. ///=== {
  31. // #@ buffer.RawLine
  32. // 获得当前触发行的原始文本,而不论当前触发器是否为颜色触发。
  33. // };
  34. #func {buffer.RawLine} {
  35. #line quiet #info output save;
  36. #local line {$info[OUTPUT][LINE]};
  37. #unvar info[OUTPUT];
  38. #return {$line};
  39. };
  40. ///=== {
  41. // #@ buffer.PlainLine
  42. // 获得当前触发行的无色文本,而不论当前触发器是否为颜色触发。
  43. // };
  44. #func {buffer.PlainLine} {
  45. #line quiet #info output save;
  46. #local line {$info[OUTPUT][LINE]};
  47. #unvar info[OUTPUT];
  48. #return {@str.Plain{$line}};
  49. };
  50. ///=== {
  51. // #@ buffer.GetRawLine <行号> [<截止行号>]
  52. // 获得缓冲区中的文本,以原始格式返回。行号从 -1 开始往上数,最后一行为 -1。
  53. // 如果只提供一个行号,则返回字符串,否则返回列表。
  54. // };
  55. #func {buffer.GetRawLine} {
  56. #local lineNo {%1};
  57. #local endNo {%2};
  58. #if { "$endNo" != "" } {
  59. #if { $endNo < $lineNo } {
  60. #local tmp $endNo;
  61. #local endNo $lineNo;
  62. #local lineNo $tmp;
  63. };
  64. };
  65. #local line {};
  66. #line quiet #buffer {get} {line} {$lineNo} {$endNo};
  67. #return {$line};
  68. };
  69. ///=== {
  70. // #@ buffer.GetPlainLine <行号> [<截止行号>]
  71. // 获得缓冲区中的文本,以无色格式返回。行号从 -1 开始往上数,最后一行为 -1。
  72. // 如果只提供一个行号,则返回字符串,否则返回列表。
  73. // };
  74. #func {buffer.GetPlainLine} {
  75. #local lineNo {%1};
  76. #local endNo {%2};
  77. #if { "$endNo" != "" } {
  78. #if { $endNo < $lineNo } {
  79. #local tmp $endNo;
  80. #local endNo $lineNo;
  81. #local lineNo $tmp;
  82. };
  83. };
  84. #local line {};
  85. #line quiet #buffer {get} {line} {$lineNo} {$endNo};
  86. #if { "$endNo" == "" } {
  87. #return {@str.Plain{$line}};
  88. };
  89. #else {
  90. #foreach {*line[]} {lineNo} {
  91. #local line[$lineNo] {@str.Plain{$line[$lineNo]}};
  92. };
  93. #return {$line};
  94. };
  95. };