aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorMicah Chambers2026-05-12 12:35:17 -0700
committerGitHub2026-05-12 19:35:17 +0000
commitab3531083cdbde5cdbee452e3560be8d940b3282 (patch)
tree4c57be4280e9f0dcebcd0cbaf71f0a8aca0058ad
parentc59c0d1a573a7b2fe491f78af4f2033bde454753 (diff)
downloadale-ab3531083cdbde5cdbee452e3560be8d940b3282.tar.gz

Feat: replace em dash with – (#5125)

  • no em dash
  • add tests
-rw-r--r--autoload/ale/fix/registry.vim5
-rw-r--r--autoload/ale/fixers/generic.vim4
-rw-r--r--test/fixers/test_generic_fixers.vader29
3 files changed, 38 insertions, 0 deletions
diff --git a/autoload/ale/fix/registry.vim b/autoload/ale/fix/registry.vim
index 7347a2a45..c40f802b3 100644
--- a/autoload/ale/fix/registry.vim
+++ b/autoload/ale/fix/registry.vim
@@ -207,6 +207,11 @@ let s:default_registry = {
\ 'suggested_filetypes': ['puppet'],
\ 'description': 'Run puppet-lint -f on a file.',
\ },
+\ 'replace_emdash': {
+\ 'function': 'ale#fixers#generic#ReplaceEmDash',
+\ 'suggested_filetypes': [],
+\ 'description': 'Replace em dash with -- ASCII characters.',
+\ },
\ 'remove_trailing_lines': {
\ 'function': 'ale#fixers#generic#RemoveTrailingBlankLines',
\ 'suggested_filetypes': [],
diff --git a/autoload/ale/fixers/generic.vim b/autoload/ale/fixers/generic.vim
index cb8865b48..3e8d96f23 100644
--- a/autoload/ale/fixers/generic.vim
+++ b/autoload/ale/fixers/generic.vim
@@ -1,6 +1,10 @@
" Author: w0rp <devw0rp@gmail.com>
" Description: Generic functions for fixing files with.
+function! ale#fixers#generic#ReplaceEmDash(buffer, lines) abort
+ return map(copy(a:lines), {_, line -> substitute(line, "\u2014", '--', 'g')})
+endfunction
+
function! ale#fixers#generic#RemoveTrailingBlankLines(buffer, lines) abort
let l:end_index = len(a:lines) - 1
diff --git a/test/fixers/test_generic_fixers.vader b/test/fixers/test_generic_fixers.vader
new file mode 100644
index 000000000..8658f754d
--- /dev/null
+++ b/test/fixers/test_generic_fixers.vader
@@ -0,0 +1,29 @@
+Execute(ReplaceEmDash should not change existing dashes):
+ AssertEqual
+ \ ['foo - bar', 'baz -- qux -- end'],
+ \ ale#fixers#generic#ReplaceEmDash(bufnr(''), ["foo - bar", "baz -- qux \u2014 end"])
+
+Execute(ReplaceEmDash should replace em dashes with double hyphens):
+ AssertEqual
+ \ ['foo -- bar', 'baz -- qux -- end'],
+ \ ale#fixers#generic#ReplaceEmDash(bufnr(''), ["foo \u2014 bar", "baz \u2014 qux \u2014 end"])
+
+Execute(ReplaceEmDash should handle lines without em dashes):
+ AssertEqual
+ \ ['no dashes here', 'just -- normal'],
+ \ ale#fixers#generic#ReplaceEmDash(bufnr(''), ['no dashes here', 'just -- normal'])
+
+Execute(ReplaceEmDash should handle empty input):
+ AssertEqual
+ \ [],
+ \ ale#fixers#generic#ReplaceEmDash(bufnr(''), [])
+
+Execute(RemoveTrailingBlankLines should remove trailing empty lines):
+ AssertEqual
+ \ ['foo', 'bar'],
+ \ ale#fixers#generic#RemoveTrailingBlankLines(bufnr(''), ['foo', 'bar', '', ''])
+
+Execute(RemoveTrailingBlankLines should preserve content when no trailing blanks):
+ AssertEqual
+ \ ['foo', 'bar'],
+ \ ale#fixers#generic#RemoveTrailingBlankLines(bufnr(''), ['foo', 'bar'])