Supercollider emacs package
Find a file
2021-08-19 20:53:11 -04:00
.github/workflows Enable github CI workflow 2021-08-09 16:07:01 -04:00
el Better autoloads 2021-08-19 13:26:51 -04:00
HelpSource/Classes Fix typo 2019-12-22 23:31:55 +01:00
scide_scel Rename sc directory so it only loads when calling from emacs 2021-08-15 16:29:46 -04:00
.gitignore Add test to expose a load-time issue 2021-08-09 11:57:27 -04:00
CHANGELOG.md Update installation docs 2021-08-10 21:04:10 -04:00
CMakeLists.txt Rename sc directory so it only loads when calling from emacs 2021-08-15 16:29:46 -04:00
README.md Update readme 2021-08-19 20:53:11 -04:00
scel.quark Add quark file 2021-07-25 19:54:35 -04:00

scel - sclang-mode for emacs

SuperCollider/Emacs interface

Installation

There are 3 options for installation:

  1. Using SuperCollider Quarks (recommended)
  2. From debian package supercollider-emacs
  3. From source

Option #1 is the best cross-platform option, and is recommended. Whatever option you choose, make sure not to mix installation methods. In particular, do not install the Quark if you already have the supercollider-emacs package or if you compiled SuperCollider with the -DSC_EL=ON option. Otherwise you will get an error from SuperCollider about duplicated classes.

Install Option 1: SuperCollider's own package manager

The repository contains two subprojects. /el contains the emacs-lisp implementation. /sc contains the SuperCollider code required to implement the Emacs interface. SuperCollider has its own package system called Quarks, which we can use to install both halves.

Evaluate this code in the SuperCollider GUI by pasting it and pressing shift+enter:

Quarks.install("https://github.com/supercollider/scel");

The scel repository will be downloaded to your local file system and the path will be added to your default sclang_conf.yaml file. (You can find its location by evaluating Platform.userConfigDir)

Next, find out where scel was installed. You will use this install-path in your emacs config.

Quarks.folder.postln;

// -> /Users/jxa/Library/Application Support/SuperCollider/downloaded-quarks

Now in your emacs config, add the /el subdirectory to your load path

;; in ~/.emacs

;; Paste path from above, appending "/scel/el"
(add-to-list 'load-path "/Users/jxa/Library/Application Support/SuperCollider/downloaded-quarks/scel/el")
(require 'sclang)

On macOS

If sclang executable is not on your path, you may need to add it to your exec-path.

;; in ~/.emacs
(setq exec-path (append exec-path '("/Applications/SuperCollider.app/Contents/MacOS/")))

Installing with an emacs package manager

It's completely possible to install with straight.el, use-package, doom, etc. Instructions for doing so are beyond the scope of this README, but note that autoloads are implemented for entry-point functions so if you like to have a speedy start-up time you can use the :defer t option.

Install Option 2: Debian package

There is a debian package which provides emacs integration called supercollider-emacs. Option #1 will likely be more recent, but if you prefer you can install the package with:

sudo apt install supercollider-emacs

Install Option 3: Installing from source

If you are building SuperCollider from source, you can optionally compile and install this library along with it. The cmake -DSC_EL flag controls whether scel will be compiled. On Linux machines -DSC_EL=ON by default. See the supercollider README files for more info.

Installation requirements

For the HTML help system, you will need emacs-w3m support, but you can still use the rest of the functionality without the w3m dependency.

;; in ~/.emacs
(require 'w3m)

Usage

The main function which starts interacting with the sclang interpreter is sclang-start. You can execute that anywhere with M-x sclang-start, or from within a .scd buffer by pressing C-c C-o.

If you know you want to launch sclang when you start emacs you can use the -f option to execute that function right away:

# in your terminal
emacs -f sclang-start

Configuration

To fine-tune the installation from within emacs' graphical customization interface, type:

M-x sclang-customize

If you want to change from the default sclang_conf.yaml file used by your emacs sessions you can customize the sclang-library-configuration-file variable, but make sure that file loads the scel quark, or you won't be able to run sclang code.

Getting help

Inside an sclang-mode buffer (e.g. by editing a .sc file), execute

C-h m

and a window with key bindings in sclang-mode will pop up.

C-x C-h lets you search for a help file

C-M-h opens or switches to the Help browser (if no Help file has been opened, the default Help file will be opened).

E copies the buffer, puts it in text mode and sclang-minor-mode, to enable you to edit the code parts to try out variations of the provided code in the help file. With C-M-h you can then return to the Help browser and browse further from the Help file.

C-c C-e allows you to edit the source of the HTML file, for example if you want to improve it and commit it to the repository.

To enable moving around in the help file with arrow keys add the following in your ~/.emacs:

(eval-after-load "w3m"
 '(progn
 (define-key w3m-mode-map [left] 'backward-char)
 (define-key w3m-mode-map [right] 'forward-char)
 (define-key w3m-mode-map [up] 'previous-line)
 (define-key w3m-mode-map [down] 'next-line)))

This ensures that the arrow keys are just for moving through the document, and not from hyperlink to hyperlink, which is the default in w3m-mode.

Server control

In the post buffer window, right-click on the server name; by default the two servers internal and localhost are available. You will get a menu with common server control operations.

To select another server, step through the server list by left-clicking on the server name.

Servers instantiated from the language will automatically be available in the mode line.