unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* read a reply from the terminal
@ 2007-07-14  2:42 Dan Nicolaescu
  2007-07-14 10:39 ` Eli Zaretskii
                   ` (2 more replies)
  0 siblings, 3 replies; 22+ messages in thread
From: Dan Nicolaescu @ 2007-07-14  2:42 UTC (permalink / raw)
  To: emacs-devel



I trying to do: (send-string-to-terminal "\e[>0c") and read the string
that the terminal sends back. Can this be done reliably in elisp?


The reason I want this is because I want to enable 
"modifyOtherString" at runtime in term/xterm.el (it can be done by
sending an escape sequence to the terminal).

But not all terminals that set TERM to xterm support
modifyOtherString. By querying the terminal I can find out if it is
indeed an xterm and send the escape sequence to enable
modifyOtherString.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-14  2:42 read a reply from the terminal Dan Nicolaescu
@ 2007-07-14 10:39 ` Eli Zaretskii
  2007-07-15 13:49   ` Johan Bockgård
  2007-07-14 19:37 ` Stefan Monnier
  2007-07-14 22:16 ` Johan Bockgård
  2 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2007-07-14 10:39 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: emacs-devel

> From: Dan Nicolaescu <dann@ics.uci.edu>
> Date: Fri, 13 Jul 2007 19:42:51 -0700
> 
> I trying to do: (send-string-to-terminal "\e[>0c") and read the string
> that the terminal sends back. Can this be done reliably in elisp?

If you know exactly how many bytes will the response include, I think
insert-file-contents should fit the bill.  Doesn't it?

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-14  2:42 read a reply from the terminal Dan Nicolaescu
  2007-07-14 10:39 ` Eli Zaretskii
@ 2007-07-14 19:37 ` Stefan Monnier
  2007-07-15  0:34   ` Dan Nicolaescu
  2007-07-14 22:16 ` Johan Bockgård
  2 siblings, 1 reply; 22+ messages in thread
From: Stefan Monnier @ 2007-07-14 19:37 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: emacs-devel

> I trying to do: (send-string-to-terminal "\e[>0c") and read the string
> that the terminal sends back.  Can this be done reliably in elisp?

