Skip to content

Commit f1d9758

Browse files
committed
Simplify logic.
1 parent a4cfbd0 commit f1d9758

File tree

1 file changed

+22
-42
lines changed

1 file changed

+22
-42
lines changed

indent-control.el

Lines changed: 22 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -181,24 +181,34 @@
181181
;; (@* "Core" )
182182
;;
183183

184-
(defun indent-control--indent-level-by-mode ()
185-
"Return indentation level variable as symbol depends on current major mode."
184+
(defun indent-control--indent-level-name ()
185+
"Return symbol defined as indent level."
186186
(or (cdr (assoc major-mode indent-control-alist))
187187
(quote tab-width)))
188188

189-
(defun indent-control-set-indent-level-by-mode (tw)
190-
"Set the tab width (TW) for current major mode."
191-
(let ((var-symbol (indent-control--indent-level-by-mode)))
192-
(cond ((listp var-symbol) (dolist (indent-var var-symbol) (set indent-var tw)))
193-
(t (set var-symbol tw))))
194-
(when (integerp tw)
195-
(indent-control--set-indent-level-record-by-mode tw)
189+
(defun indent-control--indent-level-record (&optional mode-name)
190+
"Return record of current indent level by MODE-NAME."
191+
(unless mode-name (setq mode-name major-mode))
192+
(cdr (assoc mode-name indent-control-records)))
193+
194+
(defun indent-control--set-indent-level-record (new-level &optional mode-name)
195+
"Set NEW-LEVEl to MODE-NAME indent record."
196+
(unless mode-name (setq mode-name major-mode))
197+
(setf (cdr (assoc mode-name indent-control-records)) new-level))
198+
199+
(defun indent-control-set-indent-level-by-mode (new-level)
200+
"Set the NEW-LEVEL for current major mode."
201+
(let ((var-symbol (indent-control--indent-level-name)))
202+
(cond ((listp var-symbol) (dolist (indent-var var-symbol) (set indent-var new-level)))
203+
(t (set var-symbol new-level))))
204+
(when (integerp new-level)
205+
(indent-control--set-indent-level-record new-level)
196206
(indent-control--no-log-apply
197-
(message "[INFO] Current indent level: %s" tw))))
207+
(message "[INFO] Current indent level: %s" new-level))))
198208

199209
(defun indent-control-get-indent-level-by-mode ()
200210
"Get indentation level by mode."
201-
(let ((var-symbol (indent-control--indent-level-by-mode)))
211+
(let ((var-symbol (indent-control--indent-level-name)))
202212
(when (listp var-symbol) (setq var-symbol (nth 0 var-symbol)))
203213
(symbol-value var-symbol)))
204214

@@ -213,36 +223,6 @@
213223
(indent-control-set-indent-level-by-mode
214224
(indent-control--delta-ensure-valid-tab-width indent-level dv))))
215225

216-
(defun indent-control--set-indent-level-record-by-mode (tw &optional mn)
217-
"Set the tab width record by mode name MN with tab width TW."
218-
(unless mn (setq mn major-mode))
219-
(let ((index 0) (len (length indent-control-records)) break-it)
220-
(while (and (not break-it) (< index len))
221-
(let* ((record (nth index indent-control-records))
222-
(record-mode-name (car record)))
223-
(when (equal mn record-mode-name)
224-
(setf (cdr (nth index indent-control-records)) tw)
225-
(setq break-it t)))
226-
(setq index (1+ index)))
227-
(unless break-it
228-
(indent-control--no-log-apply
229-
(message "[WARNING] Indentation level record not found: %s" mn)))))
230-
231-
(defun indent-control--get-indent-level-record-by-mode (&optional mn)
232-
"Get the tab width record by mode name MN."
233-
(unless mn (setq mn major-mode))
234-
(let ((index 0) (len (length indent-control-records)) break-it
235-
;; Have default to `tab-width'.
236-
(target-tab-width tab-width))
237-
(while (and (not break-it) (< index len))
238-
(let* ((record (nth index indent-control-records))
239-
(record-mode-name (car record)) (record-tab-width (cdr record)))
240-
(when (equal mn record-mode-name)
241-
(setq target-tab-width record-tab-width
242-
break-it t)))
243-
(setq index (1+ index)))
244-
target-tab-width))
245-
246226
(defun indent-control--prog-mode-hook ()
247227
"Programming language mode hook."
248228
(indent-control--mute-apply
@@ -266,7 +246,7 @@
266246
;;;###autoload
267247
(defun indent-control-continue-with-tab-width-record ()
268248
"Keep the tab width the same as last time modified."
269-
(indent-control-set-indent-level-by-mode (indent-control--get-indent-level-record-by-mode)))
249+
(indent-control-set-indent-level-by-mode (indent-control--indent-level-record)))
270250

271251
;; NOTE: Initial the indent level once after module is loaded.
272252
;;;###autoload

0 commit comments

Comments
 (0)