Ну если не принципиально сохранять в буфере те данные, которые в нем находились до работы сниппета, то в принципе ничем.
Но, думаю, так лучше будет:
string str = project.Variables["Text"].Value;
string[] split = str.Split(new string[] { @"\r\n" }, StringSplitOptions.RemoveEmptyEntries);
lock...