Backport LFUN_VC_COMMAND

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_6_X@28151 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Pavel Sanda 2009-01-14 10:41:20 +00:00
parent 7c78f0e483
commit 0d8ca0d309
6 changed files with 150 additions and 6 deletions

View File

@ -1,4 +1,4 @@
#LyX 1.6.0 created this file. For more info see http://www.lyx.org/ #LyX 1.6.1 created this file. For more info see http://www.lyx.org/
\lyxformat 345 \lyxformat 345
\begin_document \begin_document
\begin_header \begin_header
@ -76,6 +76,7 @@ End
\font_osf false \font_osf false
\font_sf_scale 100 \font_sf_scale 100
\font_tt_scale 100 \font_tt_scale 100
\graphics default \graphics default
\paperfontsize 12 \paperfontsize 12
\spacing single \spacing single
@ -109,9 +110,9 @@ End
\papercolumns 1 \papercolumns 1
\papersides 2 \papersides 2
\paperpagestyle headings \paperpagestyle headings
\tracking_changes false \tracking_changes true
\output_changes false \output_changes false
\author "" \author "pavel"
\author "" \author ""
\end_header \end_header
@ -16881,6 +16882,17 @@ Later basic CVS/SVN support was added.
\begin_layout Standard \begin_layout Standard
The implementation in LyX assumes a recent version of the GNU RCS or CVS/SVN The implementation in LyX assumes a recent version of the GNU RCS or CVS/SVN
package---no guarantees are made for older versions. package---no guarantees are made for older versions.
\change_inserted 0 1231929523
\end_layout
\begin_layout Standard
\change_inserted 0 1231929529
For introducing your own external commands consult vc-command in the manual
of LyX functions.
\change_unchanged
\end_layout \end_layout
\begin_layout Subsection \begin_layout Subsection

View File

@ -1,4 +1,4 @@
#LyX 1.6.1 created this file. For more info see http://www.lyx.org/ #LyX 1.6.2svn created this file. For more info see http://www.lyx.org/
\lyxformat 345 \lyxformat 345
\begin_document \begin_document
\begin_header \begin_header
@ -49,7 +49,7 @@ theorems-ams
\begin_body \begin_body
\begin_layout Section* \begin_layout Section*
LFUNs documentation automatically generated 11.01.2009. LFUNs documentation automatically generated 14.01.2009.
\end_layout \end_layout
\begin_layout Standard \begin_layout Standard
@ -4016,6 +4016,65 @@ Syntax vc-check-out
Origin Lgb, 1 Jul 1997 Origin Lgb, 1 Jul 1997
\end_layout \end_layout
\begin_layout Subsection*
LFUN_VC_COMMAND
\end_layout
\begin_layout Description
Action Executes external command.
This command is intended to support additional VCS commands.
\end_layout
\begin_layout Description
Syntax vc-command <FLAG> <PATH> <COMMAND>
\end_layout
\begin_layout Description
Params <FLAG>: Flags for the command can be combined together.
\begin_inset Newline newline
\end_inset
U - dUmmy - no flags
\begin_inset Newline newline
\end_inset
D - Doc - need document loaded to proceed
\begin_inset Newline newline
\end_inset
I - dIrty - mark document dirty
\begin_inset Newline newline
\end_inset
R - Reload - reload the document after command execution
\begin_inset Newline newline
\end_inset
M - Message - ask for input string (commit message)
\begin_inset Newline newline
\end_inset
<PATH>: path where to start.
$$p will be replaced by the current document path.
\begin_inset Newline newline
\end_inset
<COMMAND>: command to execute.
$$i/$$p/$$m will be replaced by the current document/path/message.
\end_layout
\begin_layout Description
Sample vc-command DR $$p "svn up"
\end_layout
\begin_layout Description
Origin sanda, 13 Jan 2009
\end_layout
\begin_layout Subsection* \begin_layout Subsection*
LFUN_CHANGES_TRACK LFUN_CHANGES_TRACK
\end_layout \end_layout

View File

