From: Jesper Harder <jesper.harder@gmail.com>
Subject: [patch] Prompt problems in tcl-mode
Date: Tue, 18 Apr 2006 22:45:51 +0200 [thread overview]
Message-ID: <877j5mwr28.fsf@Jesper-Harders-Computer.local> (raw)
[-- Attachment #1: Type: text/plain, Size: 1369 bytes --]
Hi,
The following patch adresses two problems in Tcl mode:
* The Tcl prompt, "%", isn't deleted correctly, which results in
multiple prompts on the same line when sending functions or the
region to the inferior Tcl buffer. There are two reasons for this:
1. Due to field boundaries `beginning-of-line' doesn't move over the
prompt.
2. A trailing newline is always added even if it's already present.
* On ms-windows /no/ prompt is displayed. The reason is explained on
<http://wiki.tcl.tk/3005>:
[..] on Windows, Emacs is unable to make the Tcl interpreter
start in the "interactive" mode. The problem is that Tcl calls
istty() to determine whether tcl_interactive should be set and
whether prompts should be displayed. But the Windows version of
Emacs can not make istty() return the right value so this
doesn't happen and tclsh thinks it's running non-interactive.
My change makes it work out-of-the-box if you're using tclsh. It
doesn't fix it if you're using wish, though (which is the default in
Emacs).
2006-04-18 Jesper Harder <harder@phys.au.dk>
* tcl.el (tcl-eval-region): Replace multiple trailing newlines
with just one.
(tcl-send-string): Use (forward-line 0) rather than
beginning-of-line.
(tcl-send-region): Delete.
(inferior-tcl): Set tcl_interactive to 1 on ms-windows.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: tcl.el.diff --]
[-- Type: text/x-patch, Size: 3329 bytes --]
diff -c /Users/harder/emacs/lisp/progmodes/tcl.el /Users/harder/tcl.el
*** /Users/harder/emacs/lisp/progmodes/tcl.el Tue Jan 17 00:09:02 2006
--- /Users/harder/tcl.el Tue Apr 18 22:23:25 2006
***************
*** 1042,1060 ****
(defun tcl-send-string (proc string)
(with-current-buffer (process-buffer proc)
(goto-char (process-mark proc))
! (beginning-of-line)
(if (looking-at comint-prompt-regexp)
(set-marker inferior-tcl-delete-prompt-marker (point))))
(comint-send-string proc string))
- (defun tcl-send-region (proc start end)
- (with-current-buffer (process-buffer proc)
- (goto-char (process-mark proc))
- (beginning-of-line)
- (if (looking-at comint-prompt-regexp)
- (set-marker inferior-tcl-delete-prompt-marker (point))))
- (comint-send-region proc start end))
-
(defun switch-to-tcl (eob-p)
"Switch to inferior Tcl process buffer.
With argument, positions cursor at end of buffer."
--- 1042,1052 ----
(defun tcl-send-string (proc string)
(with-current-buffer (process-buffer proc)
(goto-char (process-mark proc))
! (forward-line 0)
(if (looking-at comint-prompt-regexp)
(set-marker inferior-tcl-delete-prompt-marker (point))))
(comint-send-string proc string))
(defun switch-to-tcl (eob-p)
"Switch to inferior Tcl process buffer.
With argument, positions cursor at end of buffer."
***************
*** 1079,1088 ****
"Send the current region to the inferior Tcl process.
Prefix argument means switch to the Tcl buffer afterwards."
(interactive "r\nP")
! (let ((proc (inferior-tcl-proc)))
! (tcl-send-region proc start end)
! (tcl-send-string proc "\n")
! (if and-go (switch-to-tcl t))))
(defun tcl-eval-defun (&optional and-go)
"Send the current defun to the inferior Tcl process.
--- 1071,1080 ----
"Send the current region to the inferior Tcl process.
Prefix argument means switch to the Tcl buffer afterwards."
(interactive "r\nP")
! (tcl-send-string
! (inferior-tcl-proc)
! (replace-regexp-in-string "\n*$" "\n" (buffer-substring start end)))
! (when and-go (switch-to-tcl t)))
(defun tcl-eval-defun (&optional and-go)
"Send the current defun to the inferior Tcl process.
***************
*** 1149,1155 ****
(unless (comint-check-proc "*inferior-tcl*")
(set-buffer (apply (function make-comint) "inferior-tcl" cmd nil
tcl-command-switches))
! (inferior-tcl-mode))
(set (make-local-variable 'tcl-application) cmd)
(setq inferior-tcl-buffer "*inferior-tcl*")
(pop-to-buffer "*inferior-tcl*"))
--- 1141,1150 ----
(unless (comint-check-proc "*inferior-tcl*")
(set-buffer (apply (function make-comint) "inferior-tcl" cmd nil
tcl-command-switches))
! (inferior-tcl-mode)
! ;; Make tclsh display a prompt on ms-windows. Doesn't affect wish, unfortunately.
! (when (eq system-type 'windows-nt)
! (tcl-send-string (inferior-tcl-proc) "set ::tcl_interactive 1; concat\n")))
(set (make-local-variable 'tcl-application) cmd)
(setq inferior-tcl-buffer "*inferior-tcl*")
(pop-to-buffer "*inferior-tcl*"))
***************
*** 1551,1553 ****
--- 1546,1549 ----
;; arch-tag: 8a032554-c3ef-422e-b84c-acec0522179d
;;; tcl.el ends here
+
Diff finished. Tue Apr 18 22:23:37 2006
[-- Attachment #3: Type: text/plain, Size: 142 bytes --]
_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel
next reply other threads:[~2006-04-18 20:45 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-18 20:45 Jesper Harder [this message]
2006-04-18 21:16 ` [patch] Prompt problems in tcl-mode Stefan Monnier
2006-04-18 21:38 ` Jesper Harder
2006-04-19 7:43 ` Eli Zaretskii
2006-04-19 12:04 ` Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877j5mwr28.fsf@Jesper-Harders-Computer.local \
--to=jesper.harder@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).