I know Electrum is a HD (hierarchical deterministic) wallet, and all of my addresses are derived solely from the initial seed.
So, my problem is, say if I have generated 2000 addresses and used them to receive and send bitcoin, when I use my seed to "restore" the wallet, will it know I have used 2000 addresses or do I need to manually "re-generate" the 2000 addresses?
Until 2.0 version arrives Electrum is not a HD (hierarchical deterministic) wallet.
Electrum has a gap limit that is used to stop looking for addresses in your deterministic seed. It looks for unused addresses, so if the first 1000 addresses you used haven't receive any bitcoin it will stop there, and you'll need to set a higher gap limit to look for all those you've created after that limit.
2.0 will introduce a better way for merchants that deal with that many addresses, but the number of addresses created will need to be recorded as no gap limit for that wallet will be set in advanced.
I see.
Thanks for your clarification