Skip to content

Commit 6b8e177

Browse files
committed
feat: improve prompt
1 parent 0fb35b8 commit 6b8e177

File tree

1 file changed

+58
-53
lines changed

1 file changed

+58
-53
lines changed

indent-control.el

Lines changed: 58 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -168,29 +168,29 @@
168168
(enh-ruby-mode . enh-ruby-indent-level)
169169
(erlang-mode . erlang-indent-level)
170170
(ess-mode . ess-indent-offset)
171-
(f90-mode . (f90-associate-indent
172-
f90-continuation-indent
173-
f90-critical-indent
174-
f90-do-indent
175-
f90-if-indent
176-
f90-program-indent
177-
f90-type-indent))
178-
(feature-mode . (feature-indent-offset
179-
feature-indent-level))
180-
(fsharp-mode . (fsharp-continuation-offset
181-
fsharp-indent-level
182-
fsharp-indent-offset))
171+
(f90-mode . ( f90-associate-indent
172+
f90-continuation-indent
173+
f90-critical-indent
174+
f90-do-indent
175+
f90-if-indent
176+
f90-program-indent
177+
f90-type-indent))
178+
(feature-mode . ( feature-indent-offset
179+
feature-indent-level))
180+
(fsharp-mode . ( fsharp-continuation-offset
181+
fsharp-indent-level
182+
fsharp-indent-offset))
183183
(gdscript-mode . gdscript-indent-offset)
184184
(groovy-mode . groovy-indent-offset)
185185
(jenkinsfile-mode . groovy-indent-offset)
186-
(haskell-mode . (haskell-indent-spaces
187-
haskell-indent-offset
188-
haskell-indentation-layout-offset
189-
haskell-indentation-left-offset
190-
haskell-indentation-starter-offset
191-
haskell-indentation-where-post-offset
192-
haskell-indentation-where-pre-offset
193-
shm-indent-spaces))
186+
(haskell-mode . ( haskell-indent-spaces
187+
haskell-indent-offset
188+
haskell-indentation-layout-offset
189+
haskell-indentation-left-offset
190+
haskell-indentation-starter-offset
191+
haskell-indentation-where-post-offset
192+
haskell-indentation-where-pre-offset
193+
shm-indent-spaces))
194194
(haxe-mode . c-basic-offset)
195195
(haxor-mode . haxor-tab-width)
196196
(idl-mode . c-basic-offset)
@@ -233,30 +233,30 @@
233233
(scala-mode . scala-indent:step)
234234
(scss-mode . css-indent-offset)
235235
(sgml-mode . sgml-basic-offset)
236-
(sh-mode . (sh-basic-offset sh-indentation))
236+
(sh-mode . ( sh-basic-offset sh-indentation))
237237
(shader-mode . shader-indent-offset)
238238
(slim-mode . slim-indent-offset)
239239
(sml-mode . sml-indent-level)
240240
(sql-mode . sql-indent-offset)
241241
(svelte-mode . svelte-basic-offset)
242-
(tcl-mode . (tcl-indent-level tcl-continued-indent-level))
242+
(tcl-mode . ( tcl-indent-level tcl-continued-indent-level))
243243
(terra-mode . terra-indent-level)
244244
(typescript-mode . typescript-indent-level)
245-
(verilog-mode . (verilog-indent-level
246-
verilog-indent-level-behavioral
247-
verilog-indent-level-declaration
248-
verilog-indent-level-module
249-
verilog-cexp-indent
250-
verilog-case-indent))
251-
(web-mode . (web-mode-attr-indent-offset
252-
web-mode-attr-value-indent-offset
253-
web-mode-code-indent-offset
254-
web-mode-css-indent-offset
255-
web-mode-markup-indent-offset
256-
web-mode-sql-indent-offset
257-
web-mode-block-padding
258-
web-mode-script-padding
259-
web-mode-style-padding))
245+
(verilog-mode . ( verilog-indent-level
246+
verilog-indent-level-behavioral
247+
verilog-indent-level-declaration
248+
verilog-indent-level-module
249+
verilog-cexp-indent
250+
verilog-case-indent))
251+
(web-mode . ( web-mode-attr-indent-offset
252+
web-mode-attr-value-indent-offset
253+
web-mode-code-indent-offset
254+
web-mode-css-indent-offset
255+
web-mode-markup-indent-offset
256+
web-mode-sql-indent-offset
257+
web-mode-block-padding
258+
web-mode-script-padding
259+
web-mode-style-padding))
260260
(yaml-mode . yaml-indent-offset)
261261
(zig-mode . zig-indent-offset))
262262
"AList that maps `major-mode' to each major-mode's indent level variable name."
@@ -303,6 +303,10 @@
303303
"Make sure the VAL is between MIN and MAX."
304304
(max (min val max) min))
305305

