A method comprising: storing a plurality of character strings in a buffer by a computing device, wherein the plurality of strings are associated with a current thread in a first application; receiving a first character by the computing device, wherein the received character is associated with the current thread in the first application; generating a first plurality of character string predictions based on the received first character and the stored plurality of strings by the computing device, wherein each string prediction comprises a string from the stored plurality of strings; providing one or more of the strings of the first plurality of string predictions by the computing device; receiving an indication of selection of one of the provided one or more strings of the first plurality of string predictions by the computing device; in response to the indication of selection, providing the selected string to the first application as part of the current thread by the computing device; receiving an indication that the first application is no longer active; receiving a second character, wherein the second character is associated with a second application; generating a second plurality of string predictions based on the received second character and the stored plurality of strings; providing one or more strings of the second plurality of string predictions; receiving an indication of selection of one of the provided one or more strings of the second plurality of string predictions; and in response to the indication of selection, providing the selected string to the second application; clearing the buffer after some amount of time has passed or after the buffer is full. storing a plurality of character strings in a buffer by a computing device, wherein the plurality of strings are associated with a current thread in a first application; receiving a first character by the computing device, wherein the received character is associated with the current thread in the first application; generating a first plurality of character string predictions based on the received first character and the stored plurality of strings by the computing device, wherein each string prediction comprises a string from the stored plurality of strings; providing one or more of the strings of the first plurality of string predictions by the computing device; receiving an indication of selection of one of the provided one or more strings of the first plurality of string predictions by the computing device; in response to the indication of selection, providing the selected string to the first application as part of the current thread by the computing device; receiving an indication that the first application is no longer active; receiving a second character, wherein the second character is associated with a second application; generating a second plurality of string predictions based on the received second character and the stored plurality of strings; providing one or more strings of the second plurality of string predictions; receiving an indication of selection of one of the provided one or more strings of the second plurality of string predictions; and in response to the indication of selection, providing the selected string to the second application; clearing the buffer after some amount of time has passed or after the buffer is full.