summaryrefslogtreecommitdiffstats
path: root/emacs.d/nxhtml/related/moz.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs.d/nxhtml/related/moz.el')
-rw-r--r--emacs.d/nxhtml/related/moz.el289
1 files changed, 0 insertions, 289 deletions
diff --git a/emacs.d/nxhtml/related/moz.el b/emacs.d/nxhtml/related/moz.el
deleted file mode 100644
index e910286..0000000
--- a/emacs.d/nxhtml/related/moz.el
+++ /dev/null
@@ -1,289 +0,0 @@
-;;; moz.el --- Lets current buffer interact with inferior mozilla.
-
-;; URL: http://github.com/bard/mozrepl/raw/master/chrome/content/moz.el
-
-;; Copyright (C) 2006 by Massimiliano Mirra
-;;
-;; 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 2 of the License, 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-;;
-;; Author: Massimiliano Mirra, <bard [at] hyperstruct [dot] net>
-;; Contributors:
-;; - Lennart Borgman
-
-;;; Commentary:
-;;
-;; This file implements communication with Firefox via MozRepl
-;; (http://hyperstruct.net/projects/mozrepl). It is a slightly
-;; modified version of the file moz.el that comes with MozLab. To use
-;; it you have to install the MozRepl addon in Firefox.
-;;
-;; This file contains
-;;
-;; * a major mode for direct interaction in a buffer (as with
-;; telnet) with MozRepl, `inferior-moz-mode'.
-;; * a minor mode for sending code portions or whole files from
-;; other buffers to MozRepl, `moz-minor-mode'.
-;;
-;; Assuming you want to use javascript-mode to edit Javascript files,
-;; enter the following in your .emacs initialization file (from Emacs
-;; integration in the help text):
-;;
-;; (add-to-list 'auto-mode-alist '("\\.js$" . javascript-mode))
-;; (autoload 'inferior-moz-mode "moz" "MozRepl Inferior Mode" t)
-;; (autoload 'moz-minor-mode "moz" "MozRepl Minor Mode" t)
-;; (add-hook 'javascript-mode-hook 'javascript-moz-setup)
-;; (defun javascript-moz-setup () (moz-minor-mode 1))
-;;
-;; Replace javascript-mode above with the name of your favorite
-;; javascript mode.
-;;
-;; If you got this with nXhtml the setup above is already done for
-;; you.
-;;
-;; *Note 1* You have to start the MozRepl server in Firefox (or
-;; whatever Mozilla browser you use). From the menus do
-;;
-;; Tools - MozRepl - Start
-;;
-;; *Note 2* For clearness and brevity the documentation says Firefox
-;; where the correct term should rather be "your Mozilla web
-;; browser".
-
-;;; Change log:
-;;
-;; 2008-07-20: Lennart Borgman
-;; - Add `moz-minor-mode-map'.
-;; - Add `inferior-moz-insert-moz-repl'.
-;; - Add `inferior-moz-mode-map'.
-;; - Add doc strings to interactive functions.
-;; - Make minor enhancements to documentation etc.
-;; - Change Mozilla to Firefox/MozRepl for clarity and brevity.
-;; - Add error handling when starting MozRepl.
-
-;;; Code:
-
-(require 'comint)
-(require 'cc-cmds)
-
-;; Maybe fix-me: C-c control-char are reserved for major modes. But
-;; this minor mode is used in only one major mode (or one family of
-;; major modes) so it complies I think ...
-(defvar moz-minor-mode-map
- (let ((map (make-sparse-keymap)))
- (define-key map "\C-c\C-s" 'run-mozilla)
- (define-key map "\C-\M-x" 'moz-send-defun)
- (define-key map "\C-c\C-c" 'moz-send-defun-and-go)
- (define-key map "\C-c\C-r" 'moz-send-region)
- (define-key map "\C-c\C-l" 'moz-save-buffer-and-send)
- map))
-
-;;;###autoload
-(define-minor-mode moz-minor-mode
- "MozRepl minor mode for interaction with Firefox.
-With no argument, this command toggles the mode.
-Non-null prefix argument turns on the mode.
-Null prefix argument turns off the mode.
-
-When this minor mode is enabled, some commands become available
-to send current code area \(as understood by c-mark-function) or
-region or buffer to an inferior MozRepl process (which will be
-started as needed).
-
-The following keys are bound in this minor mode:
-
-\\{moz-minor-mode-map}"
- nil
- " Moz"
- :keymap moz-minor-mode-map
- :group 'moz)
-
-(defalias 'run-mozilla 'inferior-moz-switch-to-mozilla)
-
-(defvar moz-repl-name "repl"
- "The current name of the repl.")
-
-(defvar moz-input-separator "\n--end-remote-input\n")
-
-(defvar moz-repl-host "localhost")
-
-(defvar moz-repl-port 4242)
-
-(defvar moz-temporary-file nil)
-
-(defun moz-temporary-file ()
- (if (and moz-temporary-file
- (file-readable-p moz-temporary-file))
- moz-temporary-file
- (setq moz-temporary-file (make-temp-file "emacs-mozrepl"))))
-
-(defun moz-send-region (start end)
- "Send the region to Firefox via MozRepl."
- (interactive "r")
- (comint-send-string (inferior-moz-process)
- (concat moz-repl-name ".pushenv('printPrompt', 'inputMode'); "
- moz-repl-name ".setenv('printPrompt', false); "
- moz-repl-name ".setenv('inputMode', 'multiline'); "
- "undefined; \n"))
- ;; Give the previous line a chance to be evaluated on its own. If
- ;; it gets concatenated to the following ones, we are doomed.
- (sleep-for 0 1)
- (comint-send-region (inferior-moz-process)
- start end)
- (comint-send-string (inferior-moz-process)
- "\n--end-remote-input\n")
- (comint-send-string (inferior-moz-process)
- (concat moz-repl-name ".popenv('inputMode', 'printPrompt'); "
- "undefined; \n"))
- (comint-send-string (inferior-moz-process)
- "\n--end-remote-input\n")
- (display-buffer (process-buffer (inferior-moz-process))))
-
-(defun moz-send-defun ()
- "Send the current function to Firefox via MozRepl.
-Curent function is the one recognized by c-mark-function."
- (interactive)
- (save-excursion
- (c-mark-function)
- (moz-send-region (point) (mark))))
-
-(defun moz-send-defun-and-go ()
- "Send the current function to Firefox via MozRepl.
-Also switch to the interaction buffer."
- (interactive)
- (moz-send-defun)
- (inferior-moz-switch-to-mozilla nil))
-
-(defun moz-save-buffer-and-send ()
- "Save the current buffer and load it in Firefox via MozRepl."
- (interactive)
- (save-buffer)
- (comint-send-string (inferior-moz-process)
- (concat moz-repl-name ".pushenv('printPrompt', 'inputMode'); "
- moz-repl-name ".setenv('inputMode', 'line'); "
- moz-repl-name ".setenv('printPrompt', false); undefined; "))
- (comint-send-string (inferior-moz-process)
- (concat moz-repl-name ".load('file://localhost/" (buffer-file-name) "');\n"
- moz-repl-name ".popenv('inputMode', 'printPrompt'); undefined;\n"))
- (display-buffer (process-buffer (inferior-moz-process))))
-
-;;; Inferior Mode
-
-(defvar inferior-moz-buffer nil
- "The buffer in which the inferior process is running.")
-
-(defun inferior-moz-insert-moz-repl ()
- "Insert value of `moz-repl-name' and a dot (.)."
- (interactive) (insert moz-repl-name "."))
-
-(defvar inferior-moz-mode-map
- (let ((map (make-sparse-keymap)))
- ;; Note: changed from C-c c which is reserved for users.
- (define-key map "\C-c\C-c" 'inferior-moz-insert-moz-repl)
- map))
-
-;;;###autoload
-(define-derived-mode inferior-moz-mode comint-mode "Inf-MozRepl"
- "Major mode for interacting with Firefox via MozRepl."
- (setq comint-input-sender 'inferior-moz-input-sender)
- (add-hook 'comint-output-filter-functions 'inferior-moz-track-repl-name nil t))
-
-(defun inferior-moz-track-repl-name (comint-output)
- (save-match-data
- (when (string-match "\\(\\w+\\)> $" comint-output)
- (setq moz-repl-name (match-string 1 comint-output)))))
-
-(defun inferior-moz-self-insert-or-repl-name ()
- (interactive)
- (if (looking-back "\\(\\w+\\)> $")
- (insert moz-repl-name ".")
- (insert last-command-event)))
-
-(defun inferior-moz-input-sender (proc string)
- "Custom function to send input with comint-send-input.
-Instead of sending input and newline separately like in
-comint-simple-send, here we *first* concatenate input and
-newline, then send it all together. This prevents newline to be
-interpreted on its own."
- (comint-send-string proc (concat string "\n")))
-
-(defun inferior-moz-switch-to-mozilla (arg)
- "Switch to the inferior MozRepl buffer.
-Create the buffer and start the MozRepl process and connect to
-Firefox if needed.
-
-See also `inferior-moz-start-process'."
- (interactive "P")
- (when arg
- (setq moz-repl-host (read-string "Host: " "localhost"))
- (setq moz-repl-port (read-number "Port: " 4242)))
- (pop-to-buffer (process-buffer (inferior-moz-process)))
- (goto-char (process-mark (inferior-moz-process))))
-
-(defun inferior-moz-process ()
- "Return inferior MozRepl process. Start it if necessary.
-See also `inferior-moz-start-process'."
- (or (if (buffer-live-p inferior-moz-buffer)
- (get-buffer-process inferior-moz-buffer))
- (progn
- (inferior-moz-start-process)
- (inferior-moz-process))))
-
-(defvar mozrepl-home-page "http://hyperstruct.net/projects/mozrepl")
-
-(defun inferior-moz-start-process ()
- "Start an inferior Mozrepl process and connect to Firefox.
-It runs the hook `inferior-moz-hook' after starting the process
-and setting up the inferior Firefox buffer.
-
-Note that you have to start the MozRepl server from Firefox."
- (interactive)
- (condition-case err
- (progn
- (setq inferior-moz-buffer
- (apply 'make-comint "MozRepl" (cons moz-repl-host moz-repl-port) nil nil))
- (sleep-for 0 100)
- (with-current-buffer inferior-moz-buffer
- (inferior-moz-mode)
- (run-hooks 'inferior-moz-hook)))
- (file-error
- (with-output-to-temp-buffer (help-buffer)
- (help-setup-xref (list #'describe-function 'inferior-moz-start-process) (interactive-p))
- (with-current-buffer (help-buffer)
- (insert "Can't start MozRepl, the error message was:\n\n "
- (error-message-string err)
- "\n"
- "\nA possible reason is that you have not installed"
- "\nthe MozRepl add-on to Firefox or that you have not"
- "\nstarted it. You start it from the menus in Firefox:"
- "\n\n Tools / MozRepl / Start"
- "\n"
- "\nSee ")
- (insert-text-button
- "MozRepl home page"
- 'action (lambda (button)
- (browse-url mozrepl-home-page))
- 'help-echo mozrepl-home-page
- 'face 'button)
- (insert
- " for more information."
- "\n"
- "\nMozRepl is also available directly from Firefox add-on"
- "\npages, but is updated less frequently there.")
- ))
- (error "Can't start MozRepl"))))
-
-(provide 'moz)
-
-;;; moz.el ends here