This log documents changes between stable versions. 2015-10-04: version 1.7.2 * Fixed file name arguments passed to "sxiv" and "feh" when using ":flat" * Fixed removal of empty directories when using ":rename" * Fixed free disk space display on Mac OS X * Fixed `examples/vim_file_chooser` to work with gvim too * Fixed some other rare crashes and bugs * Fixed downward mouse wheel scrolling * Fixed warning about regex splits being drawin in title bar since python3.5 * Really fixed "S" key binding not working when SHELL=fish * Improved doc/cheatsheet.svg * Added some entries to rifle.conf * Added key bindings pO and pP which work like po and pp but queue the operation in a first-in-first-out order. 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-
# check keyboard for a key
# return 0 on no keypress or unrecognized key
#
# We need to do this in machine code because Mu doesn't have global variables
# yet (for the keyboard buffer).
== code
# Most keys correspond to their ASCII/Unicode values.
# TODO: Support for international keyboards and multi-byte Unicode.
#
# However there are some exceptions that have no assigned place in Unicode
# (and with good reason):
# 0x80 = left arrow ←
# 0x81 = down arrow ↓
# 0x82 = up arrow ↑
# 0x83 = right arrow →
# These code points are not used by Unicode and their semantics are agreed to
# be context-sensitive: https://en.wikipedia.org/wiki/C0_and_C1_control_codes#C1_controls.
# Mu cannibalizes them in yet another non-standard way.
read-key: # kbd: (addr keyboard) -> result/eax: byte
# . prologue
55/push-ebp
89/<- %ebp 4/r32/esp
# . save registers
51/push-ecx
# result = 0
b8/copy-to-eax 0/imm32
# ecx = keyboard
8b/-> *(ebp+8) 1/r32/ecx
81 7/subop/compare %ecx 0/imm32
{
75/jump-if-!= break/disp8
# var buffer-byte-addr/ecx: (addr byte)
8b/-> *Keyboard-buffer:read 1/r32/CL
81 0/subop/add %ecx Keyboard-buffer:data/imm32
# var next-key/eax: byte = *buffer-byte-addr
8a/byte-> *ecx 0/r32/AL
# if (next-key != 0) lock and remove from keyboard buffer
3d/compare-eax-with 0/imm32
{
74/jump-if-= break/disp8
fa/disable-interrupts
c6 0/subop/copy-byte *ecx 0/imm8
ff 0/subop/increment *Keyboard-buffer:read
81 4/subop/and *Keyboard-buffer:read 0x0f/imm32
fb/enable-interrupts
}
# return
eb $read-key:end/disp8
}
# TODO: fake keyboard
$read-key:end:
# . restore registers
59/pop-to-ecx
# . epilogue
89/<- %esp 5/r32/ebp
5d/pop-to-ebp
c3/return