External editor start_line from find dialog
- From: "Miven Dooligan" <mdooligan gawab com>
- To: mc-devel gnome org
- Subject: External editor start_line from find dialog
- Date: Tue, 09 Aug 2005 10:10:21 -0700
I was scratching at a long-standing itch of mine recently,
trying to get mc to call my external editor with a
line offset coming out of the find dialog, so it works
like the internal editor via :edit( what, start_line );
I was messing with execute_with_vfs_arg() in execute.c
to see if I can get it to deal with some extra arguments
passed to the command. First I goofed with passing a va_list
around, but the real problem here is getting
execlp() to do what we want in my_system().
It needs a NULL terminated list of commands so we have to
hardcode it into the program. Not much room for flexibility.
So it made me think, all I want is ONE extra argument
aside from the filename, so what if we added a const char* to
my_system() and noodle backwards through do_execute(),
execute_with_vfs_arg(), and do_edit_at_line();
It starts with this in cmd.c:do_edit_at_line():
extra_argument = g_strdup_printf ( "+%i", start_line );
execute_with_vfs_arg ( editor, what, extra_argument);
g_free ( extra_argument );
And ends with this in utilunix.c:my_system():
if (flags & EXECUTE_AS_SHELL)
execl (shell, shell, "-c", command, NULL);
if ( extra_argument )
execlp (shell, shell, extra_argument, command, NULL);
execlp (shell, shell, command, NULL);
And it works. Neat-O!
execute_with_vfs_arg() and do_execute() just pass it on.
Is anyone else interested in this approach?
There are only tiny patches to cmd.c, execute.[ch],
util.h, and utilunix.c.
Peace and Cheer.
] [Thread Prev