@@ -319,6 +319,20 @@ pub mod ffi {
319319 fn config_manager_add_bookmark ( manager : & mut ConfigManager , path : & str , start : i64 , end : i64 , note : & str ) ;
320320 fn config_manager_remove_bookmark ( manager : & mut ConfigManager , path : & str , start : i64 , end : i64 ) ;
321321 fn config_manager_toggle_bookmark ( manager : & mut ConfigManager , path : & str , start : i64 , end : i64 , note : & str ) ;
322+ fn config_manager_toggle_bookmark_with_result (
323+ manager : & mut ConfigManager ,
324+ path : & str ,
325+ start : i64 ,
326+ end : i64 ,
327+ note : & str ,
328+ ) -> bool ;
329+ fn config_manager_upsert_bookmark_note (
330+ manager : & mut ConfigManager ,
331+ path : & str ,
332+ start : i64 ,
333+ end : i64 ,
334+ note : & str ,
335+ ) -> bool ;
322336 fn config_manager_update_bookmark_note (
323337 manager : & mut ConfigManager ,
324338 path : & str ,
@@ -621,6 +635,34 @@ fn config_manager_toggle_bookmark(manager: &mut RustConfigManager, path: &str, s
621635 manager. toggle_bookmark ( path, start, end, note) ;
622636}
623637
638+ fn config_manager_toggle_bookmark_with_result (
639+ manager : & mut RustConfigManager ,
640+ path : & str ,
641+ start : i64 ,
642+ end : i64 ,
643+ note : & str ,
644+ ) -> bool {
645+ let was_bookmarked = manager. get_bookmarks ( path) . iter ( ) . any ( |bm| bm. start == start && bm. end == end) ;
646+ manager. toggle_bookmark ( path, start, end, note) ;
647+ was_bookmarked
648+ }
649+
650+ fn config_manager_upsert_bookmark_note (
651+ manager : & mut RustConfigManager ,
652+ path : & str ,
653+ start : i64 ,
654+ end : i64 ,
655+ note : & str ,
656+ ) -> bool {
657+ let exists = manager. get_bookmarks ( path) . iter ( ) . any ( |bm| bm. start == start && bm. end == end) ;
658+ if exists {
659+ manager. update_bookmark_note ( path, start, end, note) ;
660+ } else {
661+ manager. add_bookmark ( path, start, end, note) ;
662+ }
663+ exists
664+ }
665+
624666fn config_manager_update_bookmark_note ( manager : & mut RustConfigManager , path : & str , start : i64 , end : i64 , note : & str ) {
625667 manager. update_bookmark_note ( path, start, end, note) ;
626668}
0 commit comments