displaying function name
Michael Smith
michael.smith at thalesatm.com
Mon Aug 30 09:07:47 CEST 2004
On Mon, 30 Aug 2004 09:02:01 +0200 (MEST) "Joerg Fischer"
<jf505 at gmx.de> wrote:
| > Have a look
| > at the attached nedit macro file:
|
| There is nothing attached. Please notice that you
| must explicitly denote any attachement as plain text
| file, otherwise the list software won't let it through.
Thanks. I will send it as plain text in the message body:
Look out for word wrap.
*******************start of attachment***********************
define get_difference
{
left_bracket = search_string($1,"[",0)
if(left_bracket == -1) return("")
right_bracket = search_string($1,"]",left_bracket + 1)
if(right_bracket == -1) return("")
file_name = substring($1,left_bracket + 1,right_bracket)
first_space = search_string($1," ",right_bracket)
if(first_space == -1) return("")
seperator = search_string($1,"->",first_space)
if(seperator == -1) return("")
first_version = substring($1,right_bracket + 1,seperator)
second_version = substring($1,seperator + 2,length($1) - 1)
command = "cvs diff -r" first_version " -r" second_version "
$ROOTDIR/src/"file_name diffs = shell_command(command,"")
return(diffs)
}
define cvs_version_diff
{
selection = get_selection()
space = search_string(selection," ",0)
vers1 = substring(selection,0,space)
vers2 = substring(selection,space,length(selection))
t_print("vers1 " vers1 "\n")
t_print("vers2 " vers2 "\n")
command = "cvs diff -r" vers1 " -r" vers2 " " $file_path $file_name
diffs = shell_command(command,"")
new()
focus_window("last")
replace_range(0,0,diffs)
directory = shell_command("mktemp /tmp/np.XXXXXX","")
save_as($directory".diff")
}
define select_line
{
start = search("\n",$cursor,"backward")
end = search("\n",$cursor,"forward")
select(start + 1,end + 1)
}
# Create and load a tag file
define create_tag_file
{
tagfile = shell_command("mktemp /tmp/np.XXXXXX","")
taglines = split(tagfile,"[\n]","regex")
command = "ctags --recurse -f " taglines[0] " " $file_path
shell_command(command,"")
load_tags_file(taglines[0])
}
#/p1/p2/p3/
#/p1/p2/p3
define list_files
{
command = "ls " $1
directory = shell_command(command,"")
selection =
list_dialog("Identifiers",directory,"Open","Up","File","Tags","Dismiss")
if($list_dialog_button == 2)
{
dirs = split($1,"/")
elements = dirs[] - 1
filename = ""
for (i = 1; i < elements; i++)
{
filename = filename "/" dirs[i]
}
delete dirs[]
}
else
{
filename = $1 "/" selection
}
if($list_dialog_button == 1 || $list_dialog_button == 2)
{
command = "file -b " filename
filetype = shell_command(command,"")
if(search_string(filetype,"directory",0) != -1)
{
list_files(filename)
}
else
{
list_tags(filename)
}
}
if($list_dialog_button == 3)
{
open(filename)
}
if($list_dialog_button == 4)
{
create_tag_file()
}
}
# ctags -x -f --c-types=f - fqm/fproc/FPROC_init_global_var.c
# FPROC_init_global_var function 444
fqm/fproc/FPROC_init_global_var.c void FPROC_init_global_var (void)#
update_manage_image_array function 385
fqm/fproc/FPROC_init_global_var.c void update_manage_image_array (#
[\s]+ define list_tags
{
command = "ctags --c-types=f -x -f - " $1
tags = shell_command(command,"")
tag_lines=split(tags,"[\n]","regex")
elements = tag_lines[] - 1
filename = ""
list = ""
for (i = 0; i < elements; i++)
{
line_fields=split(tag_lines[i],"[ ]+","regex")
list = list line_fields[0] "\n"
delete line_fields[]
}
if(length(list) == 0)
{
list_files($file_path)
return
}
selection =
list_dialog("Identifiers",list,"Open","Up","Insert","Dismiss")
if($list_dialog_button == 1) {
open($1)
focus_window($1)
for (i = 0; i < elements; i++)
{
line_fields=split(tag_lines[i],"[ ]+","regex")
if(line_fields[0]==selection)
{
goto_line_number(line_fields[2])
}
delete line_fields[]
}
}
if($list_dialog_button == 2)
{
list_files($file_path)
}
if($list_dialog_button == 3)
{
insert_string(selection)
}
delete tag_lines[]
}
#Pause
define list_identifiers
{
filename = $file_path $file_name
list_tags(filename)
}
define cvs_log
{
$diff_file = $file_name
command = "cvs log " $file_path $file_name " | np .diff"
shell_command(command,"")
}
define build_differences
{
$start = 0
for(;;)
{
$end = search("\n",$start,"forward")
if($end == -1) break
if(get_character($start) == "[")
{
$linestr = get_range($start,$end + 1)
$diff = get_difference($linestr)
set_cursor_pos($end + 1)
insert_string($diff)
}
$start = $end + 1
}
}
define cvs_difference_file
{
$diff_file = $file_name
command = "cvs diff " $file_path $file_name " | np .diff"
shell_command(command,"")
}
#F4
define version_difference
{
text = get_selection("any")
diffs = get_difference(text)
new()
focus_window("last")
replace_range(0,0,diffs)
save_as("/tmp/cvsvers.diff")
}
#KP_Down
define end_of_line
{
end = search("\n",$cursor,"forward")
if(end == $cursor)
{
end = search("\n",$cursor + 1,"forward")
}
set_cursor_pos(end)
}
#F8
define delete_line
{
start = search("\n",$cursor,"backward")
end = search("\n",$cursor,"forward")
replace_range(start + 1,end + 1,"")
}
#F5
define duplicate_line
{
start = search("\n",$cursor,"backward")
end = search("\n",$cursor,"forward")
line = get_range(start + 1, end + 1)
replace_range(end + 1,end + 1,line)
}
#F12
define save_and_close
{
save()
close()
}
#Alt+F10
define html_paragraph
{
find("^$","forward","regex")
process_down()
insert_string("<p>")
find("^$","forward","regex")
backward_character()
insert_string("</p>")
}
# Works out which identifier the cursor is in and jumps to the
definition define goto_current_identifier
{
kill_calltip($current_calltip)
tag_lines = $1
elements=tag_lines[] - 1
prev=-1
for (i = 0; i < elements; i++)
{
line_fields=split(tag_lines[i],"[ ]+","regex")
here=line_fields[2]
if(prev != -1 && $line > prev && $line <= here)
{
goto_line_number(prev)
return
}
prev=here
delete line_fields[]
}
delete tag_lines[]
goto_line_number(prev)
}
# Set a calltip for the current function
define function_calltip
{
calltip($1)
$current_calltip = $calltip_ID
$calltip_line = $line
}
# Initialise a global variable
$current_calltip = -1
$calltip_line = -1
# Display a calltip with the current function name
define function_name_calltip
{
tag_lines = $1
elements=tag_lines[] - 1
prev=-1
prev_label=""
for (i = 0; i < elements; i++)
{
line_fields=split(tag_lines[i],"[ ]+","regex")
here=line_fields[2]
if(prev != -1 && $line >= prev && $line < here)
{
function_calltip(prev_label)
return
}
prev=here
prev_label=line_fields[0]
delete line_fields[]
}
delete tag_lines[]
function_calltip(prev_label)
}
# Insert the current function name at the cursor location
#Shift+KP_Insert
define insert_function_name
{
filename = $file_path $file_name
command = "ctags --sort=no -x -f - " filename
tags = shell_command(command,"")
tag_lines=split(tags,"[\n]","regex")
elements=tag_lines[] - 1
prev=-1
prev_label=""
for (i = 0; i < elements; i++)
{
line_fields=split(tag_lines[i],"[ ]+","regex")
here=line_fields[2]
if(prev != -1 && $line >= prev && $line < here)
{
insert_string(prev_label)
return
}
prev=here
prev_label=line_fields[0]
delete line_fields[]
}
delete tag_lines[]
insert_string(prev_label)
}
# Work out which identifier the cursor is inside and display
# the name of the identifier in a calltip
#KP_Insert
define display_function
{
filename = $file_path $file_name
command = "ctags --sort=no -x -f - " filename
tags = shell_command(command,"")
tag_lines=split(tags,"[\n]","regex")
if($current_calltip == $calltip_ID && $calltip_line == $line)
{
goto_current_identifier(tag_lines)
}
else
{
function_name_calltip(tag_lines)
}
}
#F11
#Open the file named at the cursor
define open_file_at_cursor
{
start=search("^",$cursor,"regex","backward")
end=search(": ",$cursor)
eol=search("$",$cursor,"regex")
filename=get_range(start,end)
detail=get_range(end,eol)
details=split(detail,"\w","regex")
for(item in details)
{
final = final "_" item
}
command="open-mark " filename " \"" final "\""
t_print(command "\n")
shell_command(command,"")
}
#Home the window
define home_window
{
shell_command("FvwmCommand 'Current Move 0p 0p'","")
}
define home_all
{
filename = focus_window("last")
while(filename != "")
{
home_window()
filename = focus_window("next")
}
}
define build_fvwm_menu
{
text = get_selection()
hosts = split(text,"\n")
delete_selection()
for(indx in hosts)
{
insert_string("AddToMenu NEW-MENU ")
insert_string("\"" hosts[indx] "\" Exec gnome-terminal -e \"rsh -l
system ") insert_string(hosts[indx] "\"")
newline()
}
}
#Set the geometry of all windows in the current tileset
define tileset_rebuild
{
totalheight=1000
totalwidth=800
fudge=9
tileheight=totalheight/$tileset[] - fudge * $tileset[]
y = 0
for(tile in $tileset)
{
open($tileset[tile])
shell_command("FvwmCommand 'Current ResizeMove 800p "
tileheight"p 0p " y"p RefreshWindow'","") y = y + tileheight +
fudge }
}
#Add the current window to the current tileset
define tileset_add
{
fileid=$file_path$file_name
$tileset[fileid]=fileid
tileset_rebuild()
}
#Delete the current window from the current tileset
define tileset_delete
{
fileid=$file_path$file_name
delete $tileset[fileid]
tileset_rebuild()
}
#Search for blocks to be hidden in the input file and fold them
define hide_blocks
{
rangeset_defined = 0
start_block = 0
end_block = 0
while(start_block != -1)
{
start_block = search("START-HIDE",end_block)
if(start_block != -1)
{
end_block = search("END-HIDE",start_block)
if(end_block != -1)
{
next_line = search("^.*$",end_block + 1,"regex")
if(next_line != -1)
{
if(rangeset_defined == 0)
{
r = rangeset_create()
rangeset_defined = 1
}
rangeset_add(r,start_block,next_line)
}
}
}
}
if(rangeset_defined != 0)
{
rangeset_set_color(r,"violet")
rangeset_set_folded(r,1)
}
}
#detach a document
define detach_from_window
{
detach_document()
}
#attach a document
define attach_to_window
{
move_document_dialog()
}
# Calculate line start points
define calculate_line_starts
{
$line_starts = $empty_array
line_number = 1
$line_starts[line_number] = 0
end_line = 0
while(end_line != -1)
{
end_line = search("^.*$",$line_starts[line_number] + 1,"regex")
if(end_line != -1)
{
line_number = line_number + 1
$line_starts[line_number] = end_line
}
}
}
#Jump to the specified line
define mark_line
{
line_command=$1 ",0"
goto_line_number(line_command)
end=search("$",$cursor,"regex")
nextline=search("^",end,"regex")
if(nextline == -1) nextline = end
rangesets=rangeset_get_by_name("entry-points")
if(rangesets[] == 0)
{
rangeset=rangeset_create()
rangeset_set_name(rangeset,"entry-points")
rangeset_set_color(rangeset,"LightBlue")
}
else
{
rangeset=rangesets[0]
}
rangeset_add(rangeset,$cursor,nextline)
}
#mark differences
define mark_diff
{
addra=rangeset_get_by_name("addr")
cddra=rangeset_get_by_name("cddr")
rangeset_destroy(addra)
rangeset_destroy(cddra)
if(length($1) > 0)
{
addr = rangeset_create()
cddr = rangeset_create()
rangeset_set_name(addr,"addr")
rangeset_set_name(cddr,"cddr")
rangeset_set_color(addr,"LightYellow1")
rangeset_set_color(cddr,"LightPink")
lines=split($1,"+")
for(line in lines)
{
details=split(lines[line],"_")
if(details[0] == "a")
{
rangeset_add(addr,details[1],details[2])
}
if(details[0] == "c")
{
rangeset_add(cddr,details[1],details[2])
}
if(details[0] == "l")
{
mark_line(details[1])
}
}
}
}
#reset differences
define reset_diff
{
command = "get-cvs-diff " $file_path $file_name
diffs = shell_command(command,"")
mark_diff(diffs)
}
define save_all
{
filename = focus_window("last")
while(filename != "")
{
if($modified)
{
save()
reset_diff()
}
filename = focus_window("next")
}
}
define generate_trace
{
insert_string("printf(\"")
insert_function_name()
insert_string(": ")
paste_clipboard()
insert_string(" [%s]\\n\",")
paste_clipboard()
insert_string(");")
}
define cvs_annotate_file
{
command = "get-cvs-annotations " $file_path $file_name " | np"
shell_command(command,"")
}
define cvs_display_modification_labels
{
marks=rangeset_get_by_name("marks")
rangeset_destroy(marks)
selected_sect = list_dialog($1,$2,"Close","Show")
if($list_dialog_button == 2)
{
line_starts = shell_command("awk -f
/home/smithmr/bin/calculate-line_starts.awk " $file_path $file_name,"")
line_start_array = split(line_starts,"[\n]","regex") lines
= split(selected_sect," ") t_print("start " lines[0] " "
line_start_array[lines[0]]"\n") t_print("end " lines[1] " "
line_start_array[lines[1]]"\n") marks = rangeset_create()
rangeset_set_name(marks,"marks")
rangeset_set_color(marks,"Violet")
rangeset_add(marks,line_start_array[lines[0]],line_start_array[lines[1]
]) goto_line_number(lines[0])
cvs_display_modification_labels($1,$2)
}
marks=rangeset_get_by_name("marks")
rangeset_destroy(marks)
}
define cvs_display_modification_line
{
starts = split($mod_start[$1]," ")
ends = split($mod_end[$1]," ")
labels = ""
for(indx in starts)
{
if(length(starts[indx]) > 0)
{
labels = labels starts[indx] " " ends[indx] "\n"
}
}
cvs_display_modification_labels($1,labels)
}
define cvs_display_modifications
{
command = "get-modification-list " $file_path $file_name
mods = shell_command(command,"")
modlines = split(mods,"[\n]","regex")
modlist = ""
modifications = $empty_array
$mod_start = $empty_array
$mod_end = $empty_array
for(line in modlines)
{
fields = split(modlines[line]," ")
if(fields[] == 4)
{
label = fields[0] " " fields[1]
if(!(label in modifications))
{
modifications[label] = label
modlist = modlist label "\n"
$mod_start[label] = ""
$mod_end[label] = ""
}
$mod_start[label] = $mod_start[label] " " fields[2]
$mod_end[label] = $mod_end[label] " " fields[3]
}
}
selected_mod = list_dialog("Modifications",modlist,"Close","Open")
if($list_dialog_button == 2)
{
cvs_display_modification_line(selected_mod)
}
}
# CVS Status dialog
define cvs_status
{
command = "cvs status " $file_path $file_name
status = shell_command(command,"")
button=dialog(status,"Close","Modifications","Annotate","Diff","Log")
if(button == 2) cvs_display_modifications() if(button == 3)
cvs_annotate_file() if(button == 4) cvs_difference_file()
if(button == 5) cvs_log()
}
*******************end of attachment***********************
More information about the Discuss
mailing list