diff --git a/src/applications/differential/controller/DifferentialChangesetViewController.php b/src/applications/differential/controller/DifferentialChangesetViewController.php --- a/src/applications/differential/controller/DifferentialChangesetViewController.php +++ b/src/applications/differential/controller/DifferentialChangesetViewController.php @@ -158,6 +158,15 @@ $parser->setCharacterEncoding($request->getStr('encoding')); $parser->setHighlightAs($request->getStr('highlight')); + $generated_paths = id(new DifferentialDiffProperty())->loadOneWhere( + 'diffID = %d AND name = %s', + $changeset->getDiffID(), + 'arc:generated'); + + if ($generated_paths) { + $parser->setGeneratedPaths($generated_paths->getData()); + } + if ($request->getStr('renderer') == '1up') { $parser->setRenderer(new DifferentialChangesetOneUpRenderer()); } diff --git a/src/applications/differential/parser/DifferentialChangesetParser.php b/src/applications/differential/parser/DifferentialChangesetParser.php --- a/src/applications/differential/parser/DifferentialChangesetParser.php +++ b/src/applications/differential/parser/DifferentialChangesetParser.php @@ -43,6 +43,7 @@ private $renderer; private $characterEncoding; private $highlightAs; + private $generatedPaths = array(); private $showEditAndReplyLinks = true; public function setShowEditAndReplyLinks($bool) { @@ -71,6 +72,14 @@ return $this->characterEncoding; } + public function setGeneratedPaths(array $paths) { + $this->generatedPaths = $paths; + } + + public function getGeneratedPaths() { + return $this->generatedPaths; + } + public function setRenderer(DifferentialChangesetRenderer $renderer) { $this->renderer = $renderer; return $this; @@ -413,6 +422,16 @@ $generated_guess = (strpos($new_corpus_block, '@'.'generated') !== false); if (!$generated_guess) { + foreach ($this->generatedPaths as $regex) { + if (preg_match($regex, $this->changeset->getFilename())) { + $generated_guess = true; + break; + } + } + } + + // The following is deprecated and should not be used. + if (!$generated_guess) { $generated_path_regexps = PhabricatorEnv::getEnvConfig( 'differential.generated-paths'); foreach ($generated_path_regexps as $regexp) {