I would innately follow what the original function did, cutting out everything else that's irrelevant to what you want to change.
In response to your example, this would hook the original function to run afterward and change the text of the objectives to remove the prepended dash.
Lua Code:
hooksecurefunc("QuestWatch_Update",function()
local questidx;
local lineidx=1;
local numobjectives;
for i=1,GetNumQuestWatches() do
questidx=GetQuestIndexForWatch(i);
if questidx then
numobjectives=GetNumQuestLeaderBoards(questidx);
if numobjectives>0 then
lineidx=lineidx+1;-- Iterate past title header
for j=1,numobjectives do
local textobj=_G["QuestWatchLine"..lineidx];
if not textobj then return; end-- This check isn't in the original function and it will throw an error if it runs out of these text objects
local objective=GetQuestLogLeaderBoard(j,questidx);
textobj:SetText(objective);
lineidx=lineidx+1;-- Iterate to next line
end
end
end
end
end);