To use this macro save the code below to the mark_paragraph.py file in the zScript folder and then run the macro using the Macro, Execute Script menu.
The macro can also be bound to a keyboard key or bound to the menu.
Code: Select all
#
# Name: Mark Current Paragraph
#
# Language: Python Macro
#
# Description: This Python macro will select mark the current paragraph.
#
import zeus
def key_macro():
# reduces screen flicker
zeus.screen_update_disable()
# macro only works for documents
document = zeus.is_document()
if document > 0 :
# save the current cursor
zeus.cursor_save()
# line variables that will define the paragraph
line_end = -1
line_start = -1
line_number = zeus.get_line_pos()
# look for the start of paragraph
while line_number >= 1:
text = zeus.get_line_text(line_number)
if len(text) == 0:
# found the start of paragraph
line_start = line_number + 1
break
elif line_number == 1:
# found the start of document
line_start = line_number
break
line_number = line_number - 1
#zeus.message_box(0, line_start)
if line_start != -1:
line_number = zeus.get_line_pos()
line_count = zeus.get_line_count()
# look for the end of paragraph
while line_number < line_count:
text = zeus.get_line_text(line_number)
if len(text) == 0:
# found the end of paragraph
line_end = line_number - 1
break
line_number = line_number + 1
if line_end == -1:
line_end = line_count - 1
# see if we found a paragraph
if line_end != -1:
# move to the start of paragraph
zeus.set_line_pos(line_start, 1)
# turn on block marking
zeus.MarkBlockSet()
text_len = len(zeus.get_line_text(line_end)) + 1
#zeus.message(text_len)
# move to the end of paragraph
zeus.set_line_pos(line_end, text_len)
# complete the marking
zeus.MarkBlockReset()
# ignore the original saved cursor
zeus.cursor_ignore()
else:
# restore the original cursor
zeus.cursor_restore()
# feedback to the user
zeus.message("No paragraph of text was found.")
else:
# feedback to the user
zeus.message("This macro only works for document files.")
zeus.beep()
# reduces screen flicker
zeus.screen_update_enable()
zeus.screen_update()
key_macro() # run the macro