diff --git a/src/eepp/ui/tools/uidiffview.cpp b/src/eepp/ui/tools/uidiffview.cpp index e33ee1a5c..9fb860a05 100644 --- a/src/eepp/ui/tools/uidiffview.cpp +++ b/src/eepp/ui/tools/uidiffview.cpp @@ -849,7 +849,7 @@ void UIDiffView::loadFromFile( const std::string& oldFilePath, const std::string FileSystem::fileGet( oldFilePath, oldText ); FileSystem::fileGet( newFilePath, newText ); - auto def = SyntaxDefinitionManager::instance()->getByExtension( oldFilePath ); + auto def = SyntaxDefinitionManager::instance()->getByExtension( newFilePath ); mSyntaxDef = SyntaxDefinitionManager::instance()->getLanguageDefinition( def.getLanguageIndex() ); mEditor->getDocument().setSyntaxDefinition( def ); diff --git a/src/tools/ecode/plugins/git/gitplugin.cpp b/src/tools/ecode/plugins/git/gitplugin.cpp index 34d8597f1..ddc6c117a 100644 --- a/src/tools/ecode/plugins/git/gitplugin.cpp +++ b/src/tools/ecode/plugins/git/gitplugin.cpp @@ -1104,10 +1104,17 @@ void GitPlugin::diff( const Git::DiffMode mode, const std::string& repoPath ) { } ); } -void GitPlugin::diff( const std::string& file, bool isStaged ) { - mThreadPool->run( [this, file, isStaged] { +void GitPlugin::diff( const std::string& file, Git::GitStatusType status ) { + mThreadPool->run( [this, file, status] { auto filePath = fixFilePath( file ); - auto res = mGit->diff( filePath, isStaged, mGit->repoPath( file ) ); + if ( status == Git::GitStatusType::Untracked ) { + getUISceneNode()->runOnMainThread( [this, filePath = std::move( filePath )] { + getPluginContext()->loadDiffFromPaths( "", filePath ); + } ); + return; + } + auto res = + mGit->diff( filePath, status == Git::GitStatusType::Staged, mGit->repoPath( file ) ); if ( res.fail() ) return; @@ -1599,7 +1606,7 @@ void GitPlugin::buildSidePanelTab() { break; } case ModelEventType::Open: { - diff( file->file, file->report.type == Git::GitStatusType::Staged ); + diff( file->file, file->report.type ); break; } default: @@ -1863,7 +1870,7 @@ void GitPlugin::openFileStatusMenu( const Git::DiffFile& file ) { } else if ( id == "git-open-file" ) { openFile( file.file ); } else if ( id == "git-diff" ) { - diff( file.file, file.report.type == Git::GitStatusType::Staged ); + diff( file.file, file.report.type ); } } ); diff --git a/src/tools/ecode/plugins/git/gitplugin.hpp b/src/tools/ecode/plugins/git/gitplugin.hpp index e9b215d00..f1f8818f7 100644 --- a/src/tools/ecode/plugins/git/gitplugin.hpp +++ b/src/tools/ecode/plugins/git/gitplugin.hpp @@ -182,7 +182,7 @@ class GitPlugin : public PluginBase { void diff( const Git::DiffMode mode, const std::string& repoPath ); - void diff( const std::string& file, bool isStaged ); + void diff( const std::string& file, Git::GitStatusType status ); void openFile( const std::string& file );