diff options
| author | Akshay Nair <phenax5@gmail.com> | 2025-10-14 09:53:33 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2025-10-21 13:39:45 +0530 |
| commit | 94bb19748d3bb8636cf252539b8f0be18f46515a (patch) | |
| tree | 8029e727bd4a8d2a1282cd9b08b9cf8d6c3e72ce /scripts/apply_vimgrep_updates.fnl | |
| parent | 2fa61e7942d899c7d883d3f5a82e7623740ebb6b (diff) | |
| download | kakoune-config-94bb19748d3bb8636cf252539b8f0be18f46515a.tar.gz kakoune-config-94bb19748d3bb8636cf252539b8f0be18f46515a.zip | |
Switch grep update script to fnl
Diffstat (limited to 'scripts/apply_vimgrep_updates.fnl')
| -rwxr-xr-x | scripts/apply_vimgrep_updates.fnl | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/scripts/apply_vimgrep_updates.fnl b/scripts/apply_vimgrep_updates.fnl new file mode 100755 index 0000000..b70e93e --- /dev/null +++ b/scripts/apply_vimgrep_updates.fnl @@ -0,0 +1,39 @@ +#!/usr/bin/env -S fennel --lua luajit + +(local M {}) + +(fn M.main [] + (local write-count (M.apply-vimgrep-changes)) + (print (.. "Applied " write-count " changes"))) + +(fn M.apply-vimgrep-changes [] + (var count 0) + (each [line (io.lines)] + (local (filepath linenr _ text) (M.parse-vimgrep line)) + (when filepath + (local applied? (M.update-line filepath linenr text)) + (when applied? + (set count (+ count 1))))) + count) + +(fn M.parse-vimgrep [line] + (local (filepath linenr col text) (string.match line "(.*):(%d+):(%d+):(.*)")) + (values filepath (tonumber linenr) col text)) + +(fn M.update-line [filepath linenr text] + (local lines (M.read-lines filepath)) + (var written? false) + (when (and (> (length lines) linenr) (not= (. lines linenr) text)) + (set (. lines linenr) text) + (local file (io.open filepath :w)) + (file:write (table.concat lines "\n")) + (file:close) + (set written? true)) + written?) + +(fn M.read-lines [filepath] + (local file (io.open filepath :r)) + (local lines []) + (each [line (file:lines)] (table.insert lines line)) + (file:close) + lines) |
