;; embperl-minor-mode -- Embedded Perl mode for XEmacs. ;; ;; Copyright (C) 1998-1999 Erik L. Arneson ;; ;; This program 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 1, or (at your option) ;; any later version. ;; ;; This program 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 this program; if not, write to the Free Software ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ;; ;; Author : Erik Arneson (erik@mind.net) ;; Created On : Wed Jul 22 17:16:39 PDT 1998 ;; Last Modified By: Erik Arneson ;; Last Modified On: $Date$ ;; Version : 1.00 ;; $Id$ ;; ;; Please note that this software is very beta and rather broken. I ;; don't know how useful it will be, although I definitely plan on ;; making it more useable in the future. If you don't know Emacs Lisp ;; well enough to read this, then you probably shouldn't be using it at ;; all. But also, if you can figure out Perl and HTML, Emacs Lisp ;; shouldn't be that big a jump, and learning it is well worth your ;; time. (defvar embperl-minor-mode nil "T, if the region is active in the `embperl-minor-mode'.") (make-variable-buffer-local 'embperl-minor-mode) (defvar embperl-minor-mode-map (make-sparse-keymap)) (add-minor-mode 'embperl-minor-mode " Embperl" embperl-minor-mode-map) (define-key embperl-minor-mode-map "\C-cp" 'embperl-narrow-to-perl) (define-key embperl-minor-mode-map "\C-cc" 'embperl-widen) (defun embperl-minor-mode (&optional arg) "Toggle Embperl minor mode." (interactive "P") (setq embperl-minor-mode (if (null arg) (not embperl-minor-mode) (> (prefix-numeric-value arg) 0)))) (defun embperl-widen () "Widens the buffer back to its original state." (interactive) (widen) (html-mode) (embperl-minor-mode t)) (defun embperl-narrow-to-perl () "Narrows the edit-able part of a buffer to an embedded Perl chunk and activates cperl-mode." (interactive) (let (begin end) (save-excursion (search-backward-regexp "\\[[-!+\\$\\*]" nil t) (setq begin (point))) (save-excursion (search-forward-regexp "[-!+\\$\\*]\\]" nil t) (setq end (point))) (narrow-to-region begin end)) (cperl-mode) (embperl-minor-mode t)) ;; End