죄송하지만, 그 말은 첫 번째 게시물 아래에 추가하는 대신 첫 번째 게시물을 수정해야 한다는 뜻인가요?
개발자로서, 쓸모없는 곳에 공백이 남아있는 것을 그냥 두는 것을 싫어합니다. 그것은 더러운 작업이라고 생각합니다.
그래서 저는 <space>:<return> 순서로 입력하는 습관이 있고, <space>:<space><return>이라는 반사적 행동을 익히는 것을 별로 좋아하지 않습니다.
<space>:<space><backspace><return>도 작동하지 않습니다. 왜냐하면 이는 자동 완성 상자를 다시 열기 때문입니다.
핵심은 이렇습니다: 저는 모든 일반 텍스트 에디터에서 <space>:<return> 순서로 입력하는 습관이 있으며, Discourse에서도 동일한 결과가 나오기를 매우 원합니다. 즉, 이 모든 키 입력이 타이핑 플로우/텍스트 플로우(단순히 <space>만이 아닌)로 간주되어, 자동 완성 제안이 무시되어야 한다는 뜻입니다.
(키보드 숫자 키패드에 있는) <return> 대신 <enter>를 사용하는 것은 어떨까요?
이모지를 선택할 때 <arrow-up> / <arrow-down>을 사용하므로, <arrow-left><arrow-right>가 자동 완성 상자를 다시 열지 않는다는 점을 고려할 때, <arrow-right>를 사용하여 이모지를 확인하는 것도 가능합니다.
음, 죄송하지만 말씀하시는 논리를 잘 이해하지 못하겠습니다. 다시 한번 명확히 하자면, 저는 간단한 해결책을 제시했는데, :return을 사용하는 습관이 있어서 그 해결책이 충분하지 않다고 주장하시는 건가요? 그래서 사용자 설정에 이 기능을 새로 도입해야 한다는 건가요? 참고로, 저는 아직 이 특정 기능 요청을 본 적이 없습니다.
테마 컴포넌트에서 이모지 추천 기능을 비활성화하는 로직이 필요하다면, 아래와 같은 코드가 작동합니다. (개념 증명을 시작했지만, 이 경우에도 이모지는 렌더링되지만 컴포저에서 추천만 되지 않습니다.)
추천기를 우회하는 조건을 직접 코드로 구현해야 합니다. 참고로 이 방법은 추천기만 끕니다. 사용자가 :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 토픽에서 이 코드를 참고할 수 있습니다.