mcedit: fix losing column position when navigating up/down.
Regression from 49bc0ddebf.
ClosesMidnightCommander/mc#194.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
When using an external editor (i.e. "Use internal edit" in the Configure
Options is unchecked) the environment variable EDITOR is used. However,
if $EDITOR contains a command line argument after the executable name,
these arguments are not processed properly, and the editor might not be
started at all.
How to reproduce: (Precondition: vi is available on the system)
1) On the command line, execute: export EDITOR="vi +" && mc
(the + argument should let vi start at the document's end instead of the
beginning).
2) Go to the Options menu -> Configuration -> uncheck "Use internal
edit".
3) Move the cursor to a file that is larger than a single screen (e.g.
ABOUT-NLS in mc's source directory).
4) Press F4 to start the external editor.
Result: Nothing visible happens
Expected result: vi is opened showing the end of the file ABOUT-NLS
The bug: my_system_make_arg_array() doesn't perform full-feature
parsing of the comman line.
* (str_tokenize): mew function based on history_tokenize_internal()
from GNU readline-8.2.
* (str_tokenize_word): mew function based on history_tokenize_word()
from GNU readline-8.2.
* (my_system_make_arg_array): reimplement using str_tokenize().
* (my_systemv_flags): use modified my_system_make_arg_array().
* (fork_child_tokens): new test for string tokenization.
* (fork_child_tokens2): likewise.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* 3088_terminal_cwd:
Use ESC_STR macro in escape sequences.
(update_xterm_title_path): change the escape sequence's terminator
Ticket #3088: tell the current directory to the terminal
...from \a to \e\\. Various standards (at least ECMA-48 and DEC STD 070)
agree that an OSC is to be terminated by an ST, i.e. \e\\. Using BEL \a
is a nonstandard solution introduced and popularized by xterm.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Some of the "service" commands generated by the mc "leak" into the fish
subshell history available to the user. An example to reproduce:
* set user shell to fish and start mc (SHELL=/usr/bin/fish mc)
* navigate to any directory
* press Ctrl+o
* press \u2191 button (UP, go back in history)
* observe " cd (printf '%b' ... " command
This commit avoids the " cd (printf '%b' ... " commands in the fish
history.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* (edit_search): do not call edit_search_fix_search_start_if_selection()
since it called in edit_search_init().
* (edit_replace_cmd): likewise; join two ifs.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
The bug was introduced in 21feb38a8d.
* (edit_search_init): call edit_get_search_line_type().
* (edit_search): do mot call edit_get_search_line_type() since it is
called in edit_search_init().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* 4490_cleanup: (31 commits)
Update po/*.po files.
ext.d/image.sh: use exiftool in addition to exif to view image metadata.
ext.d/image.sh: check $DISPLAY in the xpm View action.
mc.ext.ini: support avif images.
mc.ext.ini: add View action for webp images.
Update copyright years.
(main): call tty_check_term() right after mc_args_parse().
Refactor learn keys.
Use g_string_new_take().
(test_glob_prepare_replace_str): remove unneeded type cast.
maint/utils/update-years.sh: replaced unportable 'sed -i' command.
maint/utils/update-years.sh: add src/man2hlp/man2hlp.in.
src/man2hlp/man2hlp.in: collapse copyright years.
(str_utf8_offset_to_pos): change type of variable.
(mc_search_regex__get_max_num_of_replace_tokens): refactor loop.
lib/widget/input_complete.c: remove intermediate variables.
mcedit: add intermediate variables to make code more readable and debuggable.
(is_blank): refactor loop.
(edit_help): use help node of editor dialog.
(tree_execute_cmd): move CK_Help handler to separate function tree_help()
...