From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Markus Triska Newsgroups: gmane.emacs.devel,gmane.emacs.pretest.bugs Subject: 23.0.60; Input history and simplifications for ps-mode.el Date: Wed, 4 Jun 2008 21:08:08 +0200 (CEST) Message-ID: <20080604190808.3116E8BB048@mt-computer.local> NNTP-Posting-Host: lo.gmane.org X-Trace: ger.gmane.org 1212606526 26575 80.91.229.12 (4 Jun 2008 19:08:46 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Wed, 4 Jun 2008 19:08:46 +0000 (UTC) To: emacs-pretest-bug@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Jun 04 21:09:26 2008 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1K3yME-0004yz-S1 for ged-emacs-devel@m.gmane.org; Wed, 04 Jun 2008 21:09:15 +0200 Original-Received: from localhost ([127.0.0.1]:42503 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K3yLS-0007pi-54 for ged-emacs-devel@m.gmane.org; Wed, 04 Jun 2008 15:08:26 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1K3yLN-0007p1-54 for emacs-devel@gnu.org; Wed, 04 Jun 2008 15:08:21 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1K3yLM-0007oZ-6U for emacs-devel@gnu.org; Wed, 04 Jun 2008 15:08:20 -0400 Original-Received: from [199.232.76.173] (port=38881 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1K3yLL-0007oT-V2 for emacs-devel@gnu.org; Wed, 04 Jun 2008 15:08:20 -0400 Original-Received: from fencepost.gnu.org ([140.186.70.10]:60178) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1K3yLK-00014k-UZ for emacs-devel@gnu.org; Wed, 04 Jun 2008 15:08:19 -0400 Original-Received: from mx10.gnu.org ([199.232.76.166]:35545) by fencepost.gnu.org with esmtp (Exim 4.67) (envelope-from ) id 1K3yJV-0006BE-JQ for emacs-pretest-bug@gnu.org; Wed, 04 Jun 2008 15:06:25 -0400 Original-Received: from Debian-exim by monty-python.gnu.org with spam-scanned (Exim 4.60) (envelope-from ) id 1K3yLF-000144-8X for emacs-pretest-bug@gnu.org; Wed, 04 Jun 2008 15:08:18 -0400 Original-Received: from mail.gmx.net ([213.165.64.20]:46750) by monty-python.gnu.org with smtp (Exim 4.60) (envelope-from ) id 1K3yLE-00013l-1J for emacs-pretest-bug@gnu.org; Wed, 04 Jun 2008 15:08:13 -0400 Original-Received: (qmail invoked by alias); 04 Jun 2008 19:08:09 -0000 Original-Received: from chello062178240212.3.14.tuwien.teleweb.at (EHLO mt-computer.local) [62.178.240.212] by mail.gmx.net (mp003) with SMTP; 04 Jun 2008 21:08:09 +0200 X-Authenticated: #4064391 X-Provags-ID: V01U2FsdGVkX1/Ni+lTjJ3NpypbqjrGktgZ4CUy1ss4+lfzG6SAj/ u3mYYnoqfWkPfc Original-Received: by mt-computer.local (Postfix, from userid 502) id 3116E8BB048; Wed, 4 Jun 2008 21:08:08 +0200 (CEST) X-Y-GMX-Trusted: 0 X-detected-kernel: by monty-python.gnu.org: Linux 2.6 (newer, 3) X-detected-kernel: by monty-python.gnu.org: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:98416 gmane.emacs.pretest.bugs:22553 Archived-At: This patch makes ps-mode derived from comint-mode, which yields an input history for interactive use and allows a few simplifications. 2008-06-04 Markus Triska * progmodes/ps-mode.el (ps-run-mode-map): omit "\r", [return] (ps-mode-other-newline): simplify (ps-mode-center): "2 div neg" ==> "-2 div" (ps-run-mode): derive from comint-mode instead of fundamental-mode, yielding input history etc. (ps-run-start): adapt for comint-mode (ps-run-quit, ps-run-clear, ps-run-region, ps-run-boundingbox): omit "echo" parameter in call of ps-run-send-string (ps-run-send-string): adapt for comint-mode, remove "echo" parameter (ps-run-newline): remove now unneeded function diff --git a/lisp/progmodes/ps-mode.el b/lisp/progmodes/ps-mode.el index cb75142..9cd9019 100644 --- a/lisp/progmodes/ps-mode.el +++ b/lisp/progmodes/ps-mode.el @@ -39,6 +39,7 @@ (defconst ps-mode-version "1.1h, 16 Jun 2005") (defconst ps-mode-maintainer-address "Peter Kleiweg ") +(require 'comint) (require 'easymenu) ;; Define core `PostScript' group. @@ -436,12 +437,11 @@ If nil, the following are tried in turn, until success: (unless ps-run-mode-map (setq ps-run-mode-map (make-sparse-keymap)) + (set-keymap-parent ps-run-mode-map comint-mode-map) (define-key ps-run-mode-map "\C-c\C-q" 'ps-run-quit) (define-key ps-run-mode-map "\C-c\C-k" 'ps-run-kill) (define-key ps-run-mode-map "\C-c\C-e" 'ps-run-goto-error) - (define-key ps-run-mode-map [mouse-2] 'ps-run-mouse-goto-error) - (define-key ps-run-mode-map "\r" 'ps-run-newline) - (define-key ps-run-mode-map [return] 'ps-run-newline)) + (define-key ps-run-mode-map [mouse-2] 'ps-run-mouse-goto-error)) ;; Syntax table. @@ -723,12 +723,9 @@ defines the beginning of a group. These tokens are: { [ <<" (blink-matching-open)) (defun ps-mode-other-newline () - "Perform newline in `*ps run*' buffer." + "Perform newline in `*ps-run*' buffer." (interactive) - (let ((buf (current-buffer))) - (set-buffer "*ps run*") - (ps-run-newline) - (set-buffer buf))) + (ps-run-send-string "")) ;; Print PostScript. @@ -824,8 +821,8 @@ Only one `%' is removed, and it has to be in the first column." (insert " /center { dup stringwidth - exch 2 div neg - exch 2 div neg + exch -2 div + exch -2 div rmoveto } bind def ")) @@ -985,7 +982,7 @@ plus the usually uncoded characters inserted on positions 1 through 28." ;; Interactive PostScript interpreter. -(define-derived-mode ps-run-mode fundamental-mode "Interactive PS" +(define-derived-mode ps-run-mode comint-mode "Interactive PS" "Major mode in interactive PostScript window. This mode is invoked from `ps-mode' and should not be called directly. @@ -1019,20 +1016,23 @@ This mode is invoked from `ps-mode' and should not be called directly. (setq init-file (ps-run-make-tmp-filename)) (write-region (concat ps-run-init "\n") 0 init-file) (setq init-file (list init-file))) - (pop-to-buffer "*ps run*") + (pop-to-buffer "*ps-run*") (ps-run-mode) (when (process-status "ps-run") (delete-process "ps-run")) (erase-buffer) (setq command (append command init-file)) (insert (mapconcat 'identity command " ") "\n") - (apply 'start-process "ps-run" "*ps run*" command) + (apply 'make-comint "ps-run" command) + (with-current-buffer "*ps-run*" + (use-local-map ps-run-mode-map) + (setq comint-prompt-regexp ps-run-prompt)) (select-window oldwin))) (defun ps-run-quit () "Quit interactive PostScript." (interactive) - (ps-run-send-string "quit" t) + (ps-run-send-string "quit") (ps-run-cleanup)) (defun ps-run-kill () @@ -1044,9 +1044,9 @@ This mode is invoked from `ps-mode' and should not be called directly. (defun ps-run-clear () "Clear/reset PostScript graphics." (interactive) - (ps-run-send-string "showpage" t) + (ps-run-send-string "showpage") (sit-for 1) - (ps-run-send-string "" t)) + (ps-run-send-string "")) (defun ps-run-buffer () "Send buffer to PostScript interpreter." @@ -1061,7 +1061,7 @@ This mode is invoked from `ps-mode' and should not be called directly. (let ((f (ps-run-make-tmp-filename))) (set-marker ps-run-mark begin) (write-region begin end f) - (ps-run-send-string (format "(%s) run" f) t))) + (ps-run-send-string (format "(%s) run" f)))) (defun ps-run-boundingbox () "View BoundingBox." @@ -1109,17 +1109,15 @@ grestore " x1 y1 x2 y1 x2 y2 x1 y2) 0 f) - (ps-run-send-string (format "(%s) run" f) t) + (ps-run-send-string (format "(%s) run" f)) (set-buffer buf))) -(defun ps-run-send-string (string &optional echo) +(defun ps-run-send-string (string) (let ((oldwin (selected-window))) - (pop-to-buffer "*ps run*") - (goto-char (point-max)) - (when echo - (insert string "\n")) - (set-marker (process-mark (get-process "ps-run")) (point)) - (process-send-string "ps-run" (concat string "\n")) + (pop-to-buffer "*ps-run*") + (comint-goto-process-mark) + (insert string) + (comint-send-input) (select-window oldwin))) (defun ps-run-make-tmp-filename () @@ -1159,18 +1157,6 @@ grestore (mouse-set-point event) (ps-run-goto-error)) -(defun ps-run-newline () - "Process newline in PostScript interpreter window." - (interactive) - (end-of-line) - (insert "\n") - (forward-line -1) - (when (looking-at ps-run-prompt) - (goto-char (match-end 0))) - (looking-at ".*") - (goto-char (1+ (match-end 0))) - (ps-run-send-string (buffer-substring (match-beginning 0) (match-end 0)))) - (defun ps-run-goto-error () "Jump to buffer position read as integer at point. Use line numbers if `ps-run-error-line-numbers' is not nil" In GNU Emacs 23.0.60.2 (i386-apple-darwin8.11.1, GTK+ Version 2.12.9) of 2008-06-03 on pnsgw3-client026.demo.tuwien.ac.at Windowing system distributor `The XFree86 Project, Inc', version 11.0.40400000