consult-omni
소개Consult-omni는 하나 이상의 사용자 정의 소스(웹 검색 엔진, AI 보조자, elfed 데이터베이스, 조직 노트, 로컬 파일, 데스크톱 애플리케이션, 메일 서버 등)의 검색 결과를 Emacs 미니버퍼에서 직접 가져오기 위한 패키지입니다. 이는 확장된 특징과 기능을 갖춘 Consult-Web의 후속 제품입니다.
Consult-omni는 사용자가 다양한 소스에서 결과를 더 쉽게 얻고 옴니 스타일 검색에서 로컬 및 웹 소스를 결합할 수 있도록 Consult에 대한 래퍼 및 매크로를 제공합니다. 즉, Consult-omni를 사용하면 Emacs 기능/패키지(예: Emacs 버퍼, 조직 파일, elfed 등), 명령줄 프로그램( grep, find, gh, ...) 또는 웹 검색 엔진(Google, Brave, Bing, ...).
Consult-omni는 Alfred 또는 MacOS 스포트라이트와 같은 다른 옴니 검색 도구에 대한 오픈 소스 무료 대안이 될 수 있습니다. 다양한 기본 소스를 예로 제공하지만 여기서 주요 아이디어는 소스에 구애받지 않고 사용자가 자신의 소스/워크플로(플러그인이라고도 함)를 정의할 수 있는 도구 세트를 제공하는 것입니다.
필수 스크린샷은 다음과 같습니다.
위 스크린샷에서는 키 단축키를 사용하여 Emacs 프레임을 열고 consult-omni
호출하고(MacOS 스포트라이트 호출과 유사) "emacs"라는 용어를 검색한 다음 이동하여 애플리케이션, gptel을 포함한 다양한 소스의 미리 보기를 살펴봅니다. , 브레이브, 구글, 유튜브, 엘피드, mu4e, ....
다음은 Consult-omni를 애플리케이션 실행 프로그램으로 사용하는 방법을 보여주는 또 다른 스크린샷입니다.
기능에 대한 설명과 다른 패키지와의 비교를 보려면 아래 Consult-web 및 Consult-omni에 대한 내 YouTube 동영상을 시청하세요.
각 소스에 대해 정적 또는 동적 명령이 있을 수 있습니다. 정적 명령은 입력 사용을 쿼리한 다음 결과를 가져옵니다. 동적 명령은 사용자가 입력할 때 동적 완성을 수행합니다(사용자가 입력할 때 결과 표시). 2024년에는 동적 명령이 좀 더 직관적이고 현대적으로 느껴지지만, 반면에 특히 천천히 입력할 경우 서버에 쿼리를 여러 번 보내는 단점이 있습니다! 서비스 제공자 및 API 모델에 따라 서버에 너무 자주 접속하는 것을 피하고 싶을 수 있습니다(예: 쿼리당 비용을 지불하는 서비스의 경우). 따라서 특정 서비스의 경우 동적 명령보다 정적 명령이 더 나은 선택일 수 있습니다. consult-omni-define-source
매크로를 사용하면 nil
, t
또는 'both
키워드 :static
에 전달하여 정적, 동적 또는 둘 다를 생성하도록 선택할 수 있습니다. 다음은 Brave 검색을 위한 정적 및 동적 명령을 모두 생성하기 위한 소스 코드의 예입니다.
(consult-omni-define-source " Brave "
:narrow-char ?b
:type 'dynamic
:require-match t
:face 'consult-omni-engine-title-face
:request # 'consult-omni--brave-fetch-results
:preview-key consult-omni-preview-key
:search-hist 'consult-omni--search-history
:select-hist 'consult-omni--selection-history
:enabled ( lambda () ( bound-and-true-p consult-omni-brave-api-key))
:group # 'consult-omni--group-function
:sort t
:static 'both )
다음은 Wikipedia에 대한 STATIC 대화형 명령의 스크린샷입니다.
다음은 Wikipedia용 DYNAMIC 대화형 명령의 스크린샷입니다.
기본적으로 Consult-omni는 두 가지 주요 다중 소스 대화형 명령을 제공합니다.
consult-omni-multi
: consult-omni-multi-sources
에 정의된 대로 여러 소스를 사용하고 동적 완료를 통해 미니버퍼 완료 결과를 표시하는 대화형 DYNAMIC 명령입니다(결과는 사용자 유형에 따라 가져옵니다). 스크린샷은 다음과 같습니다. consult-omni-multi-static
: consult-omni-multi-sources
에 정의된 대로 여러 소스를 사용하고 미니버퍼 완료 결과를 표시하는 대화형 STATIC 명령입니다. Consult-omni-multi-static은 동적 완료 기능을 제공하지 않지만 일부는 결과 범위를 좁히는 데 이 기능을 사용하는 것이 더 직관적이라고 생각할 수도 있습니다. 사용자는 하나의 검색어를 제공하고, 일단 결과가 검색되면 미니버퍼에 입력하면 후보의 범위가 좁아집니다.이전 Consult-web과 달리 Consult-omni는 더 이상 다른 다중 소스 대화형 명령(예: 학자 검색)을 제공하지 않습니다. 이제 사용자 정의 작업 흐름에 대해 이러한 명령을 정의하는 것은 사용자의 몫입니다. 예를 들어 한 사용자는 웹 소스와 로컬 소스를 쿼리하기 위해 별도의 대화형 명령을 정의할 수 있고, 다른 사용자는 지식 소스(학술 참고 자료, 노트 등)와 유틸리티(앱, 버퍼, 파일 등)에 대한 대화형 명령을 정의할 수 있습니다. 새로운 대화형 명령을 정의하는 방법에 대한 예는 아래의 고급 구성에서 제공됩니다.
인수는 동적 대화형 명령에 전달될 수 있으며, 비동기 검색 참조의 "Perl 분할" 스타일과 유사한 구문을 사용하여 결과 범위를 더욱 좁힐 수 있습니다.
결과 범위를 좁히려면 검색 쿼리 뒤에 #
(또는 consult-async-split-style
에 정의된 다른 문자)을 추가해야 합니다. 예를 들어 미니버퍼에 다음을 입력합니다.
#emacs 웹 검색#github
먼저 "emacs web search"를 검색한 다음 "github"를 사용하여 범위를 좁힙니다.
또한 consult-grep
과 유사한 구문을 사용하여 인수를 동적 명령에 전달할 수도 있습니다. 예를 들어 미니버퍼에 다음을 입력합니다.
#emacs에서 URL을 탐색하는 방법 -- --model gpt-3.5-turbo
gpt-3.5-turbo
키워드 인수 :model
의 값으로 결과를 가져오는 모든 소스의 백엔드 함수에 전달합니다. 해당 소스 중 하나라도 :model
키워드 인수를 허용하면 gpt-3.5-turbo
값이 해당 소스에 전달됩니다. 이러한 이유로 존재하지 않는 키워드가 전달될 때 오류를 피하기 위해 항상 키워드 인수( &allow-other-keys
추가라고도 함)를 허용하는 함수를 사용하는 것이 좋습니다.
--
사용하는 대신 콜론과 함께 키워드를 사용할 수도 있습니다 :
다음은 위의 예와 유사합니다.
#emacs에서 URL을 탐색하는 방법 -- :model gpt-3.5-turbo
Consult를 사용할 때 elisp 기능(예: buffer-list
, re-search-forward
) 또는 명령줄 프로그램(예: grep
, notmuch
, gh
, mu
, …) 등 다양한 유형의 소스를 처리합니다. 이는 후보 목록을 반환하고, 이는 다시 completing--read
로 전달됩니다. Consult는 consult--multi
사용하여 여러 소스를 결합하는 방법을 제공하지만 다양한 유형의 소스(예: elisp를 사용한 명령줄 프로그램)를 결합하는 기능은 제한됩니다. Consult-omni에서는 내장된 Consult 기능 주위에 래퍼와 기계를 만들고 각 소스가 해당 유형을 선언하도록 하여 이 문제를 해결합니다. 이 유형은 옴니 컨설팅에게 해당 소스에서 후보자를 수집하고 다른 소스와 결합하는 방법을 알려줍니다. 유형은 'sync
, 'dynamic
또는 'async
입니다.
'sync
: 이는 동기 소스입니다. 즉, Consult-omni가 요청 함수를 호출하여 이 소스에서 후보를 수집할 때 이를 동기적으로 호출하고(Emacs 프로세스 차단) 반환된 값(후보 목록 또는 nil 예상)을 기다립니다. ). 예를 들어 이는 단순히 elisp 함수를 실행하고 buffer-list
와 같이 목록을 빠르게 반환하는 소스에 적합합니다. 비동기 제어(타이머 및 감시자 등)에 대한 오버헤드가 함수를 직접 동기적으로 호출하는 것보다 시간이 더 많이 소요될 것이기 때문에 이 함수를 비동기적으로 호출하면 이득이 거의 없습니다.'dynamic
: 동적 소스는 수집 elisp 함수를 비동기적으로 호출하는 데 도움이 되거나 필요한 소스입니다. 예를 들어, 소스에서 항목을 수집하려면 서버에 HTTP 요청을 보내고 응답을 기다려야 하는 경우 응답을 기다리는 동안 Emacs 프로세스가 차단되지 않도록 동적 유형을 사용해야 합니다. 이 경우 소스에 대한 요청 함수(항목을 반환하는 함수)는 응답이 도착할 때 호출되는 콜백 함수를 사용해야 합니다. 예를 들어 이는 Google, Brave 또는 OpenAI API와 같은 웹 검색 API에서 응답을 얻는 데 적합합니다.'async
: 비동기 소스는 외부 명령줄 프로그램을 사용하므로 프로세스를 생성하고 명령줄 프로그램의 출력을 가져오고 이를 구문 분석하여 후보를 수집해야 하는 소스입니다. 예를 들어 이는 grep
또는 notmuch
에서 후보를 가져오는 데 적합합니다....Consult-omni 기계를 사용하면 동기화 및 비동기 호출/프로세스를 결합하여 다양한 유형의 여러 소스를 하나의 명령으로 결합할 수 있으므로 사용자는 거의 실시간으로 다양한 소스에서 검색 결과를 효율적으로 얻을 수 있습니다(기다릴 필요 없음, 후보가 표시된 대로 표시됨). 도착하다).
다음을 통해 기본 착수 작업을 로드할 수 있습니다.
( require 'consult-omni-embark )
기본 작업을 사용하면 기본 또는 대체 브라우저에서 링크를 열 수 있고 링크의 제목 및/또는 URL을 복사하거나 삽입할 수도 있습니다. 다른 착수 작업은 사용자 고유의 특정 작업 흐름에 따라 정의할 수 있습니다.
예를 보려면 Consult-web의 YouTube 비디오(https://youtu.be/7pDfyqBZwvo?t=4962)를 참조하세요.
문서 문자열과 공백이 없으면 코드는 1000줄 미만이며 Consult 및 내장 URL 검색에만 의존합니다.
필요한 부분만 로드할 수 있습니다. 예를 들어 helm-google-autosuggest
와 유사한 자동 제안 유틸리티만 필요한 경우 다음과 같이 최소한의 구성을 사용할 수 있습니다.
( use-package consult-omni
:straight (consult-omni :type git :host github :repo " armindarvish/consult-omni " :branch " main " :files ( :defaults " sources/*.el " ))
:after consult
:config
; ; Load Sources Core code
( require 'consult-omni-sources )
; ; Load Embark Actions
( require 'consult-omni-embark )
; ; Only load brave-auto-suggest source
( require 'consult-omni-brave-autosuggest )
; ;; Set your shorthand favorite interactive command
( setq consult-omni-default-interactive-command # 'consult-omni-brave-autosuggest ))
모든 모듈(즉, 모든 소스)에는 100~200줄의 코드가 추가됩니다. 이는 새로운 소스를 추가한다는 의미이기도 합니다. 해당 예제에 따라 짧은 코드 조각만 작성하면 됩니다!
소스와 결과에 대한 작업 실행을 위한 다양한 사용자 정의 옵션. 원하는 대로 다양한 형식, 다양한 작업 등을 통해 새로운 소스를 추가할 수 있습니다.
동적 컬렉션을 사용하면 복잡한 작업 흐름을 즉석에서 수행할 수 있습니다. 인수를 전달하여 쿼리 매개변수를 즉시 변경합니다. Embark를 사용하여 임의의 결과 집합을 임시로 선택하고 이에 대한 Embark 작업을 실행합니다. 이를 통해 일괄 처리도 가능합니다. 예를 들어 나중에 검토하기 위해 조직 모드 메모에 긴 결과 목록을 추가할 수 있습니다(이 YouTube 비디오 참조: https://youtu.be/7pDfyqBZwvo?t=4774).
시작하기 전에 다음 세 가지 사항을 이해했는지 확인하세요.
consult-omni-sources
에서 제공되는 기능은 다양한 서비스(예: 검색 공급자)를 통합하기 위한 기본 데모를 제공합니다. 그러나 각 서비스에는 자체 이용 약관이 제공되므로(시간이 지남에 따라 변경될 수 있고 위치에 따라 다를 수 있음) 위치에 따라), 포괄적인 솔루션을 제공하고 시간이 지나도 유지 관리하는 것이 어렵습니다. Consult-omni는 설정에서 다른 서비스를 연결하고 통합하는 방법에 대해 중립적입니다(consult-omni나 Emacs는 사용자 또는 사용자 사용에 대한 정보를 수집하지 않기 때문). 따라서 궁극적으로 사용자만이 모든 것을 올바르고 올바르게 설정할 책임이 있습니다. 사용 결과(예: 유료 API 사용 비용)를 이해하고 사용 사례에 대한 관련 법률 및 규정의 범위 내에서 유지하십시오(예: 소프트웨어 사용자 계약 준수 등). 따라서 각 서비스의 사용 방법을 읽고 이해하는 것이 중요하며, 서비스를 Consult-Omni와 통합할 때 내부적으로 어떤 일이 발생하는지 이해하는 것도 중요합니다. 나는 여기와 위키 페이지에 문서를 제공하기 위해 최선을 다하고 가능하면 도움을 주려고 노력할 것입니다. 그러나 계속 진행하기 전에 모든 책임은 본인에게 있음을 이해하십시오. 예제 구성을 원하면 드롭인 *예제 구성*을 참조하세요. 자세한 설명은 다음과 같습니다.
Consult-omni를 사용하려면 Emacs >28.0(이전 버전은 테스트하지 않음)이 필요하며 Consult가 필요합니다. 이것이 유일한 요구 사항이지만 이 README의 나머지 부분을 읽어 보시기 바랍니다. 다양한 설정에 대해 다른 패키지와 유용한 구성을 권장합니다. 이러한 추가 패키지 및 설정 중 일부는 Consult-Omni 경험을 향상시킬 수 있으므로 설치도 고려할 수 있습니다. 예를 들어, Consult를 vertico, orderless 및 embark와 같은 다른 패키지와 결합하면 기능은 물론 사용자 경험도 향상될 수 있습니다.
Consult-omni는 현재 ELPA 또는 MELPA에 포함되어 있지 않습니다. 따라서 Straight.el, elpaca 등과 같은 대체 비표준 패키지 관리자를 사용하여 설치하거나 수동 설치를 사용해야 합니다.
Straight.el을 사용하여 Consult-omni를 설치하려면 다음 명령을 사용할 수 있습니다. Consult를 로드한 후 Consult-omni를 로드해야 합니다(예: require 'consult
).
( straight-use-package
'(consult-omni :type git :host github :repo " armindarvish/consult-omni " :files ( :defaults " sources/*.el " )))
또는 직접 use-package
매크로를 사용하는 경우 다음을 수행할 수 있습니다.
( use-package consult-omni
:straight (consult-omni :type git :host github :repo " armindarvish/consult-omni " :files ( :defaults " sources/*.el " ))
:after consult)
이 저장소를 포크하고 자체 저장소를 사용할 수도 있습니다.
EmacsWiki에 설명된 대로 이 저장소를 복제하고 파일이 로드 경로에 있는지 확인하세요.
Consult-omni를 로드하기 전에 Consult를 로드해야 합니다(예: require 'consult
).
제공된 consult-omni-sources
모듈을 로드한 다음 consult-omni-sources-load-modules
함수를 호출하여 모든 기본 소스를 검색할 수 있습니다.
( require 'consult-omni-sources )
(consult-omni-sources-load-modules)
이는 일부 인기 있는 서비스에 대한 소스를 제공하고 대화형 명령(동적 검색, 정적 검색 또는 소스에 따라 둘 다)의 긴 목록을 추가합니다. 시간이 지남에 따라 커뮤니티의 기여를 통해 더 많은 서비스를 추가할 수 있기를 바랍니다. 이는 자신의 소스를 추가하거나 특정 사용 사례에 맞게 현재 소스를 조정하는 방법을 배울 수 있는 좋은 예이기도 합니다.
consult-omni-sources-modules-to-load
목록을 설정한 다음 consult-omni-sources-load-modules
호출을 로드하여 여러 소스(모두는 아님)를 로드할 수도 있습니다.
( require 'consult-omni-sources )
( setq consult-omni-sources-modules-to-load '(consult-omni-google consult-omni-wikipedia))
(consult-omni-sources-load-modules)
이는 Consult-omni가 로드하는 소스를 consult-omni-sources-modules-to-load
에 정의된 소스로만 제한합니다.
또는 해당 파일만 요구하여 단일 소스를 로드할 수도 있습니다. 예를 들어 Wikipedia의 경우 다음을 수행할 수 있습니다.
( require 'consult-omni-sources )
( require 'consult-omni-wikipedia )
그러면 Wikipedia 검색을 위한 대화형 명령만 추가됩니다(예: consult-omni-wikipedia
및/또는 consult-omni-wikipedia-static
).
다음은 현재 소스 목록입니다. 각 소스 설정 및 사용에 대한 자세한 내용은 위키 페이지(현재 구축 중)를 참조하세요. 여기에서 YouTube 튜토리얼 비디오를 시청할 수도 있습니다: https://www.youtube.com/watch?v=wNH2E7iT__c
원천 | 범주 |
---|---|
앱 | 데스크탑 애플리케이션 |
빙 | 웹 검색 엔진 |
Brave AutoSuggest(브레이브 자동 제안) | 웹 단어 완성/자동 제안 |
용감한 | 웹 검색 엔진 |
브라우저 기록 | 웹 브라우저 기록 |
버퍼 소스를 참조하세요 | Emacs 버퍼, 파일, 북마크, … |
계산 | 이맥스 계산기 |
채팅GPT | 간단한 AI 프롬프트 |
상담 메모 | 지역 메모 |
사전 | Emacs 내장 사전 |
도이오르그 | 학업 참고서 |
DuckDuckGo(제한된 API) | 검색 제안 |
엘피드 | 피드(RSS, 비디오,…) |
fd | fd 명령을 사용하여 로컬 파일 검색 |
찾다 | find 명령으로 로컬 파일 검색 |
GitHub | gh 명령으로 GitHub 저장소 검색 |
웹 검색 엔진 | |
Google 자동 제안 | 웹 단어 완성/자동 제안 |
grep | grep 명령으로 로컬 파일 검색 |
git-grep | grep 명령을 사용하여 로컬 Git 파일 검색 |
립그렙 | rg 명령을 사용하여 로컬 파일 검색 |
ripgrep-all | rga 명령으로 로컬 파일 검색 |
GP텔 | AI 어시스턴트 |
인비디어스 | 온라인 비디오(YouTube) |
버퍼 텍스트 검색 | Emacs 버퍼에서 텍스트 검색 |
위치하고 있다 | 로컬 명령으로 로컬 파일 검색 |
남성 | man 명령으로 매뉴얼 페이지 검색 |
mdfind | OSX mdfind 명령으로 로컬 파일 검색 |
mu4e | 이메일 검색 |
노트 검색 | 로컬 메모 파일 검색 |
별로 | 이메일 검색 |
누미 | Numi의 numi-cli/ 명령을 사용하는 계산기) |
조직 안건 | 조직 안건 항목 검색 |
퍼브메드 | 학업 참고서 |
스코푸스 | 학업 참고서 |
스택오버플로우 | 커뮤니티 포럼 |
위키피디아 | 백과 사전 |
유튜브 | 온라인 비디오(YouTube) |
Consult-omni는 사용자가 자신의 사용 사례에 따라 모든 것을 사용자 정의할 수 있어야 한다는 아이디어로 구축되었으므로 사용자는 이 패키지를 구성하는 방법을 배울 것으로 기대됩니다. 따라서 이 섹션을 읽고 필요와 특정 사용 사례에 따라 패키지를 구성하는 방법을 이해하는 것이 좋습니다. 이러한 설정 외에도 일부 소스에는 Wiki 페이지(현재 준비 중) 및 이 YouTube 튜토리얼(https://www.youtube.com/watch?v=wNH2E7iT__c)에서 논의되는 고유한 사용자 정의 변수 등이 있습니다.
다음과 같은 사용자 정의 가능한 변수가 제공됩니다.
consult-omni-sources-modules-to-load
로드할 모듈 목록입니다. consult-omni-sources-load-modules
호출하기 전에 이를 설정하면 로드되는 모듈(소스)을 제한하고 특정 소스에 대한 요구 사항 누락으로 인한 오류를 방지할 수 있습니다. 예를 들어 Wikipedia를 로드하는 경우:
( setq consult-omni-sources-modules-to-load ( list 'consult-omni-wikipedia ))
consult-omni-default-browse-function
URL 열기를 위한 기본 찾아보기 기능입니다. 다음을 통해 외부 브라우저 기능으로 설정할 수 있습니다.
( setq consult-omni-default-browse-function 'browse-url )
consult-omni-alternate-browse-function
URL 열기를 위한 보조 찾아보기 기능. 예를 들어, 시작 작업을 통해 대체 브라우저에 빠르게 액세스하기 위해 eww 또는 다른 브라우저로 설정할 수 있습니다.
( setq consult-omni-alternate-browse-function 'eww-browse-url )
consult-omni-default-preview-function
링크 미리보기에 사용되는 기본 기능입니다. 예를 들어 eww로 설정할 수 있습니다.
( setq consult-omni-default-preview-function # 'eww-browse-url )
또는 xwidegt-webkit:
( setq consult-omni-default-preview-function # 'xwidget-webkit-browse-url )
consult-omni-show-preview
모든 상담 옴니 소스에 대한 미리보기를 켜거나 끕니다. 이를 t
로 설정하고 preview-key
사용하여 소스별로 미리보기를 제어하는 것을 권장합니다.
consult-omni-preview-key
이것이 기본 미리보기 키입니다. 좋은 선택은 "Co"일 수 있습니다.
( setq consult-omni-preview-key " C-o " )
consult-omni-default-format-candidate
이 변수는 후보의 형식을 지정하기 위해 호출되는 함수를 저장합니다(명시적인 형식 지정 기능이 없는 모든 소스에서). Consult-omni는 두 가지 예제 기능을 제공합니다.
consult-omni--simple-format-candidate
미니버퍼에 여백 주석 없이 타일을 표시합니다.consult-omni--highlight-format-candidate
한계 주석이 있는 후보를 표시하고 검색어도 강조 표시합니다. consult-omni-default-count
기본적으로 Consult-omni는 소스당 이만큼 의 결과만 검색합니다. 성능을 빠르게 유지하려면 이 값을 낮은 숫자(예: 5~10)로 유지하는 것이 좋습니다. 기본값은 5로 설정됩니다. 요즘 대부분의 일상적인 사용 사례에서는 상위 5개 결과 이상이 필요하지 않기 때문입니다.
( setq consult-omni-default-count " 5 " )
Consult-omni의 동적 명령을 사용하면 -n
, --count
, :n
또는 :count
에 인수를 전달하여 언제든지 숫자를 늘릴 수 있습니다(예를 들어 search term -- -n 30
을 입력하면 다음이 가능합니다). 최대 30개의 결과를 검색합니다.
consult-omni-default-page
이는 기존 검색결과 페이지에서 2, 3,…,N 페이지로 이동하는 것과 유사합니다. N으로 설정하면 첫 번째(N * 개수/페이지) 결과를 건너뛰고 다음 결과 페이지가 표시됩니다. 최고의 결과를 보려면 이를 기본값인 0으로 유지하는 것이 좋습니다.
Consult-omni의 동적 명령을 사용하면 -p
, --page
, :p
또는 :page
인수에 값을 전달하여 언제든지 페이지를 변경할 수 있습니다(예를 들어 search term -- -p 2
입력하면 2 페이지를 얻을 수 있습니다.
consult-omni-default-timeout
consult-omni
STATIC 명령의 단일 소스에서 결과 가져오기를 포기하기 전까지의 최대 시간(초)입니다.
consult-omni-url-use-queue
url-queue
사용 여부에 대한 부울입니다.
consult-omni-url-queue-parallel-processes
병렬로 실행되는 url-queue
프로세스 수입니다.
consult-omni-url-queue-timeout
단일 url-queue
작업이 포기되기 전까지 지속될 수 있는 최대 시간(초)입니다.
consult-omni-log-buffer-name
디버깅에 주로 유용한 로깅 정보의 버퍼 이름입니다.
consult-omni-log-level
이 변수는 Consult-omni가 정보를 기록하거나 오류를 표시하는 방법을 제어합니다. 자세한 내용을 로깅/표시하는 순서대로 nil
, 'info
또는 'debug
될 수 있습니다.
consult-omni-group-by
결과를 그룹화하는 데 사용되는 필드입니다. 기본적으로 결과는 소스 이름을 기준으로 그룹화됩니다. 그러나 이는 다양한 그룹화 동작을 달성하기 위해 변경될 수 있습니다. nil
로 설정하면 결과가 그룹화되지 않습니다. 또한 후보자의 다른 속성(예 :url
, :title
, :domain
, …)으로 설정할 수도 있습니다.
( setq consult-omni-group-by :source )
consult-omni-multi-sources
이것은 consult-omni-multi
및 consult-omni-multi-static
명령에 사용되는 소스 이름 문자열(예: '("Google", "Wikipedia", "chatGPT")
) 목록입니다(위 참조). 설명).
consult-omni-highlight-matches-in-minibuffer
Consult-omni가 미니버퍼 후보에서 검색어 일치 항목을 강조 표시하는지 여부입니다. 이는 검색 결과의 관련성을 강조하는 데 유용합니다.
consult-omni-highlight-matches-in-file
Consult-omni가 파일(예: 미리 보기 또는 파일을 열 때)에서 검색어 일치 항목을 강조 표시하는지 여부입니다. 이는 대상 파일을 연 후 검색어와 일치하는 항목을 찾는 데 유용합니다.
consult-omni-default-interactive-command
이는 자주 사용하는 Consult-omni 대화형 명령을 consult-omni
명령에 바인딩하는 편리한 기능이므로 Mx
호출 시 더 쉽게 기억하고 찾을 수 있습니다. 이를 대화형 명령(예: consult-omni-multi
또는 consult-omni-multi-static
) 중 하나에 바인딩하거나 단일 소스 명령(예: consult-omni-google
, consult-omni-google-static
, consult-omni-google-wikipedia
, …) 또는 자신만의 맞춤 명령(단일 또는 다중 소스)을 정의하여 대신 사용할 수 있습니다.
consult-omni-http-retrieve-backend
이 변수는 HTTP 요청에 대해 Consult-omni에서 사용되는 백엔드를 제어합니다. Consult-omni는 3가지 백엔드를 지원합니다.
url-retrieve
request
(emacs-request 참조)plz
(plz.el 참조) 예를 들어 백엔드를 plz
로 변경하려면 다음을 수행할 수 있습니다.
( setq consult-omni-http-retrieve-backend 'plz )
consult-omni-default-autosuggest-command
기본 자동 제안 명령. Consult-omni는 consult-omni-dynamic-brave-autosuggest
및 consult-omni-dynamic-google-autosuggest
를 사용하여 두 가지 예를 제공하지만 다른 소스(예: google, Wikipedia 등)에서 다른 사용자 정의 자동 제안 명령을 정의할 수도 있습니다.
( setq consult-omni-default-autosuggest-command # 'consult-omni-dynamic-brave-autosuggest )
consult-omni-dynamic-input-debounce
동적 명령에서는 consult-omni-dynamic-input-debounce
초 동안 새 입력이 없는 경우에만 동적 수집 프로세스가 시작됩니다. 입력 속도가 느리거나 검색하려는 내용을 생각할 시간이 필요하다고 생각하는 경우 이 숫자를 늘려 검색을 너무 일찍 실행하지 않도록 할 수 있습니다. 특히 유료 서비스에서 너무 이른 검색어가 실행되는 것을 피하고 싶은 경우에는 더욱 그렇습니다. 기본적으로 이는 Consult의 내장 입력 디바운스 값인 0.5에서 상속됩니다. 개인적으로 Consult-Omni가 쿼리를 입력하는 동안 유료 OpenAI API에 쿼리를 보내는 것을 원하지 않기 때문에 Consult-Omni의 속도가 너무 빠르다고 생각하여 0.8 - 1초로 느리게 합니다.
( setq consult-omni-dynamic-input-debounce 0.8 )
consult-omni-dynamic-input-throttle
동적 명령에서 동적 수집 프로세스는 consult-omni-dynamic-input-throttle
초마다 시작됩니다. 초당 쿼리 수가 제한된 API 서비스를 사용하는 경우 오류가 발생하지 않도록 이 숫자를 늘리는 것이 좋습니다. 저는 이것을 입력-디바운스 값의 2배로 설정했습니다.
( setq consult-omni-dynamic-input-throttle 1.6 )
consult-omni-dynamic-refresh-delay
동적 명령에서 완료 UI는 consult-omni-dynamic-refresh-delay
초마다 업데이트됩니다. consult-omni-dynamic-input-debounce
만큼 빠르게 실행하고 싶을 수도 있습니다.
( setq consult-omni-dynamic-input-throttle 0.8 )
( use-package consult-omni
:straight (consult-omni :type git :host github :repo " armindarvish/consult-omni " :branch " main " :files ( :defaults " sources/*.el " ))
:after consult
:custom
; ; General settings that apply to all sources
(consult-omni-show-preview t ) ; ;; show previews
(consult-omni-preview-key " C-o " ) ; ;; set the preview key to C-o
:config
; ; Load Sources Core code
( require 'consult-omni-sources )
; ; Load Embark Actions
( require 'consult-omni-embark )
; ; Only load wikipedia source
( setq consult-omni-sources-modules-to-load ( list 'consult-omni-wikipedia ))
(consult-omni-sources-load-modules)
; ;; Set your shorthand favorite interactive command
( setq consult-omni-default-interactive-command # 'consult-omni-wikipedia ))
( use-package consult-omni
:straight (consult-omni :type git :host github :repo " armindarvish/consult-omni " :branch " main " :files ( :defaults " sources/*.el " ))
:after consult
:custom
; ; General settings that apply to all sources
(consult-omni-show-preview t ) ; ;; show previews
(consult-omni-preview-key " C-o " ) ; ;; set the preview key to C-o
:config
; ; Load Sources Core code
( require 'consult-omni-sources )
; ; Load Embark Actions
( require 'consult-omni-embark )
; ; Either load all source modules or a selected list
; ;; Select a list of modules you want to aload, otherwise all sources all laoded
; (setq consult-omni-sources-modules-to-load (list 'consult-omni-wkipedia 'consult-omni-notes))
(consult-omni-sources-load-modules)
; ;; set multiple sources for consult-omni-multi command. Change these lists as needed for different interactive commands. Keep in mind that each source has to be a key in `consult-omni-sources-alist' .
( setq consult-omni-multi-sources '( " calc "
; ; "File"
; ; "Buffer"
; ; "Bookmark"
" Apps "
; ; "gptel"
" Brave "
" Dictionary "
; ; "Google"
" Wikipedia "
" elfeed "
; ; "mu4e"
; ; "buffers text search"
" Notes Search "
" Org Agenda "
" GitHub "
; ; "YouTube"
" Invidious " ))
; ; Per source customization
; ;; Set API KEYs. It is recommended to use a function that returns the string for better security.
( setq consult-omni-google-customsearch-key " YOUR-GOOGLE-API-KEY-OR-FUNCTION " )
( setq consult-omni-google-customsearch-cx " YOUR-GOOGLE-CX-NUMBER-OR-FUNCTION " )
( setq consult-omni-brave-api-key " YOUR-BRAVE-API-KEY-OR-FUNCTION " )
( setq consult-omni-stackexchange-api-key " YOUR-STACKEXCHANGE-API-KEY-OR-FUNCTION " )
( setq consult-omni-pubmed-api-key " YOUR-PUBMED-API-KEY-OR-FUNCTION " )
( setq consult-omni-openai-api-key " YOUR-OPENAI-API-KEY-OR-FUNCTION " )
; ;; Pick you favorite autosuggest command.
( setq consult-omni-default-autosuggest-command # 'consult-omni-dynamic-brave-autosuggest ) ; ;or any other autosuggest source you define
; ;; Set your shorthand favorite interactive command
( setq consult-omni-default-interactive-command # 'consult-omni-multi ))
( use-package consult-omni
:straight (consult-omni :type git :host github :repo " armindarvish/consult-omni " :branch " main " :files ( :defaults " sources/*.el " ))
:after consult
:custom
; ;; General settings that apply to all sources
(consult-omni-show-preview t ) ; ;; show previews
(consult-omni-preview-key " C-o " ) ; ;; set the preview key to C-o
(consult-omni-highlight-matches-in-minibuffer t ) ; ;; highlight matches in minibuffer
(consult-omni-highlight-matches-in-file t ) ; ;; highlight matches in files
(consult-omni-default-count 5 ) ; ;; set default count
(consult-omni-default-page 0 ) ; ;; set the default page (default is 0 for the first page)
; ; optionally change the consult-omni debounce, throttle and delay.
; ; Adjust these (e.g. increase to avoid hiting a source (e.g. an API) too frequently)
(consult-omni-dynamic-input-debounce 0.8 )
(consult-omni-dynamic-input-throttle 1.6 )
(consult-omni-dynamic-refresh-delay 0.8 )
; ; Optionally set backend for http request (either 'url, 'request, or 'plz)
(consult-omni-http-retrieve-backend 'plz )
:config
; ;; Load Sources Core code
( require 'consult-omni-sources )
; ;; Load Embark Actions
( require 'consult-omni-embark )
; ;; Either load all source modules or a selected list
; ; Select a list of modules you want to aload, otherwise all sources all laoded
; (setq consult-omni-sources-modules-to-load (list 'consult-omni-wkipedia 'consult-omni-notes))
(consult-omni-sources-load-modules)
; ; set multiple sources for consult-omni-multi command. Change these lists as needed for different interactive commands. Keep in mind that each source has to be a key in `consult-omni-sources-alist' .
( setq consult-omni-multi-sources '( " calc "
; ; "File"
; ; "Buffer"
; ; "Bookmark"
" Apps "
; ; "gptel"
" Brave "
" Dictionary "
; ; "Google"
" Wikipedia "
" elfeed "
; ; "mu4e"
; ; "buffers text search"
" Notes Search "
" Org Agenda "
" GitHub "
; ; "YouTube"
" Invidious " ))
; ;; Per source customization
; ; Set API KEYs. It is recommended to use a function that returns the string for better security.
( setq consult-omni-google-customsearch-key " YOUR-GOOGLE-API-KEY-OR-FUNCTION " )
( setq consult-omni-google-customsearch-cx " YOUR-GOOGLE-CX-NUMBER-OR-FUNCTION " )
( setq consult-omni-brave-api-key " YOUR-BRAVE-API-KEY-OR-FUNCTION " )
( setq consult-omni-stackexchange-api-key " YOUR-STACKEXCHANGE-API-KEY-OR-FUNCTION " )
( setq consult-omni-pubmed-api-key " YOUR-PUBMED-API-KEY-OR-FUNCTION " )
( setq consult-omni-openai-api-key " YOUR-OPENAI-API-KEY-OR-FUNCTION " )
; ; add more keys as needed here.
; ; gptel settings
( setq consult-omni-gptel-cand-title # 'consult-omni--gptel-make-title-short-answer )
; ; default terminal
( setq consult-omni-embark-default-term # 'vterm )
; ; default video player
( setq consult-omni-embark-video-default-player # 'mpv-play-url )
; ; pretty prompt for launcher
( setq consult-omni-open-with-prompt " " )
; ;; Pick you favorite autosuggest command.
( setq consult-omni-default-autosuggest-command # 'consult-omni-dynamic-brave-autosuggest ) ; ;or any other autosuggest source you define
; ;; Set your shorthand favorite interactive command
( setq consult-omni-default-interactive-command # 'consult-omni-multi )
; ;; Optionally Set back-end for notes search to ripgrep-all (requires ripgrep-all)
; ; (setq consult-omni-notes-backend-command "rga")
; ;; Optionally add more interactive commands
; ; consult-omni-web
( defvar consult-omni-web-sources ( list " gptel "
" Brave "
" elfeed "
" mu4e "
" Wikipedia "
" GitHub "
" Invidious "
))
( defun consult-omni-web ( &optional initial prompt sources no-callback &rest args )
" Interactive web search”
This is similar to `consult-omni-multi' , but runs the search on
web sources defined in `consult-omni-web-sources' .
See `consult-omni-multi' for more details.
"
( interactive " P " )
( let ((prompt ( or prompt ( concat " [ " ( propertize " consult-omni-web " 'face 'consult-omni-prompt-face ) " ] " " Search: " )))
(sources ( or sources consult-omni-web-sources)))
(consult-omni-multi initial prompt sources no-callback args)))
; ; consult-omni-local
( defvar consult-omni-local-sources ( list " ripgrep "
" mdfind "
" Notes Search "
" Apps "
" Org Agenda " ))
( defun consult-omni-local ( &optional initial prompt sources no-callback &rest args )
" Interactive local search”
This is similar to `consult-omni-multi' , but runs the search on
local sources defined in `consult-omni-local-sources' .
See `consult-omni-multi' for more details.
"
( interactive " P " )
( let ((prompt ( or prompt ( concat " [ " ( propertize " consult-omni-local " 'face 'consult-omni-prompt-face ) " ] " " Search: " )))
(sources ( or sources consult-omni-local-sources)))
(consult-omni-multi initial prompt sources no-callback args)))
; ; consult-omni-scholar
( setq consult-omni-scholar-sources ( list " PubMed " " Scopus " " Notes Search " " gptel " ))
( defun consult-omni-scholar ( &optional initial prompt sources no-callback &rest args )
" Interactive “multi-source acadmic literature” search
This is similar to `consult-omni-multi' , but runs the search on
academic literature sources defined in `consult-omni-scholar-sources' .
See `consult-omni-multi' for more details.
"
( interactive " P " )
( let ((prompt ( or prompt ( concat " [ " ( propertize " consult-omni-multi " 'face 'consult-omni-prompt-face ) " ] " " Search: " )))
(sources ( or sources consult-omni-scholar-sources)))
(consult-omni-multi initial prompt sources no-callback args)))
; ; AutoSuggest at point
( defun consult-omni-autosuggest-at-point ()
( interactive )
( let ((input ( or ( thing-at-point 'url ) ( thing-at-point 'filename ) ( thing-at-point 'symbol ) ( thing-at-point 'sexp ) ( thing-at-point 'word ))))
( when ( and ( minibuffer-window-active-p ( selected-window ))
( equal ( substring input 0 1 ) (consult--async-split-initial nil )))
( setq input ( substring input 1 )))
(consult-omni-brave-autosuggest input))))
내가 아는 바로는 다른 어떤 Emacs 패키지도 Consult-omni의 기능과 다양성을 제공하지 않습니다. 웹 검색을 위한 여러 패키지가 있지만(consult-web 패키지 아래의 토론 참조) 제가 아는 옴니 검색 패키지는 없습니다.
Emacs 외부에는 물론 MacOS Spotlight 및 Alfred와 같이 옴니 검색 유틸리티를 제공하는 유료 서비스가 있지만 consult-omni
에 비해 다양성과 사용자 정의 가능성이 부족합니다.
버그를 신고하려면 먼저 *이슈 트래커*에 이미 보고되었는지 확인하고 기존 솔루션이 있는지 확인하거나 동일한 이슈에 관련 의견 및 토론을 추가하세요. 다음 단계에 따라 새로운 문제를 제기하지 않는 경우:
consult
및 url-retrieve
(또는 기타 관련 명령)가 모두 예상대로 작동하는지 확인하세요.emacs -Q
)에서 구성이나 다른 패키지 없이 최신 버전의 Consult-omni(및 해당 종속성)를 설치하고 문제가 여전히 지속되는지 확인하십시오.Mx toggle-debug-on-error
통해) 보고서에 역추적 내용을 포함합니다.consult-omni-url-retrieve-sync
)를 사용하는 경우 consult-omni-log-level
'debug
로 변경하고 로그 버퍼("라는 숨겨진 버퍼)를 검사할 수 있습니다. **consult-omni-log**” 또는 consult-omni-log-buffer-name
에 설정된 다른 이름). 문제에 이 정보를 포함하기로 선택한 경우 개인 정보와 비밀(예: API 키)이 노출되지 않도록 하세요.이것은 오픈 소스 패키지이며 피드백, 제안, 아이디어 등에 감사드립니다. 다양한 사용자의 작업 흐름을 개선하기 위해 이 패키지에 추가할 수 있는 많은 기능이나 소스가 있으므로 아이디어가 있으면 언제든지 제출해 주시기 바랍니다. 기능 요청에 대한 문제입니다.
현재 소스/기능을 개선/유지하는 것은 물론 새로운 소스나 기능을 작업하는 데에도 다른 기여자의 도움을 받고 싶습니다. 관심이 있고 코드에 기여하고 싶다면 메인 브랜치가 현재 안정적이고(이와 같이 진행 중인 작업만큼 안정적임) 개발 브랜치가 현재 진행 중인 작업이라는 점을 참고하세요. 따라서 개발 브랜치에서 시작하여 진행 중인 최신 업데이트를 받고 기능/기능 이름 또는 수정/문제와 같은 이름으로 새 브랜치를 만듭니다. 편집을 수행한 다음 새 풀을 만듭니다. 편집이 완료되면 개발 브랜치와 다시 병합하도록 요청하세요.
중요한 것은 모든 것이 단일 정보 소스 Consult-omni.org 에 들어간 다음 적절한 파일(예: Consult-omni.el)에 얽히게 되는 박식한 프로그래밍 접근 방식을 사용하고 있다는 점을 명심하십시오. .el 파일을 직접 편집한 풀 요청을 열면 나중에 .org 파일에서 얽힐 때 덮어쓰게 되므로 승인하지 않을 가능성이 높습니다. 즉, .el 파일을 편집하지 마십시오! .org 파일만 편집하고 .el 파일에 연결하세요. 다른 시나리오에서는 전문적인 프로그래밍이 그다지 의미가 없을 수 있지만 이 경우에는 다른 예제에서 복사하여 새로운 소스/기능을 추가하는 데 실제로 도움이 됩니다(모든 것이 하나의 조직 파일에 있으므로). 나는 글을 읽을 줄 아는 프로그래밍을 사용하라고 주장합니다.
분명히 이 패키지는 멋진 상담 및 착수 패키지가 없었다면 불가능했을 것입니다. 또한 이전의 Counsel-web과 엔진 모드, emacs-google-this, helm을 포함하되 이에 국한되지 않는 다른 패키지에서도 영감을 얻었습니다.
또한 멋진 제안, 토론, 기여 등에 대해 @karthink 및 @minad에게 감사의 말씀을 전하고 싶습니다. 이 패키지는 프로토타이핑 및 아이디어화(consult-web-mini 참조)에 대한 @karthink의 도움과 @minad의 소중한 도움이 없었다면 불가능했을 것입니다. 의견과 제안.