Patch for switching to subshel in editor and viewer
Pavel Roskin
proski at gnu.org
Sun Aug 12 18:09:47 UTC 2001
Hi, Walery!
> Ok, now Ctrl-O and '!' reuse the same core.
I applied a patch a few day ago where Ctrl-O in the viewer uses the same
code as the panels (view_other_cmd), whereas '!' works as it worked before
(it forces the shell even if the subshell is not supports). I think it's
the most consistent and backwards-compatible behavior.
> > What's wrong with `F11 s'? Is it really so important to access the same
> > shell used by MC as subshell?
>
> Yes, it may be important.
> For instance if you want to see output of the previous command
> of if you continue to do the same task in the subshell.
I agree. Indeed, it's better to have the same Ctrl-O behavior in all
three modes (panels, viewer, editor),
> > And why Ctrl-Shift-O? This won't work on remote terminals at all. Maybe
> > it's better to redefine "Open" to another key in the editor? Can you
> > check what is the "traditional" key to open a new file? GNOME uses F3,
> > but how about Far.
>
> Fixed. "Open file" is rebinded to F18
> (anyway IMHO this is not used very often).
This choice seems random to me. There is a good reason why it's not used
often - because it's easier to select the file on the panel. I'm removing
the shortcut completely, both in the intuitive and in the emacs mode.
> Now Ctrl-O is also used here for invoking subshell.
You are doing it on a very low level. My implementation uses a new
action, CK_Shell.
> Well, all problems are fixed.
> Now we have the same keys in all modes of operation.
> Also we invoke the same subshell.
> Also this will work in the remote terminals.
> I see no obstacles for including this into CVS.
I'm applying my patch, but it does what you want.
ChangeLog:
* edit_key_translator.c (cooledit_key_map): Use Ctrl-O for
subshell, not for "Open file...".
(emacs_key_map): Likewise.
* edit.c: Handle CK_Shell.
* editcmddef.h: Define CK_Shell.
* editmenu.c (FileMenu): Remove C-o from the "Open file..."
item.
(FileMenuEmacs): Likewise.
The message "&Open file..." is new. It should be translated.
There is one problem - exiting from the subshell while in the viewer and
editor is not handled gracefully. I don't think that MC should exit if a
modified file is loaded in the editor just because the user typed "exit"
in the subshell.
--
Regards,
Pavel Roskin
-------------------------------------------
--- edit/edit_key_translator.c
+++ edit/edit_key_translator.c
@@ -47,7 +47,7 @@
KEY_PPAGE, CK_Page_Up, KEY_NPAGE, CK_Page_Down, KEY_LEFT, CK_Left,
KEY_RIGHT, CK_Right, KEY_UP, CK_Up, KEY_DOWN, CK_Down, ALT ('\t'), CK_Return, ALT ('\n'), CK_Return,
KEY_HOME, CK_Home, KEY_END, CK_End, '\t', CK_Tab, XCTRL ('u'), CK_Undo, KEY_IC, CK_Toggle_Insert,
- XCTRL ('o'), CK_Load, KEY_F (3), CK_Mark, KEY_F (13), CK_Column_Mark, KEY_F (5), CK_Copy,
+ XCTRL ('o'), CK_Shell, KEY_F (3), CK_Mark, KEY_F (13), CK_Column_Mark, KEY_F (5), CK_Copy,
KEY_F (6), CK_Move, KEY_F (8), CK_Remove, KEY_F (12), CK_Save_As,
KEY_F (2), CK_Save, XCTRL ('n'), CK_New,
XCTRL ('l'), CK_Refresh, ESC_CHAR, CK_Exit, KEY_F (10), CK_Exit,
@@ -70,7 +70,7 @@
KEY_PPAGE, CK_Page_Up, KEY_NPAGE, CK_Page_Down, KEY_LEFT, CK_Left,
KEY_RIGHT, CK_Right, KEY_UP, CK_Up, KEY_DOWN, CK_Down, ALT ('\t'), CK_Return, ALT ('\n'), CK_Return,
KEY_HOME, CK_Home, KEY_END, CK_End, '\t', CK_Tab, XCTRL ('u'), CK_Undo, KEY_IC, CK_Toggle_Insert,
- XCTRL ('o'), CK_Load, KEY_F (3), CK_Mark, KEY_F (13), CK_Column_Mark, KEY_F (5), CK_Copy,
+ XCTRL ('o'), CK_Shell, KEY_F (3), CK_Mark, KEY_F (13), CK_Column_Mark, KEY_F (5), CK_Copy,
KEY_F (6), CK_Move, KEY_F (8), CK_Remove, KEY_F (12), CK_Save_As,
KEY_F (2), CK_Save, ALT ('p'), CK_Paragraph_Format,
--- gtkedit/edit.c
+++ gtkedit/edit.c
@@ -2612,6 +2612,9 @@ int edit_execute_cmd (WEdit * edit, int
case CK_Mail:
edit_mail_dialog (edit);
break;
+ case CK_Shell:
+ view_other_cmd ();
+ break;
#endif
/* These commands are not handled and must be handled by the user application */
--- gtkedit/editcmddef.h
+++ gtkedit/editcmddef.h
@@ -142,6 +142,8 @@
#define CK_Selection_History 704
#ifdef MIDNIGHT /* cooledit now has its own full-featured script editor and executor */
+#define CK_Shell 801
+
/*
Process a block through a shell command: CK_Pipe_Block(i) executes shell_cmd[i].
shell_cmd[i] must process the file ~/cooledit.block and output ~/cooledit.block
--- gtkedit/editmenu.c
+++ gtkedit/editmenu.c
@@ -125,7 +125,7 @@ void edit_user_menu_cmd (void)
static menu_entry FileMenu[] =
{
- {' ', N_("&Open/load... C-o"), 'O', menu_load_cmd},
+ {' ', N_("&Open file..."), 'O', menu_load_cmd},
{' ', N_("&New C-n"), 'N', menu_new_cmd},
{' ', "", ' ', 0},
{' ', N_("&Save F2"), 'S', menu_save_cmd},
@@ -144,7 +144,7 @@ static menu_entry FileMenu[] =
static menu_entry FileMenuEmacs[] =
{
- {' ', N_("&Open/load... C-o"), 'O', menu_load_cmd},
+ {' ', N_("&Open file..."), 'O', menu_load_cmd},
{' ', N_("&New C-x k"), 'N', menu_new_cmd},
{' ', "", ' ', 0},
{' ', N_("&Save F2"), 'S', menu_save_cmd},
-------------------------------------------
More information about the mc-devel
mailing list