mirror of
https://github.com/MidnightCommander/mc
synced 2024-12-22 04:22:34 +03:00
Merge branch '3380_mcedit_subshell'
* 3380_mcedit_subshell: Ticket #3380: enable subshell in standalone mceditor, mcviewer, and mcdiffviewer.
This commit is contained in:
commit
35b3192f41
@ -549,13 +549,18 @@ toggle_subshell (void)
|
||||
#ifdef ENABLE_SUBSHELL
|
||||
if (mc_global.tty.use_subshell)
|
||||
{
|
||||
do_load_prompt ();
|
||||
if (new_dir_vpath != NULL)
|
||||
do_possible_cd (new_dir_vpath);
|
||||
if (mc_global.tty.console_flag != '\0' && output_lines)
|
||||
show_console_contents (output_start_y,
|
||||
LINES - mc_global.keybar_visible - output_lines -
|
||||
1, LINES - mc_global.keybar_visible - 1);
|
||||
if (mc_global.mc_run_mode == MC_RUN_FULL)
|
||||
{
|
||||
do_load_prompt ();
|
||||
if (new_dir_vpath != NULL)
|
||||
do_possible_cd (new_dir_vpath);
|
||||
if (mc_global.tty.console_flag != '\0' && output_lines)
|
||||
show_console_contents (output_start_y,
|
||||
LINES - mc_global.keybar_visible - output_lines -
|
||||
1, LINES - mc_global.keybar_visible - 1);
|
||||
}
|
||||
else if (new_dir_vpath != NULL && mc_chdir (new_dir_vpath) != -1)
|
||||
vfs_setup_cwd ();
|
||||
}
|
||||
|
||||
vfs_path_free (new_dir_vpath);
|
||||
|
@ -331,10 +331,6 @@ main (int argc, char *argv[])
|
||||
handle_console (CONSOLE_INIT);
|
||||
|
||||
#ifdef ENABLE_SUBSHELL
|
||||
/* Don't use subshell when invoked as viewer or editor */
|
||||
if (mc_global.mc_run_mode != MC_RUN_FULL)
|
||||
mc_global.tty.use_subshell = FALSE;
|
||||
|
||||
if (mc_global.tty.use_subshell)
|
||||
subshell_get_console_attributes ();
|
||||
#endif /* ENABLE_SUBSHELL */
|
||||
|
@ -1143,16 +1143,16 @@ invoke_subshell (const char *command, int how, vfs_path_t ** new_dir_vpath)
|
||||
|
||||
/* Make the subshell change to MC's working directory */
|
||||
if (new_dir_vpath != NULL)
|
||||
do_subshell_chdir (subshell_get_cwd_from_current_panel (), TRUE);
|
||||
do_subshell_chdir (subshell_get_cwd (), TRUE);
|
||||
|
||||
if (command == NULL) /* The user has done "C-o" from MC */
|
||||
{
|
||||
if (subshell_state == INACTIVE)
|
||||
{
|
||||
subshell_state = ACTIVE;
|
||||
/* FIXME: possibly take out this hack; the user can
|
||||
re-play it by hitting C-hyphen a few times! */
|
||||
if (subshell_ready)
|
||||
|
||||
/* FIXME: possibly take out this hack; the user can re-play it by hitting C-hyphen a few times! */
|
||||
if (subshell_ready && mc_global.mc_run_mode == MC_RUN_FULL)
|
||||
write_all (mc_global.tty.subshell_pty, " \b", 2); /* Hack to make prompt reappear */
|
||||
}
|
||||
}
|
||||
@ -1173,7 +1173,7 @@ invoke_subshell (const char *command, int how, vfs_path_t ** new_dir_vpath)
|
||||
{
|
||||
const char *pcwd;
|
||||
|
||||
pcwd = vfs_translate_path (vfs_path_as_str (subshell_get_cwd_from_current_panel ()));
|
||||
pcwd = vfs_translate_path (vfs_path_as_str (subshell_get_cwd ()));
|
||||
if (strcmp (subshell_cwd, pcwd) != 0)
|
||||
*new_dir_vpath = vfs_path_from_str (subshell_cwd); /* Make MC change to the subshell's CWD */
|
||||
}
|
||||
@ -1299,7 +1299,7 @@ do_subshell_chdir (const vfs_path_t * vpath, gboolean update_prompt)
|
||||
{
|
||||
char *pcwd;
|
||||
|
||||
pcwd = vfs_path_to_str_flags (subshell_get_cwd_from_current_panel (), 0, VPF_RECODE);
|
||||
pcwd = vfs_path_to_str_flags (subshell_get_cwd (), 0, VPF_RECODE);
|
||||
|
||||
if (!(subshell_state == INACTIVE && strcmp (subshell_cwd, pcwd) != 0))
|
||||
{
|
||||
@ -1370,9 +1370,7 @@ do_subshell_chdir (const vfs_path_t * vpath, gboolean update_prompt)
|
||||
{
|
||||
char *cwd;
|
||||
|
||||
cwd =
|
||||
vfs_path_to_str_flags (subshell_get_cwd_from_current_panel (), 0,
|
||||
VPF_STRIP_PASSWORD);
|
||||
cwd = vfs_path_to_str_flags (subshell_get_cwd (), 0, VPF_STRIP_PASSWORD);
|
||||
vfs_print_message (_("Warning: Cannot change to %s.\n"), cwd);
|
||||
g_free (cwd);
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
|
||||
/*** declarations of public functions ************************************************************/
|
||||
|
||||
const vfs_path_t *subshell_get_cwd_from_current_panel (void);
|
||||
const vfs_path_t *subshell_get_cwd (void);
|
||||
void subshell_handle_cons_saver (void);
|
||||
|
||||
int subshell_get_mainloop_quit (void);
|
||||
|
@ -31,6 +31,8 @@
|
||||
|
||||
#include "lib/global.h"
|
||||
|
||||
#include "lib/vfs/vfs.h" /* vfs_get_raw_current_dir() */
|
||||
|
||||
#include "src/setup.h" /* quit */
|
||||
#include "src/filemanager/midnight.h" /* current_panel */
|
||||
#include "src/consaver/cons.saver.h" /* handle_console() */
|
||||
@ -56,9 +58,12 @@
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
||||
const vfs_path_t *
|
||||
subshell_get_cwd_from_current_panel (void)
|
||||
subshell_get_cwd (void)
|
||||
{
|
||||
return current_panel->cwd_vpath;
|
||||
if (mc_global.mc_run_mode == MC_RUN_FULL)
|
||||
return current_panel->cwd_vpath;
|
||||
|
||||
return vfs_get_raw_current_dir ();
|
||||
}
|
||||
|
||||
/* --------------------------------------------------------------------------------------------- */
|
||||
|
Loading…
Reference in New Issue
Block a user