jungle-elisp.el 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  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 (or (search-forward (concatenate 'string name ",") nil t -1)
  70. (search-forward (concatenate 'string name " ") nil t -1)
  71. (search-forward (concatenate 'string name "}") nil t -1))
  72. (search-forward "{" nil t -1)
  73. (forward-char)
  74. (insert (format " %s,
  75. " name))))
  76. (t
  77. (insert (format "import { %s } from '%s';
  78. " name file))))))
  79. (global-set-key "\C-cji" 'jungle-add-import)
  80. (defun jungle-add-default-import (name file)
  81. (interactive "sName: \nsFile: ")
  82. (if (string= "./" (subseq file 0 2))
  83. (setq file (concat file ".js"))
  84. (setq file (concat "jungle/" file ".js")))
  85. (save-excursion
  86. (beginning-of-buffer)
  87. (let ((import-string (format "import %s from '%s';" name file)))
  88. (unless (search-forward import-string nil t)
  89. (insert (concat import-string "
  90. "))))))
  91. (global-set-key "\C-cjI" 'jungle-add-default-import)
  92. (defun jungle-add-export (name)
  93. (interactive "sName: ")
  94. (save-excursion
  95. (beginning-of-buffer)
  96. (if (search-forward "export" nil t)
  97. (unless (search-forward (concat " " name ",") nil t)
  98. (search-forward "}")
  99. (backward-char 2)
  100. (insert (concat ",\n " name)))
  101. (end-of-buffer)
  102. (insert (concat "\n\nexport { " name " }")))))
  103. (global-set-key "\C-cje" 'jungle-add-export)
  104. (defun jungle-print-color-properties (name)
  105. (interactive "sName: ")
  106. (insert (concat name "Background: randomLightColor(),
  107. " name "Color: randomDarkColor(),\n
  108. ")))
  109. (global-set-key "\C-cjp" 'jungle-print-color-properties)
  110. (defun jungle-print-color-properties-with-contrast (name)
  111. (interactive "sName: ")
  112. (insert (concat name "Background: randomLightColor(),
  113. " name "Color: randomDarkColor(),
  114. " name "Contrast: randomLightColor(),\n
  115. ")))
  116. (global-set-key "\C-cjP" 'jungle-print-color-properties-with-contrast)
  117. ;;it would be nice to not add whitespace only to kill ring
  118. ;; (defun jungle-filter-buffer-substring (beg end &optional delete)
  119. ;; (jungle-log "killin in the jungle" )
  120. ;; (save-excursion
  121. ;; (goto-char beg)
  122. ;; (if (search-forward-regexp "[^[:space:]]" end)
  123. ;; (subr--with-wrapper-hook-no-warnings
  124. ;; filter-buffer-substring-functions (beg end delete)
  125. ;; (cond
  126. ;; ((or delete buffer-substring-filters)
  127. ;; (save-excursion
  128. ;; (goto-char beg)
  129. ;; (let ((string (if delete (delete-and-extract-region beg end)
  130. ;; (buffer-substring beg end))))
  131. ;; (dolist (filter buffer-substring-filters)
  132. ;; (setq string (funcall filter string)))
  133. ;; string)))
  134. ;; (t
  135. ;; (buffer-substring beg end))))
  136. ;; "")))
  137. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;JUNK YARD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  138. ;; (defun jungle-serialize-type (type)
  139. ;; (interactive "sType Name: ")
  140. ;; (jungle-add-import "arrayEquals" "jungle/utilities.js")
  141. ;; ;; (jungle-add-import "audioNodeSerializers" "./compileSynth.js")
  142. ;; ;; (jungle-add-import "audioNodeUnserializers" "./compileSynth.js")
  143. ;; ;; (jungle-add-import "serializeInputs" "./audioUtilities.js")
  144. ;; ;; (jungle-add-import "unserializeInputs" "./audioUtilities.js")
  145. ;; ;; (jungle-add-import "serializeOutputs" "./audioUtilities.js")
  146. ;; ;; (jungle-add-import "unserializeOutputs" "./audioUtilities.js")
  147. ;; (let ((c-type (upcase-initials type)))
  148. ;; ;; (save-excursion
  149. ;; ;; (beginning-of-buffer)
  150. ;; ;; (search-forward (concat "make" c-type))
  151. ;; ;; (search-forward "return {")
  152. ;; ;; (insert (format "
  153. ;; ;; type: '%s'," type)))
  154. ;; (insert (format
  155. ;; "function serialize%s(%s) {
  156. ;; return ['%s',];
  157. ;; }" c-type type type))
  158. ;; (newline 2)
  159. ;; (insert (format
  160. ;; "function unserialize%s(unserialized%s) {
  161. ;; return {type: '%s',};
  162. ;; }" c-type c-type type))
  163. ;; (newline 2)
  164. ;; (insert (format
  165. ;; "function %sEquals(%s1, %s2) {
  166. ;; return arrayEquals(serialize%s(%s1),
  167. ;; serialize%s(%s2),
  168. ;; undefined,
  169. ;; true);
  170. ;; }" type type type c-type type c-type type))
  171. ;; (save-excursion
  172. ;; (search-forward "export {")
  173. ;; (forward-char)
  174. ;; (insert (jungle-serialized-function-names type)))))
  175. ;; (global-set-key "\C-cjs" 'jungle-serialize-type)
  176. ;; (defun jungle-serialized-function-names (type)
  177. ;; (interactive "sType Name: ")
  178. ;; (insert (format "serialize%s,
  179. ;; unserialize%s,
  180. ;; %sEquals,
  181. ;; " (upcase-initials type) (upcase-initials type) type))
  182. ;; ;; (kill-new (format "serialize%s,
  183. ;; ;; unserialize%s,
  184. ;; ;; %sEquals" (upcase-initials type) (upcase-initials type) type))
  185. ;; )
  186. ;; (global-set-key "\C-cjn" 'jungle-serialized-function-names)