Skip to content

Commit 11e6a10

Browse files
committed
Do per-line replacements in cljfmt
1 parent 56cac86 commit 11e6a10

File tree

2 files changed

+17
-6
lines changed

2 files changed

+17
-6
lines changed

cs_cljfmt.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import os, re, sublime, subprocess
1+
import difflib, os, re, sublime, subprocess
22
from . import cs_common, cs_parser
33

44
def format_string(view, text):
@@ -30,14 +30,25 @@ def indent_lines(view, selections, edit):
3030
for region in regions:
3131
text = view.substr(region)
3232
if text_formatted := format_string(view, text):
33-
replacements.append((region, text_formatted))
34-
33+
pos = region.begin()
34+
diff = difflib.ndiff(text.splitlines(keepends=True), text_formatted.splitlines(keepends=True))
35+
for line in diff:
36+
if line[:2] == '- ':
37+
replacements.append((sublime.Region(pos, pos + len(line) - 2), ''))
38+
pos = pos + len(line) - 2
39+
elif line[:2] == '+ ':
40+
replacements.append((sublime.Region(pos, pos), line[2:]))
41+
elif line[:2] == ' ':
42+
pos = pos + len(line) - 2
43+
elif line[:2] == '? ':
44+
pass
3545
if replacements:
3646
selections = [(view.rowcol(r.a), view.rowcol(r.b)) for r in selections]
37-
change_id_sel = view.change_id()
47+
delta = 0
3848
for region, string in replacements:
39-
transformed_region = view.transform_region_from(region, change_id_sel)
49+
transformed_region = sublime.Region(region.a + delta, region.b + delta)
4050
view.replace(edit, transformed_region, string)
51+
delta = delta - region.size() + len(string)
4152

4253
selections.clear()
4354
for ((rowa, cola), (rowb, colb)) in selections:

script/nrepl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
if __name__ == '__main__':
55
os.chdir(os.path.dirname(__file__) + "/..")
66
subprocess.check_call(['clojure',
7-
'-Sdeps', '{:deps {nrepl/nrepl {:mvn/version "1.0.0"}, mvxcvi/puget {:mvn/version "1.3.4"}}}',
7+
'-Sdeps', '{:deps {nrepl/nrepl {:mvn/version "1.3.0"}, mvxcvi/puget {:mvn/version "1.3.4"}}}',
88
'-M', '-m', 'nrepl.cmdline',
99
'--interactive'
1010
])

0 commit comments

Comments
 (0)