Emacs кэширует изображения, чтобы он мог отображать их снова более эффективно. Когда Emacs отображает изображение, он ищет в кэше изображений существующую спецификацию изображения, равную желаемой спецификации с помощью equal. Если найдено совпадение, изображение отображается из кэша. В противном случае Emacs загружает изображение в обычном режиме.
Эта функция удаляет изображение со спецификацией spec из кэша изображений фрейма frame. Спецификации изображений сравниваются с помощью equal. Если frame равно nil, по умолчанию используется выбранный фрейм. Если frame равно t, изображение очищается во всех существующих фреймах.
В текущей реализации Emacs каждый графический терминал имеет кэш изображений, который используется всеми фреймами на этом терминале (см. Несколько терминалов). Таким образом, обновление изображения в одном фрейме также обновляет его во всех других фреймах на том же терминале.
Одно из применений image-flush — сообщить Emacs об изменении файла изображения. Если спецификация изображения содержит свойство :file, изображение кэшируется на основе содержимого файла при первом отображении изображения. Даже если файл впоследствии изменится, Emacs продолжает отображать старую версию изображения. Вызов image-flush очищает изображение из кэша, заставляя Emacs повторно считывать файл в следующий раз, когда ему потребуется отобразить это изображение.
Другое применение image-flush — это экономия памяти. Если ваша программа на Lisp создает большое количество временных изображений за период, намного меньший, чем image-cache-eviction-delay (см. ниже), вы можете самостоятельно очищать неиспользуемые изображения, вместо того чтобы ждать, пока Emacs сделает это автоматически.
Эта функция очищает кэш изображений, удаляя все хранящиеся в нем изображения. Если filter опущен или равен nil, она очищает кэш для выбранного фрейма. Если filter — это фрейм, она очищает кэш для этого фрейма. Если filter равно t, очищаются все кэши изображений. В противном случае filter рассматривается как имя файла, и все изображения, связанные с этим именем файла, удаляются из всех кэшей изображений.
Если изображение в кэше изображений не отображалось в течение указанного периода времени, Emacs удаляет его из кэша и освобождает связанную память.
Эта переменная указывает количество секунд, в течение которых изображение может оставаться в кэше без отображения. Когда изображение не отображается в течение этого времени, Emacs удаляет его из кэша изображений.
При определенных обстоятельствах, если количество изображений в кэше становится слишком большим, фактическая задержка очистки может быть меньше этой.
Если значение равно nil, Emacs не удаляет изображения из кэша, кроме случаев, когда вы явно его очищаете. Этот режим может быть полезен для отладки.
Эта функция возвращает общий размер текущего кэша изображений в байтах. Например, изображение размером 200x100 с 24 битами на цвет будет иметь размер кэша 60000 байт.