[+] 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_last_used : dict[int, int] = dict()
|
||||
|
||||
self._queue : collections.deque[Callable[[], None]] = collections.deque()
|
||||
self._lock = threading.Lock()
|
||||
@ -108,7 +109,8 @@ augroup END
|
||||
|
||||
res_sorted = sorted(
|
||||
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(
|
||||
@ -197,17 +199,36 @@ augroup END
|
||||
# )
|
||||
|
||||
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:
|
||||
buf_number = vim.current.buffer.number
|
||||
# buf_number = vim.current.buffer.number
|
||||
|
||||
if not buf_number in self._buffer_frequency:
|
||||
self._buffer_frequency[buf_number] = 0
|
||||
|
||||
self._buffer_frequency[buf_number] += 1
|
||||
|
||||
self._buffer_last_used[buf_number] = datetime.datetime.now().timestamp()
|
||||
|
||||
logger.info(dict(
|
||||
msg='updated',
|
||||
buf_path=vim.current.buffer.name,
|
||||
buf_path=str(buf_name),
|
||||
frequency=self._buffer_frequency[buf_number],
|
||||
buf_number=buf_number,
|
||||
))
|
||||
|
Loading…
Reference in New Issue
Block a user