代码之家  ›  专栏  ›  技术社区  ›  Ryan C. Thompson

如何告诉emacs elisp函数的参数应该如何缩进?

  •  2
  • Ryan C. Thompson  · 技术社区  · 15 年前

    progn . 我怎样才能告诉emacs这个函数应该以与之相同的方式缩进呢

    2 回复  |  直到 12 年前
        1
  •  7
  •   6502    8 年前

    这应该够了

    (put 'myfunc 'lisp-indent-function 0)
    

    lisp-indent-function (发现者) C-h f lisp缩进函数RET ):

    lisp-indent-function is a compiled Lisp function in `lisp-mode.el'.
    
    (lisp-indent-function indent-point state)
    
    This function is the normal value of the variable
    `lisp-indent-function`. It is used when indenting a line within
    a function call, to see if the called function says anything
    special about how to indent the line.
    
    indent-point is the position where the user typed TAB, or
    equivalent. Point is located at the point to indent under
    (for default indentation); state is the `parse-partial-sexp`
    state for that position.
    
    If the current line is in a call to a Lisp function which has
    a non-nil property `lisp-indent-function`, that specifies how
    to do the indentation.  The property value can be:
    
    * `defun`, meaning indent `defun`-style;
    
    * an integer N, meaning indent the first N arguments specially
      like ordinary function arguments and then indent any further
      arguments like a body;
    
    * a function to call just as this function was called. If that
      function returns nil, that means it doesn't specify
      the indentation.
    
    This function also returns nil meaning don't specify the
    indentation.
    
        2
  •  3
  •   phils    12 年前

    C-h公司 (elisp) Indenting Macros

    在这种情况下:

    (defmacro my-macro (&rest body)
      "Does things"
      (declare (indent defun))
      `(progn ,@body))
    
    (my-macro
      (message "foo")
      (message "bar"))
    
    推荐文章