diff options
author | toonn <toonn@toonn.io> | 2019-02-28 13:19:11 +0100 |
---|---|---|
committer | toonn <toonn@toonn.io> | 2019-02-28 13:19:11 +0100 |
commit | a3a9ea373129731fb923927ad32ee30016112f69 (patch) | |
tree | 4f8c4915a2d92b219501f45000be2b7c658cc5da | |
parent | 3850bca38e868734a326ed9a328494b6bbcbe9ca (diff) | |
parent | 51e7383ad5ebdf35374d62b44ca57ad58ce339cb (diff) | |
download | ranger-a3a9ea373129731fb923927ad32ee30016112f69.tar.gz |
Merge branch 'palikar-paste-dest'
Fixes #1473
-rw-r--r-- | ranger/config/rc.conf | 3 | ||||
-rw-r--r-- | ranger/core/actions.py | 11 | ||||
-rw-r--r-- | ranger/core/loader.py | 6 |
3 files changed, 14 insertions, 6 deletions
diff --git a/ranger/config/rc.conf b/ranger/config/rc.conf index 98a059d4..4a182f69 100644 --- a/ranger/config/rc.conf +++ b/ranger/config/rc.conf @@ -476,6 +476,9 @@ map pl paste_symlink relative=False map pL paste_symlink relative=True map phl paste_hardlink map pht paste_hardlinked_subtree +map pd console paste dest= +map p`<any> paste dest=%any_path +map p'<any> paste dest=%any_path map dD console delete diff --git a/ranger/core/actions.py b/ranger/core/actions.py index ddb98d9b..3868d102 100644 --- a/ranger/core/actions.py +++ b/ranger/core/actions.py @@ -1559,12 +1559,17 @@ class Actions( # pylint: disable=too-many-instance-attributes,too-many-public-m link(source_path, next_available_filename(target_path)) - def paste(self, overwrite=False, append=False): + def paste(self, overwrite=False, append=False, dest=None): """:paste - Paste the selected items into the current directory. + Paste the selected items into the current directory or to dest + if provided. """ - loadable = CopyLoader(self.copy_buffer, self.do_cut, overwrite) + if dest is not None: + if not exists(dest) and not isdir(dest): + self.notify('Failed to paste. The given path is invalid.', bad=True) + return + loadable = CopyLoader(self.copy_buffer, self.do_cut, overwrite, dest=dest) self.loader.add(loadable, append=append) self.do_cut = False diff --git a/ranger/core/loader.py b/ranger/core/loader.py index 9f32535f..96d000ac 100644 --- a/ranger/core/loader.py +++ b/ranger/core/loader.py @@ -51,11 +51,11 @@ class Loadable(object): class CopyLoader(Loadable, FileManagerAware): # pylint: disable=too-many-instance-attributes progressbar_supported = True - def __init__(self, copy_buffer, do_cut=False, overwrite=False): + def __init__(self, copy_buffer, do_cut=False, overwrite=False, dest=None): self.copy_buffer = tuple(copy_buffer) self.do_cut = do_cut self.original_copy_buffer = copy_buffer - self.original_path = self.fm.thistab.path + self.original_path = dest if dest is not None else self.fm.thistab.path self.overwrite = overwrite self.percent = 0 if self.copy_buffer: @@ -102,7 +102,7 @@ class CopyLoader(Loadable, FileManagerAware): # pylint: disable=too-many-instan tag = self.fm.tags.tags[path] self.fm.tags.remove(path) self.fm.tags.tags[ - path.replace(fobj.path, self.original_path + '/' + fobj.basename) + path.replace(fobj.path, path.join(self.original_path, fobj.basename)) ] = tag self.fm.tags.dump() n = 0 |