Something like

          (let ((coding-system-for-read 'binary))
            (read-event ...))

should give you what you want,


        Stefan

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-14  2:42 read a reply from the terminal Dan Nicolaescu
  2007-07-14 10:39 ` Eli Zaretskii
  2007-07-14 19:37 ` Stefan Monnier
@ 2007-07-14 22:16 ` Johan Bockgård
  2007-07-14 22:35   ` Eli Zaretskii
  2 siblings, 1 reply; 22+ messages in thread
From: Johan Bockgård @ 2007-07-14 22:16 UTC (permalink / raw)
  To: emacs-devel


Is there a way to make Emacs always interpret ^G as a normal
character?

Here's an illustration of the problem:

    emacs -nw -Q

In *scratch*, press C-j after

     (read-key-sequence "Paste: ")

Assuming that the X selection contains the characters `a b c ^G 1 2
3', a <middle-click> produces

    "^G"
    123

"abc" are lost.

(The same thing happens with responses to send-string-to-terminal.)

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-14 22:16 ` Johan Bockgård
@ 2007-07-14 22:35   ` Eli Zaretskii
  2007-07-15  0:24     ` Johan Bockgård
  0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2007-07-14 22:35 UTC (permalink / raw)
  To: Johan Bockgård; +Cc: emacs-devel

> From: bojohan+news@dd.chalmers.se (Johan =?utf-8?Q?Bockg=C3=A5rd?=)
> Date: Sun, 15 Jul 2007 00:16:00 +0200
> 
> 
> Is there a way to make Emacs always interpret ^G as a normal
> character?

Does it help to use set-input-mode?

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-14 22:35   ` Eli Zaretskii
@ 2007-07-15  0:24     ` Johan Bockgård
  0 siblings, 0 replies; 22+ messages in thread
From: Johan Bockgård @ 2007-07-15  0:24 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: bojohan+news@dd.chalmers.se (Johan =?utf-8?Q?Bockg=C3=A5rd?=)
>> Date: Sun, 15 Jul 2007 00:16:00 +0200
>> 
>> 
>> Is there a way to make Emacs always interpret ^G as a normal
>> character?
>
> Does it help to use set-input-mode?

Yes. Thanks a lot.

-- 
Johan Bockgård

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-14 19:37 ` Stefan Monnier
@ 2007-07-15  0:34   ` Dan Nicolaescu
  2007-07-15  1:33     ` Stefan Monnier
                       ` (2 more replies)
  0 siblings, 3 replies; 22+ messages in thread
From: Dan Nicolaescu @ 2007-07-15  0:34 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

  > > I trying to do: (send-string-to-terminal "\e[>0c") and read the string
  > > that the terminal sends back.  Can this be done reliably in elisp?
  > 
  > Something like
  > 
  >           (let ((coding-system-for-read 'binary))
  >             (read-event ...))
  > 
  > should give you what you want,

Thanks, that seems to do it. 

Here's a patch. It works for me correctly for all the terminals that I
tried it on. 

Any objection to putting this in? 

*** xterm.el	13 Jun 2007 16:19:48 -0700	1.39
--- xterm.el	14 Jul 2007 17:06:05 -0700	
***************
*** 400,406 ****
      ;; Do it!
      (xterm-register-default-colors)
      ;; This recomputes all the default faces given the colors we've just set up.
!     (tty-set-up-initial-frame-faces)))
  
  ;; Set up colors, for those versions of xterm that support it.
  (defvar xterm-standard-colors
--- 400,436 ----
      ;; Do it!
      (xterm-register-default-colors)
      ;; This recomputes all the default faces given the colors we've just set up.
!     (tty-set-up-initial-frame-faces)
! 
!     ;; Try to turn on the modifyOtherKeys feature on modern xterms.
!     ;; When it is turned on much more key bindings work: things like
!     ;; C-. C-, etc.
!     ;; To do that we need to find out if the current terminal supports
!     ;; modifyOtherKeys. At this time only xterm does.
!     (let ((coding-system-for-read 'binary)
! 	  (chr nil)
! 	  (str nil))
!       ;; Try to find out the type of terminal by sending a "Secondary
!       ;; Device Attributes (DA)" query.
!       (send-string-to-terminal "\e[>0c")
! 
!       ;; The reply should be of the form: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
!       (when (equal (read-event) ?\e)
! 	(when (equal (read-event) 91)
! 	  (while (not (equal (setq chr (read-event)) ?c))
! 	    (setq str (concat str (string chr))))
! 	  (when (string-match ">[0-9]+;\\([0-9]+\\);[0-9]+" str)
! 	    ;; NUMBER2 is the xterm version number, look for something
! 	    ;; greater than 216, the version when modifyOtherKeys was
! 	    ;; introduced.
! 	    (when (>= (string-to-number 
! 		       (substring str (match-beginning 1) (match-end 1))) 216)
! 	      ;; Make sure that the modifyOtherKeys state is restored when
! 	      ;; suspending, resuming and exiting.
! 	      (add-hook 'suspend-hook 'xterm-turn-off-modifyOtherKeys)
! 	      (add-hook 'suspend-resume-hook 'xterm-turn-on-modifyOtherKeys)
! 	      (add-hook 'kill-emacs-hook 'xterm-turn-off-modifyOtherKeys)
! 	      (xterm-turn-on-modifyOtherKeys))))))))
  
  ;; Set up colors, for those versions of xterm that support it.
  (defvar xterm-standard-colors
***************
*** 518,522 ****
--- 548,560 ----
      ;; right colors, so clear them.
      (clear-face-cache)))
  
+ (defun xterm-turn-on-modifyOtherKeys ()
+   "Turn on the modifyOtherKeys feature of xterm."
+   (send-string-to-terminal "\e[>4;1m"))
+ 
+ (defun xterm-turn-off-modifyOtherKeys ()
+   "Turn off the modifyOtherKeys feature of xterm."
+   (send-string-to-terminal "\e[>4m"))
+ 
  ;; arch-tag: 12e7ebdd-1e6c-4b25-b0f9-35ace25e855a
  ;;; xterm.el ends here

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15  0:34   ` Dan Nicolaescu
@ 2007-07-15  1:33     ` Stefan Monnier
  2007-07-15  8:18     ` Andreas Schwab
  2007-07-15 22:53     ` Richard Stallman
  2 siblings, 0 replies; 22+ messages in thread
From: Stefan Monnier @ 2007-07-15  1:33 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: emacs-devel

> ! 	(when (equal (read-event) 91)
                                  ^^
                                  ?\[

-- Stefan

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15  0:34   ` Dan Nicolaescu
  2007-07-15  1:33     ` Stefan Monnier
@ 2007-07-15  8:18     ` Andreas Schwab
  2007-07-15 15:30       ` Dan Nicolaescu
  2007-07-15 22:53     ` Richard Stallman
  2 siblings, 1 reply; 22+ messages in thread
From: Andreas Schwab @ 2007-07-15  8:18 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: Stefan Monnier, emacs-devel

Dan Nicolaescu <dann@ics.uci.edu> writes:

> !       ;; Try to find out the type of terminal by sending a "Secondary
> !       ;; Device Attributes (DA)" query.
> !       (send-string-to-terminal "\e[>0c")
> ! 
> !       ;; The reply should be of the form: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
> !       (when (equal (read-event) ?\e)

> ! 	(when (equal (read-event) 91)
> ! 	  (while (not (equal (setq chr (read-event)) ?c))
> ! 	    (setq str (concat str (string chr))))

What if the terminal is ignoring the query, or there is some other
communication problem, wouldn't that mean that read-event would hang
here?  IMHO the calls should use the timeout feature.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-14 10:39 ` Eli Zaretskii
@ 2007-07-15 13:49   ` Johan Bockgård
  2007-07-15 17:19     ` Eli Zaretskii
  0 siblings, 1 reply; 22+ messages in thread
From: Johan Bockgård @ 2007-07-15 13:49 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Dan Nicolaescu <dann@ics.uci.edu>
>> Date: Fri, 13 Jul 2007 19:42:51 -0700
>> 
>> I trying to do: (send-string-to-terminal "\e[>0c") and read the string
>> that the terminal sends back. Can this be done reliably in elisp?
>
> If you know exactly how many bytes will the response include, I think
> insert-file-contents should fit the bill.  Doesn't it?

How?

-- 
Johan Bockgård

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15  8:18     ` Andreas Schwab
@ 2007-07-15 15:30       ` Dan Nicolaescu
  2007-07-15 17:30         ` Eli Zaretskii
  0 siblings, 1 reply; 22+ messages in thread
From: Dan Nicolaescu @ 2007-07-15 15:30 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Stefan Monnier, emacs-devel

Andreas Schwab <schwab@suse.de> writes:

  > Dan Nicolaescu <dann@ics.uci.edu> writes:
  > 
  > > !       ;; Try to find out the type of terminal by sending a "Secondary
  > > !       ;; Device Attributes (DA)" query.
  > > !       (send-string-to-terminal "\e[>0c")
  > > ! 
  > > !       ;; The reply should be of the form: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
  > > !       (when (equal (read-event) ?\e)
  > 
  > > ! 	(when (equal (read-event) 91)
  > > ! 	  (while (not (equal (setq chr (read-event)) ?c))
  > > ! 	    (setq str (concat str (string chr))))
  > 
  > What if the terminal is ignoring the query, or there is some other
  > communication problem, wouldn't that mean that read-event would hang
  > here?  IMHO the calls should use the timeout feature.

Good point. What is a good value for the timeout? 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15 13:49   ` Johan Bockgård
@ 2007-07-15 17:19     ` Eli Zaretskii
  2007-07-15 22:04       ` Johan Bockgård
  0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2007-07-15 17:19 UTC (permalink / raw)
  To: Johan Bockgård; +Cc: emacs-devel

> From: bojohan+news@dd.chalmers.se (Johan =?utf-8?Q?Bockg=C3=A5rd?=)
> Date: Sun, 15 Jul 2007 15:49:01 +0200
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> 
> >> From: Dan Nicolaescu <dann@ics.uci.edu>
> >> Date: Fri, 13 Jul 2007 19:42:51 -0700
> >> 
> >> I trying to do: (send-string-to-terminal "\e[>0c") and read the string
> >> that the terminal sends back. Can this be done reliably in elisp?
> >
> > If you know exactly how many bytes will the response include, I think
> > insert-file-contents should fit the bill.  Doesn't it?
> 
> How?

How what?  Sorry, I really don't understand the question.

In any case, Stefan suggested a different solution which Dan decided
to use.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15 15:30       ` Dan Nicolaescu
@ 2007-07-15 17:30         ` Eli Zaretskii
  2007-07-15 20:42           ` Dan Nicolaescu
  0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2007-07-15 17:30 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: schwab, emacs-devel

> From: Dan Nicolaescu <dann@ics.uci.edu>
> Date: Sun, 15 Jul 2007 08:30:00 -0700
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
> 
> Andreas Schwab <schwab@suse.de> writes:
> 
>   > Dan Nicolaescu <dann@ics.uci.edu> writes:
>   > 
>   > > !       ;; Try to find out the type of terminal by sending a "Secondary
>   > > !       ;; Device Attributes (DA)" query.
>   > > !       (send-string-to-terminal "\e[>0c")
>   > > ! 
>   > > !       ;; The reply should be of the form: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
>   > > !       (when (equal (read-event) ?\e)
>   > 
>   > > ! 	(when (equal (read-event) 91)
>   > > ! 	  (while (not (equal (setq chr (read-event)) ?c))
>   > > ! 	    (setq str (concat str (string chr))))
>   > 
>   > What if the terminal is ignoring the query, or there is some other
>   > communication problem, wouldn't that mean that read-event would hang
>   > here?  IMHO the calls should use the timeout feature.
> 
> Good point.

I thought about the same problem as Andreas, but didn't ask the
question since you told that you've tested the code on many terminals,
and I assumed those terminals included at least one that didn't
support this command.  If that's not so, I suggest to test the new
code (with timeout) on such a terminal, as well as on those which do
support the command.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15 17:30         ` Eli Zaretskii
@ 2007-07-15 20:42           ` Dan Nicolaescu
  2007-08-03 21:54             ` Davis Herring
  0 siblings, 1 reply; 22+ messages in thread
From: Dan Nicolaescu @ 2007-07-15 20:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: schwab, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

  > > From: Dan Nicolaescu <dann@ics.uci.edu>
  > > Date: Sun, 15 Jul 2007 08:30:00 -0700
  > > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
  > > 
  > > Andreas Schwab <schwab@suse.de> writes:
  > > 
  > >   > Dan Nicolaescu <dann@ics.uci.edu> writes:
  > >   > 
  > >   > > !       ;; Try to find out the type of terminal by sending a "Secondary
  > >   > > !       ;; Device Attributes (DA)" query.
  > >   > > !       (send-string-to-terminal "\e[>0c")
  > >   > > ! 
  > >   > > !       ;; The reply should be of the form: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
  > >   > > !       (when (equal (read-event) ?\e)
  > >   > 
  > >   > > ! 	(when (equal (read-event) 91)
  > >   > > ! 	  (while (not (equal (setq chr (read-event)) ?c))
  > >   > > ! 	    (setq str (concat str (string chr))))
  > >   > 
  > >   > What if the terminal is ignoring the query, or there is some other
  > >   > communication problem, wouldn't that mean that read-event would hang
  > >   > here?  IMHO the calls should use the timeout feature.
  > > 
  > > Good point.
  > 
  > I thought about the same problem as Andreas, but didn't ask the
  > question since you told that you've tested the code on many terminals,
  > and I assumed those terminals included at least one that didn't
  > support this command.  If that's not so, I suggest to test the new
  > code (with timeout) on such a terminal, as well as on those which do
  > support the command.

I have now tested the code using a timeout of 0.1 on xterm, rxvt,
gnome-terminal, konsole, putty, and a very old xterm (from an old
Solaris). It works fine for all of them. All these terminals support
the "\e[>0c" query. 
I also tested it on a Linux console, that does not support the query.

It works fine everywhere. 

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15 17:19     ` Eli Zaretskii
@ 2007-07-15 22:04       ` Johan Bockgård
  2007-07-16  3:11         ` Eli Zaretskii
  0 siblings, 1 reply; 22+ messages in thread
From: Johan Bockgård @ 2007-07-15 22:04 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> How what?  Sorry, I really don't understand the question.

How can insert-file-contents be used to read a reply from the terminal
(if you know how many bytes it contains). It sounded like you had a
solution in mind.

-- 
Johan Bockgård

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15  0:34   ` Dan Nicolaescu
  2007-07-15  1:33     ` Stefan Monnier
  2007-07-15  8:18     ` Andreas Schwab
@ 2007-07-15 22:53     ` Richard Stallman
  2007-07-16  0:56       ` Dan Nicolaescu
  2 siblings, 1 reply; 22+ messages in thread
From: Richard Stallman @ 2007-07-15 22:53 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: monnier, emacs-devel

    !       ;; Try to find out the type of terminal by sending a "Secondary
    !       ;; Device Attributes (DA)" query.
    !       (send-string-to-terminal "\e[>0c")
    ! 
    !       ;; The reply should be of the form: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
    !       (when (equal (read-event) ?\e)
    ! 	(when (equal (read-event) 91)

Is there any danger that some terminal programs won't implement
that query, and that these read-event calls will hang?

Perhaps the best thing to do is install the patch
and see if anyone complains.

    + (defun xterm-turn-on-modifyOtherKeys ()

Please rename that to xterm-turn-on-modify-other-keys.
Likewise the following function.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15 22:53     ` Richard Stallman
@ 2007-07-16  0:56       ` Dan Nicolaescu
  0 siblings, 0 replies; 22+ messages in thread
From: Dan Nicolaescu @ 2007-07-16  0:56 UTC (permalink / raw)
  To: rms; +Cc: monnier, emacs-devel

Richard Stallman <rms@gnu.org> writes:

  >     !       ;; Try to find out the type of terminal by sending a "Secondary
  >     !       ;; Device Attributes (DA)" query.
  >     !       (send-string-to-terminal "\e[>0c")
  >     ! 
  >     !       ;; The reply should be of the form: \e [ > NUMBER1 ; NUMBER2 ; NUMBER3 c
  >     !       (when (equal (read-event) ?\e)
  >     ! 	(when (equal (read-event) 91)
  > 
  > Is there any danger that some terminal programs won't implement
  > that query, and that these read-event calls will hang?

It's not impossible, someone can implement a terminal emulator that
does not support this type of query and still set TERM to xterm. Most
applications won't care.. To be safe adding a timeout to the
read-event call seems to be the right thing to do.

  > Perhaps the best thing to do is install the patch
  > and see if anyone complains.

I'll do that.

  >     + (defun xterm-turn-on-modifyOtherKeys ()
  > 
  > Please rename that to xterm-turn-on-modify-other-keys.
  > Likewise the following function.

Sure.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15 22:04       ` Johan Bockgård
@ 2007-07-16  3:11         ` Eli Zaretskii
  2007-07-16 19:46           ` Johan Bockgård
  0 siblings, 1 reply; 22+ messages in thread
From: Eli Zaretskii @ 2007-07-16  3:11 UTC (permalink / raw)
  To: Johan Bockgård; +Cc: emacs-devel

> From: bojohan+news@dd.chalmers.se (Johan =?utf-8?Q?Bockg=C3=A5rd?=)
> Date: Mon, 16 Jul 2007 00:04:43 +0200
> 
> How can insert-file-contents be used to read a reply from the terminal
> (if you know how many bytes it contains). It sounded like you had a
> solution in mind.

The terminal can be addressed by name (its device driver name,
something like "/dev/tty1"), right?  If so, you can read from that
device as if it were a file.  insert-file-contents is a way to read
from files, and it supports reading a certain number of bytes.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-16  3:11         ` Eli Zaretskii
@ 2007-07-16 19:46           ` Johan Bockgård
  0 siblings, 0 replies; 22+ messages in thread
From: Johan Bockgård @ 2007-07-16 19:46 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> The terminal can be addressed by name (its device driver name,
> something like "/dev/tty1"), right?  If so, you can read from that
> device as if it were a file.  insert-file-contents is a way to read
> from files, and it supports reading a certain number of bytes.

Ok. But it does not support reading a specified number of bytes when
the file is non-regular. (It would be useful if it could.)

  if (!S_ISREG (st.st_mode))
    {
      not_regular = 1;
      [...]
      if (! NILP (replace) || ! NILP (beg) || ! NILP (end))
      xsignal2 (Qfile_error,
                 build_string ("not a regular file"), orig_filename);
    }

The manual says

     It is possible to read a special file (such as a FIFO or an I/O
     device) with `insert-file-contents', as long as REPLACE and VISIT
     are `nil'.

It should be added that BEG and END have to be nil as well, or someone
might want to improve the code.

-- 
Johan Bockgård

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-07-15 20:42           ` Dan Nicolaescu
@ 2007-08-03 21:54             ` Davis Herring
  2007-08-03 22:23               ` Dan Nicolaescu
  0 siblings, 1 reply; 22+ messages in thread
From: Davis Herring @ 2007-08-03 21:54 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: schwab, Eli Zaretskii, emacs-devel

> I have now tested the code using a timeout of 0.1 on xterm, rxvt,
> gnome-terminal, konsole, putty, and a very old xterm (from an old
> Solaris). It works fine for all of them. All these terminals support
> the "\e[>0c" query.
> I also tested it on a Linux console, that does not support the query.

Sorry to bring this up so much later, but is a timeout of 0.1 always
appropriate?  Is there ever a circumstance where a remote host would need
to provide the information, or is it always trapped by a local terminal
driver in such a case?

Davis

-- 
This product is sold by volume, not by mass.  If it appears too dense or
too sparse, it is because mass-energy conversion has occurred during
shipping.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-08-03 21:54             ` Davis Herring
@ 2007-08-03 22:23               ` Dan Nicolaescu
  2007-08-04  1:00                 ` Stefan Monnier
  0 siblings, 1 reply; 22+ messages in thread
From: Dan Nicolaescu @ 2007-08-03 22:23 UTC (permalink / raw)
  To: herring; +Cc: schwab, Eli Zaretskii, emacs-devel

"Davis Herring" <herring@lanl.gov> writes:

  > > I have now tested the code using a timeout of 0.1 on xterm, rxvt,
  > > gnome-terminal, konsole, putty, and a very old xterm (from an old
  > > Solaris). It works fine for all of them. All these terminals support
  > > the "\e[>0c" query.
  > > I also tested it on a Linux console, that does not support the query.
  > 
  > Sorry to bring this up so much later, but is a timeout of 0.1 always
  > appropriate?  Is there ever a circumstance where a remote host would need
  > to provide the information, or is it always trapped by a local terminal
  > driver in such a case?

The terminal emulator replies.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: read a reply from the terminal
  2007-08-03 22:23               ` Dan Nicolaescu
@ 2007-08-04  1:00                 ` Stefan Monnier
  0 siblings, 0 replies; 22+ messages in thread
From: Stefan Monnier @ 2007-08-04  1:00 UTC (permalink / raw)
  To: Dan Nicolaescu; +Cc: schwab, Eli Zaretskii, emacs-devel

>> > I have now tested the code using a timeout of 0.1 on xterm, rxvt,
>> > gnome-terminal, konsole, putty, and a very old xterm (from an old
>> > Solaris). It works fine for all of them. All these terminals support
>> > the "\e[>0c" query.
>> > I also tested it on a Linux console, that does not support the query.
>> 
>> Sorry to bring this up so much later, but is a timeout of 0.1 always
>> appropriate?  Is there ever a circumstance where a remote host would need
>> to provide the information, or is it always trapped by a local terminal
>> driver in such a case?

> The terminal emulator replies.

But if you're running Emacs remotely via an ssh shell, then there's
a network between Emacs and the terminal emulator.  E.g. in the case of
PuTTY, or in my case (xterm -e ssh <host>).


        Stefan

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2007-08-04  1:00 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-14  2:42 read a reply from the terminal Dan Nicolaescu
2007-07-14 10:39 ` Eli Zaretskii
2007-07-15 13:49   ` Johan Bockgård
2007-07-15 17:19     ` Eli Zaretskii
2007-07-15 22:04       ` Johan Bockgård
2007-07-16  3:11         ` Eli Zaretskii
2007-07-16 19:46           ` Johan Bockgård
2007-07-14 19:37 ` Stefan Monnier
2007-07-15  0:34   ` Dan Nicolaescu
2007-07-15  1:33     ` Stefan Monnier
2007-07-15  8:18     ` Andreas Schwab
2007-07-15 15:30       ` Dan Nicolaescu
2007-07-15 17:30         ` Eli Zaretskii
2007-07-15 20:42           ` Dan Nicolaescu
2007-08-03 21:54             ` Davis Herring
2007-08-03 22:23               ` Dan Nicolaescu
2007-08-04  1:00                 ` Stefan Monnier
2007-07-15 22:53     ` Richard Stallman
2007-07-16  0:56       ` Dan Nicolaescu
2007-07-14 22:16 ` Johan Bockgård
2007-07-14 22:35   ` Eli Zaretskii
2007-07-15  0:24     ` Johan Bockgård

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).