When your point is at a string execute C-c C-. to get a temporary buffer in
glsl-mode to edit the shader in. The convenience of a string, the benefits of a
buffer.
(require 'glsl-mode) (require 'separedit) (defun zyd/choose-glsl-mode (fn &rest args) (if (eq major-mode 'lisp-mode) "glsl-mode" (apply fn args))) (advice-add 'separedit--select-mode :around #'zyd/choose-glsl-mode) (defun zyd/indirectly-edit () (interactive) (let ((current-prefix-arg t)) (separedit-dwim-default))) (define-key slime-mode-map (kbd "C-c C-.") #'zyd/indirectly-edit)