From f5ea8e97baa8590a1c3293ee0a7820059632e697 Mon Sep 17 00:00:00 2001 From: Andy Stewart Date: Mon, 16 Jul 2018 13:18:31 +0800 Subject: [PATCH] Update interface documents. --- HACKING.md | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/HACKING.md b/HACKING.md index c522208..72c52fb 100644 --- a/HACKING.md +++ b/HACKING.md @@ -113,6 +113,49 @@ After emacs read user input, framework will call interface "handle_input_message Simple logic is send "send_input_message" signal to emacs, then handle user input with buffer interface "handle_input_message" +### Scroll by other window +In emacs, we usually call command "scroll-other-window" to scroll other window's buffer. + +If you want eaf application buffer respond scroll event to command "scroll-other-window". + +You need implement "scroll" interface in AppBuffer, such as like PDF Viewer does: + +```Python + def scroll(self, scroll_direction, scroll_type): + if scroll_type == "page": + if scroll_direction == "up": + self.buffer_widget.scroll_up_page() + else: + self.buffer_widget.scroll_down_page() + else: + if scroll_direction == "up": + self.buffer_widget.scroll_up() + else: + self.buffer_widget.scroll_down() +``` + +scroll_direction is string, "up" mean scroll buffer up, "down" mean scroll buffer down. + +scroll_type is string, "page" mean scroll buffer by page, "line" mean scroll buffer by line. + +### Save/Restore session +We always need save and restore session for application, such as, save play position of video player. + +You need implement interfaces "save_session_data" and "restore_session_data", below is an example of Vide Player does: + + +```Python + def save_session_data(self): + return str(self.buffer_widget.media_player.position()) + + def restore_session_data(self, session_data): + position = int(session_data) + self.buffer_widget.media_player.setPosition(position) +``` + +session_data is string, you can put anything in it + +All session data save at ~/.emacs.d/eaf/session.json file. ## Todolist [Some works you can hacking ;)](TODOLIST.md)