help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Optimal emacs shell for coding


From: Thierry Volpiatto
Subject: Re: Optimal emacs shell for coding
Date: Wed, 13 Aug 2008 13:21:00 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux)

Tim X <timx@nospam.dev.null> writes:

> Eli Zaretskii <eliz@gnu.org> writes:
>
>>> Date: Tue, 12 Aug 2008 21:02:21 +0200
>>> From: "Lennart Borgman (gmail)" <lennart.borgman@gmail.com>
>>> CC: help-gnu-emacs@gnu.org
>>> 
>>> Eli Zaretskii wrote:
>>> >> Date: Tue, 12 Aug 2008 20:40:35 +0200
>>> >> From: "Lennart Borgman (gmail)" <lennart.borgman@gmail.com>
>>> >> CC: help-gnu-emacs@gnu.org
>>> >>
>>> >> Eli Zaretskii wrote:
>>> >>>> Date: Tue, 12 Aug 2008 14:06:02 +0200
>>> >>>> From: "Lennart Borgman (gmail)" <lennart.borgman@gmail.com>
>>> >>>> CC: help-gnu-emacs@gnu.org
>>> >>>>
>>> >>>> If you look carefully at the output you can see that what is not 
>>> >>>> handled 
>>> >>>> is the parameters to "ls". If you try "ls -1" it will work.
>>> >>> What "parameters to ls"?  "ls" was invoked without any parameters.
>>> >> If you from a shell do
>>> >>
>>> >>    ls | grep
>>> >>
>>> >> then normally ls implicitly gets the -1 parameter
>>> > 
>>> > No, it doesn't.  Please try and see for yourself (I just did).
>>> 
>>> 
>>> We are miscommunicating.
>>
>> Maybe you are; I am not ;-)
>>
>>> I am saying that if I from a shell outside of Emacs do
>>> 
>>>    ls
>>> 
>>> than I get several files listed on each row while the output from
>>> 
>>>    ls | grep some-file
>>> 
>>> implies that ls got the implicit argument -1 when used in the pipe.
>>
>> And I'm saying that you are wrong: -1 is not implied in a pipeline
>> from the shell prompt, either.  Please try that and see for yourself.
>> I tried that both on GNU/Linux and in a Windows command prompt window,
>> and GNU `ls' does not imply -1 in either case.
>>
> Exactly. An you can do another test. Just do 
>
> ls | less
>
> all the files are on one line each. this is standard behavior for ls if
> you pipe or redirect it away from a tty. It only formats multi-column
> output if the output device is a tty, unless you provide the switch to
> force single column output. Note also that usually, the number of
> columns is a function of the longest filename and the display width. The
> concept of 'width' has no meaning with respect to stdout or when
> redirecting via | or > etc.
>
> Note that this is 'normal' behavior - if programs output multiple items
> per line, it would screw up programs that you pipe into. 
>
> Tim
Sorry, i insert again this reply here, i think i did a mistake and reply
on another topic.

As Lennart said you call ls with -1 arg or you can always call ls with
this arg setting it like that:

,----
| (setq eshell-ls-initial-args '(-1)) 
`----

now when you call for example "ls | wc -l" , you will have the
good number of lines.

It would be cool to have a function to call in some hook to call ls -1
only if there is a "|" after ls, this function do that but i need a hook
to call it:

,----
| (defun eshell-set-ls ()
|   (let ((com-line
|          (eshell-parse-arguments (re-search-backward "ls") 
(line-end-position))))
|     (if (equal (nth 1 com-line) '(eshell-operator "|"))
|         (setq eshell-ls-initial-args '(-1))
|         (setq eshell-ls-initial-args nil))))
`----


-- 
A + Thierry Volpiatto
Location: Saint-Cyr-Sur-Mer - France




reply via email to

[Prev in Thread] Current Thread [Next in Thread]