buffer.tin 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  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. #if { "$endNo" == "" } {
  61. #return {$line[1]};
  62. };
  63. #else {
  64. #return {$line};
  65. };
  66. };
  67. ///=== {
  68. // #@ buffer.GetPlainLine <行号> [<截止行号>]
  69. // 获得缓冲区中的文本,以无色格式返回。行号从 -1 开始往上数,最后一行为 -1。
  70. // 如果只提供一个行号,则返回字符串,否则返回列表。
  71. // };
  72. #func {buffer.GetPlainLine} {
  73. #local lineNo {%1};
  74. #local endNo {%2};
  75. #if { "$endNo" != "" } {
  76. #if { $endNo < $lineNo } {
  77. #local tmp $endNo;
  78. #local endNo $lineNo;
  79. #local lineNo $tmp;
  80. };
  81. };
  82. #local line {};
  83. #line quiet #buffer {get} {line} {$lineNo} {$endNo};
  84. #if { "$endNo" == "" } {
  85. #return {@str.Plain{$line[1]}};
  86. };
  87. #else {
  88. #foreach {*line[]} {lineNo} {
  89. #local line[$lineNo] {@str.Plain{$line[$lineNo]}};
  90. };
  91. #return {$line};
  92. };
  93. };