register_info2(name,Name,Id) :-
regassert(Id,name,pname(Name)).
register_info2(status,Status,Id) :-
( memberchk(Status,[stable,unstable]) ->
regassert(Id,name,status(Status))
;
ajoin(['Plugin ',Id,': Invalid status, ignoring'],Msg),
print_message(warning,Msg)).
register_info2(load_file,Proc,Id) :-
reg_proc_assert(Id,load_file,file_loader,Proc,1).
register_info2(author,Author,Id) :-
regassert(Id,author,author(Author)).
register_info2(file_extensions,Ext,Id) :-
regassert(Id,file_extensions,file_extensions(Ext)).
register_info2(transition_skeleton,Proc,Id) :-
reg_proc_assert(Id,transition_skeleton,transition_skeleton,Proc,1).
register_info2(transition,Proc,Id) :-
reg_proc_assert(Id,transition,transition_pred,Proc,4).
register_info2(initialisation,Proc,Id) :-
reg_proc_assert(Id,initialisation,initialisation_pred,Proc,3).
register_info2(state_property,Proc,Id) :-
reg_proc_assert(Id,state_property,state_property_pred,Proc,2).
register_info2(parser,Proc,Id) :-
reg_proc_assert(Id,parser,parser_pred,Proc,6).
register_info2(compute_expression,Proc,Id) :-
reg_proc_assert(Id,compute_expression,compute_expression_pred,Proc,3).
register_info2(evaluate_predicate,Proc,Id) :-
reg_proc_assert(Id,evaluate_predicate,evaluate_predicate_pred,Proc,2).
register_info2(evaluate_transition,Proc,Id) :-
reg_proc_assert(Id,evaluate_transition,evaluate_transition_pred,Proc,2).
register_info2(is_initialised_state,Proc,Id) :-
reg_proc_assert(Id,is_initialised_state,is_initialised_state_pred,Proc,1).
register_info2(prettyprint_transition,Proc,Id) :-
reg_proc_assert(Id,prettyprint_transition,prettyprint_transition_pred,Proc,2).
register_info2(prettyprint_property,Proc,Id) :-
reg_proc_assert(Id,prettyprint_property,prettyprint_property_pred,Proc,2).
register_info2(prettyprint_value,Proc,Id) :-
reg_proc_assert(Id,prettyprint_value,prettyprint_value_pred,Proc,2).
register_info2(syntax_colouring,Rules,Id) :-
check_syntax_colouring(Rules,Id),
regassert(Id,syntax_colouring,syntax_colouring(Rules)).
register_info2(plugin_for_modes,Modes,Id) :-
regassert(Id,syntax_colouring,plugin_for_modes(Modes)).
register_info2(plugin_init,Proc,Id) :-
reg_proc_assert(Id,plugin_init,plugin_init_pred,Proc,0).
register_info2(new_transition_notification,Proc,Id) :-
reg_proc_assert(Id,new_transition_notification,plugin_new_transition_pred,Proc,4).
register_info2(preferences,Proc,Id) :-
reg_proc_assert(Id,preferences,plugin_preferences_pred,Proc,4).
register_info2(check_invariant,Proc,Id) :-
reg_proc_assert(Id,check_invariant,plugin_check_invariant_pred,Proc,2).
register_info2(output,Proc,Id) :-
reg_proc_assert(Id,output,plugin_output_pred,Proc,3).
register_info2(internal_representation,Proc,Id) :-
reg_proc_assert(Id,internal_representation,plugin_internal_representation_pred,Proc,1).