java-mode does not indent Java 1.5
@-style annotations correctly. A quick fix is to define them as comments:
(add-hook 'java-mode-hook (lambda () "Treat Java 1.5 @-style annotations as comments." (setq c-comment-start-regexp "(@|/(/|[*][*]?))") (modify-syntax-entry ?@ "< b" java-mode-syntax-table)))
A more complete solution is provided by Lisp:java-mode-indent-annotations.el.
The most important thing to remember is that Java files use a different style. Therefore, to customize Java indentation, use the
(add-hook 'java-mode-hook (lambda () (setq c-basic-offset 4)))
‘c-basic-offset’ variable controls the basic “unit” of the indentation engine. When you hit the TAB key, you tell the indentation engine to indent to “the right place”. This will insert tabs and spaces as required. Therefore, hitting TAB will usually advance point by 4 when indenting Java source.
When you read other people’s Java source, however, tab characters will still be 8 wide.
Here is how to fix it:
(add-hook 'java-mode-hook (lambda () (setq c-basic-offset 4 tab-width 4 indent-tabs-mode t)))
This says that hitting TAB should advance point by 4, that tab characters in source files should display 4 wide, and that Emacs should use tab characters when it can. Therefore, the TAB key will insert tab characters, and they will display 4 wide.
If you set
‘indent-tabs-mode’ to nil, then Emacs will insert 4 spaces instead.