MATLAB: Not Enough Input Arguments when using cm.addCustomMenuFcn

addcustommenufcnsimulinksl_customization

I'm trying to add some menu customizations. I'm starting with this Mathworks Example. However, it's not working. When running the code I get the following error.
_Not enough input arguments.
Error in simulinkMenuCustomisation (line 3) cm.addCustomMenuFcn('Simulink:ToolsMenu', @getMyMenuItems);__
function sl_customization(cm)
% Register custom menu function.
cm.addCustomMenuFcn('Simulink:ToolsMenu', @getMyMenuItems);
end
function schemaFcns = getMyMenuItems(callbackInfo)
schemaFcns = {@createBO};
end
function schema = createBO(callbackInfo)
schema = sl_action_schema;
schema.label = 'Align Inputs to Ports';
schema.statustip = 'Align Inputs to Ports';
schema.accelerator = 'Crtl+Alt+I';
schema.callback = @createBOcb;
end
function createBOcb(~)
blockH = find_system(gcbh);
disp(get(blockH,'Name'))
end

Best Answer

Looks like this is due to attempting to run this script standalone.
The script requires the customization manager to be passed in as an argument to the sl_customization function (this is the missing argument).
This is done automatically when simulink starts (it will execute any sl_customization files it finds on the MATLAB path).
Keep in mind that if you are using simulink projects, simulink is started as soon as you open a project and before any project paths have been added to the MATLAB path. So saving your scripts within a project folder will likely not work and you will need to place it in a directory that is already on the MATLAB path.
I am not sure if there is a way to get the customization manager and pass it to this script manually after simulink has started.