Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

emacs external veiwer in my way

Posted on 2006-07-18
10
327 Views
Last Modified: 2013-12-16
Hi

I have a problem opening a .cpp file with emacs
using debian testing and emacs21 21.4a-3
it does not open it. I need emcs to open it with its c++ mode and the
extra info I provide in .emacs

ctl-xf which does find/create a file then I type test.cpp then I get
this in the echo area
****************************************************************
File is opened with an external viewer. See buffer *extview log* for
status messages.
****************************************************************

in *extview log* I have
****************************************************************
Opening file ~/test.cpp with handler: more '%s'
/home/fred/test.cpp: No such file or directory

Process extview-process finished
****************************************************************

thanks

here is my .emacs
****************************************************************
(load "~/.emacs-mc394")

;; makes relavent files executable
(add-hook 'after-save-hook
        #'executable-make-buffer-file-executable-if-script-p)

;; hitting shift-f8 will save the current buffer with permission 700
(defun chmod-save ()
  "Save and chmod 700 current buffer"
  (interactive)
  (save-buffer)
  (setq command (concat "chmod 700 " (buffer-file-name)))
  (message "%s " command)
  (shell-command command)
  )
(global-set-key [(shift f8)] 'chmod-save)

;; opens a a file 'pdf' with xpdf and so on...
(require 'extview)
(push '("\\.pdf$" . "xpdf %s") extview-application-associations)
(push '("\\.py$" . nil) extview-application-associations)

(add-hook 'octave-mode-hook
          '(lambda ()
             (local-set-key [f9] 'octave-send-line)))

(add-hook 'c++-mode-hook
          '(lambda ()
             (turn-on-auto-fill) ;;Insert a newline if line gets to long.
             (c-toggle-auto-state 1) ;;Make ; and { and } and : all electric
             (c-set-style "mc394-style")))

(add-hook 'comint-output-filter-functions ;R bottom the prompt
        'comint-show-maximum-output nil t)

(global-font-lock-mode 1)


;; ;; Color highlighting stuff
;; (defvar xemacs-p
;;   (string-match "XEmacs" emacs-version))
;; (if (not xemacs-p)
;;     (progn
;;       (global-font-lock-mode t)
;; ; If using global-font-lock-mode, make control-L update colors
;;       (global-set-key "\C-l"
;;                       (function (lambda (arg) (interactive "P")
;;                                   (font-lock-fontify-block 100)
;;                                   (recenter arg))))))

;; this is needed for semantic and ECB to work correctly
(setq auto-mode-alist
  (append '(
    ("configure.in" . m4-mode)
    ("\\.m4\\'" . m4-mode)
    ("\\.am\\'" . makefile-mode)
    ("\\.cpp\\'" . c++-mode)
    ("\\.h$" . c++-mode)
    ("\\.py\\'" . python-mode))
   auto-mode-alist))


(defun other-window-backward (&optional n)
    "Select Nth previous window"
    (interactive "P")
    (other-window (- (prefix-numeric-value n))))
(global-set-key "\C-x\C-p" 'other-window-backward)

(windmove-default-keybindings)


(global-set-key [f6] 'setnu-mode)      ;set-number use twice after C-y
(global-set-key "\C-x\C-b" 'buffer-menu) ;binds the key C-x C-b to buffer-menu
(global-set-key [f7] (kbd "M-h M-;")) ;comment region
(global-set-key [f11] 'compile)         ;compiles a program
(global-set-key [f12] 'clipboard-kill-ring-save);copy marked region to Primary Selection, M-w copies to Clipboard, middle mouse botton to paste Primary, M-y pastes the clipboard contents

(global-set-key [f10]      'cut-ctrlM)   ; cut all ^M.
(defun cut-ctrlM ()  
  "Cut all visible ^M."
  (interactive)
  (beginning-of-buffer)
  (while (search-forward "\r" nil t)
    (replace-match "" nil t))
  )

(global-set-key "\C-cw" "\M-b\C-@\M-f\M-w") ;copy word under point
(global-set-key "\C-cl" "\C-a\C-@\C-e\M-w") ;copy line under point
(global-set-key "\C-cs" "\M-a\C-@\M-e\M-w") ;copy sentence under point
(global-set-key "\C-cp" "\M-h\C-f\M-w")      ;copy paragraph under point

(setq ecb-auto-activate t)
(setq user-full-name "Gary Wessle")
(setq user-mail-address "phddas@yahoo.com")
(setq fill-column 70)                  ;Text lines limited to 70 chars
(setq make-backup-files nil)           ;don't make backup files
(setq kill-whole-line t)               ;killing line also deletes \n
(setq next-line-add-newlines nil)      ;down arror won't add \n at end
(setq line-number-mode t)              ;put line number in display
(setq column-number-mode t)            ;put column number in display
(setq inhibit-startup-message t)       ;disable startup message
(setq display-time-24hr-format t)      ;display 24h time formate
(setq transient-mark-mode t)           ;highlight marked
(setq default-major-mode 'text-mode)   ;new buffers are text mode
(add-hook 'text-mode-hook 'turn-on-auto-fill) ;line limit in text mode
(add-hook 'text-mode-hook 'flyspell-mode t) ; check spelling
(add-hook 'text-mode-hook 'text-mode-hook-identify)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on);ls not show ^[[0m
(display-time)                        ;time on line-mode
(tool-bar-mode 0)                  ; turn-off tool-bar
(menu-bar-mode 0)                  ; turn-off tool-bar
(scroll-bar-mode -1)                    ; turn-off scroll bar
(setq-default visible-bell t)          ; no beeps, flash on errors


;; don't show password
(add-hook 'comint-output-filter-functions
'comint-watch-for-password-prompt)

;; makes a vertical split along the horisontal line
(defun htv-horizontal-to-vertical ()
  (interactive)
  (let ((one-buf (window-buffer (selected-window)))
        (buf-point (point)))
    (other-window 1)
    (delete-other-windows)
    (split-window-horizontally)
    (switch-to-buffer one-buf)
    (goto-char buf-point)))

;; makes a vertical split along the horisontal line
(defun vth-vertical-to-horizontal ()
  (interactive)
  (let ((one-buf (window-buffer (selected-window)))
        (buf-point (point)))
    (other-window 1)
    (delete-other-windows)
    (split-window-vertically)
    (switch-to-buffer one-buf)
    (goto-char buf-point)))

;; remove comments lines from region
(defun nea-kill-all-comments-in-region (begin end)
       "Kill all comments in region."
       (interactive "r")
       (save-excursion
       (goto-char begin)
       (kill-comment (count-lines begin end))))

;; remove comments lines from buffer
(defun nea-kill-all-comments-in-buffer ()
       "Kill all comments in buffer."
       (interactive)
       (save-excursion
       (beginning-of-buffer)
       (kill-comment
      (count-lines (point-min) (point-max)))))    

(add-hook 'c++-mode-hook 'setnu-mode)   ;line numbers
(add-hook 'c++-mode-hook 'bar-cursor-mode) ;cursor to a bar
(add-hook 'c++-mode-hook 'show-paren-mode) ;marrying brackets show

(require 'xcscope) ;"$man cscope" for more info
(custom-set-variables
  ;; custom-set-variables was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 '(ecb-methods-nodes-expand-spec (quote all))
 '(ecb-options-version "2.27"))


(custom-set-faces
  ;; custom-set-faces was added by Custom -- don't edit or cut/paste it!
  ;; Your init file should contain only one such instance.
 '(default ((t (:stipple nil :background "black" :foreground "white" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 123 :width normal :family "adobe-courier"))))
 '(comint-highlight-input ((t (:background "black" :weight bold))))
 '(cursor ((t (:background "yellow"))))
 '(mouse ((t (:background "yellow")))))

(put 'erase-buffer 'disabled nil)

****************************************************************

and my .emacs-mc394
****************************************************************
;; Modified by Mike Hvidsten from MC38J emacs file
;;  Feb. 4, 2004

(c-add-style "mc394-style"
             '("cc-mode"
               (c-basic-offset . 3)      ; In general, indent 3 spaces
               (c-hanging-braces-alist
                (defun-open after))      ; brace that opens a function definition
               (c-cleanup-list brace-else-brace
                               brace-elseif-brace
                               empty-defun-braces
                               defun-close-semi
                               scope-operator)
               (c-hanging-braces-alist
                ; These determine whether a newline appears before
                ; and/or after a brace in various situations.
                (brace-list-open)
                (block-open after)       ; statement block open brace
                (defun-open after)       ; brace that opens a function definition
                (substatement-open after); the brace that opens a substatement block
                (block-close . c-snug-do-while))
               (c-hanging-colons-alist
                (access-label after)) ; Newline after protected: or private:
               (c-hungry-delete-key t))) ; delete black space all at once

;; Variable should be t if we are running xemacs.
(defvar xemacs-p
  (string-match "XEmacs" emacs-version))

(if (not xemacs-p)
    (progn
      (global-font-lock-mode t)
       ; If using global-font-lock-mode, make control-L update colors
      (global-set-key "\C-l"
                      (function (lambda (arg) (interactive "P")
                                  (font-lock-fontify-block 100)
                                  (recenter arg))))))
(setq auto-mode-alist (append '(("\\.h$" . c++-mode)) auto-mode-alist))
****************************************************************
0
Comment
Question by:samj
  • 6
  • 2
10 Comments
 
LVL 22

Expert Comment

by:pjedmond
ID: 17131677
You have a emacs lisp file somewhere called:

extview.el

In it, there is probably a line which states that cpp files should eb opened with /home/fred/test.cpp

Delete the line similar to:

'(("\\.cpp$" . "/home/fred/test.cpp"))

(   (()
(`-' _\
 ''  ''
0
 

Author Comment

by:samj
ID: 17131757
there is no mention of cpp at all

here is the file extview.el

=========================================
;;; extview.el --- open files with external viewer

;; Copyright (C) 2006 Tamas Patrovics

;; $Date: 2006-04-04 12:58:37 $

;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.

;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING.  If not, write to
;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.

;;; Commentary:

;; Load the library and try opening a file which has an associated
;; application in `extview-application-associations' or in mailcap.
;;
;; `extview-application-associations' can be used to override mailcap
;; handlers:
;;
;;   (require 'extview)
;;   (push '("\\.pdf$" . "acroread %s") extview-application-associations)
;;   (push '("\\.py$" . nil) extview-application-associations)
;;   (push '("\\.html$" . ask) extview-application-associations)
;;

;;; Code:

(eval-when-compile (require 'cl))
(require 'mailcap)

(mailcap-parse-mailcaps)

(defvar extview-application-associations nil
  "List of (REGEXP . HANDLER) descriptors which are tested for the
file name to be opened. The first matching handler is used to open
the file. If no handler matches then an attempt is made to use
mailcap to open the file.

If no handler is found normal `find-file' is executed.

If HANDLER is nil then the file is opened normally regardless if
it has a mailcap entry.

If HANDLER is the symbol `ask' then the user has to decide whether the
file is to be opened in emacs or with an external viewer.

This variable is normally used to override mailcap handlers.")


(defadvice find-file (around extview-find-file
                             (filename &optional wildcards) activate)
  "Around advice for find-file which checks if the file should be
opened with an external viewer instead of Emacs."
  (interactive "FFind file: \np")
  ;; check `extview-application-associations' first, since it has
  ;; priority
  (let ((handler (some (lambda (descriptor)
                         (if (string-match (car descriptor) filename)
                             descriptor))
                       extview-application-associations)))
    (if (and handler
             (not (and (eq 'ask (cdr handler))
                       (y-or-n-p "Open with external viewer? "))))
        (if (eq (cdr handler) 'ask)     ; open with emacs
            (setq handler nil)
          (setq handler (cdr handler)))

      ;; check if there is an appropriate mailcap entry
      (let* ((ext (file-name-extension filename))
             (mime (if ext
                       (mailcap-extension-to-mime ext))))
        (if mime
            (setq handler (mailcap-mime-info mime)))

        ;; only string handlers are considered, since we're interested
        ;; in external viewers, not emacs functions
        (unless (stringp handler)
          (setq handler nil))))

    ;; call the handler if found
    (if handler
        (let* ((logbuffer "*extview log*")
               (components (split-string handler))
               ;; hopefully the first component is always the
               ;; application name
               (app (car components))
               ;; substitute file name for %s args
               (args (mapcar (lambda (arg)
                               (if (or (equal "%s" arg)
                                       (equal "'%s'" arg))
                                   (expand-file-name filename)
                                 arg))
                             (cdr components))))
         
          (get-buffer-create logbuffer)
          (with-current-buffer logbuffer
            (goto-char (point-max))
            (insert (format "Opening file %s with handler: %s"
                            filename handler)
                    "\n"))

          (apply 'start-process "extview-process" logbuffer app args)          

          (message (concat "File is opened with an external viewer. "
                           "See buffer %s for status messages.")
                   logbuffer))
                         
      ad-do-it)))

(provide 'extview)
;;; extview.el ends here

=========================================
0
 

Author Comment

by:samj
ID: 17133937
this might help
I can find/open my.cpp if I
$gksu emacs my.cpp
type in the root password

it then opens and in the mode it says
-1:-- my.cpp  (C++ Abbrev)--L1--All--
0
Free learning courses: Active Directory Deep Dive

Get a firm grasp on your IT environment when you learn Active Directory best practices with Veeam! Watch all, or choose any amount, of this three-part webinar series to improve your skills. From the basics to virtualization and backup, we got you covered.

 
LVL 22

Expert Comment

by:pjedmond
ID: 17134040
I'm not an emacs specialist I'm afraid - I only use it occassionally.

The fact that doing it with a different permission works implies that there is perhaps a local 'hidden' '.' configuration file. By 'su' ing you are using a different configuration (roots).

Not sure what the . file would be called (but I presume that it is in addition to the .emacs file), but that's what I'd be looking for. Sorry I can't be more helpful:(

(   (()
(`-' _\
 ''  ''
0
 

Author Comment

by:samj
ID: 17136296
I deleted every thing in .emacs reloaded the file and the problem is
still there.  
it is only when I delete .emacs from my home dir that the problem does
not duplicate.

0
 

Author Comment

by:samj
ID: 17136314
it is only when I delete .emcas from my hode dir and restart emacs that the problem does not duplicate.
0
 

Author Comment

by:samj
ID: 17136763
ok, I fix the problem at least for just now.
I commented out the section

===================================
;; ;; opens a a file 'pdf' with xpdf and so on...
;; (require 'extview)
;; (push '("\\.pdf$" . "xpdf %s") extview-application-associations)
;; (push '("\\.py$" . nil) extview-application-associations)
===================================
restarted emacs and I am now cpp compliant. no clue as to how to fix the problem so that I can have the functionality provided by the section above.
0
 

Author Comment

by:samj
ID: 17150755
if a permenent solution is found, the points will be awareded.
0
 
LVL 1

Accepted Solution

by:
GhostMod earned 0 total points
ID: 17168453
Closed, 250 points refunded.

GhostMod
Community Support Moderator
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Setting up Secure Ubuntu server on VMware 1.      Insert the Ubuntu Server distribution CD or attach the ISO of the CD which is in the “Datastore”. Note that it is important to install the x64 edition on servers, not the X86 editions. 2.      Power on th…
SSH (Secure Shell) - Tips and Tricks As you all know SSH(Secure Shell) is a network protocol, which we use to access/transfer files securely between two networked devices. SSH was actually designed as a replacement for insecure protocols that sen…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.

856 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question