Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Emacs has a concept of <em>modes</em>, which means that depending on what type of file you're editing it provides special functionality that is useful for that file. Every buffer has one major mode associated and optionally a number of minor modes.</p> <p>Indentation is one of the things that is typically mode-dependent. That is, you may have to configure indentation separately for every major-mode, because otherwise when you load a new file, its associated major mode may override your indentation settings. It's possible though to write a function that configures indentation and set up Emacs in a way that the function is invoked whenever a new major-mode is started.</p> <p>In order to realize the settings you want, you'll need to run a few lines of elisp code. (Unfortunately your description of what should happen when you hit TAB leaves out some details, I've implemented the simplest version I could think of below -- if it's not what you want, that can be changed, of course.)</p> <p>Put the following code in the file named <code>.emacs</code> in your home directory (<code>~</code>):</p> <pre><code>(setq-default indent-tabs-mode nil) ; use spaces for indentation (defvar my-indentation-width 2 "The number of spaces I prefer for line indentation.") (defun my-enter () "Inserts a newline character then indents the new line just like the previous line" (interactive) (newline) (indent-relative-maybe)) (defun my-indent () "When point is on leading white-space of a non-empty line, the line is indented `my-indentation-width' spaces. If point is at the beginning of an empty line, inserts `my-indentation-width' spaces." (interactive) (insert (make-string my-indentation-width ? ))) (defun my-indentation-setup () "Binds RETURN to the function `my-enter' and TAB to call `my-indent'" (local-set-key "\r" 'my-enter) (setq indent-line-function 'my-indent)) (defun delete-trailing-whitespace-and-blank-lines () "Deletes all whitespace at the end of a buffer (or, rather, a buffer's accessible portion, see `Narrowing'), including blank lines." (interactive) (let ((point (point))) (delete-trailing-whitespace) (goto-char (point-max)) (delete-blank-lines) (goto-char (min point (point-max))))) ;; make sure trailing whitespace is removed every time a buffer is saved. (add-hook 'before-save-hook 'delete-trailing-whitespace-and-blank-lines) ;; globally install my indentation setup (global-set-key "\r" 'my-enter) (setq indent-line-function 'my-indent) ;; also override key setting of major-modes, if any (add-hook 'after-change-major-mode-hook 'my-indentation-setup) </code></pre> <p>This works for me in Emacs 23, although I may have missed some edge cases. However, these changes are so fundamental that I predict you will run into incompatibilities sooner or later with some major-modes that expect indentation to work they set it up. If you really want to get into Emacs it's worthwhile adapting the habits you inherited from other editors to the way Emacs does things.</p> <p>For soft word-wrap there is a minor-mode called "longlines" which you can download from here: <a href="http://www.emacswiki.org/cgi-bin/emacs/download/longlines.el" rel="nofollow">http://www.emacswiki.org/cgi-bin/emacs/download/longlines.el</a> I haven't used it so I can't tell you how well it works.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload