File: window.py

package info (click to toggle)
python-pynvim 0.6.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 424 kB
  • sloc: python: 3,067; makefile: 4
file content (81 lines) | stat: -rw-r--r-- 2,330 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
"""API for working with Nvim windows."""

from __future__ import annotations

from typing import TYPE_CHECKING, Tuple, cast

from pynvim.api.buffer import Buffer
from pynvim.api.common import Remote

if TYPE_CHECKING:
    from pynvim.api.tabpage import Tabpage


__all__ = ['Window']


class Window(Remote):

    """A remote Nvim window."""

    _api_prefix = "nvim_win_"

    @property
    def buffer(self) -> Buffer:
        """Get the `Buffer` currently being displayed by the window."""
        return self.request('nvim_win_get_buf')

    @property
    def cursor(self) -> Tuple[int, int]:
        """Get the (row, col) tuple with the current cursor position."""
        return cast(Tuple[int, int], tuple(self.request('nvim_win_get_cursor')))

    @cursor.setter
    def cursor(self, pos: Tuple[int, int]) -> None:
        """Set the (row, col) tuple as the new cursor position."""
        return self.request('nvim_win_set_cursor', pos)

    @property
    def height(self) -> int:
        """Get the window height in rows."""
        return self.request('nvim_win_get_height')

    @height.setter
    def height(self, height: int) -> None:
        """Set the window height in rows."""
        return self.request('nvim_win_set_height', height)

    @property
    def width(self) -> int:
        """Get the window width in rows."""
        return self.request('nvim_win_get_width')

    @width.setter
    def width(self, width: int) -> None:
        """Set the window height in rows."""
        return self.request('nvim_win_set_width', width)

    @property
    def row(self) -> int:
        """0-indexed, on-screen window position(row) in display cells."""
        return self.request('nvim_win_get_position')[0]

    @property
    def col(self) -> int:
        """0-indexed, on-screen window position(col) in display cells."""
        return self.request('nvim_win_get_position')[1]

    @property
    def tabpage(self) -> Tabpage:
        """Get the `Tabpage` that contains the window."""
        return self.request('nvim_win_get_tabpage')

    @property
    def valid(self) -> bool:
        """Return True if the window still exists."""
        return self.request('nvim_win_is_valid')

    @property
    def number(self) -> int:
        """Get the window number."""
        return self.request('nvim_win_get_number')