   :on-hooks (find-file-hook after-save-hook after-revert-hook)
   :init (propertize "%b" 'face 'doom-modeline-buffer-file)
   :faces t
-  (+modeline-build-path (buffer-file-name (buffer-base-buffer))))
+  (let ((file-path (buffer-file-name (buffer-base-buffer))))
+    (propertize (+modeline-build-path file-path)
+                'help-echo file-path)))
 
 (def-modeline-segment! +modeline-buffer-directory
   (let ((face (if (active) 'doom-modeline-buffer-path)))
-    (concat (if (display-graphic-p) " ")
-            (all-the-icons-octicon
-             "file-directory"
-             :face face
-             :v-adjust -0.1
-             :height 1.25)
-            " "
-            (propertize (abbreviate-file-name default-directory)
-                        'face face))))
+    (propertize
+     (concat (if (display-graphic-p) " ")
+             (all-the-icons-octicon
+              "file-directory"
+              :face face
+              :v-adjust -0.1
+              :height 1.25)
+             " "
+             (propertize (abbreviate-file-name default-directory)
+                         'face face))
+     'help-echo default-directory)))
 
 (def-modeline-segment! +modeline-vcs
   :on-set (vc-mode)

                (propertize (substring vc-mode (+ (if (eq backend 'Hg) 2 3) 2))
                            'face (if active face)))))))

(def-modeline-segment! +modeline-encoding
  :on-hooks (after-revert-hook after-save-hook find-file-hook)
  :on-set (buffer-file-coding-system indent-tabs-mode tab-width)
  (format "%s%d  %s  %s"
          (if indent-tabs-mode "⭾" "␣")
          tab-width
          (pcase (coding-system-eol-type buffer-file-coding-system)
            (0 "LF")
            (1 "CRLF")
            (2 "CR"))
          (let* ((sys (coding-system-plist buffer-file-coding-system))
                 (category (plist-get sys :category)))
            (cond ((eq category 'coding-category-undecided)
                   "")
                  ((or (eq category 'coding-category-utf-8)
                       (eq (plist-get sys :name) 'prefer-utf-8))
                   "UTF-8  ")
                  ((concat (upcase (symbol-name (plist-get sys :name)))
                           "  "))))))

(def-modeline-segment! +modeline-major-mode
  (propertize (format-mode-line mode-name)

    +modeline-buffer-id
    "  %2l:%c %p  ")
  `(mode-line-misc-info
    +modeline-indent-style
    +modeline-encoding
    +modeline-major-mode " "
    (vc-mode (" " +modeline-vcs " "))
