diff --git a/config/install/geshifilter.settings.yml b/config/install/geshifilter.settings.yml index ffef5ca..f3d4cd5 100644 --- a/config/install/geshifilter.settings.yml +++ b/config/install/geshifilter.settings.yml @@ -44,6 +44,9 @@ tag_styles: 8: 0 16: 0 +# Tab width, the default from geshi is 8. +tab_width: 8 + # Default languages and tags. language: php: diff --git a/config/schema/geshifilter.shema.yml b/config/schema/geshifilter.shema.yml index d5a3c83..2848aa3 100644 --- a/config/schema/geshifilter.shema.yml +++ b/config/schema/geshifilter.shema.yml @@ -33,6 +33,8 @@ geshifilter.settings: type: sequence sequence: - type: integer + tab_width: + type: integer language: type: sequence sequence: diff --git a/src/Form/GeshiFilterSettingsForm.php b/src/Form/GeshiFilterSettingsForm.php index ab332b4..c7d5709 100644 --- a/src/Form/GeshiFilterSettingsForm.php +++ b/src/Form/GeshiFilterSettingsForm.php @@ -136,6 +136,15 @@ class GeshiFilterSettingsForm extends ConfigFormBase { '@line-numbers' => \Drupal::l($this->t('Line numbers'), Url::fromUri('http://qbnz.com/highlighter/geshi-doc.html#line-numbers')), ]), ]; + + // Generic tags. + $form['highlighting_options']["tab_width"] = [ + '#type' => 'textfield', + '#title' => $this->t('Tab Width'), + '#default_value' => $config->get('tab_width'), + '#description' => $this->t('How many spaces to use when replacing tabs.'), + ]; + // Highlight_string usage option. $form['highlighting_options']['use_highlight_string_for_php'] = [ '#type' => 'checkbox', @@ -261,6 +270,7 @@ class GeshiFilterSettingsForm extends ConfigFormBase { $config->set('use_format_specific_options', $form_state->getValue('use_format_specific_options')) ->set('default_highlighting', $form_state->getValue('default_highlighting')) ->set('default_line_numbering', $form_state->getValue('default_line_numbering')) + ->set('tab_width', $form_state->getValue('tab_width')) ->set('use_highlight_string_for_php', $form_state->getValue('use_highlight_string_for_php')) ->set('enable_keyword_urls', $form_state->getValue('enable_keyword_urls')) ->set('css_mode', $form_state->getValue('css_mode')) diff --git a/src/GeshiFilterProcess.php b/src/GeshiFilterProcess.php index b056694..6a0d600 100644 --- a/src/GeshiFilterProcess.php +++ b/src/GeshiFilterProcess.php @@ -99,6 +99,8 @@ class GeshiFilterProcess { } else { $geshi->highlight_lines_extra($special_lines); + // How many spaces to use for tabs. + $geshi->set_tab_width($config->get('tab_width')); // Block source code mode. $geshi->set_header_type((int) $config->get('code_container', GESHI_HEADER_PRE));