diff options
author | hut <hut@hut.pm> | 2017-10-01 12:24:18 +0200 |
---|---|---|
committer | hut <hut@hut.pm> | 2017-10-01 12:24:18 +0200 |
commit | 0ea94c81a2dff42c28e2655e5ba7987dc78f55be (patch) | |
tree | ab3c27e9cf12467fb35ca3069019bdf875d8a658 | |
parent | fec819a1a7b33811148750760879b5ee3ab0a0e0 (diff) | |
download | ranger-0ea94c81a2dff42c28e2655e5ba7987dc78f55be.tar.gz |
Add option 'save_backtick_bookmark', fixes #947
-rw-r--r-- | doc/ranger.1 | 6 | ||||
-rw-r--r-- | doc/ranger.pod | 5 | ||||
-rw-r--r-- | doc/rifle.1 | 2 | ||||
-rw-r--r-- | ranger/config/rc.conf | 4 | ||||
-rw-r--r-- | ranger/container/bookmarks.py | 17 | ||||
-rw-r--r-- | ranger/container/settings.py | 1 | ||||
-rw-r--r-- | ranger/core/fm.py | 6 |
7 files changed, 37 insertions, 4 deletions
diff --git a/doc/ranger.1 b/doc/ranger.1 index 91f10a58..1e745fb6 100644 --- a/doc/ranger.1 +++ b/doc/ranger.1 @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "RANGER 1" -.TH RANGER 1 "ranger-1.9.0b5" "09/26/2017" "ranger manual" +.TH RANGER 1 "ranger-1.9.0b5" "10/01/2017" "ranger manual" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l @@ -839,6 +839,10 @@ to disable this feature. Which script should handle generating previews? If the file doesn't exist, or use_preview_script is off, ranger will handle previews itself by just printing the content. +.IP "save_backtick_bookmark [bool]" 4 +.IX Item "save_backtick_bookmark [bool]" +Save the \f(CW\*(C`\`\*(C'\fR bookmark to disk. This bookmark is used to switch to the last +directory by typing \f(CW\*(C`\`\`\*(C'\fR. .IP "save_console_history [bool]" 4 .IX Item "save_console_history [bool]" Should the console history be saved on exit? If disabled, the console history diff --git a/doc/ranger.pod b/doc/ranger.pod index 2ec98d2b..f7053361 100644 --- a/doc/ranger.pod +++ b/doc/ranger.pod @@ -841,6 +841,11 @@ Which script should handle generating previews? If the file doesn't exist, or use_preview_script is off, ranger will handle previews itself by just printing the content. +=item save_backtick_bookmark [bool] + +Save the C<`> bookmark to disk. This bookmark is used to switch to the last +directory by typing C<``>. + =item save_console_history [bool] Should the console history be saved on exit? If disabled, the console history diff --git a/doc/rifle.1 b/doc/rifle.1 index c9ffbf5f..4d501df0 100644 --- a/doc/rifle.1 +++ b/doc/rifle.1 @@ -129,7 +129,7 @@ .\" ======================================================================== .\" .IX Title "RIFLE 1" -.TH RIFLE 1 "rifle-1.9.0b5" "09/26/2017" "rifle manual" +.TH RIFLE 1 "rifle-1.9.0b5" "10/01/2017" "rifle manual" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff --git a/ranger/config/rc.conf b/ranger/config/rc.conf index 92428312..27c094a1 100644 --- a/ranger/config/rc.conf +++ b/ranger/config/rc.conf @@ -167,6 +167,10 @@ set padding_right true # When false, bookmarks are saved when ranger is exited. set autosave_bookmarks true +# Save the "`" bookmark to disk. This can be used to switch to the last +# directory by typing "``". +set save_backtick_bookmark true + # You can display the "real" cumulative size of directories by using the # command :get_cumulative_size or typing "dc". The size is expensive to # calculate and will not be updated automatically. You can choose diff --git a/ranger/container/bookmarks.py b/ranger/container/bookmarks.py index cba07367..e470a486 100644 --- a/ranger/container/bookmarks.py +++ b/ranger/container/bookmarks.py @@ -28,7 +28,8 @@ class Bookmarks(FileManagerAware): autosave = True load_pattern = re.compile(r"^[\d\w']:.") - def __init__(self, bookmarkfile, bookmarktype=str, autosave=False): + def __init__(self, bookmarkfile, bookmarktype=str, autosave=False, + nonpersistent_bookmarks=()): """Initializes Bookmarks. <bookmarkfile> specifies the path to the file where @@ -39,6 +40,7 @@ class Bookmarks(FileManagerAware): self.original_dict = {} self.path = bookmarkfile self.bookmarktype = bookmarktype + self.nonpersistent_bookmarks=set(nonpersistent_bookmarks) def load(self): """Load the bookmarks from path/bookmarks""" @@ -174,7 +176,8 @@ class Bookmarks(FileManagerAware): self.fm.notify('Bookmarks error: {0}'.format(str(ex)), bad=True) return for key, value in self.dct.items(): - if isinstance(key, str) and key in ALLOWED_KEYS: + if isinstance(key, str) and key in ALLOWED_KEYS \ + and key not in self.nonpersistent_bookmarks: fobj.write("{0}:{1}\n".format(str(key), str(value))) fobj.close() @@ -189,6 +192,16 @@ class Bookmarks(FileManagerAware): self._update_mtime() + def enable_saving_backtick_bookmark(self, boolean): + """ + Adds or removes the ' from the list of nonpersitent bookmarks + """ + if boolean: + if "'" in self.nonpersistent_bookmarks: + self.nonpersistent_bookmarks.remove("'") # enable + else: + self.nonpersistent_bookmarks.add("'") # disable + def _load_dict(self): if self.path is None: return {} diff --git a/ranger/container/settings.py b/ranger/container/settings.py index 08a9c10c..6ffa5e2d 100644 --- a/ranger/container/settings.py +++ b/ranger/container/settings.py @@ -60,6 +60,7 @@ ALLOWED_SETTINGS = { 'preview_images_method': str, 'preview_max_size': int, 'preview_script': (str, type(None)), + 'save_backtick_bookmark': bool, 'save_console_history': bool, 'save_tabs_on_exit': bool, 'scroll_offset': int, diff --git a/ranger/core/fm.py b/ranger/core/fm.py index 76aa7876..a7f78f75 100644 --- a/ranger/core/fm.py +++ b/ranger/core/fm.py @@ -124,6 +124,8 @@ class FM(Actions, # pylint: disable=too-many-instance-attributes bookmarktype=Directory, autosave=self.settings.autosave_bookmarks) self.bookmarks.load() + self.bookmarks.enable_saving_backtick_bookmark( + self.settings.save_backtick_bookmark) self.ui.setup_curses() self.ui.initialize() @@ -190,6 +192,10 @@ class FM(Actions, # pylint: disable=too-many-instance-attributes 'setopt.metadata_deep_search', lambda signal: setattr(signal.fm.metadata, 'deep_search', signal.value) ) + self.settings.signal_bind( + 'setopt.save_backtick_bookmark', + lambda signal: signal.fm.bookmarks.enable_saving_backtick_bookmark(signal.value) + ) def destroy(self): debug = ranger.args.debug |