Add pre-commit hook. (#15)

This commit is contained in:
Mikaël Capelle
2025-05-29 11:31:50 +02:00
committed by GitHub
parent 05e056b524
commit bad78e99e4
6 changed files with 271 additions and 200 deletions
+41
View File
@@ -0,0 +1,41 @@
---
# We'll use defaults from the LLVM style, but with 4 columns indentation.
BasedOnStyle: LLVM
IndentWidth: 2
---
Language: Cpp
DeriveLineEnding: false
UseCRLF: true
DerivePointerAlignment: false
PointerAlignment: Left
AlignConsecutiveAssignments: true
AllowShortFunctionsOnASingleLine: Inline
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Empty
AlwaysBreakTemplateDeclarations: Yes
AccessModifierOffset: -2
AlignTrailingComments: true
SpacesBeforeTrailingComments: 2
NamespaceIndentation: Inner
MaxEmptyLinesToKeep: 1
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: false
AfterClass: true
AfterControlStatement: false
AfterEnum: true
AfterFunction: true
AfterNamespace: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: true
BeforeCatch: false
BeforeElse: false
BeforeLambdaBody: false
BeforeWhile: false
IndentBraces: false
SplitEmptyFunction: false
SplitEmptyRecord: false
SplitEmptyNamespace: true
ColumnLimit: 88
ForEachMacros: ['Q_FOREACH', 'foreach']
+7
View File
@@ -0,0 +1,7 @@
# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto
# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.cpp text eol=crlf
*.h text eol=crlf
+20
View File
@@ -0,0 +1,20 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-merge-conflict
- id: check-case-conflict
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v19.1.5
hooks:
- id: clang-format
'types_or': [c++, c]
ci:
autofix_commit_msg: "[pre-commit.ci] Auto fixes from pre-commit.com hooks."
autofix_prs: true
autoupdate_commit_msg: "[pre-commit.ci] Pre-commit autoupdate."
autoupdate_schedule: quarterly
submodules: false
+146 -142
View File
@@ -1,142 +1,146 @@
/*
Copyright (C) 2012 Sebastian Herbord. All rights reserved.
This file is part of ini editor plugin for MO
Ini editor plugin is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Ini editor plugin is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Ini editor plugin. If not, see <http://www.gnu.org/licenses/>.
*/
#include "inieditor.h"
#include <QtPlugin>
#include <QMessageBox>
#include <QDir>
#include <QApplication>
#include <uibase/iplugingame.h>
#include <uibase/textviewer.h>
#include <uibase/utility.h>
#include <uibase/imoinfo.h>
using namespace MOBase;
IniEditor::IniEditor()
: m_MOInfo(nullptr)
{
}
bool IniEditor::init(IOrganizer *moInfo)
{
m_MOInfo = moInfo;
return true;
}
QString IniEditor::name() const
{
return "INI Editor";
}
QString IniEditor::localizedName() const
{
return tr("INI Editor");
}
QString IniEditor::author() const
{
return "Tannin";
}
QString IniEditor::description() const
{
return tr("Very basic editor for INI files");
}
VersionInfo IniEditor::version() const
{
return VersionInfo(1, 1, 0, VersionInfo::RELEASE_FINAL);
}
QList<PluginSetting> IniEditor::settings() const
{
QList<PluginSetting> result;
result.push_back(PluginSetting("external", "Use an external editor to open the files", QVariant(false)));
result.push_back(PluginSetting("associated", "When using an external editor, use the application associated with \"INI\" files. "
"If false, uses the \"edit\" command which usually invokes regular notepad.", QVariant(true)));
return result;
}
QString IniEditor::displayName() const
{
return tr("INI Editor");
}
QString IniEditor::tooltip() const
{
return tr("Edit the INI files of the current profile");
}
QIcon IniEditor::icon() const
{
return QIcon(":/inieditor/icon_document");
}
void IniEditor::display() const
{
if (m_MOInfo == nullptr) {
throw MyException(tr("plugin not initialized"));
}
QStringList iniFiles = m_MOInfo->managedGame()->iniFiles();
if (m_MOInfo->pluginSetting(name(), "external").toBool()) {
for (QString const &file : iniFiles) {
QString fileName = m_MOInfo->profile()->absoluteIniFilePath(file);
::ShellExecuteW(nullptr, m_MOInfo->pluginSetting(name(), "associated").toBool() ? L"open" : L"edit",
ToWString(fileName).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
}
}
else {
TextViewer *viewer = new TextViewer("INI Files", parentWidget());
if (m_MOInfo->profile()->localSettingsEnabled())
{
viewer->setDescription(tr(" Editing profile-specific INIs. Profile-specific game INI files are Enabled.\n \n You can change the INI Editor settings (in the main Mod Organizer settings under the plugins tab) to use an external text editor,\n either notepad or your windows associated program to .INI files."));
}
else {
viewer->setDescription(tr(" Editing global INIs (in 'myGames' folder). Profile-specific game INI files are Disabled.\n \n You can change the INI Editor settings (in the main Mod Organizer settings under the plugins tab) to use an external text editor,\n either notepad or your windows associated program to .INI files."));
}
for (QString const& file : iniFiles) {
QString fileName = m_MOInfo->profile()->absoluteIniFilePath(file);
QFileInfo fileInfo(fileName);
if (fileInfo.exists()) {
if (fileInfo.size() < 1024 * 1024) {
viewer->addFile(fileName, true);
}
else {
QMessageBox::warning(parentWidget(), tr("File too big"),
tr("Sorry, the file %1 is too large"
" to be handled by the INI Editor").arg(fileName));
}
}
}
viewer->show();
}
}
#if QT_VERSION < QT_VERSION_CHECK(5,0,0)
Q_EXPORT_PLUGIN2(iniEditor, IniEditor)
#endif
/*
Copyright (C) 2012 Sebastian Herbord. All rights reserved.
This file is part of ini editor plugin for MO
Ini editor plugin is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Ini editor plugin is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Ini editor plugin. If not, see <http://www.gnu.org/licenses/>.
*/
#include "inieditor.h"
#include <QApplication>
#include <QDir>
#include <QMessageBox>
#include <QtPlugin>
#include <uibase/imoinfo.h>
#include <uibase/iplugingame.h>
#include <uibase/textviewer.h>
#include <uibase/utility.h>
using namespace MOBase;
IniEditor::IniEditor() : m_MOInfo(nullptr) {}
bool IniEditor::init(IOrganizer* moInfo)
{
m_MOInfo = moInfo;
return true;
}
QString IniEditor::name() const
{
return "INI Editor";
}
QString IniEditor::localizedName() const
{
return tr("INI Editor");
}
QString IniEditor::author() const
{
return "Tannin";
}
QString IniEditor::description() const
{
return tr("Very basic editor for INI files");
}
VersionInfo IniEditor::version() const
{
return VersionInfo(1, 1, 0, VersionInfo::RELEASE_FINAL);
}
QList<PluginSetting> IniEditor::settings() const
{
QList<PluginSetting> result;
result.push_back(PluginSetting("external", "Use an external editor to open the files",
QVariant(false)));
result.push_back(PluginSetting(
"associated",
"When using an external editor, use the application associated with \"INI\" "
"files. "
"If false, uses the \"edit\" command which usually invokes regular notepad.",
QVariant(true)));
return result;
}
QString IniEditor::displayName() const
{
return tr("INI Editor");
}
QString IniEditor::tooltip() const
{
return tr("Edit the INI files of the current profile");
}
QIcon IniEditor::icon() const
{
return QIcon(":/inieditor/icon_document");
}
void IniEditor::display() const
{
if (m_MOInfo == nullptr) {
throw MyException(tr("plugin not initialized"));
}
QStringList iniFiles = m_MOInfo->managedGame()->iniFiles();
if (m_MOInfo->pluginSetting(name(), "external").toBool()) {
for (QString const& file : iniFiles) {
QString fileName = m_MOInfo->profile()->absoluteIniFilePath(file);
::ShellExecuteW(nullptr,
m_MOInfo->pluginSetting(name(), "associated").toBool() ? L"open"
: L"edit",
ToWString(fileName).c_str(), nullptr, nullptr, SW_SHOWNORMAL);
}
} else {
TextViewer* viewer = new TextViewer("INI Files", parentWidget());
if (m_MOInfo->profile()->localSettingsEnabled()) {
viewer->setDescription(tr(
" Editing profile-specific INIs. Profile-specific game INI files are "
"Enabled.\n \n You can change the INI Editor settings (in the main Mod "
"Organizer settings under the plugins tab) to use an external text editor,\n "
"either notepad or your windows associated program to .INI files."));
} else {
viewer->setDescription(tr(
" Editing global INIs (in 'myGames' folder). Profile-specific game INI files "
"are Disabled.\n \n You can change the INI Editor settings (in the main Mod "
"Organizer settings under the plugins tab) to use an external text editor,\n "
"either notepad or your windows associated program to .INI files."));
}
for (QString const& file : iniFiles) {
QString fileName = m_MOInfo->profile()->absoluteIniFilePath(file);
QFileInfo fileInfo(fileName);
if (fileInfo.exists()) {
if (fileInfo.size() < 1024 * 1024) {
viewer->addFile(fileName, true);
} else {
QMessageBox::warning(parentWidget(), tr("File too big"),
tr("Sorry, the file %1 is too large"
" to be handled by the INI Editor")
.arg(fileName));
}
}
}
viewer->show();
}
}
#if QT_VERSION < QT_VERSION_CHECK(5, 0, 0)
Q_EXPORT_PLUGIN2(iniEditor, IniEditor)
#endif
+55 -56
View File
@@ -1,56 +1,55 @@
/*
Copyright (C) 2012 Sebastian Herbord. All rights reserved.
This file is part of ini editor plugin for MO
Ini editor plugin is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Ini editor plugin is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Ini editor plugin. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INIEDITOR_H
#define INIEDITOR_H
#include <uibase/iplugintool.h>
class IniEditor : public MOBase::IPluginTool
{
Q_OBJECT
Q_INTERFACES(MOBase::IPlugin MOBase::IPluginTool)
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
Q_PLUGIN_METADATA(IID "org.tannin.IniEditor")
#endif
public:
IniEditor();
virtual bool init(MOBase::IOrganizer *moInfo) override;
virtual QString name() const override;
virtual QString localizedName() const override;
virtual QString author() const override;
virtual QString description() const override;
virtual MOBase::VersionInfo version() const override;
virtual QList<MOBase::PluginSetting> settings() const override;
virtual QString displayName() const;
virtual QString tooltip() const;
virtual QIcon icon() const;
public slots:
virtual void display() const;
private:
const MOBase::IOrganizer *m_MOInfo;
};
#endif // INIEDITOR_H
/*
Copyright (C) 2012 Sebastian Herbord. All rights reserved.
This file is part of ini editor plugin for MO
Ini editor plugin is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Ini editor plugin is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Ini editor plugin. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef INIEDITOR_H
#define INIEDITOR_H
#include <uibase/iplugintool.h>
class IniEditor : public MOBase::IPluginTool
{
Q_OBJECT
Q_INTERFACES(MOBase::IPlugin MOBase::IPluginTool)
#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
Q_PLUGIN_METADATA(IID "org.tannin.IniEditor")
#endif
public:
IniEditor();
virtual bool init(MOBase::IOrganizer* moInfo) override;
virtual QString name() const override;
virtual QString localizedName() const override;
virtual QString author() const override;
virtual QString description() const override;
virtual MOBase::VersionInfo version() const override;
virtual QList<MOBase::PluginSetting> settings() const override;
virtual QString displayName() const;
virtual QString tooltip() const;
virtual QIcon icon() const;
public slots:
virtual void display() const;
private:
const MOBase::IOrganizer* m_MOInfo;
};
#endif // INIEDITOR_H
+2 -2
View File
@@ -27,7 +27,7 @@
<message>
<location filename="inieditor.cpp" line="115"/>
<source> Editing profile-specific INIs. Profile-specific game INI files are Enabled.
You can change the INI Editor settings (in the main Mod Organizer settings under the plugins tab) to use an external text editor,
either notepad or your windows associated program to .INI files.</source>
<translation type="unfinished"></translation>
@@ -45,7 +45,7 @@
<message>
<location filename="inieditor.cpp" line="118"/>
<source> Editing global INIs (in &apos;myGames&apos; folder). Profile-specific game INI files are Disabled.
You can change the INI Editor settings (in the main Mod Organizer settings under the plugins tab) to use an external text editor,
either notepad or your windows associated program to .INI files.</source>
<translation type="unfinished"></translation>