Вы можете создать свою собственную локальную переменную потока, чтобы сохранить собственный идентификатор сопрограммы или даже непосредственно ее сохраненный вывод, и использовать функцию расширения ThreadLocal.asContextElement()
для преобразования ее в элемент контекста сопрограммы. Теперь, если вы запустите свою сопрограмму с этим элементом, то указанное значение этой локальной переменной потока будет автоматически установлено в соответствующую локальную переменную потока, поскольку эта сопрограмма переходит от потока к потоку. Смотрите следующий пример кода:
import kotlinx.coroutines.*
val myId = ThreadLocal<String>()
// I'm not a suspending function, yet I know what coroutine I work in
fun whereAmI() {
println("I'm in coroutine '${myId.get()}'")
}
fun main() = runBlocking<Unit> {
launch(myId.asContextElement("First")) {
whereAmI()
}
launch(myId.asContextElement("Second")) {
whereAmI()
}
}
Это только взяло Google для "энергии, сворачивающейся", чтобы обнаружить, что Vim поддерживает шесть методов сгиба.
syntax
, indent
и diff
все означают, что пользователь имеет мало контроля, где сворачивание происходит. Это может или не может быть проблемой.
marker
проблема для Вас, потому что Вам не нравятся маркеры.
expr
имел немного каждой из тех проблем, в зависимости от выражения, которое Вы создаете.
Если Ваш человек хочет определить свои собственные точки сгиба и сохранить их в отдельном файле, он походит set foldmethod=manual
объединенный с :mkview
и :loadview
добился бы цели.
Необходимо попробовать его сами. После того как Вы начинаете использовать foldmethod=marker нет только никакого возвращения. Я работаю над проектом теперь, где я не могу использовать сворачивание маркера, и как стирать одежду во время, прежде чем были стиральные машины.
Я предположил бы, что он мог просто добавить следующее к своему .vimrc:
set foldmethod=syntax
Принятие он использует версию VIM, который поддерживает это.:)