Fix ref bug, use snippet for \ commands.

This commit is contained in:
James-Yu 2017-01-03 16:01:20 +08:00
parent 6de40d8097
commit 9d34f9b610
10 changed files with 759 additions and 188 deletions

View File

@ -4,6 +4,15 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
## [0.1.3] - 2017-01-03
### Changed
- Use code snippet for all latex backslash commands.
- Now autocomplete will show when the first letter is input after the backslash.
- Now backslash autocomplete can use tab to navigate to proper positions for contents.
### Fixed
- \ref won't develop autocomplete recommends when .aux file is not generated.
## [0.1.2] - 2017-01-03
### Changed
- Synchronously read related files when developing citation and reference autocompletes.

View File

@ -1,165 +0,0 @@
{
"latex": {
"commands": [
"documentclass{}",
"usepackage{}",
"author{}",
"title{}",
"date{}",
"pagestyle{}",
"tableofcontents",
"part{}",
"chapter{}",
"section{}",
"subsection{}",
"subsubsection{}",
"paragraph{}",
"subparagraph{}",
"begin",
"item",
"label{}",
"ref",
"pageref{}",
"footnote{}",
"caption{}",
"textrm{}",
"textsf{}",
"texttt{}",
"textmd{}",
"textbf{}",
"textup{}",
"textit{}",
"textsl{}",
"textsc{}",
"textit{}",
"emph{}",
"text{}",
"textnormal{}",
"underline{}",
"rmfamily",
"sffamily",
"sffamily",
"mdseries",
"bfseries",
"upshape",
"itshape",
"slshape",
"scshape",
"em",
"normalfont",
"tiny",
"scriptsize",
"footnotesize",
"small",
"normalsize",
"large",
"Large",
"LARGE",
"huge",
"Huge",
"centering",
"raggedright",
"raggedleft",
"linespread{}",
"kill",
"pagebreak",
"noindent",
"today",
"hspace{}",
"vspace{}",
"rule{}{}",
"hline",
"cline{}",
"multicolumn{}{}{}",
"frac{}{}",
"sqrt{}",
"sum",
"prod",
"leq",
"geq",
"neq",
"approx",
"times",
"div",
"pm",
"cdot",
"circ",
"prime",
"cdots",
"infty",
"neg",
"wedge",
"vee",
"supset",
"exists",
"notin",
"rightarrow",
"leftarrow",
"subset",
"forall",
"in",
"Rightarrow",
"Leftarrow",
"cup",
"cap",
"mid",
"Leftrightarrow",
"dot",
"hat",
"bar",
"tilde",
"alpha",
"beta",
"gamma",
"delta",
"epsilon",
"zeta",
"eta",
"varepsilon",
"theta",
"iota",
"kappa",
"vartheta",
"lambda",
"mu",
"nu",
"xi",
"pi",
"rho",
"sigma",
"tau",
"upsilon",
"phi",
"chi",
"psi",
"omega",
"Gamma",
"Delta",
"Theta",
"Lambda",
"Xi",
"Pi",
"Sigma",
"Upsilon",
"Phi",
"Psi",
"Omega",
"cite",
"citeA",
"citeN",
"shortcite",
"shortciteA",
"shortciteN",
"citeyear",
"citeNP",
"citeANP",
"citeNNP",
"shortciteNP",
"shortciteANP",
"shortciteNNP",
"citeyearNP",
"bibliographystyle{}",
"bibliography{}"
]
}
}

View File

737
latex/snippet.json Normal file
View File

