# Functions returns Command Completion Output

Is there a function that returns the output as if you invoked Command Completion.

To help clarify I am looking for a function that returns the Cell Data as if you invoked Ctrl+Shift+K.

-

This took some digging but at least in Version 7 the FrontEnd command is FT, e.g.:

FEFT["Plot"]


You can read the definition with Definition[FEFT].
If you want only the Box form itself we can modify it accordingly (here for version 7):

templateCell[name_String] :=
Module[{template},
If[! StringQ@ToExpression[name <> "::usage"], \$NewMessage[ToExpression@name, "usage"]];
template = FEgetTemplateFromUsage[ToExpression[name <> "::usage"], name];
template = FEreparseBoxStructure[FEmakePlainText@template, name];
Cell[BoxData[First @ FEinsertTagBox[template, name]], "Input"]
]


Now:

templateCell["Plot"] // CellPrint


templateCell["Plot"]

Cell[BoxData[
RowBox[{"Plot", "[",
RowBox[{TagBox[FrameBox["f"], "Placeholder"], ",",
RowBox[{"{",
RowBox[{TagBox[FrameBox["x"], "Placeholder"], ",",
TagBox[FrameBox[SubscriptBox["x", "min"]], "Placeholder"], ",",
TagBox[FrameBox[SubscriptBox["x", "max"]], "Placeholder"]}], "}"}]}],
"]"}]], "Input"]

-
Also in 9. It also takes a second argument (integer) to get the nth template –  rm -rf Jul 26 '13 at 21:18
@rm-rf The second argument was apparently added after v7. –  Mr.Wizard Jul 26 '13 at 21:22
Quite likely, since that's when support for multiple templates was added. FWIW, it simply calls Part on the list. So there's {template1, template2} inside and you can use all integers that are valid part specifications to index this list. So -2, -1, 0, 1, 2 all work and give what's expected. –  rm -rf Jul 26 '13 at 21:24
@Mr.Wizard Is there a function that returns the CellData instead of adding a new cell to the current Notebook? I plan to likely use this in a Package .m if context helps. –  William Jul 26 '13 at 21:27