@ -410,6 +410,7 @@ enum FuncCode
// 315 // 315
LFUN_TAB_INSERT, LFUN_TAB_INSERT,
LFUN_TAB_DELETE, LFUN_TAB_DELETE,
LFUN_VC_COMMAND,
LFUN_LASTACTION // end of the table LFUN_LASTACTION // end of the table
}; };

View File

@ -1959,6 +1959,24 @@ void LyXAction::init()
* \endvar * \endvar
*/ */
{ LFUN_VC_UNDO_LAST, "vc-undo-last", ReadOnly, System }, { LFUN_VC_UNDO_LAST, "vc-undo-last", ReadOnly, System },
/*!
* \var lyx::FuncCode lyx::LFUN_VC_COMMAND
* \li Action: Executes external command. This command is intended to support
additional VCS commands.
* \li Syntax: vc-command <FLAG> <PATH> <COMMAND>
* \li Params: <FLAG>: Flags for the command can be combined together.\n
U - dUmmy - no flags \n
D - Doc - need document loaded to proceed \n
I - dIrty - mark document dirty \n
R - Reload - reload the document after command execution \n
M - Message - ask for input string (commit message)\n
<PATH>: path where to start. $$p will be replaced by the current document path.\n
<COMMAND>: command to execute. $$i/$$p/$$m will be replaced by the current document/path/message.
* \li Sample: vc-command DR $$p "svn up"
* \li Origin: sanda, 13 Jan 2009
* \endvar
*/
{ LFUN_VC_COMMAND, "vc-command", NoBuffer | ReadOnly, System },
/*! /*!
* \var lyx::FuncCode lyx::LFUN_CHANGES_TRACK * \var lyx::FuncCode lyx::LFUN_CHANGES_TRACK

View File

@ -566,6 +566,15 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
break; break;
} }
case LFUN_VC_COMMAND: {
if (cmd.argument().empty())
enable = false;
if (!buf && contains(cmd.getArg(0), 'D'))
enable = false;
break;
}
case LFUN_WORD_FIND_FORWARD: case LFUN_WORD_FIND_FORWARD:
case LFUN_WORD_FIND_BACKWARD: case LFUN_WORD_FIND_BACKWARD:
case LFUN_COMMAND_PREFIX: case LFUN_COMMAND_PREFIX:
@ -1589,6 +1598,48 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
theSession().bookmarks().clear(); theSession().bookmarks().clear();
break; break;
case LFUN_VC_COMMAND: {
string flag = cmd.getArg(0);
if (buffer && contains(flag, 'R') && !ensureBufferClean(view()))
break;
docstring message;
if (contains(flag, 'M'))
if (!Alert::askForText(message, _("LyX VC: Log Message")))
break;
string path = cmd.getArg(1);
if (contains(path, "$$p") && buffer)
path = subst(path, "$$p", buffer->filePath());
LYXERR(Debug::LYXVC, "Directory: " << path);
FileName pp(path);
if (!pp.isReadableDirectory()) {
lyxerr<< _("Directory is not readable.\n");
break;
}
support::PathChanger p(pp);
string command = cmd.getArg(2);
if (command.empty())
break;
if (buffer) {
command = subst(command, "$$i", buffer->absFileName());
command = subst(command, "$$p", buffer->filePath());
}
command = subst(command, "$$m", to_utf8(message));
LYXERR(Debug::LYXVC, "Command: " << command);
Systemcall one;
one.startscript(Systemcall::Wait, command);
if (!buffer)
break;
if (contains(flag, 'I'))
buffer->markDirty();
if (contains(flag, 'R'))
reloadBuffer();
break;
}
default: default:
LASSERT(theApp(), /**/); LASSERT(theApp(), /**/);
// Let the frontend dispatch its own actions. // Let the frontend dispatch its own actions.

View File

@ -70,6 +70,9 @@ What's new
even when the name in the BibTeX file is "John Doe" rather than even when the name in the BibTeX file is "John Doe" rather than
"Doe, John". "Doe, John".
- Added LFUN_VC_COMMAND to support customizable user commands
for version control.
* WINDOWS INSTALLER * WINDOWS INSTALLER