Sida 2 av 2

Re: Variabelnamn i C

Postat: 24 jul 2010, 11:26
av m!rage
Det tycker jag inte att du gjorde :)
Vad anser du förresten om tabs vs. spaces?

Re: Variabelnamn i C

Postat: 24 jul 2010, 11:38
av dmz
Jag föredrar spaces (2). Jag är väl medveten om att inte är accepterat bland de stora pojkarna där tabstop ala 8 gäller, men jag känner att det är smidigare.
Jag anpassar mig dock givetvis efter hur kod ser ut när jag får den.

Kod: Markera allt

set ts=2
set sw=2
set expandtab

Re: Variabelnamn i C

Postat: 24 jul 2010, 12:20
av m!rage
@Johnny
Jag har hittat lite kul tillägg nu.

Det första indenterar automagiskt efter { och avindenterar (?) efter }. Hämta det här: http://live.gnome.org/Gedit/Plugins?act ... ent.tar.gz
Installera genom att packa upp arkivets innehåll i ~/.gnome2/gedit/plugins (inte i en egen mapp)

Autokomplettering: http://github.com/nagaozen/gedit-plugin-autocomplete
Packa upp arkivet någonstans kör sedan i terminalen

Kod: Markera allt

cd sökväg-till-mapp/nagaozen-gedit*
chmod +x install
./install
Efter detta startar du om gedit och aktiverar sedan tilläggen i inställningarna

Re: Variabelnamn i C

Postat: 24 jul 2010, 18:02
av Johnny Rosenberg
m!rage skrev:@Johnny
Jag har hittat lite kul tillägg nu.

Det första indenterar automagiskt efter { och avindenterar (?) efter }. Hämta det här: http://live.gnome.org/Gedit/Plugins?act ... ent.tar.gz
Installera genom att packa upp arkivets innehåll i ~/.gnome2/gedit/plugins (inte i en egen mapp)

Autokomplettering: http://github.com/nagaozen/gedit-plugin-autocomplete
Packa upp arkivet någonstans kör sedan i terminalen

Kod: Markera allt

cd sökväg-till-mapp/nagaozen-gedit*
chmod +x install
./install
Efter detta startar du om gedit och aktiverar sedan tilläggen i inställningarna
Tack för tipset! Har installerat båda nu på båda maskinerna. Dock märkte jag att på ena maskinen fungerar inte indenteringen optimalt, vet inte riktigt varför det fungerar på den ena maskinen men inte på andra. Ubuntu 10.04 på båda.

Ett simpelt exempel som visar att det fungerar olika på mina maskiner:
Maskin 1 – vanlig bärbar dator med Ubuntu 10.04

Kod: Markera allt

if (a=b) {
	c=d;
	e=f;
}
Maskin 2 – EeePC 900 med Ubuntu 10.04

Kod: Markera allt

if (a=b) {
	c=d;
e=f;
}
Märkligt. Får se om den fungerar likadant efter omstart eller så.

Re: Variabelnamn i C

Postat: 24 jul 2010, 18:23
av Johnny Rosenberg
Förresten, ingen som vet om det finns något tillägg som sätter ut semikolon (”;”) automatiskt i exempelvis C, när man själv glömt det? Glömmer det ganska ofta och sedan får man klia sig i huvudet ett bra tag innan man hittar felet…

Re: Variabelnamn i C

Postat: 24 jul 2010, 19:23
av Toledomahn
Här borde dom veta allt om c programmering:

http://cboard.cprogramming.com/c-programming/

Re: Variabelnamn i C

Postat: 24 jul 2010, 22:01
av m!rage
Johnny Rosenberg skrev:Förresten, ingen som vet om det finns något tillägg som sätter ut semikolon (”;”) automatiskt i exempelvis C, när man själv glömt det? Glömmer det ganska ofta och sedan får man klia sig i huvudet ett bra tag innan man hittar felet…
Inte för att du har bett om min åsikt men det är bäst att du lär dig! :) Det är ett av de vanligaste felen man gör och därför något som ska nötas in tills man lär sig. I många fall är dessutom kompilatorn schysst och påpekar att "du kanske har glömt ett semikolon där". I många fall vill man dessutom använda flera rader, till exempel om man skriver ut mycket text på skärmen samtidigt.

Re: Variabelnamn i C

Postat: 24 jul 2010, 22:35
av Johnny Rosenberg
m!rage skrev:
Johnny Rosenberg skrev:Förresten, ingen som vet om det finns något tillägg som sätter ut semikolon (”;”) automatiskt i exempelvis C, när man själv glömt det? Glömmer det ganska ofta och sedan får man klia sig i huvudet ett bra tag innan man hittar felet…
Inte för att du har bett om min åsikt men det är bäst att du lär dig! :) Det är ett av de vanligaste felen man gör och därför något som ska nötas in tills man lär sig. I många fall är dessutom kompilatorn schysst och påpekar att "du kanske har glömt ett semikolon där". I många fall vill man dessutom använda flera rader, till exempel om man skriver ut mycket text på skärmen samtidigt.
Jo, jag antar att det kan finnas fall när det inte är självklart huruvida det ska vara ett semikolon på slutet av en rad eller inte. Ett tillägg som fixar det måste nog vara ganska avancerat om det ens är möjligt att åstadkomma.

Re: Variabelnamn i C

Postat: 25 jul 2010, 00:35
av Substrata
Emacs kan provkompilera kod medan du skriver och påpeka felmeddelanden, men jag minns inte hur.

