| @@ -2330,12 +2330,52 @@ this is test, does not rename files." | |||
| ;; (my-real-function-subr-p 'my-real-function-subr-p) | |||
| ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |||
| ;; isdcv | |||
| (defvar isdcv-prompt "> " | |||
| "Prompt string for isdcv input.") | |||
| (defvar isdcv-current-prompt-point nil | |||
| "Point of beginning of current prompt.") | |||
| (make-variable-buffer-local 'isdcv--current-prompt-point) | |||
| (defvar isdcv-mode-map | |||
| (let ((map (make-sparse-keymap))) | |||
| (define-key map (kbd "C-m") 'isdcv-enter) | |||
| (define-key map (kbd "C-u") 'isdcv-kill-input) | |||
| (define-key map (kbd "C-a") 'isdcv-goto-bol) | |||
| map)) | |||
| (define-derived-mode isdcv-mode fundamental-mode | |||
| "iSDCV" | |||
| "Major mode for incremental sdcv buffer." | |||
| (set (make-local-variable 'font-lock-function) | |||
| 'ignore)) | |||
| (defun isdcv-enter () | |||
| "Enter function for `isdcv-mode'. | |||
| Freeze current input and show next prompt." | |||
| (interactive) | |||
| (goto-char (point-max)) | |||
| (unless (eq (point) | |||
| (point-at-bol)) | |||
| (newline)) | |||
| (setq isdcv-current-prompt-point | |||
| (point)) | |||
| (insert isdcv-prompt)) | |||
| (defun isdcv-kill-input () | |||
| "Delete `isdcv-bol' to current point." | |||
| (interactive) | |||
| (delete-region (isdcv-bol) | |||
| (point))) | |||
| (defun isdcv-goto-bol () | |||
| "Go to isdcv bol." | |||
| (interactive) | |||
| (goto-char (isdcv-bol))) | |||
| (defvar isdcv-sdcv-command "sdcv -n '%s'" | |||
| "Command of sdcv.") | |||
| @@ -2363,13 +2403,12 @@ this is test, does not rename files." | |||
| isdcv--timer | |||
| (cancel-timer isdcv--timer))) | |||
| (defvar isdcv-current-prompt-point nil | |||
| "Point of beginning of current prompt.") | |||
| (make-variable-buffer-local 'isdcv--current-prompt-point) | |||
| (defun isdcv-bol () | |||
| "Return point to bol ignoring prompt." | |||
| (point-at-bol)) | |||
| (save-excursion | |||
| (beginning-of-line) | |||
| (search-forward isdcv-prompt | |||
| (point-at-eol)))) | |||
| (defun isdcv--get-output-start () | |||
| "Return point where outputs should be inserted. | |||
| @@ -2420,9 +2459,7 @@ Return nil if current position is not on prompt line." | |||
| (get-buffer-create "*isdcv*")) | |||
| (isdcv-mode) | |||
| (font-lock-mode t) | |||
| (setq isdcv-current-prompt-point | |||
| (point)) | |||
| (forward-line -1) | |||
| (isdcv-enter) | |||
| (isdcv--timer-add) | |||
| (add-hook 'kill-buffer-hook | |||
| 'isdcv--timer-remove) | |||