Guest User

Untitled

a guest
Apr 21st, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. (require 'cl)
  2. (require 'erlang-start)
  3.  
  4. ;; Run a emacs repl with yaws loaded and configured
  5. (defvar yaws-path "~/Applications/YAWS")
  6. (defvar yaws-listening-regex "Yaws: Listening")
  7. (defvar yaws-extra-paths ())
  8. (defvar yaws-extra-flags ())
  9.  
  10. (defadvice inferior-erlang-wait-prompt (before send-ret-before-waiting last () activate)
  11. (or (with-current-buffer inferior-erlang-buffer (save-excursion
  12. (goto-char (process-mark inferior-erlang-process))
  13. (forward-line 0)
  14. (looking-at comint-prompt-regexp)))
  15. (comint-send-string inferior-erlang-process "\n")))
  16.  
  17. (defun* erlang-yaws-wait-for-listen (&key (timeout 2) (buffer (current-buffer)))
  18. (ignore-errors
  19. (while (not (string-match-p yaws-listening-regex (buffer-string)))
  20. (or (accept-process-output (get-buffer-process buffer) timeout)
  21. (error "Yaws didn't seems to listen before timeout (%s) in %s" timeout buffer)))
  22. (comint-send-string (get-buffer-process buffer) "\n") t))
  23.  
  24.  
  25. (defun erlang-yaws-do-wait-for-listen ()
  26. (message "Waiting for yaws to listen...")
  27. (if (erlang-yaws-wait-for-listen)
  28. (progn (message "Erlang+YAWS Ready")
  29. t)
  30. (message "Erlang+YAWS load FAILED")
  31. nil))
  32.  
  33. (defun erlang-yaws-get-extra-paths ()
  34. ())
  35.  
  36. (defun erlang-yaws-get-extra-flags ()
  37. ())
  38.  
  39. (defun run-erlang-yaws ()
  40. (interactive)
  41. (let ((inferior-erlang-machine-options `("-pa" ,(expand-file-name (concat yaws-path "/lib/yaws/ebin"))
  42. ,@(or (erlang-yaws-get-extra-paths) '(""))
  43. ,@(or (erlang-yaws-get-extra-flags) '(""))
  44. "-yaws" "debug"
  45. "-run" "yaws"
  46. "-yaws" "id" "default"))
  47. (erlang-shell-mode-hook ()))
  48. (add-hook 'erlang-shell-mode-hook 'erlang-yaws-do-wait-for-listen)
  49. (run-erlang)))
  50.  
  51. (message "Eval'd")
  52. (provide 'erlang-yaws)
Add Comment
Please, Sign In to add comment