@ -0,0 +1,737 @@
{
"documentclass": {
"prefix": "\\documentclass",
"body": "\\documentclass{${1:class}}",
"description": "Define the type of document."
},
"usepackage": {
"prefix": "\\usepackage",
"body": "\\usepackage{${1:name}}",
"description": "Use a package."
},
"author": {
"prefix": "\\author",
"body": "\\author{${1:text}}",
"description": "Author of the document."
},
"title": {
"prefix": "\\title",
"body": "\\title{${1:text}}",
"description": "Title of the document."
},
"date": {
"prefix": "\\date",
"body": "\\date{${1:text}}",
"description": "Define a date."
},
"pagestyle": {
"prefix": "\\pagestyle",
"body": "\\pagestyle{${1:style}}",
"description": "Empty header, footer and no page numbers."
},
"tableofcontents": {
"prefix": "\\tableofcontents",
"body": "\\tableofcontents",
"description": "Add a table of contents here."
},
"part": {
"prefix": "\\part",
"body": "\\part{${1:title}}",
"description": "Document structure: part."
},
"chapter": {
"prefix": "\\chapter",
"body": "\\chapter{${1:title}}",
"description": "Document structure: chapter."
},
"section": {
"prefix": "\\section",
"body": "\\section{${1:title}}",
"description": "Document structure: section."
},
"subsection": {
"prefix": "\\subsection",
"body": "\\subsection{${1:title}}",
"description": "Document structure: subsection."
},
"subsubsection": {
"prefix": "\\subsubsection",
"body": "\\subsubsection{${1:title}}",
"description": "Document structure: subsubsection."
},
"paragraph": {
"prefix": "\\paragraph",
"body": "\\paragraph{${1:title}}",
"description": "Document structure: paragraph."
},
"subparagraph": {
"prefix": "\\subparagraph",
"body": "\\subparagraph{${1:title}}",
"description": "Document structure: subparagraph."
},
"begin": {
"prefix": "\\begin",
"body": "\\begin",
"description": "Begin a text environment. Append a { for more autocomplete items."
},
"item": {
"prefix": "\\item",
"body": "\\item ${1:text}",
"description": "Add an item."
},
"label": {
"prefix": "\\label",
"body": "\\label{${1:marker}}",
"description": "Set a marker for cross-reference, often of the form \\label{sec:item}."
},
"ref": {
"prefix": "\\ref",
"body": "\\ref",
"description": "Give section/body number of marker. Append a { for more autocomplete items."
},
"pageref": {
"prefix": "\\pageref",
"body": "\\pageref",
"description": " Give page number of marker. Append a { for more autocomplete items."
},
"footnote": {
"prefix": "\\footnote",
"body": "\\footnote{${1:text}}",
"description": "Print footnote at bottom of page."
},
"caption": {
"prefix": "\\caption",
"body": "\\caption{${1:text}}",
"description": "Caption for the body."
},
"textrm": {
"prefix": "\\textrm",
"body": "\\textrm{${1:text}}",
"description": "Roman family text."
},
"textsf": {
"prefix": "\\textsf",
"body": "\\textsf{${1:text}}",
"description": "Sans serif family text."
},
"texttt": {
"prefix": "\\texttt",
"body": "\\texttt{${1:text}}",
"description": "Typewriter family text."
},
"textmd": {
"prefix": "\\textmd",
"body": "\\textmd{${1:text}}",
"description": "Medium series text."
},
"textbf": {
"prefix": "\\textbf",
"body": "\\textbf{${1:text}}",
"description": "Bold series text."
},
"textup": {
"prefix": "\\textup",
"body": "\\textup{${1:text}}",
"description": "Upright shape text."
},
"textit": {
"prefix": "\\textit",
"body": "\\textit{${1:text}}",
"description": "Italic shape text."
},
"textsl": {
"prefix": "\\textsl",
"body": "\\textsl{${1:text}}",
"description": "Slanted shape text."
},
"textsc": {
"prefix": "\\textsc",
"body": "\\textsc{${1:text}}",
"description": "Small Caps shape text."
},
"emph": {
"prefix": "\\emph",
"body": "\\emph{${1:text}}",
"description": "Emphasized text."
},
"text": {
"prefix": "\\text",
"body": "\\text{${1:text}}",
"description": "Document font text."
},
"textnormal": {
"prefix": "\\textnormal",
"body": "\\textnormal{${1:text}}",
"description": "Document font text."
},
"underline": {
"prefix": "\\underline",
"body": "\\underline{${1:text}}",
"description": "Underlined text."
},
"tiny": {
"prefix": "\\tiny",
"body": "\\tiny",
"description": "Tiny size body content."
},
"scriptsize": {
"prefix": "\\scriptsize",
"body": "\\scriptsize",
"description": "Script size body content."
},
"footnotesize": {
"prefix": "\\footnotesize",
"body": "\\footnotesize",
"description": "Footnote size body content."
},
"small": {
"prefix": "\\small",
"body": "\\small",
"description": "Small size body content."
},
"normalsize": {
"prefix": "\\normalsize",
"body": "\\normalsize",
"description": "Normal size body content."
},
"large": {
"prefix": "\\large",
"body": "\\large",
"description": "Large size body content."
},
"Large": {
"prefix": "\\Large",
"body": "\\Large",
"description": "Larger size body content."
},
"LARGE": {
"prefix": "\\LARGE",
"body": "\\LARGE",
"description": "Extra large size body content."
},
"huge": {
"prefix": "\\huge",
"body": "\\huge",
"description": "Huge size body content."
},
"Huge": {
"prefix": "\\Huge",
"body": "\\Huge",
"description": "Extra huge size body content."
},
"centering": {
"prefix": "\\centering",
"body": "\\centering",
"description": "Center alignment."
},
"raggedright": {
"prefix": "\\raggedright",
"body": "\\raggedright",
"description": "Ragged right edge."
},
"raggedleft": {
"prefix": "\\raggedleft",
"body": "\\raggedleft",
"description": "Ragged left edge."
},
"linespread": {
"prefix": "\\linespread",
"body": "\\linespread{${1:x}}",
"description": "Change the line spacing by the multiplier x"
},
"kill": {
"prefix": "\\kill",
"body": "\\kill",
"description": "Don't print current line."
},
"pagebreak": {
"prefix": "\\pagebreak",
"body": "\\pagebreak",
"description": "Start a new page."
},
"noindent": {
"prefix": "\\noindent",
"body": "\\noindent",
"description": "Do not indent current line."
},
"today": {
"prefix": "\\today",
"body": "\\today",
"description": "Add today's date."
},
"hspace": {
"prefix": "\\hspace",
"body": "\\hspace{${1:l}}",
"description": "Horizontal space of length l."
},
"vspace": {
"prefix": "\\vspace",
"body": "\\vspace{${1:l}}",
"description": "Vertical space of length l."
},
"rule": {
"prefix": "\\rule",
"body": "\\rule{${1:w}}{${2:h}}",
"description": "Line of width w and height h."
},
"hline": {
"prefix": "\\hline",
"body": "\\hline",
"description": "Horizontal line between rows."
},
"cline": {
"prefix": "\\cline",
"body": "\\cline{${1:x}-{2:y}}",
"description": "Horizontal line across columns x through y."
},
"multicolumn": {
"prefix": "\\multicolumn",
"body": "\\multicolumn{${1:n}}{${2:cols}}{${3:text}}",
"description": "A cell that spans n columns, with cols column specification."
},
"frac": {
"prefix": "\\frac",
"body": "\\frac{${1:x}}{${2:y}}",
"description": "Fraction."
},
"sqrt": {
"prefix": "\\sqrt",
"body": "\\sqrt{${1:x}}",
"description": "Square root."
},
"sum": {
"prefix": "\\sum",
"body": "\\sum",
"description": "Summation."
},
"prod": {
"prefix": "\\prod",
"body": "\\prod",
"description": "Product."
},
"leq": {
"prefix": "\\leq",
"body": "\\leq",
"description": "Less or equal to."
},
"geq": {
"prefix": "\\geq",
"body": "\\geq",
"description": "Greater or equal to."
},
"neq": {
"prefix": "\\neq",
"body": "\\neq",
"description": "Not equal to."
},
"approx": {
"prefix": "\\approx",
"body": "\\approx",
"description": "Approximate."
},
"times": {
"prefix": "\\times",
"body": "\\times",
"description": "Times."
},
"div": {
"prefix": "\\div",
"body": "\\div",
"description": "Division."
},
"pm": {
"prefix": "\\pm",
"body": "\\pm",
"description": "Plus-minus."
},
"cdot": {
"prefix": "\\cdot",
"body": "\\cdot",
"description": "Center dot."
},
"circ": {
"prefix": "\\circ",
"body": "\\circ",
"description": "Circle."
},
"prime": {
"prefix": "\\prime",
"body": "\\prime",
"description": "Prime."
},
"cdots": {
"prefix": "\\cdots",
"body": "\\cdots",
"description": "Center dots."
},
"infty": {
"prefix": "\\infty",
"body": "\\infty",
"description": "Infinity."
},
"neg": {
"prefix": "\\neg",
"body": "\\neg",
"description": "Negative."
},
"wedge": {
"prefix": "\\wedge",
"body": "\\wedge",
"description": "Wedge."
},
"vee": {
"prefix": "\\vee",
"body": "\\vee",
"description": "Vee."
},
"supset": {
"prefix": "\\supset",
"body": "\\supset",
"description": "Super set."
},
"exists": {
"prefix": "\\exists",
"body": "\\exists",
"description": "There exists."
},
"notin": {
"prefix": "\\notin",
"body": "\\notin",
"description": "Not in set."
},
"rightarrow": {
"prefix": "\\rightarrow",
"body": "\\rightarrow",
"description": "Right arrow"
},
"leftarrow": {
"prefix": "\\leftarrow",
"body": "\\leftarrow",
"description": "Left arrow"
},
"subset": {
"prefix": "\\subset",
"body": "\\subset",
"description": "Subset."
},
"forall": {
"prefix": "\\forall",
"body": "\\forall",
"description": "For all."
},
"in": {
"prefix": "\\in",
"body": "\\in",
"description": "In set."
},
"Rightarrow": {
"prefix": "\\Rightarrow",
"body": "\\Rightarrow",
"description": "Right double arrow"
},
"Leftarrow": {
"prefix": "\\Leftarrow",
"body": "\\Leftarrow",
"description": "Left double arrow"
},
"cup": {
"prefix": "\\cup",
"body": "\\cup",
"description": "Set union."
},
"cap": {
"prefix": "\\cap",
"body": "\\cap",
"description": "Set intersection."
},
"mid": {
"prefix": "\\mid",
"body": "\\mid",
"description": "Vertical bar."
},
"Leftrightarrow": {
"prefix": "\\Leftrightarrow",
"body": "\\Leftrightarrow",
"description": "Left and right double arrow."
},
"dot": {
"prefix": "\\dot",
"body": "\\dot{${1:symbol}}",
"description": "A dot over symbol."
},
"hat": {
"prefix": "\\hat",
"body": "\\hat{${1:symbol}}",
"description": "A hat over symbol."
},
"bar": {
"prefix": "\\bar",
"body": "\\bar{${1:symbol}}",
"description": "A bar over symbol."
},
"tilde": {
"prefix": "\\tilde",
"body": "\\tilde{${1:symbol}}",
"description": "A tilde over symbol."
},
"alpha": {
"prefix": "\\alpha",
"body": "\\alpha",
"description": "alpha"
},
"beta": {
"prefix": "\\beta",
"body": "\\beta",
"description": "beta"
},
"gamma": {
"prefix": "\\gamma",
"body": "\\gamma",
"description": "gamma"
},
"delta": {
"prefix": "\\delta",
"body": "\\delta",
"description": "delta"
},
"epsilon": {
"prefix": "\\epsilon",
"body": "\\epsilon",
"description": "epsilon"
},
"zeta": {
"prefix": "\\zeta",
"body": "\\zeta",
"description": "zeta"
},
"eta": {
"prefix": "\\eta",
"body": "\\eta",
"description": "eta"
},
"varepsilon": {
"prefix": "\\varepsilon",
"body": "\\varepsilon",
"description": "varepsilon"
},
"theta": {
"prefix": "\\theta",
"body": "\\theta",
"description": "theta"
},
"iota": {
"prefix": "\\iota",
"body": "\\iota",
"description": "iota"
},
"kappa": {
"prefix": "\\kappa",
"body": "\\kappa",
"description": "kappa"
},
"vartheta": {
"prefix": "\\vartheta",
"body": "\\vartheta",
"description": "vartheta"
},
"lambda": {
"prefix": "\\lambda",
"body": "\\lambda",
"description": "lambda"
},
"mu": {
"prefix": "\\mu",
"body": "\\mu",
"description": "mu"
},
"nu": {
"prefix": "\\nu",
"body": "\\nu",
"description": "nu"
},
"xi": {
"prefix": "\\xi",
"body": "\\xi",
"description": "xi"
},
"pi": {
"prefix": "\\pi",
"body": "\\pi",
"description": "pi"
},
"rho": {
"prefix": "\\rho",
"body": "\\rho",
"description": "rho"
},
"sigma": {
"prefix": "\\sigma",
"body": "\\sigma",
"description": "sigma"
},
"tau": {
"prefix": "\\tau",
"body": "\\tau",
"description": "tau"
},
"upsilon": {
"prefix": "\\upsilon",
"body": "\\upsilon",
"description": "upsilon"
},
"phi": {
"prefix": "\\phi",
"body": "\\phi",
"description": "phi"
},
"chi": {
"prefix": "\\chi",
"body": "\\chi",
"description": "chi"
},
"psi": {
"prefix": "\\psi",
"body": "\\psi",
"description": "psi"
},
"omega": {
"prefix": "\\omega",
"body": "\\omega",
"description": "omega"
},
"Gamma": {
"prefix": "\\Gamma",
"body": "\\Gamma",
"description": "Gamma"
},
"Delta": {
"prefix": "\\Delta",
"body": "\\Delta",
"description": "Delta"
},
"Theta": {
"prefix": "\\Theta",
"body": "\\Theta",
"description": "Theta"
},
"Lambda": {
"prefix": "\\Lambda",
"body": "\\Lambda",
"description": "Lambda"
},
"Xi": {
"prefix": "\\Xi",
"body": "\\Xi",
"description": "Xi"
},
"Pi": {
"prefix": "\\Pi",
"body": "\\Pi",
"description": "Pi"
},
"Sigma": {
"prefix": "\\Sigma",
"body": "\\Sigma",
"description": "Sigma"
},
"Upsilon": {
"prefix": "\\Upsilon",
"body": "\\Upsilon",
"description": "Upsilon"
},
"Phi": {
"prefix": "\\Phi",
"body": "\\Phi",
"description": "Phi"
},
"Psi": {
"prefix": "\\Psi",
"body": "\\Psi",
"description": "Psi"
},
"Omega": {
"prefix": "\\Omega",
"body": "\\Omega",
"description": "Omega"
},
"cite": {
"prefix": "\\cite",
"body": "\\cite",
"description": "Full author list and year. Append a { for more autocomplete items."
},
"citeA": {
"prefix": "\\citeA",
"body": "\\citeA",
"description": "Full author list. Append a { for more autocomplete items."
},
"citeN": {
"prefix": "\\citeN",
"body": "\\citeN",
"description": "Full author list and year. Append a { for more autocomplete items."
},
"shortcite": {
"prefix": "\\shortcite",
"body": "\\shortcite",
"description": "Abbreviated author list and year. Append a { for more autocomplete items."
},
"shortciteA": {
"prefix": "\\shortciteA",
"body": "\\shortciteA",
"description": "Abbreviated author list. Append a { for more autocomplete items."
},
"shortciteN": {
"prefix": "\\shortciteN",
"body": "\\shortciteN",
"description": "Abbreviated author list and year. Append a { for more autocomplete items."
},
"citeyear": {
"prefix": "\\citeyear",
"body": "\\citeyear",
"description": "Cite year only. Append a { for more autocomplete items."
},
"citeNP": {
"prefix": "\\citeNP",
"body": "\\citeNP",
"description": "Full author list and year without parentheses. Append a { for more autocomplete items."
},
"citeANP": {
"prefix": "\\citeANP",
"body": "\\citeANP",
"description": "Full author list without parentheses. Append a { for more autocomplete items."
},
"citeNNP": {
"prefix": "\\citeNNP",
"body": "\\citeNNP",
"description": "Full author list and year without parentheses. Append a { for more autocomplete items."
},
"shortciteNP": {
"prefix": "\\shortciteNP",
"body": "\\shortciteNP",
"description": "Abbreviated author list and year without parentheses. Append a { for more autocomplete items."
},
"shortciteANP": {
"prefix": "\\shortciteANP",
"body": "\\shortciteANP",
"description": "Abbreviated author list without parentheses. Append a { for more autocomplete items."
},
"shortciteNNP": {
"prefix": "\\shortciteNNP",
"body": "\\shortciteNNP",
"description": "Abbreviated author list and year without parentheses. Append a { for more autocomplete items."
},
"citeyearNP": {
"prefix": "\\citeyearNP",
"body": "\\citeyearNP",
"description": "Cite year only without parentheses. Append a { for more autocomplete items."
},
"bibliographystyle": {
"prefix": "\\bibliographystyle",
"body": "\\bibliographystyle{${1:style}}",
"description": "Define the style for bibliography."
},
"bibliography": {
"prefix": "\\bibliography",
"body": "\\bibliography{${1:file}}",
"description": "Define the bibliography file(s)."
}
}

