|
168 | 168 | (enh-ruby-mode . enh-ruby-indent-level) |
169 | 169 | (erlang-mode . erlang-indent-level) |
170 | 170 | (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)) |
183 | 183 | (gdscript-mode . gdscript-indent-offset) |
184 | 184 | (groovy-mode . groovy-indent-offset) |
185 | 185 | (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)) |
194 | 194 | (haxe-mode . c-basic-offset) |
195 | 195 | (haxor-mode . haxor-tab-width) |
196 | 196 | (idl-mode . c-basic-offset) |
|
233 | 233 | (scala-mode . scala-indent:step) |
234 | 234 | (scss-mode . css-indent-offset) |
235 | 235 | (sgml-mode . sgml-basic-offset) |
236 | | - (sh-mode . (sh-basic-offset sh-indentation)) |
| 236 | + (sh-mode . ( sh-basic-offset sh-indentation)) |
237 | 237 | (shader-mode . shader-indent-offset) |
238 | 238 | (slim-mode . slim-indent-offset) |
239 | 239 | (sml-mode . sml-indent-level) |
240 | 240 | (sql-mode . sql-indent-offset) |
241 | 241 | (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)) |
243 | 243 | (terra-mode . terra-indent-level) |
244 | 244 | (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)) |
260 | 260 | (yaml-mode . yaml-indent-offset) |
261 | 261 | (zig-mode . zig-indent-offset)) |
262 | 262 | "AList that maps `major-mode' to each major-mode's indent level variable name." |
|
303 | 303 | "Make sure the VAL is between MIN and MAX." |
304 | 304 | (max (min val max) min)) |
305 | 305 |
|
| 306 | +(defun indent-control--listify (obj) |
| 307 | + "Ensure OBJ is a list." |
| 308 | + (if (listp obj) obj (list obj))) |
| 309 | + |
306 | 310 | (defun indent-control--major-mode-p (name) |
307 | 311 | "Return non-nil if NAME is current variable `major-mode'." |
308 | 312 | (cond ((stringp name) (string= (symbol-name major-mode) name)) |
|
331 | 335 | 'indent-control-ensure-tab-width 'indent-control-ensure-indentable |
332 | 336 | "0.3.5") |
333 | 337 |
|
334 | | -(defun indent-control--indent-level-name () |
| 338 | +(defun indent-control--indent-level-names () |
335 | 339 | "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)))) |
339 | 344 |
|
340 | 345 | (defun indent-control--indent-level-record (&optional record-name) |
341 | 346 | "Return record of current indent level by RECORD-NAME." |
|
349 | 354 | (indent-control-ensure-indentable) |
350 | 355 | (user-error "[WARNING] Indentation level record not found: %s" record-name))) |
351 | 356 |
|
352 | | -(defun indent-control-set-indent-level-by-mode (new-level) |
| 357 | +(defun indent-control-set-indent-level-by-mode (&optional new-level) |
353 | 358 | "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)) |
359 | 366 | (setq-local standard-indent new-level)) |
360 | 367 | (when (and (integerp new-level) |
361 | 368 | (indent-control--set-indent-level-record new-level)) |
|
364 | 371 |
|
365 | 372 | (defun indent-control-get-indent-level-by-mode () |
366 | 373 | "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))) |
373 | 378 |
|
374 | 379 | (defun indent-control--delta-indent-level (delta-value) |
375 | 380 | "Increase/Decrease tab width by DELTA-VALUE." |
|
0 commit comments