Set `next-error-overlay-arrow-position' to nil. Also set it to
nil in the local hook `kill-buffer-hook'. Make local variable
`overlay-arrow-string' and set it to "=>".
(compilation-goto-locus): Set BOL position to
`next-error-overlay-arrow-position' instead of
`overlay-arrow-position'.
(compilation-mode-font-lock-keywords): Check col and end-col by `integerp'.
(compilation-goto-locus): If end-mk is non-nil in transient mark
mode don't activate the mark (and don't display message in
push-mark), but highlight overlay between mk and end-mk.
mode with second element of compilation-arguments instead of third
to reflect latest changes in compilation-arguments structure.
(recompile): Use global variable `compilation-directory' to get
recent compilation directory only when `recompile' is invoked NOT
in the compilation buffer. Otherwise, use `default-directory' of
the compilation buffer.
(compilation-mode): Don't setup next-error-function here.
(compilation-setup): Set it up here instead (for minor modes as well).
Make compilation-messages-start buffer local.
(compilation-next-error-function): Use it.
(compilation-forget-errors): Set compilation-messages-start.
(compilation-normalize-filename, compile-abbreviate-directory): Delete functions.
(compilation-get-file-structure): New function inherits functionality of the two preceding ones.
(compilation-internal-error-properties, compilation-fake-loc): Use it so that different paths to the same file share the same markers. Also optimize finding adjacent marker slightly.
(compilation-start): Set next-error-last-buffer so
next-error knows where to jump.
(compilation-setup): Set the buffer-local variable
next-error-function to 'compilation-next-error-function.
(compilation-buffer-p, compilation-buffer-internal-p): Use an
alternate way to find if a buffer is a compilation buffer, for
next-error convenience.
(next-error-no-select, previous-error-no-select, next-error)
(previous-error, first-error): Move to simple.el.
(compilation-find-buffer): Move to next-error-find-buffer in simple.el.
(compilation-last-buffer): Remove.
(compilation-start, compilation-next-error, compilation-setup)
(compilation-next-error-function, compilation-find-buffer):
Remove compilation-last-buffer use.
(compilation-error-regexp-alist-alist)
(compilation-mode-font-lock-keywords): Allow non-ASCII where possible.
(compilation-assq): Wrap in eval-when-compile.
(compilation-mode-font-lock-keywords): Don't use list*.
(compilation-start): Avoid warning.
(compilation-compat-error-properties)
(compilation-directory-properties): Add keymap property.
(compilation-parsing-end): Make it a marker for better compatibility.