View File

@ -3,7 +3,7 @@
"displayName": "LaTeX Workshop",
"description": "AIO LaTeX extension to preview, compile, autocomplete, and more.",
"icon": "img/icon.png",
"version": "0.1.2",
"version": "0.1.3",
"publisher": "James-Yu",
"license": "MIT",
"homepage": "https://github.com/James-Yu/LaTeX-Workshop",
@ -106,7 +106,7 @@
"snippets": [
{
"language": "latex",
"path": "./data/snippet.json"
"path": "./latex/snippet.json"
}
]
},

View File

@ -25,17 +25,12 @@ export class LaTeXCompletionItemProvider implements vscode.CompletionItemProvide
// "," will only work within citations
return new Promise((resolve, reject) => {resolve([])});
}
if (line.slice(-1) == '\\') {
// command completion
return new Promise((resolve, reject) => {
resolve(latex_data.get_auto_completions()['latex']['commands'].map((key) => new vscode.CompletionItem(key)));
});
} else if (is_cite) {
if (is_cite) {
find_citation_keys();
return new Promise((resolve, reject) => {
resolve(latex_data.get_citation_keys().map((key) => new vscode.CompletionItem(key)));
})
} else if (command == 'ref') {
} else if (command == 'ref' || command == 'pageref') {
find_label_keys();
return new Promise((resolve, reject) => {
resolve(latex_data.get_label_keys().map((key) => new vscode.CompletionItem(key)));

View File

@ -1,13 +1,5 @@
'use strict';
var auto_completions = {};
export function set_auto_completions(new_dict) {
auto_completions = new_dict;
}
export function get_auto_completions() {
return auto_completions;
}
var citation_keys = [];
export function set_citation_keys(new_keys) {
citation_keys = new_keys;

View File

@ -4,7 +4,6 @@ import * as vscode from 'vscode';
import {compile} from './compile';
import {preview, source, inPreview, previewProvider} from './preview';
import {LaTeXCompletionItemProvider} from './completion';
import {set_auto_completions} from './data'
var hasbin = require('hasbin');
var fs = require('fs');
@ -22,9 +21,6 @@ export async function activate(context: vscode.ExtensionContext) {
latex_output = vscode.window.createOutputChannel('LaTeX Raw Output');
workshop_output = vscode.window.createOutputChannel('LaTeX Workshop Output');
// Developed from http://wch.github.io/latexsheet/
set_auto_completions(JSON.parse(fs.readFileSync(context.asAbsolutePath('data/completion.json'))));
has_compiler = hasbin.sync(configuration.compiler);
context.subscriptions.push(
vscode.commands.registerCommand('latex-workshop.compile', has_compiler ? () => {compile(true)} : deavtivated_feature)
@ -54,7 +50,7 @@ export async function activate(context: vscode.ExtensionContext) {
context.subscriptions.push(vscode.workspace.registerTextDocumentContentProvider('latex-workshop-preview', preview_provider));
var completion_provider = new LaTeXCompletionItemProvider();
context.subscriptions.push(vscode.languages.registerCompletionItemProvider('latex', completion_provider, '\\', '{', ','));
context.subscriptions.push(vscode.languages.registerCompletionItemProvider('latex', completion_provider, '{', ','));
}
// this method is called when your extension is deactivated

View File

@ -57,6 +57,6 @@ export function find_label_keys() {
}
var buffer = fs.readFileSync(aux_file);
parse_keys(buffer);
latex_data.set_label_keys(keys);
}
latex_data.set_label_keys(keys);
}

7
tags Normal file
View File

@ -0,0 +1,7 @@
!_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
!_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
!_TAG_PROGRAM_AUTHOR Darren Hiebert /dhiebert@users.sourceforge.net/
!_TAG_PROGRAM_NAME Exuberant Ctags //
!_TAG_PROGRAM_URL http://ctags.sourceforge.net /official site/
!_TAG_PROGRAM_VERSION 5.9~svn20110310 //
process.py process.py 1;" kind:file line:1