acid.lib 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. defn saminit()
  2. {
  3. if !access("/sys/src/cmd/sam/cmd.acid") then
  4. rc("cd /sys/src/cmd/sam && mk cmd.acid");
  5. include("/sys/src/cmd/sam/cmd.acid");
  6. }
  7. defn printrunestring(addr, len)
  8. {
  9. loop 1,len do {
  10. print(*(addr\r));
  11. addr = addr+2;
  12. }
  13. }
  14. defn runestring(addr, len)
  15. {
  16. local s;
  17. s = "";
  18. loop 1,len do {
  19. s = s + *(addr\r);
  20. addr = addr+2;
  21. }
  22. return s;
  23. }
  24. defn string(s)
  25. {
  26. complex String s;
  27. return runestring(s.s, s.n);
  28. }
  29. defn filemenu(f)
  30. {
  31. complex File f;
  32. local s;
  33. s = "";
  34. if f != *cmd then {
  35. if f.mod then
  36. s = s + "'";
  37. else
  38. s = s + " ";
  39. if f.rasp != 0 then
  40. s = s + "+";
  41. else
  42. s = s + "-";
  43. if f == *curfile then
  44. s = s + ".";
  45. else
  46. s = s + " ";
  47. s = s + " ";
  48. }
  49. s = s + string(f.name);
  50. print("file(", f\X, ") // ", s, "\n");
  51. }
  52. defn files()
  53. {
  54. local i, f;
  55. i = 0;
  56. tempfile = (List)tempfile;
  57. if tempfile.nused == 0 then
  58. filemenu(*cmd);
  59. loop 1,tempfile.nused do {
  60. f = (File)tempfile.g.filep[i];
  61. filemenu(f);
  62. i = i+1;
  63. }
  64. }
  65. defn range(r)
  66. {
  67. complex Range r;
  68. if r.p1 == r.p2 then
  69. return itoa(r.p1, "#%d");
  70. return itoa(r.p1, "#%d")+"-"+itoa(r.p2, "#%d");
  71. }
  72. defn file(f)
  73. {
  74. complex File f;
  75. filemenu(f);
  76. print("\t$=#", f.nc\D, " .=", range(f.dot.r), " buffer(", f\X, ")\n");
  77. if f == *cmd then {
  78. print("\tcmdpt=#", *cmdpt\D, " cmdptadv=#", *cmdptadv\D, "\n");
  79. }
  80. }
  81. defn buffer(b)
  82. {
  83. complex Buffer b;
  84. print("buffer(", b\X, "): c=", b.c\X, " nc=", b.nc\D, "\n");
  85. print("cache: ==(");
  86. print(runestring(b.c, b.nc));
  87. print(")==\n");
  88. }
  89. print("/sys/lib/acid/sam");