diff options
Diffstat (limited to 'emacs.d/elisp/stumpwm-mode.el')
-rw-r--r-- | emacs.d/elisp/stumpwm-mode.el | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/emacs.d/elisp/stumpwm-mode.el b/emacs.d/elisp/stumpwm-mode.el new file mode 100644 index 0000000..0d5fa13 --- /dev/null +++ b/emacs.d/elisp/stumpwm-mode.el @@ -0,0 +1,68 @@ +;;; stumpwm-mode.el --- special lisp mode for evaluating code into running stumpwm + +;; Copyright (C) 2007 Shawn Betts + +;; Maintainer: Shawn Betts +;; Keywords: comm, lisp, tools + +;; This file is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; This file is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file COPYING. If not, write to +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: + +;; load this file, set stumpwm-shell-program to point to stumpish and +;; run M-x stumpwm-mode in your stumpwm lisp files. Now, you can +;; easily eval code into a running stumpwm using the regular bindings. + +;;; Code: + +(defvar stumpwm-shell-program "stumpish" + "program name, including path if needed, for the stumpish program.") + +(define-minor-mode stumpwm-mode + "add some bindings to eval code into a running stumpwm using stumpish." + :global nil + :lighter " StumpWM" + :keymap (let ((m (make-sparse-keymap))) + (define-key m (kbd "C-M-x") 'stumpwm-eval-defun) + (define-key m (kbd "C-x C-e") 'stumpwm-eval-last-sexp) + m)) + +(defun stumpwm-eval-region (start end) + (interactive "r") + (let ((s (buffer-substring-no-properties start end))) + (message "%s" + (with-temp-buffer + (call-process stumpwm-shell-program nil (current-buffer) nil + "eval" + s) + (delete-char -1) + (buffer-string))))) + +(defun stumpwm-eval-defun () + (interactive) + (save-excursion + (end-of-defun) + (skip-chars-backward " \t\n\r\f") + (let ((end (point))) + (beginning-of-defun) + (stumpwm-eval-region (point) end)))) + +(defun stumpwm-eval-last-sexp () + (interactive) + (stumpwm-eval-region (save-excursion (backward-sexp) (point)) (point))) + +(provide 'stumpwm-mode) +;;; stumpwm-mode.el ends here |