diff --git a/emacs/guileint/ChangeLog b/emacs/guileint/ChangeLog index 11c6de786..d39c6f8af 100644 --- a/emacs/guileint/ChangeLog +++ b/emacs/guileint/ChangeLog @@ -1,3 +1,19 @@ +2003-08-21 Neil Jerram + + * guile-init.el: Removed (because now empty). + + * inda-scheme.el (scheme-send-buffer, indent-buffer, + indent-defun): Moved here from guile-init.el. + + * guile-init.el (inda-boldify): Removed (because unused). + + * inda-scheme.el (inda-barf-at-modifications, + inda-boldify-previous-character, inda-make-input-memory, + inda-reset-guile-last-output, inferior-scheme-mode-map mouse + bindings, inda-mouse-yank-at-click, inda-insert-input-memory, + inda-insert-input-memory-and-send, inda-extend-read-only-overlay): + Moved here from guile-init.el. + 2003-08-20 Neil Jerram Import of Mikael's guileint-1.5.2.tgz into Guile CVS ... diff --git a/emacs/guileint/guile-init.el b/emacs/guileint/guile-init.el deleted file mode 100644 index e75f4b69b..000000000 --- a/emacs/guileint/guile-init.el +++ /dev/null @@ -1,152 +0,0 @@ -;;; @(#) guile-init.el -- -;;; @(#) $Keywords: $ - -;; Copyright (C) 1995 Mikael Djurfeldt - -;; LCD Archive Entry: -;; guile-init|djurfeldt@nada.kth.se| -;; A GNU Emacs extension which | -;; $Date: 2003-08-20 19:00:44 $|$Revision: 1.1 $|~/misc/.el.Z| - -;; Author: Mikael Djurfeldt -;; Version: 1.0 - -;; 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 GNU Emacs. If you did not, write to the Free Software Foundation, -;; Inc., 675 Mass Ave., Cambridge, MA 02139, USA. - -;;; Commentary: -;; -;; Requirements: -;; -;; Usage: -;; -;; Bugs: -;; -;; - -(defvar guile-init-load-hook nil - "*Hook run when file is loaded") - -(require 'guile) - -;;; Misc. interactivity -;;; -;;; -(defun inda-barf-at-modifications (&rest args) - (or inhibit-read-only - (error "Attempt to modify read-only text"))) - -(defun inda-boldify-previous-character () - ;; Must check this so that we don't point outside buffer... - (if (> (point) (point-min)) - (let ((inhibit-read-only t)) - (put-text-property (1- (point)) (point) 'face 'bold)))) - -(defun inda-make-input-memory (string) - ;; If input consists of many lines, the read-only overlay will - ;; cover the previous line, so we have to disable the protection. - (let ((inhibit-read-only t)) - ;(setq n (1+ n) - ; l (append l (list (list n 'input-filter string)))) - (if (marker-position guile-last-output-end) - (add-text-properties guile-last-output-end (1- (point)) - '(input-memory t rear-nonsticky t mouse-face highlight))))) - -(defun inda-reset-guile-last-output (string) - ;(setq n (1+ n) - ; l (append l (list (list n 'output-filter string)))) - (if (not scheme-ready-p) - (set-marker guile-last-output-end nil))) - -(define-key inferior-scheme-mode-map [mouse-2] 'inda-mouse-yank-at-click) -(define-key inferior-scheme-mode-map [S-mouse-2] 'inda-mouse-yank-at-click) - -;; Should rather be implemented with advice. -(defun inda-mouse-yank-at-click (click arg) - "Insert the last stretch of killed text at the position clicked on. -Also move point to one end of the text thus inserted (normally the end). -Prefix arguments are interpreted as with \\[yank]. -If `mouse-yank-at-point' is non-nil, insert at point -regardless of where you click." - (interactive "e\nP") - (if (get-char-property (posn-point (event-start click)) 'input-memory) - (if (memq 'shift (event-modifiers (car click))) - (inda-insert-input-memory click) - (inda-insert-input-memory-and-send click)) - ;; Give temporary modes such as isearch a chance to turn off. - (run-hooks 'mouse-leave-buffer-hook) - (or mouse-yank-at-point (mouse-set-point click)) - (setq this-command 'yank) - (yank arg))) - -(defun inda-insert-input-memory (event) - (interactive "e") - (let* ((pos (posn-point (event-start event))) - (beg (previous-single-property-change (1+ pos) 'mouse-face)) - (end (next-single-property-change pos 'mouse-face))) - (goto-char (point-max)) - (let ((input-start (point))) - (comint-kill-input) - (insert (buffer-substring beg end)) - (add-text-properties input-start (point) - '(mouse-face nil - rear-nonsticky nil - input-memory nil))))) - -(defun inda-insert-input-memory-and-send (event) - (interactive "e") - (inda-insert-input-memory event) - (guile-send-input)) - -(defun inda-boldify (string) - (put-text-property comint-last-input-start (point) 'face 'bold)) - -(defun inda-extend-read-only-overlay (string) - (if guile-input-sent-p - (let ((inhibit-read-only t)) - (move-overlay inda-read-only-overlay (point-min) (point))))) - -;;; Misc. utilities -;;; -(defun scheme-send-buffer () - "Send the current buffer to the inferior Scheme process." - (interactive) - (let (begin end) - (save-excursion - (goto-char (point-max)) - (setq end (point)) - (goto-char (point-min)) - (setq begin (point))) - (scheme-send-region begin end))) - -(defun indent-buffer () - "Indent entire buffer." - (interactive) - (save-excursion - (end-of-buffer) - (let ((end (point))) - (beginning-of-buffer) - (indent-region (point) end nil)))) - -(defun indent-defun () - "Indent lisp definition." - (interactive) - (save-excursion - (end-of-defun) - (let ((end (point))) - (beginning-of-defun) - (indent-region (point) end nil)))) - -(provide 'guile-init) -(run-hooks 'guile-init-load-hook) diff --git a/emacs/guileint/inda-scheme.el b/emacs/guileint/inda-scheme.el index 8c2f8b502..f40d73ec0 100644 --- a/emacs/guileint/inda-scheme.el +++ b/emacs/guileint/inda-scheme.el @@ -82,6 +82,74 @@ (defvar inda-read-only-overlay nil) +(defun inda-barf-at-modifications (&rest args) + (or inhibit-read-only + (error "Attempt to modify read-only text"))) + +(defun inda-boldify-previous-character () + ;; Must check this so that we don't point outside buffer... + (if (> (point) (point-min)) + (let ((inhibit-read-only t)) + (put-text-property (1- (point)) (point) 'face 'bold)))) + +(defun inda-make-input-memory (string) + ;; If input consists of many lines, the read-only overlay will + ;; cover the previous line, so we have to disable the protection. + (let ((inhibit-read-only t)) + ;(setq n (1+ n) + ; l (append l (list (list n 'input-filter string)))) + (if (marker-position guile-last-output-end) + (add-text-properties guile-last-output-end (1- (point)) + '(input-memory t rear-nonsticky t mouse-face highlight))))) + +(defun inda-reset-guile-last-output (string) + ;(setq n (1+ n) + ; l (append l (list (list n 'output-filter string)))) + (if (not scheme-ready-p) + (set-marker guile-last-output-end nil))) + +;; Should rather be implemented with advice. +(defun inda-mouse-yank-at-click (click arg) + "Insert the last stretch of killed text at the position clicked on. +Also move point to one end of the text thus inserted (normally the end). +Prefix arguments are interpreted as with \\[yank]. +If `mouse-yank-at-point' is non-nil, insert at point +regardless of where you click." + (interactive "e\nP") + (if (get-char-property (posn-point (event-start click)) 'input-memory) + (if (memq 'shift (event-modifiers (car click))) + (inda-insert-input-memory click) + (inda-insert-input-memory-and-send click)) + ;; Give temporary modes such as isearch a chance to turn off. + (run-hooks 'mouse-leave-buffer-hook) + (or mouse-yank-at-point (mouse-set-point click)) + (setq this-command 'yank) + (yank arg))) + +(defun inda-insert-input-memory (event) + (interactive "e") + (let* ((pos (posn-point (event-start event))) + (beg (previous-single-property-change (1+ pos) 'mouse-face)) + (end (next-single-property-change pos 'mouse-face))) + (goto-char (point-max)) + (let ((input-start (point))) + (comint-kill-input) + (insert (buffer-substring beg end)) + (add-text-properties input-start (point) + '(mouse-face nil + rear-nonsticky nil + input-memory nil))))) + +(defun inda-insert-input-memory-and-send (event) + (interactive "e") + (inda-insert-input-memory event) + (guile-send-input)) + +(defun inda-extend-read-only-overlay (string) + (if guile-input-sent-p + (let ((inhibit-read-only t)) + (move-overlay inda-read-only-overlay (point-min) (point))))) + (defun inda-inferior-initializations () (setq guile-kill-buffer-on-death t) ;; The following seems already to be done in comint-mode... @@ -100,6 +168,10 @@ (define-key inferior-scheme-mode-map "\C-cd" 'guile-describe-variable) (define-key inferior-scheme-mode-map [C-c d] 'guile-describe-variable) + ;; Mouse bindings. + (define-key inferior-scheme-mode-map [mouse-2] 'inda-mouse-yank-at-click) + (define-key inferior-scheme-mode-map [S-mouse-2] 'inda-mouse-yank-at-click) + ;; Create the read-only overlay. (make-local-variable 'inda-read-only-overlay) (cond ((not (overlayp inda-read-only-overlay)) @@ -134,6 +206,35 @@ (require 'defmenu) +(defun scheme-send-buffer () + "Send the current buffer to the inferior Scheme process." + (interactive) + (let (begin end) + (save-excursion + (goto-char (point-max)) + (setq end (point)) + (goto-char (point-min)) + (setq begin (point))) + (scheme-send-region begin end))) + +(defun indent-buffer () + "Indent entire buffer." + (interactive) + (save-excursion + (end-of-buffer) + (let ((end (point))) + (beginning-of-buffer) + (indent-region (point) end nil)))) + +(defun indent-defun () + "Indent lisp definition." + (interactive) + (save-excursion + (end-of-defun) + (let ((end (point))) + (beginning-of-defun) + (indent-region (point) end nil)))) + ;; Scheme mode menu ;; (fset 'scheme-advanced-menu