Skip to content

Instantly share code, notes, and snippets.

@ekg
Forked from lvm/README.md
Created June 13, 2018 09:37
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ekg/25e53404933ffd6e8ba68780e7723460 to your computer and use it in GitHub Desktop.
Save ekg/25e53404933ffd6e8ba68780e7723460 to your computer and use it in GitHub Desktop.
[WIP] hackish emacs mode for FoxDot

Installation

  1. put foxdot-cli.py in the same directory as the FoxDot installaton (in case you're using virtualenv, otherwise comment from lines 5 to 7)
  2. copy foxdot-mode.el to ~/.emacs.d/lisp
  3. add (defvar foxdot-cli-path "/path/to/foxdot-cli/") in your ~/.emacs file
  4. in Emacs M-x load-library and complete with foxdot-mode
  5. Type C-c C-f or M-x foxdot-start to start
  6. Type C-c C-e or M-x foxdot-execute to evaluate a line or a block of code
#!/usr/bin/env python
import os
import cmd
BASE_PATH = os.path.dirname(os.path.abspath(__file__))
ACTIVATE_PY = os.path.join(BASE_PATH, ".env", "bin", "activate_this.py")
execfile(ACTIVATE_PY, dict(__file__=ACTIVATE_PY))
from FoxDot import *
class FoxDotConsole(cmd.Cmd):
prompt = "FoxDot> "
intro = "LiveCoding with Python and SuperCollider"
def default(self, line):
execute(line)
if __name__ == "__main__":
FoxDotConsole().cmdloop()
(defvar foxdot-buffer-name "*FoxDot*")
(defun foxdot-start ()
(interactive)
(progn
(setq
python-shell-interpreter-args (concat foxdot-cli-path "foxdot-cli.py")
fd-code-buffer (format (buffer-name))
)
(run-python (python-shell-parse-command))
(python-shell-switch-to-shell)
(rename-buffer foxdot-buffer-name)
(switch-to-buffer-other-window fd-code-buffer)
))
(defun foxdot-execute(start end)
(interactive "r")
(progn
(setq
fd-code (buffer-substring-no-properties start end)
fd-code-buffer (format (buffer-name))
)
(append-to-buffer (get-buffer foxdot-buffer-name) start end)
(switch-to-buffer-other-window (get-buffer foxdot-buffer-name))
(execute-kbd-macro "\C-m")
(switch-to-buffer-other-window fd-code-buffer)
(execute-kbd-macro "\C-g")
))
(global-set-key [?\C-c ?\C-e] `foxdot-execute)
(global-set-key [?\C-c ?\C-f] `foxdot-start)
(provide 'foxdot-mode)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment