summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md261
-rw-r--r--README.md8
2 files changed, 267 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 00000000..cd7bd32f
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,261 @@
+This log documents changes between stable versions.
+
+# 2015-05-04: version 1.7.1
+* Added `doc/cheatsheet.svg`
+* Added `examples/rc_emacs.conf`, a config file adding emacs-like key bindings
+* Added `env` keyword in rifle.conf
+* Fixed `:bulkrename` command in python3
+* Fixed `S` key binding not working when SHELL=fish
+
+# 2015-04-13: version 1.7.0
+* The default editor is now `vim` instead of `nano`
+* Added automatic updates of tags when a file is renamed from within ranger
+* Added `preview_images_method` which can be set to `iterm2` to use native
+  iTerm2 image previews
+* Added `:rename_append` command to rename files without the file extension
+* Added `:linemode` command to change the way the files are displayed
+  Try this out by pressing M followed by one of the suggested keys.
+  New linemodes can be added with `ranger.api.register_linemode()`.
+* Added `:filter_inode_type` command to only show directories, files or links
+* Added `:meta` command for managing custom file metadata
+* Added `:flat` command for displaying subdirectories
+* Added `solarized` colorscheme
+* Added generic ability to use scope.sh for image previews
+* Added video previews in scope.sh
+* Added option `sort_unicode` to sort according to unicode, not ASCII
+* `:mkdir` can now create multiple directory levels (like `mkdir -p`)
+* `:help` (key binding `?`) is now interactive
+* `:find` (key binding `/`) is now case insensitive by default
+* `ranger --copy-config=all` now copies a short sample commands.py rather than
+  the full one, so that you can update ranger without having broken commands.
+  The full commands.py is still copied to `~/.config/ranger/commands_full.py`.
+* Fixed broken copying of symlinks
+
+# 2013-05-24: Version 1.6.1
+* Added support for version control systems, see:
+  http://lists.nongnu.org/archive/html/ranger-users/2013-03/msg00007.html
+* Added :scout command as a unified backend to :find, :search, etc
+* Added `open_all_images` setting to remove the need for external scripts
+  to handle opening of all images in a directory at once.
+* Now previewing with `i` uses the whole available width.
+
+# 2013-02-22: Version 1.6.0
+* Overhauled all config files.  Please update them or use the --clean switch
+* Added `examples/` directory to source code which contains sample programs or
+  plugins that can be used together with ranger
+* Added progress bars to copying, moving and directory loading processes
+* Added feature to draw images inside the console using w3mimgdisplay (you need
+  to add `set preview_images true` in rc.conf)
+* Added a plugin system like in the program `anki`, i.e. place any python file
+  into ~/.config/ranger/plugins/ and it will be imported by ranger
+* Added a separate file launcher named `rifle` that is configured through
+  rifle.conf and is installed as a standalone program.
+  Using `ranger [filename]` from the shell for opening files is deprecated now,
+  please use `rifle [filename]` instead.
+* Added `uq` keybinding to undo closed tabs
+* Added :setlocal command to change settings for specific directories only
+* Added :travel command to move more quickly to your destination
+* Added 256 color support for scope.sh
+* Added a real yes/no prompt for :delete command
+* Added settings: `confirm_on_delete`, `draw_progress_bar_in_status_bar`,
+  `preview_images`, `status_bar_on_top`, `update_tmux_title`
+* Added commands: `:mark_tag`, `:unmark_tag`
+* Added BSD-friendly setsid implementation
+* Added as-you-type filtering for `:filter` command
+* Replaced `options.py` file by :set commands in rc.conf
+* Replaced `apps.py` file with rifle.conf
+* Improved `r` key to interface with rifle
+* Rewritten `scope.sh` in POSIX shell
+* Changed copying/moving code to work without GNU coreutils
+* Changed key to untag files from `T` to `ut`
+* Changed the flag `d` (for detached) to `f` (for fork) in program launcher
+* Changed appearance of keybinding-hints and bookmarks
+* Changed tabs with 4 spaces in the source code (see PEP 8)
+* Removed ranger.core.environment class
+* Removed settings: `colorscheme_overlay`, `draw_bookmark_borders`,
+  `init_function`, `load_default_rc`
+* Fixed zombie process apocalypse
+* Fixed `draw_borders=true` in combination with `padding_right=false`
+
+# 2012-08-10: Version 1.5.5
+* Ensure that detached programs continue to run when ranger is killed
+
+# 2012-05-03: Version 1.5.4
+* Added exiftool to scope.sh by default
+* Fixed a crash when entering a directory with a unicode name
+* Speedup in `ranger.ext.get_executables`
+
+# 2012-03-05: Version 1.5.3
+* Added --selectfile option that selects a certain file on startup
+* Added --list-tagged-files option
+* Added --cmd option to run commands on startup
+* Added --profile option for additional debug information on exit
+* Added a visual mode (activate with `V`, deactivate with Esc)
+* Added a reversed visual mode (activate with `uV`)
+* Added `$RANGER_LEVEL` environment variable which ranger sets to `1` or higher
+  so programs can know that they were spawned from ranger
+* Added run flag `r` for running with root privileges (needs sudo)
+* Added run flag `t` for running in a new terminal (as specified in $TERMCMD)
+* Added :relink command to change destinations of symlinks
+* Added `dc` binding for getting the cumulative size of a directory
+* Added `autoupdate_cumulative_size` option
+* Added `pht` binding to Paste Hardlinked subTrees (like cp -l)
+* Improved sorting speed of signals (noticable when caching many directories)
+* Improved drawing speed
+* Fixed unexpected behavior when displaying nonprintable characters
+* Fixed :bulkrename to work with files starting with a minus sign
+* Fixed RangerChooser example in man page
+* Fixed crash when opening images with sxiv/feh by running `ranger <image>`
+
+# 2011-10-23: Version 1.5.2
+* Fixed graphical bug that appears in certian cases when drawing
+  characters at the right edge.
+
+# 2011-10-23: Version 1.5.1
+* Added `fm.select_file(path)`
+* Added --choosefiles option (like --choosefile, but chooses multiple files)
+* Fixed --list-unused-keys
+* Fixed Zombie processes
+* Fixed handling of filenames with undecodable bytes (unicode surrogates)
+* Fixed crashes due to incomplete loading of directories
+* Fixed tab completion of the command `shell`
+* Fixed `ot` and `oT` keys in rc.conf
+* Fixed parsing of chained commands (like in the binding `om`)
+
+# 2011-10-11: Version 1.5.0
+* Full python3.2 compatibility
+* Added new configuration file `rc.conf` which contains a list
+  of commands that are executed on startup - mainly used for keybindings
+* Added --list-unused-keys
+* Added new program handlers to apps.py
+* Added pop-up window for keychains and bookmarks
+* Added `load_default_rc` option
+* Fixed all known unicode issues
+* Fixed crash when $TERM is unknown to the system
+* Fixed scrolling in colored preview
+* Changed the default `column_ratios` to 1/3/4 and sorting method to `natural`
+* Changed :rename so it doesn't overwrite existing files
+* Internal actions are now accessible as commands
+* Replaced unittests by doctests
+* Replaced integrated help with an extended man page and dynamic lists
+  of keybindings, commands and settings.
+* Removed `keys.py` configuration file in favor of `rc.conf`
+* Removed `texas` colorscheme
+* apps.py: Now able to define programs that only run with Xorg
+* commands.py: Using parse(self.line) to parse the line is unnecessary now.
+  parse(self.line).rest(n) is now written as self.rest(n).
+  However, parse(self.line).chunk(n) has been renamed to self.arg(n).
+* commands.py: parse(self.line) + X is now self.firstpart + X
+* commands.py: New special attribute `resolve_macros` which decides whether
+  strings like %f should be expanded to the name of the current file, etc.
+* commands.py: New special attribute `escape_macros_for_shell` to toggle
+  whether or not macros should be escaped, so you can use them in other
+  commands than :shell, for example :edit %f
+* Countless small fixes and improvements
+
+# 2011-10-02: Version 1.4.4
+* Added keys for chmod (like +ow for `chmod o+w`, etc)
+* Added `c` flag for running files
+* Added various key bindings
+* Added wavpack and webm types to mime.types
+* Added option `display_tags_in_all_columns`
+* Added command.cancel method which is called when pressing ESC in console
+* Added sorting and cycling by ctime and atime
+* Added custom tags (press "x)
+* Added bittorrent preview
+* Fixed blocking when using interactive scripts in scope.sh
+* Fixed issues with ALT key
+* Fixed pager crash when trying to read non-readable file
+* Forbid piping things into ranger
+* Improved hints
+
+# 2011-04-05: Version 1.4.3
+* Fixed mimetype checking when invoking ranger with a filename
+* Fixed loss of bookmarks when disk is full
+* Minor improvements
+
+# 2011-03-05: Version 1.4.2
+* Added --choosefile and --choosedir flag
+* Added use of bookmarks in tab completion of the :cd command
+* Fixed bug with detached programs and python 3.2
+
+# 2011-01-04: Version 1.4.1
+* Fixed crash when preview failed under some circumstances
+* Fixed graphical bug when pressing i
+
+# 2010-12-22: Version 1.4.0
+* Added option to use any external scripts for previews (see scope.sh)
+* Added key: zv to toggle the use of the external script
+* Added indicator for the used filter (type `zf`)
+* Added option `padding_right` to remove whitespace if theres no preview
+* Added command `:search_inc` for incremental search
+* Added commands `:save_copy_buffer` and `:load_copy_buffer` to share
+  the copied files between ranger instances
+* Added mimeopen as a fallback if no useful application can be found
+* Added natural sort, sorts 1foo before 10foo. (type `on`)
+* Added keys: yp, yd and yb to copy path, dirname or basename to seleciton
+* Let `open_with` use the selection, not just one file
+* Run files with right mouse click
+* Implemented copying via coreutils rather than internal python code
+* Improved handling of unicode
+* Some restructuration of the source code
+
+# 2010-12-13: Version 1.2.3
+* Enable binding to alt-keys
+* Fixed memory leak in garbage collecting of old, unused directory objects
+* Fixed python3 incompatibilities
+* Fixed problems with identifying changes of files
+* Fixed lazy lookup of some FSObject attributes
+
+# 2010-10-10: Version 1.2.2
+* Prevent currently used directories from being garbage collected
+* Disable mouse buttons when console is open
+* Fixed :cd command: Without arguments, cd's into $HOME
+* Fixed bug which prevented pydoc to work on some config files
+* Fixed some bugs in `snow` and `jungle` colorschemes
+* Several other clean-ups and fixes
+
+# 2010-09-16: Version 1.2.1
+* Fixed yy/pp bug when yanking multiple directories
+
+# 2010-09-13: Version 1.2.0
+* !!! Changed the default configuration directory to ~/.config/ranger !!!
+* Removed `Console Modes`, each old mode is now a simple command
+* Disabled file previews by default if ranger is used by root
+* Allow to jump to specific help sections by typing two numbers, e.g. 13?
+* Added keys: da, dr, ya, yr for adding and removing files from copy buffer
+* Added keys: gl and gL to resolve links, see 11?
+* Added key: pL to create a relative symlink
+* Added %<LETTER> and %<N><LETTER> macros for the console, see 33?
+* Fixed ansi codes for colors in the pager
+* Use the file ~/.mime.types for mime type detection
+* Several clean-ups and fixes
+
+# 2010-07-17: Version 1.1.2
+* Fix crash when using scrollwheel to scroll down in some cases
+* The command `ranger dir1 dir2 ...` opens multiple directories in tabs
+* Removed pydoc html documentation by default, re-create it with `make doc`
+* Minor fixes
+
+# 2010-06-18: Version 1.1.1
+* New install script, `setup.py`
+* New flag for running programs: `w` (waits for enter press)
+* Minor fixes
+
+# 2010-06-09: Version 1.1.0
+* Added a man page
+* Tab support
+* Improved directory loading performance
+* Commands are definable in ~/.ranger/commands.py
+* Case insensitive sorting (type zs)
+* Better UTF support
+* Possibility to turn off previews (zp and zP)
+* Changing options with :set (e.g. `:set column_ratios=1,2,3,4`)
+* Ask for confirmation when using :delete
+* New invocation flag: --fail-unless-cd
+* New hotkeys, commands, options.
+* New syntax for ~/.ranger/keys.py
+* Several user contributions
+* And tons of general improvements
+
+NOTE: The syntax for configuration is still subject to change.
diff --git a/README.md b/README.md
index 75ef2ea0..2ee3bcd6 100644
--- a/README.md
+++ b/README.md
@@ -57,12 +57,14 @@ Dependencies
 * A pager ("less" by default)
 
 Optional:
+
 * The "file" program for determining file types
 * The python module "chardet", in case of encoding detection problems
 * "sudo" to use the "run as root"-feature
 * w3m for the "w3mimgdisplay" program to preview images
 
 Optional, for enhanced file previews (with "scope.sh"):
+
 * img2txt (from caca-utils) for ASCII-art image previews
 * highlight for syntax highlighting of code
 * atool for previews of archives
@@ -78,10 +80,12 @@ Use the package manager of your operating system to install ranger.
 Note that ranger can be started without installing by simply running ranger.py.
 
 To install ranger manually:
-> sudo make install
+
+    sudo make install
 
 This translates roughly to:
-> sudo python setup.py install --optimize=1 --record=install_log.txt
+
+    sudo python setup.py install --optimize=1 --record=install_log.txt
 
 This also saves a list of all installed files to install_log.txt, which you can
 use to uninstall ranger.
sh *(ebp+8) # . . call e8/call write-byte-buffered/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # AL = convert lower nibble to hex 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax 25/and-eax 0xf/imm32 # . AL = to-hex-char(AL) e8/call to-hex-char/disp32 # write-byte-buffered(f, AL) # . . push args 50/push-eax ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) # . . call e8/call write-byte-buffered/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp $print-byte-buffered:end: # . restore registers 58/pop-to-eax # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-print-byte-buffered: # - check that print-byte-buffered prints the hex textual representation # setup # . clear-stream(_test-stream) # . . push args 68/push _test-stream/imm32 # . . call e8/call clear-stream/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . clear-stream($_test-buffered-file->buffer) # . . push args 68/push $_test-buffered-file->buffer/imm32 # . . call e8/call clear-stream/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # print-byte-buffered(_test-buffered-file, 0xa) # exercises digit, non-digit as well as leading zero # . . push args 68/push 0xa/imm32 68/push _test-buffered-file/imm32 # . . call e8/call print-byte-buffered/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # flush(_test-buffered-file) # . . push args 68/push _test-buffered-file/imm32 # . . call e8/call flush/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # check-stream-equal(_test-stream, "0a", msg) # . . push args 68/push "F - test-print-byte-buffered"/imm32 68/push "0a"/imm32 68/push _test-stream/imm32 # . . call e8/call check-stream-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # . end c3/return print-int32: # f: (addr stream byte), n: int # pseudocode: # write(f, "0x") # ecx = 28 # while true # if (ecx < 0) break # eax = n >> ecx # eax = eax & 0xf # append-byte(f, AL) # ecx -= 4 # # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers 50/push-eax 51/push-ecx # ecx = 28 b9/copy-to-ecx 0x1c/imm32 $print-int32:print-hex-prefix: # write(f, "0x") # . . push args 68/push "0x"/imm32 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) # . . call e8/call write/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp $print-int32:loop: # if (ecx < 0) break 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0/imm32 # compare ecx 7c/jump-if-< $print-int32:end/disp8 # eax = n >> ecx 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax d3/>>ecx 5/subop/pad-zeroes 3/mod/direct 0/rm32/eax . . . . . . # shift eax right by ecx bits, padding zeroes # eax = to-hex-char(AL) 25/and-eax 0xf/imm32 e8/call to-hex-char/disp32 # append-byte(f, AL) # . . push args 50/push-eax ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) # . . call e8/call append-byte/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # ecx -= 4 81 5/subop/subtract 3/mod/direct 1/rm32/ecx . . . . . 4/imm32 # subtract from ecx eb/jump $print-int32:loop/disp8 $print-int32:end: # . restore registers 59/pop-to-ecx 58/pop-to-eax # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-print-int32: # - check that print-int32 prints the hex textual representation # setup # . clear-stream(_test-stream) # . . push args 68/push _test-stream/imm32 # . . call e8/call clear-stream/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # print-int32(_test-stream, 0x8899aa) # . . push args 68/push 0x8899aa/imm32 68/push _test-stream/imm32 # . . call e8/call print-int32/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # check-stream-equal(_test-stream, "0x008899aa", msg) # . . push args 68/push "F - test-print-int32"/imm32 68/push "0x008899aa"/imm32 68/push _test-stream/imm32 # . . call e8/call check-stream-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # . end c3/return print-int32-buffered: # f: (addr buffered-file), n: int # pseudocode: # write-buffered(f, "0x") # ecx = 28 # while true # if (ecx < 0) break # eax = n >> ecx # eax = eax & 0xf # write-byte-buffered(f, AL) # ecx -= 4 # # . prologue 55/push-ebp 89/copy 3/mod/direct 5/rm32/ebp . . . 4/r32/esp . . # copy esp to ebp # . save registers 50/push-eax 51/push-ecx # ecx = 28 b9/copy-to-ecx 0x1c/imm32 $print-int32-buffered:print-hex-prefix: # write-buffered(f, "0x") # . . push args 68/push "0x"/imm32 ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) # . . call e8/call write-buffered/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp $print-int32-buffered:loop: # if (ecx < 0) break 81 7/subop/compare 3/mod/direct 1/rm32/ecx . . . . . 0/imm32 # compare ecx 7c/jump-if-< $print-int32-buffered:end/disp8 # eax = n >> ecx 8b/copy 1/mod/*+disp8 5/rm32/ebp . . . 0/r32/eax 0xc/disp8 . # copy *(ebp+12) to eax d3/>>ecx 5/subop/pad-zeroes 3/mod/direct 0/rm32/eax . . . . . . # shift eax right by ecx bits, padding zeroes # eax = to-hex-char(AL) 25/and-eax 0xf/imm32 e8/call to-hex-char/disp32 # write-byte-buffered(f, AL) # . . push args 50/push-eax ff 6/subop/push 1/mod/*+disp8 5/rm32/ebp . . . . 8/disp8 . # push *(ebp+8) # . . call e8/call write-byte-buffered/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # ecx -= 4 81 5/subop/subtract 3/mod/direct 1/rm32/ecx . . . . . 4/imm32 # subtract from ecx eb/jump $print-int32-buffered:loop/disp8 $print-int32-buffered:end: # . restore registers 59/pop-to-ecx 58/pop-to-eax # . epilogue 89/copy 3/mod/direct 4/rm32/esp . . . 5/r32/ebp . . # copy ebp to esp 5d/pop-to-ebp c3/return test-print-int32-buffered: # - check that print-int32-buffered prints the hex textual representation # setup # . clear-stream(_test-stream) # . . push args 68/push _test-stream/imm32 # . . call e8/call clear-stream/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # . clear-stream($_test-buffered-file->buffer) # . . push args 68/push $_test-buffered-file->buffer/imm32 # . . call e8/call clear-stream/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp # print-int32-buffered(_test-buffered-file, 0x8899aa) # . . push args 68/push 0x8899aa/imm32 68/push _test-buffered-file/imm32 # . . call e8/call print-int32-buffered/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp # flush(_test-buffered-file) # . . push args 68/push _test-buffered-file/imm32 # . . call e8/call flush/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 4/imm32 # add to esp #? # dump line {{{ #? # . write-stream(2/stderr, line) #? # . . push args #? 68/push _test-stream/imm32 #? 68/push 2/imm32/stderr #? # . . call #? e8/call write-stream/disp32 #? # . . discard args #? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp #? # . write(2/stderr, "$\n") #? # . . push args #? 68/push "$\n"/imm32 #? 68/push 2/imm32/stderr #? # . . call #? e8/call write/disp32 #? # . . discard args #? 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 8/imm32 # add to esp #? # }}} # check-stream-equal(_test-stream, "0x008899aa", msg) # . . push args 68/push "F - test-print-int32-buffered"/imm32 68/push "0x008899aa"/imm32 68/push _test-stream/imm32 # . . call e8/call check-stream-equal/disp32 # . . discard args 81 0/subop/add 3/mod/direct 4/rm32/esp . . . . . 0xc/imm32 # add to esp # . end c3/return # . . vim:nowrap:textwidth=0