From: Chip Coldwell <coldwell@frank.harvard.edu>
Subject: Emacs 21.3.50.1 (CVS sources) MacOS X tex-mode bug
Date: Sun, 16 Jan 2005 19:34:02 -0500 (Eastern Standard Time) [thread overview]
Message-ID: <Pine.WNT.4.61.0501161926450.1776@ibm-a31> (raw)
I realize that I should expect problems if I choose to live on the
bleeding edge, but I figure I might as well report this problem just
in case the developers aren't already aware of it.
The problem is with Emacs 21.3.50.1 that I checked out from CVS
sources and compiled using the emacs/mac/make-package shell script on
the Macintosh OS X (10.3.7). If I am editing in tex-mode and I run
the function 'tex-file' (by default bound to C-c C-f) emacs goes into
an infinite loop. The loop is in the function
lisp/tex-mode.el:tex-start-shell
(defun tex-start-shell ()
(with-current-buffer
(make-comint
"tex-shell"
(or tex-shell-file-name (getenv "ESHELL") shell-file-name)
nil)
(let ((proc (get-process "tex-shell")))
(set-process-sentinel proc 'tex-shell-sentinel)
(set-process-query-on-exit-flag proc nil)
(tex-shell)
(while (zerop (buffer-size))
(sleep-for 1)))))
The function creates a shell using "make-comint", then waits for the
shell to start in the loop at the bottom. Presumably, when the shell
has started, it will issue a prompt and the (buffer-size) procedure
will return non-zero and break out of the loop. The problem is that
it never does.
I am informed by Andreas Schwab that ptys are broken on Mac OS X, and
therefore process-connection-type is set to nil so instead of allocating a
pseudo-terminal to communicate with the sub-process emacs uses a pipe.
The shell discovers that its not connected to a terminal and runs as
non-interactive, suppressing the prompts and causing the infinite loop I
describe above.
My proposed solution is a tiny patch:
--- emacs/lisp/textmodes/tex-mode.el.~1.153.~ Sat Dec 11 17:00:38 2004
+++ emacs/lisp/textmodes/tex-mode.el Sun Jan 16 13:59:50 2005
@@ -1495,7 +1495,8 @@
(make-comint
"tex-shell"
(or tex-shell-file-name (getenv "ESHELL") shell-file-name)
- nil)
+ nil
+ "-i")
(let ((proc (get-process "tex-shell")))
(set-process-sentinel proc 'tex-shell-sentinel)
(set-process-query-on-exit-flag proc nil)
This adds the "-i" switch to the command line that exec's the shell,
causing it to run interactively.
I have tested this on Mac OS X and it did solve the problem. A very
similar "-i" switch appears in lisp/shell.el ("M-x shell").
Chip
--
Charles M. "Chip" Coldwell
"Turn on, log in, tune out"
next reply other threads:[~2005-01-17 0:34 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-17 0:34 Chip Coldwell [this message]
2005-01-17 16:08 ` Emacs 21.3.50.1 (CVS sources) MacOS X tex-mode bug Stefan Monnier
2005-01-17 17:41 ` Steven Tamm
2005-01-17 18:59 ` Stefan Monnier
2005-01-18 4:08 ` Steven Tamm
2005-01-18 11:14 ` YAMAMOTO Mitsuharu
2005-01-18 17:31 ` Steven Tamm
2005-02-25 6:19 ` YAMAMOTO Mitsuharu
2005-01-19 0:49 ` Richard Stallman
2005-01-19 19:16 ` Steven Tamm
2005-01-20 21:32 ` Richard Stallman
2005-01-21 6:20 ` Nozomu Ando
2005-01-21 19:40 ` Steven Tamm
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=Pine.WNT.4.61.0501161926450.1776@ibm-a31 \
--to=coldwell@frank.harvard.edu \
/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).