diff --git a/dotfiles/.vim/online_fxreader_pr34_vim/beta.py b/dotfiles/.vim/online_fxreader_pr34_vim/beta.py index 9526ab3..974a61d 100644 --- a/dotfiles/.vim/online_fxreader_pr34_vim/beta.py +++ b/dotfiles/.vim/online_fxreader_pr34_vim/beta.py @@ -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, ))