Re: command line synchronization



Hello!

The command line contents is not lost.  It appears again when you
return from the subshell.  Command lines for mc and subshell are
separate.  You can use cut-and-paste with the mouse to copy between
them.

So my questions are:

- is there any special reason for these two command lines to be
separate?

The main reason is simplicity of implementation and compatibility with
many shells.  For the command line to be in-sync, it should be copied both
from mc to the shell and back.  The later is hard.

To synchronize the command line after editing it in the subshell, mc
should be able to know what is currently in the command line buffer of the
subshell.  There is no generic way to request it from the shell.  
Interpreting the keystrokes would not help.  What if the user did history
search?  There is no way to know what the shell has found in its history.

The only clean solution would be to integrate the shell into MC.  But this
would be another project - it's a lot of changes.  Right now, mc supports
bash, zsh and tcsh as subshells.  It would be hard to satistfy users of
all three shells.

- even if there IS a reason, can anyone please suggest a patch that
would simply automatically copy between these command lines when you
switch from one to the other? (of course only if it's not possible to
just make it one instead of two, which would be preferable)

Only copying from mc to the subshell is feasible, but even then I don't
think it's a good idea.  You can run the command from MC and then you have
it in the history and can run it again.

Besides, it would be unsafe to copy the command line if anything was
entered on the command line already.  What is the subshell is in the
history search mode?  Do we want to kill the existing command line or
append the new command at the end.

I cannot imagine how it would work without being ugly, hard to use and
unsafe.

In fact the idea of having two command lines in one program is VERY
counterintuitive, I think there can hardly be any arguing about that.
The most likely reason for a user to hide the panels is to be able to
see the output of a command, not to run a "subshell".

Not for me.  I use the subshell to use its command completion and the
shell history.  There is no way for MC to know which commands I ran in the
shell.  Another reason - I can see the whole command line if it doesn't
fit one line.

To see the output, there is an option "pause after run" in the
Options->Configuration menu.

After all I do have a shell already with panels, why do I need another
one?

Read "info bash", in particular "Command Line Editing".

And the menu command says nothing about any subshell - it promises to
"switch panels on/off". If it does anything else, this is just wrong.

I think this item was written before it was implemented.  It would be nice
to change this text if it wasn't translated into 30 languages and we were
not approaching the next stable release.

Finally, if there's no way to fix this as it is, can i at least reduce
the vertical size of the panels so i can see a few lines of output above
the command line? this way i could do without switching panels off so
the subshell business would not be a problem anymore.

Yes, you can if mc can read data back from the screen.  For that to be
possible, run mc either on Linux console (you should have access to
/dev/vcsa* or have setuid cons.saver) or on rxvt with rxvt extensions
(search the web for the rxvt patch, I don't have it).

When mc detects working cons.saver or rxvt extensions, it gives you the
option to set the number of output lines in the Options->Layout menu.

-- 
Regards,
Pavel Roskin




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