This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/layers/+lang/asm/funcs.el

41 lines
1.6 KiB
EmacsLisp
Raw Normal View History

;;; funcs.el --- Asm Layer functions File for Spacemacs
2016-01-06 09:13:05 +00:00
;;
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
2016-01-06 09:13:05 +00:00
;;
;; Author: Tu, Do Hoang <tuhdo1710@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
2016-01-06 09:13:05 +00:00
(defun asm-generic-setup ()
(setq indent-tabs-mode nil) ; use spaces to indent
(setq tab-stop-list (number-sequence 2 60 2))) ; 2 spaces per tab
(defun asm-electric-indent-local-mode-off ()
(electric-indent-local-mode -1))
2016-01-06 09:13:05 +00:00
;; when we press ':' character, it runs `asm-colon' command in asm-mode.
;; The command automatically removes the indentation ofcurrent line, since
;; every non-whitespace character before a colon is a label in asm and
;; label has to be at the beginning of a line. However, the problem is
;; that when deleting indentation, trailing spaces are left between the
;; colon and the original point the colon was inserted.
;;
;; These functions solve that problem. First, check whether we have any
;; space or tab after point. If so, don't do anything becuase the spaces are
;; there intentionally. If not, we delete all trailing spaces between
;; point and colon.
(defvar asm-colon-has-space nil)
(defun asm-colon-check-space ()
(setq asm-colon-has-space nil)
(when (and (not (null (char-after)))
(member (string (char-after)) '(" " "\t")))
2016-01-06 09:13:05 +00:00
(setq asm-colon-has-space t)))
(defun asm-colon-delete-spaces ()
(unless asm-colon-has-space
(call-interactively 'delete-horizontal-space)))
(advice-add 'asm-colon :before 'asm-colon-check-space)
(advice-add 'asm-colon :after 'asm-colon-delete-spaces)