The ancient way of reporting mouse coordinates only supports coordinates
up to 231, so if your terminal is wider (or taller, but that's unlikely),
you cannot use your mouse in the rightmost columns.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
After #2361, smb vfs module doesn't work at all.
The error message "Cannot chdir to ..." raises after hostname enter.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Since content of keymap file is ASCII-only and case insensitive,
don't use some utf8-manipulation: g_ascii_strcasecmp() is used
instead of str_casecmp().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
added ".." at the top of file list (after external panelization)
added ".." at the top of file list (after 'find' panelization)
disable ctrl-r (refresh) for panelized content
added menu entry Left\Panelize, to restore panelized panel
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Minor changes in goto_parent_dir()
many code optimization
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
little fixup
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
When platform does not define HAVE_POSIX_FALLOCATE we get this error:
CC vfs.lo
../../../../mc/lib/vfs/vfs.c: In function 'vfs_preallocate':
../../../../mc/lib/vfs/vfs.c:613:12: error: 'dest_desc' undeclared (first use in this function)
../../../../mc/lib/vfs/vfs.c:613:12: note: each undeclared identifier is reported only once for each function it appears in
../../../../mc/lib/vfs/vfs.c:610:22: warning: unused parameter 'dest_vfs_fd' [-Wunused-parameter]
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
For FTP servers, that do not send ".." in directory listing, mc adds one space to the name of every file and directory. Attached patch should fix this problem.
Steps to reproduce:
cd /#ftp:ftp.symantec.com
Expected result:
Correct list of files/directories
Actual result:
File/directory names with leading spaces
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Sometimes when text contain multibyte UTF-8 chars, editor shows two dots instead of some letter.
When moving text cursor after that letter it will be displayed properly.
When moving cursor back (before letter) it will be displayed again as two dots.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
added UTF8_CHAR_LEN
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
(vfs_s_close): vfs-specific data of file handler
vfs_file_handler_t::data is freed in vfs_s_subclass::fh_close method and
then can be used in vfs_s_subclass::file_store_one. Bug is related to
ftp and fish VFSes.
Added new vfs_s_subclass::fh_free_data method to free vfs-specific data
of file handler vfs_file_handler_t::data. Use it in ftp and vfs VFSes.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
(vfs_class_data_find_by_handle, vfs_class_find_by_handle): move same
code to the separate function vfs_get_openfile().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
If first element is relative, the result path should be also relative
not absolute.
If first element is empty, the result path is relative.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
input_complete.c:874:26: warning: use of logical && with constant
operand; switch to bitwise & or remove constant
[-Wconstant-logical-operand]
if (q && q[1] == '(' && INPUT_COMPLETE_COMMANDS)
^ ~~~~~~~~~~~~~~~~~~~~~~~
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Required for some terminals (screen/tmux) to force needed mouse type
(BUTTON_EVENT by default).
Normal tracking mode sends an escape sequence on both button press and release.
Mouse highlight tracking notifies a program of a button press, receives a range of
lines from the program, highlights the region covered by the mouse within that
range until button release, and then sends the program the release coordinates.
It is enabled by specifying parameter 1001 to DECSET.
Button-event tracking is essentially the same as normal tracking, but xterm also
reports button-motion events. Motion events are reported only if the mouse pointer
has moved to a different character cell. It is enabled by specifying parameter 1002 to DECSET.
On button press or release, xterm sends the same codes used by normal tracking mode.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
changed mc.1.in, added description of command line options -g, --oldmouse.
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Unification of tty_shutdown() function as for S-Lang as for NCurses.
Added do_exit_ca_mode() call to the NCurses-based tty_shutdown().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
The xterm_flag variable was initialized in setup_mc() but used
first time in init_key() and in tty_init() (in do_enter_ca_mode())
before setup_mc() call.
Now xterm initialized in early step of mc start up process and
xterm support and mouse are initialized in tty_init().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
(mc_search__hex_translate_to_regex): don't use length of original string
after leading whitespace trim.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
files starting with space can't be acessed by mc through ftp - it
shows the file as not having the leading space and attempts to
access it produce 'permission denied' errors.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
brace '}' (which probably isn't 100% correct), this should be checked in tests
for replace_handle_esc_seq function, not process_escape_sequence - it is the
replace_handle_esq_seq who decides whether it is an escape sequence or not.
Also, \x{4344} is usually a code for wide character (UTF-8), and not for "CD".
So we can either ignore the higher bits, or generate wide character codes...
The second would be convenient, but would also introduce a hard-coded UTF-8 charset.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Enables use of escape sequences inside regex replace strings,
Enables UTF-8 caseless search in PCRE.
Supported escape sequences: \DEC, \xHEX, \0OCT, \n, \t, \v,
\b, \r, \f, \a. Any of them could be enclosed into \{}.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
... to avoid artefacts after printing of non-printable symbols.
(tty_touch_lines): new function to mark modified lines of screen.
(do_refresh): mark lines as modified before redraw of non-fullscreen dialog
and clear entire screen before redraw of fullscreen dialog.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Now history is not saved if it was not modified and content of input
line is equal to history top entry. Thanks Francesco Cosoleto
<cosoleto at gmail dot com> for the original patch.
Also fixed a regression introduced in cff5925598:
after CK_HistoryNext and CK_HistoryPrev actions in input line,
the input line content is not put to the top of history.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
(hist_next): get rid of direct access to the next histroy item.
(history_show): remove redundant check.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* Removed vfs_path_element_t->raw_url_str;
* Changed some VFS prefixes (colon now used when need to split VFS prefix and VFS parameters);
* Removed vfs_translate_url() functions and related code;
* added converter of VFS parameters to string representation.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
* completed vfs_path_from_str();
* completed vfs_path_to_str() and vfs_path_to_str_elements_count();
* removed deprecated vfs_split();
* changes in all related code;
* new unit tests.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Created vfs_url_t structure
...and use it to parse and store network VFS options.
vfs_s_super structure now has a special member for network VFS options.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Formerly, each widget loaded its history self in its constructor.
Thus, history file was read as many times as many widgets with history
are in dialog.
Now all widget histories are read from ${XDG_CACHE_HOME}/mc/history
file at one time after dialog initialization.
The ev_history_load_save_t event is apllied to load histories.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Formerly, each widget saved its history self in WIDGET_DESTROY stage.
Thus, history file was read and written as many times as many widgets
with history are in dialog.
Now all widget histories are written to ${XDG_CACHE_HOME}/mc/history
file at one time before dialog destruction.
An ev_history_load_save_t event type is created to use new event engine
to save histories.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
...to some in-memory created config without write it to file.
(history_put): now uses history_save().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
What steps will reproduce the problem?
* View some text (log) file (F3), or edit (F4).
* Open search dialog (F7).
* Enter string starting with space and ending with space (I used " ERROR " without quotes), press Enter
* Press F7 to open search dialog again.
What is the expected output?
* Original string in search dialog (" ERROR " without quotes)
What do you see instead?
* "ERROR " (without leading space!)
What solution?
* In function mc_config_set_string_raw() use g_key_file_set_string() instead of g_key_file_set_value()
* change src/learn.c for handle new behavior
* write some tests for new behavior
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
How to reproduce:
1. Run mc.
2. Change both panels to listing modes.
3. Switch to the right panel.
4. Switch type of active right panel to info using menu.
Result: left panel is not active.
Expected result: left panel must become active.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Use GList for list of vfs_s_super objects in vfs_s_subclass.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
DragonFly BSD doesn't provide MAXNAMLEN macro to define size of d_name
member of dirent structure. NAME_MAX is used if MAXNAMLEN is not
provided by OS.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
When SIGINT signal is raised, the CK_Cancel message is handled by
dlg_execute_cmd() and midnight_dlg is closed.
The solution: CK_Cancel is sent to current dialog via callback, and if
current dialog doesn't handle CK_Cancel message, then handle it with common
way using dlg_execute_cmd().
Since Ctrl-g is used to generate SIGINT in MC, remove this shortcut from
all sections of keymaps except the [dialog] section.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>