2014-05-19 13 views
8

Tôi là người dùng mới vào Emacs và đã nhận được tệp .emacs từ một người nào đó trong lĩnh vực của tôi đã giới thiệu tôi với nền tảng lập trình này. Tuy nhiên, tôi đã có một số vấn đề trong khi cố gắng lưu hoặc tạo tệp mới được đặt tên tương tự với những tệp đã tồn tại. Nếu tôi cố gắng tạo một tệp mới có tên tương đối giống với tệp tồn tại, ngay cả khi nó nằm trong một thư mục khác, tệp hiện có sẽ được mở. Khi cố gắng lưu một tệp có tên ngắn hơn hoặc tương tự thành tệp đã tồn tại, Emacs cố ghi đè tệp thay vì tạo tệp mới.Cách dừng tự động hoàn tất việc ghi đè tệp có tên tương tự

Ví dụ: Tôi đang cố lưu tệp growth_loglike.tpl nhưng tôi đã có tệp growth_loglike_ADMB2_End.tpl trong thư mục. Khi tôi đi để lưu và viết trong growth_loglike.tpl, nó hiển thị [growth_loglike_ADMB2_End.tpl] màu xanh lục ở bên phải. Khi tôi nhấn enter, nó sẽ hỏi tôi có muốn ghi đè lên growth_loglike_ADMB2_End.tpl hay không. Tôi nghĩ rằng đây là sự cố với plugin auto-complete. Có cách nào để tạm thời tắt auto-complete không? Nhìn vào các tập tin auto-complete.el đoán của tôi là tôi cần phải thay đổi biến này nhưng tôi không chắc chắn những gì (hoặc nếu đó là ngay cả chính xác). Bất kỳ trợ giúp nào với điều này sẽ cực kỳ hữu ích.

