Problem:
BOOK_MARK_COLOR and BOOK_MARK_FOUND_COLOR are hardcoded
in edit/edit-widget.h and so cannot be changed via skin.
Solution:
Now these colors will configure via skin-file. Like:
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
The problem: if I copy or move file with invalid UTF-8 symbols
in name to another directory (e.g. simply F5 Enter F6 Enter
to copy/move to the other panel), the filename gets mangled,
invalid UTF-8 characters are replaced by literal question marks.
Now the copy/move operation leaves the filename unchanged,
even if it is invalid in the locale mc's using for display.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Create temporary buffer in stack instead of heap.
Fixed pointer type mismatch in conditional expression
in panel_operate().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Use gettext context to handle file operation names in
Copy/Move/Delete dialogs.
Thanks to David Martin for the original patch.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Test case:
- run mc
- press CTRL+o (hide panels)
- press 'space' key
- press 'backspace' key
- press CTRL+o (show panels)
- type 'ls' and press 'enter' key
Fix issue: Now 'busy shell' status toggle on if user will press 'Enter' key.
Old behavior: User was press any key into subshell and 'busy shell' status toggle on.
Also, patch will enter new behavior:
* run mc
* press ctrl+o (hide panels)
* type 'cat ' and don't press 'Enter' key
* press ctrl+o (show panels)
* type 'ls' and press enter
You'll see:
cat: ls: File not found.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
If "show Mini status" option is off, the quick search box
is shown incorrect. In this case the quick seach box
must be invisible, because this is common MC behavior.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Problem: need to escape ';' char (as '\;'), but mc_config_set_string function
escape this to '\\;'
Solution: Added mc_config_direct_set_string() function. Also, into src/learn.c
characters '\' and ';' is escaped manually.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
* Panel widget: History list button changed from v to [^]
* Change drawing of history control elements for panel. Now if panel is active, show in reverse color just panel path.
* Add reaction on mouse click on [] chars at top of panel
* Added call of repaint_screen() function for correctly show panels content after click by mouse on 'hidden files' indicator.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
As David Martin proposed, this skin support all newest features
May be used as modern skin, but with some restrictions (must be UTF-8 system codepage)
Also, changed src/screen.c for demonstrate skin features :)
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
The "Choose codepage" dialog (for file panel) is centered
over the according panel.
Renamed create_listbox_window_delta() function to
create_listbox_window_centered(). Now this function takes in
coordinates of dialog center.
Changed argumets order to unified dialogs API.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Strip leading and trailing spaces in color names read from skin ini
file.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
On non-local filesystems, mc won't allow execution of commandline arguments.
This makes sense, except for the `exit' command, which might be allowed even on
non-local filesystems.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
* Added common functions for work with backups of main config files.
* Fixed permissions of ~/.mc/ini;
* Fixed permissions of ~/.mc/filepos
* Fixed permissions of ~/.mc/hotlist
* Fixed permissions of ~/.mc/Tree
* Fixed ownership for ~/.mc/hotlist file
* Changed definitions of config files. Now used constants from src/fileloc.h
Also, added ability for change mc user home dir. Just type:
{{{
make CFLAGS='-DMC_USERCONF_DIR=\".mc2\"'
}}}
And you will have different config files (very usefull for testing or development).
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Test case:
$ sudo bash
files in the directory ~/.mc overwritten and hence change of ownership at the root.
Later, when starting from a user, MC can not save history (the file ~/.mc/history),
because this file is not overwritten.
Fix issue: Now files will overwrite if exists (rather than remove and create new file).
* Added backup of saved files. If someone wrong in 'write config' stage, backup file still present.
* Identation of code.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Viewer: fixed command handling.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
add: binding for "esc", "escape"
Signed-off-by: Ilia Maslakov <il.smind@google.com>
Partially revert of 5fd7d65dca.
If 'Content:' field is empty, keep it and don't populate it
from history.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Attached patch that adds the following 2 enhancements:
1) Using the mouse to click on a panel column heading re-sorts
the panel on that column. If already sorted on that column,
the sort order is reversed.
2) added a button "." next to "v" that toggles the display
of hidden files.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
mc.keymap: remap select charset to M-e, and C-t to mark file
editmenu.c, main.c: change menu items to be consistent
Signed-off-by: Stan. S. Krupoderov <pashelper@gmail.com>
The panelize of find file results doesn't work
if 'Start at:' input field is empty in 'Find file' dialog.
The empty 'Start at:' input is forced populated by "." value.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Skip widgets that matches coords but does not have an action (usually
groupboxes), continuing search of widget with defined action.
Thanks to sfionov.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
fixed completion in command line
add: EditToggleTabTWS,EditFindDefinition, EditLoadPrevFile, EditLoadNextFile actions into bindings list
add string bindings for f21..f24
Signed-off-by: Ilia Maslakov <il.smind@google.com>
Fixed: when main menu is invisible, pressing mouse button
on the first line makes the menu display, even on panel
widgets as "<" ".v>".
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
add more keys into mc.keymap
fix: CK_SingleDirsizeCmd event
add default keys (alt-'.', alt-'+') mc.keymap
Signed-off-by: Ilia Maslakov <il.smind@google.com>
Added alt-shift-h hotkey
Add some documentation about keymap file.
Replace some symbols into names '.' to 'dot', '?' to question, etc.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Original message:
If invalid skin name is set via command line (or config file, or environment variable),
then mc starts silently like -b -a mode. Two proposals, if required skin cannot be found:
*. Show error message "Cannot find skin"
*. Load the default.ini skin instead of set -a -c mode.
Fix issue:
Mc now more verbose if skin not found:
{{{
_("Unable to load '%s' skin.\nDefault skin has been loaded")
}}}
or if skin not parse:
{{{
_("Unable to parse '%s' skin.\nDefault skin has been loaded")
}}}
Translators: please, update your translates.
Also, mc will try to load 'default' skin before switch to 'b&w' scheme.
This commit adds ability to usage GError - glib error handling.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
hotlist.c: add path completion in hotlist add entry dialog
cmd.c: expand environment variables and ~ and ~user exprs in hotlist
widget.c: focus on listbox item N by '0'..'9' keys
add capability to focus on N-th item by 0..9 key to
WListbox widget
Signed-off-by: Stan. S. Krupoderov <pashelper@gmail.com>
In changeset 78f01a3a9a there was added detection of
filesystem and defaulting to turning off "preserve attributes" on certain FS
(ntfs, vfat and some others).
Reason of bug: was removed call of mc_utime() function.
Fix issue:
Restored call of mc_utime() function.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Modified API of search engine: return the number of search types.
This avoids the calculation of the search type count when need.
Sync editor search, editor replace and viewer searc dialogs with
new search API.
Fixed memory leak in editcmd_dialog_search_show().
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
In 'Long file list' the panel width is equal to the screen
width. In this case, choose charset menu is placed in the
center of the screen.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Ignore GPM_DRAG mouse event above or below dropped down menu.
Also fixed handling of click events.
Minor optimization.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* Compile with option --with-screen=ncurses
* Added default init of colors (if color description is null)
* Renamed some color pairs. All static color pairs now cached.
* Fix cursor show in panel over selected files in b&w color scheme.
* Fix editor highlight
* Handle old-style colors definitions.
* Fix showing box lines in onebyte codepages.
* Fix segfault with:
* mc -C 'menu=blue,white:'
* Fix reading of color backgrounds from old-style color definition strings.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
* Fixed typos.
* Added ACS_PLUS char and related stuff.
* Changed order of colors.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* Fixed pseudo-graphics drawing for S-Lang library and 8-bit locale.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* Increase number of reading butes by one for better analyzation of compression type.
* Add recognize lzma archive by extention.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Since ~beginning of August mc does not enter .tar.xz archives,
it just prints the error message:
"Hmm,... aaa.tar.xz doesn't look like a tar archive."
The version of Jul 28 works with .tar.xz archives.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
fix: segfault mcviev in case when the source_codepage is not equal to the display_codepage.
refactoring: some code optimization.
Signed-off-by: Ilia Maslakov <il.smind@google.com>
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
First step: refactoring of WButton widget API.
(button_len): renamed to button_get_len and made global.
(button_get_text): const argument.
Removed trailing spaces.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Fixed event boundaries: menu frame is in event aria now.
Middle click is used to execute selected menu item independently
of mouse cursor position.
Minor optimization.
Indentation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
If listing panels is operated with the mouse wheel, when window is
at top or bottom of the list, then selection "jumps" to first/last item.
Now it smoother: keep window and decrease/increase selection in
single steps.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Renamed function. Move rd_widgets from file scope to function one.
Fixed i18n stuff.
Updated RU translation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Signed-off-by: Ilia Maslakov <il.smind@google.com>
Some fixies after patch of Ilia Maslakov.
* Fixed pathes to rules-highlight files.
* Added on-fly refresh of rules after editing.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Added support of filenames highlighting in panels.
Now rules of highlighting described into external file filehighlight.ini
Number of highlight rules is unlimited (in opposite to X-Stranger patch).
Highlight will made by:
* file type (directory, regular, symlink, special device etc.)
* extensions of filenames (ends of filenames)
* regular expressions
Big thanks to X-Stranger <x@linux.by> for idea
and to Alexey Kaminsky <alexeykaminsky@gmail.com> for testing.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Comment by dmartina:
Please, take care not to move those comments labelled "TRANSLATORS" in order to let them show up in *.po files.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
We really not need for all libpopt features.
As fact, simple POSIX getopt() is enough.
But if we have glib - we must use glib for unification.
Created two files: src/args.c and src/args.h
Parce of command line options now processed in these files.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
...or not-so-large but nevertheless
contain more than one function call,
or contain loops, or contain if's and at least one
function call, or contain largish objects on stack.
In my experience, in those cases the code size
growth is big enough to not inline stuff.
I guess some of the really big functions
are defined inline because they have, or had in the past,
just one callsite.
But for a few years gcc already does it automatically,
no need to do it by hand and risk code size explosion
when later during code evolution another callsite
is created. This optimization by hand is simply
no longer needed.
Anyway, here is the code size difference:
text data bss dec hex filename
572337 17944 177820 768101 bb865 mc.t5/.obj/src/mc
567697 17944 177820 763461 ba645 mc.t6/.obj/src/mc
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Signed-off-by: Sergei Trofimovich <slyfox@inbox.ru>
There a lot of time required to move to the end of large
binary file. Now such movement can be interrupted by
Ctrl-C key.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
from
int mcview_get_byte (mcview_t *, off_t)
into
gboolean mcview_get_byte (mcview_t, off_t, int *)
Now splitted return code(success/fail) and readed value from datasource value.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Fixed Case-isentetive search with [ranges].
Reason of bug:
content_pattern was initialized via str_create_search_needle() function (from src/strutils.c)
This function convert string to lowercase if case_sentitive is off. Therefore string
'some_string[^a-zA-Z]' was transform into 'some_string[^a-za-z]'
Fix issue:
replace call of str_create_search_needle() function to g_strdup()
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
src/tty/key.c (get_modifier): comparison between pointer and integer
src/tty/win.c: missed #include <stdlib.h>
src/dialog.c (add_widget): control reaches end of non-void function
src/widget.c: missed #include "layout.h"
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Fixed Help window to be resizable.
Fixed draw of Help button bar.
Moved WButtonBar widget from dialog.c to dialog.h.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
thanx Daniel Borca <dborca@yahoo.com> for the patch
* fix special_chars in regex.c
* add whole_words into mc_search_struct
* add 'Whole words' into 'Search', 'Replace' 'File find' dialogs
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
The pipe character | is interpreted as branch.
Fix issue: character '|' now escaped for furter regexp search.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Now Gray-* shortcut inverts selection of directories as well as files.
This is very confusing feature especially when user is going to delete
files.
Added new variable 'reverse_files_only' allows use the old behavior
of reverse selection.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
If you run without mouse support (mc -d), mc doesn't detect resizes.
You need to press a key for mc to resize itself to new window after
window is maximized or resized (press up/down arrow, Ctrl-O, almost
anything will work).
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Fixed missed includes.
Fised widget_set_size() declaration.
Moved default widget callback (default_proc()) from dialog.[ch] to widget.[ch].
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
* add: switching between old (default) 1024 based "binary" prefixes
and SI (1000 based) size prefixes when displaying file sizes
Signed-off-by: Ilia Maslakov <il.smind@gmail.com>
Size in SI units: changed option name and description.
* Changed option name in 'Configuration options' dialog.
* Moved description to proper section in man page.
* Added russian translation.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
When viewing two file lists, if user presses C-x i for info on
a panel's directory or file, the info pops up correctly in the
other panel. However, when the user closes the info screen, the
directory of the current panel is shown -- NOT the directory
which was being viewed before the info panel appeared.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
TestCase:
* Have a mc running where you have two different directories in each panel.
* Tab, so that you are in the other panel.
* Ctrl-O to go to subshell.
* You see two different prompts printed next to each other.
Fix issue:
In function src/main.c:do_update_prompt(): added '\r\n' before show prompt.
Signed-off-by: Slava Zanko <slavazanko@gmail.com>
Since midnight_dlg can be invisible during screen resize,
don't update the hintbar in SIGWING signal handling function.
Now the hintbar is updated during DLG_DRAW message handling
in mignight_dlg callback.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Code clean up.
Modification of tty_refresh for NCurses: call doupdate() after refresh()
every time.
tty_draw_box_slow() is not private function of TTY now.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
Set color mode via tty_init_colors() function.
Made disable_colors and force_colors variables static in main.h.
Removed tty_disable_colors() function.
Some code optimization.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
getch have been renamed to tty_lowlevel_getch.
mi_getch have been renamed to tty_getch.
get_event have been renamed to tty_get_event.
Signed-off-by: Andrew Borodin <aborodin@vmail.ru>
src/main.c (repaint_screen): call tty_touch_screen() here.
src/execute.c (toggle_panels): fixed comment.
Call repaint_screen() instead of do_refresh().
src/cmd.c (do_view_cmd): small optimization.
(do_edit_at_line): likewise.
(swap_cmd): since tty_touch_screen() is called in repaint_screen()
now, don't call it here.