diff options
-rw-r--r-- | doc/ranger.1 | 19 | ||||
-rw-r--r-- | doc/ranger.pod | 19 | ||||
-rw-r--r-- | ranger/config/rc.conf | 3 | ||||
-rw-r--r-- | ranger/container/directory.py | 19 | ||||
-rw-r--r-- | ranger/container/settings.py | 1 | ||||
-rw-r--r-- | ranger/core/actions.py | 2 |
6 files changed, 58 insertions, 5 deletions
diff --git a/doc/ranger.1 b/doc/ranger.1 index 59bf529c..42b32f70 100644 --- a/doc/ranger.1 +++ b/doc/ranger.1 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "RANGER 1" -.TH RANGER 1 "ranger-1.6.1" "02/06/2015" "ranger manual" +.TH RANGER 1 "ranger-1.6.1" "03/03/2015" "ranger manual" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -188,11 +188,18 @@ Change the configuration directory of ranger from ~/.config/ranger to \*(L"dir\* .IX Item "--copy-config=file" Create copies of the default configuration files in your local configuration directory. Existing ones will not be overwritten. Possible values: \fIall\fR, -\&\fIcommands\fR, \fIrc\fR, \fIrifle\fR, \fIscope\fR. +\&\fIcommands\fR, \fIcommands_full\fR, \fIrc\fR, \fIrifle\fR, \fIscope\fR. .Sp Note: You may want to disable loading of the global configuration files by exporting \fIRANGER_LOAD_DEFAULT_RC=FALSE\fR in your environment. See also: \&\fB\s-1FILES\s0\fR, \fB\s-1ENVIRONMENT\s0\fR +.Sp +\&\-\-copy\-config=\fBcommands\fR will copy only a small sample configuration file with +a thoroughly commented example. It is recommended to keep this file tidy to +avoid getting defunct commands on ranger upgrades. The full default +commands.py can be copied with \-\-copy\-config=\fBcommands_full\fR, but that file +will be ignored by ranger and serves only as a reference for making your own +commands. .IP "\fB\-\-choosefile\fR=\fItargetfile\fR" 14 .IX Item "--choosefile=targetfile" Allows you to pick a file with ranger. This changes the behavior so that when @@ -751,6 +758,10 @@ Sort directories first? .IP "sort_reverse [bool] <or>" 4 .IX Item "sort_reverse [bool] <or>" Reverse the order of files? +.IP "sort_unicode [bool]" 4 +.IX Item "sort_unicode [bool]" +When sorting according to some string, should the unicode characters be +compared, instead of looking at the raw character values to save time? .IP "sort [string] <oa>, <ob>, <oc>, <oe>, <om>, <on>, <ot>, <os>, <oz>" 4 .IX Item "sort [string] <oa>, <ob>, <oc>, <oe>, <om>, <on>, <ot>, <os>, <oz>" Which sorting mechanism should be used? Choose one of \fBatime\fR, \fBbasename\fR, @@ -1193,6 +1204,10 @@ and settings are defined here. .IX Item "commands.py" A python module that defines commands which can be used in ranger's console by typing \*(L":\*(R" or in the rc.conf file. +.IP "commands_full.py" 10 +.IX Item "commands_full.py" +This file is copied by \-\-copy\-config=commands_full and serves as a reference +for custom commands. It is entirely ignored by ranger. .IP "rifle.conf" 10 .IX Item "rifle.conf" This is the configuration file for the built-in file launcher called \*(L"rifle\*(R". diff --git a/doc/ranger.pod b/doc/ranger.pod index 177cd0f5..75da97b9 100644 --- a/doc/ranger.pod +++ b/doc/ranger.pod @@ -70,12 +70,19 @@ Change the configuration directory of ranger from ~/.config/ranger to "dir". Create copies of the default configuration files in your local configuration directory. Existing ones will not be overwritten. Possible values: I<all>, -I<commands>, I<rc>, I<rifle>, I<scope>. +I<commands>, I<commands_full>, I<rc>, I<rifle>, I<scope>. Note: You may want to disable loading of the global configuration files by exporting I<RANGER_LOAD_DEFAULT_RC=FALSE> in your environment. See also: B<FILES>, B<ENVIRONMENT> +--copy-config=B<commands> will copy only a small sample configuration file with +a thoroughly commented example. It is recommended to keep this file tidy to +avoid getting defunct commands on ranger upgrades. The full default +commands.py can be copied with --copy-config=B<commands_full>, but that file +will be ignored by ranger and serves only as a reference for making your own +commands. + =item B<--choosefile>=I<targetfile> Allows you to pick a file with ranger. This changes the behavior so that when @@ -758,6 +765,11 @@ Sort directories first? Reverse the order of files? +=item sort_unicode [bool] + +When sorting according to some string, should the unicode characters be +compared, instead of looking at the raw character values to save time? + =item sort [string] <oa>, <ob>, <oc>, <oe>, <om>, <on>, <ot>, <os>, <oz> Which sorting mechanism should be used? Choose one of B<atime>, B<basename>, @@ -1266,6 +1278,11 @@ and settings are defined here. A python module that defines commands which can be used in ranger's console by typing ":" or in the rc.conf file. +=item commands_full.py + +This file is copied by --copy-config=commands_full and serves as a reference +for custom commands. It is entirely ignored by ranger. + =item rifle.conf This is the configuration file for the built-in file launcher called "rifle". diff --git a/ranger/config/rc.conf b/ranger/config/rc.conf index 59237a59..0d8edaf8 100644 --- a/ranger/config/rc.conf +++ b/ranger/config/rc.conf @@ -29,7 +29,7 @@ set hidden_filter ^\.|\.(?:pyc|pyo|bak|swp)$|^lost\+found$|^__(py)?cache__$ set show_hidden false # Ask for a confirmation when running the "delete" command? -# Valid values are "always" (default), "never", "multiple" +# Valid values are "always", "never", "multiple" (default) # With "multiple", ranger will ask only if you delete multiple files at once. set confirm_on_delete multiple @@ -154,6 +154,7 @@ set sort natural set sort_reverse false set sort_case_insensitive true set sort_directories_first true +set sort_unicode false # Enable this if key combinations with the Alt Key don't work for you. # (Especially on xterm) diff --git a/ranger/container/directory.py b/ranger/container/directory.py index f78b3d97..256dd729 100644 --- a/ranger/container/directory.py +++ b/ranger/container/directory.py @@ -1,6 +1,7 @@ # Copyright (C) 2009-2013 Roman Zimbelmann <hut@hut.pm> # This software is distributed under the terms of the GNU GPL version 3. +import locale import os.path import random import re @@ -36,6 +37,17 @@ def sort_naturally(path): def sort_naturally_icase(path): return path.basename_natural_lower +def sort_unicode_wrapper_string(old_sort_func): + def sort_unicode(path): + return locale.strxfrm(old_sort_func(path)) + return sort_unicode + +def sort_unicode_wrapper_list(old_sort_func): + def sort_unicode(path): + return [locale.strxfrm(str(c)) for c in old_sort_func(path)] + return sort_unicode + + def accept_file(file, filters): """ Returns True if file shall be shown, otherwise False. @@ -414,6 +426,13 @@ class Directory(FileSystemObject, Accumulator, Loadable): sort_func == sort_naturally: sort_func = sort_naturally_icase + # XXX Does not work with usermade sorting functions :S + if self.settings.sort_unicode: + if sort_func in (sort_naturally, sort_naturally_icase): + sort_func = sort_unicode_wrapper_list(sort_func) + elif sort_func in (sort_by_basename, sort_by_basename_icase): + sort_func = sort_unicode_wrapper_string(sort_func) + self.files_all.sort(key = sort_func) if self.settings.sort_reverse: diff --git a/ranger/container/settings.py b/ranger/container/settings.py index 55585029..ddcc7d14 100644 --- a/ranger/container/settings.py +++ b/ranger/container/settings.py @@ -47,6 +47,7 @@ ALLOWED_SETTINGS = { 'sort_case_insensitive': bool, 'sort_directories_first': bool, 'sort_reverse': bool, + 'sort_unicode': bool, 'sort': str, 'status_bar_on_top': bool, 'tilde_in_titlebar': bool, diff --git a/ranger/core/actions.py b/ranger/core/actions.py index 08e0420b..be7c7a00 100644 --- a/ranger/core/actions.py +++ b/ranger/core/actions.py @@ -1290,7 +1290,7 @@ class Actions(FileManagerAware, EnvironmentAware, SettingsAware): def mkdir(self, name): try: - os.mkdir(os.path.join(self.thisdir.path, name)) + os.mkdirs(os.path.join(self.thisdir.path, name)) except OSError as err: self.notify(err) |