(defcustom ac-use-overriding-local-map nil 
"Non-nil means `overriding-local-map' will be used to hack for overriding key events on auto-copletion." 
    :type 'boolean 
    :group 'auto-complete) 

Dưới đây là tệp .emacs mà tôi đang sử dụng.

;; This emacs configuration file will activate common packages 

and 
;; functionality used in the QFC Reproducable Reseach Workshop. 
;; change this path to point to emacs directory in workshop on your computer: 
;; (don't forget to include a trailing slash!) 
(defvar workshop-root "C:/Users/vince151/Documents/workshop/") 

(defvar emacs-root (concat (file-name-as-directory workshop-root) "emacs/")) 

;;============================================================================= 
;;============================================================================= 
;; 1. Misc Plug-ins 
;; here are some paths to look for additional scripts and functions: 
(add-to-list 'load-path (concat emacs-root "plugins/")) 


;;============================================================================= 
;; 2. YASnippet 
(add-to-list 'load-path (concat emacs-root "plugins/yasnippet")) 
(require 'yasnippet) ;; not yasnippet-bundle 
(setq yas-snippet-dirs (concat emacs-root "plugins/yasnippet/snippets")) 
(yas-global-mode 1) 

;; timestamp used in some yasnippets 
(defun now() 
    "Insert string for the current time formatted like '2:34 PM'." 
    (interactive)     ; permit invocation in minibuffer 
    (insert (format-time-string "%D %-I:%M %p"))) 

;;============================================================================= 
;; 3. Swap Slashes 
;; swap slashes and backslashes in current line -- useful for converting paths to be Windows-readable 
;;http://www.xsteve.at/prg/emacs/.emacs.txt 
(defun xsteve-exchange-slash-and-backslash() 
    "Exchanges/with \ and in the current line or in the region when a region-mark is active." 
    (interactive) 
    (save-match-data 
    (save-excursion 
     (let ((replace-count 0) 
      (eol-pos (if mark-active (region-end) (progn (end-of-line) (point)))) 
      (bol-pos (if mark-active (region-beginning) (progn (beginning-of-line) (point))))) 
     (goto-char bol-pos) 
     (while (re-search-forward "/\\|\\\\" eol-pos t) 
      (setq replace-count (+ replace-count 1)) 
      (cond ((string-equal (match-string 0) "/") (replace-match "\\\\" nil nil)) 
       ((string-equal (match-string 0) "\\") (replace-match "/" nil nil))) 
      (message (format "%d changes made." replace-count))))))) 

(global-set-key (kbd "M-\\") 'xsteve-exchange-slash-and-backslash) 


;;============================================================================== 
;; 4. Parenthesis highlighting 

(require 'highlight-parentheses) 
(setq hl-paren-colors '("DodgerBlue1" "IndianRed" "cyan" "ForestGreen" "magenta" "SlateGrey")) 
(defun hpm-on() 
(highlight-parentheses-mode t)) 
(add-hook 'admb-mode-hook 'hpm-on) 
(add-hook 'ess-mode-hook 'hpm-on) 
(add-hook 'inferior-ess-mode-hook 'hpm-on) 
(add-hook 'latex-mode-hook 'hpm-on) 
(add-hook 'LaTeX-mode-hook 'hpm-on) 

;;============================================================================= 
;; 5. ESS 
;; path to current version of R: (This shouldn't be needed if PATH is correct) 
;;(setq-default 
;; inferior-R-program-name 
;; "C:/R/R-2.15.0/bin/i386/Rterm.exe") 

(load (concat emacs-root "ESS/ess-13.09/lisp/ess-site")) 
(setq ess-fancy-comments nil) 
;; make pdflatex the default sweave compiler (removes texi2pdf) 
(setq ess-swv-pdflatex-commands '("pdflatex" "xelatex" "make")) 


;;============================================================================= 
;; 6. ADMB-ide 
;; don't forget to edit setADMBpaths.bat to point to your admb installation 
(setq admb-init (concat emacs-root "setADMBpaths & ")) 
;; these commands were cut from admb.el 
(load (concat emacs-root "plugins/admb")) 
;; Edit .emacs so that `admb-mode' is autoloaded and assigned to *.tpl files: 
(autoload 'admb-mode "admb" "Edit ADMB code." t) 
(add-to-list 'auto-mode-alist '("\\.tpl$" . admb-mode)) 
;; If you're running Emacs in MS Windows, add a line so *.tpl files are not treated as binary: 
(setq file-name-buffer-file-type-alist nil) 
;; You may want to assign a mode that recognizes #comments in *.dat files (perl-mode, conf-space-mode, or R-mode): 
(add-to-list 'auto-mode-alist '("\\.dat$" . perl-mode)) 
;;(add-to-list 'auto-mode-alist '("\\.dat$" . admb-mode)) 
;;(add-to-list 'auto-mode-alist '("\\.dat$" . easy-admb-hook)) 

;;added Monday, March 29, 2010 so that we can run models from within dat files 
(add-hook 'perl-mode-hook 
    (lambda() 
    (define-key perl-mode-map [f9] 'admb-run))) 

;;these commands were taken from Arni Magnusen's emacs file distributed with ADMB-IDE 
(defun easy-admb-hook() 
    (local-set-key [f1] 'admb-help    ) ; prefix 
    (local-set-key [f2] 'admb-mode    ) ; prefix 
    ;;(global-set-key [f3] 'conf-space-mode   ) ; kmacro-start-macro-or-insert-counter 
    (local-set-key [f4] 'admb-toggle-window  ) ; kmacro-end-or-call-macro 
    (local-set-key [f7] 'admb-tpl2cpp  ) 
    (local-set-key [f8] 'admb-build   ) 
    (local-set-key [f9] 'admb-run   ) 
    (local-set-key [S-f9] 'admb-run-args  ) 
    (local-set-key [f10] 'admb-rep   ) ; menu-bar-open 
    (local-set-key [S-f10] 'admb-cor   ) 
    (local-set-key [?\C-.] 'admb-toggle-section)) 
(add-hook 'admb-mode-hook 'easy-admb-hook) 
;;---------- 
;; C++ 
;;---------- 
(defun easy-gdb-hook() 
    (message nil) 
    (setq indent-line-function 'gud-gdb-complete-command) 
    ;;(setq gdb-show-main t) 
    (local-set-key [f5]   'gdb-restore-windows) 
    (local-set-key [M-up]  'gdb-io-buffer-off ) 
    (local-set-key [M-down]  'gdb-io-buffer-on ) 
    (local-set-key [?\C-c ?\C-q] 'comint-quit-subjob) 
    (defun gdb-io-buffer-off() "Enable separate IO buffer." (interactive)(gdb-use-separate-io-buffer nil)) 
    (defun gdb-io-buffer-on() "Disable separate IO buffer." (interactive)(gdb-use-separate-io-buffer t))) 
(add-hook 'gdb-mode-hook 'easy-gdb-hook) 

;;================= 
;; enable YASnippet 
(add-hook 'admb-mode-hook 'yas/minor-mode-on) 
(add-hook 'admb-mode-hook 
      (let ((original-command (lookup-key admb-mode-map [tab]))) 
      `(lambda() 
       (setq yas/fallback-behavior '(apply ,original-command)) 
       (local-set-key [tab] 'yas/expand)))) 

;;============================================================================== 
;; 7. Git 
;; path to git executable: (This shouldn't be needed if PATH is correct) 
;; (setq-default 
;; magit-git-executable 
;; "C:/gnu/git/bin/git.exe") 

;;(require 'git) 
(add-to-list 'load-path (concat emacs-root "plugins/git/magit")) 
(load (concat emacs-root "plugins/git/magit/magit.el")) 
(require 'magit) 
;; use Ctrl-C G to start Git: 
(global-set-key "\C-c\C-g" 'magit-status) 

;; from: http://readystate4.com/2011/02/22/emacs-changing-magits-default-diff-colors/ 
;; change magit diff colors 
(eval-after-load 'magit 
    '(progn 
    (set-face-foreground 'magit-diff-add "green3") 
    (set-face-foreground 'magit-diff-del "red3") 
    (when (not window-system) 
     (set-face-background 'magit-item-highlight "black")))) 

;;============================================================================== 
;; 8. autocomplete 
(require 'auto-complete) 
(add-to-list 'ac-dictionary-directories (concat emacs-root "plugins/ac-dict")) 
(require 'auto-complete-config) 
(ac-config-default) 

;;======================================== 
;; 9. Bibtex database: 
(setq reftex-default-bibliography 
     '("C:/Users/vince151/Documents/workshop/utils/references.bib")) 

(setq reftex-default-bibliography 
     (concat workshop-root "utils/references.bib")) 

(defvar reftex-file 
    (concat 
    (file-name-as-directory workshop-root) "utils/references.bib")) 
(setq reftex-default-bibliography reftex-file) 


;; Make TeX and RefTex aware of Snw and Rnw files 
(setq reftex-file-extensions 
     '(("snw" "rnw" "Snw" "Rnw" "nw" "tex" ".tex" ".ltx") ("bib" ".bib"))) 
(setq TeX-file-extensions 
     '("snw" "rnw" "Snw" "Rnw" "nw" "tex" "sty" "cls" "ltx" "texi" "texinfo")) 

(add-hook 'latex-mode-hook 'turn-on-reftex) 

;;======================================== 
;; 10. Some functions to run bibtex and latex 

(defun ac-run-bibtex() 
    "Run BibTex on the current file." 
    (interactive) 
    (save-excursion 
    (let* ((latex-filename (file-name-sans-extension (buffer-file-name))) 
      (tex-buf (get-buffer-create " *ESS-bibtex-output*"))) 
     (message "Running BibTex on '%s' ..." latex-filename) 
     (switch-to-buffer tex-buf) 
     (call-process "bibtex" nil tex-buf 1 latex-filename) 
     (switch-to-buffer (buffer-name)) 
     (display-buffer tex-buf) 
     (message "Finished running BibTeX")))) 

(defun ac-run-pdflatex() 
    "Run pdflatex on the current file." 
    (interactive) 
    (save-excursion 
     (let* ((namestem (file-name-sans-extension (buffer-file-name))) 
      (latex-filename (concat namestem ".tex")) 
      (tex-buf (get-buffer-create " *pdflatex-output*"))) 
     (message "Running pdflatex on '%s' ..." latex-filename) 
     (switch-to-buffer tex-buf) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (switch-to-buffer (buffer-name)) 
     (display-buffer tex-buf) 
     (message "Finished running pdflatex")))) 

;; terms associated with base name were added to create index files using makeindex 
;; this function impliments the following sequence of calls: 
;; pdflatex -> bibtex -> pdflatex -> makeindex -> pdflatex 
(defun ac-run-lbll() 
    "Run LaTeX-BibTex-Latex-Latex on the current file." 
    (interactive) 
    (save-excursion 
     (let* ((namestem (file-name-sans-extension (buffer-file-name))) 
      (latex-filename (concat namestem ".tex")) 
      (basename (file-name-nondirectory namestem)) 
      (tex-buf (get-buffer-create " *lbll-output*"))) 
     (message "Running LaTeX-BibTex-Latex-Latex on '%s' ..." latex-filename) 
     (switch-to-buffer tex-buf) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (call-process "bibtex" nil tex-buf 1 namestem) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (call-process "makeindex" nil tex-buf 1 basename) 
     (call-process "pdflatex" nil tex-buf 1 latex-filename) 
     (switch-to-buffer (buffer-name)) 
     (display-buffer tex-buf) 
     (message "Finished running LaTeX-BibTex-Latex-Latex")))) 


(add-hook 'latex-mode-hook 
(lambda() 
    (define-key latex-mode-map [f9] 'ac-run-pdflatex) 
) 
) 


;;======================================== 
;; 10. Other useful functions below this point 

;;ispell - super cool spell checker for emacs 
(setq-default ispell-program-name (concat emacs-root "aspell/bin/aspell.exe")) 
;; get itspell to skip sweave chunks: 
(add-to-list 'ispell-skip-region-alist '("^<<.*>>=" . "^@")) 

;;============================================================================= 
;; use string rectangle for indentng blocks/regions of code 
(global-set-key (kbd "C->") 'string-insert-rectangle) 

;;============================================================================= 
;;ido (from: http://www.emacswiki.org/emacs/InteractivelyDoThings) 
(require 'ido) 
(ido-mode t) 
(setq ido-enable-flex-matching t) ;; enable fuzzy matching 

;;============================================================================= 
;; use ibuffer anytime we would have use buffer-list 
(defalias 'list-buffers 'ibuffer) 

; get rid of prompt that forces you to type full "yes" or "no". 
; y or n is enough 
(defalias 'yes-or-no-p 'y-or-n-p) 

;;============================================================================== 
;; from http://www.joegrossberg.com/archives/000182.html 
;; enable recent file list - bound to C-x C-r 
(require 'recentf) 
(recentf-mode 1) 
(setq recentf-max-menu-items 25) 
(global-set-key "\C-x\ \C-r" 'recentf-open-files) 

;;============================================================================== 
;; from http://www.stokebloke.com/wordpress/2008/04/17/emacs-refresh-f5-key/ 
;; use f3 to refresh file in current buffer 
;;(defun refresh-file() 
;; (interactive) 
;; (revert-buffer t t t) 
;; ) 
;;(global-set-key [f3] 'refresh-file) 
;; 
;;============================================================================== 
;; copy path of current buffer to kill ring 
;; from:http://stackoverflow.com/questions/3669511/ 
(defun copy-full-path-to-kill-ring() 
    "copy buffer's full path to kill ring" 
    (interactive) 
    (when buffer-file-name 
    (kill-new (file-truename buffer-file-name)))) 
(global-set-key "\C-cz" 'copy-full-path-to-kill-ring) 

;;============================================================================== 
;; keep emacs from cluttering working directories with tilde files by 
;; placing them here:(concat emacs-root "tildes") instead of 
;; wherever we're working. 
(defvar user-temporary-file-directory 
    (concat emacs-root "tildes/")) 
(make-directory user-temporary-file-directory t) 
(setq backup-by-copying t) 
(setq backup-directory-alist 
     `(("." . ,user-temporary-file-directory) 
     (,tramp-file-name-regexp nil))) 
(setq auto-save-list-file-prefix 
     (concat user-temporary-file-directory ".auto-saves-")) 
(setq auto-save-file-name-transforms 
     `((".*" ,user-temporary-file-directory t))) 

;;;============================================================================ 


; try to improve slow performance on windows. 
;;Got this from a website that said this would help. 
(setq w32-get-true-file-attributes nil) 
+1

thể trùng lặp của [Không chọn gì emacs ido là gợi ý?] (Http://stackoverflow.com/questions/21007014/not-selecting-what-emacs-ido-is-suggesting) – Chris

+0

Cũng là một trùng lặp càng tốt của [Chế độ Ido quá thông minh, tôi có thể làm cho nó KHÔNG hoàn thành tên tệp không?] (http://stackoverflow.com/questions/812524/ido-mode-is-too-smart-can-i-get-it- to-not-complete-a-filename). – legoscia

Trả lời

14

Đây là hành vi mặc định của chế độ ido. Có hai điều bạn có thể làm gì về nó:

  • Khi bạn đã gõ tên tập tin mà bạn muốn, nhấn C-j thay vì RET. Điều này làm cho chế độ ido sử dụng tên tập tin chính xác như bạn đã gõ nó.
  • Bạn có thể tạm thời chuyển về hành vi minibuffer "bình thường" bằng cách nhấn C-f. Sau đó, bạn có thể tab-hoàn thành tên tập tin cũ, và chỉnh sửa nó khi cần thiết.
+1

Một tùy chọn khác mà tôi thấy thuận tiện là '(setq ido-auto-merge-delay-time 1)' (hoặc 2, hoặc 0.5, tùy thuộc vào tốc độ bạn viết và tốc độ bạn muốn tự động hoàn thành) – juanleon

+1

Chỉ muốn nói lời cảm ơn ! Bằng cách nào đó tôi đã không biết cho C-j này trong một năm và luôn luôn chạm vào các tập tin trong giao diện điều khiển và googled không có gì. – ipoteka

Các vấn đề liên quan