From 372395575c38b67e97473dc616ab09c58b53f2ce Mon Sep 17 00:00:00 2001 From: coderaiser Date: Mon, 15 Apr 2019 15:10:20 +0300 Subject: [PATCH] feature(edit-names) add bulk rename (#231) --- HELP.md | 2 +- client/modules/edit-names.js | 22 ++++++++++++++++++---- package.json | 1 + 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/HELP.md b/HELP.md index dbb652cc..825414ff 100644 --- a/HELP.md +++ b/HELP.md @@ -188,7 +188,7 @@ Hot keys | `Ctrl + R` | refresh | `Ctrl + D` | clear local storage | `Ctrl + A` | select all files in a panel -| `Ctrl + M` | rename selected files in editor +| `Ctrl + M` | [rename selected files](https://github.com/coderaiser/cloudcmd/releases/tag/v12.0.0) in editor | `Shift + Ctrl + M` | rename selected files in vim mode of editor | `Ctrl + U` | swap panels | `Ctrl + F3` | sort by name diff --git a/client/modules/edit-names.js b/client/modules/edit-names.js index 5a23ec6d..9f5d4ee3 100644 --- a/client/modules/edit-names.js +++ b/client/modules/edit-names.js @@ -7,6 +7,8 @@ CloudCmd.EditNames = exports; const currify = require('currify/legacy'); const exec = require('execon'); const supermenu = require('supermenu'); +const smalltalk = require('smalltalk'); +const multiRename = require('multi-rename'); const reject = Promise.reject.bind(Promise); @@ -66,10 +68,22 @@ function keyListener(event) { const ctrlMeta = ctrl || meta; const {Key} = CloudCmd; - if (!ctrlMeta || event.keyCode !== Key.S) - return; + if (ctrlMeta && event.keyCode === Key.S) + EditNames.hide(); - EditNames.hide(); + else if (ctrlMeta && event.keyCode === Key.P) + smalltalk + .prompt(TITLE, 'Apply pattern:', '[n][e]', {cancel: false}) + .then(applyPattern); + + event.preventDefault(); +} + +function applyPattern(pattern) { + const newNames = multiRename(pattern, getActiveNames()); + const editor = CloudCmd.Edit.getEditor(); + + editor.setValue(newNames.join('\n')); } function getActiveNames() { @@ -162,7 +176,7 @@ function setMenu(event) { const menuData = { 'Save Ctrl+S' : () => { - editor.save(); + applyNames(); EditNames.hide(); }, 'Go To Line Ctrl+G' : () => { diff --git a/package.json b/package.json index a0caf097..1b26867e 100644 --- a/package.json +++ b/package.json @@ -176,6 +176,7 @@ "mkdirp": "^0.5.1", "mock-require": "^3.0.1", "morgan": "^1.6.1", + "multi-rename": "^1.0.0", "nodemon": "^1.9.1", "nyc": "^13.0.1", "optimize-css-assets-webpack-plugin": "^5.0.0",