mirror of https://github.com/helix-editor/helix
Add text-width to config.toml
parent
9d73a0d112
commit
404406ac6a
|
@ -57,6 +57,7 @@ on unix operating systems.
|
|||
| `rulers` | List of column positions at which to display the rulers. Can be overridden by language specific `rulers` in `languages.toml` file. | `[]` |
|
||||
| `bufferline` | Renders a line at the top of the editor displaying open buffers. Can be `always`, `never` or `multiple` (only shown if more than one buffer is in use) | `never` |
|
||||
| `color-modes` | Whether to color the mode indicator with different colors depending on the mode itself | `false` |
|
||||
| `text-width` | Set the maximum line width for text wrapping with :reflow | `80` |
|
||||
|
||||
### `[editor.statusline]` Section
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ pub struct LanguageConfiguration {
|
|||
pub shebangs: Vec<String>, // interpreter(s) associated with language
|
||||
pub roots: Vec<String>, // these indicate project roots <.git, Cargo.toml>
|
||||
pub comment_token: Option<String>,
|
||||
pub max_line_length: Option<usize>,
|
||||
pub text_width: Option<usize>,
|
||||
|
||||
#[serde(default, skip_serializing, deserialize_with = "deserialize_lsp_config")]
|
||||
pub config: Option<serde_json::Value>,
|
||||
|
|
|
@ -2,6 +2,6 @@ use smartstring::{LazyCompact, SmartString};
|
|||
|
||||
/// Given a slice of text, return the text re-wrapped to fit it
|
||||
/// within the given width.
|
||||
pub fn reflow_hard_wrap(text: &str, max_line_len: usize) -> SmartString<LazyCompact> {
|
||||
textwrap::refill(text, max_line_len).into()
|
||||
pub fn reflow_hard_wrap(text: &str, text_width: usize) -> SmartString<LazyCompact> {
|
||||
textwrap::refill(text, text_width).into()
|
||||
}
|
||||
|
|
|
@ -1740,30 +1740,26 @@ fn reflow(
|
|||
}
|
||||
|
||||
let scrolloff = cx.editor.config().scrolloff;
|
||||
let cfg_text_width: usize = cx.editor.config().text_width;
|
||||
let (view, doc) = current!(cx.editor);
|
||||
|
||||
const DEFAULT_MAX_LEN: usize = 79;
|
||||
|
||||
// Find the max line length by checking the following sources in order:
|
||||
// Find the text_width by checking the following sources in order:
|
||||
// - The passed argument in `args`
|
||||
// - The configured max_line_len for this language in languages.toml
|
||||
// - The const default we set above
|
||||
let max_line_len: usize = args
|
||||
// - The configured text-width for this language in languages.toml
|
||||
// - The configured text-width in the config.toml
|
||||
let text_width: usize = args
|
||||
.get(0)
|
||||
.map(|num| num.parse::<usize>())
|
||||
.transpose()?
|
||||
.or_else(|| {
|
||||
doc.language_config()
|
||||
.and_then(|config| config.max_line_length)
|
||||
})
|
||||
.unwrap_or(DEFAULT_MAX_LEN);
|
||||
.or_else(|| doc.language_config().and_then(|config| config.text_width))
|
||||
.unwrap_or(cfg_text_width);
|
||||
|
||||
let rope = doc.text();
|
||||
|
||||
let selection = doc.selection(view.id);
|
||||
let transaction = Transaction::change_by_selection(rope, selection, |range| {
|
||||
let fragment = range.fragment(rope.slice(..));
|
||||
let reflowed_text = helix_core::wrap::reflow_hard_wrap(&fragment, max_line_len);
|
||||
let reflowed_text = helix_core::wrap::reflow_hard_wrap(&fragment, text_width);
|
||||
|
||||
(range.from(), range.to(), Some(reflowed_text))
|
||||
});
|
||||
|
|
|
@ -241,6 +241,8 @@ pub struct Config {
|
|||
pub auto_format: bool,
|
||||
/// Automatic save on focus lost. Defaults to false.
|
||||
pub auto_save: bool,
|
||||
/// Set a global text_width
|
||||
pub text_width: usize,
|
||||
/// Time in milliseconds since last keypress before idle timers trigger.
|
||||
/// Used for autocompletion, set to 0 for instant. Defaults to 400ms.
|
||||
#[serde(
|
||||
|
@ -764,6 +766,7 @@ impl Default for Config {
|
|||
indent_guides: IndentGuidesConfig::default(),
|
||||
color_modes: false,
|
||||
soft_wrap: SoftWrap::default(),
|
||||
text_width: 80,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue