[+] update FastSelect
1. sort buffers based on last access time;
This commit is contained in:
parent
8516fbfcad
commit
656464fe38
@ -42,6 +42,7 @@ class FastSelect:
|
|||||||
)
|
)
|
||||||
|
|
||||||
self._buffer_frequency : dict[int, int] = dict()
|
self._buffer_frequency : dict[int, int] = dict()
|
||||||
|
self._buffer_last_used : dict[int, int] = dict()
|
||||||
|
|
||||||
self._queue : collections.deque[Callable[[], None]] = collections.deque()
|
self._queue : collections.deque[Callable[[], None]] = collections.deque()
|
||||||
self._lock = threading.Lock()
|
self._lock = threading.Lock()
|
||||||
@ -108,7 +109,8 @@ augroup END
|
|||||||
|
|
||||||
res_sorted = sorted(
|
res_sorted = sorted(
|
||||||
res,
|
res,
|
||||||
key=lambda x: -self._buffer_frequency.get(x[1], 0)
|
# key=lambda x: -self._buffer_frequency.get(x[1], 0)
|
||||||
|
key=lambda x: -self._buffer_last_used.get(x[1], 0)
|
||||||
)
|
)
|
||||||
|
|
||||||
self.loop.call_soon_threadsafe(
|
self.loop.call_soon_threadsafe(
|
||||||
@ -197,17 +199,36 @@ augroup END
|
|||||||
# )
|
# )
|
||||||
|
|
||||||
def on_buf_enter(self) -> None:
|
def on_buf_enter(self) -> None:
|
||||||
|
result = asyncio.run_coroutine_threadsafe(
|
||||||
|
self._on_buf_enter(
|
||||||
|
buf_number=vim.current.buffer.number,
|
||||||
|
buf_name=pathlib.Path(vim.current.buffer.name),
|
||||||
|
),
|
||||||
|
self.loop
|
||||||
|
)
|
||||||
|
|
||||||
|
result.add_done_callback(future_dump_exception)
|
||||||
|
|
||||||
|
async def _on_buf_enter(
|
||||||
|
self,
|
||||||
|
buf_number: int,
|
||||||
|
buf_name: pathlib.Path,
|
||||||
|
) -> None:
|
||||||
|
# logger.info(dict(msg='waiting'))
|
||||||
|
|
||||||
with self._lock:
|
with self._lock:
|
||||||
buf_number = vim.current.buffer.number
|
# buf_number = vim.current.buffer.number
|
||||||
|
|
||||||
if not buf_number in self._buffer_frequency:
|
if not buf_number in self._buffer_frequency:
|
||||||
self._buffer_frequency[buf_number] = 0
|
self._buffer_frequency[buf_number] = 0
|
||||||
|
|
||||||
self._buffer_frequency[buf_number] += 1
|
self._buffer_frequency[buf_number] += 1
|
||||||
|
|
||||||
|
self._buffer_last_used[buf_number] = datetime.datetime.now().timestamp()
|
||||||
|
|
||||||
logger.info(dict(
|
logger.info(dict(
|
||||||
msg='updated',
|
msg='updated',
|
||||||
buf_path=vim.current.buffer.name,
|
buf_path=str(buf_name),
|
||||||
frequency=self._buffer_frequency[buf_number],
|
frequency=self._buffer_frequency[buf_number],
|
||||||
buf_number=buf_number,
|
buf_number=buf_number,
|
||||||
))
|
))
|
||||||
|
Loading…
Reference in New Issue
Block a user