Currently we add unimportant face to cursor point, however this looks
inconsist, that cursor point and position has different color compared
with cursor coordinate, and it won't dim if window is inactive. This
also breaks packages that adds text with custom face into misc info like
lsp-bridge, because we also override it with unimportant face.
This commit will unify text style by remove unimportant face for them.
New faces have been added for the buffer status segment to allow
for more granular user customizations. Buffer narrowing should also
now be properly indicated when narrowing a non-file-backed buffer.
In adherence with elisp convention, comments have been shortened
to fit within 80 columns. Some nitpicky grammar/spelling mistakes
were fixed. Some small inaccuracies were also corrected.
Current implementation doesn't always work. For example if one uses
mu4e:
```
(add-hook 'after-init-hook #'mu4e-alert-enable-mode-line-display)
```
`global-mode-string` will have `((:eval mu4e-alert-mode-line))` as
it's value. And it will result in error:
```
Error during redisplay: (eval (mood-line-segment-global-mode-string)) signaled (void-function :eval) [11 times]
```
This commit uses `format-mode-line` function to manually evaluate
`global-mode-string` and append it's result to the mode line if any.
There is no way to display encoding nor EOL style, although the
function "mood-line-segment-encoding" exists. Therefore, I add
the function in order to display them in the right side of mode-
line.