如何在emacs中设置4个空格缩进

如何在emacs中设置4个空格缩进,emacs,indentation,Emacs,Indentation,每次我添加新行时,它都会自动缩进,但缩进的是2个空格,而不是4个空格。 下面是我的.emacs代码片段 (defun make-vline-xpm (width height color &optional lor) (let* ((w width) (h height) (s1 (concat "\"" (make-string w (string-to-char " ")) "\"")) (s2 (cond

每次我添加新行时,它都会自动缩进,但缩进的是2个空格,而不是4个空格。 下面是我的.emacs代码片段

(defun make-vline-xpm (width height color &optional lor)
  (let* ((w width)
         (h height)
         (s1 (concat "\"" (make-string w (string-to-char " ")) "\""))
         (s2 (cond
              ((eq lor 0)
               (concat "\"." (make-string (1- w) (string-to-char " ")) "\""))
              ((eq lor 1)
               (concat "\"" (make-string (1- w) (string-to-char " ")) ".\""))
              ((null lor)
               (concat "\"" (make-string (- (1- w)(/ (1- w) 2))(string-to-char " "))
                       "." (make-string (/ (1- w) 2)(string-to-char " ")) "\""))))
         (sa (concat s1 ",\n" s2 ",\n")))
    (eval `(concat "/* XPM */
static char * dot_vline_xpm[] = {
\"" (number-to-string w) " " (number-to-string h) " 2 1\",
\"  c None\",
\". c " color "\",\n"
,@(mapcar (lambda(x) sa)
          (make-list (1- (/ h 2)) 0))
s1 ",\n" s2 "};"
))))

(defvar indent-vline-img (make-vline-xpm 9 20 "#4D4D4D"))
(defun draw-indent-tab (beg end &optional color)
  (if window-system
      (set-text-properties
       beg end
       `(display (image
                  :type xpm
                  :data ,indent-vline-img
                  :pointer text
                  :ascent center
                  :mask (heuristic t))
                 rear-nonsticky (display)
                 fontified t))
    (compose-region
     beg end
     (prog1 "|"
       (set-text-properties beg end '(font-lock-face (:foreground "#4D4D4D"))))
     'decompose-region)))

(defun draw-indent-vline ()
  (interactive)
  (save-excursion
    (beginning-of-line)
    (let* ((i (current-indentation))
           (l (save-excursion
                (count-lines (point)
                             (forward-list)))))
      (while (> l 0)
        (let* ((p1 (progn (move-to-column i)(point)))
               (p2 (1+ p1)))
          (if (and (eq (get-byte p1) 32)
                   (save-excursion
                     (skip-chars-backward " ")(bolp)))
              (draw-indent-tab p1 p2))
          nil)
        (forward-line)
        (setq l (1- l))))))

(defun indent-vline-lisp ()
  (interactive)
  (funcall
   (lambda (x)
     (font-lock-add-keywords
      nil `((,x
             (0 (draw-indent-vline))))))
   "^[ \t]*[,`#'(]")
  (defadvice delete-char (after indent-vline activate compile)
    (save-excursion
      (let* ((p (point))
             (q (skip-chars-forward " "))
             (x (progn (skip-chars-backward " ")(bolp))))
        (if x
            (remove-text-properties p (+ p q) '(display)))))))

(defun indent-vline ()
  (interactive)
  (funcall
   (lambda (x)
     (font-lock-add-keywords
      nil `((,x
             (0 (if (save-excursion
                      (skip-chars-backward " ")(bolp))
                    (let* ((p1 (point))
                           (p2 (1+ p1)))
                      (if (or (null (eq (get-byte p1) 32))
                              (get-text-property p1 'display))
                          nil
                        (draw-indent-tab p1 p2)
                        nil))))))))
   "   \\( \\)")
  (defadvice delete-char (after indent-vline activate compile)
    (save-excursion
      (let* ((p (point))
             (q (skip-chars-forward " "))
             (x (progn (skip-chars-backward " ")(bolp))))
        (if x
            (remove-text-properties p (+ p q) '(display)))))))
我不懂lisp语言。此.emscs是从其他文件中复制的。所以我的问题是如何设置4个空格缩进? 我已经尝试将下面的内容添加到我的.emacs中,但它不起作用

(setq-default indent-tabs-mode nil)
(setq-default tab-width 4)
(setq indent-line-function 'insert-tab)

使用
自定义设置变量如何

(custom-set-variables
    '(tab-width 4))

这些行有潜在的危险,因为init文件中不能有多个
自定义设置变量的实例。由于@city不是lisp方面的专家,因此最好建议使用M-x自定义变量选项卡-width@juanleon,两种方法都不起作用……我不知道为什么。无论如何谢谢你的帮助。看来你的设置中还有其他东西在改变你的配置。。。只需以“emacs-q”的形式启动emacs,然后求值
(setq默认缩进制表符模式nil)
(setq默认制表符宽度4)
。然后看看问题是否仍然存在。如果没有,您需要检查其余的设置。您没有提供足够的信息。此问答可能会提供一些启发: