EmacsWiki: wuxch-dict.el
Скачать
;;; синтаксический анализатор результатов словаря Babylon и вставка в мой личный словарь. (defun do-vocabulary-insert-word (новое-слово) "сделать-словарь-вставить-слово:" (сделать-словарь-вставить-все новое-слово "" "" "" "") ) (defun do-vocabulary-insert-all (new-word new-phonetic new-term new-english new-chinese) "сделать-словарь-вставить-все:" (пусть ((имя-словаря-файла "~/vocabulary/vocabulary.bib") (комментарий-str "@comment{")) (найти-файл-словарь-имя-файла) (goto-char (точка-мин)) (if (поиск вперед (concat "VOCABULARY {" новое слово ",") nil t) (программа (сообщение "%s уже есть в словаре" новое слово)) (программа (goto-char (точка-мин)) (когда (поиск вперед комментарий-str nil t) (предыдущая строка) (начало строки) (вставить (concat "\n@VOCABULARY{" новое слово ",\n")) (вставить (concat " ключ = {" новое слово "},\n")) (вставить (concat " слово = {" новое слово "},\n")) (вставить (concat " фонетический = {\\char\"005B" новый-фонетический "\\char\"005D},\n")) (вставить (concat " term = {" новый термин "},\n")) (вставить (concat " english = {" new-english "},\n")) (вставить (concat " китайский = {" новый китайский "},\n")) (вставить (concat " owner = {吴晓春},\n")) (insert (concat " timestamp = {" (format-time-string "%Y.\\(n\\|adj\\|adv\\|v\\|prep\\|vi\\|vt\\|conj\\)\\.[ ] ") (термин setq (строка соответствия 1)) ;; (сообщение "term is :%s" term) (setq english (buffer-substring (point) (line-end-position))) ;; (сообщение "english is :%s" на английском языке) ) (если (и словесный фонетический термин английский китайский) (программа (сообщение "парсить из вавилонского перевода ОК!" ) (список слов фонетический термин английский китайский) ) (программа (сообщение "анализ ошибки перевода вавилон!") ноль ) ) ) ) (global-set-key [(control c)(b)] 'babylon-translation-to-my-dict-and-cite) (defun babylon-translation-utility-add-cite (text-word dict-word) "вавилон-функция-перевода:" (insert (concat "\\cite{" dict-word "}")) (заполнить пункт t) (буфер сохранения) (сообщение "цитировать \"%s\" с \"%s\" OK!" text-word dict-word) ) (defun babylon-utility-word-suggestion (слово) "вавилон-утилита-слово-предложение:" (пусть ((предложение) (лен (длинное слово)) (количество последних игнорируемых букв 1) ) (setq предлагает (concat (подстрока слова 0 (- len номер последней буквы, которую следует игнорировать)) "[a-z]*" )) ) ) (defun babylon-translation-to-my-dict-and-cite () "вавилон-перевод-на-диктовать-и-цитировать:" (интерактивный) (let* ((dict-word) (текстовое слово) (совпадающее текстовое слово) (исходный-буфер (текущий-буфер))) (setq dict-word (babylon-translation-to-my-dict)) (когда дикт-слово (setq text-word dict-word) (переключиться на буфер исходного баффа) (if (повторный поиск (concat "\\b" dict-word "\\b") nil t) (программа (babylon-translation-utility-add-cite text-word dict-word) ) (программа (setq текстовое слово (чтение-регулярное выражение (concat" не может найти ["слово-слово"], повторный поиск?" "по умолчанию:[" (слово-слово-предложение-слова-вавилона-утилиты) "]") (вавилон-утилита-слово-предложение дикт-слово))) (if (повторный поиск (concat "\\b" text-word "\\b") nil t) (программа (setq совпадающее текстовое слово (строка совпадения 0)) (babylon-translation-utility-add-cite matched-text-word dict-word) ) (программа ;; попробуй еще раз сверху (goto-char (точка-мин)) (if (повторный поиск (concat "\\b" text-word "\\b") nil t) (программа (setq совпадающее текстовое слово (строка совпадения 0)) (babylon-translation-utility-add-cite matched-text-word dict-word) ) (программа (сообщение "Поиск снова не удался, прервите!") ) ) ) ) ) ) ) ) ) (defun babylon-translation-to-my-dict() "parse-babylon-dict:" (интерактивный) (пусть ((buf "*babylon-temp-buffer*") (результат синтаксического анализа ноль) (слово)) ;; сначала очистить буфер (если (получить буфер буфера) (буфер убийства) (программа (переключиться на буфер (получить буфер, создать буфер)) (буфер обмена-дергать))) (setq parse-result (babylon-translation-parse buf)) (если результат синтаксического анализа (программа (setq слово (n-й 0 результат синтаксического анализа)) (сделать-словарь-вставить-все слова (n-й 1 результат синтаксического анализа) (n-й 2 результат синтаксического анализа) (n-й 3-й результат синтаксического анализа) (n-й 4-й результат синтаксического анализа)) (убить-новое слово) (буфер убийства) (сообщение "поместите [%s] в словарь ОК и оставьте слово в буфере обмена") слово ) (программа (сообщение "анализ ошибки перевода вавилон!") ноль ) ) ) ) (defvar babylon-phonetic-adjust-list ноль) (setq вавилон-фонетическая настройка-список '( («ɪ».