Re: Variabelnamn i C

Postat: 25 jul 2010, 02:26
av Toledomahn
Substrata skrev:Emacs kan provkompilera kod medan du skriver och påpeka felmeddelanden, men jag minns inte hur.
Här hittade jag nån slags manual om det kan vara till nån hjälp: http://www.gnu.org/software/emacs/manua ... index.html

Re: Variabelnamn i C

Postat: 25 jul 2010, 04:28
av Substrata
Nu kände jag mig tvungen att leta reda på det som jag provade. Här: http://flymake.sourceforge.net/

Re: Variabelnamn i C

Postat: 05 aug 2010, 14:10
av cthulhu
Toledomahn skrev:
Substrata skrev:Emacs kan provkompilera kod medan du skriver och påpeka felmeddelanden, men jag minns inte hur.
Här hittade jag nån slags manual om det kan vara till nån hjälp: http://www.gnu.org/software/emacs/manua ... index.html
Något att peta in i ~/.emacs :)

Kod: Markera allt

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;             C++ MODE                 ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; C++-specifikt. Vilka ändelser som skall associeras med C++ (iställetför C)
(add-to-list 'auto-mode-alist '("\\.h$"  . c++-mode)) ;h-filer
(add-to-list 'auto-mode-alist '("\\.icc" . c++-mode)) ;Implementeringsfiler
(add-to-list 'auto-mode-alist '("\\.tcc" . c++-mode)) ;Filer med templatekod

;;(add-hook 'c-mode-common-hook '(lambda () (c-set-style "stroustrup")))

(require 'compile)
(add-hook 'c++-mode-hook
          (lambda ()
            
            (font-lock-add-keywords nil 
                                    '(("\\<\\(FIXA\\|TEST\\|TODO\\|FIXME\\|BUG\\|NOTE\\)" 
                                       1 font-lock-warning-face prepend)))
            
            (setq 
             compilation-scroll-output 'first-error  ; scroll until first error
             ;; compilation-read-command nil          ; don't need enter
             compilation-window-height 11) 
            
            (local-set-key (kbd "<M-up>")   'previous-error) 
            (local-set-key (kbd "<M-down>") 'next-error)

            (unless (file-exists-p "Makefile")
              (set (make-local-variable 'compile-command)
                   ;; emulate make's .c.o implicit pattern rule, but with
                   ;; different defaults for the CC, CPPFLAGS, and CFLAGS
                   ;; variables:
                   ;; $(CC) -c -o $@ $(CPPFLAGS) $(CFLAGS) $<
                   (let ((file (file-name-nondirectory buffer-file-name)))
                     (format "%s -o %s %s %s"
                             (or (getenv "CC") "g++")
                             (file-name-sans-extension file)
                             ;;(or (getenv "CPPFLAGS") "-DDEBUG=9")
                             (or (getenv "CFLAGS") " -g -O2")
                             file)))))
          ;;(antalet saker i " " i format måste match antalet arg. i getenv.)
          
          ;;This will run Make if there is a Makefile in the same directory as the
          ;;source-file, or it will create a command for compiling a single
          ;;file and name the executable the same name as the file with the extension
          ;;stripped.
          )


;;Döda-kompilatorbuff.-om-success-------------
;;för att ta bort kompileringsfönster vid lyckad kompilering
;;funkar även för LaTeX
(defun notify-compilation-result(buffer msg)
  "Notify that the compilation is finished,
close the *compilation* buffer if the compilation is successful,
and set the focus back to Emacs frame"
  (if (string-match "^finished" msg)
    (progn
      ;;(delete-windows-on buffer)  ;;use kill instead:
     (kill-buffer-and-window)
     ;;(tooltip-show "\n Compilation Successful :-) \n "))
     )
      ;;(tooltip-show "\n Compilation Failed :-( \n "))
    )
  (setq current-frame (car (car (cdr (current-frame-configuration)))))
  (select-frame-set-input-focus current-frame)
  )
(add-to-list 'compilation-finish-functions
	     'notify-compilation-result)
;;--------------------------------------------


;;Show function name in mod-line--------------
(add-hook 'c-mode-common-hook 
  (lambda ()
    (which-function-mode t)))
;;--------------------------------------------


;;Fold code-block-----------------------------
(add-hook 'c-mode-common-hook
  (lambda()
    (local-set-key (kbd "C-c <right>") 'hs-show-block)
    (local-set-key (kbd "C-c <left>")  'hs-hide-block)
    (local-set-key (kbd "C-c <up>")    'hs-hide-all)
    (local-set-key (kbd "C-c <down>")  'hs-show-all)
    (hs-minor-mode t)))
;;--------------------------------------------


;;Stavningskontroll---------------------------
;;kontrollera kommentarer och strings
;;byt ordbok: "C-c e" = engelska, "C-c s"=svenska, "C-c w"=stängav flyspell
(add-hook 'c++-mode-hook
          '(lambda ()
             (local-set-key (kbd "C-c e")
                             (lambda()(interactive)
                               (ispell-change-dictionary "american")
                               (flyspell-prog-mode)
                               (flyspell-buffer)))
             (local-set-key (kbd "C-c s")
                             (lambda()(interactive)
                               (ispell-change-dictionary "svenska")
                               (flyspell-prog-mode)
                               (flyspell-buffer)))
             (local-set-key (kbd "C-c w")
                             (lambda()(interactive)
                               (flyspell-mode-off)))
             ))

;;--------------------------------------------