306+
(defun indent-control--listify (obj)
307+
"Ensure OBJ is a list."
308+
(if (listp obj) obj (list obj)))
309+
306310
(defun indent-control--major-mode-p (name)
307311
"Return non-nil if NAME is current variable `major-mode'."
308312
(cond ((stringp name) (string= (symbol-name major-mode) name))
@@ -331,11 +335,12 @@
331335
'indent-control-ensure-tab-width 'indent-control-ensure-indentable
332336
"0.3.5")
333337

334-
(defun indent-control--indent-level-name ()
338+
(defun indent-control--indent-level-names ()
335339
"Return symbol defined as indent level."
336-
(or (cdr (assoc major-mode indent-control-alist))
337-
(quote standard-indent)
338-
(quote tab-width)))
340+
(indent-control--listify
341+
(or (cdr (assoc major-mode indent-control-alist))
342+
(quote standard-indent)
343+
(quote tab-width))))
339344

340345
(defun indent-control--indent-level-record (&optional record-name)
341346
"Return record of current indent level by RECORD-NAME."
@@ -349,13 +354,15 @@
349354
(indent-control-ensure-indentable)
350355
(user-error "[WARNING] Indentation level record not found: %s" record-name)))
351356

352-
(defun indent-control-set-indent-level-by-mode (new-level)
357+
(defun indent-control-set-indent-level-by-mode (&optional new-level)
353358
"Set the NEW-LEVEL for current major mode."
354-
(interactive "NNew indent level: ")
355-
(let ((var-symbol (indent-control--indent-level-name)))
356-
(cond ((listp var-symbol)
357-
(dolist (indent-var var-symbol) (set indent-var new-level)))
358-
(t (set var-symbol new-level)))
359+
(interactive)
360+
(let* ((current (indent-control-get-indent-level-by-mode))
361+
(prompt (format "New indent level (current: %s): " current))
362+
(vars (indent-control--indent-level-names))
363+
(new-level (or new-level (read-number prompt))))
364+
(dolist (var vars)
365+
(set var new-level))
359366
(setq-local standard-indent new-level))
360367
(when (and (integerp new-level)
361368
(indent-control--set-indent-level-record new-level))
@@ -364,12 +371,10 @@
364371

365372
(defun indent-control-get-indent-level-by-mode ()
366373
"Get indentation level by mode."
367-
(let ((var-symbol (indent-control--indent-level-name)))
368-
(when (listp var-symbol) (setq var-symbol (nth 0 var-symbol)))
369-
(unless (symbol-value var-symbol) (indent-control-ensure-indentable))
370-
(or (symbol-value var-symbol)
371-
standard-indent
372-
tab-width)))
374+
(let* ((vars (indent-control--indent-level-names))
375+
(var (car vars)))
376+
(unless (symbol-value var) (indent-control-ensure-indentable))
377+
(symbol-value var)))
373378

374379
(defun indent-control--delta-indent-level (delta-value)
375380
"Increase/Decrease tab width by DELTA-VALUE."

0 commit comments

Comments
 (0)