Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions app/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ void MainWindow::initializeApp()
lastUsedTheme();

ui->plainTextEdit->tabWidthChanged(options->tabWidth());
ui->plainTextEdit->spacesForTabsChanged(options->isSpacesForTabsEnabled());
ui->plainTextEdit->rulerEnabledChanged(options->isRulerEnabled());
ui->plainTextEdit->rulerPosChanged(options->rulerPos());

Expand Down Expand Up @@ -1055,6 +1056,8 @@ void MainWindow::setupMarkdownEditor()
ui->plainTextEdit, &MarkdownEditor::editorFontChanged);
connect(options, &Options::tabWidthChanged,
ui->plainTextEdit, &MarkdownEditor::tabWidthChanged);
connect(options, &Options::spacesForTabsChanged,
ui->plainTextEdit, &MarkdownEditor::spacesForTabsChanged);
connect(options, &Options::rulerEnabledChanged,
ui->plainTextEdit, &MarkdownEditor::rulerEnabledChanged);
connect(options, &Options::rulerPosChanged,
Expand Down
30 changes: 30 additions & 0 deletions app/markdowneditor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,31 @@ void MarkdownEditor::resizeEvent(QResizeEvent *event)

void MarkdownEditor::keyPressEvent(QKeyEvent *e)
{
if(insertSpacesForTabs)
{
if(Qt::Key_Tab == e->key())
{
QTextCursor cursor = textCursor();
QFontMetrics fm(font());
int tabwidth = this->tabStopWidth() / fm.width(' ');

cursor.beginEditBlock();
int currentPosition = cursor.position();
cursor.movePosition(QTextCursor::StartOfLine, QTextCursor::KeepAnchor);
int indentToAdd = cursor.selectedText().length() % tabwidth;
indentToAdd = (0 == indentToAdd) ? tabwidth : tabwidth - indentToAdd;
cursor.setPosition(currentPosition);
for(int i = 0; i < indentToAdd; ++i)
{
cursor.insertText(" ");
}
cursor.endEditBlock();

e->accept();
return;
}
}

if (completer && completer->isPopupVisible()) {
// The following keys are forwarded by the completer to the widget
switch (e->key()) {
Expand Down Expand Up @@ -257,6 +282,11 @@ void MarkdownEditor::tabWidthChanged(int tabWidth)
setTabStopWidth(tabWidth*fm.width(' '));
}

void MarkdownEditor::spacesForTabsChanged(bool enabled)
{
insertSpacesForTabs = enabled;
}

void MarkdownEditor::rulerEnabledChanged(bool enabled)
{
rulerEnabled = enabled;
Expand Down
2 changes: 2 additions & 0 deletions app/markdowneditor.h
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ class MarkdownEditor : public QPlainTextEdit

public slots:
void tabWidthChanged(int tabWidth);
void spacesForTabsChanged(bool enabled);
void editorFontChanged(const QFont &font);
void rulerEnabledChanged(bool enabled);
void rulerPosChanged(int pos);
Expand Down Expand Up @@ -95,6 +96,7 @@ private slots:
bool showHardLinebreaks;
bool rulerEnabled;
int rulerPos;
bool insertSpacesForTabs;
};

#endif // MARKDOWNEDITOR_H
15 changes: 15 additions & 0 deletions app/options.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ static const char* FONT_FAMILY_DEFAULT = "Monospace";
static const char* FONT_FAMILY = "editor/font/family";
static const char* FONT_SIZE = "editor/font/size";
static const char* TAB_WIDTH = "editor/tabwidth";
static const char* SPACESFORTABS_ENABLED = "editor/spacesfortabs/enabled";
static const char* LINECOLUMN_ENABLED = "editor/linecolumn/enabled";
static const char* RULER_ENABLED = "editor/ruler/enabled";
static const char* RULER_POS = "editor/ruler/pos";
Expand Down Expand Up @@ -80,6 +81,7 @@ Options::Options(QObject *parent) :
m_sourceAtSingleSizeEnabled(true),
m_spellingCheckEnabled(true),
m_diagramSupportEnabled(false),
m_spacesForTabsEnabled(false),
m_lineColumnEnabled(true),
m_rulerEnabled(false),
m_rulerPos(80),
Expand Down Expand Up @@ -127,6 +129,17 @@ void Options::setTabWidth(int width)
emit tabWidthChanged(width);
}

bool Options::isSpacesForTabsEnabled() const
{
return m_spacesForTabsEnabled;
}

void Options::setSpacesForTabsEnabled(bool enabled)
{
m_spacesForTabsEnabled = enabled;
emit spacesForTabsChanged(enabled);
}

bool Options::isLineColumnEnabled() const
{
return m_lineColumnEnabled;
Expand Down Expand Up @@ -493,6 +506,7 @@ void Options::readSettings()
int fontSize = settings.value(FONT_SIZE, 10).toInt();

m_tabWidth = settings.value(TAB_WIDTH, 8).toInt();
m_spacesForTabsEnabled = settings.value(SPACESFORTABS_ENABLED, false).toBool();
m_lineColumnEnabled = settings.value(LINECOLUMN_ENABLED, false).toBool();
m_rulerEnabled = settings.value(RULER_ENABLED, false).toBool();
m_rulerPos = settings.value(RULER_POS, 80).toInt();
Expand Down Expand Up @@ -567,6 +581,7 @@ void Options::writeSettings()
settings.setValue(FONT_FAMILY, font.family());
settings.setValue(FONT_SIZE, font.pointSize());
settings.setValue(TAB_WIDTH, m_tabWidth);
settings.setValue(SPACESFORTABS_ENABLED, m_spacesForTabsEnabled);
settings.setValue(LINECOLUMN_ENABLED, m_lineColumnEnabled);
settings.setValue(RULER_ENABLED, m_rulerEnabled);
settings.setValue(RULER_POS, m_rulerPos);
Expand Down
5 changes: 5 additions & 0 deletions app/options.h
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,9 @@ class Options : public QObject
int tabWidth() const;
void setTabWidth(int width);

bool isSpacesForTabsEnabled() const;
void setSpacesForTabsEnabled(bool enabled);

bool isLineColumnEnabled() const;
void setLineColumnEnabled(bool enabled);

Expand Down Expand Up @@ -159,6 +162,7 @@ class Options : public QObject
void editorFontChanged(const QFont &font);
void editorStyleChanged();
void tabWidthChanged(int tabWidth);
void spacesForTabsChanged(bool enabled);
void lineColumnEnabledChanged(bool enabled);
void rulerEnabledChanged(bool enabled);
void rulerPosChanged(int pos);
Expand Down Expand Up @@ -193,6 +197,7 @@ class Options : public QObject
bool m_spellingCheckEnabled;
bool m_yamlHeaderSupportEnabled;
bool m_diagramSupportEnabled;
bool m_spacesForTabsEnabled;
bool m_lineColumnEnabled;
bool m_rulerEnabled;
int m_rulerPos;
Expand Down
2 changes: 2 additions & 0 deletions app/optionsdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@ void OptionsDialog::readState()
ui->sizeComboBox->setCurrentText(QString().setNum(font.pointSize()));
ui->sourceSingleSizedCheckBox->setChecked(options->isSourceAtSingleSizeEnabled());
ui->tabWidthSpinBox->setValue(options->tabWidth());
ui->spacesForTabsCheckBox->setChecked(options->isSpacesForTabsEnabled());
ui->lineColumnCheckBox->setChecked(options->isLineColumnEnabled());
ui->rulerEnableCheckBox->setChecked(options->isRulerEnabled());
ui->rulerPosSpinBox->setValue(options->rulerPos());
Expand Down Expand Up @@ -337,6 +338,7 @@ void OptionsDialog::saveState()
options->setEditorFont(font);
options->setSourceAtSingleSizeEnabled(ui->sourceSingleSizedCheckBox->isChecked());
options->setTabWidth(ui->tabWidthSpinBox->value());
options->setSpacesForTabsEnabled(ui->spacesForTabsCheckBox->isChecked());
options->setLineColumnEnabled(ui->lineColumnCheckBox->isChecked());
options->setRulerEnabled(ui->rulerEnableCheckBox->isChecked());
options->setRulerPos(ui->rulerPosSpinBox->value());
Expand Down
23 changes: 23 additions & 0 deletions app/optionsdialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,29 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>6</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QCheckBox" name="spacesForTabsCheckBox">
<property name="text">
<string>Insert Spaces for Tabs</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
Expand Down