Ted's Blog

Happy coding

Emacs Tips & Tricks

Ted posted @ 2008年8月14日 01:27 in 未分类 with tags emacs , 3556 阅读

Emacs Tips & Tricks
Power tools for Emacs users

April 2007
Geotechnical Software Services

 

This document is available at http://geosoft.no/development/emacs.html

 


 

Basic Tips & Tricks

 

Emacs initialization

When Emacs is launched, a specific initialization file is read. The initialization file can contain Emacs personal preferences like the functions and key bindings examples in this document. In addition it can contain default state settings for Emacs variables. Some examples are given below.

(setq default-frame-alist (append (list
  '(width  . 81)  ; Width set to 81 characters
  '(height . 40)) ; Height set to 60 lines
  default-frame-alist))

(setq inhibit-startup-message   t)   ; Don't want any startup message
(setq make-backup-files         nil) ; Don't want any backup files
(setq auto-save-list-file-name  nil) ; Don't want any .saves files
(setq auto-save-default         nil) ; Don't want any auto saving

(setq search-highlight           t) ; Highlight search object
(setq query-replace-highlight    t) ; Highlight query object
(setq mouse-sel-retain-highlight t) ; Keep mouse high-lightening

(set-face-background 'region "yellow") ; Set region background color
(set-background-color        "wheat3") ; Set emacs bg color

In the MS-Windows environment the initialization file should be called _EMACS and should be put in the root directory. In UNIX based systems the file should be called .emacs and should be put in the personal home directory.

 

Key bindings

For maximum typing and editing efficiency, as many keyboard keys as possible should be bound directly to Emacs functions. Some are already bound when Emacs is installed, but the great variety of keyboards and operating systems available makes it difficult for the Emacs team to pre bind functions in general.

To bind a function to a key, include a statement of the form

(global-set-key key-name 'function-name)

in the initialization file. key-name is either given as an actual name within brackets like [f1] for the F1 function key, or as "\C-q" or "\M-q" for a Control-key or Escape-key sequence respectively.

Remember that function that are not bound to a specific key or key sequence (actually this includes most functions) can always be accessed by typing

Esc-x function-name

This document gives many examples of possible Emacs key bindings. Since the name of the keys may differ between keyboards and operating systems, the following approach can be used to find the name of a specific key. Enter

Esc-x describe-key

and hit the key (or key combination) in question. This will reveal the name of the key as well as the function it is currently bound to.

 

Complete word

Emacs includes a very useful concept called complete word. Whenever in the minibuffer, it is always possible to hit the space bar to let Emacs try to complete the current input. This can save many key strokes and a lot of time.

For instance when looking for a file one can give one letter of a directory or a file name and, in case it is unique, Emacs will fill in the rest automatically. If it is not unique, Emacs will fill in as much as possible and return the different possible completions to let you choose between them.

 

The Emacs region

Emacs includes a powerful concept called a region. A region is like a marked area in a conventional word processor, but more useful in the way Emacs functions can be applied to it directly, for instance for sorting just a few lines of a file, or for printing a portion of a file.

A region is set implicitly by many Emacs functions, but can be set manually as well using Ctrl-Space. This specifies the current cursor position as one end of the region, called the mark. The cursor can then be moved around and its position will specify the other end of the region.

 

Cut, copy and paste key bindings

Based on the description of a region above, defining the common functions Cut, Copy and Paste on the region becomes very useful. The functions should be bound to keys for easy access, for instance like:

(global-set-key [f5] 'copy-region-as-kill) ; Copy
(global-set-key [f6] 'kill-region)         ; Cut
(global-set-key [f7] 'yank)                ; Paste

An element that is cut or copied this way is put into something called the kill-ring. Calling the yank function always pastes the last entry from the kill-ring. However, after the yank function as called, it is possible to replace the pasted text by the second last entry in the ring and so on by calling the yank-pop (by default boud to the Esc-y key) function repeatedly. In effect, all cut/copy operations of the session is registered, and are easily accessible through this simple sequence of key strokes.

 

Column handling

A feature that are missing in most editors and word processors is the possibility to cut/copy and paste a vertical region of a file. In Emacs this is simple. The column to cut or copy is marked as a region as described above. It can then be cut calling the function kill-rectangle and re-pasted by yank-rectangle

 

Navigation key bindings

These are the basic navigation keys. Many keyboard come with two sets of these keys, so each function is bound once for each key. Some of these functions are usually already bound when Emacs is installed.

(global-set-key [kp-home]  'beginning-of-buffer) ; [Home]
(global-set-key [home]     'beginning-of-buffer) ; [Home]
(global-set-key [kp-end]   'end-of-buffer)       ; [End]
(global-set-key [end]      'end-of-buffer)       ; [End]
(global-set-key [kp-prior] 'my-scroll-down)      ; [PgUp]
(global-set-key [prior]    'my-scroll-down)      ; [PgUp]
(global-set-key [kp-next]  'my-scroll-up)        ; [PgDn]
(global-set-key [next]     'my-scroll-up)        ; [PgDn]

 

Undo

Emacs has the most amazing undo facility. Anything you have typed since your session began is registered and can be undone. Since this obviously is a very useful function it should be bound directly to a key. Using the keypad [-] (subtraction) key for this purpose is convenient since it indicates the nature of the operation as well as being located so far away that it isn't easily accessed by accident.

(global-set-key [kp-subtract] 'undo) ; [Undo]

 

Insert/overwrite mode

By default Emacs run in insert mode. This state can be toggled with overwrite mode, and is best bound to the Insert key(s) on the keyboard.

(global-set-key [insert]    'overwrite-mode) ; [Ins]
(global-set-key [kp-insert] 'overwrite-mode) ; [Ins]

 

Goto line

To go to a specific line can be useful, especially when Emacs is used for programming. This common function can be bound to Ctrl-L by:

(global-set-key "\C-l" 'goto-line) ; [Ctrl]-[L]

 

Window splitting

The Emacs window can be split so that is can display two or more buffers at the same time. This can be useful when comparing two files, or when editing two files simultaneously. Functions for managing window splits:

(global-set-key [f2] 'split-window-vertically)
(global-set-key [f1] 'remove-split)

 

Frames

As well as displaying more than one buffer in a window, Emacs can also display more than one window (or frames as it is called in Emacs terminology). Creating and deleting frames can conveniently be done by binding the the functions as follows:

(global-set-key "\C-f" 'make-frame)   ; [Ctrl]-[F]
(global-set-key "\M-f" 'delete-frame) ; [ESC]-[F]

 

Getting information

Emacs contains lots of features and possibilities and it can be difficult to comprehend and utilize it all. However, Emacs comes with full documentation included. One of the more useful functions is apropos:

[ESC]-x apropos

This command prompts for a name or a concept and will return list of all functions or variables that relates to the entry given. This is a very useful approach for getting to know Emacs and the possibilities it contains.

Given an Emacs function or a variable it can sometimes be difficult to know exactly what it does. An explanation of a function or a variable can be obtained by:

[ESC]-x describe-function
[ESC]-x describe-variable

They will prompt for a name and return a comprehensive description of it.

Similarly, as described above

[ESC]-x describe-key

prompts for a key and returns the name of the key and the function it is currently bound to.

 


 

File Finder

This extension to the powerful Emacs complete-word facility is the major time saver for the frequent Emacs user. It is used within the find-file function and makes it possible to enter a given directory in the minibuffer by just entering a predefined two- to four letter sequence followed by the space key. Three different paths are given in the example below. The list can however be extended indefinetly.

(defun geosoft-parse-minibuffer ()
  ;; Extension to the complete word facility of the minibuffer
  (interactive)
  (backward-char 4)
  (setq found t)
  (cond
     ; local directories
     ((looking-at "..cd") (setq directory "c:/users/john/"))
     ((looking-at ".doc") (setq directory "c:/users/john/documents/"))
     ((looking-at "java") (setq directory "c:/users/john/src/java/"))
     (t (setq found nil)))
  (cond (found (beginning-of-line)
                (kill-line)
                (insert directory))
         (t     (forward-char 4)
                (minibuffer-complete))))

The function is made an extension to the minibuffer complete-word function by:

(define-key minibuffer-local-completion-map " " 'geosoft-parse-minibuffer)

 


 

Buffer Switcher

After a file has been loaded once, it is available in an Emacs buffer. Emacs is installed with lots of clever functions for fast retrieval of buffers. The function below is different however. It makes it possible to browse through the buffer list by single key-strokes only. It is also clever in its handling of the buffer stack in the way that the most frequent visited buffers (i.e. files) always are at the top of the stack.

(defvar LIMIT 1)
(defvar time 0)
(defvar mylist nil)

(defun time-now ()
   (car (cdr (current-time))))

(defun bubble-buffer ()
   (interactive)
   (if (or (> (- (time-now) time) LIMIT) (null mylist))
       (progn (setq mylist (copy-alist (buffer-list)))
          (delq (get-buffer " *Minibuf-0*") mylist)
          (delq (get-buffer " *Minibuf-1*") mylist)))
   (bury-buffer (car mylist))
   (setq mylist (cdr mylist))
   (setq newtop (car mylist))
   (switch-to-buffer (car mylist))
   (setq rest (cdr (copy-alist mylist)))
   (while rest
     (bury-buffer (car rest))
     (setq rest (cdr rest)))
   (setq time (time-now)))

The function is bound to a function key (for instance F4) by:

(global-set-key [f4] 'bubble-buffer)

When you are definitely done with a buffer (i.e. a file) it can be convinient to remove it from the buffer stack. To silently remove the current buffer from the stack (and retrieve the next one on the stack), bind the following function to the Ctrl-Del key.

(defun geosoft-kill-buffer ()
   ;; Kill default buffer without the extra emacs questions
   (interactive)
   (kill-buffer (buffer-name))
   (set-name))

Bind by:

(global-set-key [C-delete] 'geosoft-kill-buffer)
(global-set-key [C-kp-delete] 'geosoft-kill-buffer)

 


 

Navigator

For fast navigation within an Emacs buffer it is necessary to be able to move swiftly between words. The functions below change the default Emacs behavour on this point slightly, to make them a lot more usable.

Note the way that the underscore character is treated. This is convinient behaviour in programming. Other domains may have different requirements, and these functions should be easy to modify in this respect.

(defun geosoft-forward-word ()
   ;; Move one word forward. Leave the pointer at start of word
   ;; instead of emacs default end of word. Treat _ as part of word
   (interactive)
   (forward-char 1)
   (backward-word 1)
   (forward-word 2)
   (backward-word 1)
   (backward-char 1)
   (cond ((looking-at "_") (forward-char 1) (geosoft-forward-word))
         (t (forward-char 1))))

(defun geosoft-backward-word ()
   ;; Move one word backward. Leave the pointer at start of word
   ;; Treat _ as part of word
   (interactive)
   (backward-word 1)
   (backward-char 1)
   (cond ((looking-at "_") (geosoft-backward-word))
         (t (forward-char 1))))

Bind the functions to Ctrl-Left and Ctrl-Right with:

(global-set-key [C-right] 'geosoft-forward-word)
(global-set-key [C-left] 'geosoft-backward-word)

 


 

Scroller

Scrolling without moving the cursor can be achieved by the functions:

(defun scroll-down-keep-cursor ()
   ;; Scroll the text one line down while keeping the cursor
   (interactive)
   (scroll-down 1))

(defun scroll-up-keep-cursor ()
   ;; Scroll the text one line up while keeping the cursor
   (interactive)
   (scroll-up 1))

Bind the functions to the /-key and the *-key (on the numeric keypad) with:

(global-set-key [kp-divide] 'scroll-down-keep-cursor)
(global-set-key [kp-multiply] 'scroll-up-keep-cursor)

 


 

Emacs for Programmers

 

Modes

During editing Emacs can be set in different modes. The mode has some knowledge about the structure of the document the user is working on, and can assist on the organization, formatting and editing of this.

This is particularly helpful when Emacs is used for programming, since programming languages in general has rigid sets of restrictions regarding document structure. For instance, programming statements are normally indented according to specific rules, and if the mode know the rules, it can do the indentation for the user automatically.

There exists modes for all major and minor programming languages and most types of documents such as HTML, Perl scripts, shell scripts, Unix Makefiles, CSS etc. The mode is automatically set by Emacs based on the name or the extension of the file edited.

 

Color coding

A very useful feature is Emacs' ability to render text with different colors and fonts. Emacs packages for color coding analyse the structure of the text and color the text according to the structure. For instance can programming comments get one color, reserved words a different color, function definitions yet another and so on.

A popular color coding package that comes with the standard Emacs distribution is hilite. To use it, include the following statement in the initialization file:

(load "hilit19")

During editing, it is in general impossible for the color coding package to color the text since the structure of the edited part of the document may not yet be complete. Beacuase of this, it is handy to be able to refresh the color coding manually. This is done with the function hilit-highlight-buffer which can be bound to a key combination for convenience.

 

Including predefined element skeletons

Many of the text elements that are used in programming has a standard form based on common skeletons. The ability to include skeletons like these with a single keystroke can be very useful and time efficient.

For instance, declaration and documentation comments in Java follow the rules dictated by the javadoc automatic documentation system. A typical javadoc method comment will look something like this:

/**
 *
 * Returns the character at the specified index. An index
 * ranges from <code>0</code> to <code>length()-1&</code>
 *
 * @param       index of the desired character
 * @return      the desired character
 * @exeption    StringIndexOutOfRangeExeption
 *              if the index is not in the range <code>0</code>
 *              to <code>length()-1&</code>.
 * @see         java.lang.Character#charValue()
 */
public char charAt(int index) {
   ...
}

To create a skeleton that can be included directly into a java source file, include the following LISP function in the Emacs initialization file:

(defun javadoc-method-comment ()
  ;; Insert a javadoc method comment at the cursor position
  (interactive)
  (insert
"/**
 *
 *
 *
 *
 * @param
 * @return
 * @exeption
 * @see
 */
")/
  (previous-line 8)
  (end-of-line))

The function can be bound to a key by for instance:

(define-key java-mode-map [f9] 'javadoc-method-comment)

So hitting F9 will in effect include a javadoc method comment skeleton at the cursor position and move the cursor to the position within the comment where the description should start.

Along the same lines it is easy to predefine a large number of code elements, for instance while loops, if-then-else constructions, file headers etc. and make them available by single key strokes or key combinations.

 


 

Emacs Links

Avatar_small
Flynn Melba 说:
2018年11月29日 11:13

The flow of the brick pace is insured for the humans. The height of the project and college-paper.org review is ensured for the fixation for the humans. It has been shard for the injunction for the provision for the humans in different and all elements for the humans.

Avatar_small
bullet force 说:
2018年11月29日 17:09

This article is useful for know about the root security of the containers. I got the knowledge of working of containers with the root behavior with the kernel

Avatar_small
corcoran jump boots 说:
2019年3月04日 18:24

He was totally right. This post actually made my day. You can't imagine just how much time I had spent for this information! Thanks!

Avatar_small
buy real instagram f 说:
2019年3月04日 18:36

Great work! I really like it because i got exactly what i am in searching for

Avatar_small
Haryana 12th Model P 说:
2020年1月02日 14:57

The All Private and Regular Students are you Searching Haryana Board 12th Class Sample Paper 2020 for going to Participate in upcoming Final Exam 2020, are you Preparing 12 Class Examination 2020 Download Bhiwani Board 12th Model Paper 2020 for Arts Subject wise Available this Web page. RBSE 12th Model Paper 2020 to achieve that I would like to inform soon Bhiwani Board 2019-20 will release HBSE Model Paper 2020 pdf. The Regular & private Candidates can check subject wise available in the official website. Had you completed your entire syllabus and waiting for Bhiwani Board 12th Model Question Paper 2020 get easily through our Website Provide Download link Available below. The HBSE will be conducted 12th annual examination in the month of March/April Every Year. The Students can Check HBSE Board XII Class Model Paper and 5 year old Paper in the official website.

Avatar_small
paul 说:
2020年2月29日 18:52

I mostly end up being in a hurry and wanted to extract all of the pages from a large document. But the platform of the <a href="https://de.altoextractpdf.com/reviews">https://de.altoextractpdf.com/reviews</a> have made all of this possible and convenient for me. I bet this has made it easier too for most of the people as well.

Avatar_small
james 说:
2020年2月29日 18:52

I mostly end up being in a hurry and wanted to extract all of the pages from a large document. But the platform of the https://de.altoextractpdf.com/reviews have made all of this possible and convenient for me. I bet this has made it easier too for most of the people as well.

Avatar_small
jackson 说:
2020年3月11日 15:28

For a long time me & my friend were searching for informative blogs, but now I am on the right place guys, you have made a room in my heart! 온라인파워볼

Avatar_small
gaming keyboards und 说:
2020年5月31日 16:34

what is the lightest mouse in the world have become quite popular over the past couple of years, with many companies responding to this spike of interest with some ...

Avatar_small
안전공원사이트 说:
2020年6月10日 19:59

excellent points altogether, you simply won a logo reader. What would you suggest about your submit that you made a few days in the past? Any positive?

Avatar_small
best highlighters 说:
2020年6月17日 20:56

[url=https://bestbudgetreport.com/best-cheap-3d-printers/]best 3d printers under 500[/url] Ever! Shop the best highlighters in 2020 at Sephora and get the glow you've always wanted, whether it be dewy, shimmery or holographic.

Avatar_small
dekhasia 说:
2020年6月17日 20:58

thanks gjj jhuyhuyf iuih <a href="http://dekhasia.com/" target="_blank">dekhasia</a><br />

[url=http://dekhasia.com/]dekhasia[/url]
<a href="http://dekhasia.com/">dekhasia</a>
Avatar_small
best highlighters 说:
2020年6月17日 21:01

3D printer prices have dropped dramatically over the past few years, but just because something is cheap ...

best 3d printers under 500

Avatar_small
ETHENS 说:
2020年6月25日 18:24 Thanks for taking the time to discuss this, I feel strongly about it and love learning more on this topic. If possible, as you gain expertise, would you mind updating your blog with extra information? It is extremely helpful for me. https://www.digitekprinting.com/vinyl-banners
Avatar_small
Mobile car battery r 说:
2020年6月28日 16:33

Spot lets start work on this write-up, I really think this fabulous website wants a great deal more consideration. I’ll oftimes be once more to learn to read much more, many thanks that information.

Avatar_small
ukuran ban loader 说:
2020年6月28日 16:33

There are a few interesting points on time in this posting but I do not know if these center to heart. There’s some validity but I will take hold opinion until I explore it further. Great article , thanks and now we want more! Combined with FeedBurner also

Avatar_small
코인카지노 说:
2020年7月07日 17:46

Hello, you used to write fantastic, but the last few posts have been kinda boring… I miss your tremendous writings. Past few posts are just a bit out of track! come on!

Avatar_small
카지노사이트 说:
2020年7月07日 17:47

In this great pattern of things you actually secure a B+ with regard to hard work. Where exactly you lost me was first in your specifics. You know, people say, details make or break the argument.. And that couldn’t be much more true right here. Having said that, let me reveal to you precisely what did give good results. Your writing is actually highly powerful and that is probably the reason why I am taking the effort in order to comment. I do not really make it a regular habit of doing that. Second, even though I can see a leaps in reasoning you come up with, I am not necessarily confident of exactly how you seem to unite the points which produce the actual final result. For now I will, no doubt subscribe to your issue but hope in the near future you connect the dots better.

Avatar_small
小額借款 说:
2020年7月14日 19:12

 

This is such a great resource that you are providing and you give it away for free. I love seeing blog that understand the value of providing a quality resource for free. mukcheck.com

Avatar_small
cupom amazon 说:
2020年8月26日 02:01

very interesting post.this is my first time visit here.i found so many interesting stuff in your blog especially its discussion..thanks for the post!

Avatar_small
content marketing 说:
2020年8月26日 15:16

I really appreciate the kind of topics you post here. Thanks for sharing us a great information that is actually helpful. Good day!

Avatar_small
cupons amazon 说:
2020年8月26日 17:03

I can set up my new idea from this post. It gives in depth information. Thanks for this valuable information for all,..

Avatar_small
เว็บแทงบอลที่ดีที่สุ 说:
2020年8月31日 22:25

I need to to thank you for ones time for this particularly fantastic read!! I definitely really liked every part of it and i also have you saved to fav to look at new information in your site.

Avatar_small
adult comics 说:
2020年9月13日 00:06

Great post, please keep on sharing amazing article like this! It makes me happy reading your post

Avatar_small
Playlist Pitching 说:
2020年9月13日 22:03

Website especially this blog page. Among the lots of comments on your articles. Thanks for sharing

Avatar_small
EDM Sauce 说:
2020年9月17日 19:40

I need to to thank you for ones time for this particularly fantastic read!! I definitely really liked every part of it and i also have you saved to fav to look at new information in your site.

Avatar_small
토토사이트 说:
2020年10月16日 19:00

Good to become visiting your weblog again, it has been months for me. Nicely this article that i've been waited for so long. I will need this post to total my assignment in the college, and it has exact same topic together with your write-up. Thanks, good share.   토토사이트

Avatar_small
Josiah 说:
2020年10月18日 04:00

With so many books and articles coming up to give gateway to make-money-online field and confusing reader even more on the actual way of earning money,   먹튀검증

Avatar_small
Josiah 说:
2020年10月30日 00:57

Very educating story, saved your site for hopes to read more!  먹튀폴리스

Avatar_small
CBD Bud 说:
2020年11月22日 19:14

I am overwhelmed by your post with such a nice topic. Usually I visit your blogs and get updated through the information you include but today’s blog would be the most appreciable. Well done!  CBD Bud

Avatar_small
voyance discount 说:
2020年12月04日 13:04

I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post.   voyance discount

Avatar_small
전설 서구 说:
2021年1月17日 22:24

Positive site, where did u come up with the information on this posting? I'm pleased I discovered it though, ill be checking back soon to find out what additional posts you include. soap2day app

Avatar_small
먹튀검증 说:
2021年2月16日 23:27

You might comment on the order system of the blog. You should chat it's splendid. Your blog audit would swell up your visitors. I was very pleased to find this site.I wanted to thank you for this great read!!  먹튀검증

Avatar_small
seoexpert 说:
2021年2月24日 16:30

I wanted to leave a little comment to support you and wish you a good continuation. Wishing you the best of luck for all your blogging efforts.  Virtual Layer Corp

Avatar_small
seoexpert 说:
2021年2月24日 19:13

You have done a amazing job with you website  Virtual Jeep

Avatar_small
seoexpert 说:
2021年2月24日 20:20

 It proved to be Very helpful to me and I am sure to all the commentators here!  Virginia Injury Attorney Blog

Avatar_small
seoexpert 说:
2021年2月24日 22:00

I wanted to leave a little comment to support you and wish you a good continuation. Wishing you the best of luck for all your blogging efforts.  Vintage Home Computers

Avatar_small
seoexpert 说:
2021年2月24日 22:59

I want you to thank for your time of this wonderful read!!! I definately enjoy every little bit of it and I have you bookmarked to check out new stuff of your blog a must read blog!  Video Games

Avatar_small
seoexpert 说:
2021年2月25日 00:17

I must say, I thought this was a pretty interesting read when it comes to this topic. Liked the material. . . . .  Victory Lane Web Designs

Avatar_small
seoexpert 说:
2021年2月25日 01:07

The next time I read a blog, I hope that it doesnt disappoint me as much as this one. I mean, I know it was my choice to read, but I actually thought you have something interesting to say. All I hear is a bunch of whining about something that you could fix if you werent too busy looking for attention.  Vermont Micro Business

Avatar_small
seoexpert 说:
2021年2月25日 02:10

I adore your websites way of raising the awareness on your readers.  Vermiglio

Avatar_small
seoexpert 说:
2021年2月27日 12:08

Your site is truly cool and this is an extraordinary moving article.  Vegas Real Estate Homes

Avatar_small
seoexpert 说:
2021年2月27日 12:59

Thanks for sharing this information. I really like your blog post very much. You have really shared a informative and interesting blog post with people..  Valley Of The Moon Rotary

Avatar_small
seoexpert 说:
2021年2月27日 14:17

Two full thumbs up for this magneficent article of yours. I've really enjoyed reading this article today and I think this might be one of the best article that I've read yet. Please, keep this work going on in the same quality.  Valley Flower Show

Avatar_small
seoexpert 说:
2021年2月27日 15:23

You completed a number of nice points there. I did a search on the issue and found nearly all people will have the same opinion with your blog.  US Homebased Business

Avatar_small
seoexpert 说:
2021年2月27日 17:36

I want you to thank for your time of this wonderful read!!! I definately enjoy every little bit of it and I have you bookmarked to check out new stuff of your blog a must read blog!  US Green Business Certification

Avatar_small
seoexpert 说:
2021年2月27日 18:24

It's really nice and meanful. it's really cool blog. Linking is very useful thing.you have really helped lots of people who visit blog and provide them usefull information.  USA Fast Support

Avatar_small
seoexpert 说:
2021年2月27日 20:33

I must say, I thought this was a pretty interesting read when it comes to this topic. Liked the material. . . . .  Urban Crawl

Avatar_small
seoexpert 说:
2021年2月27日 21:43

We are tied directly into the sate’s renewal database which allows us to process your request almost instantly.  Upstate SEO

Avatar_small
seoexpert 说:
2021年2月27日 22:57

Nice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here.  Upper Valley Score

Avatar_small
seoexpert 说:
2021年2月27日 23:37

This is really very nice post you shared, i like the post, thanks for sharing..  Unmanned Engineeria

Avatar_small
seoexpert 说:
2021年2月28日 00:15

I recently found many useful information in your website especially this blog page. Among the lots of comments on your articles. Thanks for sharing.  Unite Here 217

Avatar_small
seoexpert 说:
2021年2月28日 02:26

I have express a few of the articles on your website now, and I really like your style of blogging. I added it to my favorite’s blog site list and will be checking back soon…  United 4 Safety

Avatar_small
John 说:
2021年3月05日 21:28

Nice knowledge gaining article. This post is really the best on this valuable topic.  เมล็ดกาแฟคั่ว

Avatar_small
Calendar 2021 Pdf Do 说:
2021年4月11日 01:49

The material and aggregation is excellent and telltale as comfortably.   Calendar 2021 Pdf DownloadRamadan

Avatar_small
the jacketzone 说:
2021年4月14日 13:36

Thanks for sharing such an awesome article. that what they think about it really.

<a href="https://www.thejacketzone.com/product-category/movies/yellowstone-tv-series-jackets">the jacketzone</a>

Avatar_small
3d configurator 说:
2021年4月21日 15:59

Hey! I simply wish to give a huge thumbs up for the good info you will have here on this post. I shall be coming back to your blog for more soon.

Avatar_small
guespost 说:
2021年4月23日 18:12

Much thanks for this extraordinary post.

Avatar_small
free chat 说:
2021年5月01日 01:46

this is truly decent to read..informative post is great to read..thanks a considerable measure!

Avatar_small
tedwedcotton 说:
2021年5月22日 13:24

Thanks for the tips. I will surely try to implement for my blog.

<a href="https://tedwedcotton.com/product/tiger-logo-rocky-2-balboa-jacket">tedwedcotton</a>

Avatar_small
Web development 说:
2021年5月28日 19:40

You make such a variety of extraordinary focuses here that I read your article a few times. Your perspectives are as per my own particular generally. This is incredible substance for your perusers.

Avatar_small
brock 说:
2021年5月31日 17:29

It is somewhat fantastic, and yet check out the advice at this treat.

Avatar_small
sam 说:
2021年6月12日 19:59 Great info! I recently came across your blog and have been reading along. I thought I would leave my first comment. I don’t know what to say except that I have  먹튀검증업체
Avatar_small
sam 说:
2021年6月15日 16:03

I would state, you do the genuinely amazing.This substance is made to a wonderful degree well. 먹튀검증

Avatar_small
sam 说:
2021年6月16日 14:11

A fascinating dialog is value remark. I feel that it is best to compose more on this matter, it may not be an unthinkable theme however generally people are insufficient to chat on such subjects. To the following. Salud. 먹튀사이트

Avatar_small
Wonder stuff 说:
2021年6月18日 18:44

I got what you mean , a debt of gratitude is in order for posting .Woh I am glad to discover this site through google.

Avatar_small
sam 说:
2021年6月20日 05:21

I want to say thanks for beautiful blog sharing with us. Your blog really great resource to update my knowledge. old flour sifter

Avatar_small
sam 说:
2021年6月30日 16:04

I'm continually scanning on the web for posts that will support me. An excess of is obviously to find out about this. I trust you made great quality things in Functions too. Continue working, congratulations! 먹튀검증

Avatar_small
sam 说:
2021年7月08日 15:34

I would state, you do the truly amazing.This substance is made to a magnificent degree well. 꽁머니 지급

Avatar_small
web design and devel 说:
2021年7月09日 16:30

Just wanna remark on few general things, The website style is ideal, the topic matter is rattling good

Avatar_small
sam 说:
2021年7月16日 11:58

Your post is very helpful to get some effective tips to reduce weight properly. You have shared various nice photos of the same. I would like to thank you for sharing these tips. Surely I will try this at home. Keep updating more simple tips like this. Information here

Avatar_small
sam 说:
2021年7月17日 15:31

I might want to thank you for the endeavors you have made in composing this article. I am trusting the same best work from you later on too.. voyance téléphone sérieuse

Avatar_small
sam 说:
2021年7月19日 14:07

I personally like your post; you have shared good insights and experiences. Keep it up. amazon backscratchers

Avatar_small
sam 说:
2021年7月19日 18:16

Great job for publishing such a beneficial web site. Your web log isn’t only useful but it is additionally really creative too. There tend to be not many people who can certainly write not so simple posts that artistically. Continue the nice writing Medicare Options

Avatar_small
chat rooms 说:
2021年7月20日 20:23

If it's not too much trouble share more like that.

Avatar_small
dwdwd 说:
2021年7月23日 06:18

You have worked superbly. I will burrow it and by and by prescribe to my companions. I am sure they will be profited by this site <a href="https://www.northamericanbancard.pro/selling_merchant_accounts">merchant services sales jobs</a>

Avatar_small
dwdwd 说:
2021年7月23日 06:19

[url=https://www.northamericanbancard.pro/selling_merchant_accounts]merchant services sales jobs[/url] You have worked superbly. I will burrow it and by and by prescribe to my companions. I am sure they will be profited by this site

Avatar_small
king 说:
2021年7月24日 19:08

Such a strikingly essential article.I fundamentally wish to offer an animal continue for the standard information you have impeccable here on this post. how to become a credit card processor

Avatar_small
sam 说:
2021年7月26日 01:58

America Gun Ban Home, Syndicated by Countrymen Your News Source Worldwide. Taking the stink out of Gun Control and being a Patriot.  Best Elliptical Machines

Avatar_small
sam 说:
2021年7月27日 13:54

 A portable fish finder is a good choice if you don't fish from the same ship all the time. 먹튀검증사이트

Avatar_small
sam 说:
2021年7月29日 15:23

America Gun Ban Home, Syndicated by Countrymen Your News Source Worldwide. Taking the stink out of Gun Control and being a Patriot.  Axia

Avatar_small
sam 说:
2021年8月01日 00:12

I know your expertise on this. I must say we should have an online discussion on this. Writing only comments will close the discussion straight away! And will restrict the benefits from this information. fivem store

Avatar_small
sam 说:
2021年8月02日 18:17

Much obliged to you for peopling get the data they require. Extraordinary stuff of course. Keep up the colossal work!!!  joker123

Avatar_small
kon888 说:
2021年8月04日 17:48

Goddamn it ! I like this blog <a href=http://162.222.215.42/>ceme online</a>. You are amazing! Thanks for sharing.

Avatar_small
sam 说:
2021年8月05日 17:10

Hmm!! This blog is really cool, I’m so lucky that I have reached here and got this awesome information. http://69.195.78.97/login/

Avatar_small
liam 说:
2021年8月06日 22:03

In any event it ended a really fantastic trip for us on an absolute high. A case of being in the right place at the right time!" selling credit card processing

Avatar_small
sam 说:
2021年8月07日 13:57

I really like your blog. Great article. It's most evident, people should learn before they are able to 918kiss

Avatar_small
liam 说:
2021年8月07日 14:51

one thing that I like about the blog could be that the data is useful and keeps one educated on issues identified with governmental issues. https://londondailypost.com/choosing-books-as-gifts-for-kids-is-an-excellent-way-to-help-them-grow/

Avatar_small
liam 说:
2021年8月07日 18:37

Excellent article plus its information and I positively bookmark to this site because here I always get an amazing knowledge as I expect. Thanks for this to share with us Gavebånd

Avatar_small
sam 说:
2021年8月07日 18:56

Our training center build custom training material and documents according to business specific needs. It is the most efficient way to train your internal team and external collaborators! business training center

Avatar_small
sam 说:
2021年8月07日 18:57

Our training center build custom training material and documents according to business specific needs. It is the most efficient way to train your internal team and external collaborators! business training center

Avatar_small
liam 说:
2021年8月08日 15:28

Just admiring your work and wondering how you managed this blog so well. It’s so remarkable that I can't afford to not go through this valuable information whenever I surf the internet!  Joker123

Avatar_small
liam 说:
2021年8月09日 14:26

I trust you will share such sort of amazing substance again with us so we can use it and get more favorable position. สล็อตออนไลน์

Avatar_small
sam 说:
2021年8月10日 18:42

I wanted to thank you for this great read!! I definitely enjoying every little bit of it I have you bookmarked to check out new stuff you post. Waec runz

Avatar_small
liam 说:
2021年8月11日 13:32

An obligation of appreciation is all together for offering this quality information to us. I genuinely had a great time examining. Will point of fact going to confer this URL to my allies. https://www.towelsforthebeach.com/beach-towel-clip/

Avatar_small
liam 说:
2021年8月11日 15:39

I trust you will share such sort of amazing substance again with us so we can use it and get more favorable position. credit card processing jobs

Avatar_small
liam 说:
2021年8月11日 19:11

That appears to be excellent however i am still not too sure that I like it. At any rate will look far more into it and decide personally! situs judi slot

Avatar_small
sam 说:
2021年8月12日 11:31

There are some sites that allow web cam sessions for adults above the age of 18. There are others which have teen chat or adult only chat or even kids' chat. Depending on the site you choose to chat, the chatting rules will apply. Video Calling,

Avatar_small
sam 说:
2021年8月13日 13:27

I recently came across your article and have been reading along. I want to express my admiration of your writing skill and ability to make readers read from the beginning to the end. I would like to read newer posts and to share my thoughts with you. สล็อตออนไลน์

Avatar_small
liam 说:
2021年8月13日 18:50

I found so many interesting stuff in your blog especially its discussion. Really its great article. Keep it up. WAEC QUESTIONS AND ANSWERS

Avatar_small
sam 说:
2021年8月13日 22:24

That gives off an impression of being brilliant anyway I am as yet not very sure that I like it. At any rate will look unmistakably more into it and choose actually! York St John University London Campus

Avatar_small
asdasd 说:
2021年8月15日 23:39

Interesting post. I Have Been wondering about this issue. so thanks for posting. Pretty cool post.It 's really very nice and Useful post.Thanks Face Mask

Avatar_small
sam 说:
2021年8月16日 01:36

If you want to succeed at selling merchant services, then you will need to know what an ISO agent program and what their area of responsibilities are. North American Bancard ISO

Avatar_small
liam 说:
2021年8月16日 13:22

This is extremely fascinating substance! I have completely delighted in perusing your focuses and have reached the conclusion that you are right about a hefty portion of them. You are extraordinary.  online transcription services

Avatar_small
liam 说:
2021年8月16日 14:56

Wonderful article, thanks for putting this together! This is obviously one great post. Thanks for the valuable information and insights you have so provided here. holiday

Avatar_small
liam 说:
2021年8月16日 18:59

I think this is a better than average article. You make this data intriguing and locks in. You give perusers a considerable measure to consider and I welcome that sort of composing. pgslot

Avatar_small
liam 说:
2021年8月17日 15:24

I as of late went over your article and have been perusing along. I need to express my esteem of your composition expertise and capacity to make perusers read from the earliest starting point as far as possible. I might want to peruse more up to date presents and on offer my contemplations with you. hengjing168

Avatar_small
liam 说:
2021年8月20日 19:39

I know your aptitude on this. I should say we ought to have an online discourse on this. Composing just remarks will close the talk straight away! What's more, will confine the advantages from this data.  North American Bancard Agent

Avatar_small
liam 说:
2021年8月20日 21:05

America Gun Ban Home, Syndicated by Countrymen Your News Source Worldwide. Taking the stink out of Gun Control and being a Patriot.  Alaskan king bed

Avatar_small
liam 说:
2021年8月23日 13:46

Thanks for the tips guys. They were all great. I have been having issues with being fat both mentally and physically. Thanks to you guys i have been showing improvements. Do post more. joker123

Avatar_small
sam 说:
2021年8月23日 21:28

I have added and shared your site to my internet based life records to send individuals back to your webpage since I am certain they will discover it incredibly supportive as well. Soap2day

Avatar_small
liam 说:
2021年8月24日 17:31

This powerful step-by-step tool enriched with crucial tips, templates, and sample letters will lead you through the whole process from gathering the evidence to receiving your artist green card. performance visa usa

Avatar_small
sam 说:
2021年8月24日 20:32

With a soft brush get rid of any larger pieces of coffee from the creases. Mix baking soda and water in equal parts and dip the brush into the mixture and gently massage onto the stain. Coffee Reviews

Avatar_small
liam 说:
2021年8月25日 18:04

Ja, auf jeden Fall helfen wir Ihnen bei einem Rekurs oder Einsprache gegen die Veranlagungsverfügung. steuererklärung ausfüllen lassen basel

Avatar_small
sam 说:
2021年8月25日 18:56

We already export many containers of custom design indoor and indonesian teak garden furniture to  overseas client and resort. teak wood furniture indonesia

Avatar_small
read more 说:
2021年8月26日 16:20

I really appreciated to you on this quality work.

<a href="https://ebusinesssubmit.com/link-building/coupon-distribution/">read more</a>

Avatar_small
liam 说:
2021年8月26日 17:01

Good website! I truly love how it is easy on my eyes it is. I am wondering how I might be notified whenever a new post has been made. I have subscribed to your RSS which may do the trick? Have a great day! January 2022 intake Uk

Avatar_small
liam 说:
2021年8月27日 19:10

You will always want to increase your income from the business and to ensure the same you will need to do the packaging of the product in the most attractive way. Custom CBD Box Packaging

Avatar_small
liam 说:
2021年8月28日 17:04 Forecasting is commonly used; nonetheless, there are various Outlook account errors. For these challenges, there could be several reasons. [pii_email_4bd3f6cbbb12ef19daea]
Avatar_small
liam 说:
2021年8月30日 13:16

Regarding the deposit system to bet on online slots games or gambling games, it is very important as ever. Because if you are going to bet on that gambling game Fete Foraine Jardin des Tuileries

Avatar_small
liam 说:
2021年8月30日 18:03

Miami SEO Agency | Professional SEO Expert in Miami, FL Miami SEO for local businesses in Miami to rank your business website on top search results of Google. Egochi Miami SEO Agency

Avatar_small
laim 说:
2021年8月31日 13:03

Great info! I recently came across your blog and have been reading along. I thought I would leave my first comment. I don’t know what to say except that I have  glo carts for sale

Avatar_small
arabian seafood 说:
2021年8月31日 14:54

Thank you for such a great post for these ideas.

<a href="https://arabianseafood.com.pk">arabian seafood</a>

Avatar_small
laim 说:
2021年8月31日 17:48

Thanks a lot for sharing us about this update. Hope you will not get tired on making posts as informative as this. PowerPoint Design

Avatar_small
laim 说:
2021年8月31日 18:27

Voice-call Click on "Call Me Now" to get a phone number so you can be informed of the code. www.amazon.com/mytv enter code

Avatar_small
laim 说:
2021年9月01日 14:22

I truly welcome this superb post that you have accommodated us. I guarantee this would be valuable for the vast majority of the general population. sildenafil red 100mg

Avatar_small
Mumbai Escorts 说:
2021年9月01日 14:27

Cross your limits with me…. My name is Anupreet Kaur and you can have a great time in bed with me by getting my services from Mumbai Escorts. I will become your perfect companion in bed that you can have some fun with. Mumbai Escorts Agency is what you need at the moment so hire me from.
Visit Us:- http://www.anupreetkaur.com

Avatar_small
sam 说:
2021年9月01日 15:57

KineMaster Pro Apk is a wonderful video editor for android mobile devices. Download Kinemaster Fully Unlocked Mod Apk and Make Your Video Professional. kinemaster pro

Avatar_small
laim 说:
2021年9月01日 16:19

A debt of gratitude is in order for an extremely intriguing online journal. What else may I get that sort of data written in such an ideal methodology? lookmovies

Avatar_small
laim 说:
2021年9月02日 12:32

I am come here first time, i find the perfect article. Thanks for sharing interesting and informative post. www.homeremodelinglafayettela.com

Avatar_small
laim 说:
2021年9月02日 13:15

Testosterone is the primary sex hormone and an anabolic steroid in males. In male humans, testosterone plays a key role in the development of male reproductive tissues such as testes and prostate, as well as promoting secondary sexual characteristics such as increased muscle and bone mass, and the growth of body hair. Testosterone for sale, testosterone steroid for sale https://phenmeds.org

Avatar_small
laim 说:
2021年9月02日 15:03

There is a live play Live streaming that is sent directly from the camp of casino operators from abroad. บาคาร่า

Avatar_small
laim 说:
2021年9月02日 17:56

You have done a great job. I will definitely dig it and personally recommend to my friends. I am confident they will be benefited from this site tattoo shop spokane

Avatar_small
robert 说:
2021年9月03日 18:30

Superbly written article, if only all bloggers offered the same content as you, the internet would be a far better place.. <a href="http://bakerygingham.com/these-are-some-questions-that-can-help-you-find-a-wordpress-developer-who-is-dedicated/">Wordpress Design Singapore</a>

Avatar_small
laim 说:
2021年9月03日 18:37

I was very impressed by this post, this site has always been pleasant news Thank you very much for such an interesting post, and I meet them more often then I visited this site. Blackout Window Cover

Avatar_small
buy aquarium heater 说:
2021年9月03日 18:46

I’ve been searching for some decent stuff on the subject and haven't had any luck up until this point, You just got a new biggest fan!..

Avatar_small
laim 说:
2021年9月03日 19:16

Much thanks for this extraordinary post. I read that Post and got it fine and instructive. Kindly share progressively like that. selling merchant accounts

Avatar_small
laim 说:
2021年9月06日 13:40

I'm impressed, I must say. Very rarely do I come across a blog thats both informative and entertaining, and let me tell you, you ve hit the nail on the head. Your blog is important.. writing a business plan

Avatar_small
laim 说:
2021年9月07日 12:49

Totally awesome posting! Loads of valuable data and motivation, both of which we all need!Relay welcome your work. how to sell pos systems

Avatar_small
laim 说:
2021年9月08日 14:50

I want you to thank for your time of this wonderful read!!! I definately enjoy every little bit of it and I have you bookmarked to check out new stuff of your blog a must read blog! Property maintenance services

Avatar_small
sam 说:
2021年9月09日 11:14

I am happy to find your distinguished way of writing the post. Now you make it easy for me to understand and implement the concept. Thank you for the post. chihuahua puppies for sale

Avatar_small
sam 说:
2021年9月09日 14:03

Most of the time I don’t make comments on websites, but I'd like to say that this article really forced me to do so. Really nice post! dime 1000mg cartridge

Avatar_small
sam 说:
2021年9月10日 19:33

Extremely intriguing online journal. A lot of web journals I see nowadays don't generally give anything that I'm keen on, however I'm most definitely inspired by this one. Recently felt that I would post and let you know. first data partner program

Avatar_small
sam 说:
2021年9月10日 21:09

definately enjoy every little bit of it and I have you bookmarked to check out new stuff of your blog a must read blog! prayer for my daughter and son in law

Avatar_small
sam 说:
2021年9月12日 03:35

Mmm.. good to be here in your article or post, whatever, I think I should also work hard for my own website like I see some good and updated working in your site. Lafayette LA Concrete Contractors

Avatar_small
laim 说:
2021年9月13日 13:18

I was surfing net and fortunately came across this site and found very interesting stuff here. Its really fun to read. I enjoyed a lot. Thanks for sharing this wonderful information. Universe Tarot Card

Avatar_small
sam 说:
2021年9月13日 13:18

I know your aptitude on this. I should say we ought to have an online discourse on this. Composing just remarks will close the talk straight away! What's more, will confine the advantages from this data.  small business it support Wisconsin

Avatar_small
laim 说:
2021年9月13日 17:45

That is why selling advertising campaigns marketing so that you could invaluable explore previous advertisment. Quite simply to jot down stronger set that fit this description. visit us

Avatar_small
laim 说:
2021年9月13日 18:54

Great post yet I was thinking about whether you could compose a litte more on this subject? I"d be exceptionally grateful in the event that you could expound a tad bit further. Value it! service online market platform

Avatar_small
sam 说:
2021年9月13日 19:28

Here You Can Read A List of All Bangladesh Newspapers, All Bangla Newspaper, BD News, Bangla News, Bangladeshi Newspapers List. Bangla Newspaper

Avatar_small
sam 说:
2021年9月14日 18:16

I truly welcome this superb post that you have accommodated us. I guarantee this would be valuable for the vast majority of the general population. movies streaming sites

Avatar_small
laim 说:
2021年9月14日 18:55

I can set up my new idea from this post. It gives in depth information. Thanks for this valuable information for all,.. stained concrete

Avatar_small
laim 说:
2021年9月14日 20:10 Thanks for sharing nice information with us. I like your post and all you share with us is up to date and quite informative, I would like to bookmark the page so I can come here again to read you, as you have done a wonderful job. concrete finishing
Avatar_small
sam 说:
2021年9月15日 01:27

Positive site, where did u come up with the information on this posting?I have read a few of the articles on your website now, and I really like your style. Thanks a million and please keep up the effective work. https://voyance-telephone-gaia.com

Avatar_small
sam 说:
2021年9月15日 02:42

A portable fish finder has other benefits too. They are light-weight and simple to use. Plus they let you use a fish finder in eventualities where you will not be able to employ a fixed one. Washing machine repair Kenya

Avatar_small
laim 说:
2021年9月15日 14:34

The article you have shared here great. I truly like and valued your work. I read profoundly your article, the focuses you have referenced in this article are helpful visit us

Avatar_small
sam 说:
2021年9月15日 15:26

Facebook advertising blog: make them profitable with best practices meilleures pratiques de publicité Facebook

Avatar_small
laim 说:
2021年9月15日 15:51

I think this is a better than average article. You make this data intriguing and locks in. You give perusers a considerable measure to consider and I welcome that sort of composing. merchant services residuals

Avatar_small
laim 说:
2021年9月15日 17:39

That emits an impression of being remarkable at any rate I am as yet not very without question that I like it. At any rate will look considerably more into it and pick before long! https://purehoarder.com

Avatar_small
laim 说:
2021年9月16日 13:29

Its an incredible joy perusing your post.Its brimming with data I am searching for and I want to post a remark that "The substance of your post is marvelous" Great work. rent a car beograd

Avatar_small
sam 说:
2021年9月16日 13:52

I have bookmarked your website because this site contains valuable information in it. I am really happy with articles quality and presentation. Thanks a lot for keeping great stuff. I am very much thankful for this site. Healthcare Motivational Speaker

Avatar_small
laim 说:
2021年9月16日 14:52

Whoi, excellent, t wondered just how to cure icne. ind found your webstte by google, dtscovered todiy t'm i ltttle obvtous i greit deil. t’ve ilso idded RSS ind sive your webstte. keep us updited. online marketing

Avatar_small
sam 说:
2021年9月16日 18:27

i read a considerable measure of stuff and i found that the method for composing to clearifing that precisely need to say was great so i am inspired and ilike to come back again in future.. 123movies

Avatar_small
laim 说:
2021年9月17日 19:00

You make so many great points here that I read your article a couple of times. Your views are in accordance with my own for the most part. This is great content for your readers. 메이저놀이터

Avatar_small
laim 说:
2021年9月18日 15:15

Our services are available in all cities of Minneapolis and its surroundings. We are having years of experience which enabled our customers and clients to trust our services. North American Bancard ISO

Avatar_small
laim 说:
2021年9月18日 15:58

So luck to come across your excellent blog. Your blog brings me a great deal of fun.. Good luck with the site. house and land packages

Avatar_small
laim 说:
2021年9月19日 15:12

I needed to thank you for this incredible read!! I unquestionably adored each and every piece of it. I have you bookmarked your site to look at the new stuff you post. best merchant services company

Avatar_small
laim 说:
2021年9月19日 15:45

This content is written very well. Your use of formatting when making your points makes your observations very clear and easy to understand. Thank you. starting a credit card processing company


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter