Fix region compose abuse

compose-region function in emacs doesn't work when the intention is to replace the original string to another string. it  only works when we want to replace the original string with another character.

so the solution i found is to use the invisible text property. when we regex to a string we want, just make all the text we dont want invisible. problem with this is when trying to display the variable name, the text property is still invisible. to properly display it, we need to set it temporarily back to visible during regex search.