Отключение автозаполнения эмодзи для пользователя

Привет :slight_smile:

Я бы хотел иметь возможность отключить автодополнение эмодзи как пользователь, пожалуйста. :slight_smile:

Пожалуйста, ознакомьтесь с Отключение автодополнения эмодзи и Отключение смайликов (на discourse.gnome.org).

Не могли бы вы также добавить краткое описание проблемы, с которой вы столкнулись, или объяснение, почему эта настройка пользователя будет полезна, в первом посте? Это сделает запрос на новую функцию более полным (и сэкономит людям время на поиск информации по ссылкам :slight_smile:)

(что такое OP?)

Хорошо, я попробую.

  • Как француз, я иногда ввожу <пробел>:<enter>. (<enter> нужен для создания новой строки, а не для подтверждения предложенного эмодзи.)
  • Я также часто ввожу смайлики, особенно «:-)», и часто в конце строки. Они преобразуются в ":slight_smile: ". Мне это не нравится, потому что, хотя результат тот же, это усложняет проверку сообщения перед публикацией.
  • Я пользуюсь сайтом discourse.gnome.org, но там мне сказали, что не могут помочь, так как это настройка на уровне всего сайта. Вот почему я хотел бы, чтобы вы сделали её настройкой на уровне пользователя, пожалуйста. :slight_smile:

Альтернатива: вы могли бы найти другой способ подтверждения предложенного эмодзи в функции автодополнения (возможно, <tab>?), чтобы <enter> воспринимался как продолжение ввода, игнорируя предложения, как и <пробел>.

1 лайк

Original Post = первый пост в теме, тот, который задает заголовок темы, как ваш, с которого началась эта.

так почему бы просто не нажать :пробелenter?

Если вы поставите пробел после двоеточия, всплывающее окно автодополнения эмодзи должно закрыться немедленно.

4 лайка

Извините, это значит, что мне следует отредактировать первый пост вместо того, чтобы писать ниже него?

Как разработчик, я ненавижу оставлять лишние пробелы там, где они бесполезны. Это грязная работа.
Поэтому у меня есть привычка набирать <пробел>:<enter>, и мне совсем не хотелось бы приобретать рефлекс <пробел>:<пробел><enter>.

<пробел>:<пробел><backspace><enter> тоже не работает, так как снова открывает окно автодополнения.


Суть в следующем: у меня есть привычка набирать <пробел>:<enter> в любом простом текстовом редакторе, и я очень хочу, чтобы в Discourse это давало тот же результат. То есть все эти клавиши должны восприниматься как поток ввода / поток текста (не только <пробел>), поэтому предложения автодополнения должны игнорироваться.

Почему бы не использовать Enter вместо enter (тот, что на цифровой части клавиатуры)?
Поскольку для выбора эмодзи используются стрелка вверх / стрелка вниз, можно было бы использовать стрелка вправо для подтверждения, учитывая, что стрелка влевострелка вправо не открывает окно автодополнения снова.

Хм, извините, я не совсем понимаю вашу аргументацию. Просто для уточнения: я предложил вам простое решение, но вы говорите, что его недостаточно, потому что у вас есть привычка использовать :return, поэтому вы считаете, что нам следует добавить новую функциональность в настройки пользователя для этого? К слову, я не припоминаю, чтобы видел этот конкретный запрос на добавление функции раньше. :thinking:

Спасибо за обходной путь. :slight_smile:

  • а :<space><backspace><return> — это не обходной путь,
  • и я не хотел бы вырабатывать рефлекс :<space><return> и вводить его в любом простом текстовом редакторе, так как это создаст проблемы, особенно в коде и официальной документации.

Какая это новая функция?

Как я понял: уже существует настройка на уровне всего сайта, и я предлагаю сделать эту настройку на уровне пользователя.


Я только что обнаружил, что в GitLab также есть функция автозаполнения, похожая на ту, что в Discourse, за исключением того, что при открытии окна автозаполнения эмодзи не выбран, поэтому пользователю нужно нажать , чтобы выбрать первый предложенный эмодзи.

Затем :<return> рассматривается как обычный ввод текста, и предложения автозаполнения игнорируются.
Окно автозаполнения открывается даже тогда, когда : вводится после букв, и я не думаю, что это кого-то беспокоит. :slight_smile:

Пользователям приходится вводить вместо , чтобы получить первый предложенный эмодзи.

Считаете ли вы такое изменение приемлемым?

Что насчёт space : escape return в качестве обходного пути? В тестировании это работает у меня, но можно случайно свернуть редактор.

1 лайк

Спасибо большое, это кажется отличным решением. :slight_smile:

Пожалуйста, учтите либо решение для GitLab, либо отключение на уровне пользователя, чтобы мне больше не нужно было вставлять <escape> в процессе набора текста. :slight_smile:

1 лайк

Я бы хотел поддержать этот запрос. У меня были пользователи, которые просили отключить для них смайлики, так как они хотят вводить старые, классические варианты, например : )

Хотят ли ваши пользователи, чтобы Discourse отображал :-) вместо :-)?

Если да, то, если вы администратор, вы уже можете отключить смайлики для всего сервера (отключение на уровне сайта).

Если вы хотите отключить смайлики для конкретного пользователя, уточните: вы хотите, чтобы смайлики были отключены для всех постов, которые он читает, или только для его собственных постов?

В первом случае будьте осторожны: я не думаю, что Discourse преобразует :slight_smile: в :-), если сообщение написано пользователем, у которого смайлики не отключены.


Для себя я попросил отключить только автозаполнение эмодзи, потому что меня беспокоит только процесс написания постов, когда вместо :-) отображается :slight_smile:. Но меня не беспокоит видеть :-) ни в панели предварительного просмотра, ни при чтении постов.

У меня есть пользователь, которому не противно видеть эмодзи, но он хочет отображать их как :-).

То есть он хочет, чтобы другие люди не видели эмодзи в его сообщениях.

Запрос немного необычный. Но я сообщу ему об этих обратных кавычках, возможно, они помогут!

Я тоже получаю запросы от пользователей по этому поводу, особенно в отношении плагина чат (хотя настройку можно было бы использовать для обоих)

Если кто-то хочет добавить логику для отключения рекомендателя эмодзи в компоненте темы, подойдет что-то вроде приведённого ниже. (Я начал создавать концепт-доказательство, но в текущем виде эмодзи всё ещё отображаются, просто они не рекомендуются в редакторе сообщения).

Вам нужно будет реализовать условия, при которых рекомендатель будет обходиться. Обратите внимание: отключается только сам рекомендатель. Эмодзи всё равно будут отображаться, если пользователь введёт что-то вроде :persevering_face:.

import { withPluginApi } from "discourse/lib/plugin-api";

export default {
  name: "disable-emoji-autocomplete-non-staff",

  initialize() {
    withPluginApi("0.8.12", (api) => {
      api.modifyClass("component:d-editor", {
        _applyEmojiAutocomplete() {
          let isGroupMember = ...логика для получения списка участников...;
          // Применять автодополнение эмодзи только для сотрудников
          if (!isGroupMember) {
            // Или, возможно, вы захотите отключить подсказку эмодзи для участников группы hate_emoji
            return; // отключает автодополнение для не-сотрудников
          }
          // В противном случае возвращаемся к исходному поведению
          this._super(...arguments);
        },
      });
    });
  },
};

Если вам нужен полностью рабочий компонент темы, который включает или отключает рекомендатель эмодзи в зависимости от группы (или, возможно, по какому-то другому критерию?), вы можете сослаться на него в своей теме в Marketplace.