mirror of
https://we.phorge.it/source/arcanist.git
synced 2024-11-21 22:32:41 +01:00
Display informative message when arc launches an editor
Summary: Update `PhutilInteractiveEditor` to allow specifying a "task message" which will be displayed just prior to launching the user's editor. Refs T3271 Test Plan: I ran several `arc diff` commands in varying states to invoke my editor and verified that it printed out the text indicating that my editor was being launched. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: Korvin Maniphest Tasks: T3271 Differential Revision: https://secure.phabricator.com/D21700
This commit is contained in:
parent
41f6c6ecb2
commit
232363e387
4 changed files with 53 additions and 1 deletions
|
@ -22,6 +22,7 @@ final class PhutilInteractiveEditor extends Phobject {
|
||||||
private $offset = 0;
|
private $offset = 0;
|
||||||
private $preferred;
|
private $preferred;
|
||||||
private $fallback;
|
private $fallback;
|
||||||
|
private $taskMessage;
|
||||||
|
|
||||||
|
|
||||||
/* -( Creating a New Editor )---------------------------------------------- */
|
/* -( Creating a New Editor )---------------------------------------------- */
|
||||||
|
@ -74,6 +75,20 @@ final class PhutilInteractiveEditor extends Phobject {
|
||||||
$editor = $this->getEditor();
|
$editor = $this->getEditor();
|
||||||
$offset = $this->getLineOffset();
|
$offset = $this->getLineOffset();
|
||||||
|
|
||||||
|
$binary = basename($editor);
|
||||||
|
|
||||||
|
// This message is primarily an assistance to users with GUI-based
|
||||||
|
// editors configured. Users with terminal-based editors won't have a
|
||||||
|
// chance to see this prior to the editor being launched.
|
||||||
|
echo tsprintf(
|
||||||
|
"%s\n",
|
||||||
|
pht('Launching editor "%s"...', $binary));
|
||||||
|
|
||||||
|
$task_message = $this->getTaskMessage();
|
||||||
|
if ($task_message !== null) {
|
||||||
|
echo tsprintf("%s\n", $task_message);
|
||||||
|
}
|
||||||
|
|
||||||
$err = $this->invokeEditor($editor, $path, $offset);
|
$err = $this->invokeEditor($editor, $path, $offset);
|
||||||
|
|
||||||
if ($err) {
|
if ($err) {
|
||||||
|
@ -85,7 +100,6 @@ final class PhutilInteractiveEditor extends Phobject {
|
||||||
'vim' => true,
|
'vim' => true,
|
||||||
);
|
);
|
||||||
|
|
||||||
$binary = basename($editor);
|
|
||||||
if (isset($vi_binaries[$binary])) {
|
if (isset($vi_binaries[$binary])) {
|
||||||
// This runs "Q" (an invalid command), then "q" (a valid command,
|
// This runs "Q" (an invalid command), then "q" (a valid command,
|
||||||
// meaning "quit"). Vim binaries with behavior that makes them poor
|
// meaning "quit"). Vim binaries with behavior that makes them poor
|
||||||
|
@ -266,6 +280,33 @@ final class PhutilInteractiveEditor extends Phobject {
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the message that identifies the task for which the editor is being
|
||||||
|
* launched, displayed to the user prior to it being launched.
|
||||||
|
*
|
||||||
|
* @param string The message to display to the user.
|
||||||
|
* @return $this
|
||||||
|
*
|
||||||
|
* @task config
|
||||||
|
*/
|
||||||
|
public function setTaskMessage($task_message) {
|
||||||
|
$this->taskMessage = $task_message;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the current message that will display to the user just prior to
|
||||||
|
* invoking the editor.
|
||||||
|
*
|
||||||
|
* @return string The message that will display to the user, or null if no
|
||||||
|
* message will be displayed.
|
||||||
|
*
|
||||||
|
* @task config
|
||||||
|
*/
|
||||||
|
public function getTaskMessage() {
|
||||||
|
return $this->taskMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the name of the editor program to use. The value of the environmental
|
* Get the name of the editor program to use. The value of the environmental
|
||||||
|
|
|
@ -674,6 +674,8 @@ EOTEXT
|
||||||
if ($should_edit) {
|
if ($should_edit) {
|
||||||
$edited = $this->newInteractiveEditor($remote_corpus)
|
$edited = $this->newInteractiveEditor($remote_corpus)
|
||||||
->setName('differential-edit-revision-info')
|
->setName('differential-edit-revision-info')
|
||||||
|
->setTaskMessage(pht(
|
||||||
|
'Update the details for a revision, then save and exit.'))
|
||||||
->editInteractively();
|
->editInteractively();
|
||||||
if ($edited != $remote_corpus) {
|
if ($edited != $remote_corpus) {
|
||||||
$remote_corpus = $edited;
|
$remote_corpus = $edited;
|
||||||
|
@ -1476,6 +1478,8 @@ EOTEXT
|
||||||
} else {
|
} else {
|
||||||
$new_template = $this->newInteractiveEditor($template)
|
$new_template = $this->newInteractiveEditor($template)
|
||||||
->setName('new-commit')
|
->setName('new-commit')
|
||||||
|
->setTaskMessage(pht(
|
||||||
|
'Provide the details for a new revision, then save and exit.'))
|
||||||
->editInteractively();
|
->editInteractively();
|
||||||
}
|
}
|
||||||
$first = false;
|
$first = false;
|
||||||
|
@ -1752,6 +1756,8 @@ EOTEXT
|
||||||
|
|
||||||
$comments = $this->newInteractiveEditor($template)
|
$comments = $this->newInteractiveEditor($template)
|
||||||
->setName('differential-update-comments')
|
->setName('differential-update-comments')
|
||||||
|
->setTaskMessage(pht(
|
||||||
|
'Update the revision comments, then save and exit.'))
|
||||||
->editInteractively();
|
->editInteractively();
|
||||||
|
|
||||||
return $comments;
|
return $comments;
|
||||||
|
|
|
@ -909,6 +909,8 @@ EOTEXT
|
||||||
|
|
||||||
$commit_message = $this->newInteractiveEditor($template)
|
$commit_message = $this->newInteractiveEditor($template)
|
||||||
->setName('arcanist-patch-commit-message')
|
->setName('arcanist-patch-commit-message')
|
||||||
|
->setTaskMessage(pht(
|
||||||
|
'Supply a commit message for this patch, then save and exit.'))
|
||||||
->editInteractively();
|
->editInteractively();
|
||||||
|
|
||||||
$commit_message = ArcanistCommentRemover::removeComments($commit_message);
|
$commit_message = ArcanistCommentRemover::removeComments($commit_message);
|
||||||
|
|
|
@ -1234,6 +1234,9 @@ abstract class ArcanistWorkflow extends Phobject {
|
||||||
|
|
||||||
$commit_message = $this->newInteractiveEditor($template)
|
$commit_message = $this->newInteractiveEditor($template)
|
||||||
->setName(pht('commit-message'))
|
->setName(pht('commit-message'))
|
||||||
|
->setTaskMessage(pht(
|
||||||
|
'Supply commit message for uncommitted changes, then save and '.
|
||||||
|
'exit.'))
|
||||||
->editInteractively();
|
->editInteractively();
|
||||||
|
|
||||||
if ($commit_message === $template) {
|
if ($commit_message === $template) {
|
||||||
|
|
Loading…
Reference in a new issue