Hi, my name is Osama Ahmad and I'm planning to join GSoC this year.
As stated here, it's encouraged to discuss ideas for GSoC before submitting.

Inspired by vim's registers, I'm thinking of adding the ability to make multiple copies.
But, unlike vim's registers which have a fixed name and are limited to several registers, I'm thinking of allowing the users to assign a name for each copy and be able to create as  many as wanted.
There will be an option under the "copy" option which will have a name like "add to copy list", and will have a text box for the users to enter the name of the copy. Later, when they want to paste a certain copy, they click on an option which has a name like "paste from copy list", when clicking on it, a list of the names of the previously made copies will appear and the user can choose from them.
This will not modify the original "copy" and "paste" options. The program will have its normal copy and paste options, but will have the named copies as an additional option.
To make things even more convenient, there can be a counter that starts from 1, if the user just wants to copy multiple objects without assigning names each time, they can just click on the third option which will have a name like "add to copy list as #x" where x is the current value of the counter. The counter is increased by 1 each time this option is clicked. I'm not planning to decrease it at all since it's very unlikely for users to make more than a 100 or even 10 copies anyways.
Also, there will be an "X" button beside each item in the copy list to enable users to remove items they're not in need anymore from the list.

Optionally, since there will be an option that says "add to copy list as #x", if the users have used it a lot, thus have a lot of items which all have a names of numbers, the users might forget what each item corresponds to, so, a solution will be to show (but not actually paste) the items when the user hovers over them. Probably this will complicate things, I'm not sure if I'll be able to do it. But in case I've finished the main project before the deadline, I think this will be a good addition.

Problems:
 - It might slow the program if the user has copied a lot of items. Yet, we don't force the user to copy, if the user is in need of lots of copies, then being able to do it and have the program to be a little slower is way better than not being able to do it at all, so, I think this is not a big issue.

If the idea is a good one to submit, where in the code should I start to read and grasp first (probably a good starting point would be where the copying and pasting functions are located)? 
And, if the idea is not good enough, I'd love to know why and how I can improve it.

Thanks.