jungle-elisp.el 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269
  1. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;jungle tools;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  2. (setq *jungle-root* "~/quicklisp/local-projects/server/")
  3. (defun jungle-path (path)
  4. (concat *jungle-root* path))
  5. (defun jungle-log (msg)
  6. (let ((log (get-buffer-create "*jungle-log*")))
  7. (save-excursion
  8. (set-buffer log)
  9. (end-of-buffer)
  10. (newline)
  11. (insert msg))))
  12. (defun jungle-report ()
  13. (interactive)
  14. (let ((report-buffer (get-buffer-create "*jungle-report*")))
  15. (set-buffer report-buffer)
  16. (let ((buffer-read-only nil))
  17. (erase-buffer)
  18. (beginning-of-buffer)
  19. (newline 2)
  20. (insert "***JUNGLE REPORT***")
  21. (center-line)
  22. (newline 3)
  23. (insert-file-contents (jungle-path "ADVICE"))
  24. (end-of-buffer)
  25. (newline 3)
  26. (insert-file-contents (jungle-path "SPRINT"))
  27. (end-of-buffer)
  28. (newline 3)
  29. (insert "BUGS:")
  30. (newline 2)
  31. (let ((cmd (concat "grep -R --line-number --exclude='*~' \"//bug\" " *jungle-root*)))
  32. (insert (shell-command-to-string cmd)))
  33. (newline 3)
  34. (insert "OPTIMIZE:")
  35. (newline 2)
  36. (let ((cmd (concat "grep -R --line-number --exclude='*~' \"//optimize\" " *jungle-root*)))
  37. (insert (shell-command-to-string cmd)))
  38. (jungle-log (concat "after optimize: " (number-to-string (point))))
  39. (newline 3)
  40. (insert "MAGIC:")
  41. (newline 2)
  42. (let ((cmd (concat "grep -R --line-number --exclude='*~' \"//magic\" " *jungle-root*)))
  43. (insert (shell-command-to-string cmd)))
  44. (newline 3)
  45. (insert "TODO:")
  46. (newline 2)
  47. (let ((cmd (concat "grep -R --line-number --exclude='*~' \"//todo\" " *jungle-root*)))
  48. (insert (shell-command-to-string cmd)))
  49. (newline 2)
  50. (insert-file-contents (jungle-path "TODO"))
  51. (kill-line 2))
  52. (beginning-of-buffer)
  53. (grep-mode)
  54. (switch-to-buffer report-buffer)))
  55. (global-set-key "\C-cjr" 'jungle-report)
  56. (setq *jungle-previous-import* "domUtilities")
  57. (defun jungle-add-import (name file)
  58. (interactive "sName: \nsFile: ")
  59. (if (string= file "")
  60. (setq file *jungle-previous-import*)
  61. (setq *jungle-previous-import* file))
  62. (if (string= "./" (subseq file 0 2))
  63. (setq file (concat file ".js"))
  64. (setq file (concat "/" file ".js")))
  65. (save-excursion
  66. (beginning-of-buffer)
  67. (cond
  68. ((search-forward file nil t)
  69. (unless (search-forward name nil t -1)
  70. (search-forward "{" nil t -1)
  71. (forward-char)
  72. (insert (format " %s,
  73. " name))))
  74. (t
  75. (insert (format "import { %s } from '%s';
  76. " name file))))))
  77. (global-set-key "\C-cji" 'jungle-add-import)
  78. (defun jungle-add-default-import (name file)
  79. (interactive "sName: \nsFile: ")
  80. (if (string= "./" (subseq file 0 2))
  81. (setq file (concat file ".js"))
  82. (setq file (concat "jungle/" file ".js")))
  83. (save-excursion
  84. (beginning-of-buffer)
  85. (let ((import-string (format "import %s from '%s';" name file)))
  86. (unless (search-forward import-string nil t)
  87. (insert (concat import-string "
  88. "))))))
  89. (global-set-key "\C-cjI" 'jungle-add-default-import)
  90. (defun jungle-add-export (name)
  91. (interactive "sName: ")
  92. (save-excursion
  93. (beginning-of-buffer)
  94. (if (search-forward "export" nil t)
  95. (unless (search-forward (concat " " name ",") nil t)
  96. (search-forward "}")
  97. (backward-char 2)
  98. (insert (concat ",\n " name)))
  99. (end-of-buffer)
  100. (insert (concat "\n\nexport { " name " }")))))
  101. (global-set-key "\C-cje" 'jungle-add-export)
  102. (defun jungle-print-color-properties (name)
  103. (interactive "sName: ")
  104. (insert (concat name "Background: randomLightColor(),
  105. " name "Color: randomDarkColor(),\n
  106. ")))
  107. (global-set-key "\C-cjp" 'jungle-print-color-properties)
  108. (defun jungle-print-color-properties-with-contrast (name)
  109. (interactive "sName: ")
  110. (insert (concat name "Background: randomLightColor(),
  111. " name "Color: randomDarkColor(),
  112. " name "Contrast: randomLightColor(),\n
  113. ")))
  114. (global-set-key "\C-cjP" 'jungle-print-color-properties-with-contrast)
  115. ;;it would be nice to not add whitespace only to kill ring
  116. ;; (defun jungle-filter-buffer-substring (beg end &optional delete)
  117. ;; (jungle-log "killin in the jungle" )
  118. ;; (save-excursion
  119. ;; (goto-char beg)
  120. ;; (if (search-forward-regexp "[^[:space:]]" end)
  121. ;; (subr--with-wrapper-hook-no-warnings
  122. ;; filter-buffer-substring-functions (beg end delete)
  123. ;; (cond
  124. ;; ((or delete buffer-substring-filters)
  125. ;; (save-excursion
  126. ;; (goto-char beg)
  127. ;; (let ((string (if delete (delete-and-extract-region beg end)
  128. ;; (buffer-substring beg end))))
  129. ;; (dolist (filter buffer-substring-filters)
  130. ;; (setq string (funcall filter string)))
  131. ;; string)))
  132. ;; (t
  133. ;; (buffer-substring beg end))))
  134. ;; "")))
  135. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JUNK YARD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  136. ;; (defun jungle-serialize-type (type)
  137. ;; (interactive "sType Name: ")
  138. ;; (jungle-add-import "arrayEquals" "jungle/utilities.js")
  139. ;; ;; (jungle-add-import "audioNodeSerializers" "./compileSynth.js")
  140. ;; ;; (jungle-add-import "audioNodeUnserializers" "./compileSynth.js")
  141. ;; ;; (jungle-add-import "serializeInputs" "./audioUtilities.js")
  142. ;; ;; (jungle-add-import "unserializeInputs" "./audioUtilities.js")
  143. ;; ;; (jungle-add-import "serializeOutputs" "./audioUtilities.js")
  144. ;; ;; (jungle-add-import "unserializeOutputs" "./audioUtilities.js")
  145. ;; (let ((c-type (upcase-initials type)))
  146. ;; ;; (save-excursion
  147. ;; ;; (beginning-of-buffer)
  148. ;; ;; (search-forward (concat "make" c-type))
  149. ;; ;; (search-forward "return {")
  150. ;; ;; (insert (format "
  151. ;; ;; type: '%s'," type)))
  152. ;; (insert (format
  153. ;; "function serialize%s(%s) {
  154. ;; return ['%s',];
  155. ;; }" c-type type type))
  156. ;; (newline 2)
  157. ;; (insert (format
  158. ;; "function unserialize%s(unserialized%s) {
  159. ;; return {type: '%s',};
  160. ;; }" c-type c-type type))
  161. ;; (newline 2)
  162. ;; (insert (format
  163. ;; "function %sEquals(%s1, %s2) {
  164. ;; return arrayEquals(serialize%s(%s1),
  165. ;; serialize%s(%s2),
  166. ;; undefined,
  167. ;; true);
  168. ;; }" type type type c-type type c-type type))
  169. ;; (save-excursion
  170. ;; (search-forward "export {")
  171. ;; (forward-char)
  172. ;; (insert (jungle-serialized-function-names type)))))
  173. ;; (global-set-key "\C-cjs" 'jungle-serialize-type)
  174. ;; (defun jungle-serialized-function-names (type)
  175. ;; (interactive "sType Name: ")
  176. ;; (insert (format "serialize%s,
  177. ;; unserialize%s,
  178. ;; %sEquals,
  179. ;; " (upcase-initials type) (upcase-initials type) type))
  180. ;; ;; (kill-new (format "serialize%s,
  181. ;; ;; unserialize%s,
  182. ;; ;; %sEquals" (upcase-initials type) (upcase-initials type) type))
  183. ;; )
  184. ;; (global-set-key "\C-cjn" 'jungle-serialized-function-names)