Skip to content

[bug] airline-position-segment not displaying mode-line-position, important for some major modes #143

@leonardo-cavegliacurtil

Description

Some major modes, such as PDFView, use mode-line-position to communicate the buffer position aside from lines and columns. When using telephone-line-airline-position-segment, such values are not displayed.

The following screenshot depicts telephone-line-airline-position-segment beside telephone-line-position-segment, which is properly using mode-line-position.

Screenshot_20240327_112420


My proposed possible solutions would be:

  • parse mode-line-position to turn it into an airline-styled position segment only if a regex is matched -- e.g. /^L\d+$/, and maybe concat columns regardless
  • unless the buffer has lines and columns, show mode-line-position
  • make an exception for known major modes (seems like a less clean solution)

Related code from telephone-line-segments.el follows.

(telephone-line-defsegment* telephone-line-position-segment ()
  (telephone-line-raw
   (if (eq major-mode 'paradox-menu-mode)
       ;;Paradox fills this with position info.
       mode-line-front-space
     mode-line-position) t))

(telephone-line-defsegment* telephone-line-airline-position-segment (&optional lines columns)
  "Position segment imitating vim-airline's appearance. Optional args set padding on lines/columns."
  (let* ((l (number-to-string (if lines lines 4)))
         (c (number-to-string (if columns columns 3))))
    (if (eq major-mode 'paradox-menu-mode)
        (telephone-line-raw mode-line-front-space t)
      `((-3 "%p") ,(concat " %" l "l"
                           ":%" c (if (bound-and-true-p column-number-indicator-zero-based) "c" "C"))))))

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions