import GPS, gps_utils # This plug-in parses and creates BookMarks at lines like: # pragma Title ("Parse and create"); # A menu is added to parse the current source file: # /Navigate/pragma Title->Mark # FILE : title.py # LAST UPDATE : 20150112 # COPYRIGHT : (c) Pascal Pignard 2015 (except parts with named authors) # LICENCE : CeCILL V2 (http://www.cecill.info) # CONTACT : http://blady.pagesperso-orange.fr # Cursor position saved, from Emmanuel Briot @gps_utils.with_save_excursion def create_bookmark_at_location(loc, name): loc.buffer().current_view().goto(loc) bm = GPS.Bookmark.create(name) bm.filename = loc.buffer().current_view().title() return bm def parse(menu): #print "Parse02" source = GPS.EditorBuffer.get() view = source.current_view() #print "view title", view.title() for bm in GPS.Bookmark.list(): if "filename" in dir(bm): #print "filename", bm.filename if bm.filename == view.title(): bm.delete() #print bm, "deleted" start = source.beginning_of_buffer() pragma_loc = start.search("pragma[\ \t\n\r\f]*title", regexp=True, dialog_on_failure=False) while pragma_loc != None: #print pragma_loc pragma_name = pragma_loc[0].search('pragma[\ \t\n\r\f]*title[\ \t\n\r\f]*[(][\ \t\n\r\f]*"[^"\n\r]*"', regexp=True, dialog_on_failure=False) #print pragma_name if pragma_name != None: pragma_mark_name = source.get_chars(pragma_name[0], pragma_name[1]-2) pragma_mark_name = pragma_mark_name[pragma_mark_name.find('"')+1:] #print pragma_mark_name bm = create_bookmark_at_location(pragma_name[0], pragma_mark_name) #print bm, "created" start = pragma_name[1] else: start = pragma_loc[1] pragma_loc = start.search("pragma[\ \t\n\r\f]*title", regexp=True, dialog_on_failure=False) #parse("dummy") GPS.Menu.create ("/Navigate/pragma Title->Mark", parse)